im-angular-validators
Version:
This library will help you with lots of already written mostly used validators for Angular 2+ applications.
33 lines • 6.62 kB
JavaScript
import { isNumber } from '../helpers/is-number.helper';
import { IMComparatorOperatorEnum } from '../enums/comparator-operator.enum';
export const IMNumberComparatorValidator = (config) => {
return (control) => {
if (config.comparingControlKey) {
const comparingValue = control?.parent?.get(config.comparingControlKey)?.value;
return getNumberComparatorValidationError(control.value, comparingValue, config.comparingOperator);
}
else {
return getNumberComparatorValidationError(control.value, config.comparingValue, config.comparingOperator);
}
};
};
const getNumberComparatorValidationError = (control_value, comparing_control_value, operator) => {
if (isNumber(control_value) && isNumber(comparing_control_value) &&
operatorCheckResolver[operator](control_value, comparing_control_value)) {
return {
numberComparatorError: {
isInvalid: true,
operator,
comparingValue: comparing_control_value
}
};
}
};
const operatorCheckResolver = {
[IMComparatorOperatorEnum.equal]: (value, comparing_value) => value !== comparing_value,
[IMComparatorOperatorEnum.greater]: (value, comparing_value) => value <= comparing_value,
[IMComparatorOperatorEnum.greaterEqual]: (value, comparing_value) => value < comparing_value,
[IMComparatorOperatorEnum.less]: (value, comparing_value) => value >= comparing_value,
[IMComparatorOperatorEnum.lessEqual]: (value, comparing_value) => value > comparing_value
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWNvbXBhcmF0b3IudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci12YWxpZGF0b3JzL3NyYy9saWIvdmFsaWRhdG9ycy9udW1iZXItY29tcGFyYXRvci52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBSTNFLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBa0QsRUFBZSxFQUFFO0lBQzdHLE9BQU8sQ0FBQyxPQUF3QixFQUFvQixFQUFFO1FBQ3BELElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFO1lBQzlCLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUMvRSxPQUFPLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3BHO2FBQU07WUFDTCxPQUFPLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUMzRztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sa0NBQWtDLEdBQ3RDLENBQUMsYUFBcUIsRUFBRSx1QkFBK0IsRUFBRSxRQUFrQyxFQUFvQixFQUFFO0lBQy9HLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztRQUM5RCxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLEVBQUUsdUJBQXVCLENBQUMsRUFBRTtRQUN2RSxPQUFPO1lBQ0wscUJBQXFCLEVBQUU7Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVE7Z0JBQ1IsY0FBYyxFQUFFLHVCQUF1QjthQUNKO1NBQ3RDLENBQUM7S0FDTDtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQWEsRUFBRSxlQUF1QixFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssZUFBZTtJQUN2RyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLGVBQXVCLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxlQUFlO0lBQ3hHLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFhLEVBQUUsZUFBdUIsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLGVBQWU7SUFDNUcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQWEsRUFBRSxlQUF1QixFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksZUFBZTtJQUNyRyxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBYSxFQUFFLGVBQXVCLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxlQUFlO0NBQzFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtpc051bWJlcn0gZnJvbSAnLi4vaGVscGVycy9pcy1udW1iZXIuaGVscGVyJztcclxuaW1wb3J0IHtJTUNvbXBhcmF0b3JPcGVyYXRvckVudW19IGZyb20gJy4uL2VudW1zL2NvbXBhcmF0b3Itb3BlcmF0b3IuZW51bSc7XHJcbmltcG9ydCB7SU1OdW1iZXJDb21wYXJhdG9yVmFsaWRhdG9yQ29uZmlnSW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzL251bWJlci1jb21wYXJhdG9yLWNvbmZpZ3VyYXRpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHtJTU51bWJlckNvbXBhcmF0b3JFcnJvckludGVyZmFjZX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9udW1iZXItY29tcGFyYXRvci1lcnJvci5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IElNTnVtYmVyQ29tcGFyYXRvclZhbGlkYXRvciA9IChjb25maWc6IElNTnVtYmVyQ29tcGFyYXRvclZhbGlkYXRvckNvbmZpZ0ludGVyZmFjZSk6IFZhbGlkYXRvckZuID0+IHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgPT4ge1xyXG4gICAgaWYgKGNvbmZpZy5jb21wYXJpbmdDb250cm9sS2V5KSB7XHJcbiAgICAgIGNvbnN0IGNvbXBhcmluZ1ZhbHVlID0gY29udHJvbD8ucGFyZW50Py5nZXQoY29uZmlnLmNvbXBhcmluZ0NvbnRyb2xLZXkpPy52YWx1ZTtcclxuICAgICAgcmV0dXJuIGdldE51bWJlckNvbXBhcmF0b3JWYWxpZGF0aW9uRXJyb3IoY29udHJvbC52YWx1ZSwgY29tcGFyaW5nVmFsdWUsIGNvbmZpZy5jb21wYXJpbmdPcGVyYXRvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZ2V0TnVtYmVyQ29tcGFyYXRvclZhbGlkYXRpb25FcnJvcihjb250cm9sLnZhbHVlLCBjb25maWcuY29tcGFyaW5nVmFsdWUsIGNvbmZpZy5jb21wYXJpbmdPcGVyYXRvcik7XHJcbiAgICB9XHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IGdldE51bWJlckNvbXBhcmF0b3JWYWxpZGF0aW9uRXJyb3IgPVxyXG4gIChjb250cm9sX3ZhbHVlOiBudW1iZXIsIGNvbXBhcmluZ19jb250cm9sX3ZhbHVlOiBudW1iZXIsIG9wZXJhdG9yOiBJTUNvbXBhcmF0b3JPcGVyYXRvckVudW0pOiBWYWxpZGF0aW9uRXJyb3JzID0+IHtcclxuICAgIGlmIChpc051bWJlcihjb250cm9sX3ZhbHVlKSAmJiBpc051bWJlcihjb21wYXJpbmdfY29udHJvbF92YWx1ZSkgJiZcclxuICAgICAgb3BlcmF0b3JDaGVja1Jlc29sdmVyW29wZXJhdG9yXShjb250cm9sX3ZhbHVlLCBjb21wYXJpbmdfY29udHJvbF92YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbnVtYmVyQ29tcGFyYXRvckVycm9yOiB7XHJcbiAgICAgICAgICAgIGlzSW52YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgb3BlcmF0b3IsXHJcbiAgICAgICAgICAgIGNvbXBhcmluZ1ZhbHVlOiBjb21wYXJpbmdfY29udHJvbF92YWx1ZVxyXG4gICAgICAgICAgfSBhcyBJTU51bWJlckNvbXBhcmF0b3JFcnJvckludGVyZmFjZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcblxyXG5jb25zdCBvcGVyYXRvckNoZWNrUmVzb2x2ZXIgPSB7XHJcbiAgW0lNQ29tcGFyYXRvck9wZXJhdG9yRW51bS5lcXVhbF06ICh2YWx1ZTogbnVtYmVyLCBjb21wYXJpbmdfdmFsdWU6IG51bWJlcikgPT4gdmFsdWUgIT09IGNvbXBhcmluZ192YWx1ZSxcclxuICBbSU1Db21wYXJhdG9yT3BlcmF0b3JFbnVtLmdyZWF0ZXJdOiAodmFsdWU6IG51bWJlciwgY29tcGFyaW5nX3ZhbHVlOiBudW1iZXIpID0+IHZhbHVlIDw9IGNvbXBhcmluZ192YWx1ZSxcclxuICBbSU1Db21wYXJhdG9yT3BlcmF0b3JFbnVtLmdyZWF0ZXJFcXVhbF06ICh2YWx1ZTogbnVtYmVyLCBjb21wYXJpbmdfdmFsdWU6IG51bWJlcikgPT4gdmFsdWUgPCBjb21wYXJpbmdfdmFsdWUsXHJcbiAgW0lNQ29tcGFyYXRvck9wZXJhdG9yRW51bS5sZXNzXTogKHZhbHVlOiBudW1iZXIsIGNvbXBhcmluZ192YWx1ZTogbnVtYmVyKSA9PiB2YWx1ZSA+PSBjb21wYXJpbmdfdmFsdWUsXHJcbiAgW0lNQ29tcGFyYXRvck9wZXJhdG9yRW51bS5sZXNzRXF1YWxdOiAodmFsdWU6IG51bWJlciwgY29tcGFyaW5nX3ZhbHVlOiBudW1iZXIpID0+IHZhbHVlID4gY29tcGFyaW5nX3ZhbHVlXHJcbn07XHJcbiJdfQ==