UNPKG

ngx-vest-forms

Version:

Opinionated template-driven forms library for Angular

43 lines 5.47 kB
import { Directive, inject, input } from '@angular/core'; import { NG_ASYNC_VALIDATORS, } from '@angular/forms'; import { FormDirective } from './form.directive'; import { getFormControlField } from '../utils/form-utils'; import * as i0 from "@angular/core"; /** * Hooks into the ngModel selector and triggers an asynchronous validation for a form model * It will use a vest suite behind the scenes */ export class FormModelDirective { constructor() { this.validationOptions = input({ debounceTime: 0 }); this.formDirective = inject(FormDirective); } validate(control) { const { ngForm, suite, formValue } = this.formDirective; const field = getFormControlField(ngForm.control, control); return this.formDirective.createAsyncValidator(field, this.validationOptions())(control.getRawValue()); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FormModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.1", type: FormModelDirective, isStandalone: true, selector: "[ngModel]", inputs: { validationOptions: { classPropertyName: "validationOptions", publicName: "validationOptions", isSignal: true, isRequired: false, transformFunction: null } }, providers: [ { provide: NG_ASYNC_VALIDATORS, useExisting: FormModelDirective, multi: true, }, ], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FormModelDirective, decorators: [{ type: Directive, args: [{ selector: '[ngModel]', standalone: true, providers: [ { provide: NG_ASYNC_VALIDATORS, useExisting: FormModelDirective, multi: true, }, ], }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tb2RlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVzdC1mb3Jtcy9zcmMvbGliL2RpcmVjdGl2ZXMvZm9ybS1tb2RlbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFHTCxtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFEOzs7R0FHRztBQVlILE1BQU0sT0FBTyxrQkFBa0I7SUFYL0I7UUFZUyxzQkFBaUIsR0FBRyxLQUFLLENBQW9CLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7S0FXeEQ7SUFUUSxRQUFRLENBQ2IsT0FBd0I7UUFFeEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDN0UsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUNpQixDQUFDO0lBQzNDLENBQUM7OEdBWlUsa0JBQWtCO2tHQUFsQixrQkFBa0IsZ09BUmxCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsV0FBVyxFQUFFLGtCQUFrQjtnQkFDL0IsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzsyRkFFVSxrQkFBa0I7a0JBWDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxvQkFBb0I7NEJBQy9CLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yLFxuICBOR19BU1lOQ19WQUxJREFUT1JTLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRGb3JtQ29udHJvbEZpZWxkIH0gZnJvbSAnLi4vdXRpbHMvZm9ybS11dGlscyc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uT3B0aW9ucyB9IGZyb20gJy4vdmFsaWRhdGlvbi1vcHRpb25zJztcblxuLyoqXG4gKiBIb29rcyBpbnRvIHRoZSBuZ01vZGVsIHNlbGVjdG9yIGFuZCB0cmlnZ2VycyBhbiBhc3luY2hyb25vdXMgdmFsaWRhdGlvbiBmb3IgYSBmb3JtIG1vZGVsXG4gKiBJdCB3aWxsIHVzZSBhIHZlc3Qgc3VpdGUgYmVoaW5kIHRoZSBzY2VuZXNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nTW9kZWxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfQVNZTkNfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBGb3JtTW9kZWxEaXJlY3RpdmUsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWxEaXJlY3RpdmUgaW1wbGVtZW50cyBBc3luY1ZhbGlkYXRvciB7XG4gIHB1YmxpYyB2YWxpZGF0aW9uT3B0aW9ucyA9IGlucHV0PFZhbGlkYXRpb25PcHRpb25zPih7IGRlYm91bmNlVGltZTogMCB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtRGlyZWN0aXZlID0gaW5qZWN0KEZvcm1EaXJlY3RpdmUpO1xuXG4gIHB1YmxpYyB2YWxpZGF0ZShcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcbiAgKTogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbmdGb3JtLCBzdWl0ZSwgZm9ybVZhbHVlIH0gPSB0aGlzLmZvcm1EaXJlY3RpdmU7XG4gICAgY29uc3QgZmllbGQgPSBnZXRGb3JtQ29udHJvbEZpZWxkKG5nRm9ybS5jb250cm9sLCBjb250cm9sKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmNyZWF0ZUFzeW5jVmFsaWRhdG9yKGZpZWxkLCB0aGlzLnZhbGlkYXRpb25PcHRpb25zKCkpKFxuICAgICAgY29udHJvbC5nZXRSYXdWYWx1ZSgpXG4gICAgKSBhcyBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPjtcbiAgfVxufVxuIl19