mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
fix disable complete button on invalid datetime (#7134)
This commit is contained in:
@@ -30,7 +30,8 @@ import {
|
||||
MaxDateTimeFieldValidator,
|
||||
MinDateTimeFieldValidator,
|
||||
MaxDateFieldValidator,
|
||||
MinDateFieldValidator
|
||||
MinDateFieldValidator,
|
||||
DateTimeFieldValidator
|
||||
} from './form-field-validator';
|
||||
import { FormFieldModel } from './form-field.model';
|
||||
import { FormModel } from './form.model';
|
||||
@@ -1047,4 +1048,31 @@ describe('FormFieldValidator', () => {
|
||||
expect(field.validationSummary).not.toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('DateTimeFieldValidator', () => {
|
||||
|
||||
let validator: DateTimeFieldValidator;
|
||||
|
||||
beforeEach(() => {
|
||||
validator = new DateTimeFieldValidator();
|
||||
});
|
||||
|
||||
it('should validate dateTime format with dateDisplayFormat', () => {
|
||||
const field = new FormFieldModel(new FormModel(), {
|
||||
type: FormFieldTypes.DATETIME,
|
||||
value: '2021-06-09 14:10',
|
||||
dateDisplayFormay: 'YYYY-MM-DD HH:mm'
|
||||
});
|
||||
|
||||
expect(validator.validate(field)).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should validate dateTime format with default format', () => {
|
||||
const field = new FormFieldModel(new FormModel(), {
|
||||
type: FormFieldTypes.DATETIME,
|
||||
value: '2021-06-09 14:10',
|
||||
});
|
||||
expect(validator.validate(field)).toBeTruthy();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@@ -165,6 +165,38 @@ export class DateFieldValidator implements FormFieldValidator {
|
||||
}
|
||||
}
|
||||
|
||||
export class DateTimeFieldValidator implements FormFieldValidator {
|
||||
|
||||
private supportedTypes = [
|
||||
FormFieldTypes.DATETIME
|
||||
];
|
||||
|
||||
// Validates that the input string is a valid date formatted as <dateFormat> (default D-M-YYYY)
|
||||
static isValidDate(inputDate: string, dateFormat: string = 'YYYY-MM-DD HH:mm'): boolean {
|
||||
if (inputDate) {
|
||||
const d = moment(inputDate, dateFormat, true);
|
||||
return d.isValid();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
isSupported(field: FormFieldModel): boolean {
|
||||
return field && this.supportedTypes.indexOf(field.type) > -1;
|
||||
}
|
||||
|
||||
validate(field: FormFieldModel): boolean {
|
||||
if (this.isSupported(field) && field.value && field.isVisible) {
|
||||
if (DateFieldValidator.isValidDate(field.value, field.dateDisplayFormat)) {
|
||||
return true;
|
||||
}
|
||||
field.validationSummary.message = field.dateDisplayFormat;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export abstract class BoundaryDateFieldValidator implements FormFieldValidator {
|
||||
|
||||
DATE_FORMAT_CLOUD = 'YYYY-MM-DD';
|
||||
@@ -539,6 +571,7 @@ export const FORM_FIELD_VALIDATORS = [
|
||||
new MaxValueFieldValidator(),
|
||||
new RegExFieldValidator(),
|
||||
new DateFieldValidator(),
|
||||
new DateTimeFieldValidator(),
|
||||
new MinDateFieldValidator(),
|
||||
new MaxDateFieldValidator(),
|
||||
new FixedValueFieldValidator(),
|
||||
|
Reference in New Issue
Block a user