UNPKG

@narik/custom-validators

Version:

Framework to create angular application

1 lines 108 kB
{"version":3,"file":"narik-custom-validators.mjs","sources":["../../../projects/narik-custom-validators/src/lib/util/lang.ts","../../../projects/narik-custom-validators/src/lib/array-length/validator.ts","../../../projects/narik-custom-validators/src/lib/array-length/directive.ts","../../../projects/narik-custom-validators/src/lib/base64/validator.ts","../../../projects/narik-custom-validators/src/lib/base64/directive.ts","../../../projects/narik-custom-validators/src/lib/credit-card/validator.ts","../../../projects/narik-custom-validators/src/lib/credit-card/directive.ts","../../../projects/narik-custom-validators/src/lib/date-iso/validator.ts","../../../projects/narik-custom-validators/src/lib/date-iso/directive.ts","../../../projects/narik-custom-validators/src/lib/date/validator.ts","../../../projects/narik-custom-validators/src/lib/date/directive.ts","../../../projects/narik-custom-validators/src/lib/digits/validator.ts","../../../projects/narik-custom-validators/src/lib/digits/directive.ts","../../../projects/narik-custom-validators/src/lib/email/validator.ts","../../../projects/narik-custom-validators/src/lib/email/directive.ts","../../../projects/narik-custom-validators/src/lib/equal-to/validator.ts","../../../projects/narik-custom-validators/src/lib/equal-to/directive.ts","../../../projects/narik-custom-validators/src/lib/equal/validator.ts","../../../projects/narik-custom-validators/src/lib/equal/directive.ts","../../../projects/narik-custom-validators/src/lib/greater-than-equal/validator.ts","../../../projects/narik-custom-validators/src/lib/greater-than-equal/directive.ts","../../../projects/narik-custom-validators/src/lib/greater-than/validator.ts","../../../projects/narik-custom-validators/src/lib/greater-than/directive.ts","../../../projects/narik-custom-validators/src/lib/included-in/validator.ts","../../../projects/narik-custom-validators/src/lib/included-in/directive.ts","../../../projects/narik-custom-validators/src/lib/json/validator.ts","../../../projects/narik-custom-validators/src/lib/json/directive.ts","../../../projects/narik-custom-validators/src/lib/less-than-equal/validator.ts","../../../projects/narik-custom-validators/src/lib/less-than-equal/directive.ts","../../../projects/narik-custom-validators/src/lib/less-than/validator.ts","../../../projects/narik-custom-validators/src/lib/less-than/directive.ts","../../../projects/narik-custom-validators/src/lib/max-date/validator.ts","../../../projects/narik-custom-validators/src/lib/max-date/directive.ts","../../../projects/narik-custom-validators/src/lib/max/validator.ts","../../../projects/narik-custom-validators/src/lib/max/directive.ts","../../../projects/narik-custom-validators/src/lib/min-date/validator.ts","../../../projects/narik-custom-validators/src/lib/min-date/directive.ts","../../../projects/narik-custom-validators/src/lib/min/validator.ts","../../../projects/narik-custom-validators/src/lib/min/directive.ts","../../../projects/narik-custom-validators/src/lib/not-equal-to/validator.ts","../../../projects/narik-custom-validators/src/lib/not-equal-to/directive.ts","../../../projects/narik-custom-validators/src/lib/not-equal/validator.ts","../../../projects/narik-custom-validators/src/lib/not-equal/directive.ts","../../../projects/narik-custom-validators/src/lib/not-included-in/validator.ts","../../../projects/narik-custom-validators/src/lib/not-included-in/directive.ts","../../../projects/narik-custom-validators/src/lib/not-matching/validator.ts","../../../projects/narik-custom-validators/src/lib/not-matching/directive.ts","../../../projects/narik-custom-validators/src/lib/number/validator.ts","../../../projects/narik-custom-validators/src/lib/number/directive.ts","../../../projects/narik-custom-validators/src/lib/property/validator.ts","../../../projects/narik-custom-validators/src/lib/property/directive.ts","../../../projects/narik-custom-validators/src/lib/range-length/validator.ts","../../../projects/narik-custom-validators/src/lib/range-length/directive.ts","../../../projects/narik-custom-validators/src/lib/range/validator.ts","../../../projects/narik-custom-validators/src/lib/range/directive.ts","../../../projects/narik-custom-validators/src/lib/url/validator.ts","../../../projects/narik-custom-validators/src/lib/url/directive.ts","../../../projects/narik-custom-validators/src/lib/uuid/validator.ts","../../../projects/narik-custom-validators/src/lib/uuid/directive.ts","../../../projects/narik-custom-validators/src/lib/narik-custom-validators.module.ts","../../../projects/narik-custom-validators/src/narik-custom-validators.ts"],"sourcesContent":["export function isPresent(obj: any): boolean {\r\n return obj !== undefined && obj !== null;\r\n}\r\n\r\nexport function isDate(obj: any): boolean {\r\n try {\r\n const date = new Date(obj);\r\n return !isNaN(date.getTime());\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\nexport function parseDate(obj: any): string {\r\n try {\r\n // Moment.js\r\n if (obj._d instanceof Date) {\r\n const d = obj._d as Date;\r\n const month = +d.getMonth() + 1;\r\n const day = +d.getDate();\r\n return `${d.getFullYear()}-${formatDayOrMonth(month)}-${formatDayOrMonth(day)}`;\r\n }\r\n\r\n // NgbDateStruct\r\n if (typeof obj === 'object' && obj.year != null && obj.month != null && obj.day != null) {\r\n const month = +obj.month;\r\n const day = +obj.day;\r\n return `${obj.year}-${formatDayOrMonth(month)}-${formatDayOrMonth(day)}`;\r\n }\r\n } catch (e) { }\r\n return obj;\r\n}\r\n\r\nfunction formatDayOrMonth(month: number): string|number {\r\n return month < 10 ? `0${month}` : month;\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const arrayLength = (value: number): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const obj = control.value;\r\n return Array.isArray(obj) && obj.length >= +value ? null : { arrayLength: { minLength: value } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { arrayLength } from './validator';\r\n\r\nconst ARRAY_LENGTH_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ArrayLengthValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[arrayLength][formControlName],[arrayLength][formControl],[arrayLength][ngModel]',\r\n standalone: false,\r\n providers: [ARRAY_LENGTH_VALIDATOR],\r\n})\r\nexport class ArrayLengthValidator implements Validator, OnInit, OnChanges {\r\n @Input() arrayLength: number;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = arrayLength(this.arrayLength);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'arrayLength') {\r\n this.validator = arrayLength(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const base64: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: string = control.value;\r\n return /^(?:[A-Z0-9+\\/]{4})*(?:[A-Z0-9+\\/]{2}==|[A-Z0-9+\\/]{3}=|[A-Z0-9+\\/]{4})$/i.test(v) ? null : { base64: true };\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { base64 } from './validator';\r\n\r\nconst BASE64_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => Base64Validator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[base64][formControlName],[base64][formControl],[base64][ngModel]',\r\n standalone: false,\r\n providers: [BASE64_VALIDATOR],\r\n})\r\nexport class Base64Validator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return base64(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const creditCard: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: string = control.value;\r\n\r\n const sanitized = v.replace(/[^0-9]+/g, '');\r\n\r\n // problem with chrome\r\n /* tslint:disable */\r\n if (!(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|(?:9792)\\d{12})$/.test(sanitized))) {\r\n return { creditCard: true };\r\n }\r\n /* tslint:enable */\r\n\r\n let sum = 0;\r\n let digit;\r\n let tmpNum;\r\n let shouldDouble;\r\n for (let i = sanitized.length - 1; i >= 0; i--) {\r\n digit = sanitized.substring(i, (i + 1));\r\n tmpNum = parseInt(digit, 10);\r\n if (shouldDouble) {\r\n tmpNum *= 2;\r\n if (tmpNum >= 10) {\r\n sum += ((tmpNum % 10) + 1);\r\n } else {\r\n sum += tmpNum;\r\n }\r\n } else {\r\n sum += tmpNum;\r\n }\r\n shouldDouble = !shouldDouble;\r\n }\r\n\r\n if (Boolean((sum % 10) === 0 ? sanitized : false)) {\r\n return null;\r\n }\r\n\r\n return { creditCard: true };\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { creditCard } from './validator';\r\n\r\nconst CREDIT_CARD_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => CreditCardValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[creditCard][formControlName],[creditCard][formControl],[creditCard][ngModel]',\r\n standalone: false,\r\n providers: [CREDIT_CARD_VALIDATOR],\r\n})\r\nexport class CreditCardValidator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return creditCard(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const dateISO: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: string = control.value;\r\n return /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(v) ? null : { dateISO: true };\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { dateISO } from './validator';\r\n\r\nconst DATE_ISO_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => DateISOValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[dateISO][formControlName],[dateISO][formControl],[dateISO][ngModel]',\r\n standalone: false,\r\n providers: [DATE_ISO_VALIDATOR],\r\n})\r\nexport class DateISOValidator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return dateISO(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isDate, isPresent, parseDate } from '../util/lang';\r\n\r\nexport const date: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n let v: string = control.value;\r\n v = parseDate(v);\r\n return isDate(v) ? null : { date: true };\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { date } from './validator';\r\n\r\nconst DATE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => DateValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[date][formControlName],[date][formControl],[date][ngModel]',\r\n standalone: false,\r\n providers: [DATE_VALIDATOR],\r\n})\r\nexport class DateValidator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return date(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const digits: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: string = control.value;\r\n return /^\\d+$/.test(v) ? null : { digits: true };\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { digits } from './validator';\r\n\r\nconst DIGITS_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => DigitsValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[digits][formControlName],[digits][formControl],[digits][ngModel]',\r\n standalone: false,\r\n providers: [DIGITS_VALIDATOR],\r\n})\r\nexport class DigitsValidator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return digits(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const email: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: string = control.value;\r\n /* tslint:disable */\r\n return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(v) ? null : { 'email': true };\r\n /* tslint:enable */\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { email } from './validator';\r\n\r\nconst EMAIL_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EmailValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[ngvemail][formControlName],[ngvemail][formControl],[ngvemail][ngModel]',\r\n standalone: false,\r\n providers: [EMAIL_VALIDATOR],\r\n})\r\nexport class EmailValidator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return email(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport const equalTo = (equalControl: AbstractControl): ValidatorFn => {\r\n let subscribe = false;\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!subscribe) {\r\n subscribe = true;\r\n equalControl.valueChanges.subscribe(() => {\r\n control.updateValueAndValidity();\r\n });\r\n }\r\n\r\n const v: string = control.value;\r\n\r\n return equalControl.value === v ? null : { equalTo: { control: equalControl, value: equalControl.value } };\r\n };\r\n};\r\n","import { Directive, Input, forwardRef, OnInit } from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n FormControl,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { equalTo } from './validator';\r\n\r\nconst EQUAL_TO_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EqualToValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[equalTo][formControlName],[equalTo][formControl],[equalTo][ngModel]',\r\n standalone: false,\r\n providers: [EQUAL_TO_VALIDATOR],\r\n})\r\nexport class EqualToValidator implements Validator, OnInit {\r\n @Input() equalTo: FormControl;\r\n\r\n private validator: ValidatorFn;\r\n\r\n ngOnInit() {\r\n this.validator = equalTo(this.equalTo);\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const equal = (val: any): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: any = control.value;\r\n\r\n return val === v ? null : { equal: { value: val } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n SimpleChanges,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { equal } from './validator';\r\n\r\nconst EQUAL_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EqualValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[equal][formControlName],[equal][formControl],[equal][ngModel]',\r\n standalone: false,\r\n providers: [EQUAL_VALIDATOR],\r\n})\r\nexport class EqualValidator implements Validator, OnInit, OnChanges {\r\n @Input() equal: any;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = equal(this.equal);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'equal') {\r\n this.validator = equal(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const gte = (value: number): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(value)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: number = +control.value;\r\n return v >= +value ? null : { gte: { value: value } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { gte } from './validator';\r\n\r\nconst GREATER_THAN_EQUAL_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GreaterThanEqualValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[gte][formControlName],[gte][formControl],[gte][ngModel]',\r\n standalone: false,\r\n providers: [GREATER_THAN_EQUAL_VALIDATOR],\r\n})\r\nexport class GreaterThanEqualValidator implements Validator, OnInit, OnChanges {\r\n @Input() gte: number;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = gte(this.gte);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'gte') {\r\n this.validator = gte(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const gt = (value: number): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(value)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: number = +control.value;\r\n return v > +value ? null : { gt: { value: value } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { gt } from './validator';\r\n\r\nconst GREATER_THAN_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GreaterThanValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[gt][formControlName],[gt][formControl],[gt][ngModel]',\r\n standalone: false,\r\n providers: [GREATER_THAN_VALIDATOR],\r\n})\r\nexport class GreaterThanValidator implements Validator, OnInit, OnChanges {\r\n @Input() gt: number;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = gt(this.gt);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'gt') {\r\n this.validator = gt(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const includedIn = (includedInArr: Array<any>): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(includedInArr)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n if (includedInArr.indexOf(control.value) < 0) {\r\n return { includedIn: {value: control.value, reason: includedInArr}};\r\n }\r\n return null;\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { includedIn } from './validator';\r\n\r\nconst INCLUDED_IN_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => IncludedInValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[includedIn][formControlName],[includedIn][formControl],[includedIn][ngModel]',\r\n standalone: false,\r\n providers: [INCLUDED_IN_VALIDATOR],\r\n})\r\nexport class IncludedInValidator implements Validator, OnInit, OnChanges {\r\n @Input() includedIn: Array<any>;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = includedIn(this.includedIn);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'includedIn') {\r\n this.validator = includedIn(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const json: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: string = control.value;\r\n\r\n try {\r\n const obj = JSON.parse(v);\r\n\r\n if (Boolean(obj) && typeof obj === 'object') {\r\n return null;\r\n }\r\n } catch (e) { }\r\n return { json: true };\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { json } from './validator';\r\n\r\nconst JSON_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => JSONValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[json][formControlName],[json][formControl],[json][ngModel]',\r\n standalone: false,\r\n providers: [JSON_VALIDATOR],\r\n})\r\nexport class JSONValidator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return json(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const lte = (value: number): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(value)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: number = +control.value;\r\n return v <= +value ? null : { lte: { value: value } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { lte } from './validator';\r\n\r\nconst LESS_THAN_EQUAL_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => LessThanEqualValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[lte][formControlName],[lte][formControl],[lte][ngModel]',\r\n standalone: false,\r\n providers: [LESS_THAN_EQUAL_VALIDATOR],\r\n})\r\nexport class LessThanEqualValidator implements Validator, OnInit, OnChanges {\r\n @Input() lte: number;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = lte(this.lte);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'lte') {\r\n this.validator = lte(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const lt = (value: number): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(value)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: number = +control.value;\r\n return v < +value ? null : { lt: { value: value } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { lt } from './validator';\r\n\r\nconst LESS_THAN_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => LessThanValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[lt][formControlName],[lt][formControl],[lt][ngModel]',\r\n standalone: false,\r\n providers: [LESS_THAN_VALIDATOR],\r\n})\r\nexport class LessThanValidator implements Validator, OnInit, OnChanges {\r\n @Input() lt: number;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = lt(this.lt);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'lt') {\r\n this.validator = lt(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, FormControl, NgModel, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isDate, isPresent, parseDate } from '../util/lang';\r\n\r\nexport const maxDate = (maxInput: any): ValidatorFn => {\r\n let value;\r\n let subscribe = false;\r\n let maxValue = maxInput;\r\n const isForm = maxInput instanceof FormControl || maxInput instanceof NgModel;\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!subscribe && isForm) {\r\n subscribe = true;\r\n maxInput.valueChanges.subscribe(() => {\r\n control.updateValueAndValidity();\r\n });\r\n }\r\n\r\n if (isForm) {\r\n maxValue = maxInput.value;\r\n }\r\n\r\n value = parseDate(maxValue);\r\n\r\n if (!isDate(value) && !(value instanceof Function)) {\r\n if (value == null) {\r\n return null;\r\n } else if (isForm) {\r\n return { maxDate: { error: 'maxDate is invalid' } };\r\n } else {\r\n throw Error('maxDate value must be or return a formatted date');\r\n }\r\n }\r\n\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const d = new Date(parseDate(control.value)).getTime();\r\n\r\n if (!isDate(d)) {\r\n return { value: true };\r\n }\r\n if (value instanceof Function) {\r\n value = value();\r\n }\r\n\r\n return d <= new Date(value).getTime()\r\n ? null\r\n : (isForm ? { maxDate: { control: maxInput, value: maxInput.value } } : { maxDate: { value: maxValue, control: undefined } });\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { maxDate } from './validator';\r\n\r\nconst MAX_DATE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MaxDateValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[maxDate][formControlName],[maxDate][formControl],[maxDate][ngModel]',\r\n standalone: false,\r\n providers: [MAX_DATE_VALIDATOR],\r\n})\r\nexport class MaxDateValidator implements Validator, OnInit, OnChanges {\r\n @Input() maxDate;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = maxDate(this.maxDate);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'maxDate') {\r\n this.validator = maxDate(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const max = (value: number): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(value)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: number = +control.value;\r\n return v <= +value ? null : { max: { value: value } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { max } from './validator';\r\n\r\nconst MAX_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MaxValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[max][formControlName],[max][formControl],[max][ngModel]',\r\n standalone: false,\r\n providers: [MAX_VALIDATOR],\r\n})\r\nexport class MaxValidator implements Validator, OnInit, OnChanges {\r\n @Input() max: number;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = max(this.max);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'max') {\r\n this.validator = max(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, FormControl, NgModel, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isDate, isPresent, parseDate } from '../util/lang';\r\n\r\nexport const minDate = (minInput: any): ValidatorFn => {\r\n let value;\r\n let subscribe = false;\r\n let minValue = minInput;\r\n const isForm = minInput instanceof FormControl || minInput instanceof NgModel;\r\n return (control: AbstractControl): ValidationErrors => {\r\n\r\n if (!subscribe && isForm) {\r\n subscribe = true;\r\n minInput.valueChanges.subscribe(() => {\r\n control.updateValueAndValidity();\r\n });\r\n }\r\n\r\n if (isForm) {\r\n minValue = minInput.value;\r\n }\r\n\r\n value = parseDate(minValue);\r\n\r\n if (!isDate(value) && !(value instanceof Function)) {\r\n if (value == null) {\r\n return null;\r\n } else if (isForm) {\r\n return { minDate: { error: 'minDate is invalid' } };\r\n } else {\r\n throw Error('minDate value must be or return a formatted date');\r\n }\r\n }\r\n\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const d = new Date(parseDate(control.value)).getTime();\r\n\r\n if (!isDate(d)) {\r\n return { value: true };\r\n }\r\n if (value instanceof Function) {\r\n value = value();\r\n }\r\n\r\n return d >= new Date(value).getTime()\r\n ? null\r\n : (isForm ? { minDate: { control: minInput, value: minInput.value } } : { minDate: { value: minValue, control: undefined } });\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { minDate } from './validator';\r\n\r\nconst MIN_DATE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MinDateValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[minDate][formControlName],[minDate][formControl],[minDate][ngModel]',\r\n standalone: false,\r\n providers: [MIN_DATE_VALIDATOR],\r\n})\r\nexport class MinDateValidator implements Validator, OnInit, OnChanges {\r\n @Input() minDate;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = minDate(this.minDate);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'minDate') {\r\n this.validator = minDate(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const min = (value: number): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(value)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: number = +control.value;\r\n return v >= +value ? null : { min: { value: value } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { min } from './validator';\r\n\r\nconst MIN_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MinValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector: '[min][formControlName],[min][formControl],[min][ngModel]',\r\n standalone: false,\r\n providers: [MIN_VALIDATOR],\r\n})\r\nexport class MinValidator implements Validator, OnInit, OnChanges {\r\n @Input() min: number;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = min(this.min);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'min') {\r\n this.validator = min(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport const notEqualTo = (notEqualControl: AbstractControl): ValidatorFn => {\r\n let subscribe = false;\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!subscribe) {\r\n subscribe = true;\r\n notEqualControl.valueChanges.subscribe(() => {\r\n control.updateValueAndValidity();\r\n });\r\n }\r\n\r\n const v: string = control.value;\r\n\r\n if (notEqualControl.value == null && v == null) {\r\n return null;\r\n }\r\n\r\n return notEqualControl.value !== v ? null : { notEqualTo: { control: notEqualControl, value: notEqualControl.value } };\r\n };\r\n};\r\n","import { Directive, Input, forwardRef, OnInit } from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n FormControl,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { notEqualTo } from './validator';\r\n\r\nconst NOT_EQUAL_TO_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEqualToValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[notEqualTo][formControlName],[notEqualTo][formControl],[notEqualTo][ngModel]',\r\n standalone: false,\r\n providers: [NOT_EQUAL_TO_VALIDATOR],\r\n})\r\nexport class NotEqualToValidator implements Validator, OnInit {\r\n @Input() notEqualTo: FormControl;\r\n\r\n private validator: ValidatorFn;\r\n\r\n ngOnInit() {\r\n this.validator = notEqualTo(this.notEqualTo);\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const notEqual = (val: any): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: any = control.value;\r\n\r\n return val !== v ? null : { notEqual: { value: val } };\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n SimpleChanges,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { notEqual } from './validator';\r\n\r\nconst NOT_EQUAL_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEqualValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[notEqual][formControlName],[notEqual][formControl],[notEqual][ngModel]',\r\n standalone: false,\r\n providers: [NOT_EQUAL_VALIDATOR],\r\n})\r\nexport class NotEqualValidator implements Validator, OnInit, OnChanges {\r\n @Input() notEqual: any;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = notEqual(this.notEqual);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'notEqual') {\r\n this.validator = notEqual(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const notIncludedIn = (includedInArr: Array<any>): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors => {\r\n if (!isPresent(includedInArr)) {\r\n return null;\r\n }\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n if (includedInArr.indexOf(control.value) >= 0) {\r\n return { notIncludedIn: {value: control.value, reason: includedInArr}};\r\n }\r\n return null;\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { notIncludedIn } from './validator';\r\n\r\nconst NOT_INCLUDED_IN_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotIncludedInValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[notIncludedIn][formControlName],[notIncludedIn][formControl],[notIncludedIn][ngModel]',\r\n standalone: false,\r\n providers: [NOT_INCLUDED_IN_VALIDATOR],\r\n})\r\nexport class NotIncludedInValidator implements Validator, OnInit, OnChanges {\r\n @Input() notIncludedIn: Array<any>;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = notIncludedIn(this.notIncludedIn);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'notIncludedIn') {\r\n this.validator = notIncludedIn(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\nexport const notMatching = (p: string | RegExp): ValidatorFn => {\r\n if (!isPresent(p)) {\r\n return (control) => null;\r\n }\r\n const patternValidator = Validators.pattern(p);\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n if (!patternValidator(control)) {\r\n return { notMatching: {value: control.value, reason: p}};\r\n }\r\n return null;\r\n };\r\n};\r\n","import {\r\n Directive,\r\n Input,\r\n forwardRef,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALIDATORS,\r\n Validator,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\n\r\nimport { notMatching } from './validator';\r\n\r\nconst NOT_MATCHING_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotMatchingValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[notMatching][formControlName],[notMatching][formControl],[notMatching][ngModel]',\r\n standalone: false,\r\n providers: [NOT_MATCHING_VALIDATOR],\r\n})\r\nexport class NotMatchingValidator implements Validator, OnInit, OnChanges {\r\n @Input() notMatching: string | RegExp;\r\n\r\n private validator: ValidatorFn;\r\n private onChange: () => void;\r\n\r\n ngOnInit() {\r\n this.validator = notMatching(this.notMatching);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n for (const key in changes) {\r\n if (key === 'notMatching') {\r\n this.validator = notMatching(changes[key].currentValue);\r\n if (this.onChange) {\r\n this.onChange();\r\n }\r\n }\r\n }\r\n }\r\n\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return this.validator(c);\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isPresent } from '../util/lang';\r\n\r\n// tslint:disable-next-line:variable-name\r\nexport const number: ValidatorFn = (control: AbstractControl): ValidationErrors => {\r\n if (isPresent(Validators.required(control))) {\r\n return null;\r\n }\r\n\r\n const v: string = control.value;\r\n return /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(v) ? null : { number: true };\r\n};\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';\r\n\r\nimport { number } from './validator';\r\n\r\nconst NUMBER_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NumberValidator),\r\n multi: true,\r\n};\r\n\r\n@Directive({\r\n selector:\r\n '[number][formControlName],[number][formControl],[number][ngModel]',\r\n standalone: false,\r\n providers: [NUMBER_VALIDATOR],\r\n})\r\nexport class NumberValidator implements Validator {\r\n validate(c: AbstractControl): { [key: string]: any } {\r\n return number(c);\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn