ngx-mat-lib
Version:
A bunch of utilities and components to use in your Angular 7+ apps!
27 lines (26 loc) • 2.88 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { sumBy } from "lodash";
/**
* Accepts a validator and a quantity.
* Applies the validator and checks if at least n fields of the formGroup are valid
* @param {?} validator
* @param {?=} howMany
* @return {?}
*/
export function xmatValidatorForAtLeast(validator, howMany = 1) {
return (group) => {
if (group && group.controls) {
/** @type {?} */
const validCount = sumBy(Object.keys(group.controls), (key) => {
/** @type {?} */
const ctrl = group.controls[key];
return +!validator(ctrl);
});
return validCount >= howMany ? null : { valuesFillAtLeastValidation: true };
}
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1hdC1maWxsLWF0LWxlYXN0LnZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtbWF0LWxpYi8iLCJzb3VyY2VzIjpbImxpYi92YWxpZGF0b3JzL3htYXQtZmlsbC1hdC1sZWFzdC52YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7OztBQVEvQixNQUFNLFVBQVUsdUJBQXVCLENBQUMsU0FBc0IsRUFBRSxVQUFrQixDQUFDO0lBRS9FLE9BQU8sQ0FBQyxLQUFnQixFQUFvQixFQUFFO1FBQzFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7O1lBQ3pCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFOztnQkFDMUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCLENBQUMsQ0FBQztZQUNILE9BQU8sVUFBVSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBRSxDQUFDO1NBQy9FO0tBRUosQ0FBQztDQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgc3VtQnkgfSBmcm9tIFwibG9kYXNoXCI7XG5cbi8qKlxuICogQWNjZXB0cyBhIHZhbGlkYXRvciBhbmQgYSBxdWFudGl0eS5cbiAqIEFwcGxpZXMgdGhlIHZhbGlkYXRvciBhbmQgY2hlY2tzIGlmIGF0IGxlYXN0IG4gZmllbGRzIG9mIHRoZSBmb3JtR3JvdXAgYXJlIHZhbGlkXG4gKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gaG93TWFueVxuICovXG5leHBvcnQgZnVuY3Rpb24geG1hdFZhbGlkYXRvckZvckF0TGVhc3QodmFsaWRhdG9yOiBWYWxpZGF0b3JGbiwgaG93TWFueTogbnVtYmVyID0gMSk6IFZhbGlkYXRvckZuIHtcblxuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgPT4ge1xuICAgICAgICBpZiAoZ3JvdXAgJiYgZ3JvdXAuY29udHJvbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQ291bnQgPSBzdW1CeShPYmplY3Qua2V5cyhncm91cC5jb250cm9scyksIChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdHJsID0gZ3JvdXAuY29udHJvbHNba2V5XTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKyF2YWxpZGF0b3IoY3RybCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZENvdW50ID49IGhvd01hbnkgPyBudWxsIDogeyB2YWx1ZXNGaWxsQXRMZWFzdFZhbGlkYXRpb246IHRydWUgfTtcbiAgICAgICAgfVxuXG4gICAgfTtcbn1cbiJdfQ==