UNPKG

@tapsellorg/angular-material-library

Version:

Angular library for Tapsell

1 lines 54.8 kB
{"version":3,"file":"tapsellorg-angular-material-library-src-lib-input.mjs","sources":["../../projects/pegah-library/src/lib/input/input-type/input-type.directive.ts","../../projects/pegah-library/src/lib/input/constants.ts","../../projects/pegah-library/src/lib/input/configs.ts","../../projects/pegah-library/src/lib/input/field-error.directive.ts","../../projects/pegah-library/src/lib/input/mark-all-as-touched/mark-all-as-touched.directive.ts","../../projects/pegah-library/src/lib/input/persian-to-english/persian-numbers-to-english.directive.ts","../../projects/pegah-library/src/lib/input/financial-input/financial-input.directive.ts","../../projects/pegah-library/src/lib/input/number-to-words/words.constant.ts","../../projects/pegah-library/src/lib/input/number-to-words/number-to-words.service.ts","../../projects/pegah-library/src/lib/input/number-to-words/number-to-words.pipe.ts","../../projects/pegah-library/src/lib/input/money-to-words/money-to-words.pipe.ts","../../projects/pegah-library/src/lib/input/rial-to-toman/rial-to-toman.pipe.ts","../../projects/pegah-library/src/lib/input/input.module.ts","../../projects/pegah-library/src/lib/input/form-validators.ts","../../projects/pegah-library/src/lib/input/autofocus/autofocus.directive.ts","../../projects/pegah-library/src/lib/input/autofocus/autofocus.module.ts","../../projects/pegah-library/src/lib/input/file-validators.ts","../../projects/pegah-library/src/lib/input/tapsellorg-angular-material-library-src-lib-input.ts"],"sourcesContent":["import { Directive, ElementRef, input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: 'input[type]',\n standalone: false,\n})\nexport class PghInputTypeDirective implements OnChanges {\n type = input<'text' | 'email' | 'tel' | 'url' | 'number' | 'password' | string>('');\n showPassword = input<boolean>(false, {\n alias: 'pghShowPassword',\n });\n\n constructor(private elemRef: ElementRef<HTMLInputElement>) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.type) {\n this.handleTypeChange();\n }\n if (changes.showPassword) {\n this.handleShowPasswordChange();\n }\n }\n\n private handleTypeChange() {\n if (!this.type()) return;\n\n switch (this.type()) {\n case 'email':\n this.setInputMode('email');\n break;\n case 'tel':\n this.setInputMode('tel');\n break;\n case 'url':\n this.setInputMode('url');\n break;\n case 'number':\n this.setInputMode('numeric');\n // this.setType('text');\n break;\n case 'password':\n this.handleShowPasswordChange();\n break;\n default:\n this.setInputMode('text');\n }\n }\n\n private setInputMode(inputMode: 'email' | 'tel' | 'url' | 'numeric' | 'text') {\n this.elemRef.nativeElement.inputMode = inputMode;\n }\n\n private handleShowPasswordChange() {\n if (this.type() !== 'password') return;\n\n this.setType(this.showPassword() ? 'text' : 'password');\n }\n\n private setType(type: string) {\n this.elemRef.nativeElement.type = type;\n }\n}\n","export const PGH_DEFAULT_ERROR_MESSAGES = {\n required: 'این قسمت را خالی نگذارید',\n pattern: 'فرمت ورودی اشتباه است',\n email: 'ایمیل اشتباه است',\n password: 'پسورد اشتباه است',\n url: 'یک URL مثل http://example.com وارد کنید',\n entity: 'یک Entity مثل market://example',\n phoneNumber: 'یک شماره تلفن مثل 09009990099 وارد کنید',\n uppercase: 'کارکترهای Capital قابل قبول نیست',\n postalCode: 'کد پستی وارد شده معتبر نیست.',\n sheba: 'شماره‌ی شبای ۲۴ رقمی بدون IR وارد کنید',\n shebaIr: 'شماره‌ی شبای ۲۴ رقمی با IR وارد کنید',\n debitCard: 'یک شماره کارت مثلا 2222333344445555 وارد کنید',\n nationalCode: 'کدملی وارد شده معتبر نیست',\n unknownOption: 'مقدار وارد شده معتبر نیست',\n forbiddenOption: 'این ورودی قابل قبول نیست',\n forbiddenFileName: 'لطفا نامی کوتاه، انگلیسی و بدون فاصله برای فایل خود انتخاب کنید',\n forbiddenFileType: 'فایل با این پسوند قابل انتخاب نیست',\n illegalSize: 'حجم فایل انتخاب شده بیشتر از حد مجاز است',\n};\n\nexport const REGEX = {\n // =========================\n // 🌍 Web & Network\n // =========================\n\n /** Matches HTTP and HTTPS URLs (e.g., https://example.com/path) */\n URL: /^https?:\\/\\/.*\\..*$/i,\n\n /** Matches entity URIs like `any://something` */\n ENTITY: /^(.*)(:\\/\\/)(.*)$/i,\n\n /** Matches valid domain names (e.g., example.com) */\n DOMAIN: /^(?!-)(?:[a-zA-Z0-9\\-]{1,63}\\.)+[a-zA-Z]{2,63}$/,\n\n /** Matches simple slug strings used in URLs (e.g., my-post-title) */\n SLUG: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,\n\n // =========================\n // 📱 Communication & Identity\n // =========================\n\n /** Matches various international phone number formats */\n PHONE_NUMBER: /^\\+*\\(?\\d{1,4}\\)?[\\d ./-]*$/i,\n\n /** Simplified but practical email validation */\n EMAIL: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/,\n\n /** Matches usernames (2–30 chars, letters/numbers/underscores) */\n USERNAME: /^[A-Za-z0-9_]{2,30}$/,\n\n /** Strong password: upper, lower, number, special char, 8–64 length */\n PASSWORD_STRONG:\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*()_\\-+=\\[\\]{};':\"\\\\|,.<>/?]).{8,64}$/,\n\n // =========================\n // 🔢 Numeric & Financial\n // =========================\n\n /** Integer numbers (e.g., 42, -5) */\n INTEGER: /^-?\\d+$/,\n\n /** Floating-point numbers (e.g., 3.14, -0.001) */\n FLOAT: /^-?\\d+(\\.\\d+)?$/,\n\n /** Currency-like values (e.g., 1,234.56 or $99.00) */\n CURRENCY: /^\\$?\\d{1,3}(,\\d{3})*(\\.\\d{2})?$/,\n\n /** Iranian Sheba number with \"IR\" prefix */\n SHABA_WITH_IR: /^IR\\d{24}$/,\n\n /** Iranian Sheba number without \"IR\" prefix */\n SHABA_NO_IR: /^\\d{24}$/,\n\n /** Debit card numbers (16 digits) */\n DEBIT_CARD: /^\\d{16}$/,\n\n // =========================\n // 🧍 Personal / Localized (Iran-specific)\n // =========================\n\n /** Iranian national code (10 or 12 digits) */\n NATIONAL_CODE: /^(\\d{10}|\\d{12})$/,\n\n /** Iranian phone numbers (optional +98 or 0 prefix) */\n IR_PHONE: /^(\\+98|0)?9\\d{9}$/,\n\n // =========================\n // 🧾 Text Formatting / Casing\n // =========================\n\n /** Disallows uppercase letters */\n NO_UPPERCASE: /^[^A-Z]*$/,\n\n /** Contains at least one digit */\n HAS_NUMBER: /\\d/,\n\n /** Contains at least one uppercase letter */\n HAS_CAPITAL_CASE: /[A-Z]/,\n\n /** Contains at least one lowercase letter */\n HAS_SMALL_CASE: /[a-z]/,\n\n /** Non-empty string without leading or trailing whitespace */\n TRIMMED_STRING: /^\\S(?:.*\\S)?$/,\n\n // =========================\n // 🧱 Postal / Address\n // =========================\n\n /** 10-digit postal code (Iran format) */\n POSTAL_CODE: /^[0-9]{10}$/,\n\n // =========================\n // 🎨 Frontend / CSS / HTML\n // =========================\n\n /** Valid CSS class name */\n CSS_CLASS: /^[a-zA-Z_-][a-zA-Z0-9_-]*$/,\n\n /** Valid CSS ID selector (starts with #) */\n CSS_ID: /^#[a-zA-Z_-][a-zA-Z0-9_-]*$/,\n\n /** Simple HTML tag pattern (e.g., <div>, </span>) */\n HTML_TAG: /^<\\/?[a-z][\\s\\S]*>$/i,\n\n // =========================\n // 📅 Dates & Times\n // =========================\n\n /** ISO date format (YYYY-MM-DD) */\n DATE_ISO: /^\\d{4}-\\d{2}-\\d{2}$/,\n\n /** 24-hour time format (HH:mm or HH:mm:ss) */\n TIME_24H: /^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$/,\n\n /** ISO datetime format (YYYY-MM-DDTHH:mm:ssZ) */\n DATETIME_ISO: /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z?$/,\n};\n","import { InjectionToken } from '@angular/core';\nimport { PghErrorMessages } from './models';\nimport { PGH_DEFAULT_ERROR_MESSAGES } from './constants';\n\nexport const PGH_FIELD_ERROR_MESSAGES = new InjectionToken<PghErrorMessages>('errorMessages', {\n providedIn: 'root',\n factory: () => PGH_DEFAULT_ERROR_MESSAGES,\n});\n","import {\n AfterViewInit,\n Directive,\n Inject,\n input,\n OnChanges,\n OnDestroy,\n Optional,\n Self,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { AbstractControlDirective, NgControl } from '@angular/forms';\nimport { MAT_FORM_FIELD, MatFormField } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PGH_FIELD_ERROR_MESSAGES } from './configs';\nimport { PghErrorMessages } from './models';\nimport { PGH_DEFAULT_ERROR_MESSAGES } from './constants';\n\n@Directive({\n selector: '[pghFieldError]',\n standalone: false,\n})\nexport class PghFieldErrorDirective implements OnChanges, OnDestroy, AfterViewInit {\n private _destroyed = new Subject<void>();\n _errorMessages = input<PghErrorMessages | string | null>('', {\n alias: 'pghFieldError',\n });\n errorMessages: PghErrorMessages = {};\n\n private get ngControl(): NgControl | AbstractControlDirective | undefined {\n return this._formField?._control?.ngControl ?? this._ngControl;\n }\n\n constructor(\n private template: TemplateRef<any>,\n private containerRef: ViewContainerRef,\n @Inject(PGH_FIELD_ERROR_MESSAGES) private DEFAULT_ERROR_MESSAGES: PghErrorMessages,\n @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField,\n @Optional() @Self() private _ngControl?: NgControl,\n ) {}\n\n ngAfterViewInit() {\n // this.ngControl?.valueChanges?.pipe()\n this.setErrorMessages();\n this.handleErrors();\n this.ngControl?.statusChanges?.pipe(takeUntil(this._destroyed))?.subscribe?.({\n next: value => {\n if (this.ngControl?.valid) return;\n this.handleErrors();\n },\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes._errorMessages) {\n this.setErrorMessages();\n this.handleErrors();\n }\n }\n\n private setErrorMessages() {\n const errorMessagesObject = this._errorMessages();\n\n this.errorMessages = {\n ...PGH_DEFAULT_ERROR_MESSAGES,\n ...this.DEFAULT_ERROR_MESSAGES,\n ...(typeof errorMessagesObject === 'object' ? errorMessagesObject : {}),\n };\n }\n\n private handleErrors() {\n this.containerRef.clear();\n if (!this.errorMessages || !this.ngControl) return;\n\n Object.keys(this.ngControl.errors ?? {}).some(key => {\n const message = this.errorMessages[key];\n if (message) {\n this.createErrorView(key);\n return true;\n }\n return false;\n });\n }\n\n private createErrorView(key: string) {\n const message = this.errorMessages[key];\n\n this.containerRef.createEmbeddedView(this.template, {\n $implicit: message,\n key: key,\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n}\n","import { Directive, HostListener, Self } from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\n\n@Directive({\n selector: 'form[formGroup]',\n standalone: false,\n})\nexport class PghMarkAllAsTouchedDirective {\n @HostListener('submit')\n onSubmit(): void {\n this.container.control?.markAllAsTouched();\n }\n\n constructor(@Self() private container: ControlContainer) {}\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { StringUtils } from '@tapsellorg/angular-material-library/src/lib/common';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: 'input[pghPersianNumbersToEnglish]',\n standalone: false,\n})\nexport class PghPersianNumbersToEnglishDirective {\n constructor(private el: ElementRef, private control: NgControl) {}\n\n @HostListener('input') onInput() {\n if (!this.control.control) return;\n const convertedNumbers = StringUtils.convertPersianNumbersToEnglish(\n this.el.nativeElement.value,\n );\n this.control.control.setValue(convertedNumbers);\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Inject,\n input,\n LOCALE_ID,\n} from '@angular/core';\nimport { formatNumber } from '@angular/common';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StringUtils } from '@tapsellorg/angular-material-library/src/lib/common';\n\n@Directive({\n selector: 'input[pghFinancialInput]',\n providers: [\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: PghFinancialInputDirective },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PghFinancialInputDirective),\n multi: true,\n },\n ],\n standalone: false,\n})\nexport class PghFinancialInputDirective {\n private _value: number | string | null = null;\n\n constructor(\n private elementRef: ElementRef<HTMLInputElement>,\n @Inject(LOCALE_ID) private localeId: string,\n ) {}\n\n value = input('', {\n transform: (value: number | string | null) => {\n this._value = value;\n this.formatValue(value);\n return this._value;\n },\n });\n\n private formatValue(value: number | string | null, bypassValueCheck: boolean = false) {\n if (value !== null) {\n if (bypassValueCheck || Number(value) < 1000) {\n this.elementRef.nativeElement.value = formatNumber(Number(value), this.localeId);\n } else {\n this.elementRef.nativeElement.value = String(value);\n }\n } else {\n this.elementRef.nativeElement.value = '';\n }\n }\n\n @HostListener('input', ['$event.target.value'])\n onInput(value: string) {\n value = StringUtils.convertPersianNumbersToEnglish(value);\n const parsedValue = parseFloat(value.replace(/[^\\d]/g, ''));\n this._value = !isNaN(parsedValue) ? parsedValue : null;\n this.formatValue(this._value, true);\n this._onChange(this._value);\n }\n\n @HostListener('blur')\n _onBlur() {\n this.formatValue(this._value, true);\n this._onTouched(this._value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onChange(_: any): void {}\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n _onTouched(_: any): void {}\n\n writeValue(value: any) {\n this._value = value;\n this.formatValue(this._value);\n }\n\n registerOnChange(fn: (value: any) => void) {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: (value: any) => void) {\n this._onTouched = fn;\n }\n}\n","export const ZERO: string = '';\nexport const DELIMITER: string = ' و ';\nexport const NEGATIVE: string = 'منفی ';\nexport const UNITS = [\n '',\n 'یک',\n 'دو',\n 'سه',\n 'چهار',\n 'پنج',\n 'شش',\n 'هفت',\n 'هشت',\n 'نه',\n 'ده',\n 'یازده',\n 'دوازده',\n 'سیزده',\n 'چهارده',\n 'پانزده',\n 'شانزده',\n 'هفده',\n 'هجده',\n 'نوزده',\n 'بیست',\n];\nexport const TENS = ['', '', 'بیست', 'سی', 'چهل', 'پنجاه', 'شصت', 'هفتاد', 'هشتاد', 'نود'];\nexport const HUNDREDS = [\n '',\n 'یکصد',\n 'دویست',\n 'سیصد',\n 'چهارصد',\n 'پانصد',\n 'ششصد',\n 'هفتصد',\n 'هشتصد',\n 'نهصد',\n];\nexport const SCALES = [\n '',\n ' هزار',\n ' میلیون',\n ' میلیارد',\n ' بیلیون',\n ' بیلیارد',\n ' تریلیون',\n ' تریلیارد',\n ' کوآدریلیون',\n ' کادریلیارد',\n ' کوینتیلیون',\n ' کوانتینیارد',\n ' سکستیلیون',\n ' سکستیلیارد',\n ' سپتیلیون',\n ' سپتیلیارد',\n ' اکتیلیون',\n ' اکتیلیارد',\n ' نانیلیون',\n ' نانیلیارد',\n ' دسیلیون',\n ' دسیلیارد',\n];\nexport const DECIMAL_SUFFIXES = [\n '',\n 'دهم',\n 'صدم',\n 'هزارم',\n 'ده‌هزارم',\n 'صد‌هزارم',\n 'میلیونوم',\n 'ده‌میلیونوم',\n 'صدمیلیونوم',\n 'میلیاردم',\n 'ده‌میلیاردم',\n 'صد‌‌میلیاردم',\n];\n","import { Injectable } from '@angular/core';\nimport {\n DECIMAL_SUFFIXES,\n DELIMITER,\n HUNDREDS,\n NEGATIVE,\n SCALES,\n TENS,\n UNITS,\n ZERO,\n} from './words.constant';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PghNumberToWordsService {\n constructor() {}\n\n convertNumberToWords = (value: number) => {\n let input = value.toString().replace(/[^0-9.-]/g, '');\n let isNegative = false;\n const floatParse = parseFloat(input);\n if (isNaN(floatParse)) {\n return ZERO;\n }\n\n if (floatParse < 0) {\n isNegative = true;\n input = input.replace(/-/g, '');\n }\n\n let decimalPart = '';\n let integerPart = input;\n const pointIndex = input.indexOf('.');\n if (pointIndex > -1) {\n integerPart = input.substring(0, pointIndex);\n decimalPart = input.substring(pointIndex + 1, input.length);\n }\n\n if (integerPart.length > 66) {\n return 'خارج از محدوده';\n }\n\n const slicedNumber = this.prepareNumber(integerPart);\n const output = [];\n for (let i = 0; i < slicedNumber.length; i += 1) {\n const converted = this.integerToWords(slicedNumber[i]);\n if (converted !== '') {\n output.push(converted + SCALES[slicedNumber.length - (i + 1)]);\n }\n }\n if (decimalPart.length > 0) {\n decimalPart = this.convertDecimalPart(decimalPart);\n }\n\n return (isNegative ? NEGATIVE : '') + output.join(DELIMITER) + decimalPart;\n };\n\n prepareNumber = (num: any) => {\n let output = num;\n if (typeof output === 'number') {\n output = output.toString();\n }\n\n if (output.length % 3 === 1) {\n output = `00${output}`;\n } else if (output.length % 3 === 2) {\n output = `0${output}`;\n }\n return output.replace(/\\d{3}(?=\\d)/g, '$&*').split('*');\n };\n\n integerToWords = (num: any) => {\n if (parseInt(num, 0) === 0) {\n return '';\n }\n const parsedInt = parseInt(num, 0);\n if (parsedInt <= 20) {\n return UNITS[parsedInt];\n }\n if (parsedInt < 100) {\n const ones = parsedInt % 10;\n const tens = (parsedInt - ones) / 10;\n if (ones > 0) {\n return TENS[tens] + DELIMITER + UNITS[ones];\n }\n return TENS[tens];\n }\n const ones = parsedInt % 10;\n const hundreds = (parsedInt - (parsedInt % 100)) / 100;\n const tens = (parsedInt - (hundreds * 100 + ones)) / 10;\n\n const output = [HUNDREDS[hundreds]];\n\n const secondPart = tens * 10 + ones;\n if (secondPart === 0) {\n return output.join(DELIMITER);\n }\n\n if (secondPart <= 20) {\n output.push(UNITS[secondPart]);\n } else {\n output.push(TENS[tens]);\n if (ones > 0) {\n output.push(UNITS[ones]);\n }\n }\n\n return output.join(DELIMITER);\n };\n\n convertDecimalPart = (decimalPart: any) => {\n decimalPart = decimalPart.replace(/0*$/, '');\n\n if (decimalPart === '') {\n return '';\n }\n\n const maxDecimalLength = DECIMAL_SUFFIXES.length - 1;\n if (decimalPart.length > maxDecimalLength) {\n decimalPart = decimalPart.substring(0, maxDecimalLength);\n }\n return (\n ' ممیز ' + this.convertNumberToWords(decimalPart) + ' ' + DECIMAL_SUFFIXES[decimalPart.length]\n );\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PghNumberToWordsService } from './number-to-words.service';\n\n@Pipe({\n name: 'pghNumberToWords',\n standalone: false,\n})\nexport class PghNumberToWordsPipe implements PipeTransform {\n constructor(protected pghNumberToWordsService: PghNumberToWordsService) {}\n\n transform(number: number): string {\n return this.pghNumberToWordsService.convertNumberToWords(number);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PghNumberToWordsService } from '../number-to-words/number-to-words.service';\n\n@Pipe({\n name: 'pghMoneyToWords',\n standalone: false,\n})\nexport class PghMoneyToWordsPipe implements PipeTransform {\n constructor(protected pghNumberToWordsService: PghNumberToWordsService) {}\n\n transform(number: number): string {\n if (Number(number) === 0) return '';\n const value = isNaN(number) ? Number(number) : number;\n const tomanPart =\n value > 9\n ? `${this.pghNumberToWordsService.convertNumberToWords(Math.floor(value / 10))} تومان`\n : '';\n const rialPart =\n value % 10 > 0 ? `${this.pghNumberToWordsService.convertNumberToWords(value % 10)} ریال` : '';\n return tomanPart && rialPart ? tomanPart + ' و ' + rialPart : tomanPart ? tomanPart : rialPart;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'pghRialToToman',\n standalone: false,\n})\nexport class PghRialToTomanPipe implements PipeTransform {\n transform(number: number | null): number {\n if (!number) return 0;\n const value = isNaN(number) ? Number(number) : number;\n return Math.floor(value / 10);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PghInputTypeDirective } from './input-type/input-type.directive';\nimport { PghFieldErrorDirective } from './field-error.directive';\nimport { PghMarkAllAsTouchedDirective } from './mark-all-as-touched/mark-all-as-touched.directive';\nimport { PghPersianNumbersToEnglishDirective } from './persian-to-english/persian-numbers-to-english.directive';\nimport { PghFinancialInputDirective } from './financial-input/financial-input.directive';\nimport { PghNumberToWordsPipe } from './number-to-words/number-to-words.pipe';\nimport { PghMoneyToWordsPipe } from './money-to-words/money-to-words.pipe';\nimport { PghRialToTomanPipe } from './rial-to-toman/rial-to-toman.pipe';\n\n@NgModule({\n declarations: [\n PghInputTypeDirective,\n PghFieldErrorDirective,\n PghMarkAllAsTouchedDirective,\n PghPersianNumbersToEnglishDirective,\n PghFinancialInputDirective,\n PghNumberToWordsPipe,\n PghMoneyToWordsPipe,\n PghRialToTomanPipe,\n ],\n imports: [CommonModule],\n exports: [\n PghInputTypeDirective,\n PghFieldErrorDirective,\n PghMarkAllAsTouchedDirective,\n PghPersianNumbersToEnglishDirective,\n PghFinancialInputDirective,\n PghNumberToWordsPipe,\n PghMoneyToWordsPipe,\n PghRialToTomanPipe,\n ],\n})\nexport class PghInputModule {}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from './constants';\n\n// @dynamic\nexport class PghFormValidators {\n /**\n * FormGroup Validator\n *\n * ```typescript\n * this.formBuilder.group({\n * password: [],\n * confirmPassword: [],\n * }, {\n * validators: [PghFormValidators.matchPassword]\n * })\n * ```\n *\n * @param passwordField\n * @param confirmField\n */\n static matchPassword(passwordField: string, confirmField: string) {\n return (formGroup: AbstractControl) => {\n const field1 = formGroup.get(passwordField);\n const field2 = formGroup.get(confirmField);\n const password = field1?.value;\n const confirmPassword = field2?.value;\n return password !== confirmPassword ? { mismatchPassword: true } : undefined;\n };\n }\n\n static urlValidator(): ValidatorFn {\n return PghFormValidators.pattern(REGEX.URL, 'url');\n }\n\n /**\n * Validates an android entity. Example: any://any\n */\n static entityValidator(): ValidatorFn {\n return PghFormValidators.pattern(REGEX.ENTITY, 'entity');\n }\n\n static phoneNumberValidator(): ValidatorFn {\n return PghFormValidators.pattern(REGEX.PHONE_NUMBER, 'phoneNumber');\n }\n\n /**\n * Uppercase letters aren't allowed\n */\n static noUppercase(): ValidatorFn {\n return PghFormValidators.pattern(REGEX.NO_UPPERCASE, 'uppercase');\n }\n\n static postalCode(): ValidatorFn {\n return PghFormValidators.pattern(REGEX.POSTAL_CODE, 'postalCode');\n }\n\n static shaba(includeIR = true): ValidatorFn {\n return PghFormValidators.pattern(\n includeIR ? REGEX.SHABA_WITH_IR : REGEX.SHABA_NO_IR,\n includeIR ? 'shebaIr' : 'sheba',\n );\n }\n\n static debitCard(): ValidatorFn {\n return PghFormValidators.pattern(REGEX.DEBIT_CARD, 'debitCard');\n }\n\n /**\n * Runs the validator only if the condition function returns true\n * you can optionally include an elseValidator\n * @param condition\n * @param validator\n * @param elseValidator\n */\n static conditionalValidator(\n condition: () => boolean,\n validator: ValidatorFn,\n elseValidator?: ValidatorFn,\n ): ValidatorFn {\n return (control: AbstractControl): ValidatorRet => {\n if (condition()) {\n return validator(control);\n }\n return elseValidator ? elseValidator(control) : null;\n };\n }\n\n /**\n * Validates a given condition function is true. If it's not, It'll be invalid with the errorName provided\n * @param condition\n * @param errorName\n */\n static validateCondition(\n condition: (control: AbstractControl) => boolean,\n errorName: string,\n ): ValidatorFn {\n return (control: AbstractControl): ValidatorRet =>\n condition(control) ? null : { [errorName]: { value: control.value } };\n }\n\n /**\n * Validates the value is not any of the given options\n * @param forbiddenValues\n */\n static forbiddenValues(forbiddenValues: any[]): ValidatorFn {\n return (control: AbstractControl): ValidatorRet =>\n forbiddenValues.includes(control.value)\n ? { forbiddenOption: { value: control.value } }\n : null;\n }\n\n /**\n * Validates the value is one of the given options\n * @param allowedValues\n */\n static allowedValues(allowedValues: any[]): ValidatorFn {\n return (control: AbstractControl): ValidatorRet => {\n if (!control.value) return null;\n\n return allowedValues.includes(control.value)\n ? null\n : { unknownOption: { value: control.value } };\n };\n }\n\n /**\n * Same as the angular pattern validator but with a custom errorName.\n * This is useful when you want to check multiple patterns against a control and\n * display different error messages for each pattern\n * @param regex Regex to check\n * @param errorName a custom error name\n */\n static pattern(regex: RegExp, errorName: string): ValidatorFn {\n return (control: AbstractControl): ValidatorRet => {\n if (!control.value || typeof control.value !== 'string') return null;\n\n return regex.exec(control.value) ? null : { [errorName]: { value: control.value } };\n };\n }\n\n /**\n * Opposite of the pattern validator\n * @param regex Regex to check\n * @param errorName a custom error name\n */\n static forbiddenPattern(regex: RegExp, errorName: string): ValidatorFn {\n return (control: AbstractControl): ValidatorRet => {\n if (!control.value || typeof control.value !== 'string') return null;\n\n return regex.exec(control.value) ? { [errorName]: { value: control.value } } : null;\n };\n }\n\n static iranianNationalCode(): ValidatorFn {\n return PghFormValidators.pattern(REGEX.NATIONAL_CODE, 'nationalCode');\n }\n\n static hasNumber() {\n return PghFormValidators.pattern(REGEX.HAS_NUMBER, 'hasNumber');\n }\n\n static hasCapitalCase() {\n return PghFormValidators.pattern(REGEX.HAS_CAPITAL_CASE, 'hasCapitalCase');\n }\n\n static hasSmallCase() {\n return PghFormValidators.pattern(REGEX.HAS_SMALL_CASE, 'hasSmallCase');\n }\n}\n\ntype ValidatorRet = ValidationErrors | null;\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[pghAutofocus]',\n standalone: false,\n})\nexport class PghAutofocusDirective implements AfterViewInit {\n constructor(private el: ElementRef) {}\n ngAfterViewInit() {\n setTimeout(() => {\n this.el.nativeElement?.focus?.();\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PghAutofocusDirective } from './autofocus.directive';\n\n@NgModule({\n declarations: [PghAutofocusDirective],\n imports: [CommonModule],\n exports: [PghAutofocusDirective],\n})\nexport class PghAutofocusModule {}\n","import { PGH_DEFAULT_ERROR_MESSAGES } from './constants';\n\ntype PghDimension = { width: number; height: number };\n\nexport class PghFileValidators {\n private static readonly NAME_VALIDATOR_PATTERN =\n /^[~`!@#$%^&*()_+=[\\]\\\\{}|;':\",.\\/<>?a-zA-Z0-9-]{1,60}$/i;\n private static messages = PGH_DEFAULT_ERROR_MESSAGES;\n\n static checkAllowedTypes(acceptableTypes: any[], fileType: string) {\n const acceptedTypesWithStar = acceptableTypes\n .filter(t => t.includes('*'))\n .map(type => type.split('/')[0]);\n const acceptedTypesWithoutStar = acceptableTypes.filter(t => !t.includes('*'));\n const splitFileType = fileType.split('/')[0];\n\n if (\n !acceptedTypesWithoutStar.includes(fileType) &&\n !acceptedTypesWithStar.includes(splitFileType)\n ) {\n return this.messages.forbiddenFileType;\n }\n return null;\n }\n\n static checkNameValidator(fileName: string) {\n if (!PghFileValidators.NAME_VALIDATOR_PATTERN.test(fileName))\n return this.messages.forbiddenFileName;\n return null;\n }\n\n static checkSizeValidation(maxSize: number, fileSize: number) {\n if (maxSize * 1024 < fileSize / 1024) return this.messages.illegalSize;\n return null;\n }\n\n static checkDimensionsValidation(\n width: number,\n height: number,\n allowedDimensions: Array<PghDimension>,\n ) {\n const isValid = allowedDimensions.some(d => d.width === width && d.height === height);\n\n if (isValid) return null;\n\n const dimensionsText = allowedDimensions.map(d => `${d.width}×${d.height}`).join(' یا ');\n\n return `ابعاد فایل انتخاب‌شده باید ${dimensionsText} پیکسل باشد`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PghNumberToWordsService"],"mappings":"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