UNPKG

@terminus/ngx-tools

Version:

[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github

50 lines 5.59 kB
import { FormGroup, } from '@angular/forms'; /** * Determine if a form control has a required validator * * @param formItem - The control or form group to check * @returns If a required control is found * * @example * const ctrl = new FormControl(null, [Validators.required]; * const group = new FormGroup({myControl: [null, [Validators.required]]}); * hasRequiredControl(ctrl); // Returns: true * hasRequiredControl(group); // Returns: true */ export function hasRequiredControl(formItem) { if (!formItem) { return false; } // Dealing with FormGroup if (formItem instanceof FormGroup) { var isRequired = false; // Check each control within the group // eslint-disable-next-line @typescript-eslint/prefer-for-of for (var i = 0; i < Object.keys(formItem.controls).length; i += 1) { var control = formItem.controls[Object.keys(formItem.controls)[i]]; isRequired = controlHasRequiredField(control); // Break out of the loop when we find the first required control if (isRequired) { break; } } return isRequired; } // Dealing with AbstractControl return controlHasRequiredField(formItem); } /** * Determine if a form control has a required validator * * @param control - The control to test * @returns If the control is required * * @example * const ctrl = new FormControl(null, [Validators.required]; * controlHasRequiredField(ctrl); // Returns: true */ function controlHasRequiredField(control) { var validator = control.validator ? control.validator({}) : null; return !!(validator && validator.required); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXJlcXVpcmVkLWNvbnRyb2wuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGVybWludXMvbmd4LXRvb2xzL3V0aWxpdGllcy8iLCJzb3VyY2VzIjpbImhhcy1yZXF1aXJlZC1jb250cm9sL2hhcy1yZXF1aXJlZC1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4Qjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxRQUF5QjtJQUMxRCxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELHlCQUF5QjtJQUN6QixJQUFJLFFBQVEsWUFBWSxTQUFTLEVBQUU7UUFDakMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBRXZCLHNDQUFzQztRQUN0Qyw0REFBNEQ7UUFDNUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pFLElBQU0sT0FBTyxHQUFvQixRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEYsVUFBVSxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTlDLGdFQUFnRTtZQUNoRSxJQUFJLFVBQVUsRUFBRTtnQkFDZCxNQUFNO2FBQ1A7U0FDRjtRQUVELE9BQU8sVUFBVSxDQUFDO0tBQ25CO0lBQ0QsK0JBQStCO0lBQy9CLE9BQU8sdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUdEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsdUJBQXVCLENBQUMsT0FBd0I7SUFDdkQsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RixPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSBmb3JtIGNvbnRyb2wgaGFzIGEgcmVxdWlyZWQgdmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIGZvcm1JdGVtIC0gVGhlIGNvbnRyb2wgb3IgZm9ybSBncm91cCB0byBjaGVja1xuICogQHJldHVybnMgSWYgYSByZXF1aXJlZCBjb250cm9sIGlzIGZvdW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGN0cmwgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdO1xuICogY29uc3QgZ3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtteUNvbnRyb2w6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dfSk7XG4gKiBoYXNSZXF1aXJlZENvbnRyb2woY3RybCk7ICAvLyBSZXR1cm5zOiB0cnVlXG4gKiBoYXNSZXF1aXJlZENvbnRyb2woZ3JvdXApOyAvLyBSZXR1cm5zOiB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNSZXF1aXJlZENvbnRyb2woZm9ybUl0ZW06IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICBpZiAoIWZvcm1JdGVtKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRGVhbGluZyB3aXRoIEZvcm1Hcm91cFxuICBpZiAoZm9ybUl0ZW0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICBsZXQgaXNSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgZWFjaCBjb250cm9sIHdpdGhpbiB0aGUgZ3JvdXBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2ZcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE9iamVjdC5rZXlzKGZvcm1JdGVtLmNvbnRyb2xzKS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gZm9ybUl0ZW0uY29udHJvbHNbT2JqZWN0LmtleXMoZm9ybUl0ZW0uY29udHJvbHMpW2ldXTtcbiAgICAgIGlzUmVxdWlyZWQgPSBjb250cm9sSGFzUmVxdWlyZWRGaWVsZChjb250cm9sKTtcblxuICAgICAgLy8gQnJlYWsgb3V0IG9mIHRoZSBsb29wIHdoZW4gd2UgZmluZCB0aGUgZmlyc3QgcmVxdWlyZWQgY29udHJvbFxuICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzUmVxdWlyZWQ7XG4gIH1cbiAgLy8gRGVhbGluZyB3aXRoIEFic3RyYWN0Q29udHJvbFxuICByZXR1cm4gY29udHJvbEhhc1JlcXVpcmVkRmllbGQoZm9ybUl0ZW0pO1xufVxuXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgZm9ybSBjb250cm9sIGhhcyBhIHJlcXVpcmVkIHZhbGlkYXRvclxuICpcbiAqIEBwYXJhbSBjb250cm9sIC0gVGhlIGNvbnRyb2wgdG8gdGVzdFxuICogQHJldHVybnMgSWYgdGhlIGNvbnRyb2wgaXMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgY3RybCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gKiBjb250cm9sSGFzUmVxdWlyZWRGaWVsZChjdHJsKTsgLy8gUmV0dXJuczogdHJ1ZVxuICovXG5mdW5jdGlvbiBjb250cm9sSGFzUmVxdWlyZWRGaWVsZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgY29uc3QgdmFsaWRhdG9yID0gY29udHJvbC52YWxpZGF0b3IgPyBjb250cm9sLnZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpIDogbnVsbDtcbiAgcmV0dXJuICEhKHZhbGlkYXRvciAmJiB2YWxpZGF0b3IucmVxdWlyZWQpO1xufVxuIl19