Skip to content

Commit

Permalink
Merge pull request #392 from romanblanco/bz1692863
Browse files Browse the repository at this point in the history
Mark datepicker field as valid only if it's value is an instance of Date
  • Loading branch information
himdel authored Jul 2, 2019
2 parents 8d67e39 + 20a84fe commit ffdd33d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 8 deletions.
7 changes: 4 additions & 3 deletions src/dialog-user/services/dialogData.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -379,11 +379,12 @@ describe('DialogDataService test', () => {
});

describe('when the data type is a date control', () => {
let dateField = {'type': 'DialogFieldDateControl'};
let dateField = {'type': 'DialogFieldDateControl',
'dateField': ''};

describe('when the values are undefined', () => {
beforeEach(() => {
dateField['values'] = undefined;
dateField.dateField = undefined;
});

it('returns a new date', () => {
Expand All @@ -399,7 +400,7 @@ describe('DialogDataService test', () => {

describe('when the values exist', () => {
beforeEach(() => {
dateField['values'] = '2017-09-18';
dateField.dateField = '2017-09-18';
});

it('returns a new date based on the values', () => {
Expand Down
26 changes: 21 additions & 5 deletions src/dialog-user/services/dialogData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ export default class DialogDataService {
}
}

if (field.type === 'DialogFieldDateControl') {
if (_.isNull(field.default_value) || _.isUndefined(field.default_value)) {
field.dateField = new Date();
} else {
field.dateField = new Date(data.default_value);
}
}

field.default_value = this.setDefaultValue(field);

return field;
Expand Down Expand Up @@ -95,14 +103,14 @@ export default class DialogDataService {
defaultValue = data.values[firstOption][fieldValue];
}

if (data.type === 'DialogFieldDateControl' || data.type === 'DialogFieldDateTimeControl') {
defaultValue = data.values ? new Date(data.values) : new Date();
}

if (data.default_value) {
defaultValue = data.default_value;
}

if (data.type === 'DialogFieldDateControl' || data.type === 'DialogFieldDateTimeControl') {
defaultValue = data.dateField ? new Date(data.dateField) : new Date();
}

if (data.type === 'DialogFieldDropDownList' && data.options.force_multi_value && data.default_value) {
defaultValue = JSON.parse(data.default_value);
}
Expand Down Expand Up @@ -137,6 +145,9 @@ export default class DialogDataService {
};
validation.field = field.label;

let dateControlField = (field.type === 'DialogFieldDateControl');
let validDateField = (dateControlField && _.isDate(field.dateField));

if (field.required) {
if (field.type === 'DialogFieldCheckBox' && fieldValue === 'f') {
validation.isValid = false;
Expand All @@ -146,7 +157,7 @@ export default class DialogDataService {
validation.isValid = false;
validation.message = __('This field is required');
}
} else if (_.isEmpty(fieldValue)) {
} else if (_.isEmpty(fieldValue) && !validDateField) {
validation.isValid = false;
validation.message = __('This field is required');
}
Expand All @@ -164,6 +175,11 @@ export default class DialogDataService {
}
}

if (dateControlField && !validDateField) {
validation.isValid = false;
validation.message = __('Select a valid date');
}

if (field.type === 'DialogFieldDateTimeControl') {
if (field.dateField === undefined) {
validation.isValid = false;
Expand Down

0 comments on commit ffdd33d

Please sign in to comment.