@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
1 lines • 4.47 kB
Source Map (JSON)
{"version":3,"file":"taiga-ui-cdk-directives-native-validator.mjs","sources":["../../../projects/cdk/directives/native-validator/native-validator.directive.ts","../../../projects/cdk/directives/native-validator/taiga-ui-cdk-directives-native-validator.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {Directive, inject, input} from '@angular/core';\nimport {type AbstractControl, NG_VALIDATORS, type Validator} from '@angular/forms';\nimport {tuiTakeUntilDestroyed, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {BehaviorSubject, delay, of, switchMap} from 'rxjs';\n\n@Directive({\n selector: '[tuiNativeValidator]',\n providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)],\n host: {'(focusout)': 'handleValidation()'},\n})\nexport class TuiNativeValidator implements Validator {\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly doc = inject(DOCUMENT);\n private readonly control$ = new BehaviorSubject<AbstractControl | null>(null);\n\n protected readonly sub = this.control$\n .pipe(\n switchMap((control: any) => control?.events || of(null)),\n delay(0),\n tuiZonefree(),\n tuiTakeUntilDestroyed(),\n )\n .subscribe(() => this.handleValidation());\n\n public readonly tuiNativeValidator = input('Invalid');\n public id = '';\n\n public get control(): AbstractControl | null {\n return this.control$.value;\n }\n\n public validate(control: AbstractControl): null {\n this.control$.next(control);\n\n return null;\n }\n\n protected handleValidation(): void {\n const invalid = !!this.control?.touched && this.control?.invalid;\n\n // TODO: Replace with :has(:invalid) when supported\n this.el.closest('tui-textfield')?.classList.toggle('tui-invalid', invalid);\n this.el.setCustomValidity?.(invalid ? this.tuiNativeValidator() : '');\n this.el.setAttribute('aria-invalid', String(invalid));\n\n if (!this.id && invalid) {\n this.doc.dispatchEvent(new CustomEvent('tui-validator', {detail: this}));\n this.el.setAttribute('aria-describedby', this.id);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}