UNPKG

ngx-custom-validators-angular-14

Version:
45 lines 5.9 kB
import { UntypedFormControl, NgModel, Validators } from '@angular/forms'; import { isDate, isPresent, parseDate } from '../util/lang'; export const minDate = (minInput) => { let value; let subscribe = false; let minValue = minInput; const isForm = minInput instanceof UntypedFormControl || minInput instanceof NgModel; return (control) => { if (!subscribe && isForm) { subscribe = true; minInput.valueChanges.subscribe(() => { control.updateValueAndValidity(); }); } if (isForm) { minValue = minInput.value; } value = parseDate(minValue); if (!isDate(value) && !(value instanceof Function)) { if (value == null) { return null; } else if (isForm) { return { minDate: { error: 'minDate is invalid' } }; } else { throw Error('minDate value must be or return a formatted date'); } } if (isPresent(Validators.required(control))) { return null; } const d = new Date(parseDate(control.value)).getTime(); if (!isDate(d)) { return { value: true }; } if (value instanceof Function) { value = value(); } return d >= new Date(value).getTime() ? null : (isForm ? { minDate: { control: minInput, value: minInput.value } } : { minDate: { value: minValue, control: undefined } }); }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9taW4tZGF0ZS92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxPQUFPLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pILE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1RCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFhLEVBQWUsRUFBRTtJQUNwRCxJQUFJLEtBQUssQ0FBQztJQUNWLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN0QixJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDeEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxZQUFZLGtCQUFrQixJQUFJLFFBQVEsWUFBWSxPQUFPLENBQUM7SUFDckYsT0FBTyxDQUFDLE9BQXdCLEVBQW9CLEVBQUU7UUFFcEQsSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLEVBQUU7WUFDeEIsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNqQixRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLE1BQU0sRUFBRTtZQUNWLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQzNCO1FBRUQsS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksUUFBUSxDQUFDLEVBQUU7WUFDbEQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNLElBQUksTUFBTSxFQUFFO2dCQUNqQixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsQ0FBQzthQUNyRDtpQkFBTTtnQkFDTCxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2FBQ2pFO1NBQ0Y7UUFFRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7WUFDM0MsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN4QjtRQUNELElBQUksS0FBSyxZQUFZLFFBQVEsRUFBRTtZQUM3QixLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUM7U0FDakI7UUFFRCxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDbkMsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xJLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sLCBOZ01vZGVsLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzRGF0ZSwgaXNQcmVzZW50LCBwYXJzZURhdGUgfSBmcm9tICcuLi91dGlsL2xhbmcnO1xuXG5leHBvcnQgY29uc3QgbWluRGF0ZSA9IChtaW5JbnB1dDogYW55KTogVmFsaWRhdG9yRm4gPT4ge1xuICBsZXQgdmFsdWU7XG4gIGxldCBzdWJzY3JpYmUgPSBmYWxzZTtcbiAgbGV0IG1pblZhbHVlID0gbWluSW5wdXQ7XG4gIGNvbnN0IGlzRm9ybSA9IG1pbklucHV0IGluc3RhbmNlb2YgVW50eXBlZEZvcm1Db250cm9sIHx8IG1pbklucHV0IGluc3RhbmNlb2YgTmdNb2RlbDtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzID0+IHtcblxuICAgIGlmICghc3Vic2NyaWJlICYmIGlzRm9ybSkge1xuICAgICAgc3Vic2NyaWJlID0gdHJ1ZTtcbiAgICAgIG1pbklucHV0LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0Zvcm0pIHtcbiAgICAgIG1pblZhbHVlID0gbWluSW5wdXQudmFsdWU7XG4gICAgfVxuXG4gICAgdmFsdWUgPSBwYXJzZURhdGUobWluVmFsdWUpO1xuXG4gICAgaWYgKCFpc0RhdGUodmFsdWUpICYmICEodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIGlmIChpc0Zvcm0pIHtcbiAgICAgICAgcmV0dXJuIHsgbWluRGF0ZTogeyBlcnJvcjogJ21pbkRhdGUgaXMgaW52YWxpZCcgfSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ21pbkRhdGUgdmFsdWUgbXVzdCBiZSBvciByZXR1cm4gYSBmb3JtYXR0ZWQgZGF0ZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc1ByZXNlbnQoVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShwYXJzZURhdGUoY29udHJvbC52YWx1ZSkpLmdldFRpbWUoKTtcblxuICAgIGlmICghaXNEYXRlKGQpKSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdHJ1ZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgdmFsdWUgPSB2YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBkID49IG5ldyBEYXRlKHZhbHVlKS5nZXRUaW1lKClcbiAgICAgID8gbnVsbFxuICAgICAgOiAoaXNGb3JtID8geyBtaW5EYXRlOiB7IGNvbnRyb2w6IG1pbklucHV0LCB2YWx1ZTogbWluSW5wdXQudmFsdWUgfSB9IDogeyBtaW5EYXRlOiB7IHZhbHVlOiBtaW5WYWx1ZSwgY29udHJvbDogdW5kZWZpbmVkIH0gfSk7XG4gIH07XG59O1xuIl19