UNPKG

ng-fveh

Version:

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

92 lines (91 loc) 7.28 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @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(controlName => { const /** @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(controlName => { const /** @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) { const [firstField, ...otherFields] = Object.keys(controlValues); const /** @type {?} */ isValid = otherFields.every(currentValue => controlValues[firstField] === controlValues[currentValue]); return isValid; } /** * @param {?} friendlyFieldNames * @return {?} */ export function groupMatch(friendlyFieldNames) { return ({ value, touched, pristine, controls }) => { const /** @type {?} */ error = createGroupMatchError(friendlyFieldNames); const /** @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWF0Y2gudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZnZlaC8iLCJzb3VyY2VzIjpbImxpYi92YWxpZGF0b3JzL2dyb3VwLW1hdGNoLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxtQkFBbUIsTUFBVyxFQUFFLE9BQW9CO0lBQ2xELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUU7UUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtDQUNGOzs7Ozs7QUFFRCwwQkFBMEIsS0FBZ0IsRUFBRSxRQUFzQjtJQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUMxQyx1QkFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQzFDLENBQUMsQ0FBQztDQUNKOzs7Ozs7QUFFRCw0QkFBNEIsY0FBc0IsRUFBRSxRQUFzQjtJQUN4RSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUMxQyx1QkFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM1QyxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDMUM7S0FDRixDQUFDLENBQUM7Q0FDSjs7Ozs7QUFFRCwrQkFBK0Isa0JBQTRCO0lBQ3pELE9BQU87UUFDTCxjQUFjLEVBQUU7WUFDZCxNQUFNLEVBQUUsa0JBQWtCO1NBQzNCO0tBQ0YsQ0FBQztDQUNIOzs7OztBQUVELCtCQUErQixhQUFrQjtJQUMvQyxNQUFNLENBQUMsVUFBVSxFQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRSx1QkFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FDL0IsWUFBWSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUMxRSxDQUFDO0lBRUYsT0FBTyxPQUFPLENBQUM7Q0FDaEI7Ozs7O0FBRUQsTUFBTSxxQkFBcUIsa0JBQTRCO0lBQ3JELE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7UUFDaEQsdUJBQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEQsdUJBQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJELElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksT0FBTyxJQUFJLGVBQWUsRUFBRTtZQUM5QixrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0tBQ2QsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbnRlcmZhY2UgRm9ybUNvbnRyb2xzIHtcclxuICBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbDtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0RXJyb3JzKGVycm9yczogYW55LCBjb250cm9sOiBGb3JtQ29udHJvbCkge1xyXG4gIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xyXG4gICAgY29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRFcnJvck9uRmllbGRzKGVycm9yOiB7fSB8IG51bGwsIGNvbnRyb2xzOiBGb3JtQ29udHJvbHMpIHtcclxuICBPYmplY3Qua2V5cyhjb250cm9scykuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XHJcbiAgICBjb25zdCBlcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBjb250cm9sc1tjb250cm9sTmFtZV0uZXJyb3JzLCBlcnJvcik7XHJcbiAgICBzZXRFcnJvcnMoZXJyb3JzLCBjb250cm9sc1tjb250cm9sTmFtZV0pO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjbGVhckVycm9yT25GaWVsZHMoZmllbGRFcnJvck5hbWU6IHN0cmluZywgY29udHJvbHM6IEZvcm1Db250cm9scykge1xyXG4gIE9iamVjdC5rZXlzKGNvbnRyb2xzKS5mb3JFYWNoKGNvbnRyb2xOYW1lID0+IHtcclxuICAgIGNvbnN0IGVycm9ycyA9IGNvbnRyb2xzW2NvbnRyb2xOYW1lXS5lcnJvcnM7XHJcbiAgICBpZiAoZXJyb3JzKSB7XHJcbiAgICAgIGRlbGV0ZSBlcnJvcnNbZmllbGRFcnJvck5hbWVdO1xyXG4gICAgICBzZXRFcnJvcnMoZXJyb3JzLCBjb250cm9sc1tjb250cm9sTmFtZV0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVHcm91cE1hdGNoRXJyb3IoZnJpZW5kbHlGaWVsZE5hbWVzOiBzdHJpbmdbXSkge1xyXG4gIHJldHVybiB7XHJcbiAgICBmdmVoR3JvdXBNYXRjaDoge1xyXG4gICAgICBmaWVsZHM6IGZyaWVuZGx5RmllbGROYW1lcyxcclxuICAgIH0sXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gdmFsaWRhdGVJZlZhbHVlc01hdGNoKGNvbnRyb2xWYWx1ZXM6IGFueSkge1xyXG4gIGNvbnN0IFtmaXJzdEZpZWxkLCAuLi5vdGhlckZpZWxkc10gPSBPYmplY3Qua2V5cyhjb250cm9sVmFsdWVzKTtcclxuICBjb25zdCBpc1ZhbGlkID0gb3RoZXJGaWVsZHMuZXZlcnkoXHJcbiAgICBjdXJyZW50VmFsdWUgPT4gY29udHJvbFZhbHVlc1tmaXJzdEZpZWxkXSA9PT0gY29udHJvbFZhbHVlc1tjdXJyZW50VmFsdWVdLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiBpc1ZhbGlkO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBNYXRjaChmcmllbmRseUZpZWxkTmFtZXM6IHN0cmluZ1tdKSB7XHJcbiAgcmV0dXJuICh7IHZhbHVlLCB0b3VjaGVkLCBwcmlzdGluZSwgY29udHJvbHMgfSkgPT4ge1xyXG4gICAgY29uc3QgZXJyb3IgPSBjcmVhdGVHcm91cE1hdGNoRXJyb3IoZnJpZW5kbHlGaWVsZE5hbWVzKTtcclxuICAgIGNvbnN0IGlzR3JvdXBNYXRjaGluZyA9IHZhbGlkYXRlSWZWYWx1ZXNNYXRjaCh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHByaXN0aW5lKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b3VjaGVkICYmIGlzR3JvdXBNYXRjaGluZykge1xyXG4gICAgICBjbGVhckVycm9yT25GaWVsZHMoJ2Z2ZWhHcm91cE1hdGNoJywgY29udHJvbHMpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRFcnJvck9uRmllbGRzKGVycm9yLCBjb250cm9scyk7XHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfTtcclxufVxyXG4iXX0=