UNPKG

ng-fveh

Version:

NG-FVEH - Some helpers to help you with form validation :)

94 lines (93 loc) 7.38 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; /** * @record */ function FormControls() { } function FormControls_tsickle_Closure_declarations() { /* TODO: handle strange member: [key: string]: FormControl; */ } /** * @param {?} errors * @param {?} control * @return {?} */ function setErrors(errors, control) { if (Object.keys(errors).length) { control.setErrors(errors); } else { control.setErrors(null); } } /** * @param {?} error * @param {?} controls * @return {?} */ function setErrorOnFields(error, controls) { Object.keys(controls).forEach(function (controlName) { var /** @type {?} */ errors = Object.assign({}, controls[controlName].errors, error); setErrors(errors, controls[controlName]); }); } /** * @param {?} fieldErrorName * @param {?} controls * @return {?} */ function clearErrorOnFields(fieldErrorName, controls) { Object.keys(controls).forEach(function (controlName) { var /** @type {?} */ errors = controls[controlName].errors; if (errors) { delete errors[fieldErrorName]; setErrors(errors, controls[controlName]); } }); } /** * @param {?} friendlyFieldNames * @return {?} */ function createGroupMatchError(friendlyFieldNames) { return { fvehGroupMatch: { fields: friendlyFieldNames, }, }; } /** * @param {?} controlValues * @return {?} */ function validateIfValuesMatch(controlValues) { var _a = tslib_1.__read(Object.keys(controlValues)), firstField = _a[0], otherFields = _a.slice(1); var /** @type {?} */ isValid = otherFields.every(function (currentValue) { return controlValues[firstField] === controlValues[currentValue]; }); return isValid; } /** * @param {?} friendlyFieldNames * @return {?} */ export function groupMatch(friendlyFieldNames) { return function (_a) { var value = _a.value, touched = _a.touched, pristine = _a.pristine, controls = _a.controls; var /** @type {?} */ error = createGroupMatchError(friendlyFieldNames); var /** @type {?} */ isGroupMatching = validateIfValuesMatch(value); if (pristine) { return null; } if (touched && isGroupMatching) { clearErrorOnFields('fvehGroupMatch', controls); return null; } setErrorOnFields(error, controls); return error; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWF0Y2gudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZnZlaC8iLCJzb3VyY2VzIjpbImxpYi92YWxpZGF0b3JzL2dyb3VwLW1hdGNoLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsbUJBQW1CLE1BQVcsRUFBRSxPQUFvQjtJQUNsRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0I7U0FBTTtRQUNMLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7Q0FDRjs7Ozs7O0FBRUQsMEJBQTBCLEtBQWdCLEVBQUUsUUFBc0I7SUFDaEUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxXQUFXO1FBQ3ZDLHFCQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDMUMsQ0FBQyxDQUFDO0NBQ0o7Ozs7OztBQUVELDRCQUE0QixjQUFzQixFQUFFLFFBQXNCO0lBQ3hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsV0FBVztRQUN2QyxxQkFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM1QyxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDMUM7S0FDRixDQUFDLENBQUM7Q0FDSjs7Ozs7QUFFRCwrQkFBK0Isa0JBQTRCO0lBQ3pELE9BQU87UUFDTCxjQUFjLEVBQUU7WUFDZCxNQUFNLEVBQUUsa0JBQWtCO1NBQzNCO0tBQ0YsQ0FBQztDQUNIOzs7OztBQUVELCtCQUErQixhQUFrQjtJQUMvQyxxREFBTyxrQkFBVSxFQUFFLHlCQUFjLENBQStCO0lBQ2hFLHFCQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUMvQixVQUFBLFlBQVksSUFBSSxPQUFBLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQXpELENBQXlELENBQzFFLENBQUM7SUFFRixPQUFPLE9BQU8sQ0FBQztDQUNoQjs7Ozs7QUFFRCxNQUFNLHFCQUFxQixrQkFBNEI7SUFDckQsT0FBTyxVQUFDLEVBQXNDO1lBQXBDLGdCQUFLLEVBQUUsb0JBQU8sRUFBRSxzQkFBUSxFQUFFLHNCQUFRO1FBQzFDLHFCQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELHFCQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRCxJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLE9BQU8sSUFBSSxlQUFlLEVBQUU7WUFDOUIsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQztLQUNkLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW50ZXJmYWNlIEZvcm1Db250cm9scyB7XHJcbiAgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2w7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEVycm9ycyhlcnJvcnM6IGFueSwgY29udHJvbDogRm9ybUNvbnRyb2wpIHtcclxuICBpZiAoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGgpIHtcclxuICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2V0RXJyb3JPbkZpZWxkcyhlcnJvcjoge30gfCBudWxsLCBjb250cm9sczogRm9ybUNvbnRyb2xzKSB7XHJcbiAgT2JqZWN0LmtleXMoY29udHJvbHMpLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xyXG4gICAgY29uc3QgZXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgY29udHJvbHNbY29udHJvbE5hbWVdLmVycm9ycywgZXJyb3IpO1xyXG4gICAgc2V0RXJyb3JzKGVycm9ycywgY29udHJvbHNbY29udHJvbE5hbWVdKTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2xlYXJFcnJvck9uRmllbGRzKGZpZWxkRXJyb3JOYW1lOiBzdHJpbmcsIGNvbnRyb2xzOiBGb3JtQ29udHJvbHMpIHtcclxuICBPYmplY3Qua2V5cyhjb250cm9scykuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XHJcbiAgICBjb25zdCBlcnJvcnMgPSBjb250cm9sc1tjb250cm9sTmFtZV0uZXJyb3JzO1xyXG4gICAgaWYgKGVycm9ycykge1xyXG4gICAgICBkZWxldGUgZXJyb3JzW2ZpZWxkRXJyb3JOYW1lXTtcclxuICAgICAgc2V0RXJyb3JzKGVycm9ycywgY29udHJvbHNbY29udHJvbE5hbWVdKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlR3JvdXBNYXRjaEVycm9yKGZyaWVuZGx5RmllbGROYW1lczogc3RyaW5nW10pIHtcclxuICByZXR1cm4ge1xyXG4gICAgZnZlaEdyb3VwTWF0Y2g6IHtcclxuICAgICAgZmllbGRzOiBmcmllbmRseUZpZWxkTmFtZXMsXHJcbiAgICB9LFxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHZhbGlkYXRlSWZWYWx1ZXNNYXRjaChjb250cm9sVmFsdWVzOiBhbnkpIHtcclxuICBjb25zdCBbZmlyc3RGaWVsZCwgLi4ub3RoZXJGaWVsZHNdID0gT2JqZWN0LmtleXMoY29udHJvbFZhbHVlcyk7XHJcbiAgY29uc3QgaXNWYWxpZCA9IG90aGVyRmllbGRzLmV2ZXJ5KFxyXG4gICAgY3VycmVudFZhbHVlID0+IGNvbnRyb2xWYWx1ZXNbZmlyc3RGaWVsZF0gPT09IGNvbnRyb2xWYWx1ZXNbY3VycmVudFZhbHVlXSxcclxuICApO1xyXG5cclxuICByZXR1cm4gaXNWYWxpZDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwTWF0Y2goZnJpZW5kbHlGaWVsZE5hbWVzOiBzdHJpbmdbXSkge1xyXG4gIHJldHVybiAoeyB2YWx1ZSwgdG91Y2hlZCwgcHJpc3RpbmUsIGNvbnRyb2xzIH0pID0+IHtcclxuICAgIGNvbnN0IGVycm9yID0gY3JlYXRlR3JvdXBNYXRjaEVycm9yKGZyaWVuZGx5RmllbGROYW1lcyk7XHJcbiAgICBjb25zdCBpc0dyb3VwTWF0Y2hpbmcgPSB2YWxpZGF0ZUlmVmFsdWVzTWF0Y2godmFsdWUpO1xyXG5cclxuICAgIGlmIChwcmlzdGluZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodG91Y2hlZCAmJiBpc0dyb3VwTWF0Y2hpbmcpIHtcclxuICAgICAgY2xlYXJFcnJvck9uRmllbGRzKCdmdmVoR3JvdXBNYXRjaCcsIGNvbnRyb2xzKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RXJyb3JPbkZpZWxkcyhlcnJvciwgY29udHJvbHMpO1xyXG4gICAgcmV0dXJuIGVycm9yO1xyXG4gIH07XHJcbn1cclxuIl19