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,
|
MaxDateTimeFieldValidator,
|
||||||
MinDateTimeFieldValidator,
|
MinDateTimeFieldValidator,
|
||||||
MaxDateFieldValidator,
|
MaxDateFieldValidator,
|
||||||
MinDateFieldValidator
|
MinDateFieldValidator,
|
||||||
|
DateTimeFieldValidator
|
||||||
} from './form-field-validator';
|
} from './form-field-validator';
|
||||||
import { FormFieldModel } from './form-field.model';
|
import { FormFieldModel } from './form-field.model';
|
||||||
import { FormModel } from './form.model';
|
import { FormModel } from './form.model';
|
||||||
@@ -1047,4 +1048,31 @@ describe('FormFieldValidator', () => {
|
|||||||
expect(field.validationSummary).not.toBeNull();
|
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 {
|
export abstract class BoundaryDateFieldValidator implements FormFieldValidator {
|
||||||
|
|
||||||
DATE_FORMAT_CLOUD = 'YYYY-MM-DD';
|
DATE_FORMAT_CLOUD = 'YYYY-MM-DD';
|
||||||
@@ -539,6 +571,7 @@ export const FORM_FIELD_VALIDATORS = [
|
|||||||
new MaxValueFieldValidator(),
|
new MaxValueFieldValidator(),
|
||||||
new RegExFieldValidator(),
|
new RegExFieldValidator(),
|
||||||
new DateFieldValidator(),
|
new DateFieldValidator(),
|
||||||
|
new DateTimeFieldValidator(),
|
||||||
new MinDateFieldValidator(),
|
new MinDateFieldValidator(),
|
||||||
new MaxDateFieldValidator(),
|
new MaxDateFieldValidator(),
|
||||||
new FixedValueFieldValidator(),
|
new FixedValueFieldValidator(),
|
||||||
|
Reference in New Issue
Block a user