@webilix/ngx-form-m3 0.0.40 → 0.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/webilix-ngx-form-m3.mjs +201 -109
- package/fesm2022/webilix-ngx-form-m3.mjs.map +1 -1
- package/index.d.ts +9 -1
- package/ngx-form-m3.css +26 -10
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webilix-ngx-form-m3.mjs","sources":["../../../ngx-form-m3/src/lib/directives/auto-complete.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-focus.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-height.directive.ts","../../../ngx-form-m3/src/lib/directives/form-error.directive.ts","../../../ngx-form-m3/src/lib/pipes/input-error.pipe.ts","../../../ngx-form-m3/src/lib/pipes/multi-line.pipe.ts","../../../ngx-form-m3/src/lib/inputs/input.interface.ts","../../../ngx-form-m3/src/lib/inputs/auto-complete/input-auto-complete.component.ts","../../../ngx-form-m3/src/lib/inputs/auto-complete/input-auto-complete.component.html","../../../ngx-form-m3/src/lib/inputs/auto-complete/input-auto-complete.interface.ts","../../../ngx-form-m3/src/lib/inputs/bank-card/input-bank-card.component.ts","../../../ngx-form-m3/src/lib/inputs/bank-card/input-bank-card.component.html","../../../ngx-form-m3/src/lib/validators/bank/card.validator.ts","../../../ngx-form-m3/src/lib/validators/bank/sheba.validator.ts","../../../ngx-form-m3/src/lib/validators/count/max-count.validator.ts","../../../ngx-form-m3/src/lib/validators/count/min-count.validator.ts","../../../ngx-form-m3/src/lib/validators/date/max-date.validator.ts","../../../ngx-form-m3/src/lib/validators/date/min-date.validator.ts","../../../ngx-form-m3/src/lib/validators/moment/max-moment.validator.ts","../../../ngx-form-m3/src/lib/validators/moment/min-moment.validator.ts","../../../ngx-form-m3/src/lib/validators/number/max-number.validator.ts","../../../ngx-form-m3/src/lib/validators/number/min-number.validator.ts","../../../ngx-form-m3/src/lib/validators/number/multiply-of.validator.ts","../../../ngx-form-m3/src/lib/validators/duplicate.validator.ts","../../../ngx-form-m3/src/lib/validators/length.validator.ts","../../../ngx-form-m3/src/lib/inputs/bank-card/input-bank-card.interface.ts","../../../ngx-form-m3/src/lib/inputs/bank-sheba/input-bank-sheba.component.ts","../../../ngx-form-m3/src/lib/inputs/bank-sheba/input-bank-sheba.component.html","../../../ngx-form-m3/src/lib/inputs/bank-sheba/input-bank-sheba.interface.ts","../../../ngx-form-m3/src/lib/inputs/checkbox/input-checkbox.component.ts","../../../ngx-form-m3/src/lib/inputs/checkbox/input-checkbox.component.html","../../../ngx-form-m3/src/lib/inputs/checkbox/input-checkbox.interface.ts","../../../ngx-form-m3/src/lib/inputs/color/input-color.component.ts","../../../ngx-form-m3/src/lib/inputs/color/input-color.component.html","../../../ngx-form-m3/src/lib/inputs/color/input-color.interface.ts","../../../ngx-form-m3/src/lib/ngx-form.interface.ts","../../../ngx-form-m3/src/lib/inputs/component/input-component.component.ts","../../../ngx-form-m3/src/lib/inputs/component/input-component.component.html","../../../ngx-form-m3/src/lib/inputs/component/input-component.interface.ts","../../../ngx-form-m3/src/lib/inputs/coordinates/input-coordinates.component.ts","../../../ngx-form-m3/src/lib/inputs/coordinates/input-coordinates.component.html","../../../ngx-form-m3/src/lib/inputs/coordinates/input-coordinates.interface.ts","../../../ngx-form-m3/src/lib/inputs/date/input-date.component.ts","../../../ngx-form-m3/src/lib/inputs/date/input-date.component.html","../../../ngx-form-m3/src/lib/inputs/date/input-date.interface.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.html","../../../ngx-form-m3/src/lib/inputs/email/input-email.interface.ts","../../../ngx-form-m3/src/lib/inputs/file/input-file.component.ts","../../../ngx-form-m3/src/lib/inputs/file/input-file.component.html","../../../ngx-form-m3/src/lib/inputs/file/input-file.interface.ts","../../../ngx-form-m3/src/lib/inputs/icon/input-icon.component.ts","../../../ngx-form-m3/src/lib/inputs/icon/input-icon.component.html","../../../ngx-form-m3/src/lib/inputs/icon/input-icon.interface.ts","../../../ngx-form-m3/src/lib/inputs/ip/input-ip.component.ts","../../../ngx-form-m3/src/lib/inputs/ip/input-ip.component.html","../../../ngx-form-m3/src/lib/inputs/ip/input-ip.interface.ts","../../../ngx-form-m3/src/lib/components/list-input/list-input.component.ts","../../../ngx-form-m3/src/lib/components/list-input/list-input.component.html","../../../ngx-form-m3/src/lib/components/list-item/list-item.component.ts","../../../ngx-form-m3/src/lib/components/list-item/list-item.component.html","../../../ngx-form-m3/src/lib/inputs/item-list/input-item-list.component.ts","../../../ngx-form-m3/src/lib/inputs/item-list/input-item-list.component.html","../../../ngx-form-m3/src/lib/inputs/item-list/input-item-list.interface.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.html","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.interface.ts","../../../ngx-form-m3/src/lib/inputs/moment/input-moment.component.ts","../../../ngx-form-m3/src/lib/inputs/moment/input-moment.component.html","../../../ngx-form-m3/src/lib/inputs/moment/input-moment.interface.ts","../../../ngx-form-m3/src/lib/inputs/multi-select/input-multi-select.component.ts","../../../ngx-form-m3/src/lib/inputs/multi-select/input-multi-select.component.html","../../../ngx-form-m3/src/lib/inputs/multi-select/input-multi-select.interface.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.html","../../../ngx-form-m3/src/lib/inputs/name/input-name.interface.ts","../../../ngx-form-m3/src/lib/inputs/number/input-number.component.ts","../../../ngx-form-m3/src/lib/inputs/number/input-number.component.html","../../../ngx-form-m3/src/lib/inputs/number/input-number.interface.ts","../../../ngx-form-m3/src/lib/inputs/option-list/input-option-list.component.ts","../../../ngx-form-m3/src/lib/inputs/option-list/input-option-list.component.html","../../../ngx-form-m3/src/lib/inputs/option-list/input-option-list.interface.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.html","../../../ngx-form-m3/src/lib/inputs/password/input-password.interface.ts","../../../ngx-form-m3/src/lib/inputs/price/input-price.component.ts","../../../ngx-form-m3/src/lib/inputs/price/input-price.component.html","../../../ngx-form-m3/src/lib/inputs/price/input-price.interface.ts","../../../ngx-form-m3/src/lib/inputs/route/input-route.component.ts","../../../ngx-form-m3/src/lib/inputs/route/input-route.component.html","../../../ngx-form-m3/src/lib/inputs/route/input-route.interface.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.html","../../../ngx-form-m3/src/lib/inputs/select/input-select.interface.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.html","../../../ngx-form-m3/src/lib/inputs/text/input-text.interface.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.html","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.interface.ts","../../../ngx-form-m3/src/lib/inputs/url/input-url.component.ts","../../../ngx-form-m3/src/lib/inputs/url/input-url.component.html","../../../ngx-form-m3/src/lib/inputs/url/input-url.interface.ts","../../../ngx-form-m3/src/lib/inputs/input.component.ts","../../../ngx-form-m3/src/lib/inputs/input.component.html","../../../ngx-form-m3/src/lib/inputs/input.info.ts","../../../ngx-form-m3/src/lib/ngx-form.config.ts","../../../ngx-form-m3/src/lib/ngx-form.component.ts","../../../ngx-form-m3/src/lib/ngx-form.component.html","../../../ngx-form-m3/src/public-api.ts","../../../ngx-form-m3/src/webilix-ngx-form-m3.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({ selector: 'input[type=\"text\"]' })\nexport class AutoCompleteDirective {\n @HostBinding('attr.autocomplete') autocomplete = 'one-time-code';\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({ selector: '[AutoFocusDirective]' })\nexport class AutoFocusDirective implements AfterViewInit {\n @Input({ required: true }) public AutoFocusDirective!: boolean;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n if (!this.AutoFocusDirective || !this.elementRef) return;\n\n const input: HTMLInputElement = this.elementRef.nativeElement as HTMLInputElement;\n if (!input) return;\n\n setTimeout(() => input.focus && input.focus(), 0);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({ selector: '[AutoHeightDirective]' })\nexport class AutoHeightDirective {\n @Input({ required: true }) public AutoHeightDirective!: boolean;\n @Input({ required: true }) public minHeight!: number;\n @Input({ required: false }) public maxHeight: number = 0;\n\n private _focused: boolean = false;\n @HostListener('focus')\n private focus(): void {\n this._focused = true;\n }\n @HostListener('blur')\n private blur(): void {\n this._focused = false;\n }\n\n constructor(private elementRef: ElementRef, private renderer2: Renderer2) {}\n\n public ngAfterViewInit(): void {\n this.resize(true);\n }\n\n @HostListener('input')\n private resize(forced?: boolean): void {\n if (this.AutoHeightDirective !== true || (!forced && !this._focused)) return;\n\n const textarea = this.elementRef.nativeElement as HTMLTextAreaElement;\n const borderHeight = textarea.offsetHeight - textarea.clientHeight;\n this.setHeight('auto');\n\n let height: number = textarea.scrollHeight + borderHeight;\n if (this.minHeight && this.minHeight > height) height = this.minHeight;\n if (this.maxHeight && this.maxHeight < height) height = this.maxHeight;\n this.setHeight(`${height}px`);\n }\n\n private setHeight(value: string): void {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'height', value);\n this.renderer2.setStyle(this.elementRef.nativeElement, 'overflow', 'auto');\n }\n}\n","import { Directive, ElementRef, HostListener, Optional } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n@Directive({ selector: 'form.ngx-form' })\nexport class FormErrorDirective {\n @HostListener('submit') onSubmit(): void {\n setTimeout(() => {\n const invalidControl: HTMLElement = this.elementRef.nativeElement.querySelector('.mat-form-field-invalid');\n if (invalidControl) return this.scrollToElement(invalidControl);\n }, 150);\n }\n\n constructor(private elementRef: ElementRef, @Optional() private formGroupDirective: FormGroupDirective) {}\n\n private getElementTop(element: HTMLElement): number {\n return element.getBoundingClientRect().top + window.scrollY - 100;\n }\n\n private scrollToElement(element: HTMLElement): void {\n window.scroll({ top: this.getElementTop(element), behavior: 'smooth' });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'InputErrorPipe' })\nexport class InputErrorPipe implements PipeTransform {\n transform(errors: ValidationErrors | null | undefined, type: string): string {\n if (errors === null || errors === undefined) return '';\n\n const keys: string[] = Object.keys(errors);\n if (keys.length === 0) return '';\n\n const error: string = keys[0];\n const value: any = errors[error];\n\n switch (error) {\n case 'component':\n return value;\n\n case 'required':\n return 'مقدار الزامی است.';\n\n case 'length':\n return `مقدار باید داری ${Helper.NUMBER.format(value)} کاراکتر باشد.`;\n\n case 'minimum':\n return `مقدار نمیتواند کوچکتر از ${Helper.NUMBER.format(value)} باشد.`;\n\n case 'maximum':\n return `مقدار نمیتواند بزرگتر از ${Helper.NUMBER.format(value)} باشد.`;\n\n case 'multiplyOf':\n return `مقدار باید مضربی از ${Helper.NUMBER.format(value)} باشد.`;\n\n case 'minlength':\n return `مقدار باید حداقل داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'maxlength':\n return `مقدار میتواند حداکثر داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'mindate':\n return `تاریخ باید برابر یا بعد از ${value} انتخاب شده باشد.`;\n\n case 'maxdate':\n return `تاریخ باید برابر یا قبل از ${value} انتخاب شده باشد.`;\n\n case 'minmoment':\n return `زمان باید برابر یا بعد از ${value} انتخاب شده باشد.`;\n\n case 'maxmoment':\n return `زمان باید برابر یا قبل از ${value} انتخاب شده باشد.`;\n\n case 'mincount':\n return `انتخاب حداقل ${Helper.NUMBER.format(value)} گزینه الزامی است.`;\n\n case 'maxcount':\n return `امکان انتخاب بیشتر از ${Helper.NUMBER.format(value)} گزینه وجود ندارد.`;\n\n case 'duplicate':\n return 'امکان انتخاب مقادیر تکراری وجود ندارد.';\n\n case 'bank-card':\n return `شماره کارت بانکی صحیح مشخص نشده است.`;\n\n case 'bank-sheba':\n return `شماره شبا صحیح مشخص نشده است.`;\n\n case 'pattern':\n switch (type) {\n case 'EMAIL':\n return 'فرمت استاندارد ایمیل رعایت نشده است.';\n case 'PASSWORD':\n switch (true) {\n case value.requiredPattern.includes('[0-9]'):\n return 'مقدار باید شامل اعداد انگلیسی باشد.';\n case value.requiredPattern.includes('[a-z]'):\n return 'مقدار باید شامل حروف انگلیسی کوچک باشد.';\n case value.requiredPattern.includes('[A-Z]'):\n return 'مقدار باید شامل حروف انگلیسی بزرگ باشد.';\n }\n return 'کاراکترهای الزامی در کلمه عبور استفاده نشدهاند.';\n case 'URL':\n return 'فرمت استاندارد آدرس سایت رعایت نشده است.';\n }\n break;\n\n case 'mask':\n switch (type) {\n case 'BANK-CARD':\n return 'شماره کارت بانکی دارای ۱۶ رقم است.';\n case 'BANK-SHEBA':\n return 'شماره شبا دارای ۲۴ رقم است.';\n case 'MOBILE':\n return 'شماره موبایل دارای ۱۱ رقم است.';\n }\n break;\n }\n\n return 'مقدار وارد شده صحیح نیست.';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'MultiLinePipe' })\nexport class MultiLinePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(value: string, config?: { html?: boolean }): string | SafeHtml {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return config?.html\n ? this.sanitizer.bypassSecurityTrustHtml(value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />'))\n : Helper.STRING.escapeHTML(value).replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormValues } from '../ngx-form.interface';\n\nexport interface IInputButton {\n readonly icon: string;\n readonly color?: string;\n readonly onClick: (values: INgxFormValues) => void;\n readonly disableOn?: (values: INgxFormValues) => boolean;\n}\n\nexport interface IInput {\n readonly name: string;\n readonly title?: string;\n readonly value?: string | null;\n readonly hint?: string;\n readonly description?: string;\n readonly optional?: boolean;\n readonly english?: boolean;\n readonly autoFocus?: boolean;\n readonly appearance?: MatFormFieldAppearance;\n readonly button?: IInputButton;\n readonly disableOn?: (values: INgxFormValues) => boolean;\n readonly hideOn?: (values: INgxFormValues) => boolean;\n}\n\nexport abstract class InputMethods<I /** INPUT **/, V /** VALUE **/> {\n abstract control(input: I, validators: ValidatorFn[]): FormControl<V>;\n abstract value(value: any, input: I): V;\n}\n\nexport interface IInputConfig {\n readonly appearance: MatFormFieldAppearance;\n readonly autoFocus?: string;\n}\n\nexport const INPUT_CONTROL: InjectionToken<FormControl> = new InjectionToken('NGX-FORM-INPUT-CONTROL');\nexport const INPUT_TYPE: InjectionToken<any> = new InjectionToken('NGX-FORM-INPUT-TYPE');\nexport const INPUT_CONFIG: InjectionToken<IInputConfig> = new InjectionToken('NGX-FORM-INPUT-CONFIG');\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputAutoComplete } from './input-auto-complete.interface';\n\n@Component({\n host: { selector: 'input-auto-complete' },\n imports: [\n ReactiveFormsModule,\n MatAutocompleteModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-auto-complete.component.html',\n styleUrl: './input-auto-complete.component.scss',\n})\nexport class InputAutoCompleteComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputAutoComplete = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public filtered: string[] = [];\n\n ngOnInit(): void {\n this.filter();\n }\n\n filter(): void {\n const value: string = (this.formControl.value || '').toString().trim();\n this.filtered = this.input.options.filter((option) => option.indexOf(value) !== -1);\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [class.ngx-form-m3-en]=\"input.english\"\n [maxLength]=\"524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (input)=\"filter()\"\n (focus)=\"filter()\"\n [matAutocomplete]=\"ngxAutoComplete\"\n />\n <mat-autocomplete #ngxAutoComplete=\"matAutocomplete\" class=\"ngx-helper-form-m3-auto-complete-input\">\n <div class=\"options\">\n <!-- OPTIONS -->\n @for (option of filtered ; track $index) {\n <mat-option [value]=\"option\" [class.ngx-form-m3-en]=\"input.english\">{{ option }}</mat-option>\n }\n </div>\n </mat-autocomplete>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputAutoComplete extends IInput {\n readonly type: 'AUTO-COMPLETE';\n readonly title: string;\n readonly options: string[];\n}\n\nexport class InputAutoCompleteMethods extends InputMethods<IInputAutoComplete, string | null> {\n override control(input: IInputAutoComplete, validators: ValidatorFn[]): FormControl<string | null> {\n const options: string[] = input.options;\n const value: string | null = input.value && Helper.IS.string(input.value) ? input.value : null;\n if (value && !options.includes(value)) options.push(value);\n\n Object.assign(input, { options: options.sort((o1: string, o2: string) => o1.localeCompare(o2)) });\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputAutoComplete): string | null {\n return value && Helper.IS.string(value) ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper, IBank } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputBankCard } from './input-bank-card.interface';\n\n@Component({\n host: { selector: 'input-bank-card' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-bank-card.component.html',\n styleUrl: './input-bank-card.component.scss',\n})\nexport class InputBankCardComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputBankCard = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public bank: string = '';\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n ngOnInit(): void {\n this.setBank(this.input.value || '');\n }\n\n setBank(card: string): void {\n card = card.replace(/-/g, '').substring(0, 6);\n\n const bank: IBank | null = Helper.BANK.findCard(card);\n this.bank = bank?.title || '';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'شماره کارت بانکی' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <div class=\"ngx-helper-form-m3-bank-card-input\">\n <!-- BANK NAME -->\n @if (!input.hideBank && bank !== '') {\n <div class=\"bank\">{{ bank }}</div>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'0000-0000-0000-0000'\"\n [inputTransformFn]=\"inputTransformFn\"\n (input)=\"setBank(bankCardInput.value)\"\n #bankCardInput\n />\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const BankCardValidator = (): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value) || value.length !== 16) return null;\n\n return !Helper.IS.STRING.bankCard(value) ? { 'bank-card': true } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const BankShebaValidator = (): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value) || value.length !== 24) return null;\n\n return !Helper.IS.STRING.bankSheba(`IR${value}`) ? { 'bank-sheba': true } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const MaxCountValidator = (max: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string[] = Array.isArray(formControl.value) ? formControl.value : [];\n return value.length > max ? { maxcount: max } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const MinCountValidator = (min: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string[] = Array.isArray(formControl.value) ? formControl.value : [];\n return value.length === 0 ? { required: true } : value.length < min ? { mincount: min } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MaxDateValidator = (max: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const maximum: Date = jalali.periodDay(1, max === 'NOW' ? new Date() : max).to;\n return value.getTime() > maximum.getTime() ? { maxdate: jalali.toFullText(maximum, { format: 'Y/M/D' }) } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MinDateValidator = (min: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const minimum: Date = jalali.periodDay(1, min === 'NOW' ? new Date() : min).from;\n return value.getTime() < minimum.getTime() ? { mindate: jalali.toFullText(minimum, { format: 'Y/M/D' }) } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MaxMomentValidator = (max: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n const formatDate = (date: Date) => jalali.toString(date, { format: 'Y-M-D H:I' });\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const maximum: Date = max === 'NOW' ? new Date() : max;\n return formatDate(value) > formatDate(maximum)\n ? { maxmoment: jalali.toFullText(maximum, { format: 'H:I Y/M/D' }) }\n : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MinMomentValidator = (min: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n const formatDate = (date: Date) => jalali.toString(date, { format: 'Y-M-D H:I' });\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const minimum: Date = min === 'NOW' ? new Date() : min;\n return formatDate(value) < formatDate(minimum)\n ? { minmoment: jalali.toFullText(minimum, { format: 'H:I Y/M/D' }) }\n : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const MaxNumberValidator = (maximum: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: number = Helper.IS.string(formControl.value) ? +formControl.value.replace(/,/g, '') : formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n return value <= maximum ? null : { maximum };\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const MinNumberValidator = (minimum: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: number = Helper.IS.string(formControl.value) ? +formControl.value.replace(/,/g, '') : formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n return value >= minimum ? null : { minimum };\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const MultiplyOfNumberValidator = (multiplyOf: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: number = Helper.IS.string(formControl.value) ? +formControl.value.replace(/,/g, '') : formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n return value % multiplyOf === 0 ? null : { multiplyOf };\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const DuplicateValidator = <T>(callback: (value: T) => string): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const values: T[] = Array.isArray(formControl.value) ? formControl.value : [];\n const check: string[] = values.map((value: T) => callback(value));\n const unique: string[] = check.filter((v: string, i: number, a: string[]) => a.indexOf(v) === i);\n\n return check.length !== unique.length ? { duplicate: true } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const LengthValidator = (length: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value)) return null;\n\n return value.length !== length ? { length } : null;\n };\n};\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { BankCardValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputBankCard extends Omit<IInput, 'english'> {\n readonly type: 'BANK-CARD';\n readonly hideBank?: boolean;\n}\n\nexport class InputBankCardMethods extends InputMethods<IInputBankCard, string | null> {\n override control(input: IInputBankCard, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(BankCardValidator());\n\n const value: string | null = input.value && Helper.IS.STRING.bankCard(input.value) ? input.value : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputBankCard): string | null {\n return Helper.IS.STRING.bankCard(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputBankSheba } from './input-bank-sheba.interface';\n\n@Component({\n host: { selector: 'input-bank-sheba' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-bank-sheba.component.html',\n styleUrl: './input-bank-sheba.component.scss',\n})\nexport class InputBankShebaComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputBankSheba = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public bank: string = '';\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'شماره شبا' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span class=\"ngx-form-m3-en\">IR</span>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'000000000000000000000000'\"\n [inputTransformFn]=\"inputTransformFn\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { BankShebaValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputBankSheba extends Omit<IInput, 'english'> {\n readonly type: 'BANK-SHEBA';\n readonly hideBank?: boolean;\n}\n\nexport class InputBankShebaMethods extends InputMethods<IInputBankSheba, string | null> {\n override control(input: IInputBankSheba, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(BankShebaValidator());\n\n const value: string | null =\n input.value && Helper.IS.STRING.bankSheba(input.value) ? input.value.substring(2) : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputBankSheba): string | null {\n return Helper.IS.STRING.bankSheba(`IR${value}`) ? `IR${value}` : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputCheckbox } from './input-checkbox.interface';\n\n@Component({\n host: { selector: 'input-checkbox' },\n imports: [ReactiveFormsModule, MatFormField, MatIcon, MatIconButton, MatInputModule, InputErrorPipe, MultiLinePipe],\n templateUrl: './input-checkbox.component.html',\n styleUrl: './input-checkbox.component.scss',\n})\nexport class InputCheckboxComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputCheckbox = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n toggleValue(): void {\n const value: boolean = !!this.formControl.value;\n this.formControl.setValue(!value);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <div\n class=\"ngx-helper-form-m3-checkbox-input\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"toggleValue()\"\n >\n <mat-icon>{{ !!formControl.value ? 'check_box' : 'check_box_outline_blank' }}</mat-icon>\n <div class=\"message\" [class.ngx-form-m3-en]=\"!!input.english\">{{ input.message }}</div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputCheckbox extends Omit<IInput, 'title' | 'value' | 'optional' | 'autoFocus'> {\n readonly type: 'CHECKBOX';\n readonly message: string;\n readonly value?: boolean;\n}\n\nexport class InputCheckboxMethods extends InputMethods<IInputCheckbox, boolean | null> {\n override control(input: IInputCheckbox, validators: ValidatorFn[]): FormControl<boolean | null> {\n return new FormControl<boolean | null>(!!input.value, validators);\n }\n\n override value(value: any, input: IInputCheckbox): boolean | null {\n return !!value;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputColor } from './input-color.interface';\n\n@Component({\n host: { selector: 'input-color' },\n imports: [ReactiveFormsModule, MatFormField, MatIcon, MatIconButton, MatInputModule, InputErrorPipe, MultiLinePipe],\n templateUrl: './input-color.component.html',\n styleUrl: './input-color.component.scss',\n})\nexport class InputColorComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputColor = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'رنگ' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : colorInput.click(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'palette' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n <div class=\"ngx-helper-form-m3-color-input\">\n <section>\n <input type=\"color\" (input)=\"formControl.setValue(colorInput.value)\" [value]=\"formControl.value\" #colorInput />\n <div\n class=\"color\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [style.background-color]=\"formControl.value || 'transparent'\"\n (click)=\"formControl.disabled ? null : colorInput.click(); formControl.markAsTouched()\"\n >\n \n </div>\n </section>\n\n <div\n class=\"value ngx-form-m3-en\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"formControl.disabled ? null : colorInput.click(); formControl.markAsTouched()\"\n >\n {{ formControl.value || ' ' }}\n </div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputColor extends Omit<IInput, 'english' | 'autoFocus'> {\n readonly type: 'COLOR';\n}\n\nexport class InputColorMethods extends InputMethods<IInputColor, string | null> {\n override control(input: IInputColor, validators: ValidatorFn[]): FormControl<string | null> {\n const value: string | null =\n input.value && Helper.IS.STRING.color(input.value) ? Helper.COLOR.toHEX(input.value) : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputColor): string | null {\n return Helper.IS.STRING.color(value) ? String(Helper.COLOR.toHEX(value)).toUpperCase() : null;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FormControl, FormGroup, NgForm } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport {\n IInputAutoComplete,\n IInputBankCard,\n IInputBankSheba,\n IInputCheckbox,\n IInputColor,\n IInputComponent,\n IInputCoordinates,\n IInputDate,\n IInputEmail,\n IInputFile,\n IInputIcon,\n IInputIp,\n IInputItemList,\n IInputMobile,\n IInputMoment,\n IInputMultiSelect,\n IInputName,\n IInputNumber,\n IInputOptionList,\n IInputPassword,\n IInputPrice,\n IInputRoute,\n IInputSelect,\n IInputText,\n IInputTextarea,\n IInputUrl,\n} from './inputs';\n\nexport type NgxFormInputs =\n | IInputAutoComplete\n | IInputBankCard\n | IInputBankSheba\n | IInputCheckbox\n | IInputColor\n | IInputComponent\n | IInputCoordinates\n | IInputDate\n | IInputEmail\n | IInputFile\n | IInputIcon\n | IInputIp\n | IInputItemList\n | IInputMobile\n | IInputMoment\n | IInputMultiSelect\n | IInputName\n | IInputNumber\n | IInputOptionList\n | IInputPassword\n | IInputPrice\n | IInputRoute\n | IInputSelect\n | IInputText\n | IInputTextarea\n | IInputUrl;\n\ntype Inputs =\n | NgxFormInputs\n | { readonly header: string; readonly input: NgxFormInputs }\n | { readonly header?: string; readonly inputs: NgxFormInputs[]; readonly flex?: number[] };\n\ninterface INgxFormColumn {\n readonly header?: string;\n readonly rows: Inputs[];\n}\n\nexport interface INgxForm {\n readonly submit: string;\n readonly inputs: (Inputs | { readonly header?: string; readonly columns: INgxFormColumn[]; readonly flex?: number[] })[];\n readonly buttons?: INgxFormButton[];\n\n // SETTINGS\n readonly mobileView?: boolean;\n readonly appearance?: MatFormFieldAppearance;\n\n // ACTIOS\n updateValues?: (values: INgxFormValues) => { [key: string]: any };\n}\n\nexport interface INgxFormInit {\n readonly formGroup?: FormGroup;\n readonly ngForm?: NgForm;\n}\n\nexport interface INgxFormButton {\n readonly title: string;\n readonly action: string[] | (() => void);\n}\n\nexport interface INgxFormValues {\n [key: string]: any;\n}\n\nexport const NGX_FORM_CONTROL: InjectionToken<FormControl> = new InjectionToken('NGX_FORM_CONTROL');\nexport const NGX_FORM_INPUT: InjectionToken<IInputComponent> = new InjectionToken('NGX_FORM_INPUT');\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues, NGX_FORM_CONTROL, NGX_FORM_INPUT } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputComponent } from './input-component.interface';\n\n@Component({\n host: { selector: 'input-component' },\n imports: [\n NgComponentOutlet,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-component.component.html',\n styleUrl: './input-component.component.scss',\n})\nexport class InputComponentComponent implements OnChanges {\n @HostBinding('style.--padding') paddig!: string;\n\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputComponent = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public injector: Injector = Injector.create({\n providers: [\n { provide: NGX_FORM_CONTROL, useValue: this.formControl },\n {\n provide: NGX_FORM_INPUT,\n useValue: { ...this.input, appearance: this.input.appearance || this.config.appearance },\n },\n ],\n });\n\n ngOnChanges(changes: SimpleChanges): void {\n this.paddig = this.input.zeroPadding ? '0' : '16px';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <!-- TITLE -->\n @if (input.title) {\n <mat-label>{{ input.title }}</mat-label>\n }\n\n <!-- ERROR -->\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <ng-container *ngComponentOutlet=\"input.component; inputs: input.componentInputs; injector: injector\"></ng-container>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { NgxFormComponentInputs } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputComponent extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'COMPONENT';\n readonly value?: any;\n readonly component: ComponentType<any>;\n readonly componentInputs?: NgxFormComponentInputs;\n readonly zeroPadding?: boolean;\n}\n\nexport class InputComponentMethods extends InputMethods<IInputComponent, any> {\n override control(input: IInputComponent, validators: ValidatorFn[]): FormControl<any> {\n const value: any = input.value !== undefined ? input.value : null;\n return new FormControl<any>(value, validators);\n }\n\n override value(value: any, input: IInputComponent): any {\n return value !== undefined ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { INgxHelperCoordinates, NgxHelperCoordinatesService } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputCoordinates } from './input-coordinates.interface';\n\n@Component({\n host: { selector: 'input-coordinates' },\n imports: [ReactiveFormsModule, MatFormField, MatIcon, MatIconButton, MatInputModule, InputErrorPipe, MultiLinePipe],\n templateUrl: './input-coordinates.component.html',\n styleUrl: './input-coordinates.component.scss',\n})\nexport class InputCoordinatesComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputCoordinates = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public coordinates?: INgxHelperCoordinates = this.formControl.value || undefined;\n\n constructor(private readonly ngxHelperCoordinatesService: NgxHelperCoordinatesService) {}\n\n setCoordinates(): void {\n const get = this.coordinates\n ? this.ngxHelperCoordinatesService.get(this.coordinates, { view: this.input.center, zoom: this.input.zoom })\n : this.ngxHelperCoordinatesService.get({ view: this.input.center, zoom: this.input.zoom });\n\n get.then(\n (coordinates: INgxHelperCoordinates) => {\n this.coordinates = coordinates;\n this.formControl.setValue(coordinates);\n this.formControl.markAsTouched();\n },\n () => this.formControl.markAsTouched(),\n );\n }\n\n resetCoordinates(): void {\n this.coordinates = undefined;\n this.formControl.setValue(null);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'موقعیت جغرافیایی' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? resetCoordinates() : setCoordinates(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'location_on' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n type=\"text\"\n matInput\n [readonly]=\"true\"\n class=\"ngx-helper-form-m3-coordinates-input ngx-form-m3-en\"\n [disabled]=\"formControl.disabled\"\n (click)=\"setCoordinates()\"\n [value]=\"formControl.value ? coordinates?.latitude + ', ' + coordinates?.longitude : ''\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormCoordinates } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputCoordinates extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'COORDINATES';\n readonly value?: INgxFormCoordinates | null;\n readonly center?: INgxFormCoordinates;\n readonly zoom?: number;\n}\n\nexport class InputCoordinatesMethods extends InputMethods<IInputCoordinates, INgxFormCoordinates | null> {\n override control(input: IInputCoordinates, validators: ValidatorFn[]): FormControl<INgxFormCoordinates | null> {\n const value: INgxFormCoordinates | null =\n input.value &&\n Helper.IS.object(input.value) &&\n Helper.IS.number(input.value.latitude) &&\n Helper.IS.number(input.value.longitude)\n ? input.value\n : null;\n return new FormControl<INgxFormCoordinates | null>(value, validators);\n }\n\n override value(value: any, input: IInputCoordinates): INgxFormCoordinates | null {\n return Helper.IS.object(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { INgxCalendarDate, NgxCalendarService } from '@webilix/ngx-calendar-m3';\nimport { NgxHelperDatePipe } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputDate } from './input-date.interface';\n\n@Component({\n host: { selector: 'input-date' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n NgxHelperDatePipe,\n ],\n templateUrl: './input-date.component.html',\n styleUrl: './input-date.component.scss',\n})\nexport class InputDateComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputDate = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n constructor(private readonly ngxCalendarService: NgxCalendarService) {}\n\n setDate(): void {\n if (this.formControl.disabled) return;\n\n this.ngxCalendarService\n .getDate({\n title: this.input.title || 'تاریخ',\n value: this.formControl.value,\n minDate: this.input.minDate,\n maxDate: this.input.maxDate,\n })\n .dialog(\n (data: INgxCalendarDate) => {\n this.formControl.setValue(data.date);\n this.formControl.markAsTouched();\n },\n () => this.formControl.markAsTouched(),\n );\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'تاریخ' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : setDate(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'calendar_month' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n type=\"text\"\n matInput\n [readonly]=\"true\"\n [disabled]=\"formControl.disabled\"\n (click)=\"setDate()\"\n [value]=\"formControl.value | ngxHelperDate : { format: input.format }\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxDateValidator, MinDateValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputDate extends Omit<IInput, 'english' | 'value' | 'autoFocus'> {\n readonly type: 'DATE';\n readonly value?: Date | null;\n readonly minDate?: Date | 'NOW';\n readonly maxDate?: Date | 'NOW';\n readonly format?: string;\n}\n\nexport class InputDateMethods extends InputMethods<IInputDate, Date | null> {\n override control(input: IInputDate, validators: ValidatorFn[]): FormControl<Date | null> {\n if (input.minDate) validators.push(MinDateValidator(input.minDate));\n if (input.maxDate) validators.push(MaxDateValidator(input.maxDate));\n\n const value: Date | null = input.value && Helper.IS.date(input.value) ? input.value : null;\n return new FormControl<Date | null>(value, validators);\n }\n\n override value(value: any, input: IInputDate): Date | null {\n return Helper.IS.date(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputEmail } from './input-email.interface';\n\n@Component({\n host: { selector: 'input-email' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-email.component.html',\n styleUrl: './input-email.component.scss',\n})\nexport class InputEmailComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputEmail = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'ایمیل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n @if (input.showIcon) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>alternate_email</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"email\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputEmail extends Omit<IInput, 'english'> {\n readonly type: 'EMAIL';\n readonly showIcon?: boolean;\n}\n\nexport class InputEmailMethods extends InputMethods<IInputEmail, string | null> {\n override control(input: IInputEmail, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.EMAIL.get()));\n\n const value: string | null = input.value && Helper.RE.EMAIL.verify(input.value) ? input.value.toLowerCase() : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputEmail): string | null {\n return typeof value === 'string' && Helper.RE.EMAIL.verify(value) ? value.toLowerCase() : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { NgxHelperFileSizePipe } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputFile } from './input-file.interface';\n\n@Component({\n host: { selector: 'input-file' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n NgxHelperFileSizePipe,\n ],\n templateUrl: './input-file.component.html',\n styleUrl: './input-file.component.scss',\n})\nexport class InputFileComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputFile = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n setFile(event: Event | null): void {\n if (this.formControl.disabled) return;\n\n const files: FileList | null = event === null ? null : (event.target as HTMLInputElement).files;\n const file = files && files.length !== 0 ? files.item(0) : null;\n this.formControl.setValue(file);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'فایل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : fileInput.click()\">\n {{ formControl.value ? 'close' : 'insert_drive_file' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input\n type=\"file\"\n [style.display]=\"'none !important'\"\n [accept]=\"(input.mimes === 'IMAGE' ? ['image/gif', 'image/jpeg', 'image/png'] : input.mimes || ['*']).join(',')\"\n (change)=\"setFile($event); fileInput.value = ''\"\n #fileInput\n />\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n <div\n class=\"ngx-helper-form-m3-file-input\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"fileInput.value = ''; fileInput.click()\"\n >\n <div class=\"size\">{{ formControl.value?.size | ngxHelperFileSize }}</div>\n <input type=\"text \" matInput [readonly]=\"true\" [disabled]=\"formControl.disabled\" class=\"ngx-form-m3-en\" />\n <div class=\"name ngx-form-m3-en\">{{ formControl.value?.name || ' ' }}</div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputFile extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'FILE';\n readonly mimes?: 'IMAGE' | string[];\n}\n\nexport class InputFileMethods extends InputMethods<IInputFile, File | null> {\n override control(input: IInputFile, validators: ValidatorFn[]): FormControl<File | null> {\n return new FormControl<File | null>(null, validators);\n }\n\n override value(value: any, input: IInputFile): File | null {\n return typeof value === 'object' ? value || null : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputIcon } from './input-icon.interface';\n\n@Component({\n host: { selector: 'input-icon' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-icon.component.html',\n styleUrl: './input-icon.component.scss',\n})\nexport class InputIconComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputIcon = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'آیکون' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <div class=\"ngx-helper-form-m3-icon-input\">\n @if (formControl.value) {\n <mat-icon>{{ formControl.value }}</mat-icon>\n }\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputIcon extends Omit<IInput, 'english'> {\n readonly type: 'ICON';\n}\n\nexport class InputIconMethods extends InputMethods<IInputIcon, string | null> {\n override control(input: IInputIcon, validators: ValidatorFn[]): FormControl<string | null> {\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputIcon): string | null {\n return typeof value === 'string' && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputIp } from './input-ip.interface';\n\n@Component({\n host: { selector: 'input-ip' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-ip.component.html',\n styleUrl: './input-ip.component.scss',\n})\nexport class InputIpComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputIp = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'آدرس آیپی' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n @if (input.showIcon) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>language</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputIp extends Omit<IInput, 'english'> {\n readonly type: 'IP';\n readonly showIcon?: boolean;\n}\n\nexport class InputIpMethods extends InputMethods<IInputIp, string | null> {\n override control(input: IInputIp, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.IP4.get(true)));\n\n const value: string | null = input.value && Helper.RE.IP4.verify(input.value) ? input.value : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputIp): string | null {\n return typeof value === 'string' && Helper.RE.IP4.verify(value) ? value : null;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { MatInput } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\n\n@Component({\n selector: 'list-input',\n imports: [MatInput, AutoFocusDirective],\n templateUrl: './list-input.component.html',\n styleUrl: './list-input.component.scss',\n})\nexport class ListInputComponent {\n @Input({ required: true }) english!: boolean;\n @Input({ required: true }) disabled!: boolean;\n @Input({ required: true }) autoFocus!: boolean;\n @Input({ required: true }) placeholder?: string;\n\n @Output() onFocus: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() onInput: EventEmitter<string> = new EventEmitter<string>();\n\n checkValue(input: HTMLInputElement): void {\n const value: string = input.value.trim();\n if (this.disabled || value === '') return;\n\n this.onInput.next(value);\n input.value = '';\n }\n}\n","<input\n matInput\n type=\"text\"\n [placeholder]=\"placeholder || (english ? 'New Item' : 'گزینه جدید')\"\n [class.ngx-form-m3-en]=\"english\"\n [AutoFocusDirective]=\"autoFocus\"\n [disabled]=\"disabled\"\n (blur)=\"checkValue(input); onFocus.next(false)\"\n (focus)=\"onFocus.next(true)\"\n (keydown.enter)=\"$event.preventDefault(); checkValue(input)\"\n #input\n/>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkDragHandle } from '@angular/cdk/drag-drop';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\n\n@Component({\n selector: 'list-item',\n imports: [CdkDragHandle, FormsModule, MatIcon, MatIconButton, MatInput, AutoFocusDirective],\n templateUrl: './list-item.component.html',\n styleUrl: './list-item.component.scss',\n})\nexport class ListItemComponent {\n @Input({ required: true }) value!: string;\n @Input({ required: true }) english!: boolean;\n @Input({ required: true }) disabled!: boolean;\n @Input({ required: true }) disableSort!: boolean;\n\n @Output() onUpdate: EventEmitter<string> = new EventEmitter<string>();\n @Output() onDelete: EventEmitter<void> = new EventEmitter<void>();\n\n public view: 'VALUE' | 'UPDATE' | 'DELETE' = 'VALUE';\n\n checkValue(input: HTMLInputElement): void {\n if (this.disabled) return;\n\n const value: string = input.value.trim();\n if (value !== '' && value !== this.value) this.onUpdate.next(value);\n this.view = 'VALUE';\n }\n}\n","<!-- SORT -->\n@if (view === 'VALUE' && !disableSort) {\n<mat-icon class=\"drag\" [class.ngx-form-m3-disabled-input]=\"disabled\" cdkDragHandle>drag_indicator</mat-icon>\n}\n\n<!-- VALUE -->\n@if (view === 'VALUE') {\n<div [class.ngx-form-m3-en]=\"english\" [class.ngx-form-m3-disabled-input]=\"disabled\">\n {{ value }}\n</div>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'UPDATE'\" [tabIndex]=\"-1\">\n <mat-icon>edit</mat-icon>\n</button>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'DELETE'\" [tabIndex]=\"-1\">\n <mat-icon [style.color]=\"'var(--error)'\" [class.ngx-form-m3-disabled-input]=\"disabled\">delete</mat-icon>\n</button>\n}\n\n<!-- UPDATE -->\n@if (view === 'UPDATE') {\n<input\n matInput\n type=\"text\"\n [ngModel]=\"value\"\n [class.ngx-form-m3-en]=\"english\"\n [AutoFocusDirective]=\"true\"\n [disabled]=\"disabled\"\n (blur)=\"checkValue(input)\"\n (keydown.enter)=\"$event.preventDefault(); checkValue(input)\"\n #input\n/>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"checkValue(input)\" [tabIndex]=\"-1\">\n <mat-icon>done_all</mat-icon>\n</button>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'VALUE'\" [tabIndex]=\"-1\">\n <mat-icon>close</mat-icon>\n</button>\n}\n\n<!-- DELETE -->\n@if (view === 'DELETE') {\n<div [class.ngx-form-m3-disabled-input]=\"disabled\">میخواهید این گزینه را حذف کنید؟</div>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"onDelete.next(); view = 'VALUE'\" [tabIndex]=\"-1\">\n <mat-icon [style.color]=\"'var(--error)'\" [class.ngx-form-m3-disabled-input]=\"disabled\">done_all</mat-icon>\n</button>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'VALUE'\" [tabIndex]=\"-1\">\n <mat-icon>close</mat-icon>\n</button>\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\nimport { ListInputComponent } from '../../components/list-input/list-input.component';\nimport { ListItemComponent } from '../../components/list-item/list-item.component';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputItemList } from './input-item-list.interface';\n\n@Component({\n host: { selector: 'input-item-list' },\n imports: [\n DragDropModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n ListInputComponent,\n ListItemComponent,\n ],\n templateUrl: './input-item-list.component.html',\n styleUrl: './input-item-list.component.scss',\n})\nexport class InputItemListComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputItemList = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public focused: boolean = false;\n public options: string[] = [];\n\n ngOnInit(): void {\n this.options = Array.isArray(this.formControl.value) ? this.formControl.value : [];\n }\n\n setValue(): void {\n this.formControl.setValue([...this.options]);\n this.formControl.markAsTouched();\n }\n\n dropOption(event: CdkDragDrop<string>): void {\n if (event.previousIndex === event.currentIndex) return;\n\n moveItemInArray(this.options, event.previousIndex, event.currentIndex);\n this.setValue();\n }\n\n addOption(option: string): void {\n this.options.push(option);\n this.setValue();\n }\n\n updateOption(index: number, option: string): void {\n if (!this.options[index]) return;\n\n this.options.splice(index, 1, option);\n this.setValue();\n }\n\n deleteOption(index: number): void {\n if (!this.options[index]) return;\n\n this.options.splice(index, 1);\n this.setValue();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"focused ? 'always' : 'auto'\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <!-- OPTIONS -->\n @if (options.length > 0) {\n <div\n class=\"options\"\n cdkDropList\n (cdkDropListDropped)=\"dropOption($event)\"\n [style.border-color]=\"formControl.disabled ? 'var(--outline-variant)' : 'var(--outline)'\"\n >\n @for (item of options; track $index) {\n <list-item\n cdkDrag\n cdkDragLockAxis=\"y\"\n cdkDragBoundary=\".options\"\n [cdkDragDisabled]=\"input.disableSort\"\n class=\"option\"\n [value]=\"item\"\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [disableSort]=\"!!input.disableSort\"\n (onUpdate)=\"updateOption($index, $event)\"\n (onDelete)=\"deleteOption($index)\"\n ></list-item>\n }\n </div>\n }\n <!-- INPUT -->\n <list-input\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [autoFocus]=\"config.autoFocus === input.name\"\n [placeholder]=\"input.placeholder\"\n (onFocus)=\"focused = $event\"\n (onInput)=\"addOption($event)\"\n ></list-input>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { DuplicateValidator, MaxCountValidator, MinCountValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputItemList extends Omit<IInput, 'value' | 'optional'> {\n readonly type: 'ITEM-LIST';\n readonly title: string;\n readonly value?: string[];\n readonly minCount?: number;\n readonly maxCount?: number;\n readonly disableSort?: boolean;\n readonly allowDuplicates?: boolean;\n readonly placeholder?: string;\n}\n\nexport class InputItemListMethods extends InputMethods<IInputItemList, string[] | null> {\n override control(input: IInputItemList, validators: ValidatorFn[]): FormControl<string[] | null> {\n if (!input.allowDuplicates) validators.push(DuplicateValidator<string>((value) => value));\n if (input.minCount) validators.push(MinCountValidator(input.minCount));\n if (input.maxCount) validators.push(MaxCountValidator(input.maxCount));\n\n const value: string[] = (Array.isArray(input.value) ? input.value : []).filter(\n (value: string) => Helper.IS.string(value) && value !== '',\n );\n return new FormControl<string[] | null>(value, validators);\n }\n\n override value(value: any, input: IInputItemList): string[] | null {\n return Array.isArray(value) && value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputMobile } from './input-mobile.interface';\n\n@Component({\n host: { selector: 'input-mobile' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-mobile.component.html',\n styleUrl: './input-mobile.component.scss',\n})\nexport class InputMobileComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputMobile = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'موبایل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON & SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span class=\"ngx-form-m3-en\">09</span>\n @if (input.showIcon) { <mat-icon>smartphone</mat-icon> }\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'00-000-0000'\"\n [inputTransformFn]=\"inputTransformFn\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMobile extends Omit<IInput, 'english'> {\n readonly type: 'MOBILE';\n readonly showIcon?: boolean;\n}\n\nexport class InputMobileMethods extends InputMethods<IInputMobile, string | null> {\n override control(input: IInputMobile, validators: ValidatorFn[]): FormControl<string | null> {\n const value: string | null = input.value && Helper.RE.MOBILE.verify(input.value) ? input.value.substring(2) : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputMobile): string | null {\n return typeof value === 'string' && Helper.RE.MOBILE.verify(`09${value}`) ? `09${value}` : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { INgxCalendarMoment, NgxCalendarService } from '@webilix/ngx-calendar-m3';\nimport { NgxHelperDatePipe } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputMoment } from './input-moment.interface';\n\n@Component({\n host: { selector: 'input-moment' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n NgxHelperDatePipe,\n ],\n templateUrl: './input-moment.component.html',\n styleUrl: './input-moment.component.scss',\n})\nexport class InputMomentComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputMoment = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n constructor(private readonly ngxCalendarService: NgxCalendarService) {}\n\n setMoment(): void {\n if (this.formControl.disabled) return;\n\n this.ngxCalendarService\n .getMoment({\n title: this.input.title || 'زمان',\n value: this.formControl.value,\n minDate: this.input.minDate,\n maxDate: this.input.maxDate,\n })\n .dialog(\n (moment: INgxCalendarMoment) => {\n this.formControl.setValue(moment.moment);\n this.formControl.markAsTouched();\n },\n () => this.formControl.markAsTouched(),\n );\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'زمان' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : setMoment(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'calendar_month' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n type=\"text\"\n matInput\n [readonly]=\"true\"\n [disabled]=\"formControl.disabled\"\n (click)=\"setMoment()\"\n [value]=\"formControl.value | ngxHelperDate : { format: input.format || 'FULL' }\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxMomentValidator, MinMomentValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMoment extends Omit<IInput, 'english' | 'value' | 'autoFocus'> {\n readonly type: 'MOMENT';\n readonly value?: Date | null;\n readonly minDate?: Date | 'NOW';\n readonly maxDate?: Date | 'NOW';\n readonly format?: string;\n}\n\nexport class InputMomentMethods extends InputMethods<IInputMoment, Date | null> {\n override control(input: IInputMoment, validators: ValidatorFn[]): FormControl<Date | null> {\n if (input.minDate) validators.push(MinMomentValidator(input.minDate));\n if (input.maxDate) validators.push(MaxMomentValidator(input.maxDate));\n\n const value: Date | null = input.value && Helper.IS.date(input.value) ? input.value : null;\n return new FormControl<Date | null>(value, validators);\n }\n\n override value(value: any, input: IInputMoment): Date | null {\n return Helper.IS.date(value) ? value : null;\n }\n}\n","import { Component, HostBinding, inject, Input, OnInit } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputMultiSelect } from './input-multi-select.interface';\n\n@Component({\n host: { selector: 'input-multi-select' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatButton,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n MatMenuModule,\n MatSelectModule,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-multi-select.component.html',\n styleUrl: './input-multi-select.component.scss',\n})\nexport class InputMultiSelectComponent implements OnInit {\n @HostBinding('style.--listHeight') listHeight!: string;\n\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputMultiSelect = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public ids: string[] = this.formControl.value || [];\n\n ngOnInit(): void {\n this.listHeight = `${this.input.listMaxHeight || 310}px`;\n }\n\n select(type: 'ALL' | 'NONE'): void {\n this.ids = type === 'NONE' ? [] : this.input.options.map((option) => option.id);\n this.formControl.setValue(this.ids.length === 0 ? null : this.ids);\n this.formControl.markAsTouched();\n }\n\n selectGroup(index: number): void {\n const group = this.input.groups?.[index];\n if (!group) return;\n\n const ids: string[] = this.input.options.map((option) => option.id);\n this.ids = group.ids.filter((id: string) => ids.includes(id));\n\n this.formControl.setValue(this.ids.length === 0 ? null : this.ids);\n this.formControl.markAsTouched();\n }\n\n toggleValue(id: string): void {\n if (!this.ids.includes(id)) this.ids.push(id);\n else this.ids = this.ids.filter((i) => i !== id);\n\n this.formControl.setValue(this.ids.length === 0 ? null : this.ids);\n this.formControl.markAsTouched();\n }\n\n getSelectValues(): string {\n if (this.formControl.disabled) return '';\n\n const ids: string[] = this.input.options.map((option) => option.id);\n this.ids = Array.isArray(this.formControl.value) ? this.formControl.value : [this.formControl.value];\n this.ids = this.ids.filter((id: string) => ids.includes(id));\n\n if (this.ids.length > 3) return `${this.ids.length} ${this.input.english ? 'Items' : 'گزینه'}`;\n\n return this.input.options\n .filter((option) => this.ids.includes(option.id))\n .map((option) => option.title)\n .join('، ');\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- LABEL -->\n @if (input.view === 'SELECT') {\n <mat-label>{{ input.title }}</mat-label>\n }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT (DEFAULT VIEW) -->\n @if (!input.view) {\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <div class=\"ngx-helper-form-m3-multi-select-input\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <div class=\"header\">\n <div class=\"title\">\n {{ input.title }}\n @if (input.minCount) { <span class=\"asterisk\">*</span> }\n </div>\n <!-- SELECT BUTTONS -->\n @if (input.selectButtons) {\n <button mat-button type=\"button\" (click)=\"select('ALL')\">همه</button>\n <button mat-button type=\"button\" (click)=\"select('NONE')\">هیچ</button>\n }\n <!-- GROUPS -->\n @if ((input.groups || []).length !== 0) {\n <button mat-button type=\"button\" [matMenuTriggerFor]=\"groupMenu\">انتخاب</button>\n <mat-menu #groupMenu=\"matMenu\" [xPosition]=\"'before'\" class=\"ngx-helper-form-m3-multi-select-input-menu\">\n @for (item of input.groups || []; track $index) {\n <button mat-menu-item (click)=\"selectGroup($index)\">{{ item.title }}</button>\n }\n </mat-menu>\n }\n </div>\n <div class=\"options\">\n @for (item of input.options; track $index) {\n <div>\n <div class=\"option\" (click)=\"toggleValue(item.id)\">\n <mat-icon [class.selected]=\"ids.includes(item.id)\">\n {{ ids.includes(item.id) ? 'check_box' : 'check_box_outline_blank' }}\n </mat-icon>\n <div class=\"message\" [class.ngx-form-m3-en]=\"!!input.english\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- INPUT (SELECT VIEW) -->\n @if (input.view === 'SELECT') {\n <mat-select\n [formControl]=\"formControl\"\n [multiple]=\"true\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [style.direction]=\"'rtl'\"\n >\n <mat-select-trigger>{{ getSelectValues() }}</mat-select-trigger>\n @for (option of input.options; track $index) {\n <mat-option [value]=\"option.id\">\n <div [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\">{{ option.title }}</div>\n </mat-option>\n }\n </mat-select>\n }\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { MaxCountValidator, MinCountValidator } from '../../validators';\n\nimport { INgxFormOption, INgxFormOptionGroup } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMultiSelect extends Omit<IInput, 'value' | 'optional' | 'autoFocus'> {\n readonly type: 'MULTI-SELECT';\n readonly title: string;\n readonly value?: string[] | null;\n readonly options: INgxFormOption[];\n readonly groups?: INgxFormOptionGroup[];\n readonly minCount?: number;\n readonly maxCount?: number;\n readonly listMaxHeight?: number;\n readonly selectButtons?: boolean;\n readonly view?: 'SELECT';\n}\n\nexport class InputMultiSelectMethods extends InputMethods<IInputMultiSelect, string[] | null> {\n override control(input: IInputMultiSelect, validators: ValidatorFn[]): FormControl<string[] | null> {\n const ids: string[] = input.options.map((option) => option.id);\n const value: string[] = (input.value || []).filter((id: string) => ids.includes(id));\n if (input.minCount) validators.push(MinCountValidator(input.minCount));\n if (input.maxCount) validators.push(MaxCountValidator(input.maxCount));\n\n return new FormControl<string[] | null>(value, validators);\n }\n\n override value(value: any, input: IInputMultiSelect): string[] | null {\n const ids: string[] = input.options.map((option) => option.id);\n value = (Array.isArray(value) ? value : []).filter((id: string) => ids.includes(id));\n return value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe } from '../../pipes';\nimport { INgxFormName } from '../../ngx-form.inputs';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputName } from './input-name.interface';\n\n@Component({\n host: { selector: 'input-name' },\n imports: [ReactiveFormsModule, MatFormField, MatInputModule, AutoCompleteDirective, AutoFocusDirective, InputErrorPipe],\n templateUrl: './input-name.component.html',\n styleUrl: './input-name.component.scss',\n})\nexport class InputNameComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputName = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public firstFormControl!: FormControl;\n public lastFormControl!: FormControl;\n\n ngOnInit(): void {\n const value: INgxFormName | null = this.formControl.value;\n const first: string | null = value?.first || null;\n const last: string | null = value?.last || null;\n\n this.firstFormControl = new FormControl<string | null>(first, this.input.optional ? [] : [Validators.required]);\n this.lastFormControl = new FormControl<string | null>(last, this.input.optional ? [] : [Validators.required]);\n\n this.formControl.statusChanges.subscribe({\n next: () => {\n if (this.formControl.disabled) {\n this.firstFormControl.disable();\n this.lastFormControl.disable();\n } else {\n this.firstFormControl.enable();\n this.lastFormControl.enable();\n }\n },\n });\n }\n\n setName(): void {\n const first: string = (this.firstFormControl.value || '').trim();\n const last: string = (this.lastFormControl.value || '').trim();\n\n const value: { first: string; last: string } | null = first !== '' && last !== '' ? { first, last } : null;\n this.formControl.setValue(value);\n }\n}\n","<!-- INPUT -->\n<input type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n<div class=\"ngx-helper-form-m3-name-input\">\n <!-- FIRST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام {{ input.title || '' }}</mat-label>\n @if (firstFormControl.invalid) { <mat-error>{{ firstFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name + '-first'\"\n [formControl]=\"firstFormControl\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (input)=\"setName()\"\n />\n </mat-form-field>\n <!-- LAST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام خانوادگی {{ input.title || '' }}</mat-label>\n @if (lastFormControl.invalid) { <mat-error>{{ lastFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input matInput type=\"text\" [name]=\"input.name + '-last'\" [formControl]=\"lastFormControl\" (input)=\"setName()\" />\n </mat-form-field>\n</div>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormName } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputName extends Omit<IInput, 'value' | 'hint' | 'english' | 'description' | 'button'> {\n readonly type: 'NAME';\n readonly value?: INgxFormName | null;\n}\n\nexport class InputNameMethods extends InputMethods<IInputName, INgxFormName | null> {\n override control(input: IInputName, validators: ValidatorFn[]): FormControl<INgxFormName | null> {\n const value: INgxFormName | null =\n input.value && Helper.IS.object(input.value) && !!input.value.first && !!input.value.last ? input.value : null;\n return new FormControl<INgxFormName | null>(value, validators);\n }\n\n override value(value: any, input: IInputName): INgxFormName | null {\n return Helper.IS.object(value) ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputNumber } from './input-number.interface';\n\n@Component({\n host: { selector: 'input-number' },\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-number.component.html',\n styleUrl: './input-number.component.scss',\n})\nexport class InputNumberComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputNumber = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public maxLength: number = 15;\n public hintText?: string;\n public isFocused: boolean = false;\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n ngOnInit(): void {\n if (!this.input.fractionDigits && !this.input.allowNegatives && this.input.maximum)\n this.maxLength = Helper.NUMBER.format(this.input.maximum, 'EN').length;\n\n this.updateHint();\n }\n\n setValue(input: string): void {\n const value: number | null = input.length === 0 ? null : +input.replace(/,/gi, '');\n this.formControl.setValue(Helper.IS.number(value) ? value : null);\n this.formControl.markAllAsTouched();\n }\n\n updateHint(): void {\n const value: number = this.formControl.value;\n if (!this.input.showText || !Helper.IS.number(value)) {\n this.hintText = undefined;\n return;\n }\n\n const isNegative: boolean = value < 0;\n this.hintText = (isNegative ? 'منفی ' : '') + Helper.NUMBER.getTitle(Math.abs(value));\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint|| (isFocused && hintText)) { <mat-hint>{{ isFocused && hintText ? hintText : input.hint }}</mat-hint> }\n\n <!-- CURRENCY -->\n @if (input.suffix) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix text\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span>{{ input.suffix }}</span>\n </span>\n }\n\n <!-- ICON -->\n @if (input.showIcon && !input.suffix) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>tag</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n class=\"ngx-form-m3-en\"\n [ngModel]=\"formControl.value?.toString() || ''\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"\n input.fractionDigits === true\n ? 'separator.3'\n : !!input.fractionDigits && input.fractionDigits > 0\n ? 'separator.' + input.fractionDigits.toString()\n : 'separator.0'\n \"\n thousandSeparator=\",\"\n decimalMarker=\".\"\n [allowNegativeNumbers]=\"!!input.allowNegatives\"\n [inputTransformFn]=\"inputTransformFn\"\n [maxlength]=\"maxLength\"\n (input)=\"setValue(numberInput.value); updateHint()\"\n [disabled]=\"formControl.disabled\"\n (focus)=\"isFocused = true; updateHint()\"\n (blur)=\"isFocused = false\"\n #numberInput\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxNumberValidator, MinNumberValidator, MultiplyOfNumberValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputNumber extends Omit<IInput, 'value' | 'english'> {\n readonly type: 'NUMBER';\n readonly title: string;\n readonly value?: number | null;\n readonly minimum?: number;\n readonly maximum?: number;\n readonly suffix?: string;\n readonly multiplyOf?: number;\n readonly allowNegatives?: boolean;\n readonly fractionDigits?: boolean | number;\n readonly showIcon?: boolean;\n readonly showText?: boolean;\n}\n\nexport class InputNumberMethods extends InputMethods<IInputNumber, number | null> {\n override control(input: IInputNumber, validators: ValidatorFn[]): FormControl<number | null> {\n if (input.minimum) validators.push(MinNumberValidator(input.minimum));\n if (input.maximum) validators.push(MaxNumberValidator(input.maximum));\n if (input.multiplyOf) validators.push(MultiplyOfNumberValidator(input.multiplyOf));\n\n const value: number | null = input.value !== undefined && Helper.IS.number(input.value) ? input.value : null;\n return new FormControl<number | null>(value, validators);\n }\n\n override value(value: any, input: IInputNumber): number | null {\n return Helper.IS.number(value) ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormOptionList } from '../../ngx-form.inputs';\nimport { INgxFormValues } from '../../ngx-form.interface';\nimport { ListInputComponent } from '../../components/list-input/list-input.component';\nimport { ListItemComponent } from '../../components/list-item/list-item.component';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputOptionList } from './input-option-list.interface';\n\n@Component({\n host: { selector: 'input-option-list' },\n imports: [\n DragDropModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n ListInputComponent,\n ListItemComponent,\n ],\n templateUrl: './input-option-list.component.html',\n styleUrl: './input-option-list.component.scss',\n})\nexport class InputOptionListComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputOptionList = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public focused: boolean = false;\n public options: INgxFormOptionList[] = [];\n\n ngOnInit(): void {\n this.options = Array.isArray(this.formControl.value) ? this.formControl.value : [];\n }\n\n setValue(): void {\n this.formControl.setValue([...this.options]);\n this.formControl.markAsTouched();\n }\n\n dropOption(event: CdkDragDrop<string>): void {\n if (event.previousIndex === event.currentIndex) return;\n\n moveItemInArray(this.options, event.previousIndex, event.currentIndex);\n this.setValue();\n }\n\n addOption(title: string): void {\n this.options.push({ id: null, title });\n this.setValue();\n }\n\n updateOption(index: number, title: string): void {\n if (!this.options[index]) return;\n\n const option: INgxFormOptionList = { id: this.options[index].id, title };\n this.options.splice(index, 1, option);\n this.setValue();\n }\n\n deleteOption(index: number): void {\n if (!this.options[index]) return;\n\n this.options.splice(index, 1);\n this.setValue();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"focused ? 'always' : 'auto'\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <!-- OPTIONS -->\n @if (options.length > 0) {\n <div\n class=\"options\"\n cdkDropList\n (cdkDropListDropped)=\"dropOption($event)\"\n [style.border-color]=\"formControl.disabled ? 'var(--outline-variant)' : 'var(--outline)'\"\n >\n @for (item of options; track $index) {\n <list-item\n cdkDrag\n cdkDragLockAxis=\"y\"\n cdkDragBoundary=\".options\"\n [cdkDragDisabled]=\"input.disableSort\"\n class=\"option\"\n [value]=\"item.title\"\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [disableSort]=\"!!input.disableSort\"\n (onUpdate)=\"updateOption($index, $event)\"\n (onDelete)=\"deleteOption($index)\"\n ></list-item>\n }\n </div>\n }\n <!-- INPUT -->\n <list-input\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [autoFocus]=\"config.autoFocus === input.name\"\n [placeholder]=\"input.placeholder\"\n (onFocus)=\"focused = $event\"\n (onInput)=\"addOption($event)\"\n ></list-input>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { DuplicateValidator, MaxCountValidator, MinCountValidator } from '../../validators';\nimport { INgxFormOptionList } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputOptionList extends Omit<IInput, 'value' | 'optional'> {\n readonly type: 'OPTION-LIST';\n readonly title: string;\n readonly value?: INgxFormOptionList[];\n readonly minCount?: number;\n readonly maxCount?: number;\n readonly disableSort?: boolean;\n readonly allowDuplicates?: boolean;\n readonly placeholder?: string;\n}\n\nexport class InputOptionListMethods extends InputMethods<IInputOptionList, INgxFormOptionList[] | null> {\n override control(input: IInputOptionList, validators: ValidatorFn[]): FormControl<INgxFormOptionList[] | null> {\n if (!input.allowDuplicates) validators.push(DuplicateValidator<IInputOptionList>((value) => value.title));\n if (input.minCount) validators.push(MinCountValidator(input.minCount));\n if (input.maxCount) validators.push(MaxCountValidator(input.maxCount));\n\n const value: INgxFormOptionList[] = (Array.isArray(input.value) ? input.value : []).filter(\n (value: INgxFormOptionList) => {\n if (!Helper.IS.object(value)) return false;\n if (value.id !== null && (!Helper.IS.string(value.id) || value.id.length === 0)) return false;\n if (!Helper.IS.string(value.title) || value.title.length === 0) return false;\n return true;\n },\n );\n return new FormControl<INgxFormOptionList[] | null>(value, validators);\n }\n\n override value(value: any, input: IInputOptionList): INgxFormOptionList[] | null {\n return Array.isArray(value) && value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputPassword } from './input-password.interface';\n\n@Component({\n host: { selector: 'input-password' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-password.component.html',\n styleUrl: './input-password.component.scss',\n})\nexport class InputPasswordComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputPassword = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public showPassword: boolean = false;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'کلمه عبور' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SHOW PASSWORD -->\n <span\n matTextSuffix\n class=\"ngx-form-m3-input-suffix click\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"showPassword = !showPassword\"\n >\n <span> </span>\n <mat-icon>{{ showPassword ? 'visibility_off' : 'visibility' }}</mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n [type]=\"showPassword ? 'text' : 'password'\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputPassword extends Omit<IInput, 'english' | 'value'> {\n readonly type: 'PASSWORD';\n readonly verify?: {\n readonly minLength: number;\n readonly forceLowerCase?: boolean;\n readonly forceUpperCase?: boolean;\n readonly forceNumber?: boolean;\n };\n}\n\nexport class InputPasswordMethods extends InputMethods<IInputPassword, string | null> {\n override control(input: IInputPassword, validators: ValidatorFn[]): FormControl<string | null> {\n if (input.verify) {\n validators.push(Validators.minLength(input.verify.minLength));\n if (input.verify.forceLowerCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, true, false, false)));\n if (input.verify.forceUpperCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, true, false)));\n if (input.verify.forceNumber)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, false, true)));\n }\n\n return new FormControl<string | null>(null, validators);\n }\n\n override value(value: any, input: IInputPassword): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputPrice } from './input-price.interface';\n\n@Component({\n host: { selector: 'input-price' },\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-price.component.html',\n styleUrl: './input-price.component.scss',\n})\nexport class InputPriceComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputPrice = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public maxLength: number = 15;\n public hintText?: string;\n public isFocused: boolean = false;\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n ngOnInit(): void {\n if (!this.input.fractionDigits && this.input.maximum)\n this.maxLength = Helper.NUMBER.format(this.input.maximum, 'EN').length;\n\n this.updateHint();\n }\n\n setValue(input: string): void {\n const value: number | null = input.length === 0 ? null : +input.replace(/,/gi, '');\n this.formControl.setValue(Helper.IS.number(value) ? value : null);\n this.formControl.markAllAsTouched();\n }\n\n updateHint(): void {\n const value: number = this.formControl.value;\n this.hintText =\n this.input.hideText || !Helper.IS.number(value)\n ? undefined\n : Helper.NUMBER.getTitle(Math.abs(value)) + (this.input.currency ? ` ${this.input.currency}` : '');\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'قیمت' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint|| (isFocused && hintText)) { <mat-hint>{{ isFocused && hintText ? hintText : input.hint }}</mat-hint> }\n\n <!-- CURRENCY -->\n @if (input.currency) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span>{{ input.currency }}</span>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n class=\"ngx-form-m3-en\"\n [ngModel]=\"formControl.value?.toString() || ''\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"\n input.fractionDigits === true\n ? 'separator.3'\n : !!input.fractionDigits && input.fractionDigits > 0\n ? 'separator.' + input.fractionDigits.toString()\n : 'separator.0'\n \"\n thousandSeparator=\",\"\n decimalMarker=\".\"\n [allowNegativeNumbers]=\"false\"\n [inputTransformFn]=\"inputTransformFn\"\n [maxlength]=\"maxLength\"\n (input)=\"setValue(numberInput.value); updateHint()\"\n [disabled]=\"formControl.disabled\"\n (focus)=\"isFocused = true; updateHint()\"\n (blur)=\"isFocused = false\"\n #numberInput\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxNumberValidator, MinNumberValidator, MultiplyOfNumberValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputPrice extends Omit<IInput, 'value' | 'english'> {\n readonly type: 'PRICE';\n readonly value?: number | null;\n readonly minimum?: number;\n readonly maximum?: number;\n readonly multiplyOf?: number;\n readonly fractionDigits?: boolean | number;\n readonly currency?: string;\n readonly hideText?: boolean;\n}\n\nexport class InputPriceMethods extends InputMethods<IInputPrice, number | null> {\n override control(input: IInputPrice, validators: ValidatorFn[]): FormControl<number | null> {\n if (input.minimum) validators.push(MinNumberValidator(input.minimum));\n if (input.maximum) validators.push(MaxNumberValidator(input.maximum));\n if (input.multiplyOf) validators.push(MultiplyOfNumberValidator(input.multiplyOf));\n\n const value: number | null = input.value !== undefined && Helper.IS.number(input.value) ? input.value : null;\n return new FormControl<number | null>(value, validators);\n }\n\n override value(value: any, input: IInputPrice): number | null {\n return Helper.IS.number(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper, IGeoRouteLength } from '@webilix/helper-library';\nimport { NgxHelperNumberPipe, NgxHelperRoute, NgxHelperRouteService } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { NgxFormRoute } from '../../ngx-form.inputs';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputRoute } from './input-route.interface';\n\n@Component({\n host: { selector: 'input-route' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxHelperNumberPipe,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-route.component.html',\n styleUrl: './input-route.component.scss',\n})\nexport class InputRouteComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputRoute = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public route: NgxFormRoute = this.formControl.value || [];\n public distance: IGeoRouteLength = Helper.GEO.routeLength(this.route);\n\n constructor(private readonly ngxHelperRouteService: NgxHelperRouteService) {}\n\n setRoute(): void {\n if (this.formControl.disabled) return;\n\n const get =\n this.route.length > 0\n ? this.ngxHelperRouteService.get(this.route, { view: this.input.center, zoom: this.input.zoom })\n : this.ngxHelperRouteService.get({ view: this.input.center, zoom: this.input.zoom });\n get.then(\n (route: NgxHelperRoute) => {\n this.route = route;\n this.formControl.setValue(route);\n this.formControl.markAsTouched();\n this.distance = Helper.GEO.routeLength(this.route);\n },\n () => this.formControl.markAsTouched(),\n );\n }\n\n resetRoute(): void {\n if (this.formControl.disabled) return;\n\n this.route = [];\n this.formControl.setValue(null);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"route.length > 0 ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'مسیر' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"route.length > 0 ? resetRoute() : setRoute(); formControl.markAsTouched()\">\n {{ route.length > 0 ? 'close' : 'call_split' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <div\n class=\"ngx-helper-form-m3-route-input\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"setRoute()\"\n >\n <div class=\"distance\">{{ route.length > 0 ? (distance.length | ngxHelperNumber) + ' متر' : ' ' }}</div>\n <div class=\"point\">{{ route.length > 0 ? (route.length | ngxHelperNumber) + ' نقطه' : ' ' }}</div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormCoordinates, NgxFormRoute } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputRoute extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'ROUTE';\n readonly value?: NgxFormRoute | null;\n readonly center?: INgxFormCoordinates;\n readonly zoom?: number;\n}\n\nexport class InputRouteMethods extends InputMethods<IInputRoute, NgxFormRoute | null> {\n override control(input: IInputRoute, validators: ValidatorFn[]): FormControl<NgxFormRoute | null> {\n const value: NgxFormRoute =\n input.value && Helper.IS.array(input.value)\n ? input.value.filter(\n (coordinates: INgxFormCoordinates) =>\n Helper.IS.object(coordinates) &&\n Helper.IS.number(coordinates.latitude) &&\n Helper.IS.number(coordinates.longitude),\n )\n : [];\n return new FormControl<NgxFormRoute | null>(value.length > 1 ? value : [], validators);\n }\n\n override value(value: any, input: IInputRoute): NgxFormRoute | null {\n return Helper.IS.array(value) && value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputSelect } from './input-select.interface';\n\n@Component({\n host: { selector: 'input-select' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n MatSelectModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-select.component.html',\n styleUrl: './input-select.component.scss',\n})\nexport class InputSelectComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputSelect = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public searchQuery: string = '';\n\n getTitle(): string {\n return this.input.options.find((option) => option.id === this.formControl.value)?.title || '';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <mat-select\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [style.direction]=\"'rtl'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (closed)=\"searchInput.value = ''; searchQuery = ''\"\n >\n <!-- SEARCH -->\n <div\n class=\"ngx-helper-form-m3-select-input\"\n [style.display]=\"!input.hideSearch && input.options.length > 10 ? '' : 'none'\"\n >\n <input\n type=\"text\"\n [class.ngx-form-m3-en]=\"input.english\"\n placeholder=\"جستجو\"\n (input)=\"searchQuery = searchInput.value.trim()\"\n #searchInput\n />\n </div>\n\n <!-- OPTIONAL -->\n @if (!!input.optional) { <mat-option></mat-option> }\n\n <!-- TRIGGER -->\n <mat-select-trigger>\n <div [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\">{{ getTitle() }}</div>\n </mat-select-trigger>\n\n <!-- OPTIONS -->\n @for (option of input.options; track $index) {\n <!-- CHECK SEARCH QUERY -->\n @if (!searchQuery || option.title.includes(searchQuery)) {\n <mat-option [value]=\"option.id\">\n <div [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\">{{ option.title }}</div>\n </mat-option>\n } }\n </mat-select>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { INgxFormOption } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputSelect extends IInput {\n readonly type: 'SELECT';\n readonly title: string;\n readonly options: INgxFormOption[];\n readonly hideSearch?: boolean;\n}\n\nexport class InputSelectMethods extends InputMethods<IInputSelect, string | null> {\n override control(input: IInputSelect, validators: ValidatorFn[]): FormControl<string | null> {\n const ids: string[] = input.options.map((option) => option.id);\n\n let value: string | null = input.value && ids.includes(input.value) ? input.value : null;\n if (value === null && ids.length === 1 && !input.optional) value = ids[0];\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputSelect): string | null {\n return value && input.options.find((option) => option.id === value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputText } from './input-text.interface';\n\n@Component({\n host: { selector: 'input-text' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-text.component.html',\n styleUrl: './input-text.component.scss',\n})\nexport class InputTextComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputText = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [maxLength]=\"input.maxLength || 524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [readonly]=\"input.readonly\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { LengthValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputText extends IInput {\n readonly type: 'TEXT';\n readonly title: string;\n readonly minLength?: number;\n readonly maxLength?: number;\n readonly readonly?: boolean;\n}\n\nexport class InputTextMethods extends InputMethods<IInputText, string | null> {\n override control(input: IInputText, validators: ValidatorFn[]): FormControl<string | null> {\n const minLength: number | null = input.minLength && input.minLength > 0 ? input.minLength : null;\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (minLength && maxLength && minLength === maxLength) validators.push(LengthValidator(minLength));\n else {\n if (minLength && minLength > 0) validators.push(Validators.minLength(minLength));\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n }\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputText): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { DecimalPipe, NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective, AutoHeightDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputTextarea } from './input-textarea.interface';\n\n@Component({\n host: { selector: 'input-textarea' },\n imports: [\n DecimalPipe,\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoFocusDirective,\n AutoHeightDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-textarea.component.html',\n styleUrl: './input-textarea.component.scss',\n})\nexport class InputTextareaComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputTextarea = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public isFocused: boolean = false;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- COUNTER -->\n @if (isFocused && input.counter) {\n <mat-hint [align]=\"'end'\">\n {{ formControl.value?.length || 0 | number }}{{ input.maxLength ? ' از ' + (input.maxLength | number) : '' }}\n </mat-hint>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <textarea\n matInput\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [style.height]=\"input.height ? input.height.toString() + 'px' : '75px'\"\n [style.resize]=\"'none'\"\n [maxLength]=\"input.maxLength || 524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [AutoHeightDirective]=\"!!input.autoHeight\"\n [minHeight]=\"input.height || 75\"\n [maxHeight]=\"input.maxHeight || 0\"\n (focus)=\"isFocused = true\"\n (blur)=\"isFocused = false\"\n ></textarea>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputTextarea extends IInput {\n readonly type: 'TEXTAREA';\n readonly title: string;\n readonly height?: number;\n readonly autoHeight?: boolean;\n readonly maxHeight?: number;\n readonly maxLength?: number;\n readonly counter?: boolean;\n}\n\nexport class InputTextareaMethods extends InputMethods<IInputTextarea, string | null> {\n override control(input: IInputTextarea, validators: ValidatorFn[]): FormControl<string | null> {\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputTextarea): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputUrl } from './input-url.interface';\n\n@Component({\n host: { selector: 'input-url' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-url.component.html',\n styleUrl: './input-url.component.scss',\n})\nexport class InputUrlComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputUrl = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'آدرس سایت' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n @if (input.showIcon) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>link</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputUrl extends Omit<IInput, 'english'> {\n readonly type: 'URL';\n readonly showIcon?: boolean;\n}\n\nexport class InputUrlMethods extends InputMethods<IInputUrl, string | null> {\n override control(input: IInputUrl, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.URL.get(true)));\n\n const value: string | null = input.value && Helper.RE.URL.verify(input.value, true) ? input.value : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputUrl): string | null {\n return typeof value === 'string' && Helper.RE.URL.verify(value, true) ? value : null;\n }\n}\n","import { Component, Injector, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { INgxFormValues, NgxFormInputs } from '../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE, InputInfo } from '.';\n\n@Component({\n selector: 'form-input',\n imports: [NgComponentOutlet],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n})\nexport class InputComponent implements OnInit, OnChanges {\n @Input({ required: true }) formGroup!: FormGroup;\n @Input({ required: true }) input!: NgxFormInputs;\n @Input({ required: true }) config!: IInputConfig;\n @Input({ required: true }) values!: INgxFormValues;\n\n public inputInfo = InputInfo;\n public injector!: Injector;\n public isButtonDisabled!: boolean;\n\n ngOnInit(): void {\n const formControl: FormControl = this.formGroup.get(this.input.name) as FormControl;\n this.injector = Injector.create({\n providers: [\n { provide: INPUT_CONTROL, useValue: formControl },\n { provide: INPUT_TYPE, useValue: this.input },\n { provide: INPUT_CONFIG, useValue: this.config },\n ],\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const formControl = this.injector?.get(INPUT_CONTROL);\n\n this.isButtonDisabled =\n 'button' in this.input &&\n !!this.input.button &&\n (formControl?.disabled || !!this.input.button.disableOn?.(this.values));\n }\n}\n","<ng-container\n *ngComponentOutlet=\"inputInfo[input.type].component; inputs: { values, isButtonDisabled }; injector: injector\"\n></ng-container>\n","import { ComponentType } from '@angular/cdk/portal';\n\nimport { NgxFormInputs } from '../ngx-form.interface';\n\nimport { InputMethods } from './input.interface';\nimport {\n InputAutoCompleteComponent,\n InputAutoCompleteMethods,\n InputBankCardComponent,\n InputBankCardMethods,\n InputBankShebaComponent,\n InputBankShebaMethods,\n InputCheckboxComponent,\n InputCheckboxMethods,\n InputColorComponent,\n InputColorMethods,\n InputComponentComponent,\n InputComponentMethods,\n InputCoordinatesComponent,\n InputCoordinatesMethods,\n InputDateComponent,\n InputDateMethods,\n InputEmailComponent,\n InputEmailMethods,\n InputFileComponent,\n InputFileMethods,\n InputIconComponent,\n InputIconMethods,\n InputIpComponent,\n InputIpMethods,\n InputItemListComponent,\n InputItemListMethods,\n InputMobileComponent,\n InputMobileMethods,\n InputMomentComponent,\n InputMomentMethods,\n InputMultiSelectComponent,\n InputMultiSelectMethods,\n InputNameComponent,\n InputNameMethods,\n InputNumberComponent,\n InputNumberMethods,\n InputOptionListComponent,\n InputOptionListMethods,\n InputPasswordComponent,\n InputPasswordMethods,\n InputPriceComponent,\n InputPriceMethods,\n InputRouteComponent,\n InputRouteMethods,\n InputSelectComponent,\n InputSelectMethods,\n InputTextareaComponent,\n InputTextareaMethods,\n InputTextComponent,\n InputTextMethods,\n InputUrlComponent,\n InputUrlMethods,\n} from '.';\n\nexport const InputInfo: {\n [key in NgxFormInputs['type']]: {\n readonly title: string;\n readonly methods: InputMethods<any, any>;\n readonly component: ComponentType<any>;\n };\n} = {\n 'AUTO-COMPLETE': {\n title: 'لیست تکمیلی',\n methods: new InputAutoCompleteMethods(),\n component: InputAutoCompleteComponent,\n },\n 'BANK-CARD': { title: 'شماره کارت بانکی', methods: new InputBankCardMethods(), component: InputBankCardComponent },\n 'BANK-SHEBA': { title: 'شماره شبا', methods: new InputBankShebaMethods(), component: InputBankShebaComponent },\n CHECKBOX: { title: 'یک انتخابی', methods: new InputCheckboxMethods(), component: InputCheckboxComponent },\n COLOR: { title: 'رنگ', methods: new InputColorMethods(), component: InputColorComponent },\n COMPONENT: { title: 'کامپوننت', methods: new InputComponentMethods(), component: InputComponentComponent },\n COORDINATES: { title: 'موقعیت جغرافیایی', methods: new InputCoordinatesMethods(), component: InputCoordinatesComponent },\n DATE: { title: 'تاریخ', methods: new InputDateMethods(), component: InputDateComponent },\n EMAIL: { title: 'ایمیل', methods: new InputEmailMethods(), component: InputEmailComponent },\n FILE: { title: 'فایل', methods: new InputFileMethods(), component: InputFileComponent },\n ICON: { title: 'آیکون', methods: new InputIconMethods(), component: InputIconComponent },\n IP: { title: 'آدرس آیپی', methods: new InputIpMethods(), component: InputIpComponent },\n 'ITEM-LIST': { title: 'لیست مقادیر', methods: new InputItemListMethods(), component: InputItemListComponent },\n MOBILE: { title: 'موبایل', methods: new InputMobileMethods(), component: InputMobileComponent },\n MOMENT: { title: 'زمان', methods: new InputMomentMethods(), component: InputMomentComponent },\n 'MULTI-SELECT': { title: 'چند انتخابی', methods: new InputMultiSelectMethods(), component: InputMultiSelectComponent },\n NAME: { title: 'نام و نام خانوادگی', methods: new InputNameMethods(), component: InputNameComponent },\n NUMBER: { title: 'مقدار عددی', methods: new InputNumberMethods(), component: InputNumberComponent },\n 'OPTION-LIST': { title: 'لیست گزینهها', methods: new InputOptionListMethods(), component: InputOptionListComponent },\n PASSWORD: { title: 'کلمه عبور', methods: new InputPasswordMethods(), component: InputPasswordComponent },\n PRICE: { title: 'قیمت', methods: new InputPriceMethods(), component: InputPriceComponent },\n ROUTE: { title: 'مسیر', methods: new InputRouteMethods(), component: InputRouteComponent },\n SELECT: { title: 'لیست کشویی', methods: new InputSelectMethods(), component: InputSelectComponent },\n TEXT: { title: 'متن یک خطی', methods: new InputTextMethods(), component: InputTextComponent },\n TEXTAREA: { title: 'متن چند خطی', methods: new InputTextareaMethods(), component: InputTextareaComponent },\n URL: { title: 'آدرس سایت', methods: new InputUrlMethods(), component: InputUrlComponent },\n};\n","import { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\n\nexport interface INgxFormConfig {\n readonly mobileWidth: number;\n readonly submitTimeout: number;\n readonly appearance: MatFormFieldAppearance;\n}\n\nexport const NGX_FORM_CONFIG = new InjectionToken<Partial<INgxFormConfig>>('NGX-FORM-CONFIG');\n\nexport const provideNgxFormConfig = (config: Partial<INgxFormConfig>): EnvironmentProviders => {\n const providers: Provider[] = [{ provide: NGX_FORM_CONFIG, useValue: config }];\n\n return makeEnvironmentProviders(providers);\n};\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormGroup, NgForm, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { FormErrorDirective } from './directives';\nimport { IInputConfig, InputComponent, InputInfo } from './inputs';\n\nimport { INgxFormConfig, NGX_FORM_CONFIG } from './ngx-form.config';\nimport { INgxForm, INgxFormInit, INgxFormValues, NgxFormInputs } from './ngx-form.interface';\n\ninterface IRow {\n header: string;\n inputs: NgxFormInputs[];\n flex: number[];\n}\n\ninterface IColumn {\n header: string;\n rows: IRow[];\n}\n\ninterface ISection {\n header: string;\n columns: IColumn[];\n flex: number[];\n}\n\n@Component({\n selector: 'ngx-form',\n imports: [ReactiveFormsModule, MatButton, InputComponent, FormErrorDirective],\n templateUrl: './ngx-form.component.html',\n styleUrl: './ngx-form.component.scss',\n})\nexport class NgxFormComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('formObject') ngForm?: NgForm;\n\n @HostListener('window:resize', ['$event'])\n onResize = (event: any): void => this.setSize();\n\n @Input({ required: true }) ngxForm!: INgxForm;\n @Output() onInit: EventEmitter<INgxFormInit> = new EventEmitter<INgxFormInit>();\n @Output() onSubmit: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n @Output() onChange: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n\n protected formGroup!: FormGroup;\n\n protected sections: ISection[] = [];\n protected hiddenInputs: string[] = [];\n protected values: INgxFormValues = {};\n protected lastValues: INgxFormValues = {};\n protected lastSubmit?: Date;\n\n protected isMobile: boolean = false;\n protected inputConfig!: IInputConfig;\n\n constructor(\n private readonly router: Router,\n @Optional() @Inject(NGX_FORM_CONFIG) private readonly config?: Partial<INgxFormConfig>,\n ) {}\n\n ngOnInit(): void {\n this.formGroup = new FormGroup({});\n const inputs: NgxFormInputs[] = this.getInputs();\n\n // SET FORM GROUP INPUTS\n inputs.forEach((input: NgxFormInputs) => this.setInput(input));\n\n // CHECK AUTO FOCUS\n let autoFocus: string | undefined = undefined;\n inputs.forEach((input: NgxFormInputs) => {\n if (!('autoFocus' in input) || !input.autoFocus || autoFocus) return;\n if (!input.disableOn && !input.hideOn) autoFocus = input.name;\n });\n\n // INPUT CONFIG\n this.inputConfig = {\n appearance: this.ngxForm.appearance || this.config?.appearance || 'fill',\n autoFocus,\n };\n\n // UPDATE VALUES\n if (this.ngxForm.updateValues) this.updateValues([]);\n\n // REGISTER VALUE CHANGE\n this.formGroup.valueChanges.subscribe({\n next: () => {\n const changedInputs: string[] = [];\n [...Object.keys(this.lastValues), ...Object.keys(this.formGroup.value)]\n .filter((key: string, index: number, arr: string[]) => arr.indexOf(key) === index)\n .forEach((key: string) => {\n if (this.formGroup.value[key] !== this.lastValues[key]) changedInputs.push(key);\n });\n if (changedInputs.length === 0) return;\n this.lastValues = { ...this.formGroup.value };\n\n this.checkInputs();\n\n if (this.ngxForm.updateValues) {\n this.updateValues(changedInputs);\n this.lastValues = { ...this.formGroup.value };\n }\n\n this.values = this.getValues();\n this.onChange.next(this.values);\n },\n });\n\n this.checkInputs();\n this.setSize();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.sections = [];\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: inputs.columns.map((column) => {\n return {\n header: column.header || '',\n rows: column.rows.map((row) =>\n 'inputs' in row\n ? {\n header: row.header || '',\n inputs: row.inputs,\n flex: row.inputs.map((_, i) => row.flex?.[i] || 1),\n }\n : 'input' in row\n ? { header: row.header, inputs: [row.input], flex: [1] }\n : { header: '', inputs: [row], flex: [1] },\n ),\n flex: [],\n };\n }),\n flex: inputs.columns.map((_, c) => inputs.flex?.[c] || 1),\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [\n {\n header: '',\n rows: [\n {\n header: '',\n inputs: inputs.inputs,\n flex: inputs.inputs.map((_, i) => inputs.flex?.[i] || 1),\n },\n ],\n },\n ],\n flex: [1],\n });\n return;\n }\n\n // HEADER\n if ('input' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs.input], flex: [1] }] }],\n flex: [1],\n });\n return;\n }\n\n // INPUT\n this.sections.push({\n header: '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs], flex: [1] }] }],\n flex: [1],\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInit.next({ formGroup: this.formGroup, ngForm: this.ngForm });\n }\n\n getInputs(): NgxFormInputs[] {\n const list: NgxFormInputs[] = [];\n\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n inputs.columns.forEach((column) => {\n column.rows.forEach((row) => {\n if ('inputs' in row) list.push(...row.inputs);\n else list.push('input' in row ? row.input : row);\n });\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) list.push(...inputs.inputs);\n else list.push('input' in inputs ? inputs.input : inputs);\n });\n\n return list;\n }\n\n getValues(): INgxFormValues {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = {};\n\n const getValue = (input: NgxFormInputs): any => {\n if (this.hiddenInputs.includes(input.name)) return null;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput || formInput.disabled || formInput.errors !== null) return null;\n\n const value: any = InputInfo[input.type].methods.value(formInput.value, input);\n return value;\n };\n\n inputs.forEach((input: NgxFormInputs) => {\n values[input.name] = getValue(input);\n });\n\n return values;\n }\n\n updateValues(changedInputs: string[]): void {\n if (!this.ngxForm.updateValues) return;\n\n const values: INgxFormValues = this.getValues();\n const changes: { [key: string]: any } = this.ngxForm.updateValues(values);\n\n Object.keys(changes)\n .filter((key: string) => !changedInputs.includes(key))\n .forEach((key: string) => {\n const input = this.getInputs().find((i) => i.name === key);\n if (!input) return;\n\n const formInput = this.formGroup.get(key);\n if (!formInput) return;\n\n const value = InputInfo[input.type].methods.value(changes[key], input);\n formInput.setValue(value);\n });\n }\n\n setInput(input: NgxFormInputs): void {\n const name: string = input.name;\n const readonly: boolean = 'readonly' in input && !!input.readonly;\n const validators: ValidatorFn[] =\n input.type === 'CHECKBOX' ||\n input.type === 'ITEM-LIST' ||\n input.type === 'MULTI-SELECT' ||\n input.type === 'OPTION-LIST' ||\n input.optional ||\n readonly\n ? []\n : [Validators.required];\n\n this.formGroup.setControl(name, InputInfo[input.type].methods.control(input, validators));\n }\n\n checkInputs(): void {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = this.getValues();\n\n // CHECK DISABLED INPUTS\n inputs.forEach((input: NgxFormInputs) => {\n if (!('disableOn' in input) || !input.disableOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const disabled: boolean = input.disableOn(values);\n disabled ? formInput.disable() : formInput.enable();\n });\n\n // CHECK HIDDEN INPUTS\n this.hiddenInputs = [];\n inputs.forEach((input: NgxFormInputs) => {\n if (!('hideOn' in input) || !input.hideOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const hidden: boolean = input.hideOn(values);\n hidden ? formInput.disable() : formInput.enable();\n if (hidden) this.hiddenInputs.push(input.name);\n });\n }\n\n checkSubmit(): void {\n this.formGroup.markAllAsTouched();\n if (this.formGroup.invalid) return;\n\n const submitTimeout = this.config?.submitTimeout;\n if (!!submitTimeout && this.lastSubmit) {\n const timeout: number = submitTimeout * 1000;\n const duration: number = new Date().getTime() - this.lastSubmit.getTime();\n if (duration < timeout) return;\n }\n\n this.onSubmit.next(this.getValues());\n this.lastSubmit = new Date();\n }\n\n setSize(): void {\n const mobileWidth: number = this.config?.mobileWidth || 600;\n this.isMobile = this.ngxForm.mobileView || window.innerWidth <= mobileWidth;\n }\n\n showSection(section: ISection): boolean {\n for (let c = 0; c < section.columns.length; c++) {\n if (this.showColumn(section.columns[c])) return true;\n }\n\n return false;\n }\n\n showColumn(column: IColumn): boolean {\n for (let r = 0; r < column.rows.length; r++) {\n if (this.showRow(column.rows[r])) return true;\n }\n\n return false;\n }\n\n showRow(row: IRow): boolean {\n for (let i = 0; i < row.inputs.length; i++) {\n if (this.showInput(row.inputs[i])) return true;\n }\n\n return false;\n }\n\n showInput(input: NgxFormInputs): boolean {\n return !this.hiddenInputs.includes(input.name);\n }\n\n onClick(action: string[] | (() => void)): void {\n if (typeof action === 'function') action();\n else this.router.navigate(action);\n }\n}\n","<form [formGroup]=\"formGroup\" (ngSubmit)=\"checkSubmit()\" dir=\"rtl\" class=\"ngx-form\" #formObject=\"ngForm\">\n <section class=\"sections\">\n @for (section of sections; track $index) {\n <!-- CHECK SECTION VIEW -->\n @if (showSection(section)) {\n <!-- SECTION HEADER -->\n @if (section.header) {\n <div class=\"ngx-form-m3-header section-header\">{{ section.header }}</div>\n }\n\n <div class=\"section\" [class.section-mobile]=\"isMobile\">\n <!-- SECTIONS -->\n @for (column of section.columns; track $index) {\n <!-- CHECK COLUMN VIEW -->\n @if (showColumn(column)) {\n <div class=\"column\" [style.flex]=\"section.flex[$index]\">\n <!-- COLUMN HEADER -->\n @if (column.header) {\n <div class=\"ngx-form-m3-header column-header\">{{ column.header }}</div>\n }\n\n <!-- ROWS -->\n @for (row of column.rows; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showRow(row)) {\n <!-- ROW HEADER -->\n @if (row.header) {\n <div class=\"ngx-form-m3-header row-header\">{{ row.header }}</div>\n }\n\n <div class=\"inputs\">\n <!-- INPUTS -->\n @for (input of row.inputs; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showInput(input)) {\n <div class=\"input\" [style.flex]=\"row.flex[$index]\">\n <form-input\n [formGroup]=\"formGroup\"\n [input]=\"input\"\n [config]=\"inputConfig\"\n [values]=\"values\"\n ></form-input>\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </section>\n\n <section class=\"ngx-form-m3-form-buttons\" [class.mobile-view]=\"isMobile\">\n <!-- EXTRA BUTTONS -->\n @for (item of (ngxForm.buttons || []); track $index) {\n <button type=\"button\" mat-stroked-button (click)=\"onClick(item.action)\">{{ item.title }}</button>\n }\n <!-- SUBMIT BUTTON -->\n <button type=\"submit\" mat-flat-button>{{ ngxForm.submit }}</button>\n </section>\n</form>\n","/*\n * Public API Surface of ngx-form-m3\n */\n\nexport * from './lib/ngx-form.component';\nexport * from './lib/ngx-form.config';\nexport * from './lib/ngx-form.inputs';\nexport * from './lib/ngx-form.interface';\n\nexport type { IInputComponent } from './lib/inputs/component/input-component.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webilix-ngx-form-m3.mjs","sources":["../../../ngx-form-m3/src/lib/directives/auto-complete.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-focus.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-height.directive.ts","../../../ngx-form-m3/src/lib/directives/form-error.directive.ts","../../../ngx-form-m3/src/lib/pipes/input-error.pipe.ts","../../../ngx-form-m3/src/lib/pipes/multi-line.pipe.ts","../../../ngx-form-m3/src/lib/inputs/input.interface.ts","../../../ngx-form-m3/src/lib/inputs/auto-complete/input-auto-complete.component.ts","../../../ngx-form-m3/src/lib/inputs/auto-complete/input-auto-complete.component.html","../../../ngx-form-m3/src/lib/inputs/auto-complete/input-auto-complete.interface.ts","../../../ngx-form-m3/src/lib/inputs/bank-card/input-bank-card.component.ts","../../../ngx-form-m3/src/lib/inputs/bank-card/input-bank-card.component.html","../../../ngx-form-m3/src/lib/validators/bank/card.validator.ts","../../../ngx-form-m3/src/lib/validators/bank/sheba.validator.ts","../../../ngx-form-m3/src/lib/validators/count/max-count.validator.ts","../../../ngx-form-m3/src/lib/validators/count/min-count.validator.ts","../../../ngx-form-m3/src/lib/validators/date/max-date.validator.ts","../../../ngx-form-m3/src/lib/validators/date/min-date.validator.ts","../../../ngx-form-m3/src/lib/validators/moment/max-moment.validator.ts","../../../ngx-form-m3/src/lib/validators/moment/min-moment.validator.ts","../../../ngx-form-m3/src/lib/validators/number/max-number.validator.ts","../../../ngx-form-m3/src/lib/validators/number/min-number.validator.ts","../../../ngx-form-m3/src/lib/validators/number/multiply-of.validator.ts","../../../ngx-form-m3/src/lib/validators/duplicate.validator.ts","../../../ngx-form-m3/src/lib/validators/length.validator.ts","../../../ngx-form-m3/src/lib/inputs/bank-card/input-bank-card.interface.ts","../../../ngx-form-m3/src/lib/inputs/bank-sheba/input-bank-sheba.component.ts","../../../ngx-form-m3/src/lib/inputs/bank-sheba/input-bank-sheba.component.html","../../../ngx-form-m3/src/lib/inputs/bank-sheba/input-bank-sheba.interface.ts","../../../ngx-form-m3/src/lib/inputs/checkbox/input-checkbox.component.ts","../../../ngx-form-m3/src/lib/inputs/checkbox/input-checkbox.component.html","../../../ngx-form-m3/src/lib/inputs/checkbox/input-checkbox.interface.ts","../../../ngx-form-m3/src/lib/inputs/color/input-color.component.ts","../../../ngx-form-m3/src/lib/inputs/color/input-color.component.html","../../../ngx-form-m3/src/lib/inputs/color/input-color.interface.ts","../../../ngx-form-m3/src/lib/ngx-form.interface.ts","../../../ngx-form-m3/src/lib/inputs/component/input-component.component.ts","../../../ngx-form-m3/src/lib/inputs/component/input-component.component.html","../../../ngx-form-m3/src/lib/inputs/component/input-component.interface.ts","../../../ngx-form-m3/src/lib/inputs/coordinates/input-coordinates.component.ts","../../../ngx-form-m3/src/lib/inputs/coordinates/input-coordinates.component.html","../../../ngx-form-m3/src/lib/inputs/coordinates/input-coordinates.interface.ts","../../../ngx-form-m3/src/lib/inputs/date/input-date.component.ts","../../../ngx-form-m3/src/lib/inputs/date/input-date.component.html","../../../ngx-form-m3/src/lib/inputs/date/input-date.interface.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.html","../../../ngx-form-m3/src/lib/inputs/email/input-email.interface.ts","../../../ngx-form-m3/src/lib/inputs/file/input-file.component.ts","../../../ngx-form-m3/src/lib/inputs/file/input-file.component.html","../../../ngx-form-m3/src/lib/inputs/file/input-file.interface.ts","../../../ngx-form-m3/src/lib/inputs/icon/input-icon.component.ts","../../../ngx-form-m3/src/lib/inputs/icon/input-icon.component.html","../../../ngx-form-m3/src/lib/inputs/icon/input-icon.interface.ts","../../../ngx-form-m3/src/lib/inputs/ip/input-ip.component.ts","../../../ngx-form-m3/src/lib/inputs/ip/input-ip.component.html","../../../ngx-form-m3/src/lib/inputs/ip/input-ip.interface.ts","../../../ngx-form-m3/src/lib/components/list-input/list-input.component.ts","../../../ngx-form-m3/src/lib/components/list-input/list-input.component.html","../../../ngx-form-m3/src/lib/components/list-item/list-item.component.ts","../../../ngx-form-m3/src/lib/components/list-item/list-item.component.html","../../../ngx-form-m3/src/lib/inputs/item-list/input-item-list.component.ts","../../../ngx-form-m3/src/lib/inputs/item-list/input-item-list.component.html","../../../ngx-form-m3/src/lib/inputs/item-list/input-item-list.interface.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.html","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.interface.ts","../../../ngx-form-m3/src/lib/inputs/moment/input-moment.component.ts","../../../ngx-form-m3/src/lib/inputs/moment/input-moment.component.html","../../../ngx-form-m3/src/lib/inputs/moment/input-moment.interface.ts","../../../ngx-form-m3/src/lib/inputs/multi-select/input-multi-select.component.ts","../../../ngx-form-m3/src/lib/inputs/multi-select/input-multi-select.component.html","../../../ngx-form-m3/src/lib/inputs/multi-select/input-multi-select.interface.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.html","../../../ngx-form-m3/src/lib/inputs/name/input-name.interface.ts","../../../ngx-form-m3/src/lib/inputs/number/input-number.component.ts","../../../ngx-form-m3/src/lib/inputs/number/input-number.component.html","../../../ngx-form-m3/src/lib/inputs/number/input-number.interface.ts","../../../ngx-form-m3/src/lib/inputs/option-list/input-option-list.component.ts","../../../ngx-form-m3/src/lib/inputs/option-list/input-option-list.component.html","../../../ngx-form-m3/src/lib/inputs/option-list/input-option-list.interface.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.html","../../../ngx-form-m3/src/lib/inputs/password/input-password.interface.ts","../../../ngx-form-m3/src/lib/inputs/price/input-price.component.ts","../../../ngx-form-m3/src/lib/inputs/price/input-price.component.html","../../../ngx-form-m3/src/lib/inputs/price/input-price.interface.ts","../../../ngx-form-m3/src/lib/inputs/route/input-route.component.ts","../../../ngx-form-m3/src/lib/inputs/route/input-route.component.html","../../../ngx-form-m3/src/lib/inputs/route/input-route.interface.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.html","../../../ngx-form-m3/src/lib/inputs/select/input-select.interface.ts","../../../ngx-form-m3/src/lib/inputs/tag/input-tag.component.ts","../../../ngx-form-m3/src/lib/inputs/tag/input-tag.component.html","../../../ngx-form-m3/src/lib/inputs/tag/input-tag.interface.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.html","../../../ngx-form-m3/src/lib/inputs/text/input-text.interface.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.html","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.interface.ts","../../../ngx-form-m3/src/lib/inputs/url/input-url.component.ts","../../../ngx-form-m3/src/lib/inputs/url/input-url.component.html","../../../ngx-form-m3/src/lib/inputs/url/input-url.interface.ts","../../../ngx-form-m3/src/lib/inputs/input.component.ts","../../../ngx-form-m3/src/lib/inputs/input.component.html","../../../ngx-form-m3/src/lib/inputs/input.info.ts","../../../ngx-form-m3/src/lib/ngx-form.config.ts","../../../ngx-form-m3/src/lib/ngx-form.component.ts","../../../ngx-form-m3/src/lib/ngx-form.component.html","../../../ngx-form-m3/src/public-api.ts","../../../ngx-form-m3/src/webilix-ngx-form-m3.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({ selector: 'input[type=\"text\"]' })\nexport class AutoCompleteDirective {\n @HostBinding('attr.autocomplete') autocomplete = 'one-time-code';\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({ selector: '[AutoFocusDirective]' })\nexport class AutoFocusDirective implements AfterViewInit {\n @Input({ required: true }) public AutoFocusDirective!: boolean;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n if (!this.AutoFocusDirective || !this.elementRef) return;\n\n const input: HTMLInputElement = this.elementRef.nativeElement as HTMLInputElement;\n if (!input) return;\n\n setTimeout(() => input.focus && input.focus(), 0);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({ selector: '[AutoHeightDirective]' })\nexport class AutoHeightDirective {\n @Input({ required: true }) public AutoHeightDirective!: boolean;\n @Input({ required: true }) public minHeight!: number;\n @Input({ required: false }) public maxHeight: number = 0;\n\n private _focused: boolean = false;\n @HostListener('focus')\n private focus(): void {\n this._focused = true;\n }\n @HostListener('blur')\n private blur(): void {\n this._focused = false;\n }\n\n constructor(private elementRef: ElementRef, private renderer2: Renderer2) {}\n\n public ngAfterViewInit(): void {\n this.resize(true);\n }\n\n @HostListener('input')\n private resize(forced?: boolean): void {\n if (this.AutoHeightDirective !== true || (!forced && !this._focused)) return;\n\n const textarea = this.elementRef.nativeElement as HTMLTextAreaElement;\n const borderHeight = textarea.offsetHeight - textarea.clientHeight;\n this.setHeight('auto');\n\n let height: number = textarea.scrollHeight + borderHeight;\n if (this.minHeight && this.minHeight > height) height = this.minHeight;\n if (this.maxHeight && this.maxHeight < height) height = this.maxHeight;\n this.setHeight(`${height}px`);\n }\n\n private setHeight(value: string): void {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'height', value);\n this.renderer2.setStyle(this.elementRef.nativeElement, 'overflow', 'auto');\n }\n}\n","import { Directive, ElementRef, HostListener, Optional } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n@Directive({ selector: 'form.ngx-form' })\nexport class FormErrorDirective {\n @HostListener('submit') onSubmit(): void {\n setTimeout(() => {\n const invalidControl: HTMLElement = this.elementRef.nativeElement.querySelector('.mat-form-field-invalid');\n if (invalidControl) return this.scrollToElement(invalidControl);\n }, 150);\n }\n\n constructor(private elementRef: ElementRef, @Optional() private formGroupDirective: FormGroupDirective) {}\n\n private getElementTop(element: HTMLElement): number {\n return element.getBoundingClientRect().top + window.scrollY - 100;\n }\n\n private scrollToElement(element: HTMLElement): void {\n window.scroll({ top: this.getElementTop(element), behavior: 'smooth' });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'InputErrorPipe' })\nexport class InputErrorPipe implements PipeTransform {\n transform(errors: ValidationErrors | null | undefined, type: string): string {\n if (errors === null || errors === undefined) return '';\n\n const keys: string[] = Object.keys(errors);\n if (keys.length === 0) return '';\n\n const error: string = keys[0];\n const value: any = errors[error];\n\n switch (error) {\n case 'component':\n return value;\n\n case 'required':\n return 'مقدار الزامی است.';\n\n case 'length':\n return `مقدار باید داری ${Helper.NUMBER.format(value)} کاراکتر باشد.`;\n\n case 'minimum':\n return `مقدار نمیتواند کوچکتر از ${Helper.NUMBER.format(value)} باشد.`;\n\n case 'maximum':\n return `مقدار نمیتواند بزرگتر از ${Helper.NUMBER.format(value)} باشد.`;\n\n case 'multiplyOf':\n return `مقدار باید مضربی از ${Helper.NUMBER.format(value)} باشد.`;\n\n case 'minlength':\n return `مقدار باید حداقل داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'maxlength':\n return `مقدار میتواند حداکثر داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'mindate':\n return `تاریخ باید برابر یا بعد از ${value} انتخاب شده باشد.`;\n\n case 'maxdate':\n return `تاریخ باید برابر یا قبل از ${value} انتخاب شده باشد.`;\n\n case 'minmoment':\n return `زمان باید برابر یا بعد از ${value} انتخاب شده باشد.`;\n\n case 'maxmoment':\n return `زمان باید برابر یا قبل از ${value} انتخاب شده باشد.`;\n\n case 'mincount':\n return `انتخاب حداقل ${Helper.NUMBER.format(value)} گزینه الزامی است.`;\n\n case 'maxcount':\n return `امکان انتخاب بیشتر از ${Helper.NUMBER.format(value)} گزینه وجود ندارد.`;\n\n case 'duplicate':\n return 'امکان انتخاب مقادیر تکراری وجود ندارد.';\n\n case 'bank-card':\n return `شماره کارت بانکی صحیح مشخص نشده است.`;\n\n case 'bank-sheba':\n return `شماره شبا صحیح مشخص نشده است.`;\n\n case 'pattern':\n switch (type) {\n case 'EMAIL':\n return 'فرمت استاندارد ایمیل رعایت نشده است.';\n case 'PASSWORD':\n switch (true) {\n case value.requiredPattern.includes('[0-9]'):\n return 'مقدار باید شامل اعداد انگلیسی باشد.';\n case value.requiredPattern.includes('[a-z]'):\n return 'مقدار باید شامل حروف انگلیسی کوچک باشد.';\n case value.requiredPattern.includes('[A-Z]'):\n return 'مقدار باید شامل حروف انگلیسی بزرگ باشد.';\n }\n return 'کاراکترهای الزامی در کلمه عبور استفاده نشدهاند.';\n case 'URL':\n return 'فرمت استاندارد آدرس سایت رعایت نشده است.';\n }\n break;\n\n case 'mask':\n switch (type) {\n case 'BANK-CARD':\n return 'شماره کارت بانکی دارای ۱۶ رقم است.';\n case 'BANK-SHEBA':\n return 'شماره شبا دارای ۲۴ رقم است.';\n case 'MOBILE':\n return 'شماره موبایل دارای ۱۱ رقم است.';\n }\n break;\n }\n\n return 'مقدار وارد شده صحیح نیست.';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'MultiLinePipe' })\nexport class MultiLinePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(value: string, config?: { html?: boolean }): string | SafeHtml {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return config?.html\n ? this.sanitizer.bypassSecurityTrustHtml(value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />'))\n : Helper.STRING.escapeHTML(value).replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormValues } from '../ngx-form.interface';\n\nexport interface IInputButton {\n readonly icon: string;\n readonly color?: string;\n readonly onClick: (values: INgxFormValues) => void;\n readonly disableOn?: (values: INgxFormValues) => boolean;\n}\n\nexport interface IInput {\n readonly name: string;\n readonly title?: string;\n readonly value?: string | null;\n readonly hint?: string;\n readonly description?: string;\n readonly optional?: boolean;\n readonly english?: boolean;\n readonly autoFocus?: boolean;\n readonly appearance?: MatFormFieldAppearance;\n readonly button?: IInputButton;\n readonly disableOn?: (values: INgxFormValues) => boolean;\n readonly hideOn?: (values: INgxFormValues) => boolean;\n}\n\nexport abstract class InputMethods<I /** INPUT **/, V /** VALUE **/> {\n abstract control(input: I, validators: ValidatorFn[]): FormControl<V>;\n abstract value(value: any, input: I): V;\n}\n\nexport interface IInputConfig {\n readonly appearance: MatFormFieldAppearance;\n readonly autoFocus?: string;\n}\n\nexport const INPUT_CONTROL: InjectionToken<FormControl> = new InjectionToken('NGX-FORM-INPUT-CONTROL');\nexport const INPUT_TYPE: InjectionToken<any> = new InjectionToken('NGX-FORM-INPUT-TYPE');\nexport const INPUT_CONFIG: InjectionToken<IInputConfig> = new InjectionToken('NGX-FORM-INPUT-CONFIG');\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputAutoComplete } from './input-auto-complete.interface';\n\n@Component({\n host: { selector: 'input-auto-complete' },\n imports: [\n ReactiveFormsModule,\n MatAutocompleteModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-auto-complete.component.html',\n styleUrl: './input-auto-complete.component.scss',\n})\nexport class InputAutoCompleteComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputAutoComplete = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public filtered: string[] = [];\n\n ngOnInit(): void {\n this.filter();\n }\n\n filter(): void {\n const value: string = (this.formControl.value || '').toString().trim();\n this.filtered = this.input.options.filter((option) => option.indexOf(value) !== -1);\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [class.ngx-form-m3-en]=\"input.english\"\n [maxLength]=\"524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (input)=\"filter()\"\n (focus)=\"filter()\"\n [matAutocomplete]=\"ngxAutoComplete\"\n />\n <mat-autocomplete #ngxAutoComplete=\"matAutocomplete\" class=\"ngx-helper-form-m3-auto-complete-input\">\n <div class=\"options\">\n <!-- OPTIONS -->\n @for (option of filtered ; track $index) {\n <mat-option [value]=\"option\" [class.ngx-form-m3-en]=\"input.english\">{{ option }}</mat-option>\n }\n </div>\n </mat-autocomplete>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputAutoComplete extends IInput {\n readonly type: 'AUTO-COMPLETE';\n readonly title: string;\n readonly options: string[];\n}\n\nexport class InputAutoCompleteMethods extends InputMethods<IInputAutoComplete, string | null> {\n override control(input: IInputAutoComplete, validators: ValidatorFn[]): FormControl<string | null> {\n const options: string[] = input.options;\n const value: string | null = input.value && Helper.IS.string(input.value) ? input.value : null;\n if (value && !options.includes(value)) options.push(value);\n\n Object.assign(input, { options: options.sort((o1: string, o2: string) => o1.localeCompare(o2)) });\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputAutoComplete): string | null {\n return value && Helper.IS.string(value) ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper, IBank } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputBankCard } from './input-bank-card.interface';\n\n@Component({\n host: { selector: 'input-bank-card' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-bank-card.component.html',\n styleUrl: './input-bank-card.component.scss',\n})\nexport class InputBankCardComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputBankCard = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public bank: string = '';\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n ngOnInit(): void {\n this.setBank(this.input.value || '');\n }\n\n setBank(card: string): void {\n card = card.replace(/-/g, '').substring(0, 6);\n\n const bank: IBank | null = Helper.BANK.findCard(card);\n this.bank = bank?.title || '';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'شماره کارت بانکی' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <div class=\"ngx-helper-form-m3-bank-card-input\">\n <!-- BANK NAME -->\n @if (!input.hideBank && bank !== '') {\n <div class=\"bank\">{{ bank }}</div>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'0000-0000-0000-0000'\"\n [inputTransformFn]=\"inputTransformFn\"\n (input)=\"setBank(bankCardInput.value)\"\n #bankCardInput\n />\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const BankCardValidator = (): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value) || value.length !== 16) return null;\n\n return !Helper.IS.STRING.bankCard(value) ? { 'bank-card': true } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const BankShebaValidator = (): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value) || value.length !== 24) return null;\n\n return !Helper.IS.STRING.bankSheba(`IR${value}`) ? { 'bank-sheba': true } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const MaxCountValidator = (max: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string[] = Array.isArray(formControl.value) ? formControl.value : [];\n return value.length > max ? { maxcount: max } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const MinCountValidator = (min: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string[] = Array.isArray(formControl.value) ? formControl.value : [];\n return value.length === 0 ? { required: true } : value.length < min ? { mincount: min } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MaxDateValidator = (max: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const maximum: Date = jalali.periodDay(1, max === 'NOW' ? new Date() : max).to;\n return value.getTime() > maximum.getTime() ? { maxdate: jalali.toFullText(maximum, { format: 'Y/M/D' }) } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MinDateValidator = (min: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const minimum: Date = jalali.periodDay(1, min === 'NOW' ? new Date() : min).from;\n return value.getTime() < minimum.getTime() ? { mindate: jalali.toFullText(minimum, { format: 'Y/M/D' }) } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MaxMomentValidator = (max: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n const formatDate = (date: Date) => jalali.toString(date, { format: 'Y-M-D H:I' });\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const maximum: Date = max === 'NOW' ? new Date() : max;\n return formatDate(value) > formatDate(maximum)\n ? { maxmoment: jalali.toFullText(maximum, { format: 'H:I Y/M/D' }) }\n : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const MinMomentValidator = (min: Date | 'NOW'): ValidatorFn => {\n const jalali = JalaliDateTime();\n const formatDate = (date: Date) => jalali.toString(date, { format: 'Y-M-D H:I' });\n\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: Date = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.date(value)) return null;\n\n const minimum: Date = min === 'NOW' ? new Date() : min;\n return formatDate(value) < formatDate(minimum)\n ? { minmoment: jalali.toFullText(minimum, { format: 'H:I Y/M/D' }) }\n : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const MaxNumberValidator = (maximum: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: number = Helper.IS.string(formControl.value) ? +formControl.value.replace(/,/g, '') : formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n return value <= maximum ? null : { maximum };\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const MinNumberValidator = (minimum: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: number = Helper.IS.string(formControl.value) ? +formControl.value.replace(/,/g, '') : formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n return value >= minimum ? null : { minimum };\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const MultiplyOfNumberValidator = (multiplyOf: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: number = Helper.IS.string(formControl.value) ? +formControl.value.replace(/,/g, '') : formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n return value % multiplyOf === 0 ? null : { multiplyOf };\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const DuplicateValidator = <T>(callback: (value: T) => string): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const values: T[] = Array.isArray(formControl.value) ? formControl.value : [];\n const check: string[] = values.map((value: T) => callback(value));\n const unique: string[] = check.filter((v: string, i: number, a: string[]) => a.indexOf(v) === i);\n\n return check.length !== unique.length ? { duplicate: true } : null;\n };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const LengthValidator = (length: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value)) return null;\n\n return value.length !== length ? { length } : null;\n };\n};\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { BankCardValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputBankCard extends Omit<IInput, 'english'> {\n readonly type: 'BANK-CARD';\n readonly hideBank?: boolean;\n}\n\nexport class InputBankCardMethods extends InputMethods<IInputBankCard, string | null> {\n override control(input: IInputBankCard, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(BankCardValidator());\n\n const value: string | null = input.value && Helper.IS.STRING.bankCard(input.value) ? input.value : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputBankCard): string | null {\n return Helper.IS.STRING.bankCard(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputBankSheba } from './input-bank-sheba.interface';\n\n@Component({\n host: { selector: 'input-bank-sheba' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-bank-sheba.component.html',\n styleUrl: './input-bank-sheba.component.scss',\n})\nexport class InputBankShebaComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputBankSheba = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public bank: string = '';\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'شماره شبا' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span class=\"ngx-form-m3-en\">IR</span>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'000000000000000000000000'\"\n [inputTransformFn]=\"inputTransformFn\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { BankShebaValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputBankSheba extends Omit<IInput, 'english'> {\n readonly type: 'BANK-SHEBA';\n readonly hideBank?: boolean;\n}\n\nexport class InputBankShebaMethods extends InputMethods<IInputBankSheba, string | null> {\n override control(input: IInputBankSheba, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(BankShebaValidator());\n\n const value: string | null =\n input.value && Helper.IS.STRING.bankSheba(input.value) ? input.value.substring(2) : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputBankSheba): string | null {\n return Helper.IS.STRING.bankSheba(`IR${value}`) ? `IR${value}` : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputCheckbox } from './input-checkbox.interface';\n\n@Component({\n host: { selector: 'input-checkbox' },\n imports: [ReactiveFormsModule, MatFormField, MatIcon, MatIconButton, MatInputModule, InputErrorPipe, MultiLinePipe],\n templateUrl: './input-checkbox.component.html',\n styleUrl: './input-checkbox.component.scss',\n})\nexport class InputCheckboxComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputCheckbox = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n toggleValue(): void {\n const value: boolean = !!this.formControl.value;\n this.formControl.setValue(!value);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <div\n class=\"ngx-helper-form-m3-checkbox-input\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"toggleValue()\"\n >\n <mat-icon>{{ !!formControl.value ? 'check_box' : 'check_box_outline_blank' }}</mat-icon>\n <div class=\"message\" [class.ngx-form-m3-en]=\"!!input.english\">{{ input.message }}</div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputCheckbox extends Omit<IInput, 'title' | 'value' | 'optional' | 'autoFocus'> {\n readonly type: 'CHECKBOX';\n readonly message: string;\n readonly value?: boolean;\n}\n\nexport class InputCheckboxMethods extends InputMethods<IInputCheckbox, boolean | null> {\n override control(input: IInputCheckbox, validators: ValidatorFn[]): FormControl<boolean | null> {\n return new FormControl<boolean | null>(!!input.value, validators);\n }\n\n override value(value: any, input: IInputCheckbox): boolean | null {\n return !!value;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputColor } from './input-color.interface';\n\n@Component({\n host: { selector: 'input-color' },\n imports: [ReactiveFormsModule, MatFormField, MatIcon, MatIconButton, MatInputModule, InputErrorPipe, MultiLinePipe],\n templateUrl: './input-color.component.html',\n styleUrl: './input-color.component.scss',\n})\nexport class InputColorComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputColor = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'رنگ' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : colorInput.click(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'palette' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n <div class=\"ngx-helper-form-m3-color-input\">\n <section>\n <input type=\"color\" (input)=\"formControl.setValue(colorInput.value)\" [value]=\"formControl.value\" #colorInput />\n <div\n class=\"color\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [style.background-color]=\"formControl.value || 'transparent'\"\n (click)=\"formControl.disabled ? null : colorInput.click(); formControl.markAsTouched()\"\n >\n \n </div>\n </section>\n\n <div\n class=\"value ngx-form-m3-en\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"formControl.disabled ? null : colorInput.click(); formControl.markAsTouched()\"\n >\n {{ formControl.value || ' ' }}\n </div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputColor extends Omit<IInput, 'english' | 'autoFocus'> {\n readonly type: 'COLOR';\n}\n\nexport class InputColorMethods extends InputMethods<IInputColor, string | null> {\n override control(input: IInputColor, validators: ValidatorFn[]): FormControl<string | null> {\n const value: string | null =\n input.value && Helper.IS.STRING.color(input.value) ? Helper.COLOR.toHEX(input.value) : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputColor): string | null {\n return Helper.IS.STRING.color(value) ? String(Helper.COLOR.toHEX(value)).toUpperCase() : null;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FormControl, FormGroup, NgForm } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport {\n IInputAutoComplete,\n IInputBankCard,\n IInputBankSheba,\n IInputCheckbox,\n IInputColor,\n IInputComponent,\n IInputCoordinates,\n IInputDate,\n IInputEmail,\n IInputFile,\n IInputIcon,\n IInputIp,\n IInputItemList,\n IInputMobile,\n IInputMoment,\n IInputMultiSelect,\n IInputName,\n IInputNumber,\n IInputOptionList,\n IInputPassword,\n IInputPrice,\n IInputRoute,\n IInputSelect,\n IInputTag,\n IInputText,\n IInputTextarea,\n IInputUrl,\n} from './inputs';\n\nexport type NgxFormInputs =\n | IInputAutoComplete\n | IInputBankCard\n | IInputBankSheba\n | IInputCheckbox\n | IInputColor\n | IInputComponent\n | IInputCoordinates\n | IInputDate\n | IInputEmail\n | IInputFile\n | IInputIcon\n | IInputIp\n | IInputItemList\n | IInputMobile\n | IInputMoment\n | IInputMultiSelect\n | IInputName\n | IInputNumber\n | IInputOptionList\n | IInputPassword\n | IInputPrice\n | IInputRoute\n | IInputSelect\n | IInputTag\n | IInputText\n | IInputTextarea\n | IInputUrl;\n\ntype Inputs =\n | NgxFormInputs\n | { readonly header: string; readonly input: NgxFormInputs }\n | { readonly header?: string; readonly inputs: NgxFormInputs[]; readonly flex?: number[] };\n\ninterface INgxFormColumn {\n readonly header?: string;\n readonly rows: Inputs[];\n}\n\nexport interface INgxForm {\n readonly submit: string;\n readonly inputs: (Inputs | { readonly header?: string; readonly columns: INgxFormColumn[]; readonly flex?: number[] })[];\n readonly buttons?: INgxFormButton[];\n\n // SETTINGS\n readonly mobileView?: boolean;\n readonly appearance?: MatFormFieldAppearance;\n\n // ACTIOS\n updateValues?: (values: INgxFormValues) => { [key: string]: any };\n}\n\nexport interface INgxFormInit {\n readonly formGroup?: FormGroup;\n readonly ngForm?: NgForm;\n}\n\nexport interface INgxFormButton {\n readonly title: string;\n readonly action: string[] | (() => void);\n}\n\nexport interface INgxFormValues {\n [key: string]: any;\n}\n\nexport const NGX_FORM_CONTROL: InjectionToken<FormControl> = new InjectionToken('NGX_FORM_CONTROL');\nexport const NGX_FORM_INPUT: InjectionToken<IInputComponent> = new InjectionToken('NGX_FORM_INPUT');\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues, NGX_FORM_CONTROL, NGX_FORM_INPUT } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputComponent } from './input-component.interface';\n\n@Component({\n host: { selector: 'input-component' },\n imports: [\n NgComponentOutlet,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-component.component.html',\n styleUrl: './input-component.component.scss',\n})\nexport class InputComponentComponent implements OnChanges {\n @HostBinding('style.--padding') paddig!: string;\n\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputComponent = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public injector: Injector = Injector.create({\n providers: [\n { provide: NGX_FORM_CONTROL, useValue: this.formControl },\n {\n provide: NGX_FORM_INPUT,\n useValue: { ...this.input, appearance: this.input.appearance || this.config.appearance },\n },\n ],\n });\n\n ngOnChanges(changes: SimpleChanges): void {\n this.paddig = this.input.zeroPadding ? '0' : '16px';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <!-- TITLE -->\n @if (input.title) {\n <mat-label>{{ input.title }}</mat-label>\n }\n\n <!-- ERROR -->\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <ng-container *ngComponentOutlet=\"input.component; inputs: input.componentInputs; injector: injector\"></ng-container>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { NgxFormComponentInputs } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputComponent extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'COMPONENT';\n readonly value?: any;\n readonly component: ComponentType<any>;\n readonly componentInputs?: NgxFormComponentInputs;\n readonly zeroPadding?: boolean;\n}\n\nexport class InputComponentMethods extends InputMethods<IInputComponent, any> {\n override control(input: IInputComponent, validators: ValidatorFn[]): FormControl<any> {\n const value: any = input.value !== undefined ? input.value : null;\n return new FormControl<any>(value, validators);\n }\n\n override value(value: any, input: IInputComponent): any {\n return value !== undefined ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { INgxHelperCoordinates, NgxHelperCoordinatesService } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputCoordinates } from './input-coordinates.interface';\n\n@Component({\n host: { selector: 'input-coordinates' },\n imports: [ReactiveFormsModule, MatFormField, MatIcon, MatIconButton, MatInputModule, InputErrorPipe, MultiLinePipe],\n templateUrl: './input-coordinates.component.html',\n styleUrl: './input-coordinates.component.scss',\n})\nexport class InputCoordinatesComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputCoordinates = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public coordinates?: INgxHelperCoordinates = this.formControl.value || undefined;\n\n constructor(private readonly ngxHelperCoordinatesService: NgxHelperCoordinatesService) {}\n\n setCoordinates(): void {\n const get = this.coordinates\n ? this.ngxHelperCoordinatesService.get(this.coordinates, { view: this.input.center, zoom: this.input.zoom })\n : this.ngxHelperCoordinatesService.get({ view: this.input.center, zoom: this.input.zoom });\n\n get.then(\n (coordinates: INgxHelperCoordinates) => {\n this.coordinates = coordinates;\n this.formControl.setValue(coordinates);\n this.formControl.markAsTouched();\n },\n () => this.formControl.markAsTouched(),\n );\n }\n\n resetCoordinates(): void {\n this.coordinates = undefined;\n this.formControl.setValue(null);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'موقعیت جغرافیایی' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? resetCoordinates() : setCoordinates(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'location_on' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n type=\"text\"\n matInput\n [readonly]=\"true\"\n class=\"ngx-helper-form-m3-coordinates-input ngx-form-m3-en\"\n [disabled]=\"formControl.disabled\"\n (click)=\"setCoordinates()\"\n [value]=\"formControl.value ? coordinates?.latitude + ', ' + coordinates?.longitude : ''\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormCoordinates } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputCoordinates extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'COORDINATES';\n readonly value?: INgxFormCoordinates | null;\n readonly center?: INgxFormCoordinates;\n readonly zoom?: number;\n}\n\nexport class InputCoordinatesMethods extends InputMethods<IInputCoordinates, INgxFormCoordinates | null> {\n override control(input: IInputCoordinates, validators: ValidatorFn[]): FormControl<INgxFormCoordinates | null> {\n const value: INgxFormCoordinates | null =\n input.value &&\n Helper.IS.object(input.value) &&\n Helper.IS.number(input.value.latitude) &&\n Helper.IS.number(input.value.longitude)\n ? input.value\n : null;\n return new FormControl<INgxFormCoordinates | null>(value, validators);\n }\n\n override value(value: any, input: IInputCoordinates): INgxFormCoordinates | null {\n return Helper.IS.object(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { INgxCalendarDate, NgxCalendarService } from '@webilix/ngx-calendar-m3';\nimport { NgxHelperDatePipe } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputDate } from './input-date.interface';\n\n@Component({\n host: { selector: 'input-date' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n NgxHelperDatePipe,\n ],\n templateUrl: './input-date.component.html',\n styleUrl: './input-date.component.scss',\n})\nexport class InputDateComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputDate = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n constructor(private readonly ngxCalendarService: NgxCalendarService) {}\n\n setDate(): void {\n if (this.formControl.disabled) return;\n\n this.ngxCalendarService\n .getDate({\n title: this.input.title || 'تاریخ',\n value: this.formControl.value,\n minDate: this.input.minDate,\n maxDate: this.input.maxDate,\n })\n .dialog(\n (data: INgxCalendarDate) => {\n this.formControl.setValue(data.date);\n this.formControl.markAsTouched();\n },\n () => this.formControl.markAsTouched(),\n );\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'تاریخ' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : setDate(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'calendar_month' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n type=\"text\"\n matInput\n [readonly]=\"true\"\n [disabled]=\"formControl.disabled\"\n (click)=\"setDate()\"\n [value]=\"formControl.value | ngxHelperDate : { format: input.format }\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxDateValidator, MinDateValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputDate extends Omit<IInput, 'english' | 'value' | 'autoFocus'> {\n readonly type: 'DATE';\n readonly value?: Date | null;\n readonly minDate?: Date | 'NOW';\n readonly maxDate?: Date | 'NOW';\n readonly format?: string;\n}\n\nexport class InputDateMethods extends InputMethods<IInputDate, Date | null> {\n override control(input: IInputDate, validators: ValidatorFn[]): FormControl<Date | null> {\n if (input.minDate) validators.push(MinDateValidator(input.minDate));\n if (input.maxDate) validators.push(MaxDateValidator(input.maxDate));\n\n const value: Date | null = input.value && Helper.IS.date(input.value) ? input.value : null;\n return new FormControl<Date | null>(value, validators);\n }\n\n override value(value: any, input: IInputDate): Date | null {\n return Helper.IS.date(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputEmail } from './input-email.interface';\n\n@Component({\n host: { selector: 'input-email' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-email.component.html',\n styleUrl: './input-email.component.scss',\n})\nexport class InputEmailComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputEmail = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'ایمیل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n @if (input.showIcon) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>alternate_email</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"email\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputEmail extends Omit<IInput, 'english'> {\n readonly type: 'EMAIL';\n readonly showIcon?: boolean;\n}\n\nexport class InputEmailMethods extends InputMethods<IInputEmail, string | null> {\n override control(input: IInputEmail, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.EMAIL.get()));\n\n const value: string | null = input.value && Helper.RE.EMAIL.verify(input.value) ? input.value.toLowerCase() : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputEmail): string | null {\n return typeof value === 'string' && Helper.RE.EMAIL.verify(value) ? value.toLowerCase() : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { NgxHelperFileSizePipe } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputFile } from './input-file.interface';\n\n@Component({\n host: { selector: 'input-file' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n NgxHelperFileSizePipe,\n ],\n templateUrl: './input-file.component.html',\n styleUrl: './input-file.component.scss',\n})\nexport class InputFileComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputFile = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n setFile(event: Event | null): void {\n if (this.formControl.disabled) return;\n\n const files: FileList | null = event === null ? null : (event.target as HTMLInputElement).files;\n const file = files && files.length !== 0 ? files.item(0) : null;\n this.formControl.setValue(file);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'فایل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : fileInput.click()\">\n {{ formControl.value ? 'close' : 'insert_drive_file' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input\n type=\"file\"\n [style.display]=\"'none !important'\"\n [accept]=\"(input.mimes === 'IMAGE' ? ['image/gif', 'image/jpeg', 'image/png'] : input.mimes || ['*']).join(',')\"\n (change)=\"setFile($event); fileInput.value = ''\"\n #fileInput\n />\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n <div\n class=\"ngx-helper-form-m3-file-input\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"fileInput.value = ''; fileInput.click()\"\n >\n <div class=\"size\">{{ formControl.value?.size | ngxHelperFileSize }}</div>\n <input type=\"text \" matInput [readonly]=\"true\" [disabled]=\"formControl.disabled\" class=\"ngx-form-m3-en\" />\n <div class=\"name ngx-form-m3-en\">{{ formControl.value?.name || ' ' }}</div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputFile extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'FILE';\n readonly mimes?: 'IMAGE' | string[];\n}\n\nexport class InputFileMethods extends InputMethods<IInputFile, File | null> {\n override control(input: IInputFile, validators: ValidatorFn[]): FormControl<File | null> {\n return new FormControl<File | null>(null, validators);\n }\n\n override value(value: any, input: IInputFile): File | null {\n return typeof value === 'object' ? value || null : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputIcon } from './input-icon.interface';\n\n@Component({\n host: { selector: 'input-icon' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-icon.component.html',\n styleUrl: './input-icon.component.scss',\n})\nexport class InputIconComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputIcon = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'آیکون' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <div class=\"ngx-helper-form-m3-icon-input\">\n @if (formControl.value) {\n <mat-icon>{{ formControl.value }}</mat-icon>\n }\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputIcon extends Omit<IInput, 'english'> {\n readonly type: 'ICON';\n}\n\nexport class InputIconMethods extends InputMethods<IInputIcon, string | null> {\n override control(input: IInputIcon, validators: ValidatorFn[]): FormControl<string | null> {\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputIcon): string | null {\n return typeof value === 'string' && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputIp } from './input-ip.interface';\n\n@Component({\n host: { selector: 'input-ip' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-ip.component.html',\n styleUrl: './input-ip.component.scss',\n})\nexport class InputIpComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputIp = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'آدرس آیپی' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n @if (input.showIcon) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>language</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputIp extends Omit<IInput, 'english'> {\n readonly type: 'IP';\n readonly showIcon?: boolean;\n}\n\nexport class InputIpMethods extends InputMethods<IInputIp, string | null> {\n override control(input: IInputIp, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.IP4.get(true)));\n\n const value: string | null = input.value && Helper.RE.IP4.verify(input.value) ? input.value : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputIp): string | null {\n return typeof value === 'string' && Helper.RE.IP4.verify(value) ? value : null;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { MatInput } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\n\n@Component({\n selector: 'list-input',\n imports: [MatInput, AutoFocusDirective],\n templateUrl: './list-input.component.html',\n styleUrl: './list-input.component.scss',\n})\nexport class ListInputComponent {\n @Input({ required: true }) english!: boolean;\n @Input({ required: true }) disabled!: boolean;\n @Input({ required: true }) autoFocus!: boolean;\n @Input({ required: true }) placeholder?: string;\n\n @Output() onFocus: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() onInput: EventEmitter<string> = new EventEmitter<string>();\n\n checkValue(input: HTMLInputElement): void {\n const value: string = input.value.trim();\n if (this.disabled || value === '') return;\n\n this.onInput.next(value);\n input.value = '';\n }\n}\n","<input\n matInput\n type=\"text\"\n [placeholder]=\"placeholder || (english ? 'New Item' : 'گزینه جدید')\"\n [class.ngx-form-m3-en]=\"english\"\n [AutoFocusDirective]=\"autoFocus\"\n [disabled]=\"disabled\"\n (blur)=\"checkValue(input); onFocus.next(false)\"\n (focus)=\"onFocus.next(true)\"\n (keydown.enter)=\"$event.preventDefault(); checkValue(input)\"\n #input\n/>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkDragHandle } from '@angular/cdk/drag-drop';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\n\n@Component({\n selector: 'list-item',\n imports: [CdkDragHandle, FormsModule, MatIcon, MatIconButton, MatInput, AutoFocusDirective],\n templateUrl: './list-item.component.html',\n styleUrl: './list-item.component.scss',\n})\nexport class ListItemComponent {\n @Input({ required: true }) value!: string;\n @Input({ required: true }) english!: boolean;\n @Input({ required: true }) disabled!: boolean;\n @Input({ required: true }) disableSort!: boolean;\n\n @Output() onUpdate: EventEmitter<string> = new EventEmitter<string>();\n @Output() onDelete: EventEmitter<void> = new EventEmitter<void>();\n\n public view: 'VALUE' | 'UPDATE' | 'DELETE' = 'VALUE';\n\n checkValue(input: HTMLInputElement): void {\n if (this.disabled) return;\n\n const value: string = input.value.trim();\n if (value !== '' && value !== this.value) this.onUpdate.next(value);\n this.view = 'VALUE';\n }\n}\n","<!-- SORT -->\n@if (view === 'VALUE' && !disableSort) {\n<mat-icon class=\"drag\" [class.ngx-form-m3-disabled-input]=\"disabled\" cdkDragHandle>drag_indicator</mat-icon>\n}\n\n<!-- VALUE -->\n@if (view === 'VALUE') {\n<div [class.ngx-form-m3-en]=\"english\" [class.ngx-form-m3-disabled-input]=\"disabled\">\n {{ value }}\n</div>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'UPDATE'\" [tabIndex]=\"-1\">\n <mat-icon>edit</mat-icon>\n</button>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'DELETE'\" [tabIndex]=\"-1\">\n <mat-icon [style.color]=\"'var(--error)'\" [class.ngx-form-m3-disabled-input]=\"disabled\">delete</mat-icon>\n</button>\n}\n\n<!-- UPDATE -->\n@if (view === 'UPDATE') {\n<input\n matInput\n type=\"text\"\n [ngModel]=\"value\"\n [class.ngx-form-m3-en]=\"english\"\n [AutoFocusDirective]=\"true\"\n [disabled]=\"disabled\"\n (blur)=\"checkValue(input)\"\n (keydown.enter)=\"$event.preventDefault(); checkValue(input)\"\n #input\n/>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"checkValue(input)\" [tabIndex]=\"-1\">\n <mat-icon>done_all</mat-icon>\n</button>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'VALUE'\" [tabIndex]=\"-1\">\n <mat-icon>close</mat-icon>\n</button>\n}\n\n<!-- DELETE -->\n@if (view === 'DELETE') {\n<div [class.ngx-form-m3-disabled-input]=\"disabled\">میخواهید این گزینه را حذف کنید؟</div>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"onDelete.next(); view = 'VALUE'\" [tabIndex]=\"-1\">\n <mat-icon [style.color]=\"'var(--error)'\" [class.ngx-form-m3-disabled-input]=\"disabled\">done_all</mat-icon>\n</button>\n\n<button mat-icon-button [type]=\"'button'\" [disabled]=\"disabled\" (click)=\"view = 'VALUE'\" [tabIndex]=\"-1\">\n <mat-icon>close</mat-icon>\n</button>\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\nimport { ListInputComponent } from '../../components/list-input/list-input.component';\nimport { ListItemComponent } from '../../components/list-item/list-item.component';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputItemList } from './input-item-list.interface';\n\n@Component({\n host: { selector: 'input-item-list' },\n imports: [\n DragDropModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n ListInputComponent,\n ListItemComponent,\n ],\n templateUrl: './input-item-list.component.html',\n styleUrl: './input-item-list.component.scss',\n})\nexport class InputItemListComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputItemList = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public focused: boolean = false;\n public options: string[] = [];\n\n ngOnInit(): void {\n this.options = Array.isArray(this.formControl.value) ? this.formControl.value : [];\n }\n\n setValue(): void {\n this.formControl.setValue([...this.options]);\n this.formControl.markAsTouched();\n }\n\n dropOption(event: CdkDragDrop<string>): void {\n if (event.previousIndex === event.currentIndex) return;\n\n moveItemInArray(this.options, event.previousIndex, event.currentIndex);\n this.setValue();\n }\n\n addOption(option: string): void {\n this.options.push(option);\n this.setValue();\n }\n\n updateOption(index: number, option: string): void {\n if (!this.options[index]) return;\n\n this.options.splice(index, 1, option);\n this.setValue();\n }\n\n deleteOption(index: number): void {\n if (!this.options[index]) return;\n\n this.options.splice(index, 1);\n this.setValue();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"focused ? 'always' : 'auto'\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <!-- OPTIONS -->\n @if (options.length > 0) {\n <div\n class=\"options\"\n cdkDropList\n (cdkDropListDropped)=\"dropOption($event)\"\n [style.border-color]=\"formControl.disabled ? 'var(--outline-variant)' : 'var(--outline)'\"\n >\n @for (item of options; track $index) {\n <list-item\n cdkDrag\n cdkDragLockAxis=\"y\"\n cdkDragBoundary=\".options\"\n [cdkDragDisabled]=\"input.disableSort\"\n class=\"option\"\n [value]=\"item\"\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [disableSort]=\"!!input.disableSort\"\n (onUpdate)=\"updateOption($index, $event)\"\n (onDelete)=\"deleteOption($index)\"\n ></list-item>\n }\n </div>\n }\n <!-- INPUT -->\n <list-input\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [autoFocus]=\"config.autoFocus === input.name\"\n [placeholder]=\"input.placeholder\"\n (onFocus)=\"focused = $event\"\n (onInput)=\"addOption($event)\"\n ></list-input>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { DuplicateValidator, MaxCountValidator, MinCountValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputItemList extends Omit<IInput, 'value' | 'optional'> {\n readonly type: 'ITEM-LIST';\n readonly title: string;\n readonly value?: string[];\n readonly minCount?: number;\n readonly maxCount?: number;\n readonly disableSort?: boolean;\n readonly allowDuplicates?: boolean;\n readonly placeholder?: string;\n}\n\nexport class InputItemListMethods extends InputMethods<IInputItemList, string[] | null> {\n override control(input: IInputItemList, validators: ValidatorFn[]): FormControl<string[] | null> {\n if (!input.allowDuplicates) validators.push(DuplicateValidator<string>((value) => value));\n if (input.minCount) validators.push(MinCountValidator(input.minCount));\n if (input.maxCount) validators.push(MaxCountValidator(input.maxCount));\n\n const value: string[] = (Array.isArray(input.value) ? input.value : []).filter(\n (value: string) => Helper.IS.string(value) && value !== '',\n );\n return new FormControl<string[] | null>(value, validators);\n }\n\n override value(value: any, input: IInputItemList): string[] | null {\n return Array.isArray(value) && value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputMobile } from './input-mobile.interface';\n\n@Component({\n host: { selector: 'input-mobile' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-mobile.component.html',\n styleUrl: './input-mobile.component.scss',\n})\nexport class InputMobileComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputMobile = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'موبایل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON & SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span class=\"ngx-form-m3-en\">09</span>\n @if (input.showIcon) { <mat-icon>smartphone</mat-icon> }\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'00-000-0000'\"\n [inputTransformFn]=\"inputTransformFn\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMobile extends Omit<IInput, 'english'> {\n readonly type: 'MOBILE';\n readonly showIcon?: boolean;\n}\n\nexport class InputMobileMethods extends InputMethods<IInputMobile, string | null> {\n override control(input: IInputMobile, validators: ValidatorFn[]): FormControl<string | null> {\n const value: string | null = input.value && Helper.RE.MOBILE.verify(input.value) ? input.value.substring(2) : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputMobile): string | null {\n return typeof value === 'string' && Helper.RE.MOBILE.verify(`09${value}`) ? `09${value}` : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { INgxCalendarMoment, NgxCalendarService } from '@webilix/ngx-calendar-m3';\nimport { NgxHelperDatePipe } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputMoment } from './input-moment.interface';\n\n@Component({\n host: { selector: 'input-moment' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n NgxHelperDatePipe,\n ],\n templateUrl: './input-moment.component.html',\n styleUrl: './input-moment.component.scss',\n})\nexport class InputMomentComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputMoment = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n constructor(private readonly ngxCalendarService: NgxCalendarService) {}\n\n setMoment(): void {\n if (this.formControl.disabled) return;\n\n this.ngxCalendarService\n .getMoment({\n title: this.input.title || 'زمان',\n value: this.formControl.value,\n minDate: this.input.minDate,\n maxDate: this.input.maxDate,\n })\n .dialog(\n (moment: INgxCalendarMoment) => {\n this.formControl.setValue(moment.moment);\n this.formControl.markAsTouched();\n },\n () => this.formControl.markAsTouched(),\n );\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'زمان' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"formControl.value ? formControl.setValue(null) : setMoment(); formControl.markAsTouched()\">\n {{ formControl.value ? 'close' : 'calendar_month' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n type=\"text\"\n matInput\n [readonly]=\"true\"\n [disabled]=\"formControl.disabled\"\n (click)=\"setMoment()\"\n [value]=\"formControl.value | ngxHelperDate : { format: input.format || 'FULL' }\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxMomentValidator, MinMomentValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMoment extends Omit<IInput, 'english' | 'value' | 'autoFocus'> {\n readonly type: 'MOMENT';\n readonly value?: Date | null;\n readonly minDate?: Date | 'NOW';\n readonly maxDate?: Date | 'NOW';\n readonly format?: string;\n}\n\nexport class InputMomentMethods extends InputMethods<IInputMoment, Date | null> {\n override control(input: IInputMoment, validators: ValidatorFn[]): FormControl<Date | null> {\n if (input.minDate) validators.push(MinMomentValidator(input.minDate));\n if (input.maxDate) validators.push(MaxMomentValidator(input.maxDate));\n\n const value: Date | null = input.value && Helper.IS.date(input.value) ? input.value : null;\n return new FormControl<Date | null>(value, validators);\n }\n\n override value(value: any, input: IInputMoment): Date | null {\n return Helper.IS.date(value) ? value : null;\n }\n}\n","import { Component, HostBinding, inject, Input, OnInit } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputMultiSelect } from './input-multi-select.interface';\n\n@Component({\n host: { selector: 'input-multi-select' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatButton,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n MatMenuModule,\n MatSelectModule,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-multi-select.component.html',\n styleUrl: './input-multi-select.component.scss',\n})\nexport class InputMultiSelectComponent implements OnInit {\n @HostBinding('style.--listHeight') listHeight!: string;\n\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputMultiSelect = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public ids: string[] = this.formControl.value || [];\n\n ngOnInit(): void {\n this.listHeight = `${this.input.listMaxHeight || 310}px`;\n }\n\n select(type: 'ALL' | 'NONE'): void {\n this.ids = type === 'NONE' ? [] : this.input.options.map((option) => option.id);\n this.formControl.setValue(this.ids.length === 0 ? null : this.ids);\n this.formControl.markAsTouched();\n }\n\n selectGroup(index: number): void {\n const group = this.input.groups?.[index];\n if (!group) return;\n\n const ids: string[] = this.input.options.map((option) => option.id);\n this.ids = group.ids.filter((id: string) => ids.includes(id));\n\n this.formControl.setValue(this.ids.length === 0 ? null : this.ids);\n this.formControl.markAsTouched();\n }\n\n toggleValue(id: string): void {\n if (!this.ids.includes(id)) this.ids.push(id);\n else this.ids = this.ids.filter((i) => i !== id);\n\n this.formControl.setValue(this.ids.length === 0 ? null : this.ids);\n this.formControl.markAsTouched();\n }\n\n getSelectValues(): string {\n if (this.formControl.disabled) return '';\n\n const ids: string[] = this.input.options.map((option) => option.id);\n this.ids = Array.isArray(this.formControl.value) ? this.formControl.value : [this.formControl.value];\n this.ids = this.ids.filter((id: string) => ids.includes(id));\n\n if (this.ids.length > 3) return `${this.ids.length} ${this.input.english ? 'Items' : 'گزینه'}`;\n\n return this.input.options\n .filter((option) => this.ids.includes(option.id))\n .map((option) => option.title)\n .join('، ');\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- LABEL -->\n @if (input.view === 'SELECT') {\n <mat-label>{{ input.title }}</mat-label>\n }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT (DEFAULT VIEW) -->\n @if (!input.view) {\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <div class=\"ngx-helper-form-m3-multi-select-input\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <div class=\"header\">\n <div class=\"title\">\n {{ input.title }}\n @if (input.minCount) { <span class=\"asterisk\">*</span> }\n </div>\n <!-- SELECT BUTTONS -->\n @if (input.selectButtons) {\n <button mat-button type=\"button\" (click)=\"select('ALL')\">همه</button>\n <button mat-button type=\"button\" (click)=\"select('NONE')\">هیچ</button>\n }\n <!-- GROUPS -->\n @if ((input.groups || []).length !== 0) {\n <button mat-button type=\"button\" [matMenuTriggerFor]=\"groupMenu\">انتخاب</button>\n <mat-menu #groupMenu=\"matMenu\" [xPosition]=\"'before'\" class=\"ngx-helper-form-m3-multi-select-input-menu\">\n @for (item of input.groups || []; track $index) {\n <button mat-menu-item (click)=\"selectGroup($index)\">{{ item.title }}</button>\n }\n </mat-menu>\n }\n </div>\n <div class=\"options\">\n @for (item of input.options; track $index) {\n <div>\n <div class=\"option\" (click)=\"toggleValue(item.id)\">\n <mat-icon [class.selected]=\"ids.includes(item.id)\">\n {{ ids.includes(item.id) ? 'check_box' : 'check_box_outline_blank' }}\n </mat-icon>\n <div class=\"message\" [class.ngx-form-m3-en]=\"!!input.english\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- INPUT (SELECT VIEW) -->\n @if (input.view === 'SELECT') {\n <mat-select\n [formControl]=\"formControl\"\n [multiple]=\"true\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [style.direction]=\"'rtl'\"\n >\n <mat-select-trigger>{{ getSelectValues() }}</mat-select-trigger>\n @for (option of input.options; track $index) {\n <mat-option [value]=\"option.id\">\n <div [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\">{{ option.title }}</div>\n </mat-option>\n }\n </mat-select>\n }\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { MaxCountValidator, MinCountValidator } from '../../validators';\n\nimport { INgxFormOption, INgxFormOptionGroup } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMultiSelect extends Omit<IInput, 'value' | 'optional' | 'autoFocus'> {\n readonly type: 'MULTI-SELECT';\n readonly title: string;\n readonly value?: string[] | null;\n readonly options: INgxFormOption[];\n readonly groups?: INgxFormOptionGroup[];\n readonly minCount?: number;\n readonly maxCount?: number;\n readonly listMaxHeight?: number;\n readonly selectButtons?: boolean;\n readonly view?: 'SELECT';\n}\n\nexport class InputMultiSelectMethods extends InputMethods<IInputMultiSelect, string[] | null> {\n override control(input: IInputMultiSelect, validators: ValidatorFn[]): FormControl<string[] | null> {\n const ids: string[] = input.options.map((option) => option.id);\n const value: string[] = (input.value || []).filter((id: string) => ids.includes(id));\n if (input.minCount) validators.push(MinCountValidator(input.minCount));\n if (input.maxCount) validators.push(MaxCountValidator(input.maxCount));\n\n return new FormControl<string[] | null>(value, validators);\n }\n\n override value(value: any, input: IInputMultiSelect): string[] | null {\n const ids: string[] = input.options.map((option) => option.id);\n value = (Array.isArray(value) ? value : []).filter((id: string) => ids.includes(id));\n return value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe } from '../../pipes';\nimport { INgxFormName } from '../../ngx-form.inputs';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputName } from './input-name.interface';\n\n@Component({\n host: { selector: 'input-name' },\n imports: [ReactiveFormsModule, MatFormField, MatInputModule, AutoCompleteDirective, AutoFocusDirective, InputErrorPipe],\n templateUrl: './input-name.component.html',\n styleUrl: './input-name.component.scss',\n})\nexport class InputNameComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputName = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public firstFormControl!: FormControl;\n public lastFormControl!: FormControl;\n\n ngOnInit(): void {\n const value: INgxFormName | null = this.formControl.value;\n const first: string | null = value?.first || null;\n const last: string | null = value?.last || null;\n\n this.firstFormControl = new FormControl<string | null>(first, this.input.optional ? [] : [Validators.required]);\n this.lastFormControl = new FormControl<string | null>(last, this.input.optional ? [] : [Validators.required]);\n\n this.formControl.statusChanges.subscribe({\n next: () => {\n if (this.formControl.disabled) {\n this.firstFormControl.disable();\n this.lastFormControl.disable();\n } else {\n this.firstFormControl.enable();\n this.lastFormControl.enable();\n }\n },\n });\n }\n\n setName(): void {\n const first: string = (this.firstFormControl.value || '').trim();\n const last: string = (this.lastFormControl.value || '').trim();\n\n const value: { first: string; last: string } | null = first !== '' && last !== '' ? { first, last } : null;\n this.formControl.setValue(value);\n }\n}\n","<!-- INPUT -->\n<input type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n<div class=\"ngx-helper-form-m3-name-input\">\n <!-- FIRST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام {{ input.title || '' }}</mat-label>\n @if (firstFormControl.invalid) { <mat-error>{{ firstFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name + '-first'\"\n [formControl]=\"firstFormControl\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (input)=\"setName()\"\n />\n </mat-form-field>\n <!-- LAST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام خانوادگی {{ input.title || '' }}</mat-label>\n @if (lastFormControl.invalid) { <mat-error>{{ lastFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input matInput type=\"text\" [name]=\"input.name + '-last'\" [formControl]=\"lastFormControl\" (input)=\"setName()\" />\n </mat-form-field>\n</div>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormName } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputName extends Omit<IInput, 'value' | 'hint' | 'english' | 'description' | 'button'> {\n readonly type: 'NAME';\n readonly value?: INgxFormName | null;\n}\n\nexport class InputNameMethods extends InputMethods<IInputName, INgxFormName | null> {\n override control(input: IInputName, validators: ValidatorFn[]): FormControl<INgxFormName | null> {\n const value: INgxFormName | null =\n input.value && Helper.IS.object(input.value) && !!input.value.first && !!input.value.last ? input.value : null;\n return new FormControl<INgxFormName | null>(value, validators);\n }\n\n override value(value: any, input: IInputName): INgxFormName | null {\n return Helper.IS.object(value) ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputNumber } from './input-number.interface';\n\n@Component({\n host: { selector: 'input-number' },\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-number.component.html',\n styleUrl: './input-number.component.scss',\n})\nexport class InputNumberComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputNumber = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public maxLength: number = 15;\n public hintText?: string;\n public isFocused: boolean = false;\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n ngOnInit(): void {\n if (!this.input.fractionDigits && !this.input.allowNegatives && this.input.maximum)\n this.maxLength = Helper.NUMBER.format(this.input.maximum, 'EN').length;\n\n this.updateHint();\n }\n\n setValue(input: string): void {\n const value: number | null = input.length === 0 ? null : +input.replace(/,/gi, '');\n this.formControl.setValue(Helper.IS.number(value) ? value : null);\n this.formControl.markAllAsTouched();\n }\n\n updateHint(): void {\n const value: number = this.formControl.value;\n if (!this.input.showText || !Helper.IS.number(value)) {\n this.hintText = undefined;\n return;\n }\n\n const isNegative: boolean = value < 0;\n this.hintText = (isNegative ? 'منفی ' : '') + Helper.NUMBER.getTitle(Math.abs(value));\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint|| (isFocused && hintText)) { <mat-hint>{{ isFocused && hintText ? hintText : input.hint }}</mat-hint> }\n\n <!-- CURRENCY -->\n @if (input.suffix) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix text\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span>{{ input.suffix }}</span>\n </span>\n }\n\n <!-- ICON -->\n @if (input.showIcon && !input.suffix) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>tag</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n class=\"ngx-form-m3-en\"\n [ngModel]=\"formControl.value?.toString() || ''\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"\n input.fractionDigits === true\n ? 'separator.3'\n : !!input.fractionDigits && input.fractionDigits > 0\n ? 'separator.' + input.fractionDigits.toString()\n : 'separator.0'\n \"\n thousandSeparator=\",\"\n decimalMarker=\".\"\n [allowNegativeNumbers]=\"!!input.allowNegatives\"\n [inputTransformFn]=\"inputTransformFn\"\n [maxlength]=\"maxLength\"\n (input)=\"setValue(numberInput.value); updateHint()\"\n [disabled]=\"formControl.disabled\"\n (focus)=\"isFocused = true; updateHint()\"\n (blur)=\"isFocused = false\"\n #numberInput\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxNumberValidator, MinNumberValidator, MultiplyOfNumberValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputNumber extends Omit<IInput, 'value' | 'english'> {\n readonly type: 'NUMBER';\n readonly title: string;\n readonly value?: number | null;\n readonly minimum?: number;\n readonly maximum?: number;\n readonly suffix?: string;\n readonly multiplyOf?: number;\n readonly allowNegatives?: boolean;\n readonly fractionDigits?: boolean | number;\n readonly showIcon?: boolean;\n readonly showText?: boolean;\n}\n\nexport class InputNumberMethods extends InputMethods<IInputNumber, number | null> {\n override control(input: IInputNumber, validators: ValidatorFn[]): FormControl<number | null> {\n if (input.minimum) validators.push(MinNumberValidator(input.minimum));\n if (input.maximum) validators.push(MaxNumberValidator(input.maximum));\n if (input.multiplyOf) validators.push(MultiplyOfNumberValidator(input.multiplyOf));\n\n const value: number | null = input.value !== undefined && Helper.IS.number(input.value) ? input.value : null;\n return new FormControl<number | null>(value, validators);\n }\n\n override value(value: any, input: IInputNumber): number | null {\n return Helper.IS.number(value) ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormOptionList } from '../../ngx-form.inputs';\nimport { INgxFormValues } from '../../ngx-form.interface';\nimport { ListInputComponent } from '../../components/list-input/list-input.component';\nimport { ListItemComponent } from '../../components/list-item/list-item.component';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputOptionList } from './input-option-list.interface';\n\n@Component({\n host: { selector: 'input-option-list' },\n imports: [\n DragDropModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n InputErrorPipe,\n MultiLinePipe,\n ListInputComponent,\n ListItemComponent,\n ],\n templateUrl: './input-option-list.component.html',\n styleUrl: './input-option-list.component.scss',\n})\nexport class InputOptionListComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputOptionList = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public focused: boolean = false;\n public options: INgxFormOptionList[] = [];\n\n ngOnInit(): void {\n this.options = Array.isArray(this.formControl.value) ? this.formControl.value : [];\n }\n\n setValue(): void {\n this.formControl.setValue([...this.options]);\n this.formControl.markAsTouched();\n }\n\n dropOption(event: CdkDragDrop<string>): void {\n if (event.previousIndex === event.currentIndex) return;\n\n moveItemInArray(this.options, event.previousIndex, event.currentIndex);\n this.setValue();\n }\n\n addOption(title: string): void {\n this.options.push({ id: null, title });\n this.setValue();\n }\n\n updateOption(index: number, title: string): void {\n if (!this.options[index]) return;\n\n const option: INgxFormOptionList = { id: this.options[index].id, title };\n this.options.splice(index, 1, option);\n this.setValue();\n }\n\n deleteOption(index: number): void {\n if (!this.options[index]) return;\n\n this.options.splice(index, 1);\n this.setValue();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"focused ? 'always' : 'auto'\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <!-- OPTIONS -->\n @if (options.length > 0) {\n <div\n class=\"options\"\n cdkDropList\n (cdkDropListDropped)=\"dropOption($event)\"\n [style.border-color]=\"formControl.disabled ? 'var(--outline-variant)' : 'var(--outline)'\"\n >\n @for (item of options; track $index) {\n <list-item\n cdkDrag\n cdkDragLockAxis=\"y\"\n cdkDragBoundary=\".options\"\n [cdkDragDisabled]=\"input.disableSort\"\n class=\"option\"\n [value]=\"item.title\"\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [disableSort]=\"!!input.disableSort\"\n (onUpdate)=\"updateOption($index, $event)\"\n (onDelete)=\"deleteOption($index)\"\n ></list-item>\n }\n </div>\n }\n <!-- INPUT -->\n <list-input\n [english]=\"!!input.english\"\n [disabled]=\"!!formControl.disabled\"\n [autoFocus]=\"config.autoFocus === input.name\"\n [placeholder]=\"input.placeholder\"\n (onFocus)=\"focused = $event\"\n (onInput)=\"addOption($event)\"\n ></list-input>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { DuplicateValidator, MaxCountValidator, MinCountValidator } from '../../validators';\nimport { INgxFormOptionList } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputOptionList extends Omit<IInput, 'value' | 'optional'> {\n readonly type: 'OPTION-LIST';\n readonly title: string;\n readonly value?: INgxFormOptionList[];\n readonly minCount?: number;\n readonly maxCount?: number;\n readonly disableSort?: boolean;\n readonly allowDuplicates?: boolean;\n readonly placeholder?: string;\n}\n\nexport class InputOptionListMethods extends InputMethods<IInputOptionList, INgxFormOptionList[] | null> {\n override control(input: IInputOptionList, validators: ValidatorFn[]): FormControl<INgxFormOptionList[] | null> {\n if (!input.allowDuplicates) validators.push(DuplicateValidator<IInputOptionList>((value) => value.title));\n if (input.minCount) validators.push(MinCountValidator(input.minCount));\n if (input.maxCount) validators.push(MaxCountValidator(input.maxCount));\n\n const value: INgxFormOptionList[] = (Array.isArray(input.value) ? input.value : []).filter(\n (value: INgxFormOptionList) => {\n if (!Helper.IS.object(value)) return false;\n if (value.id !== null && (!Helper.IS.string(value.id) || value.id.length === 0)) return false;\n if (!Helper.IS.string(value.title) || value.title.length === 0) return false;\n return true;\n },\n );\n return new FormControl<INgxFormOptionList[] | null>(value, validators);\n }\n\n override value(value: any, input: IInputOptionList): INgxFormOptionList[] | null {\n return Array.isArray(value) && value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputPassword } from './input-password.interface';\n\n@Component({\n host: { selector: 'input-password' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-password.component.html',\n styleUrl: './input-password.component.scss',\n})\nexport class InputPasswordComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputPassword = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public showPassword: boolean = false;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'کلمه عبور' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SHOW PASSWORD -->\n <span\n matTextSuffix\n class=\"ngx-form-m3-input-suffix click\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"showPassword = !showPassword\"\n >\n <span> </span>\n <mat-icon>{{ showPassword ? 'visibility_off' : 'visibility' }}</mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n [type]=\"showPassword ? 'text' : 'password'\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputPassword extends Omit<IInput, 'english' | 'value'> {\n readonly type: 'PASSWORD';\n readonly verify?: {\n readonly minLength: number;\n readonly forceLowerCase?: boolean;\n readonly forceUpperCase?: boolean;\n readonly forceNumber?: boolean;\n };\n}\n\nexport class InputPasswordMethods extends InputMethods<IInputPassword, string | null> {\n override control(input: IInputPassword, validators: ValidatorFn[]): FormControl<string | null> {\n if (input.verify) {\n validators.push(Validators.minLength(input.verify.minLength));\n if (input.verify.forceLowerCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, true, false, false)));\n if (input.verify.forceUpperCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, true, false)));\n if (input.verify.forceNumber)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, false, true)));\n }\n\n return new FormControl<string | null>(null, validators);\n }\n\n override value(value: any, input: IInputPassword): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputPrice } from './input-price.interface';\n\n@Component({\n host: { selector: 'input-price' },\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-price.component.html',\n styleUrl: './input-price.component.scss',\n})\nexport class InputPriceComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputPrice = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public maxLength: number = 15;\n public hintText?: string;\n public isFocused: boolean = false;\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n ngOnInit(): void {\n if (!this.input.fractionDigits && this.input.maximum)\n this.maxLength = Helper.NUMBER.format(this.input.maximum, 'EN').length;\n\n this.updateHint();\n }\n\n setValue(input: string): void {\n const value: number | null = input.length === 0 ? null : +input.replace(/,/gi, '');\n this.formControl.setValue(Helper.IS.number(value) ? value : null);\n this.formControl.markAllAsTouched();\n }\n\n updateHint(): void {\n const value: number = this.formControl.value;\n this.hintText =\n this.input.hideText || !Helper.IS.number(value)\n ? undefined\n : Helper.NUMBER.getTitle(Math.abs(value)) + (this.input.currency ? ` ${this.input.currency}` : '');\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'قیمت' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint|| (isFocused && hintText)) { <mat-hint>{{ isFocused && hintText ? hintText : input.hint }}</mat-hint> }\n\n <!-- CURRENCY -->\n @if (input.currency) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span>{{ input.currency }}</span>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n class=\"ngx-form-m3-en\"\n [ngModel]=\"formControl.value?.toString() || ''\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"\n input.fractionDigits === true\n ? 'separator.3'\n : !!input.fractionDigits && input.fractionDigits > 0\n ? 'separator.' + input.fractionDigits.toString()\n : 'separator.0'\n \"\n thousandSeparator=\",\"\n decimalMarker=\".\"\n [allowNegativeNumbers]=\"false\"\n [inputTransformFn]=\"inputTransformFn\"\n [maxlength]=\"maxLength\"\n (input)=\"setValue(numberInput.value); updateHint()\"\n [disabled]=\"formControl.disabled\"\n (focus)=\"isFocused = true; updateHint()\"\n (blur)=\"isFocused = false\"\n #numberInput\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxNumberValidator, MinNumberValidator, MultiplyOfNumberValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputPrice extends Omit<IInput, 'value' | 'english'> {\n readonly type: 'PRICE';\n readonly value?: number | null;\n readonly minimum?: number;\n readonly maximum?: number;\n readonly multiplyOf?: number;\n readonly fractionDigits?: boolean | number;\n readonly currency?: string;\n readonly hideText?: boolean;\n}\n\nexport class InputPriceMethods extends InputMethods<IInputPrice, number | null> {\n override control(input: IInputPrice, validators: ValidatorFn[]): FormControl<number | null> {\n if (input.minimum) validators.push(MinNumberValidator(input.minimum));\n if (input.maximum) validators.push(MaxNumberValidator(input.maximum));\n if (input.multiplyOf) validators.push(MultiplyOfNumberValidator(input.multiplyOf));\n\n const value: number | null = input.value !== undefined && Helper.IS.number(input.value) ? input.value : null;\n return new FormControl<number | null>(value, validators);\n }\n\n override value(value: any, input: IInputPrice): number | null {\n return Helper.IS.number(value) ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper, IGeoRouteLength } from '@webilix/helper-library';\nimport { NgxHelperNumberPipe, NgxHelperRoute, NgxHelperRouteService } from '@webilix/ngx-helper-m3';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { NgxFormRoute } from '../../ngx-form.inputs';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputRoute } from './input-route.interface';\n\n@Component({\n host: { selector: 'input-route' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n NgxHelperNumberPipe,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-route.component.html',\n styleUrl: './input-route.component.scss',\n})\nexport class InputRouteComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputRoute = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public route: NgxFormRoute = this.formControl.value || [];\n public distance: IGeoRouteLength = Helper.GEO.routeLength(this.route);\n\n constructor(private readonly ngxHelperRouteService: NgxHelperRouteService) {}\n\n setRoute(): void {\n if (this.formControl.disabled) return;\n\n const get =\n this.route.length > 0\n ? this.ngxHelperRouteService.get(this.route, { view: this.input.center, zoom: this.input.zoom })\n : this.ngxHelperRouteService.get({ view: this.input.center, zoom: this.input.zoom });\n get.then(\n (route: NgxHelperRoute) => {\n this.route = route;\n this.formControl.setValue(route);\n this.formControl.markAsTouched();\n this.distance = Helper.GEO.routeLength(this.route);\n },\n () => this.formControl.markAsTouched(),\n );\n }\n\n resetRoute(): void {\n if (this.formControl.disabled) return;\n\n this.route = [];\n this.formControl.setValue(null);\n this.formControl.markAsTouched();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"route.length > 0 ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'مسیر' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"ngx-form-m3-input-suffix click\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon (click)=\"route.length > 0 ? resetRoute() : setRoute(); formControl.markAsTouched()\">\n {{ route.length > 0 ? 'close' : 'call_split' }}\n </mat-icon>\n </span>\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n <div\n class=\"ngx-helper-form-m3-route-input\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n (click)=\"setRoute()\"\n >\n <div class=\"distance\">{{ route.length > 0 ? (distance.length | ngxHelperNumber) + ' متر' : ' ' }}</div>\n <div class=\"point\">{{ route.length > 0 ? (route.length | ngxHelperNumber) + ' نقطه' : ' ' }}</div>\n </div>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormCoordinates, NgxFormRoute } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputRoute extends Omit<IInput, 'value' | 'english' | 'autoFocus'> {\n readonly type: 'ROUTE';\n readonly value?: NgxFormRoute | null;\n readonly center?: INgxFormCoordinates;\n readonly zoom?: number;\n}\n\nexport class InputRouteMethods extends InputMethods<IInputRoute, NgxFormRoute | null> {\n override control(input: IInputRoute, validators: ValidatorFn[]): FormControl<NgxFormRoute | null> {\n const value: NgxFormRoute =\n input.value && Helper.IS.array(input.value)\n ? input.value.filter(\n (coordinates: INgxFormCoordinates) =>\n Helper.IS.object(coordinates) &&\n Helper.IS.number(coordinates.latitude) &&\n Helper.IS.number(coordinates.longitude),\n )\n : [];\n return new FormControl<NgxFormRoute | null>(value.length > 1 ? value : [], validators);\n }\n\n override value(value: any, input: IInputRoute): NgxFormRoute | null {\n return Helper.IS.array(value) && value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputSelect } from './input-select.interface';\n\n@Component({\n host: { selector: 'input-select' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n MatSelectModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-select.component.html',\n styleUrl: './input-select.component.scss',\n})\nexport class InputSelectComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputSelect = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public searchQuery: string = '';\n\n getTitle(): string {\n return this.input.options.find((option) => option.id === this.formControl.value)?.title || '';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <mat-select\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [style.direction]=\"'rtl'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (closed)=\"searchInput.value = ''; searchQuery = ''\"\n >\n <!-- SEARCH -->\n <div\n class=\"ngx-helper-form-m3-select-input\"\n [style.display]=\"!input.hideSearch && input.options.length > 10 ? '' : 'none'\"\n >\n <input\n type=\"text\"\n [class.ngx-form-m3-en]=\"input.english\"\n placeholder=\"جستجو\"\n (input)=\"searchQuery = searchInput.value.trim()\"\n #searchInput\n />\n </div>\n\n <!-- OPTIONAL -->\n @if (!!input.optional) { <mat-option></mat-option> }\n\n <!-- TRIGGER -->\n <mat-select-trigger>\n <div [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\">{{ getTitle() }}</div>\n </mat-select-trigger>\n\n <!-- OPTIONS -->\n @for (option of input.options; track $index) {\n <!-- CHECK SEARCH QUERY -->\n @if (!searchQuery || option.title.includes(searchQuery)) {\n <mat-option [value]=\"option.id\">\n <div [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\">{{ option.title }}</div>\n </mat-option>\n } }\n </mat-select>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { INgxFormOption } from '../../ngx-form.inputs';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputSelect extends IInput {\n readonly type: 'SELECT';\n readonly title: string;\n readonly options: INgxFormOption[];\n readonly hideSearch?: boolean;\n}\n\nexport class InputSelectMethods extends InputMethods<IInputSelect, string | null> {\n override control(input: IInputSelect, validators: ValidatorFn[]): FormControl<string | null> {\n const ids: string[] = input.options.map((option) => option.id);\n\n let value: string | null = input.value && ids.includes(input.value) ? input.value : null;\n if (value === null && ids.length === 1 && !input.optional) value = ids[0];\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputSelect): string | null {\n return value && input.options.find((option) => option.id === value) ? value : null;\n }\n}\n","import { Component, computed, inject, Input, model, ModelSignal } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\n\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputTag } from './input-tag.interface';\n\n@Component({\n host: { selector: 'input-tag' },\n imports: [\n ReactiveFormsModule,\n FormsModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-tag.component.html',\n styleUrl: './input-tag.component.scss',\n})\nexport class InputTagComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputTag = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public separatorKeysCodes: number[] = [ENTER, COMMA];\n public inputValue: ModelSignal<string> = model('');\n public tags: string[] = Array.isArray(this.formControl.value) ? this.formControl.value : [];\n\n public filteredTags = computed(() => {\n const value: string = this.inputValue().toLowerCase();\n const options: string[] = this.input.tags\n .filter((tag) => !this.tags.includes(tag))\n .filter((t, i, a) => a.indexOf(t) === i)\n .sort((t1, t2) => t1.localeCompare(t2));\n\n return value ? options.filter((option) => option.toLowerCase().includes(value)) : options;\n });\n\n setValues(): void {\n this.tags = this.tags.sort((t1, t2) => t1.localeCompare(t2));\n this.formControl.setValue(this.tags.length === 0 ? null : this.tags);\n this.formControl.markAsTouched();\n\n this.inputValue.set('');\n }\n\n addTag(event: MatChipInputEvent): void {\n const value: string = (event.value || '').trim();\n if (!value || this.tags.includes(value)) return;\n\n this.tags.push(value);\n this.setValues();\n }\n\n removeTag(tag: string): void {\n if (!this.tags.includes(tag)) return;\n\n this.tags = this.tags.filter((t) => t !== tag);\n this.setValues();\n }\n\n selectTag(event: MatAutocompleteSelectedEvent): void {\n const value: string = event.option.viewValue;\n if (!value || this.tags.includes(value)) return;\n\n this.tags.push(value);\n this.setValues();\n event.option.deselect();\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"tags.length === 0 ? 'auto' : 'always'\">\n <mat-label>{{ input.title || 'تگ' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <mat-chip-grid #chipGrid [formControl]=\"formControl\" class=\"ngx-helper-form-m3-tag-input\">\n @for (tag of tags; track $index) {\n <mat-chip-row (removed)=\"removeTag(tag); tagInput.value = ''\">\n <span class=\"tag\">{{ tag }}</span>\n <button matChipRemove type=\"button\"><mat-icon>cancel</mat-icon></button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n <input\n type=\"text\"\n name=\"inputValue\"\n [(ngModel)]=\"inputValue\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [matChipInputFor]=\"chipGrid\"\n [matAutocomplete]=\"auto\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"addTag($event); tagInput.value = ''\"\n #tagInput\n />\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selectTag($event); tagInput.value = ''\">\n @for (option of filteredTags(); track $index) {\n <mat-option [value]=\"option\">{{ option }}</mat-option>\n }\n </mat-autocomplete>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { MaxCountValidator, MinCountValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputTag extends Omit<IInput, 'value' | 'optional' | 'english'> {\n readonly type: 'TAG';\n readonly value?: string[];\n readonly tags: string[];\n readonly minCount?: number;\n readonly maxCount?: number;\n}\n\nexport class InputTagMethods extends InputMethods<IInputTag, string[] | null> {\n override control(input: IInputTag, validators: ValidatorFn[]): FormControl<string[] | null> {\n if (input.minCount) validators.push(MinCountValidator(input.minCount));\n if (input.maxCount) validators.push(MaxCountValidator(input.maxCount));\n\n const value: string[] = (Array.isArray(input.value) ? input.value : [])\n .filter((value: string) => Helper.IS.string(value) && value !== '')\n .filter((value, index, arr) => arr.indexOf(value) === index);\n return new FormControl<string[] | null>(value, validators);\n }\n\n override value(value: any, input: IInputTag): string[] | null {\n return Array.isArray(value) && value.length > 0 ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputText } from './input-text.interface';\n\n@Component({\n host: { selector: 'input-text' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-text.component.html',\n styleUrl: './input-text.component.scss',\n})\nexport class InputTextComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputText = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [maxLength]=\"input.maxLength || 524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [readonly]=\"input.readonly\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { LengthValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputText extends IInput {\n readonly type: 'TEXT';\n readonly title: string;\n readonly minLength?: number;\n readonly maxLength?: number;\n readonly readonly?: boolean;\n}\n\nexport class InputTextMethods extends InputMethods<IInputText, string | null> {\n override control(input: IInputText, validators: ValidatorFn[]): FormControl<string | null> {\n const minLength: number | null = input.minLength && input.minLength > 0 ? input.minLength : null;\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (minLength && maxLength && minLength === maxLength) validators.push(LengthValidator(minLength));\n else {\n if (minLength && minLength > 0) validators.push(Validators.minLength(minLength));\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n }\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputText): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { DecimalPipe, NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective, AutoHeightDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputTextarea } from './input-textarea.interface';\n\n@Component({\n host: { selector: 'input-textarea' },\n imports: [\n DecimalPipe,\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoFocusDirective,\n AutoHeightDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-textarea.component.html',\n styleUrl: './input-textarea.component.scss',\n})\nexport class InputTextareaComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputTextarea = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n\n public isFocused: boolean = false;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- COUNTER -->\n @if (isFocused && input.counter) {\n <mat-hint [align]=\"'end'\">\n {{ formControl.value?.length || 0 | number }}{{ input.maxLength ? ' از ' + (input.maxLength | number) : '' }}\n </mat-hint>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <textarea\n matInput\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? 'ngx-form-m3-en' : ''\"\n [style.height]=\"input.height ? input.height.toString() + 'px' : '75px'\"\n [style.resize]=\"'none'\"\n [maxLength]=\"input.maxLength || 524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [AutoHeightDirective]=\"!!input.autoHeight\"\n [minHeight]=\"input.height || 75\"\n [maxHeight]=\"input.maxHeight || 0\"\n (focus)=\"isFocused = true\"\n (blur)=\"isFocused = false\"\n ></textarea>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputTextarea extends IInput {\n readonly type: 'TEXTAREA';\n readonly title: string;\n readonly height?: number;\n readonly autoHeight?: boolean;\n readonly maxHeight?: number;\n readonly maxLength?: number;\n readonly counter?: boolean;\n}\n\nexport class InputTextareaMethods extends InputMethods<IInputTextarea, string | null> {\n override control(input: IInputTextarea, validators: ValidatorFn[]): FormControl<string | null> {\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputTextarea): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\nimport { INgxFormValues } from '../../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputUrl } from './input-url.interface';\n\n@Component({\n host: { selector: 'input-url' },\n imports: [\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatIconButton,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-url.component.html',\n styleUrl: './input-url.component.scss',\n})\nexport class InputUrlComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputUrl = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n @Input({ required: true }) values!: INgxFormValues;\n @Input({ required: true }) isButtonDisabled!: boolean;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'آدرس سایت' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n @if (input.showIcon) {\n <span matTextSuffix class=\"ngx-form-m3-input-suffix\" [class.ngx-form-m3-disabled-input]=\"formControl.disabled\">\n <span> </span>\n <mat-icon>link</mat-icon>\n </span>\n }\n\n <!-- BUTTON -->\n @if (input.button) {\n <span matIconSuffix>\n <button\n mat-icon-button\n type=\"button\"\n [disabled]=\"isButtonDisabled\"\n (click)=\"input.button.onClick(values)\"\n [tabIndex]=\"-1\"\n >\n <mat-icon [style.color]=\"isButtonDisabled ? undefined : input.button.color\">\n {{ input.button.icon }}\n </mat-icon>\n </button>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"url\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n class=\"ngx-form-m3-en\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n class=\"ngx-form-m3-input-description\"\n [class.ngx-form-m3-disabled-input]=\"formControl.disabled\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputUrl extends Omit<IInput, 'english'> {\n readonly type: 'URL';\n readonly showIcon?: boolean;\n}\n\nexport class InputUrlMethods extends InputMethods<IInputUrl, string | null> {\n override control(input: IInputUrl, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.URL.get(true)));\n\n const value: string | null = input.value && Helper.RE.URL.verify(input.value, true) ? input.value : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputUrl): string | null {\n return typeof value === 'string' && Helper.RE.URL.verify(value, true) ? value : null;\n }\n}\n","import { Component, Injector, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { INgxFormValues, NgxFormInputs } from '../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE, InputInfo } from '.';\n\n@Component({\n selector: 'form-input',\n imports: [NgComponentOutlet],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n})\nexport class InputComponent implements OnInit, OnChanges {\n @Input({ required: true }) formGroup!: FormGroup;\n @Input({ required: true }) input!: NgxFormInputs;\n @Input({ required: true }) config!: IInputConfig;\n @Input({ required: true }) values!: INgxFormValues;\n\n public inputInfo = InputInfo;\n public injector!: Injector;\n public isButtonDisabled!: boolean;\n\n ngOnInit(): void {\n const formControl: FormControl = this.formGroup.get(this.input.name) as FormControl;\n this.injector = Injector.create({\n providers: [\n { provide: INPUT_CONTROL, useValue: formControl },\n { provide: INPUT_TYPE, useValue: this.input },\n { provide: INPUT_CONFIG, useValue: this.config },\n ],\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const formControl = this.injector?.get(INPUT_CONTROL);\n\n this.isButtonDisabled =\n 'button' in this.input &&\n !!this.input.button &&\n (formControl?.disabled || !!this.input.button.disableOn?.(this.values));\n }\n}\n","<ng-container\n *ngComponentOutlet=\"inputInfo[input.type].component; inputs: { values, isButtonDisabled }; injector: injector\"\n></ng-container>\n","import { ComponentType } from '@angular/cdk/portal';\n\nimport { NgxFormInputs } from '../ngx-form.interface';\n\nimport { InputMethods } from './input.interface';\nimport {\n InputAutoCompleteComponent,\n InputAutoCompleteMethods,\n InputBankCardComponent,\n InputBankCardMethods,\n InputBankShebaComponent,\n InputBankShebaMethods,\n InputCheckboxComponent,\n InputCheckboxMethods,\n InputColorComponent,\n InputColorMethods,\n InputComponentComponent,\n InputComponentMethods,\n InputCoordinatesComponent,\n InputCoordinatesMethods,\n InputDateComponent,\n InputDateMethods,\n InputEmailComponent,\n InputEmailMethods,\n InputFileComponent,\n InputFileMethods,\n InputIconComponent,\n InputIconMethods,\n InputIpComponent,\n InputIpMethods,\n InputItemListComponent,\n InputItemListMethods,\n InputMobileComponent,\n InputMobileMethods,\n InputMomentComponent,\n InputMomentMethods,\n InputMultiSelectComponent,\n InputMultiSelectMethods,\n InputNameComponent,\n InputNameMethods,\n InputNumberComponent,\n InputNumberMethods,\n InputOptionListComponent,\n InputOptionListMethods,\n InputPasswordComponent,\n InputPasswordMethods,\n InputPriceComponent,\n InputPriceMethods,\n InputRouteComponent,\n InputRouteMethods,\n InputSelectComponent,\n InputSelectMethods,\n InputTagComponent,\n InputTagMethods,\n InputTextareaComponent,\n InputTextareaMethods,\n InputTextComponent,\n InputTextMethods,\n InputUrlComponent,\n InputUrlMethods,\n} from '.';\n\nexport const InputInfo: {\n [key in NgxFormInputs['type']]: {\n readonly title: string;\n readonly methods: InputMethods<any, any>;\n readonly component: ComponentType<any>;\n };\n} = {\n 'AUTO-COMPLETE': {\n title: 'لیست تکمیلی',\n methods: new InputAutoCompleteMethods(),\n component: InputAutoCompleteComponent,\n },\n 'BANK-CARD': { title: 'شماره کارت بانکی', methods: new InputBankCardMethods(), component: InputBankCardComponent },\n 'BANK-SHEBA': { title: 'شماره شبا', methods: new InputBankShebaMethods(), component: InputBankShebaComponent },\n CHECKBOX: { title: 'یک انتخابی', methods: new InputCheckboxMethods(), component: InputCheckboxComponent },\n COLOR: { title: 'رنگ', methods: new InputColorMethods(), component: InputColorComponent },\n COMPONENT: { title: 'کامپوننت', methods: new InputComponentMethods(), component: InputComponentComponent },\n COORDINATES: { title: 'موقعیت جغرافیایی', methods: new InputCoordinatesMethods(), component: InputCoordinatesComponent },\n DATE: { title: 'تاریخ', methods: new InputDateMethods(), component: InputDateComponent },\n EMAIL: { title: 'ایمیل', methods: new InputEmailMethods(), component: InputEmailComponent },\n FILE: { title: 'فایل', methods: new InputFileMethods(), component: InputFileComponent },\n ICON: { title: 'آیکون', methods: new InputIconMethods(), component: InputIconComponent },\n IP: { title: 'آدرس آیپی', methods: new InputIpMethods(), component: InputIpComponent },\n 'ITEM-LIST': { title: 'لیست مقادیر', methods: new InputItemListMethods(), component: InputItemListComponent },\n MOBILE: { title: 'موبایل', methods: new InputMobileMethods(), component: InputMobileComponent },\n MOMENT: { title: 'زمان', methods: new InputMomentMethods(), component: InputMomentComponent },\n 'MULTI-SELECT': { title: 'چند انتخابی', methods: new InputMultiSelectMethods(), component: InputMultiSelectComponent },\n NAME: { title: 'نام و نام خانوادگی', methods: new InputNameMethods(), component: InputNameComponent },\n NUMBER: { title: 'مقدار عددی', methods: new InputNumberMethods(), component: InputNumberComponent },\n 'OPTION-LIST': { title: 'لیست گزینهها', methods: new InputOptionListMethods(), component: InputOptionListComponent },\n PASSWORD: { title: 'کلمه عبور', methods: new InputPasswordMethods(), component: InputPasswordComponent },\n PRICE: { title: 'قیمت', methods: new InputPriceMethods(), component: InputPriceComponent },\n ROUTE: { title: 'مسیر', methods: new InputRouteMethods(), component: InputRouteComponent },\n SELECT: { title: 'لیست کشویی', methods: new InputSelectMethods(), component: InputSelectComponent },\n TAG: { title: 'تگ', methods: new InputTagMethods(), component: InputTagComponent },\n TEXT: { title: 'متن یک خطی', methods: new InputTextMethods(), component: InputTextComponent },\n TEXTAREA: { title: 'متن چند خطی', methods: new InputTextareaMethods(), component: InputTextareaComponent },\n URL: { title: 'آدرس سایت', methods: new InputUrlMethods(), component: InputUrlComponent },\n};\n","import { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\n\nexport interface INgxFormConfig {\n readonly mobileWidth: number;\n readonly submitTimeout: number;\n readonly appearance: MatFormFieldAppearance;\n}\n\nexport const NGX_FORM_CONFIG = new InjectionToken<Partial<INgxFormConfig>>('NGX-FORM-CONFIG');\n\nexport const provideNgxFormConfig = (config: Partial<INgxFormConfig>): EnvironmentProviders => {\n const providers: Provider[] = [{ provide: NGX_FORM_CONFIG, useValue: config }];\n\n return makeEnvironmentProviders(providers);\n};\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormGroup, NgForm, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { FormErrorDirective } from './directives';\nimport { IInputConfig, InputComponent, InputInfo } from './inputs';\n\nimport { INgxFormConfig, NGX_FORM_CONFIG } from './ngx-form.config';\nimport { INgxForm, INgxFormInit, INgxFormValues, NgxFormInputs } from './ngx-form.interface';\n\ninterface IRow {\n header: string;\n inputs: NgxFormInputs[];\n flex: number[];\n}\n\ninterface IColumn {\n header: string;\n rows: IRow[];\n}\n\ninterface ISection {\n header: string;\n columns: IColumn[];\n flex: number[];\n}\n\n@Component({\n selector: 'ngx-form',\n imports: [ReactiveFormsModule, MatButton, InputComponent, FormErrorDirective],\n templateUrl: './ngx-form.component.html',\n styleUrl: './ngx-form.component.scss',\n})\nexport class NgxFormComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('formObject') ngForm?: NgForm;\n\n @HostListener('window:resize', ['$event'])\n onResize = (event: any): void => this.setSize();\n\n @Input({ required: true }) ngxForm!: INgxForm;\n @Output() onInit: EventEmitter<INgxFormInit> = new EventEmitter<INgxFormInit>();\n @Output() onSubmit: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n @Output() onChange: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n\n protected formGroup!: FormGroup;\n\n protected sections: ISection[] = [];\n protected hiddenInputs: string[] = [];\n protected values: INgxFormValues = {};\n protected lastValues: INgxFormValues = {};\n protected lastSubmit?: Date;\n\n protected isMobile: boolean = false;\n protected inputConfig!: IInputConfig;\n\n constructor(\n private readonly router: Router,\n @Optional() @Inject(NGX_FORM_CONFIG) private readonly config?: Partial<INgxFormConfig>,\n ) {}\n\n ngOnInit(): void {\n this.formGroup = new FormGroup({});\n const inputs: NgxFormInputs[] = this.getInputs();\n\n // SET FORM GROUP INPUTS\n inputs.forEach((input: NgxFormInputs) => this.setInput(input));\n\n // CHECK AUTO FOCUS\n let autoFocus: string | undefined = undefined;\n inputs.forEach((input: NgxFormInputs) => {\n if (!('autoFocus' in input) || !input.autoFocus || autoFocus) return;\n if (!input.disableOn && !input.hideOn) autoFocus = input.name;\n });\n\n // INPUT CONFIG\n this.inputConfig = {\n appearance: this.ngxForm.appearance || this.config?.appearance || 'fill',\n autoFocus,\n };\n\n // UPDATE VALUES\n if (this.ngxForm.updateValues) this.updateValues([]);\n\n // REGISTER VALUE CHANGE\n this.formGroup.valueChanges.subscribe({\n next: () => {\n const changedInputs: string[] = [];\n [...Object.keys(this.lastValues), ...Object.keys(this.formGroup.value)]\n .filter((key: string, index: number, arr: string[]) => arr.indexOf(key) === index)\n .forEach((key: string) => {\n if (this.formGroup.value[key] !== this.lastValues[key]) changedInputs.push(key);\n });\n if (changedInputs.length === 0) return;\n this.lastValues = { ...this.formGroup.value };\n\n this.checkInputs();\n\n if (this.ngxForm.updateValues) {\n this.updateValues(changedInputs);\n this.lastValues = { ...this.formGroup.value };\n }\n\n this.values = this.getValues();\n this.onChange.next(this.values);\n },\n });\n\n this.checkInputs();\n this.setSize();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.sections = [];\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: inputs.columns.map((column) => {\n return {\n header: column.header || '',\n rows: column.rows.map((row) =>\n 'inputs' in row\n ? {\n header: row.header || '',\n inputs: row.inputs,\n flex: row.inputs.map((_, i) => row.flex?.[i] || 1),\n }\n : 'input' in row\n ? { header: row.header, inputs: [row.input], flex: [1] }\n : { header: '', inputs: [row], flex: [1] },\n ),\n flex: [],\n };\n }),\n flex: inputs.columns.map((_, c) => inputs.flex?.[c] || 1),\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [\n {\n header: '',\n rows: [\n {\n header: '',\n inputs: inputs.inputs,\n flex: inputs.inputs.map((_, i) => inputs.flex?.[i] || 1),\n },\n ],\n },\n ],\n flex: [1],\n });\n return;\n }\n\n // HEADER\n if ('input' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs.input], flex: [1] }] }],\n flex: [1],\n });\n return;\n }\n\n // INPUT\n this.sections.push({\n header: '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs], flex: [1] }] }],\n flex: [1],\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInit.next({ formGroup: this.formGroup, ngForm: this.ngForm });\n }\n\n getInputs(): NgxFormInputs[] {\n const list: NgxFormInputs[] = [];\n\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n inputs.columns.forEach((column) => {\n column.rows.forEach((row) => {\n if ('inputs' in row) list.push(...row.inputs);\n else list.push('input' in row ? row.input : row);\n });\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) list.push(...inputs.inputs);\n else list.push('input' in inputs ? inputs.input : inputs);\n });\n\n return list;\n }\n\n getValues(): INgxFormValues {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = {};\n\n const getValue = (input: NgxFormInputs): any => {\n if (this.hiddenInputs.includes(input.name)) return null;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput || formInput.disabled || formInput.errors !== null) return null;\n\n const value: any = InputInfo[input.type].methods.value(formInput.value, input);\n return value;\n };\n\n inputs.forEach((input: NgxFormInputs) => {\n values[input.name] = getValue(input);\n });\n\n return values;\n }\n\n updateValues(changedInputs: string[]): void {\n if (!this.ngxForm.updateValues) return;\n\n const values: INgxFormValues = this.getValues();\n const changes: { [key: string]: any } = this.ngxForm.updateValues(values);\n\n Object.keys(changes)\n .filter((key: string) => !changedInputs.includes(key))\n .forEach((key: string) => {\n const input = this.getInputs().find((i) => i.name === key);\n if (!input) return;\n\n const formInput = this.formGroup.get(key);\n if (!formInput) return;\n\n const value = InputInfo[input.type].methods.value(changes[key], input);\n formInput.setValue(value);\n });\n }\n\n setInput(input: NgxFormInputs): void {\n const name: string = input.name;\n const readonly: boolean = 'readonly' in input && !!input.readonly;\n const validators: ValidatorFn[] =\n input.type === 'CHECKBOX' ||\n input.type === 'ITEM-LIST' ||\n input.type === 'MULTI-SELECT' ||\n input.type === 'OPTION-LIST' ||\n input.type === 'TAG' ||\n input.optional ||\n readonly\n ? []\n : [Validators.required];\n\n this.formGroup.setControl(name, InputInfo[input.type].methods.control(input, validators));\n }\n\n checkInputs(): void {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = this.getValues();\n\n // CHECK DISABLED INPUTS\n inputs.forEach((input: NgxFormInputs) => {\n if (!('disableOn' in input) || !input.disableOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const disabled: boolean = input.disableOn(values);\n disabled ? formInput.disable() : formInput.enable();\n });\n\n // CHECK HIDDEN INPUTS\n this.hiddenInputs = [];\n inputs.forEach((input: NgxFormInputs) => {\n if (!('hideOn' in input) || !input.hideOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const hidden: boolean = input.hideOn(values);\n hidden ? formInput.disable() : formInput.enable();\n if (hidden) this.hiddenInputs.push(input.name);\n });\n }\n\n checkSubmit(): void {\n this.formGroup.markAllAsTouched();\n if (this.formGroup.invalid) return;\n\n const submitTimeout = this.config?.submitTimeout;\n if (!!submitTimeout && this.lastSubmit) {\n const timeout: number = submitTimeout * 1000;\n const duration: number = new Date().getTime() - this.lastSubmit.getTime();\n if (duration < timeout) return;\n }\n\n this.onSubmit.next(this.getValues());\n this.lastSubmit = new Date();\n }\n\n setSize(): void {\n const mobileWidth: number = this.config?.mobileWidth || 600;\n this.isMobile = this.ngxForm.mobileView || window.innerWidth <= mobileWidth;\n }\n\n showSection(section: ISection): boolean {\n for (let c = 0; c < section.columns.length; c++) {\n if (this.showColumn(section.columns[c])) return true;\n }\n\n return false;\n }\n\n showColumn(column: IColumn): boolean {\n for (let r = 0; r < column.rows.length; r++) {\n if (this.showRow(column.rows[r])) return true;\n }\n\n return false;\n }\n\n showRow(row: IRow): boolean {\n for (let i = 0; i < row.inputs.length; i++) {\n if (this.showInput(row.inputs[i])) return true;\n }\n\n return false;\n }\n\n showInput(input: NgxFormInputs): boolean {\n return !this.hiddenInputs.includes(input.name);\n }\n\n onClick(action: string[] | (() => void)): void {\n if (typeof action === 'function') action();\n else this.router.navigate(action);\n }\n}\n","<form [formGroup]=\"formGroup\" (ngSubmit)=\"checkSubmit()\" dir=\"rtl\" class=\"ngx-form\" #formObject=\"ngForm\">\n <section class=\"sections\">\n @for (section of sections; track $index) {\n <!-- CHECK SECTION VIEW -->\n @if (showSection(section)) {\n <!-- SECTION HEADER -->\n @if (section.header) {\n <div class=\"ngx-form-m3-header section-header\">{{ section.header }}</div>\n }\n\n <div class=\"section\" [class.section-mobile]=\"isMobile\">\n <!-- SECTIONS -->\n @for (column of section.columns; track $index) {\n <!-- CHECK COLUMN VIEW -->\n @if (showColumn(column)) {\n <div class=\"column\" [style.flex]=\"section.flex[$index]\">\n <!-- COLUMN HEADER -->\n @if (column.header) {\n <div class=\"ngx-form-m3-header column-header\">{{ column.header }}</div>\n }\n\n <!-- ROWS -->\n @for (row of column.rows; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showRow(row)) {\n <!-- ROW HEADER -->\n @if (row.header) {\n <div class=\"ngx-form-m3-header row-header\">{{ row.header }}</div>\n }\n\n <div class=\"inputs\">\n <!-- INPUTS -->\n @for (input of row.inputs; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showInput(input)) {\n <div class=\"input\" [style.flex]=\"row.flex[$index]\">\n <form-input\n [formGroup]=\"formGroup\"\n [input]=\"input\"\n [config]=\"inputConfig\"\n [values]=\"values\"\n ></form-input>\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </section>\n\n <section class=\"ngx-form-m3-form-buttons\" [class.mobile-view]=\"isMobile\">\n <!-- EXTRA BUTTONS -->\n @for (item of (ngxForm.buttons || []); track $index) {\n <button type=\"button\" mat-stroked-button (click)=\"onClick(item.action)\">{{ item.title }}</button>\n }\n <!-- SUBMIT BUTTON -->\n <button type=\"submit\" mat-flat-button>{{ ngxForm.submit }}</button>\n </section>\n</form>\n","/*\n * Public API Surface of ngx-form-m3\n */\n\nexport * from './lib/ngx-form.component';\nexport * from './lib/ngx-form.config';\nexport * from './lib/ngx-form.inputs';\nexport * from './lib/ngx-form.interface';\n\nexport type { IInputComponent } from './lib/inputs/component/input-component.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i5","i4"],"mappings":"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"}
|