im-angular-validators
Version:
This library will help you with lots of already written mostly used validators for Angular 2+ applications.
46 lines • 8.06 kB
JavaScript
import { IMComparatorOperatorEnum } from '../enums/comparator-operator.enum';
import * as moment from 'moment';
export const IMTimeComparatorValidator = (config) => {
return (control) => {
if (config.comparingControlKey) {
const comparingValue = control?.parent?.get(config.comparingControlKey)?.value;
return getTimeComparatorValidationError(control.value, comparingValue, config.comparingOperator);
}
else {
return getTimeComparatorValidationError(control.value, config.comparingValue, config.comparingOperator);
}
};
};
const getTimeComparatorValidationError = (control_value, comparing_control_value, operator) => {
if (control_value && comparing_control_value) {
const timeFormatControlValue = moment(control_value, 'HH:mm');
const timeFormatComparingControlValue = moment(comparing_control_value, 'HH:mm');
if (operatorCheckResolver[operator](timeFormatControlValue, timeFormatComparingControlValue)) {
return {
timeComparatorError: {
isInvalid: true,
operator,
comparingValue: comparing_control_value
}
};
}
}
};
const operatorCheckResolver = {
[IMComparatorOperatorEnum.equal]: (value, comparing_value) => {
return !value.isSame(comparing_value);
},
[IMComparatorOperatorEnum.greater]: (value, comparing_value) => {
return !value.isAfter(comparing_value);
},
[IMComparatorOperatorEnum.greaterEqual]: (value, comparing_value) => {
return !value.isSame(comparing_value) && !value.isAfter(comparing_value);
},
[IMComparatorOperatorEnum.less]: (value, comparing_value) => {
return !value.isBefore(comparing_value);
},
[IMComparatorOperatorEnum.lessEqual]: (value, comparing_value) => {
return !value.isSame(comparing_value) && !value.isBefore(comparing_value);
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1jb21wYXJhdG9yLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdmFsaWRhdG9ycy9zcmMvbGliL3ZhbGlkYXRvcnMvdGltZS1jb21wYXJhdG9yLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUczRSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE1BQWdELEVBQWUsRUFBRTtJQUN6RyxPQUFPLENBQUMsT0FBd0IsRUFBb0IsRUFBRTtRQUNwRCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtZQUM5QixNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDL0UsT0FBTyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNsRzthQUFNO1lBQ0wsT0FBTyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDekc7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGdDQUFnQyxHQUNwQyxDQUFDLGFBQXFCLEVBQUUsdUJBQStCLEVBQUUsUUFBa0MsRUFBb0IsRUFBRTtJQUMvRyxJQUFJLGFBQWEsSUFBSSx1QkFBdUIsRUFBRTtRQUM1QyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsTUFBTSwrQkFBK0IsR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakYsSUFBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSwrQkFBK0IsQ0FBQyxFQUFFO1lBQzVGLE9BQU87Z0JBQ0wsbUJBQW1CLEVBQUU7b0JBQ25CLFNBQVMsRUFBRSxJQUFJO29CQUNmLFFBQVE7b0JBQ1IsY0FBYyxFQUFFLHVCQUF1QjtpQkFDTjthQUNwQyxDQUFDO1NBQ0g7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVKLE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQWEsRUFBRSxlQUF1QixFQUFFLEVBQUU7UUFDM0UsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFhLEVBQUUsZUFBdUIsRUFBRSxFQUFFO1FBQzdFLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLGVBQXVCLEVBQUUsRUFBRTtRQUNsRixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFhLEVBQUUsZUFBdUIsRUFBRSxFQUFFO1FBQzFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLGVBQXVCLEVBQUUsRUFBRTtRQUMvRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtJTUNvbXBhcmF0b3JPcGVyYXRvckVudW19IGZyb20gJy4uL2VudW1zL2NvbXBhcmF0b3Itb3BlcmF0b3IuZW51bSc7XHJcbmltcG9ydCB7SU1UaW1lQ29tcGFyYXRvclZhbGlkYXRvckNvbmZpZ0ludGVyZmFjZX0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aW1lLWNvbXBhcmF0b3ItY29uZmlndXJhdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7SU1UaW1lQ29tcGFyYXRvckVycm9ySW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RpbWUtY29tcGFyYXRvci1lcnJvci5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IElNVGltZUNvbXBhcmF0b3JWYWxpZGF0b3IgPSAoY29uZmlnOiBJTVRpbWVDb21wYXJhdG9yVmFsaWRhdG9yQ29uZmlnSW50ZXJmYWNlKTogVmFsaWRhdG9yRm4gPT4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PiB7XHJcbiAgICBpZiAoY29uZmlnLmNvbXBhcmluZ0NvbnRyb2xLZXkpIHtcclxuICAgICAgY29uc3QgY29tcGFyaW5nVmFsdWUgPSBjb250cm9sPy5wYXJlbnQ/LmdldChjb25maWcuY29tcGFyaW5nQ29udHJvbEtleSk/LnZhbHVlO1xyXG4gICAgICByZXR1cm4gZ2V0VGltZUNvbXBhcmF0b3JWYWxpZGF0aW9uRXJyb3IoY29udHJvbC52YWx1ZSwgY29tcGFyaW5nVmFsdWUsIGNvbmZpZy5jb21wYXJpbmdPcGVyYXRvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZ2V0VGltZUNvbXBhcmF0b3JWYWxpZGF0aW9uRXJyb3IoY29udHJvbC52YWx1ZSwgY29uZmlnLmNvbXBhcmluZ1ZhbHVlLCBjb25maWcuY29tcGFyaW5nT3BlcmF0b3IpO1xyXG4gICAgfVxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBnZXRUaW1lQ29tcGFyYXRvclZhbGlkYXRpb25FcnJvciA9XHJcbiAgKGNvbnRyb2xfdmFsdWU6IHN0cmluZywgY29tcGFyaW5nX2NvbnRyb2xfdmFsdWU6IHN0cmluZywgb3BlcmF0b3I6IElNQ29tcGFyYXRvck9wZXJhdG9yRW51bSk6IFZhbGlkYXRpb25FcnJvcnMgPT4ge1xyXG4gICAgaWYgKGNvbnRyb2xfdmFsdWUgJiYgY29tcGFyaW5nX2NvbnRyb2xfdmFsdWUpIHtcclxuICAgICAgY29uc3QgdGltZUZvcm1hdENvbnRyb2xWYWx1ZSA9IG1vbWVudChjb250cm9sX3ZhbHVlLCAnSEg6bW0nKTtcclxuICAgICAgY29uc3QgdGltZUZvcm1hdENvbXBhcmluZ0NvbnRyb2xWYWx1ZSA9IG1vbWVudChjb21wYXJpbmdfY29udHJvbF92YWx1ZSwgJ0hIOm1tJyk7XHJcblxyXG4gICAgICBpZiAob3BlcmF0b3JDaGVja1Jlc29sdmVyW29wZXJhdG9yXSh0aW1lRm9ybWF0Q29udHJvbFZhbHVlLCB0aW1lRm9ybWF0Q29tcGFyaW5nQ29udHJvbFZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB0aW1lQ29tcGFyYXRvckVycm9yOiB7XHJcbiAgICAgICAgICAgIGlzSW52YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgb3BlcmF0b3IsXHJcbiAgICAgICAgICAgIGNvbXBhcmluZ1ZhbHVlOiBjb21wYXJpbmdfY29udHJvbF92YWx1ZVxyXG4gICAgICAgICAgfSBhcyBJTVRpbWVDb21wYXJhdG9yRXJyb3JJbnRlcmZhY2VcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbmNvbnN0IG9wZXJhdG9yQ2hlY2tSZXNvbHZlciA9IHtcclxuICBbSU1Db21wYXJhdG9yT3BlcmF0b3JFbnVtLmVxdWFsXTogKHZhbHVlOiBNb21lbnQsIGNvbXBhcmluZ192YWx1ZTogTW9tZW50KSA9PiB7XHJcbiAgICByZXR1cm4gIXZhbHVlLmlzU2FtZShjb21wYXJpbmdfdmFsdWUpO1xyXG4gIH0sXHJcbiAgW0lNQ29tcGFyYXRvck9wZXJhdG9yRW51bS5ncmVhdGVyXTogKHZhbHVlOiBNb21lbnQsIGNvbXBhcmluZ192YWx1ZTogTW9tZW50KSA9PiB7XHJcbiAgICByZXR1cm4gIXZhbHVlLmlzQWZ0ZXIoY29tcGFyaW5nX3ZhbHVlKTtcclxuICB9LFxyXG4gIFtJTUNvbXBhcmF0b3JPcGVyYXRvckVudW0uZ3JlYXRlckVxdWFsXTogKHZhbHVlOiBNb21lbnQsIGNvbXBhcmluZ192YWx1ZTogTW9tZW50KSA9PiB7XHJcbiAgICByZXR1cm4gIXZhbHVlLmlzU2FtZShjb21wYXJpbmdfdmFsdWUpICYmICF2YWx1ZS5pc0FmdGVyKGNvbXBhcmluZ192YWx1ZSk7XHJcbiAgfSxcclxuICBbSU1Db21wYXJhdG9yT3BlcmF0b3JFbnVtLmxlc3NdOiAodmFsdWU6IE1vbWVudCwgY29tcGFyaW5nX3ZhbHVlOiBNb21lbnQpID0+IHtcclxuICAgIHJldHVybiAhdmFsdWUuaXNCZWZvcmUoY29tcGFyaW5nX3ZhbHVlKTtcclxuICB9LFxyXG4gIFtJTUNvbXBhcmF0b3JPcGVyYXRvckVudW0ubGVzc0VxdWFsXTogKHZhbHVlOiBNb21lbnQsIGNvbXBhcmluZ192YWx1ZTogTW9tZW50KSA9PiB7XHJcbiAgICByZXR1cm4gIXZhbHVlLmlzU2FtZShjb21wYXJpbmdfdmFsdWUpICYmICF2YWx1ZS5pc0JlZm9yZShjb21wYXJpbmdfdmFsdWUpO1xyXG4gIH1cclxufTtcclxuIl19