pjc-fields 0.0.69 → 0.0.70
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pjc-fields.mjs","sources":["../../../projects/pjc-fields/src/lib/validators/pjc-validators.ts","../../../projects/pjc-fields/src/lib/utils/form-validation.ts","../../../projects/pjc-fields/src/lib/components/cep-field/cep-field.component.ts","../../../projects/pjc-fields/src/lib/components/cep-field/cep-field.component.html","../../../projects/pjc-fields/src/lib/components/chassi-field/chassi-input.directive.ts","../../../projects/pjc-fields/src/lib/components/chassi-field/chassi-field.component.ts","../../../projects/pjc-fields/src/lib/components/chassi-field/chassi-field.component.html","../../../projects/pjc-fields/src/lib/components/cidade-field/pjc-cidade.service.ts","../../../projects/pjc-fields/src/lib/components/cidade-field/pjc-cidade-service.token.ts","../../../projects/pjc-fields/src/lib/components/cidade-field/cidade-field.component.ts","../../../projects/pjc-fields/src/lib/components/cidade-field/cidade-field.component.html","../../../projects/pjc-fields/src/lib/components/cnh-field/cnh-field.component.ts","../../../projects/pjc-fields/src/lib/components/cnh-field/cnh-field.component.html","../../../projects/pjc-fields/src/lib/components/cnpj-field/cnpj-field.component.ts","../../../projects/pjc-fields/src/lib/components/cnpj-field/cnpj-field.component.html","../../../projects/pjc-fields/src/lib/components/cpf-cnpj-field/cpf-cnpj-field.component.ts","../../../projects/pjc-fields/src/lib/components/cpf-cnpj-field/cpf-cnpj-field.component.html","../../../projects/pjc-fields/src/lib/components/cpf-field/cpf-field.component.ts","../../../projects/pjc-fields/src/lib/components/cpf-field/cpf-field.component.html","../../../projects/pjc-fields/src/lib/components/data-field/data-field.component.ts","../../../projects/pjc-fields/src/lib/components/data-field/data-field.component.html","../../../projects/pjc-fields/src/lib/components/data-hora-field/data-hora-field.component.ts","../../../projects/pjc-fields/src/lib/components/data-hora-field/data-hora-field.component.html","../../../projects/pjc-fields/src/lib/components/detalhes/detalhes.component.ts","../../../projects/pjc-fields/src/lib/components/detalhes/detalhes.component.html","../../../projects/pjc-fields/src/lib/components/email-field/email-field.component.ts","../../../projects/pjc-fields/src/lib/components/email-field/email-field.component.html","../../../projects/pjc-fields/src/lib/components/enum-field/pjc-enum-service.token.ts","../../../projects/pjc-fields/src/lib/components/enum-field/pjc-enum.service.ts","../../../projects/pjc-fields/src/lib/components/enum-field/enum-field.component.ts","../../../projects/pjc-fields/src/lib/components/enum-field/enum-field.component.html","../../../projects/pjc-fields/src/lib/components/erro-validacao/erro-validacao.component.ts","../../../projects/pjc-fields/src/lib/components/erro-validacao/erro-validacao.component.html","../../../projects/pjc-fields/src/lib/components/filtro-field/pjc-filtro.model.ts","../../../projects/pjc-fields/src/lib/components/filtro-field/pjc-filtro-parsers.ts","../../../projects/pjc-fields/src/lib/components/filtro-field/filtro-field.component.ts","../../../projects/pjc-fields/src/lib/components/filtro-field/filtro-field.component.html","../../../projects/pjc-fields/src/lib/components/hora-field/hora-field.component.ts","../../../projects/pjc-fields/src/lib/components/hora-field/hora-field.component.html","../../../projects/pjc-fields/src/lib/components/imei-field/imei-field.component.ts","../../../projects/pjc-fields/src/lib/components/imei-field/imei-field.component.html","../../../projects/pjc-fields/src/lib/components/integer-field/integer-field.component.ts","../../../projects/pjc-fields/src/lib/components/integer-field/integer-field.component.html","../../../projects/pjc-fields/src/lib/components/moeda-field/moeda-field.component.ts","../../../projects/pjc-fields/src/lib/components/moeda-field/moeda-field.component.html","../../../projects/pjc-fields/src/lib/components/numero-cartao-field/numero-cartao-field.component.ts","../../../projects/pjc-fields/src/lib/components/numero-cartao-field/numero-cartao-field.component.html","../../../projects/pjc-fields/src/lib/components/password-field/password-field.component.ts","../../../projects/pjc-fields/src/lib/components/password-field/password-field.component.html","../../../projects/pjc-fields/src/lib/components/placa-field/placa-field.component.ts","../../../projects/pjc-fields/src/lib/components/placa-field/placa-field.component.html","../../../projects/pjc-fields/src/lib/components/renavam-field/renavam-field.component.ts","../../../projects/pjc-fields/src/lib/components/renavam-field/renavam-field.component.html","../../../projects/pjc-fields/src/lib/components/telefone-field/telefone-field.component.ts","../../../projects/pjc-fields/src/lib/components/telefone-field/telefone-field.component.html","../../../projects/pjc-fields/src/lib/components/tipo-pessoa-field/tipo-pessoa-field.component.ts","../../../projects/pjc-fields/src/lib/components/tipo-pessoa-field/tipo-pessoa-field.component.html","../../../projects/pjc-fields/src/lib/components/uf-field/uf-field.constants.ts","../../../projects/pjc-fields/src/lib/components/uf-field/uf-field.component.ts","../../../projects/pjc-fields/src/lib/components/uf-field/uf-field.component.html","../../../projects/pjc-fields/src/lib/components/uppercase-field/uppercase-field.component.ts","../../../projects/pjc-fields/src/lib/components/uppercase-field/uppercase-field.component.html","../../../projects/pjc-fields/src/lib/pjc-fields.ts","../../../projects/pjc-fields/src/lib/utils/pjc-utils.ts","../../../projects/pjc-fields/src/public-api.ts","../../../projects/pjc-fields/src/pjc-fields.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class PjcValidators {\n static cpf(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.replace(/\\D/g, '');\n\n if (!value) return null;\n\n if (value.length !== 11 || /^(\\d)\\1+$/.test(value)) {\n return { cpfInvalido: true };\n }\n\n if (!PjcValidators.validateCpfDigits(value)) {\n return { cpfInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateCpfDigits(cpf: string): boolean {\n const calculateDigit = (slice: string, factor: number) => {\n let total = 0;\n for (const digit of slice) {\n total += parseInt(digit) * factor--;\n }\n const remainder = total % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n };\n\n const digit1 = calculateDigit(cpf.substring(0, 9), 10);\n const digit2 = calculateDigit(cpf.substring(0, 10), 11);\n\n return digit1 === parseInt(cpf[9]) && digit2 === parseInt(cpf[10]);\n }\n\n /**\n * Valida o algoritmo do CNPJ (Módulo 11)\n */\n static cnpj(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.replace(/\\D/g, '');\n\n if (!value) return null;\n\n // CNPJ deve ter 14 dígitos e não pode ser sequência repetida\n if (value.length !== 14 || /^(\\d)\\1+$/.test(value)) {\n return { cnpjInvalido: true };\n }\n\n if (!PjcValidators.validateCnpjDigits(value)) {\n return { cnpjInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateCnpjDigits(cnpj: string): boolean {\n const calculateDigit = (slice: string, weights: number[]) => {\n let total = 0;\n for (let i = 0; i < slice.length; i++) {\n total += parseInt(slice[i]) * weights[i];\n }\n const remainder = total % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n };\n\n const weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n const weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n const digit1 = calculateDigit(cnpj.substring(0, 12), weights1);\n const digit2 = calculateDigit(cnpj.substring(0, 13), weights2);\n\n return digit1 === parseInt(cnpj[12]) && digit2 === parseInt(cnpj[13]);\n }\n\n static cpfCnpj(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.replace(/\\D/g, '');\n if (!value) return null;\n\n if (value.length <= 11) {\n return PjcValidators.cpf()(control);\n } else {\n return PjcValidators.cnpj()(control);\n }\n };\n }\n\n static telefone(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n // Fixo: DDD (2) + 8 dígitos = 10 | Celular: DDD (2) + 9 dígitos = 11\n if (digits.length !== 10 && digits.length !== 11) {\n return { telefoneInvalido: true };\n }\n\n // Celular deve começar com 9 após o DDD\n if (digits.length === 11 && digits[2] !== '9') {\n return { telefoneInvalido: true };\n }\n\n return null;\n };\n }\n\n static hora(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value || typeof value !== 'string') return null;\n\n const match = value.match(/^(\\d{2}):(\\d{2})$/);\n if (!match) return { horaInvalida: true };\n\n const hours = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n\n if (hours > 23 || minutes > 59) {\n return { horaInvalida: true };\n }\n\n return null;\n };\n }\n\n static placaVeiculo(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.toUpperCase().replace('-', '');\n if (!value) return null;\n\n // Regex para Padrão Antigo (AAA9999) e Mercosul (AAA9A99)\n const plateRegex = /^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$/;\n\n return plateRegex.test(value) ? null : { placaInvalida: true };\n };\n }\n\n static email(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value || typeof value !== 'string') return null;\n\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n return emailRegex.test(value) ? null : { emailInvalido: true };\n };\n }\n\n static imei(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (digits.length !== 15) {\n return { imeiInvalido: true };\n }\n\n if (!PjcValidators.validateImei(digits)) {\n return { imeiInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateImei(digits: string): boolean {\n let sum = 0;\n\n for (let i = 0; i < digits.length; i++) {\n let n = Number.parseInt(digits[i], 10);\n\n if (i % 2 === 1) {\n n *= 2;\n if (n > 9) {\n n -= 9;\n }\n }\n\n sum += n;\n }\n\n return sum % 10 === 0;\n }\n\n static numeroCartao(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (digits.length < 13 || digits.length > 19) {\n return { numeroCartaoInvalido: true };\n }\n\n if (!PjcValidators.validateLuhn(digits)) {\n return { numeroCartaoInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateLuhn(digits: string): boolean {\n let sum = 0;\n let alternate = false;\n\n for (let i = digits.length - 1; i >= 0; i--) {\n let n = Number.parseInt(digits[i], 10);\n\n if (alternate) {\n n *= 2;\n if (n > 9) {\n n -= 9;\n }\n }\n\n sum += n;\n alternate = !alternate;\n }\n\n return sum % 10 === 0;\n }\n\n static renavam(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (!PjcValidators.validateRenavam(digits)) {\n return { renavamInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateRenavam(digits: string): boolean {\n if (digits.length < 1 || digits.length > 11) return false;\n\n const padded = digits.padStart(11, '0');\n const weights = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3];\n const reversed = padded.substring(0, 10).split('').reverse();\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += Number.parseInt(reversed[i]) * weights[i];\n }\n\n let digit = (sum * 10) % 11;\n if (digit === 10) digit = 0;\n\n return digit === Number.parseInt(padded[10]);\n }\n\n static chassi(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value || typeof value !== 'string') return null;\n\n const chassiRegex = /^[A-HJ-NPR-Z0-9]{17}$/;\n return chassiRegex.test(value) ? null : { chassiInvalido: true };\n };\n }\n\n static cnh(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (!PjcValidators.validateCnh(digits)) {\n return { cnhInvalida: true };\n }\n\n return null;\n };\n }\n\n private static validateCnh(digits: string): boolean {\n if (digits.length !== 11 || /^(\\d)\\1+$/.test(digits)) return false;\n\n const weights1 = [9, 8, 7, 6, 5, 4, 3, 2, 1];\n let sum1 = 0;\n for (let i = 0; i < 9; i++) {\n sum1 += Number.parseInt(digits[i]) * weights1[i];\n }\n const remainder1 = sum1 % 11;\n const dv1 = remainder1 >= 10 ? 0 : remainder1;\n const variation = remainder1 > 9 ? -2 : 0;\n\n const weights2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n let sum2 = 0;\n for (let i = 0; i < 9; i++) {\n sum2 += Number.parseInt(digits[i]) * weights2[i];\n }\n let result2 = (sum2 % 11) + variation;\n if (result2 < 0) result2 += 11;\n const dv2 = result2 >= 10 ? 0 : result2;\n\n return dv1 === Number.parseInt(digits[9]) && dv2 === Number.parseInt(digits[10]);\n }\n\n static cep(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n return digits.length === 8 ? null : { cepInvalido: true };\n };\n }\n\n static inteiroMaiorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value >= 0 ? null : { inteiroMaiorIgualZero: true };\n };\n }\n\n static inteiroMaiorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value > 0 ? null : { inteiroMaiorZero: true };\n };\n }\n\n static inteiroMenorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value < 0 ? null : { inteiroMenorZero: true };\n };\n }\n\n static inteiroMenorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value <= 0 ? null : { inteiroMenorIgualZero: true };\n };\n }\n\n static inteiroNuloOuMaiorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value >= 0 ? null : { inteiroNuloOuMaiorIgualZero: true };\n };\n }\n\n static inteiroNuloOuMaiorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value > 0 ? null : { inteiroNuloOuMaiorZero: true };\n };\n }\n\n static inteiroNuloOuMenorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value < 0 ? null : { inteiroNuloOuMenorZero: true };\n };\n }\n\n static inteiroNuloOuMenorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value <= 0 ? null : { inteiroNuloOuMenorIgualZero: true };\n };\n }\n\n static decimalMaiorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue >= 0 ? null : { decimalMaiorIgualZero: true };\n };\n }\n\n static decimalMaiorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue > 0 ? null : { decimalMaiorZero: true };\n };\n }\n\n static decimalMenorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue < 0 ? null : { decimalMenorZero: true };\n };\n }\n\n static decimalMenorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue <= 0 ? null : { decimalMenorIgualZero: true };\n };\n }\n\n static data(minDate?: Date, maxDate?: Date): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) return null;\n\n if (minDate && date < minDate) {\n return { dataMinima: { min: minDate, atual: date } };\n }\n\n if (maxDate && date > maxDate) {\n return { dataMaxima: { max: maxDate, atual: date } };\n }\n\n return null;\n };\n }\n\n static dataHora(minDate?: Date, maxDate?: Date): ValidatorFn {\n return PjcValidators.data(minDate, maxDate);\n }\n}\n","import { ChangeDetectorRef, DestroyRef, Injector } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * Initializes form validation state propagation for a ControlValueAccessor component.\n * Subscribes to the parent form control's events (including TouchedChangeEvent and\n * PristineChangeEvent) to trigger change detection, enabling the component to react\n * to markAllAsTouched() and markAllAsDirty() calls.\n *\n * Must be called in ngOnInit (after NgControl.control is available).\n *\n * Returns the NgControl reference for use in template bindings.\n */\nexport function initFormValidation(\n injector: Injector,\n cdr: ChangeDetectorRef,\n destroyRef: DestroyRef,\n): NgControl | null {\n const ngControl = injector.get(NgControl, null);\n\n if (ngControl?.control) {\n ngControl.control.events\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => cdr.markForCheck());\n }\n\n return ngControl;\n}\n\n/**\n * Returns true when the form control is invalid AND has been interacted with\n * (dirty or touched). Use this to conditionally apply ng-invalid/ng-dirty\n * classes on inner PrimeNG components.\n */\nexport function isFormControlInvalid(ngControl: NgControl | null): boolean {\n const c = ngControl?.control;\n return !!c?.invalid && (!!c?.dirty || !!c?.touched);\n}\n\n/**\n * Returns the first error message to display based on the control's current\n * errors and the provided error map. Only returns a message when the control\n * has been touched or is dirty.\n */\nexport function getErrorMessage(\n ngControl: NgControl | null,\n erros: Record<string, string>,\n): string {\n const c = ngControl?.control;\n const errors = c?.errors;\n if (!c || !(c.touched || c.dirty) || !errors) return '';\n\n const errorKey = Object.keys(erros).find((key) => errors[key]);\n return errorKey ? erros[errorKey] : '';\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n NgControl,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { ButtonModule } from 'primeng/button';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cep-field',\n templateUrl: 'cep-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, InputGroupModule, InputGroupAddonModule, ButtonModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCepFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCepFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCepFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00000-000');\n id = input<string>(`pjc-cep-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(true);\n isLoading = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled: boolean = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onComplete(): void {\n this.busca.emit(this.value);\n }\n\n onSearch(): void {\n if (this.value?.length === 8) {\n this.busca.emit(this.value);\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cep()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999-999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (onComplete)=\"onComplete()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly() || isLoading()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly() || isLoading()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CEP\"\n >\n <i [class]=\"isLoading() ? 'pi pi-spinner pi-spin' : 'pi pi-search'\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999-999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (onComplete)=\"onComplete()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly() || isLoading()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || isLoading()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CEP\"\n >\n <i [class]=\"isLoading() ? 'pi pi-spinner pi-spin' : 'pi pi-search'\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { Directive } from '@angular/core';\n\nconst VIN_ALLOWED = /^[A-HJ-NPR-Z0-9]$/;\n\n@Directive({\n selector: 'input[pjcChassi]',\n host: {\n '(keydown)': 'onKeyDown($event)',\n '(input)': 'onInput($event)',\n },\n})\nexport class PjcChassiInputDirective {\n onKeyDown(event: KeyboardEvent): void {\n if (event.key.length !== 1 || event.ctrlKey || event.metaKey || event.altKey) return;\n if (!VIN_ALLOWED.test(event.key.toUpperCase())) {\n event.preventDefault();\n }\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const sanitized = input.value\n .toUpperCase()\n .replace(/[^A-HJ-NPR-Z0-9]/g, '')\n .substring(0, 17);\n if (input.value !== sanitized) {\n input.value = sanitized;\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { PjcChassiInputDirective } from './chassi-input.directive';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-chassi-field',\n templateUrl: 'chassi-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule, PjcChassiInputDirective],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcChassiFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcChassiFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcChassiFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Chassi');\n placeholder = input<string>('Digite o chassi');\n id = input<string>(`pjc-chassi-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val?.toUpperCase().replace(/[^A-HJ-NPR-Z0-9]/g, '').substring(0, 17) ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.chassi()(control);\n }\n\n onInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value = val;\n this.onChange(val);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n pjcChassi\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"17\"\n class=\"w-full p-2 outline-none bg-transparent uppercase\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n pjcChassi\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"17\"\n class=\"w-full p-2 outline-none bg-transparent uppercase\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PjcMunicipio } from './pjc-municipio.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PjcCidadeService {\n private http = inject(HttpClient);\n private readonly API_URL = 'https://servicodados.ibge.gov.br/api/v1/localidades/estados';\n\n getMunicipiosByUf(uf: string): Observable<PjcMunicipio[]> {\n return this.http\n .get<PjcMunicipio[]>(`${this.API_URL}/${uf}/municipios`)\n .pipe(\n map((data) =>\n data\n .map((m) => ({ id: m.id, nome: m.nome, descricao: m.descricao }))\n .sort((a, b) => {\n const aDisplay = a.nome || a.descricao || '';\n const bDisplay = b.nome || b.descricao || '';\n return aDisplay.localeCompare(bDisplay);\n })\n )\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PjcMunicipio } from './pjc-municipio.model';\n\nexport interface PjcCidadeServiceContract {\n getMunicipiosByUf(uf: string): Observable<PjcMunicipio[]>;\n}\n\nexport const PJC_CIDADE_SERVICE = new InjectionToken<PjcCidadeServiceContract>(\n 'PjcCidadeService'\n);\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, effect, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { AutoCompleteModule, AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcCidadeService } from './pjc-cidade.service';\nimport { PjcMunicipio } from './pjc-municipio.model';\nimport { PJC_CIDADE_SERVICE } from './pjc-cidade-service.token';\n\n@Component({\n selector: 'pjc-cidade-field',\n templateUrl: 'cidade-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, AutoCompleteModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCidadeFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCidadeFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('Digite o nome da cidade');\n id = input<string>(`pjc-cidade-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n uf = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private readonly service = inject(PJC_CIDADE_SERVICE, { optional: true }) ?? inject(PjcCidadeService);\n\n municipios = signal<PjcMunicipio[]>([]);\n filteredMunicipios = signal<PjcMunicipio[]>([]);\n loading = signal<boolean>(false);\n\n value: PjcMunicipio | null = null;\n disabled = false;\n\n onChange: (value: PjcMunicipio | null) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly setupUfEffect = effect(() => {\n const uf = this.uf();\n if (uf) {\n this.fetchMunicipios(uf);\n } else {\n this.municipios.set([]);\n this.filteredMunicipios.set([]);\n }\n });\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: PjcMunicipio | string | null): void {\n if (val === null || val === undefined) {\n this.value = null;\n } else if (typeof val === 'string') {\n const found = this.municipios().find(m => m.nome === val || m.descricao === val);\n this.value = found ?? { id: 0, nome: val };\n } else {\n this.value = val;\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: PjcMunicipio | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: PjcMunicipio | string | null): void {\n if (typeof value === 'string') {\n this.value = null;\n this.onChange(null);\n } else {\n this.value = value;\n this.onChange(value);\n }\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n getMunicipioDisplay(m: PjcMunicipio): string {\n return m.nome || m.descricao || '';\n }\n\n filterMunicipios(event: AutoCompleteCompleteEvent): void {\n const normalize = (s: string) => s.normalize('NFD').replaceAll(/[\\u0300-\\u036f]/g, '').toLowerCase();\n const query = normalize(event.query);\n this.filteredMunicipios.set(\n this.municipios().filter(m => normalize(this.getMunicipioDisplay(m)).includes(query))\n );\n }\n\n private fetchMunicipios(uf: string): void {\n this.loading.set(true);\n const previousValue = this.value;\n\n this.service.getMunicipiosByUf(uf).subscribe({\n next: (data) => {\n const normalized = data.map(m => ({ ...m, nome: m.nome || m.descricao || '' }));\n this.municipios.set(normalized);\n this.filteredMunicipios.set(normalized);\n this.loading.set(false);\n\n if (previousValue) {\n const match = normalized.find(m =>\n m.id === previousValue.id || m.nome === previousValue.nome\n );\n if (match) {\n this.value = match;\n this.onChange(match);\n } else {\n this.value = null;\n this.onChange(null);\n }\n }\n },\n error: () => {\n this.municipios.set([]);\n this.filteredMunicipios.set([]);\n this.loading.set(false);\n this.value = null;\n this.onChange(null);\n },\n });\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-autocomplete\n [inputId]=\"id()\"\n [suggestions]=\"filteredMunicipios()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (completeMethod)=\"filterMunicipios($event)\"\n dataKey=\"id\"\n optionLabel=\"nome\"\n [forceSelection]=\"true\"\n [disabled]=\"disabled || readonly() || !uf() || loading()\"\n appendTo=\"body\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n >\n <ng-template pTemplate=\"item\" let-option>\n {{ getMunicipioDisplay(option) }}\n </ng-template>\n </p-autocomplete>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-autocomplete\n [inputId]=\"id()\"\n [suggestions]=\"filteredMunicipios()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (completeMethod)=\"filterMunicipios($event)\"\n dataKey=\"id\"\n optionLabel=\"nome\"\n [forceSelection]=\"true\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled || readonly() || !uf() || loading()\"\n appendTo=\"body\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n >\n <ng-template pTemplate=\"item\" let-option>\n {{ getMunicipioDisplay(option) }}\n </ng-template>\n </p-autocomplete>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cnh-field',\n templateUrl: 'cnh-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCnhFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCnhFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCnhFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00000000000');\n id = input<string>(`pjc-cnh-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cnh()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cnpj-field',\n templateUrl: 'cnpj-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, InputGroupModule, InputGroupAddonModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCnpjFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCnpjFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCnpjFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00.000.000/0000-00');\n id = input<string>(`pjc-cnpj-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onSearch(): void {\n this.busca.emit(this.value);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cnpj()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99.999.999/9999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99.999.999/9999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output, computed } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-cpf-cnpj-field',\n templateUrl: 'cpf-cnpj-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, FloatLabelModule, InputTextModule, InputGroupModule, InputGroupAddonModule, IconFieldModule, InputIconModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCpfCnpjFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCpfCnpjFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCpfCnpjFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('CPF/CNPJ');\n placeholder = input<string>('');\n id = input<string>(`pjc-cpf-cnpj-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n displayValue: string = '';\n disabled: boolean = false;\n\n private rawValue: string = '';\n\n computedPlaceholder = computed(() => {\n const override = this.placeholder();\n if (override) return override;\n return this.rawValue.length > 11 ? '00.000.000/0000-00' : '000.000.000-00';\n });\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.rawValue = val?.replaceAll(/\\D/g, '') ?? '';\n this.displayValue = this.formatValue(this.rawValue);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart ?? 0;\n const digitsBeforeCursor = input.value.substring(0, cursorPos).replace(/\\D/g, '').length;\n\n this.rawValue = input.value.replaceAll(/\\D/g, '').substring(0, 14);\n this.displayValue = this.formatValue(this.rawValue);\n this.onChange(this.rawValue);\n\n let newCursor = this.displayValue.length;\n let digitCount = 0;\n for (let i = 0; i < this.displayValue.length; i++) {\n if (/\\d/.test(this.displayValue[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n setTimeout(() => input.setSelectionRange(newCursor, newCursor));\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onSearch(): void {\n this.busca.emit(this.rawValue);\n }\n\n private formatValue(digits: string): string {\n if (!digits) return '';\n\n if (digits.length <= 11) {\n return digits\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3}\\.\\d{3})(\\d{1,2})/, '$1-$2');\n }\n\n return digits\n .replace(/(\\d{2})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3})(\\d)/, '$1/$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4})(\\d{1,2})/, '$1-$2');\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cpfCnpj()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"18\"\n class=\"w-full p-2 outline-none bg-transparent\"\n />\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF/CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"18\"\n class=\"w-full p-2 outline-none bg-transparent border border-surface-300 rounded-md focus:border-primary-500\"\n />\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF/CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cpf-field',\n templateUrl: 'cpf-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, InputGroupModule, InputGroupAddonModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCpfFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCpfFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCpfFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('000.000.000-00');\n id = input<string>(`pjc-cpf-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onSearch(): void {\n this.busca.emit(this.value);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cpf()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999.999.999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999.999.999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, forwardRef, inject, Injector, input, OnDestroy, OnInit, computed, signal } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-data-field',\n templateUrl: 'data-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, DatePickerModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcDataFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcDataFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcDataFieldComponent implements ControlValueAccessor, Validator, AfterViewInit, OnDestroy, OnInit {\n label = input<string>('Data');\n placeholder = input<string>('dd/mm/yyyy');\n id = input<string>(`pjc-data-${Math.random().toString(36).substring(2, 9)}`);\n minDate = input<Date | undefined>(undefined);\n maxDate = input<Date | undefined>(undefined);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n mostrarAniversario = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n value: Date | null = null;\n disabled = false;\n\n valueSignal = signal<Date | null>(null);\n\n age = computed(() => {\n const date = this.valueSignal();\n if (!date) return null;\n return this.calculateAge(date);\n });\n\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private el = inject(ElementRef);\n private isFormatting = false;\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n ngAfterViewInit(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.addEventListener('input', this.handleDateInput);\n }\n }\n\n ngOnDestroy(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.removeEventListener('input', this.handleDateInput);\n }\n }\n\n private handleDateInput = (event: Event): void => {\n if (this.isFormatting) return;\n const input = event.target as HTMLInputElement;\n const raw = input.value;\n const cursor = input.selectionStart ?? raw.length;\n\n const digits = raw.replace(/\\D/g, '').substring(0, 8);\n let formatted = digits;\n if (digits.length > 2) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2)}`;\n }\n if (digits.length > 4) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4)}`;\n }\n\n if (raw === formatted) return;\n\n const digitsBeforeCursor = raw.substring(0, cursor).replace(/\\D/g, '').length;\n\n this.isFormatting = true;\n input.value = formatted;\n this.isFormatting = false;\n\n // Restore cursor at the position after the same digit count\n let newCursor = 0;\n let digitCount = 0;\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n input.setSelectionRange(newCursor, newCursor);\n };\n\n writeValue(val: Date | string | null): void {\n if (val === null || val === undefined) {\n this.value = null;\n } else if (typeof val === 'string') {\n // Parse ISO date strings (e.g., '1996-01-21') as local dates\n // to avoid timezone offset causing a day shift.\n // new Date('1996-01-21') parses as UTC midnight, which shifts\n // to the previous day in negative-UTC timezones.\n const parts = val.split('-').map(Number);\n this.value = parts.length >= 3\n ? new Date(parts[0], parts[1] - 1, parts[2])\n : new Date(val);\n } else {\n this.value = val;\n }\n this.valueSignal.set(this.value);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onValueChange(date: Date | null): void {\n this.valueSignal.set(date);\n this.onChange(date);\n }\n\n private calculateAge(birthDate: Date): number {\n const today = new Date();\n let age = today.getFullYear() - birthDate.getFullYear();\n const monthDiff = today.getMonth() - birthDate.getMonth();\n\n if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {\n age--;\n }\n\n return age;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.data(this.minDate(), this.maxDate())(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabled]=\"disabled\"\n [readonlyInput]=\"readonly()\"\n placeholder=\"dd/mm/aaaa\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n placeholder=\"dd/mm/aaaa\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (mostrarAniversario() && age()) {\n <p class=\"text-xs text-surface-600\">Idade: {{ age() }} {{ age() === 1 ? 'ano' : 'anos' }}</p>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, forwardRef, inject, Injector, input, OnDestroy, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-data-hora-field',\n templateUrl: 'data-hora-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, DatePickerModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcDataHoraFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcDataHoraFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcDataHoraFieldComponent implements ControlValueAccessor, Validator, AfterViewInit, OnDestroy, OnInit {\n label = input<string>('Data e Hora');\n placeholder = input<string>('dd/mm/yyyy HH:MM');\n id = input<string>(`pjc-data-hora-${Math.random().toString(36).substring(2, 9)}`);\n minDate = input<Date | undefined>(undefined);\n maxDate = input<Date | undefined>(undefined);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n value: Date | null = null;\n disabled = false;\n\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private el = inject(ElementRef);\n private isFormatting = false;\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n ngAfterViewInit(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.addEventListener('input', this.handleDateInput);\n }\n }\n\n ngOnDestroy(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.removeEventListener('input', this.handleDateInput);\n }\n }\n\n private handleDateInput = (event: Event): void => {\n if (this.isFormatting) return;\n const input = event.target as HTMLInputElement;\n const raw = input.value;\n const cursor = input.selectionStart ?? raw.length;\n\n const digits = raw.replace(/\\D/g, '').substring(0, 12);\n let formatted = digits;\n\n if (digits.length > 2) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2)}`;\n }\n if (digits.length > 4) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4)}`;\n }\n if (digits.length > 8) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4, 8)} ${digits.substring(8)}`;\n }\n if (digits.length > 10) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4, 8)} ${digits.substring(8, 10)}:${digits.substring(10)}`;\n }\n\n if (raw === formatted) return;\n\n const digitsBeforeCursor = raw.substring(0, cursor).replace(/\\D/g, '').length;\n\n this.isFormatting = true;\n input.value = formatted;\n this.isFormatting = false;\n\n let newCursor = 0;\n let digitCount = 0;\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n input.setSelectionRange(newCursor, newCursor);\n };\n\n writeValue(val: Date | string | null): void {\n if (val === null || val === undefined) {\n this.value = null;\n } else if (typeof val === 'string') {\n // Parse ISO date strings as local dates to avoid timezone offset day shift.\n const parts = val.split('-').map(Number);\n this.value = parts.length >= 3\n ? new Date(parts[0], parts[1] - 1, parts[2])\n : new Date(val);\n } else {\n this.value = val;\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onValueChange(date: Date | null): void {\n this.onChange(date);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.dataHora(this.minDate(), this.maxDate())(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showTime]=\"true\"\n [hourFormat]=\"'24'\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabled]=\"disabled\"\n [readonlyInput]=\"readonly()\"\n placeholder=\"dd/mm/aaaa HH:MM\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showTime]=\"true\"\n [hourFormat]=\"'24'\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabled]=\"disabled\"\n [readonlyInput]=\"readonly()\"\n placeholder=\"dd/mm/aaaa HH:MM\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'pjc-detalhes',\n templateUrl: 'detalhes.component.html',\n styleUrl: 'detalhes.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PjcDetalhesComponent {\n label = input.required<string>();\n value = input.required<string | number | null | undefined>();\n layout = input<'column' | 'row'>('column');\n\n displayValue = computed(() => {\n const v = this.value();\n return v !== null && v !== undefined ? String(v) : 'Não Informado';\n });\n}\n","@if (layout() === 'column') {\n <div class=\"pjc-detalhes pjc-detalhes--column\">\n @if (label()) {\n <span class=\"pjc-detalhes__label\">{{ label() }}</span>\n }\n <span class=\"pjc-detalhes__value\" [class.pjc-detalhes__value--empty]=\"value() === null || value() === undefined\">\n {{ displayValue() }}\n </span>\n </div>\n} @else {\n <div class=\"pjc-detalhes pjc-detalhes--row\">\n @if (label()) {\n <span class=\"pjc-detalhes__label\">{{ label() }}: </span>\n }\n <span class=\"pjc-detalhes__value\" [class.pjc-detalhes__value--empty]=\"value() === null || value() === undefined\">\n {{ displayValue() }}\n </span>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnInit,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport {\n getErrorMessage,\n initFormValidation,\n isFormControlInvalid,\n} from '../../utils/form-validation';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-email-field',\n templateUrl: 'email-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcEmailFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcEmailFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcEmailFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('E-mail');\n placeholder = input<string>('Digite o e-mail');\n id = input<string>(`pjc-email-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n hint = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val?.toLowerCase() ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.email()(control);\n }\n\n onInput(event: Event): void {\n const lower = (event.target as HTMLInputElement).value.toLowerCase();\n this.value = lower;\n this.onChange(lower);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n type=\"email\"\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n type=\"email\"\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PjcEnumItem } from './pjc-enum-item.model';\n\nexport interface PjcEnumServiceContract {\n getItems(url: string): Observable<PjcEnumItem[]>;\n}\n\nexport const PJC_ENUM_SERVICE = new InjectionToken<PjcEnumServiceContract>(\n 'PjcEnumService'\n);\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PjcEnumItem } from './pjc-enum-item.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PjcEnumService {\n private http = inject(HttpClient);\n\n getItems(url: string): Observable<PjcEnumItem[]> {\n return this.http\n .get<PjcEnumItem[]>(url)\n .pipe(\n map((data) =>\n [...data].sort((a, b) => {\n const aDisplay = String(a['descricao'] || a['nome'] || '');\n const bDisplay = String(b['descricao'] || b['nome'] || '');\n return aDisplay.localeCompare(bDisplay);\n })\n )\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, effect, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SelectModule } from 'primeng/select';\nimport { FilterService } from 'primeng/api';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { PjcEnumItem } from './pjc-enum-item.model';\nimport { PJC_ENUM_SERVICE } from './pjc-enum-service.token';\nimport { PjcEnumService } from './pjc-enum.service';\n\nconst PJC_ACCENT_CONTAINS = 'pjc-accent-contains';\nconst normalize = (s: string) => s.normalize('NFD').replaceAll(/[\\u0300-\\u036f]/g, '').toLowerCase();\n\n@Component({\n selector: 'pjc-enum-field',\n templateUrl: 'enum-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule, MultiSelectModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcEnumFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcEnumFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('Selecione uma opção');\n id = input<string>(`pjc-enum-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n erros = input<Record<string, string>>({});\n\n /** URL of the endpoint that returns the list of items. */\n url = input<string>('');\n\n /** Static list of items to display. When provided, takes precedence over `url`. */\n options = input<PjcEnumItem[]>([]);\n\n /**\n * Key of the object property displayed as the option label in the select.\n * Defaults to 'descricao'.\n */\n optionLabel = input<string>('descricao');\n\n /**\n * Key of the object property used as the option value bound to the formControl.\n * When left as undefined (default), the entire selected object is used as the value.\n */\n optionValue = input<string | undefined>(undefined);\n\n /** Whether the select should have a filter/search input. */\n filter = input<boolean>(false);\n\n /** Placeholder text for the filter input inside the dropdown. */\n filterPlaceholder = input<string>('');\n\n /** Whether to show a clear button to reset the selection. */\n showClear = input<boolean>(false);\n\n /** Whether to allow selecting multiple values. */\n multiple = input<boolean>(false);\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly filterService = inject(FilterService);\n private ngControl: NgControl | null = null;\n\n private readonly service = inject(PJC_ENUM_SERVICE, { optional: true }) ?? inject(PjcEnumService);\n\n readonly accentContainsFilter = PJC_ACCENT_CONTAINS;\n\n items = signal<PjcEnumItem[]>([]);\n loading = signal<boolean>(false);\n\n value: any = null;\n disabled = false;\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly setupOptionsEffect = effect(() => {\n const staticOptions = this.options();\n const url = this.url();\n\n if (staticOptions.length > 0) {\n this.items.set(staticOptions);\n } else if (url) {\n this.fetchItems(url);\n } else {\n this.items.set([]);\n }\n });\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n this.filterService.register(PJC_ACCENT_CONTAINS, (value: any, filter: any): boolean => {\n if (filter === undefined || filter === null || String(filter).trim() === '') return true;\n if (value === undefined || value === null) return false;\n return normalize(String(value)).includes(normalize(String(filter)));\n });\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: any): void {\n this.value = this.multiple() ? (val ?? []) : (val ?? null);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: any): void {\n this.value = value;\n this.onChange(value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n private fetchItems(url: string): void {\n this.loading.set(true);\n\n this.service.getItems(url).subscribe({\n next: (data) => {\n this.items.set(data);\n this.loading.set(false);\n this.cdr.markForCheck();\n },\n error: () => {\n this.items.set([]);\n this.loading.set(false);\n this.value = null;\n this.onChange(null);\n this.cdr.markForCheck();\n },\n });\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n @if (multiple()) {\n <p-multiselect\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n [filterPlaceHolder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n display=\"chip\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n [filterPlaceholder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n @if (multiple()) {\n <p-multiselect\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n [filterPlaceHolder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n display=\"chip\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterPlaceholder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n OnInit,\n inject,\n input,\n} from '@angular/core';\nimport { KeyValuePipe } from '@angular/common';\nimport { ControlContainer, AbstractControl } from '@angular/forms';\nimport { MessageModule } from 'primeng/message';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'pjc-erro-validacao',\n templateUrl: 'erro-validacao.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KeyValuePipe, MessageModule],\n})\nexport class PjcErroValidacaoComponent implements OnInit {\n private readonly container = inject(ControlContainer);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n controlName = input.required<string>();\n erros = input.required<Record<string, string>>();\n\n control: AbstractControl | null = null;\n\n ngOnInit(): void {\n const group = this.container.control;\n this.control = group?.get(this.controlName()) ?? null;\n\n if (this.control) {\n this.control.events\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.cdr.markForCheck());\n }\n }\n}\n","@if (control; as ctrl) {\n @if (ctrl.touched && ctrl.errors) {\n @for (entry of erros() | keyvalue; track entry.key) {\n @if (ctrl.errors[entry.key]) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ entry.value }}</p-message>\n }\n }\n }\n}\n","/**\n * Tipos públicos do componente `pjc-filtro-field` (Filtro Avançado).\n *\n * Spec: .sdd/filtro-avancado-lib.spec.md (v1.0, 2026-04-23).\n */\n\n/**\n * Discriminador que determina o modo de entrada e as regras de\n * parsing/formatação de um filtro.\n */\nexport enum PjcTipoFiltroCampo {\n TEXTO = 'TEXTO',\n NUMERICO = 'NUMERICO',\n NUMERICO_RANGE = 'NUMERICO_RANGE',\n DATA = 'DATA',\n DATA_RANGE = 'DATA_RANGE',\n ENUM = 'ENUM',\n ENUM_MULTI = 'ENUM_MULTI',\n BOOLEANO = 'BOOLEANO',\n}\n\n/**\n * Opção selecionável para filtros de tipo ENUM.\n *\n * `texto` é usado como `valorMostrar` quando aplicado; `valor` é usado\n * como `valor` bruto enviado ao backend.\n *\n * `metadados` é um slot opaco opcional para dados adicionais carregados\n * pela aplicação consumidora (ex.: atributos auxiliares herdados do\n * modelo de origem). Substitui o antigo atributo `renda` (ver A2/R6 da\n * spec).\n */\nexport interface PjcOpcaoEnumFiltro {\n texto: string;\n valor: string | boolean;\n metadados?: Record<string, unknown>;\n}\n\n/**\n * Entidade central. Representa um filtro — seja na coleção de\n * disponíveis (`valor` nulo) ou de aplicados (`valor` preenchido).\n *\n * Invariantes (§4.4):\n * - I1: `codigo` é imutável durante o ciclo de vida do componente.\n * - I2: mesmo `codigo` aparece em no máximo uma das duas coleções.\n * - I3: aplicados têm `valor` não-nulo; disponíveis têm `valor` nulo.\n * - I4: quando `tipo = ENUM`, `arrayEnum` é não-vazio.\n */\nexport interface PjcFiltro {\n codigo: string;\n nome: string;\n tipo: PjcTipoFiltroCampo;\n parametro: string;\n placeholder?: string;\n\n /**\n * Máscara opcional de entrada. Reconhecida pelo contrato público,\n * porém de semântica ainda não consolidada no MVP (ver A1/R7 da spec).\n * Atualmente ignorada pelo componente.\n */\n mascara?: string;\n\n /**\n * Quando `tipo = TEXTO`, aciona a heurística de máscara CPF/CNPJ\n * por contagem de dígitos (≤11 → CPF; >11 → CNPJ).\n */\n isCpfCnpj?: boolean;\n\n /**\n * Coleção de opções selecionáveis.\n *\n * - Obrigatório quando `tipo = ENUM` ou `tipo = ENUM_MULTI`.\n * - Opcional quando `tipo = BOOLEANO`: se omitido, o componente usa\n * o par padrão `[{texto:'Sim',valor:true},{texto:'Não',valor:false}]`.\n * Se fornecido, deve conter exatamente 2 opções (ex.: Ativo/Inativo).\n */\n arrayEnum?: PjcOpcaoEnumFiltro[];\n\n /** Presente apenas em filtros aplicados. Formato pronto para backend. */\n valor?: string;\n\n /** Presente apenas em filtros aplicados. Valor formatado para o chip. */\n valorMostrar?: string;\n}\n\n/**\n * Payload do evento `erroValidacao` emitido pelo componente ao detectar\n * entrada sintaticamente inválida durante tentativa de aplicação.\n *\n * A apresentação do erro é de inteira responsabilidade da aplicação\n * consumidora (RF-21 / N2).\n */\nexport interface PjcFiltroErroValidacao {\n codigoFiltro: string;\n mensagem: string;\n}\n","/**\n * Parsers e formatters internos por tipo de filtro.\n *\n * Arquivo INTERNO ao componente `pjc-filtro-field`. Não é exportado pelo\n * `public-api.ts` da biblioteca (ver §6.5 da spec: a arquitetura interna\n * segrega parser/formatter/validador/renderizador por tipo para permitir\n * evolução sem alterar o contrato externo).\n */\n\nimport { PjcOpcaoEnumFiltro, PjcTipoFiltroCampo } from './pjc-filtro.model';\n\n/**\n * Resultado de um parse bem-sucedido: o par (valor bruto, valor exibido)\n * que o componente armazenará no filtro aplicado.\n */\nexport interface PjcFiltroParseResultado {\n valor: string;\n valorMostrar: string;\n}\n\n/**\n * Mensagem de erro sintático padronizada por tipo (§6.4). A lib mantém\n * as strings fixadas em pt-BR no MVP (P3).\n */\nexport const PJC_FILTRO_ERROS = {\n DATA_INVALIDA: 'Data informada inválida!',\n DATA_RANGE_INVALIDA: 'Data inicio ou data fim inválida!',\n} as const;\n\n/**\n * Lançada por um parser quando a entrada é sintaticamente inválida.\n * O componente captura e converte em evento `erroValidacao`.\n */\nexport class PjcFiltroParseError extends Error {\n constructor(mensagem: string) {\n super(mensagem);\n this.name = 'PjcFiltroParseError';\n }\n}\n\nconst somenteDigitos = (s: string): string => s.replaceAll(/\\D/g, '');\n\nconst aplicarMascaraCpf = (digitos: string): string =>\n digitos\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3}\\.\\d{3})(\\d{1,2})/, '$1-$2');\n\nconst aplicarMascaraCnpj = (digitos: string): string =>\n digitos\n .replace(/(\\d{2})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3})(\\d)/, '$1/$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4})(\\d{1,2})/, '$1-$2');\n\n/**\n * Retorna a data no formato ISO `aaaa-MM-dd` se válida, ou `null`.\n * Aceita apenas `dd/MM/aaaa` como entrada (§6.4 — tipo DATA).\n *\n * Validação sintática estrita: ano com 4 dígitos, dia/mês dentro dos\n * limites, e reconstrução da data coincidindo com os componentes\n * informados (rejeita, por ex., 31/02/2025 que o Date \"ajustaria\"\n * automaticamente).\n */\nexport function parseDataBR(entrada: string): string | null {\n const match = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(entrada?.trim() ?? '');\n if (!match) return null;\n\n const dia = Number(match[1]);\n const mes = Number(match[2]);\n const ano = Number(match[3]);\n\n const d = new Date(ano, mes - 1, dia);\n if (d.getFullYear() !== ano || d.getMonth() !== mes - 1 || d.getDate() !== dia) {\n return null;\n }\n\n const mm = String(mes).padStart(2, '0');\n const dd = String(dia).padStart(2, '0');\n return `${ano}-${mm}-${dd}`;\n}\n\n/**\n * Converte um `Date` em `dd/MM/aaaa` (formato de exibição da spec).\n */\nexport function formatarDataExibicao(d: Date): string {\n const dd = String(d.getDate()).padStart(2, '0');\n const mm = String(d.getMonth() + 1).padStart(2, '0');\n const yyyy = String(d.getFullYear());\n return `${dd}/${mm}/${yyyy}`;\n}\n\n/**\n * Converte um `Date` em ISO `aaaa-MM-dd` (formato emitido ao backend).\n */\nexport function formatarDataIso(d: Date): string {\n const yyyy = String(d.getFullYear());\n const mm = String(d.getMonth() + 1).padStart(2, '0');\n const dd = String(d.getDate()).padStart(2, '0');\n return `${yyyy}-${mm}-${dd}`;\n}\n\n/**\n * Parser do tipo TEXTO (§6.4).\n *\n * - Força caixa alta (RF-09).\n * - Com `isCpfCnpj` e entrada puramente numérica, aplica máscara\n * CPF (≤11 dígitos) ou CNPJ (>11 dígitos) progressivamente (E7/E8/R8).\n * - Entrada vazia não aplica (retorna `null`, E5).\n */\nexport function parseTexto(\n entrada: string,\n isCpfCnpj: boolean,\n): PjcFiltroParseResultado | null {\n const valor = (entrada ?? '').trim().toUpperCase();\n if (!valor) return null;\n\n if (isCpfCnpj) {\n const digitos = somenteDigitos(valor);\n if (digitos === valor.replaceAll(/\\s/g, '')) {\n const mascarado = digitos.length <= 11\n ? aplicarMascaraCpf(digitos)\n : aplicarMascaraCnpj(digitos);\n return { valor: mascarado, valorMostrar: mascarado };\n }\n }\n\n return { valor, valorMostrar: valor };\n}\n\n/**\n * Parser do tipo NUMERICO (§6.4).\n *\n * Remove qualquer não-dígito (RF-11); entrada vazia após extração não\n * aplica (E6 tratado como E5).\n */\nexport function parseNumerico(entrada: string): PjcFiltroParseResultado | null {\n const digitos = somenteDigitos(entrada ?? '');\n if (!digitos) return null;\n return { valor: digitos, valorMostrar: digitos };\n}\n\n/**\n * Parser do tipo DATA (§6.4).\n *\n * Entrada `dd/MM/aaaa` → emite `valor` ISO (`aaaa-MM-dd`) e\n * `valorMostrar` em `DD/MM/AAAA`. Data inválida lança\n * `PjcFiltroParseError` com a mensagem padrão (RF-19).\n */\nexport function parseData(entrada: string): PjcFiltroParseResultado | null {\n if (!entrada?.trim()) return null;\n const iso = parseDataBR(entrada);\n if (!iso) throw new PjcFiltroParseError(PJC_FILTRO_ERROS.DATA_INVALIDA);\n return { valor: iso, valorMostrar: entrada.trim() };\n}\n\n/**\n * Parser do tipo DATA_RANGE (§6.4).\n *\n * Exige ambas as datas preenchidas (RF-06). Aceita `inicio` e `fim`\n * como `dd/MM/aaaa`; qualquer uma inválida lança\n * `PjcFiltroParseError` (RF-20). Emite `valor` como única cadeia\n * `inicioISO,fimISO` (separador vírgula) e `valorMostrar`\n * como `DD/MM/AAAA - DD/MM/AAAA`.\n *\n * Nota: não valida semanticamente fim ≥ início (N4).\n */\nexport function parseDataRange(\n inicio: string,\n fim: string,\n): PjcFiltroParseResultado | null {\n const inicioTrim = (inicio ?? '').trim();\n const fimTrim = (fim ?? '').trim();\n if (!inicioTrim || !fimTrim) return null;\n\n const inicioIso = parseDataBR(inicioTrim);\n const fimIso = parseDataBR(fimTrim);\n if (!inicioIso || !fimIso) {\n throw new PjcFiltroParseError(PJC_FILTRO_ERROS.DATA_RANGE_INVALIDA);\n }\n\n return {\n valor: `${inicioIso},${fimIso}`,\n valorMostrar: `${inicioTrim} - ${fimTrim}`,\n };\n}\n\n/**\n * Parser do tipo ENUM (§6.4).\n *\n * Seleção sempre válida (aplica na mudança, RF-07). Retorna `null`\n * somente quando a opção é `undefined` (proteção defensiva).\n */\nexport function parseEnum(\n opcao: PjcOpcaoEnumFiltro | undefined,\n): PjcFiltroParseResultado | null {\n if (!opcao) return null;\n return { valor: String(opcao.valor), valorMostrar: opcao.texto };\n}\n\n/**\n * Par padrão de opções para o tipo BOOLEANO quando `arrayEnum` é\n * omitido no filtro.\n */\nexport const PJC_OPCOES_BOOLEANO_PADRAO: PjcOpcaoEnumFiltro[] = [\n { texto: 'Sim', valor: true },\n { texto: 'Não', valor: false },\n];\n\n/**\n * Parser do tipo BOOLEANO (§6.4).\n *\n * Comportamento idêntico ao ENUM: aplica na mudança de seleção (RF-07).\n * Quando o filtro omite `arrayEnum`, o componente passa aqui a opção\n * escolhida entre `PJC_OPCOES_BOOLEANO_PADRAO`.\n */\nexport function parseBooleano(\n opcao: PjcOpcaoEnumFiltro | undefined,\n): PjcFiltroParseResultado | null {\n if (!opcao) return null;\n return { valor: String(opcao.valor), valorMostrar: opcao.texto };\n}\n\n/**\n * Parser do tipo ENUM_MULTI (§6.4).\n *\n * Seleção múltipla; aplica por confirmação explícita. Seleção vazia\n * não aplica (tratado como E5). Emite `valor` como lista de valores\n * brutos separados por vírgula (ex.: `\"A,B,C\"`) e `valorMostrar`\n * como lista de textos separados por \", \".\n */\nexport function parseEnumMulti(\n opcoes: PjcOpcaoEnumFiltro[] | null | undefined,\n): PjcFiltroParseResultado | null {\n if (!opcoes || opcoes.length === 0) return null;\n const valor = opcoes.map((o) => String(o.valor)).join(',');\n const valorMostrar = opcoes.map((o) => o.texto).join(', ');\n return { valor, valorMostrar };\n}\n\n/**\n * Parser do tipo NUMERICO_RANGE (§6.4).\n *\n * Exige ambos os valores preenchidos. Remove não-dígitos de cada lado\n * (coerente com NUMERICO, RF-11). Emite `valor` como única cadeia\n * `min,max` e `valorMostrar` como `min - max`. Não valida\n * semanticamente `max ≥ min` (coerente com N4).\n */\nexport function parseNumericoRange(\n minBruto: string,\n maxBruto: string,\n): PjcFiltroParseResultado | null {\n const min = somenteDigitos(minBruto ?? '');\n const max = somenteDigitos(maxBruto ?? '');\n if (!min || !max) return null;\n return {\n valor: `${min},${max}`,\n valorMostrar: `${min} - ${max}`,\n };\n}\n\n/**\n * Dicionário que marca se o tipo aplica por confirmação explícita\n * (ENTER ou botão) ou automaticamente na seleção. Usado pelo\n * componente para habilitar/ocultar o botão de confirmar e\n * controlar o fluxo de aplicação.\n */\nexport const APLICA_POR_CONFIRMACAO: Record<PjcTipoFiltroCampo, boolean> = {\n [PjcTipoFiltroCampo.TEXTO]: true,\n [PjcTipoFiltroCampo.NUMERICO]: true,\n [PjcTipoFiltroCampo.NUMERICO_RANGE]: true,\n [PjcTipoFiltroCampo.DATA]: true,\n [PjcTipoFiltroCampo.DATA_RANGE]: true,\n [PjcTipoFiltroCampo.ENUM]: false,\n [PjcTipoFiltroCampo.ENUM_MULTI]: true,\n [PjcTipoFiltroCampo.BOOLEANO]: false,\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ChipModule } from 'primeng/chip';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SelectModule } from 'primeng/select';\n\nimport {\n PjcFiltro,\n PjcFiltroErroValidacao,\n PjcOpcaoEnumFiltro,\n PjcTipoFiltroCampo,\n} from './pjc-filtro.model';\nimport {\n APLICA_POR_CONFIRMACAO,\n formatarDataExibicao,\n formatarDataIso,\n parseBooleano,\n parseData,\n parseDataRange,\n parseEnum,\n parseEnumMulti,\n parseNumerico,\n parseNumericoRange,\n parseTexto,\n PJC_OPCOES_BOOLEANO_PADRAO,\n PjcFiltroParseError,\n} from './pjc-filtro-parsers';\n\n/**\n * `pjc-filtro-field` — componente de Filtro Avançado.\n *\n * Permite compor dinamicamente um conjunto de filtros heterogêneos\n * (texto, numérico, data, intervalo de datas, enum) e apresenta os\n * aplicados como chips removíveis. Emite a coleção resultante via\n * evento `filtrar`.\n *\n * ## Divergência intencional do padrão da biblioteca\n *\n * Diferente dos demais componentes de `pjc-fields`, este NÃO é um\n * `ControlValueAccessor`. Razões, conforme spec v1.0 (§6.1–6.3):\n *\n * - Entradas são 3 coleções/valores (não um valor único).\n * - Saídas são 2 eventos tipados (não um `onChange` de CVA).\n * - O componente **muta in-place** as coleções de entrada\n * (`filtros` e `filtrosSelecionados`) — contrato versionado como\n * API pública (P7, R1, R4). Consumidores não devem compartilhar\n * essas referências com estruturas que dependam de imutabilidade.\n *\n * Os inputs \"padrão\" da biblioteca (`label`, `placeholder`, `id`,\n * `labelVariant`, `readonly`, `erros`, `hint`) não se aplicam aqui —\n * este não é um field de valor único, é uma superfície de composição\n * de filtros.\n *\n * Spec: `.sdd/filtro-avancado-lib.spec.md` (v1.0, 2026-04-23).\n */\n@Component({\n selector: 'pjc-filtro-field',\n templateUrl: 'filtro-field.component.html',\n styleUrl: 'filtro-field.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n SelectModule,\n MultiSelectModule,\n InputTextModule,\n DatePickerModule,\n ChipModule,\n ],\n})\nexport class PjcFiltroFieldComponent {\n /** Coleção mutável de Filtros disponíveis para seleção (§6.1). */\n filtros = input<PjcFiltro[]>([]);\n\n /** `codigo` do filtro pré-selecionado no seletor de prefixo (§6.1). */\n tipoSelecionado = input<string | undefined>(undefined);\n\n /** Coleção mutável de Filtros aplicados — exibidos como chips (§6.1). */\n filtrosSelecionados = input<PjcFiltro[]>([]);\n\n /** Placeholder do seletor de prefixo. */\n seletorPlaceholder = input<string>('Selecione um filtro');\n\n /**\n * Emitido a cada aplicação bem-sucedida e a cada remoção,\n * com a coleção completa de aplicados (§6.2).\n */\n filtrar = output<PjcFiltro[]>();\n\n /**\n * Emitido ao detectar entrada sintaticamente inválida durante\n * tentativa de aplicação (§6.2 / RF-19 / RF-20).\n */\n erroValidacao = output<PjcFiltroErroValidacao>();\n\n /** Código do filtro selecionado no seletor de prefixo (estado interno). */\n readonly codigoAtual = signal<string | undefined>(undefined);\n\n /** Termos de entrada por tipo — só um é usado por vez (RF-04). */\n readonly termoTexto = signal<string>('');\n readonly termoNumerico = signal<string>('');\n readonly termoNumericoRangeMin = signal<string>('');\n readonly termoNumericoRangeMax = signal<string>('');\n readonly termoData = signal<Date | null>(null);\n readonly termoDataRange = signal<Date[] | null>(null);\n readonly termoEnum = signal<PjcOpcaoEnumFiltro | null>(null);\n readonly termoEnumMulti = signal<PjcOpcaoEnumFiltro[] | null>(null);\n readonly termoBooleano = signal<PjcOpcaoEnumFiltro | null>(null);\n\n /** Mensagem para região `aria-live` (RF-24). */\n readonly anuncioA11y = signal<string>('');\n\n /** Expõe o enum no template. */\n readonly TipoFiltro = PjcTipoFiltroCampo;\n\n /**\n * Filtro atualmente selecionado no seletor de prefixo. Derivado\n * de `filtros()` + `codigoAtual()` com fallback para o primeiro\n * disponível (RF-02).\n */\n readonly filtroSelecionado = computed<PjcFiltro | undefined>(() => {\n const disponiveis = this.filtros();\n if (disponiveis.length === 0) return undefined;\n const codigo = this.codigoAtual();\n return disponiveis.find((f) => f.codigo === codigo) ?? disponiveis[0];\n });\n\n /** Placeholder efetivo do campo de entrada (RF-25). */\n readonly placeholderEntrada = computed<string>(() => {\n const f = this.filtroSelecionado();\n if (!f) return '';\n return f.placeholder ?? 'Informe o valor do filtro';\n });\n\n /**\n * Opções efetivas para BOOLEANO. Usa `arrayEnum` se fornecido\n * (ex.: Ativo/Inativo); senão, o par padrão Sim/Não.\n */\n readonly opcoesBooleano = computed<PjcOpcaoEnumFiltro[]>(() => {\n const f = this.filtroSelecionado();\n const custom = f?.arrayEnum;\n return custom && custom.length > 0 ? custom : PJC_OPCOES_BOOLEANO_PADRAO;\n });\n\n /** Se o tipo atual aplica via confirmação (ENTER/botão) ou auto. */\n readonly aplicaPorConfirmacao = computed<boolean>(() => {\n const f = this.filtroSelecionado();\n return f ? APLICA_POR_CONFIRMACAO[f.tipo] : false;\n });\n\n /** Campo de entrada habilitado? (RF-08) */\n readonly entradaHabilitada = computed<boolean>(() => this.filtros().length > 0);\n\n /**\n * Inicializa `codigoAtual` respeitando `tipoSelecionado` quando\n * presente, senão o primeiro disponível (RF-02). Também recompõe\n * a seleção quando a coleção de disponíveis muda externamente.\n */\n private readonly sincronizaCodigoAtual = effect(() => {\n const disponiveis = this.filtros();\n const externo = this.tipoSelecionado();\n const atual = this.codigoAtual();\n\n if (disponiveis.length === 0) {\n if (atual !== undefined) this.codigoAtual.set(undefined);\n return;\n }\n\n const alvo = externo && disponiveis.some((f) => f.codigo === externo)\n ? externo\n : atual && disponiveis.some((f) => f.codigo === atual)\n ? atual\n : disponiveis[0].codigo;\n\n if (alvo !== atual) this.codigoAtual.set(alvo);\n });\n\n /** Região `aria-live` (RF-24). */\n private readonly atualizaAnuncio = effect(() => {\n const aplicados = this.filtrosSelecionados();\n const total = aplicados.length;\n this.anuncioA11y.set(\n total === 0\n ? 'Nenhum filtro aplicado.'\n : total === 1\n ? '1 filtro aplicado.'\n : `${total} filtros aplicados.`,\n );\n });\n\n /** Handler do seletor de prefixo (§5.5 — reconfigura modo de entrada). */\n onSelecionarTipo(codigo: string): void {\n this.codigoAtual.set(codigo);\n this.limparTermos();\n }\n\n /**\n * Dispara a aplicação do filtro atualmente selecionado, conforme\n * o modo de entrada ativo. ENUM aplica automaticamente via\n * `onAplicarEnum` (RF-07).\n */\n aplicar(): void {\n const filtro = this.filtroSelecionado();\n if (!filtro) return;\n\n try {\n const resultado = this.executarParse(filtro);\n if (!resultado) return; // E5/E6 — entrada vazia, ignora silenciosamente\n this.moverParaAplicados(filtro, resultado.valor, resultado.valorMostrar);\n } catch (err) {\n if (err instanceof PjcFiltroParseError) {\n this.erroValidacao.emit({\n codigoFiltro: filtro.codigo,\n mensagem: err.message,\n });\n return;\n }\n throw err;\n }\n }\n\n /** Aplicação automática de ENUM na mudança de seleção (RF-07). */\n onAplicarEnum(opcao: PjcOpcaoEnumFiltro | null): void {\n this.termoEnum.set(opcao);\n if (!opcao) return;\n const filtro = this.filtroSelecionado();\n if (!filtro) return;\n\n const resultado = parseEnum(opcao);\n if (!resultado) return;\n this.moverParaAplicados(filtro, resultado.valor, resultado.valorMostrar);\n }\n\n /** Aplicação automática de BOOLEANO na mudança de seleção (RF-07). */\n onAplicarBooleano(opcao: PjcOpcaoEnumFiltro | null): void {\n this.termoBooleano.set(opcao);\n if (!opcao) return;\n const filtro = this.filtroSelecionado();\n if (!filtro) return;\n\n const resultado = parseBooleano(opcao);\n if (!resultado) return;\n this.moverParaAplicados(filtro, resultado.valor, resultado.valorMostrar);\n }\n\n /** Remove um filtro aplicado e o devolve ao topo dos disponíveis (RF-15). */\n remover(filtro: PjcFiltro): void {\n const aplicados = this.filtrosSelecionados();\n const disponiveis = this.filtros();\n\n const idx = aplicados.findIndex((f) => f.codigo === filtro.codigo);\n if (idx === -1) return;\n\n const [removido] = aplicados.splice(idx, 1);\n const devolvido: PjcFiltro = { ...removido };\n delete devolvido.valor;\n delete devolvido.valorMostrar;\n\n disponiveis.unshift(devolvido);\n\n this.codigoAtual.set(disponiveis[0]?.codigo);\n this.limparTermos();\n this.filtrar.emit(aplicados);\n }\n\n /**\n * Executa o parse apropriado ao tipo do filtro selecionado e\n * devolve o resultado (valor/valorMostrar) ou `null` se o\n * usuário ainda não preencheu o suficiente.\n */\n private executarParse(filtro: PjcFiltro) {\n switch (filtro.tipo) {\n case PjcTipoFiltroCampo.TEXTO:\n return parseTexto(this.termoTexto(), !!filtro.isCpfCnpj);\n\n case PjcTipoFiltroCampo.NUMERICO:\n return parseNumerico(this.termoNumerico());\n\n case PjcTipoFiltroCampo.NUMERICO_RANGE:\n return parseNumericoRange(\n this.termoNumericoRangeMin(),\n this.termoNumericoRangeMax(),\n );\n\n case PjcTipoFiltroCampo.DATA: {\n const d = this.termoData();\n if (!d) return null;\n return parseData(formatarDataExibicao(d));\n }\n\n case PjcTipoFiltroCampo.DATA_RANGE: {\n const range = this.termoDataRange();\n if (!range || range.length < 2 || !range[0] || !range[1]) {\n return null;\n }\n return parseDataRange(\n formatarDataExibicao(range[0]),\n formatarDataExibicao(range[1]),\n );\n }\n\n case PjcTipoFiltroCampo.ENUM:\n return parseEnum(this.termoEnum() ?? undefined);\n\n case PjcTipoFiltroCampo.ENUM_MULTI:\n return parseEnumMulti(this.termoEnumMulti());\n\n case PjcTipoFiltroCampo.BOOLEANO:\n return parseBooleano(this.termoBooleano() ?? undefined);\n\n default:\n return null;\n }\n }\n\n /**\n * Tradução compartilhada do fluxo §5.3 passo 5: tira o filtro de\n * disponíveis, empurra em aplicados com valor/valorMostrar\n * preenchidos, limpa termos, reposiciona seleção e emite `filtrar`.\n *\n * Usa mutação in-place das coleções (contrato §6.3).\n *\n * Para DATA, o caminho normal usa `valor` do parser (ISO). Aqui\n * aceita-se também o já-ISO direto, simplificando a chamada.\n */\n private moverParaAplicados(\n filtro: PjcFiltro,\n valor: string,\n valorMostrar: string,\n ): void {\n const disponiveis = this.filtros();\n const aplicados = this.filtrosSelecionados();\n\n const idx = disponiveis.findIndex((f) => f.codigo === filtro.codigo);\n if (idx === -1) return;\n\n disponiveis.splice(idx, 1);\n\n // Para DATA, §6.4 diz: valor ISO, valorMostrar = dd/MM/aaaa.\n // O parser já devolveu valor em ISO; valorMostrar pode vir do\n // `Date` fonte quando disponível, para garantir 4 dígitos no ano.\n let valorFinal = valor;\n let mostrarFinal = valorMostrar;\n if (filtro.tipo === PjcTipoFiltroCampo.DATA) {\n const d = this.termoData();\n if (d) {\n valorFinal = formatarDataIso(d);\n mostrarFinal = formatarDataExibicao(d);\n }\n } else if (filtro.tipo === PjcTipoFiltroCampo.DATA_RANGE) {\n const range = this.termoDataRange();\n if (range && range[0] && range[1]) {\n valorFinal = `${formatarDataIso(range[0])},${formatarDataIso(range[1])}`;\n mostrarFinal = `${formatarDataExibicao(range[0])} - ${formatarDataExibicao(range[1])}`;\n }\n }\n\n const aplicado: PjcFiltro = {\n ...filtro,\n valor: valorFinal,\n valorMostrar: mostrarFinal,\n };\n aplicados.push(aplicado);\n\n this.codigoAtual.set(disponiveis[0]?.codigo);\n this.limparTermos();\n this.filtrar.emit(aplicados);\n }\n\n private limparTermos(): void {\n this.termoTexto.set('');\n this.termoNumerico.set('');\n this.termoNumericoRangeMin.set('');\n this.termoNumericoRangeMax.set('');\n this.termoData.set(null);\n this.termoDataRange.set(null);\n this.termoEnum.set(null);\n this.termoEnumMulti.set(null);\n this.termoBooleano.set(null);\n }\n}\n","<div class=\"flex flex-col gap-2 w-full\">\n <div class=\"pjc-filtro-container\" [class.pjc-filtro-disabled]=\"!entradaHabilitada()\">\n @if (filtros().length > 0) {\n <p-select\n class=\"pjc-filtro-prefix\"\n [options]=\"filtros()\"\n [ngModel]=\"codigoAtual()\"\n (ngModelChange)=\"onSelecionarTipo($event)\"\n optionLabel=\"nome\"\n optionValue=\"codigo\"\n appendTo=\"body\"\n [placeholder]=\"seletorPlaceholder()\"\n ariaLabel=\"Selecione o tipo de filtro\"\n />\n }\n\n <div class=\"pjc-filtro-entrada\">\n @switch (filtroSelecionado()?.tipo) {\n @case (TipoFiltro.TEXTO) {\n <input\n pInputText\n type=\"text\"\n [ngModel]=\"termoTexto()\"\n (ngModelChange)=\"termoTexto.set($event)\"\n (keydown.enter)=\"aplicar()\"\n [placeholder]=\"placeholderEntrada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input pjc-filtro-uppercase\"\n />\n }\n\n @case (TipoFiltro.NUMERICO) {\n <input\n pInputText\n type=\"text\"\n inputmode=\"numeric\"\n [ngModel]=\"termoNumerico()\"\n (ngModelChange)=\"termoNumerico.set($event)\"\n (keydown.enter)=\"aplicar()\"\n [placeholder]=\"placeholderEntrada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input\"\n />\n }\n\n @case (TipoFiltro.NUMERICO_RANGE) {\n <div class=\"pjc-filtro-range\">\n <input\n pInputText\n type=\"text\"\n inputmode=\"numeric\"\n [ngModel]=\"termoNumericoRangeMin()\"\n (ngModelChange)=\"termoNumericoRangeMin.set($event)\"\n (keydown.enter)=\"aplicar()\"\n placeholder=\"mín\"\n [attr.aria-label]=\"(filtroSelecionado()?.nome ?? '') + ' (mínimo)'\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input\"\n />\n <span class=\"pjc-filtro-range-sep\" aria-hidden=\"true\">—</span>\n <input\n pInputText\n type=\"text\"\n inputmode=\"numeric\"\n [ngModel]=\"termoNumericoRangeMax()\"\n (ngModelChange)=\"termoNumericoRangeMax.set($event)\"\n (keydown.enter)=\"aplicar()\"\n placeholder=\"máx\"\n [attr.aria-label]=\"(filtroSelecionado()?.nome ?? '') + ' (máximo)'\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input\"\n />\n </div>\n }\n\n @case (TipoFiltro.DATA) {\n <p-datePicker\n class=\"pjc-filtro-datepicker\"\n [ngModel]=\"termoData()\"\n (ngModelChange)=\"termoData.set($event)\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"dd/mm/aaaa\"\n appendTo=\"body\"\n [disabled]=\"!entradaHabilitada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n (keydown.enter)=\"aplicar()\"\n />\n }\n\n @case (TipoFiltro.DATA_RANGE) {\n <p-datePicker\n class=\"pjc-filtro-datepicker\"\n [ngModel]=\"termoDataRange()\"\n (ngModelChange)=\"termoDataRange.set($event)\"\n selectionMode=\"range\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"dd/mm/aaaa - dd/mm/aaaa\"\n appendTo=\"body\"\n [disabled]=\"!entradaHabilitada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n (keydown.enter)=\"aplicar()\"\n />\n }\n\n @case (TipoFiltro.ENUM) {\n <p-select\n class=\"pjc-filtro-enum-select\"\n [options]=\"filtroSelecionado()?.arrayEnum ?? []\"\n [ngModel]=\"termoEnum()\"\n (ngModelChange)=\"onAplicarEnum($event)\"\n optionLabel=\"texto\"\n [placeholder]=\"placeholderEntrada()\"\n appendTo=\"body\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n />\n }\n\n @case (TipoFiltro.ENUM_MULTI) {\n <p-multiselect\n class=\"pjc-filtro-enum-multi\"\n [options]=\"filtroSelecionado()?.arrayEnum ?? []\"\n [ngModel]=\"termoEnumMulti()\"\n (ngModelChange)=\"termoEnumMulti.set($event)\"\n optionLabel=\"texto\"\n display=\"comma\"\n [placeholder]=\"placeholderEntrada()\"\n appendTo=\"body\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n />\n }\n\n @case (TipoFiltro.BOOLEANO) {\n <p-select\n class=\"pjc-filtro-enum-select\"\n [options]=\"opcoesBooleano()\"\n [ngModel]=\"termoBooleano()\"\n (ngModelChange)=\"onAplicarBooleano($event)\"\n optionLabel=\"texto\"\n [placeholder]=\"placeholderEntrada()\"\n appendTo=\"body\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n />\n }\n }\n </div>\n\n @if (aplicaPorConfirmacao() && entradaHabilitada()) {\n <button\n type=\"button\"\n class=\"pjc-filtro-confirmar\"\n (click)=\"aplicar()\"\n aria-label=\"Aplicar filtro\"\n >\n <i class=\"pi pi-plus\"></i>\n </button>\n }\n </div>\n\n @if (filtrosSelecionados().length > 0) {\n <div class=\"pjc-filtro-chips\" role=\"list\" aria-label=\"Filtros aplicados\">\n @for (f of filtrosSelecionados(); track f.codigo) {\n <p-chip\n [label]=\"f.nome + ': ' + f.valorMostrar\"\n [removable]=\"true\"\n (onRemove)=\"remover(f)\"\n />\n }\n </div>\n }\n\n <div class=\"pjc-sr-only\" role=\"status\" aria-live=\"polite\">{{ anuncioA11y() }}</div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-hora-field',\n templateUrl: 'hora-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcHoraFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcHoraFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcHoraFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Hora');\n placeholder = input<string>('HH:MM');\n id = input<string>(`pjc-hora-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.hora()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99:99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n placeholder=\"HH:MM\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99:99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n placeholder=\"HH:MM\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-imei-field',\n templateUrl: 'imei-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcImeiFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcImeiFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcImeiFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('000000000000000');\n id = input<string>(`pjc-imei-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.imei()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999999999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999999999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-integer-field',\n templateUrl: 'integer-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputNumberModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcIntegerFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcIntegerFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('Número');\n placeholder = input<string>('Digite o número');\n id = input<string>(`pjc-integer-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n prefix = input<string>('');\n suffix = input<string>('');\n useGrouping = input<boolean>(false);\n min = input<number | null>(null);\n max = input<number | null>(null);\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: number | null = null;\n disabled = false;\n\n onChange: (value: number | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: number | null): void {\n this.value = val;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onValueChange(value: number | null): void {\n this.value = value;\n this.onChange(value);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputnumber\n [inputId]=\"id()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [useGrouping]=\"useGrouping()\"\n [prefix]=\"prefix()\"\n [suffix]=\"suffix()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [maxFractionDigits]=\"0\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n styleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputnumber\n [inputId]=\"id()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [useGrouping]=\"useGrouping()\"\n [prefix]=\"prefix()\"\n [suffix]=\"suffix()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [disabled]=\"disabled\"\n [maxFractionDigits]=\"0\"\n inputStyleClass=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n styleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, DestroyRef, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-moeda-field',\n templateUrl: 'moeda-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FloatLabelModule, InputTextModule, IconFieldModule, InputIconModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcMoedaFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcMoedaFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n placeholder = input<string>('');\n hint = input<string>('');\n id = input<string>(`pjc-moeda-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n mode = input<'currency' | 'decimal'>('currency');\n currency = input<string>('BRL');\n locale = input<string>('pt-BR');\n minFractionDigits = input<number>(2);\n maxFractionDigits = input<number>(2);\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private readonly divisor = computed(() => Math.pow(10, this.minFractionDigits()));\n private readonly cents = signal(0);\n\n readonly displayValue = computed(() => {\n const value = this.cents() / this.divisor();\n return new Intl.NumberFormat(this.locale(), {\n style: this.mode() === 'currency' ? 'currency' : 'decimal',\n currency: this.mode() === 'currency' ? this.currency() : undefined,\n minimumFractionDigits: this.minFractionDigits(),\n maximumFractionDigits: this.maxFractionDigits(),\n }).format(value);\n });\n\n disabled = false;\n\n onChange: (value: number | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled || this.readonly()) return;\n\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart ?? 0;\n const displayText = input.value;\n const digitsBeforeCursor = (displayText.substring(0, cursorPos).match(/\\d/g) || []).length;\n const displayDigits = (displayText.match(/\\d/g) || []).join('');\n\n if (/^\\d$/.test(event.key)) {\n event.preventDefault();\n const digits = displayDigits.split('');\n digits.splice(digitsBeforeCursor, 0, event.key);\n const newCents = Number.parseInt(digits.join(''), 10) || 0;\n if (newCents <= 9_999_999_999) {\n this.cents.set(newCents);\n this.emitValue();\n this.restoreCursor(input, digitsBeforeCursor + 1);\n }\n } else if (event.key === 'Backspace') {\n event.preventDefault();\n if (digitsBeforeCursor > 0) {\n const digits = displayDigits.split('');\n digits.splice(digitsBeforeCursor - 1, 1);\n this.cents.set(Number.parseInt(digits.join(''), 10) || 0);\n this.emitValue();\n this.restoreCursor(input, digitsBeforeCursor - 1);\n }\n } else if (event.key === 'Delete') {\n event.preventDefault();\n if (digitsBeforeCursor < displayDigits.length) {\n const digits = displayDigits.split('');\n digits.splice(digitsBeforeCursor, 1);\n this.cents.set(Number.parseInt(digits.join(''), 10) || 0);\n this.emitValue();\n this.restoreCursor(input, digitsBeforeCursor);\n }\n } else if (event.key.length === 1) {\n // Block all other printable characters (letters, symbols, etc.)\n event.preventDefault();\n }\n }\n\n private restoreCursor(input: HTMLInputElement, targetDigitPos: number): void {\n requestAnimationFrame(() => {\n const newValue = input.value;\n let digitCount = 0;\n let newPos = newValue.length;\n for (let i = 0; i < newValue.length; i++) {\n if (/\\d/.test(newValue[i])) {\n digitCount++;\n if (digitCount === targetDigitPos) {\n newPos = i + 1;\n break;\n }\n }\n }\n input.setSelectionRange(newPos, newPos);\n });\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n }\n\n private emitValue(): void {\n const value = this.cents() === 0 ? null : this.cents() / this.divisor();\n this.onChange(value);\n }\n\n writeValue(val: number | null): void {\n const cents = val == null ? 0 : Math.round(val * this.divisor());\n this.cents.set(cents);\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n (blur)=\"onTouched()\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n class=\"w-full\"\n styleClass=\"w-full\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n (blur)=\"onTouched()\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n class=\"w-full\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-numero-cartao-field',\n templateUrl: 'numero-cartao-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcNumeroCartaoFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcNumeroCartaoFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcNumeroCartaoFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('0000 0000 0000 0000');\n id = input<string>(`pjc-numero-cartao-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.numeroCartao()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"9999 9999 9999 9999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"9999 9999 9999 9999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-password-field',\n templateUrl: 'password-field.component.html',\n styleUrl: 'password-field.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcPasswordFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcPasswordFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('');\n id = input<string>(`pjc-password-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled: boolean = false;\n showPassword = signal<boolean>(false);\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n this.value = (event.target as HTMLInputElement).value;\n this.onChange(this.value);\n }\n\n toggleVisibility(): void {\n this.showPassword.update(v => !v);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full password-wrapper\" [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [type]=\"showPassword() ? 'text' : 'password'\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full pr-10 outline-none bg-transparent\"\n />\n <button\n type=\"button\"\n (click)=\"toggleVisibility()\"\n [disabled]=\"disabled\"\n class=\"password-toggle cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n [attr.aria-label]=\"showPassword() ? 'Ocultar senha' : 'Mostrar senha'\"\n >\n <i [class]=\"showPassword() ? 'pi pi-eye-slash' : 'pi pi-eye'\"></i>\n </button>\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full password-wrapper\" [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [type]=\"showPassword() ? 'text' : 'password'\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full pr-10 outline-none bg-transparent\"\n />\n <button\n type=\"button\"\n (click)=\"toggleVisibility()\"\n [disabled]=\"disabled\"\n class=\"password-toggle cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n [attr.aria-label]=\"showPassword() ? 'Ocultar senha' : 'Mostrar senha'\"\n >\n <i [class]=\"showPassword() ? 'pi pi-eye-slash' : 'pi pi-eye'\"></i>\n </button>\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-placa-field',\n templateUrl: 'placa-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcPlacaFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcPlacaFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcPlacaFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Placa do Veículo');\n placeholder = input<string>('ABC-1234');\n id = input<string>(`pjc-placa-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled = false;\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val?.toUpperCase() || '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(event: Event): void {\n const val = (event.target as HTMLInputElement)?.value ?? '';\n this.onChange(val.toUpperCase());\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.placaVeiculo()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"aaa-9*99\"\n [(ngModel)]=\"value\"\n (onInput)=\"onModelChange($event)\"\n (onBlur)=\"onTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"aaa-9*99\"\n [(ngModel)]=\"value\"\n (onInput)=\"onModelChange($event)\"\n (onBlur)=\"onTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 p-2 outline-none bg-transparent uppercase\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-renavam-field',\n templateUrl: 'renavam-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcRenavamFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcRenavamFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcRenavamFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00000000000');\n id = input<string>(`pjc-renavam-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.renavam()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, computed } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-telefone-field',\n templateUrl: 'telefone-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, FloatLabelModule, InputTextModule, IconFieldModule, InputIconModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcTelefoneFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcTelefoneFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcTelefoneFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Telefone');\n placeholder = input<string>('');\n id = input<string>(`pjc-telefone-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n displayValue: string = '';\n disabled: boolean = false;\n\n private rawValue: string = '';\n\n computedPlaceholder = computed(() => {\n const override = this.placeholder();\n if (override) return override;\n return this.rawValue.length > 10 ? '(00) 90000-0000' : '(00) 0000-0000';\n });\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.rawValue = val?.replaceAll(/\\D/g, '') ?? '';\n this.displayValue = this.formatValue(this.rawValue);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart ?? 0;\n const digitsBeforeCursor = input.value.substring(0, cursorPos).replace(/\\D/g, '').length;\n\n this.rawValue = input.value.replaceAll(/\\D/g, '').substring(0, 11);\n this.displayValue = this.formatValue(this.rawValue);\n this.onChange(this.rawValue);\n\n let newCursor = this.displayValue.length;\n let digitCount = 0;\n for (let i = 0; i < this.displayValue.length; i++) {\n if (/\\d/.test(this.displayValue[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n setTimeout(() => input.setSelectionRange(newCursor, newCursor));\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n private formatValue(digits: string): string {\n if (!digits) return '';\n\n if (digits.length <= 10) {\n // Fixo: (99) 9999-9999\n return digits\n .replace(/(\\d{2})(\\d)/, '($1) $2')\n .replace(/(\\(\\d{2}\\) \\d{4})(\\d)/, '$1-$2');\n }\n\n // Celular: (99) 99999-9999\n return digits\n .replace(/(\\d{2})(\\d)/, '($1) $2')\n .replace(/(\\(\\d{2}\\) \\d{5})(\\d)/, '$1-$2');\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.telefone()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"15\"\n class=\"w-full p-2 outline-none bg-transparent border border-surface-300 rounded-md focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"15\"\n class=\"w-full p-2 outline-none bg-transparent border border-surface-300 rounded-md focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport {\n getErrorMessage,\n initFormValidation,\n isFormControlInvalid,\n} from '../../utils/form-validation';\nimport { SelectModule } from 'primeng/select';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\nexport interface PjcTipoPessoa {\n label: string;\n value: string;\n}\n\nexport const TIPOS_PESSOA: PjcTipoPessoa[] = [\n { label: 'Pessoa Física', value: 'FISICA' },\n { label: 'Pessoa Jurídica', value: 'JURIDICA' },\n];\n\n@Component({\n selector: 'pjc-tipo-pessoa-field',\n templateUrl: 'tipo-pessoa-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcTipoPessoaFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcTipoPessoaFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('Tipo de Pessoa');\n placeholder = input<string>('Selecione o tipo de pessoa');\n id = input<string>(`pjc-tipo-pessoa-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n readonly tiposPessoa = TIPOS_PESSOA;\n\n value: string | null = null;\n disabled = false;\n\n onChange: (value: string | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string | null): void {\n this.value = value;\n this.onChange(value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-select\n [inputId]=\"id()\"\n [options]=\"tiposPessoa\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n appendTo=\"body\"\n [disabled]=\"disabled || readonly()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"tiposPessoa\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n appendTo=\"body\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","export interface PjcUf {\n uf: string;\n descricao: string;\n}\n\nexport const ESTADOS: PjcUf[] = [\n { uf: 'MT', descricao: 'Mato Grosso' },\n { uf: 'AC', descricao: 'Acre' },\n { uf: 'AL', descricao: 'Alagoas' },\n { uf: 'AP', descricao: 'Amapá' },\n { uf: 'AM', descricao: 'Amazonas' },\n { uf: 'BA', descricao: 'Bahia' },\n { uf: 'CE', descricao: 'Ceará' },\n { uf: 'DF', descricao: 'Distrito Federal' },\n { uf: 'ES', descricao: 'Espírito Santo' },\n { uf: 'GO', descricao: 'Goiás' },\n { uf: 'MA', descricao: 'Maranhão' },\n { uf: 'MS', descricao: 'Mato Grosso do Sul' },\n { uf: 'MG', descricao: 'Minas Gerais' },\n { uf: 'PA', descricao: 'Pará' },\n { uf: 'PB', descricao: 'Paraíba' },\n { uf: 'PR', descricao: 'Paraná' },\n { uf: 'PE', descricao: 'Pernambuco' },\n { uf: 'PI', descricao: 'Piauí' },\n { uf: 'RJ', descricao: 'Rio de Janeiro' },\n { uf: 'RN', descricao: 'Rio Grande do Norte' },\n { uf: 'RS', descricao: 'Rio Grande do Sul' },\n { uf: 'RO', descricao: 'Rondônia' },\n { uf: 'RR', descricao: 'Roraima' },\n { uf: 'SC', descricao: 'Santa Catarina' },\n { uf: 'SP', descricao: 'São Paulo' },\n { uf: 'SE', descricao: 'Sergipe' },\n { uf: 'TO', descricao: 'Tocantins' },\n];\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { SelectModule } from 'primeng/select';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { FilterService } from 'primeng/api';\nimport { ESTADOS, PjcUf } from './uf-field.constants';\n\nconst PJC_ACCENT_CONTAINS = 'pjc-accent-contains';\nconst normalize = (s: string) => s.normalize('NFD').replaceAll(/[\\u0300-\\u036f]/g, '').toLowerCase();\n\n@Component({\n selector: 'pjc-uf-field',\n templateUrl: 'uf-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcUfFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcUfFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('UF');\n hint = input<string>('');\n placeholder = input<string>('Selecione o estado');\n id = input<string>(`pjc-uf-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n filter = input<boolean>(false);\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly filterService = inject(FilterService);\n private ngControl: NgControl | null = null;\n\n readonly estados = ESTADOS;\n readonly accentContainsFilter = PJC_ACCENT_CONTAINS;\n\n value: PjcUf | null = null;\n disabled = false;\n\n onChange: (value: PjcUf | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n this.filterService.register(PJC_ACCENT_CONTAINS, (value: any, filter: any): boolean => {\n if (filter === undefined || filter === null || String(filter).trim() === '') return true;\n if (value === undefined || value === null) return false;\n return normalize(String(value)).includes(normalize(String(filter)));\n });\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: PjcUf | null): void {\n this.value = val?.uf ? (ESTADOS.find(e => e.uf === val.uf) ?? null) : null;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: PjcUf | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: PjcUf | null): void {\n this.value = value;\n this.onChange(value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-select\n [inputId]=\"id()\"\n [options]=\"estados\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"descricao\"\n dataKey=\"uf\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n filterBy=\"descricao\"\n [disabled]=\"disabled || readonly()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"estados\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"descricao\"\n dataKey=\"uf\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n filterBy=\"descricao\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n getErrorMessage,\n initFormValidation,\n isFormControlInvalid,\n} from '../../utils/form-validation';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-uppercase-field',\n templateUrl: 'uppercase-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcUppercaseFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcUppercaseFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('Nome');\n placeholder = input<string | undefined>();\n id = input<string>(`pjc-uppercase-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n hint = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = signal<string>('');\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | number | null): void {\n if (val == null) {\n this.value.set('');\n } else {\n this.value.set(String(val).toUpperCase());\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n const upper = (event.target as HTMLInputElement).value.toUpperCase();\n this.value.set(upper);\n this.onChange(upper);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder() || label()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500 placeholder:normal-case\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder() || label()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500 placeholder:normal-case\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-pjc-fields',\n imports: [],\n template: ` <p>pjc-fields works!</p> `,\n styles: ``,\n})\nexport class PjcFields {}\n","export type PjcUnidadeMedida =\n | 'grama'\n | 'quilograma'\n | 'unidade'\n | 'miligrama'\n | 'litro'\n | 'mililitro'\n | 'centigrama'\n | 'metrocubico';\n\nconst unidadesM = ['', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove'];\nconst unidadesF = ['', 'uma', 'duas', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove'];\nconst dezenasEspeciais = [\n 'dez',\n 'onze',\n 'doze',\n 'treze',\n 'quatorze',\n 'quinze',\n 'dezesseis',\n 'dezessete',\n 'dezoito',\n 'dezenove',\n];\nconst dezenas = [\n '',\n '',\n 'vinte',\n 'trinta',\n 'quarenta',\n 'cinquenta',\n 'sessenta',\n 'setenta',\n 'oitenta',\n 'noventa',\n];\nconst centenasM = [\n '',\n 'cento',\n 'duzentos',\n 'trezentos',\n 'quatrocentos',\n 'quinhentos',\n 'seiscentos',\n 'setecentos',\n 'oitocentos',\n 'novecentos',\n];\nconst centenasF = [\n '',\n 'cento',\n 'duzentas',\n 'trezentas',\n 'quatrocentas',\n 'quinhentas',\n 'seiscentas',\n 'setecentas',\n 'oitocentas',\n 'novecentas',\n];\n\nconst configUnidades: Record<\n PjcUnidadeMedida,\n { singular: string; plural: string; feminino: boolean }\n> = {\n // Nota: \"Grama\" (peso) é substantivo masculino (\"dois gramas\").\n grama: { singular: 'grama', plural: 'gramas', feminino: false },\n quilograma: { singular: 'quilograma', plural: 'quilogramas', feminino: false },\n metrocubico: { singular: 'metro cúbico', plural: 'metros cúbicos', feminino: false },\n unidade: { singular: 'unidade', plural: 'unidades', feminino: true },\n miligrama: { singular: 'miligrama', plural: 'miligramas', feminino: false },\n litro: { singular: 'litro', plural: 'litros', feminino: false },\n mililitro: { singular: 'mililitro', plural: 'mililitros', feminino: false },\n centigrama: { singular: 'centigrama', plural: 'centigramas', feminino: false },\n};\n\nexport class PjcUtils {\n /**\n * Converte um número inteiro para extenso.\n */\n static numeroPorExtenso(numero: number, isFeminino = false): string {\n if (numero === 0) return 'zero';\n\n const partes: number[] = [];\n let temp = Math.floor(Math.abs(numero));\n while (temp > 0) {\n partes.push(temp % 1000);\n temp = Math.floor(temp / 1000);\n }\n\n const grandezasSingular = ['', 'mil', 'milhão', 'bilhão'];\n const grandezasPlural = ['', 'mil', 'milhões', 'bilhões'];\n\n const resultado: string[] = [];\n for (let i = 0; i < partes.length; i++) {\n const valor = partes[i];\n if (valor === 0) continue;\n\n if (i === 1 && valor === 1) {\n resultado.unshift('mil');\n } else {\n const strGrupo = PjcUtils.traduzirGrupo(valor, isFeminino);\n const grandeza = valor === 1 ? grandezasSingular[i] : grandezasPlural[i];\n resultado.unshift(grandeza ? `${strGrupo} ${grandeza}` : strGrupo);\n }\n }\n\n // Junta as casas maiores com vírgula e a última com \"e\"\n return resultado\n .join(', ')\n .replace(/,([^,]*)$/, ' e$1')\n .trim();\n }\n\n private static traduzirGrupo(n: number, isFeminino: boolean): string {\n if (n === 100) return 'cem';\n\n const u = isFeminino ? unidadesF : unidadesM;\n const c = isFeminino ? centenasF : centenasM;\n\n const centena = Math.floor(n / 100);\n const dezena = Math.floor((n % 100) / 10);\n const unidade = n % 10;\n\n const partes: string[] = [];\n if (centena > 0) partes.push(c[centena]);\n partes.push(PjcUtils.traduzirDezenaUnidade(dezena, unidade, u));\n\n return partes.filter(Boolean).join(' e ');\n }\n\n private static traduzirDezenaUnidade(dezena: number, unidade: number, u: string[]): string {\n if (dezena === 0 && unidade === 0) return '';\n if (dezena === 1) return dezenasEspeciais[unidade];\n\n const partes: string[] = [];\n if (dezena > 1) partes.push(dezenas[dezena]);\n if (unidade > 0) partes.push(u[unidade]);\n return partes.join(' e ');\n }\n\n /**\n * Converte valor monetário para extenso.\n */\n static valorMonetarioPorExtenso(\n valor: number,\n currencyName: string = 'real',\n currencyNamePlural: string = 'reais',\n centavoSingular: string = 'centavo',\n centavoPlural: string = 'centavos',\n ): string {\n const inteiros = Math.floor(valor);\n const centavos = Math.round((valor - inteiros) * 100);\n\n const partes = [];\n\n if (inteiros > 0) {\n const moeda = inteiros === 1 ? currencyName : currencyNamePlural;\n partes.push(`${PjcUtils.numeroPorExtenso(inteiros)} ${moeda}`);\n }\n\n if (centavos > 0) {\n const cent = centavos === 1 ? centavoSingular : centavoPlural;\n partes.push(`${PjcUtils.numeroPorExtenso(centavos)} ${cent}`);\n }\n\n return partes.join(' e ') || `zero ${currencyNamePlural}`;\n }\n\n /**\n * Converte unidade de medida para extenso, respeitando gênero.\n * Para quilograma e litro, a parte decimal é convertida para a subunidade\n * correspondente (grama e mililitro, respectivamente).\n */\n static unidadeMedidaPorExtenso(valor: number, unidade: PjcUnidadeMedida): string {\n const config = configUnidades[unidade];\n\n if (unidade === 'quilograma' || unidade === 'litro') {\n const resultado = PjcUtils.unidadeComSubunidade(valor, unidade, config);\n if (resultado) return resultado;\n }\n\n const textoNumero = PjcUtils.numeroPorExtenso(valor, config.feminino);\n const textoUnidade = valor === 1 ? config.singular : config.plural;\n\n return `${textoNumero} ${textoUnidade}`;\n }\n\n private static unidadeComSubunidade(\n valor: number,\n unidade: PjcUnidadeMedida,\n config: { singular: string; plural: string; feminino: boolean },\n ): string | null {\n const inteiros = Math.floor(valor);\n const decimal = Math.round((valor - inteiros) * 1000);\n\n if (decimal === 0) return null;\n\n const partes: string[] = [];\n\n if (inteiros > 0) {\n const textoInteiros = PjcUtils.numeroPorExtenso(inteiros, config.feminino);\n const textoUnidade = inteiros === 1 ? config.singular : config.plural;\n partes.push(`${textoInteiros} ${textoUnidade}`);\n }\n\n const subUnidade: PjcUnidadeMedida = unidade === 'quilograma' ? 'grama' : 'mililitro';\n const subConfig = configUnidades[subUnidade];\n const textoDecimal = PjcUtils.numeroPorExtenso(decimal, subConfig.feminino);\n const textoSubUnidade = decimal === 1 ? subConfig.singular : subConfig.plural;\n partes.push(`${textoDecimal} ${textoSubUnidade}`);\n\n return partes.join(' e ');\n }\n\n /**\n * Converte múltiplas unidades de massa para extenso em uma única string.\n * Todos os parâmetros são opcionais. Os valores informados são convertidos\n * para extenso e concatenados com vírgulas e \"e\" antes do último item.\n *\n * Exemplo:\n * PjcUtils.massaPorExtenso({ quilograma: 1, grama: 200, miligrama: 100, centigrama: 500 })\n * // => \"um quilograma, duzentos gramas, cem miligramas e quinhentos centigramas\"\n */\n static massaPorExtenso(params: {\n quilograma?: number;\n grama?: number;\n miligrama?: number;\n centigrama?: number;\n }): string {\n const mapeamento: { chave: keyof typeof params; unidade: PjcUnidadeMedida }[] = [\n { chave: 'quilograma', unidade: 'quilograma' },\n { chave: 'grama', unidade: 'grama' },\n { chave: 'miligrama', unidade: 'miligrama' },\n { chave: 'centigrama', unidade: 'centigrama' },\n ];\n\n const partes: string[] = [];\n\n for (const { chave, unidade } of mapeamento) {\n const valor = params[chave];\n if (valor != null && valor > 0) {\n partes.push(PjcUtils.unidadeMedidaPorExtenso(valor, unidade));\n }\n }\n\n if (partes.length === 0) return '';\n\n if (partes.length === 1) return partes[0];\n\n // Junta com vírgulas e \"e\" antes do último item\n const ultimo = partes.pop()!;\n return `${partes.join(', ')} e ${ultimo}`;\n }\n\n /**\n * Converte múltiplas unidades de volume para extenso em uma única string.\n * Todos os parâmetros são opcionais. Os valores informados são convertidos\n * para extenso e concatenados com vírgulas e \"e\" antes do último item.\n *\n * Exemplo:\n * PjcUtils.volumePorExtenso({ litro: 2, mililitro: 500 })\n * // => \"dois litros e quinhentos mililitros\"\n */\n static volumePorExtenso(params: {\n litro?: number;\n mililitro?: number;\n }): string {\n const mapeamento: { chave: keyof typeof params; unidade: PjcUnidadeMedida }[] = [\n { chave: 'litro', unidade: 'litro' },\n { chave: 'mililitro', unidade: 'mililitro' },\n ];\n\n const partes: string[] = [];\n\n for (const { chave, unidade } of mapeamento) {\n const valor = params[chave];\n if (valor != null && valor > 0) {\n partes.push(PjcUtils.unidadeMedidaPorExtenso(valor, unidade));\n }\n }\n\n if (partes.length === 0) return '';\n\n if (partes.length === 1) return partes[0];\n\n // Junta com vírgulas e \"e\" antes do último item\n const ultimo = partes.pop()!;\n return `${partes.join(', ')} e ${ultimo}`;\n }\n}\n","/*\n * Public API Surface of pjc-fields\n */\n\nexport * from './lib/components/cep-field/cep-field.component';\nexport * from './lib/components/chassi-field/chassi-field.component';\nexport * from './lib/components/chassi-field/chassi-input.directive';\nexport * from './lib/components/cidade-field/cidade-field.component';\nexport * from './lib/components/cidade-field/pjc-cidade-service.token';\nexport * from './lib/components/cidade-field/pjc-cidade.service';\nexport * from './lib/components/cidade-field/pjc-municipio.model';\nexport * from './lib/components/cnh-field/cnh-field.component';\nexport * from './lib/components/cnpj-field/cnpj-field.component';\nexport * from './lib/components/cpf-cnpj-field/cpf-cnpj-field.component';\nexport * from './lib/components/cpf-field/cpf-field.component';\nexport * from './lib/components/data-field/data-field.component';\nexport * from './lib/components/data-hora-field/data-hora-field.component';\nexport * from './lib/components/detalhes/detalhes.component';\nexport * from './lib/components/email-field/email-field.component';\nexport * from './lib/components/enum-field/enum-field.component';\nexport * from './lib/components/enum-field/pjc-enum-item.model';\nexport * from './lib/components/enum-field/pjc-enum-service.token';\nexport * from './lib/components/enum-field/pjc-enum.service';\nexport * from './lib/components/erro-validacao/erro-validacao.component';\nexport * from './lib/components/filtro-field/filtro-field.component';\nexport * from './lib/components/filtro-field/pjc-filtro.model';\nexport * from './lib/components/hora-field/hora-field.component';\nexport * from './lib/components/imei-field/imei-field.component';\nexport * from './lib/components/integer-field/integer-field.component';\nexport * from './lib/components/moeda-field/moeda-field.component';\nexport * from './lib/components/numero-cartao-field/numero-cartao-field.component';\nexport * from './lib/components/password-field/password-field.component';\nexport * from './lib/components/placa-field/placa-field.component';\nexport * from './lib/components/renavam-field/renavam-field.component';\nexport * from './lib/components/telefone-field/telefone-field.component';\nexport * from './lib/components/tipo-pessoa-field/tipo-pessoa-field.component';\nexport * from './lib/components/uf-field/uf-field.component';\nexport * from './lib/components/uf-field/uf-field.constants';\nexport * from './lib/components/uppercase-field/uppercase-field.component';\nexport * from './lib/pjc-fields';\nexport * from './lib/validators/pjc-validators';\n\nexport * from './lib/utils/pjc-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5","PJC_ACCENT_CONTAINS","normalize","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pjc-fields.mjs","sources":["../../../projects/pjc-fields/src/lib/validators/pjc-validators.ts","../../../projects/pjc-fields/src/lib/utils/form-validation.ts","../../../projects/pjc-fields/src/lib/components/cep-field/cep-field.component.ts","../../../projects/pjc-fields/src/lib/components/cep-field/cep-field.component.html","../../../projects/pjc-fields/src/lib/components/chassi-field/chassi-input.directive.ts","../../../projects/pjc-fields/src/lib/components/chassi-field/chassi-field.component.ts","../../../projects/pjc-fields/src/lib/components/chassi-field/chassi-field.component.html","../../../projects/pjc-fields/src/lib/components/cidade-field/pjc-cidade.service.ts","../../../projects/pjc-fields/src/lib/components/cidade-field/pjc-cidade-service.token.ts","../../../projects/pjc-fields/src/lib/components/cidade-field/cidade-field.component.ts","../../../projects/pjc-fields/src/lib/components/cidade-field/cidade-field.component.html","../../../projects/pjc-fields/src/lib/components/cnh-field/cnh-field.component.ts","../../../projects/pjc-fields/src/lib/components/cnh-field/cnh-field.component.html","../../../projects/pjc-fields/src/lib/components/cnpj-field/cnpj-field.component.ts","../../../projects/pjc-fields/src/lib/components/cnpj-field/cnpj-field.component.html","../../../projects/pjc-fields/src/lib/components/cpf-cnpj-field/cpf-cnpj-field.component.ts","../../../projects/pjc-fields/src/lib/components/cpf-cnpj-field/cpf-cnpj-field.component.html","../../../projects/pjc-fields/src/lib/components/cpf-field/cpf-field.component.ts","../../../projects/pjc-fields/src/lib/components/cpf-field/cpf-field.component.html","../../../projects/pjc-fields/src/lib/components/data-field/data-field.component.ts","../../../projects/pjc-fields/src/lib/components/data-field/data-field.component.html","../../../projects/pjc-fields/src/lib/components/data-hora-field/data-hora-field.component.ts","../../../projects/pjc-fields/src/lib/components/data-hora-field/data-hora-field.component.html","../../../projects/pjc-fields/src/lib/components/detalhes/detalhes.component.ts","../../../projects/pjc-fields/src/lib/components/detalhes/detalhes.component.html","../../../projects/pjc-fields/src/lib/components/email-field/email-field.component.ts","../../../projects/pjc-fields/src/lib/components/email-field/email-field.component.html","../../../projects/pjc-fields/src/lib/components/enum-field/pjc-enum-service.token.ts","../../../projects/pjc-fields/src/lib/components/enum-field/pjc-enum.service.ts","../../../projects/pjc-fields/src/lib/components/enum-field/enum-field.component.ts","../../../projects/pjc-fields/src/lib/components/enum-field/enum-field.component.html","../../../projects/pjc-fields/src/lib/components/erro-validacao/erro-validacao.component.ts","../../../projects/pjc-fields/src/lib/components/erro-validacao/erro-validacao.component.html","../../../projects/pjc-fields/src/lib/components/filtro-field/pjc-filtro.model.ts","../../../projects/pjc-fields/src/lib/components/filtro-field/pjc-filtro-parsers.ts","../../../projects/pjc-fields/src/lib/components/filtro-field/filtro-field.component.ts","../../../projects/pjc-fields/src/lib/components/filtro-field/filtro-field.component.html","../../../projects/pjc-fields/src/lib/components/hora-field/hora-field.component.ts","../../../projects/pjc-fields/src/lib/components/hora-field/hora-field.component.html","../../../projects/pjc-fields/src/lib/components/imei-field/imei-field.component.ts","../../../projects/pjc-fields/src/lib/components/imei-field/imei-field.component.html","../../../projects/pjc-fields/src/lib/components/integer-field/integer-field.component.ts","../../../projects/pjc-fields/src/lib/components/integer-field/integer-field.component.html","../../../projects/pjc-fields/src/lib/components/moeda-field/moeda-field.component.ts","../../../projects/pjc-fields/src/lib/components/moeda-field/moeda-field.component.html","../../../projects/pjc-fields/src/lib/components/numero-cartao-field/numero-cartao-field.component.ts","../../../projects/pjc-fields/src/lib/components/numero-cartao-field/numero-cartao-field.component.html","../../../projects/pjc-fields/src/lib/components/password-field/password-field.component.ts","../../../projects/pjc-fields/src/lib/components/password-field/password-field.component.html","../../../projects/pjc-fields/src/lib/components/placa-field/placa-field.component.ts","../../../projects/pjc-fields/src/lib/components/placa-field/placa-field.component.html","../../../projects/pjc-fields/src/lib/components/renavam-field/renavam-field.component.ts","../../../projects/pjc-fields/src/lib/components/renavam-field/renavam-field.component.html","../../../projects/pjc-fields/src/lib/components/telefone-field/telefone-field.component.ts","../../../projects/pjc-fields/src/lib/components/telefone-field/telefone-field.component.html","../../../projects/pjc-fields/src/lib/components/tipo-pessoa-field/tipo-pessoa-field.component.ts","../../../projects/pjc-fields/src/lib/components/tipo-pessoa-field/tipo-pessoa-field.component.html","../../../projects/pjc-fields/src/lib/components/uf-field/uf-field.constants.ts","../../../projects/pjc-fields/src/lib/components/uf-field/uf-field.component.ts","../../../projects/pjc-fields/src/lib/components/uf-field/uf-field.component.html","../../../projects/pjc-fields/src/lib/components/uppercase-field/uppercase-field.component.ts","../../../projects/pjc-fields/src/lib/components/uppercase-field/uppercase-field.component.html","../../../projects/pjc-fields/src/lib/pjc-fields.ts","../../../projects/pjc-fields/src/lib/utils/pjc-utils.ts","../../../projects/pjc-fields/src/public-api.ts","../../../projects/pjc-fields/src/pjc-fields.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class PjcValidators {\n static cpf(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.replace(/\\D/g, '');\n\n if (!value) return null;\n\n if (value.length !== 11 || /^(\\d)\\1+$/.test(value)) {\n return { cpfInvalido: true };\n }\n\n if (!PjcValidators.validateCpfDigits(value)) {\n return { cpfInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateCpfDigits(cpf: string): boolean {\n const calculateDigit = (slice: string, factor: number) => {\n let total = 0;\n for (const digit of slice) {\n total += parseInt(digit) * factor--;\n }\n const remainder = total % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n };\n\n const digit1 = calculateDigit(cpf.substring(0, 9), 10);\n const digit2 = calculateDigit(cpf.substring(0, 10), 11);\n\n return digit1 === parseInt(cpf[9]) && digit2 === parseInt(cpf[10]);\n }\n\n /**\n * Valida o algoritmo do CNPJ (Módulo 11)\n */\n static cnpj(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.replace(/\\D/g, '');\n\n if (!value) return null;\n\n // CNPJ deve ter 14 dígitos e não pode ser sequência repetida\n if (value.length !== 14 || /^(\\d)\\1+$/.test(value)) {\n return { cnpjInvalido: true };\n }\n\n if (!PjcValidators.validateCnpjDigits(value)) {\n return { cnpjInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateCnpjDigits(cnpj: string): boolean {\n const calculateDigit = (slice: string, weights: number[]) => {\n let total = 0;\n for (let i = 0; i < slice.length; i++) {\n total += parseInt(slice[i]) * weights[i];\n }\n const remainder = total % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n };\n\n const weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n const weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n const digit1 = calculateDigit(cnpj.substring(0, 12), weights1);\n const digit2 = calculateDigit(cnpj.substring(0, 13), weights2);\n\n return digit1 === parseInt(cnpj[12]) && digit2 === parseInt(cnpj[13]);\n }\n\n static cpfCnpj(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.replace(/\\D/g, '');\n if (!value) return null;\n\n if (value.length <= 11) {\n return PjcValidators.cpf()(control);\n } else {\n return PjcValidators.cnpj()(control);\n }\n };\n }\n\n static telefone(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n // Fixo: DDD (2) + 8 dígitos = 10 | Celular: DDD (2) + 9 dígitos = 11\n if (digits.length !== 10 && digits.length !== 11) {\n return { telefoneInvalido: true };\n }\n\n // Celular deve começar com 9 após o DDD\n if (digits.length === 11 && digits[2] !== '9') {\n return { telefoneInvalido: true };\n }\n\n return null;\n };\n }\n\n static hora(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value || typeof value !== 'string') return null;\n\n const match = value.match(/^(\\d{2}):(\\d{2})$/);\n if (!match) return { horaInvalida: true };\n\n const hours = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n\n if (hours > 23 || minutes > 59) {\n return { horaInvalida: true };\n }\n\n return null;\n };\n }\n\n static placaVeiculo(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const value = control.value.toUpperCase().replace('-', '');\n if (!value) return null;\n\n // Regex para Padrão Antigo (AAA9999) e Mercosul (AAA9A99)\n const plateRegex = /^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$/;\n\n return plateRegex.test(value) ? null : { placaInvalida: true };\n };\n }\n\n static email(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value || typeof value !== 'string') return null;\n\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n return emailRegex.test(value) ? null : { emailInvalido: true };\n };\n }\n\n static imei(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (digits.length !== 15) {\n return { imeiInvalido: true };\n }\n\n if (!PjcValidators.validateImei(digits)) {\n return { imeiInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateImei(digits: string): boolean {\n let sum = 0;\n\n for (let i = 0; i < digits.length; i++) {\n let n = Number.parseInt(digits[i], 10);\n\n if (i % 2 === 1) {\n n *= 2;\n if (n > 9) {\n n -= 9;\n }\n }\n\n sum += n;\n }\n\n return sum % 10 === 0;\n }\n\n static numeroCartao(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (digits.length < 13 || digits.length > 19) {\n return { numeroCartaoInvalido: true };\n }\n\n if (!PjcValidators.validateLuhn(digits)) {\n return { numeroCartaoInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateLuhn(digits: string): boolean {\n let sum = 0;\n let alternate = false;\n\n for (let i = digits.length - 1; i >= 0; i--) {\n let n = Number.parseInt(digits[i], 10);\n\n if (alternate) {\n n *= 2;\n if (n > 9) {\n n -= 9;\n }\n }\n\n sum += n;\n alternate = !alternate;\n }\n\n return sum % 10 === 0;\n }\n\n static renavam(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (!PjcValidators.validateRenavam(digits)) {\n return { renavamInvalido: true };\n }\n\n return null;\n };\n }\n\n private static validateRenavam(digits: string): boolean {\n if (digits.length < 1 || digits.length > 11) return false;\n\n const padded = digits.padStart(11, '0');\n const weights = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3];\n const reversed = padded.substring(0, 10).split('').reverse();\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += Number.parseInt(reversed[i]) * weights[i];\n }\n\n let digit = (sum * 10) % 11;\n if (digit === 10) digit = 0;\n\n return digit === Number.parseInt(padded[10]);\n }\n\n static chassi(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value || typeof value !== 'string') return null;\n\n const chassiRegex = /^[A-HJ-NPR-Z0-9]{17}$/;\n return chassiRegex.test(value) ? null : { chassiInvalido: true };\n };\n }\n\n static cnh(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n if (!PjcValidators.validateCnh(digits)) {\n return { cnhInvalida: true };\n }\n\n return null;\n };\n }\n\n private static validateCnh(digits: string): boolean {\n if (digits.length !== 11 || /^(\\d)\\1+$/.test(digits)) return false;\n\n const weights1 = [9, 8, 7, 6, 5, 4, 3, 2, 1];\n let sum1 = 0;\n for (let i = 0; i < 9; i++) {\n sum1 += Number.parseInt(digits[i]) * weights1[i];\n }\n const remainder1 = sum1 % 11;\n const dv1 = remainder1 >= 10 ? 0 : remainder1;\n const variation = remainder1 > 9 ? -2 : 0;\n\n const weights2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n let sum2 = 0;\n for (let i = 0; i < 9; i++) {\n sum2 += Number.parseInt(digits[i]) * weights2[i];\n }\n let result2 = (sum2 % 11) + variation;\n if (result2 < 0) result2 += 11;\n const dv2 = result2 >= 10 ? 0 : result2;\n\n return dv1 === Number.parseInt(digits[9]) && dv2 === Number.parseInt(digits[10]);\n }\n\n static cep(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (typeof control.value !== 'string') return null;\n const digits = control.value.replace(/\\D/g, '');\n if (!digits) return null;\n\n return digits.length === 8 ? null : { cepInvalido: true };\n };\n }\n\n static inteiroMaiorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value >= 0 ? null : { inteiroMaiorIgualZero: true };\n };\n }\n\n static inteiroMaiorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value > 0 ? null : { inteiroMaiorZero: true };\n };\n }\n\n static inteiroMenorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value < 0 ? null : { inteiroMenorZero: true };\n };\n }\n\n static inteiroMenorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value <= 0 ? null : { inteiroMenorIgualZero: true };\n };\n }\n\n static inteiroNuloOuMaiorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value >= 0 ? null : { inteiroNuloOuMaiorIgualZero: true };\n };\n }\n\n static inteiroNuloOuMaiorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value > 0 ? null : { inteiroNuloOuMaiorZero: true };\n };\n }\n\n static inteiroNuloOuMenorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value < 0 ? null : { inteiroNuloOuMenorZero: true };\n };\n }\n\n static inteiroNuloOuMenorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n return value <= 0 ? null : { inteiroNuloOuMenorIgualZero: true };\n };\n }\n\n static decimalMaiorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue >= 0 ? null : { decimalMaiorIgualZero: true };\n };\n }\n\n static decimalMaiorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue > 0 ? null : { decimalMaiorZero: true };\n };\n }\n\n static decimalMenorZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue < 0 ? null : { decimalMenorZero: true };\n };\n }\n\n static decimalMenorIgualZero(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return !isNaN(numValue) && numValue <= 0 ? null : { decimalMenorIgualZero: true };\n };\n }\n\n static data(minDate?: Date, maxDate?: Date): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) return null;\n\n if (minDate && date < minDate) {\n return { dataMinima: { min: minDate, atual: date } };\n }\n\n if (maxDate && date > maxDate) {\n return { dataMaxima: { max: maxDate, atual: date } };\n }\n\n return null;\n };\n }\n\n static dataHora(minDate?: Date, maxDate?: Date): ValidatorFn {\n return PjcValidators.data(minDate, maxDate);\n }\n}\n","import { ChangeDetectorRef, DestroyRef, Injector } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * Initializes form validation state propagation for a ControlValueAccessor component.\n * Subscribes to the parent form control's events (including TouchedChangeEvent and\n * PristineChangeEvent) to trigger change detection, enabling the component to react\n * to markAllAsTouched() and markAllAsDirty() calls.\n *\n * Must be called in ngOnInit (after NgControl.control is available).\n *\n * Returns the NgControl reference for use in template bindings.\n */\nexport function initFormValidation(\n injector: Injector,\n cdr: ChangeDetectorRef,\n destroyRef: DestroyRef,\n): NgControl | null {\n const ngControl = injector.get(NgControl, null);\n\n if (ngControl?.control) {\n ngControl.control.events\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => cdr.markForCheck());\n }\n\n return ngControl;\n}\n\n/**\n * Returns true when the form control is invalid AND has been interacted with\n * (dirty or touched). Use this to conditionally apply ng-invalid/ng-dirty\n * classes on inner PrimeNG components.\n */\nexport function isFormControlInvalid(ngControl: NgControl | null): boolean {\n const c = ngControl?.control;\n return !!c?.invalid && (!!c?.dirty || !!c?.touched);\n}\n\n/**\n * Returns the first error message to display based on the control's current\n * errors and the provided error map. Only returns a message when the control\n * has been touched or is dirty.\n */\nexport function getErrorMessage(\n ngControl: NgControl | null,\n erros: Record<string, string>,\n): string {\n const c = ngControl?.control;\n const errors = c?.errors;\n if (!c || !(c.touched || c.dirty) || !errors) return '';\n\n const errorKey = Object.keys(erros).find((key) => errors[key]);\n return errorKey ? erros[errorKey] : '';\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n NgControl,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { ButtonModule } from 'primeng/button';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cep-field',\n templateUrl: 'cep-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, InputGroupModule, InputGroupAddonModule, ButtonModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCepFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCepFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCepFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00000-000');\n id = input<string>(`pjc-cep-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(true);\n isLoading = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled: boolean = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onComplete(): void {\n this.busca.emit(this.value);\n }\n\n onSearch(): void {\n if (this.value?.length === 8) {\n this.busca.emit(this.value);\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cep()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999-999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (onComplete)=\"onComplete()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly() || isLoading()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly() || isLoading()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CEP\"\n >\n <i [class]=\"isLoading() ? 'pi pi-spinner pi-spin' : 'pi pi-search'\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999-999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (onComplete)=\"onComplete()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly() || isLoading()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || isLoading()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CEP\"\n >\n <i [class]=\"isLoading() ? 'pi pi-spinner pi-spin' : 'pi pi-search'\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { Directive } from '@angular/core';\n\nconst VIN_ALLOWED = /^[A-HJ-NPR-Z0-9]$/;\n\n@Directive({\n selector: 'input[pjcChassi]',\n host: {\n '(keydown)': 'onKeyDown($event)',\n '(input)': 'onInput($event)',\n },\n})\nexport class PjcChassiInputDirective {\n onKeyDown(event: KeyboardEvent): void {\n if (event.key.length !== 1 || event.ctrlKey || event.metaKey || event.altKey) return;\n if (!VIN_ALLOWED.test(event.key.toUpperCase())) {\n event.preventDefault();\n }\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const sanitized = input.value\n .toUpperCase()\n .replace(/[^A-HJ-NPR-Z0-9]/g, '')\n .substring(0, 17);\n if (input.value !== sanitized) {\n input.value = sanitized;\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { PjcChassiInputDirective } from './chassi-input.directive';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-chassi-field',\n templateUrl: 'chassi-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule, PjcChassiInputDirective],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcChassiFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcChassiFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcChassiFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Chassi');\n placeholder = input<string>('Digite o chassi');\n id = input<string>(`pjc-chassi-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val?.toUpperCase().replace(/[^A-HJ-NPR-Z0-9]/g, '').substring(0, 17) ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.chassi()(control);\n }\n\n onInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value = val;\n this.onChange(val);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n pjcChassi\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"17\"\n class=\"w-full p-2 outline-none bg-transparent uppercase\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n pjcChassi\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"17\"\n class=\"w-full p-2 outline-none bg-transparent uppercase\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PjcMunicipio } from './pjc-municipio.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PjcCidadeService {\n private http = inject(HttpClient);\n private readonly API_URL = 'https://servicodados.ibge.gov.br/api/v1/localidades/estados';\n\n getMunicipiosByUf(uf: string): Observable<PjcMunicipio[]> {\n return this.http\n .get<PjcMunicipio[]>(`${this.API_URL}/${uf}/municipios`)\n .pipe(\n map((data) =>\n data\n .map((m) => ({ id: m.id, nome: m.nome, descricao: m.descricao }))\n .sort((a, b) => {\n const aDisplay = a.nome || a.descricao || '';\n const bDisplay = b.nome || b.descricao || '';\n return aDisplay.localeCompare(bDisplay);\n })\n )\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PjcMunicipio } from './pjc-municipio.model';\n\nexport interface PjcCidadeServiceContract {\n getMunicipiosByUf(uf: string): Observable<PjcMunicipio[]>;\n}\n\nexport const PJC_CIDADE_SERVICE = new InjectionToken<PjcCidadeServiceContract>(\n 'PjcCidadeService'\n);\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, effect, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { AutoCompleteModule, AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcCidadeService } from './pjc-cidade.service';\nimport { PjcMunicipio } from './pjc-municipio.model';\nimport { PJC_CIDADE_SERVICE } from './pjc-cidade-service.token';\n\n@Component({\n selector: 'pjc-cidade-field',\n templateUrl: 'cidade-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, AutoCompleteModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCidadeFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCidadeFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('Digite o nome da cidade');\n id = input<string>(`pjc-cidade-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n uf = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private readonly service = inject(PJC_CIDADE_SERVICE, { optional: true }) ?? inject(PjcCidadeService);\n\n municipios = signal<PjcMunicipio[]>([]);\n filteredMunicipios = signal<PjcMunicipio[]>([]);\n loading = signal<boolean>(false);\n\n value: PjcMunicipio | null = null;\n disabled = false;\n\n onChange: (value: PjcMunicipio | null) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly setupUfEffect = effect(() => {\n const uf = this.uf();\n if (uf) {\n this.fetchMunicipios(uf);\n } else {\n this.municipios.set([]);\n this.filteredMunicipios.set([]);\n }\n });\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: PjcMunicipio | string | null): void {\n if (val === null || val === undefined) {\n this.value = null;\n } else if (typeof val === 'string') {\n const found = this.municipios().find(m => m.nome === val || m.descricao === val);\n this.value = found ?? { id: 0, nome: val };\n } else {\n this.value = val;\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: PjcMunicipio | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: PjcMunicipio | string | null): void {\n if (typeof value === 'string') {\n this.value = null;\n this.onChange(null);\n } else {\n this.value = value;\n this.onChange(value);\n }\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n getMunicipioDisplay(m: PjcMunicipio): string {\n return m.nome || m.descricao || '';\n }\n\n filterMunicipios(event: AutoCompleteCompleteEvent): void {\n const normalize = (s: string) => s.normalize('NFD').replaceAll(/[\\u0300-\\u036f]/g, '').toLowerCase();\n const query = normalize(event.query);\n this.filteredMunicipios.set(\n this.municipios().filter(m => normalize(this.getMunicipioDisplay(m)).includes(query))\n );\n }\n\n private fetchMunicipios(uf: string): void {\n this.loading.set(true);\n const previousValue = this.value;\n\n this.service.getMunicipiosByUf(uf).subscribe({\n next: (data) => {\n const normalized = data.map(m => ({ ...m, nome: m.nome || m.descricao || '' }));\n this.municipios.set(normalized);\n this.filteredMunicipios.set(normalized);\n this.loading.set(false);\n\n if (previousValue) {\n const match = normalized.find(m =>\n m.id === previousValue.id || m.nome === previousValue.nome\n );\n if (match) {\n this.value = match;\n this.onChange(match);\n } else {\n this.value = null;\n this.onChange(null);\n }\n }\n },\n error: () => {\n this.municipios.set([]);\n this.filteredMunicipios.set([]);\n this.loading.set(false);\n this.value = null;\n this.onChange(null);\n },\n });\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-autocomplete\n [inputId]=\"id()\"\n [suggestions]=\"filteredMunicipios()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (completeMethod)=\"filterMunicipios($event)\"\n dataKey=\"id\"\n optionLabel=\"nome\"\n [forceSelection]=\"true\"\n [disabled]=\"disabled || readonly() || !uf() || loading()\"\n appendTo=\"body\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n >\n <ng-template pTemplate=\"item\" let-option>\n {{ getMunicipioDisplay(option) }}\n </ng-template>\n </p-autocomplete>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-autocomplete\n [inputId]=\"id()\"\n [suggestions]=\"filteredMunicipios()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n (completeMethod)=\"filterMunicipios($event)\"\n dataKey=\"id\"\n optionLabel=\"nome\"\n [forceSelection]=\"true\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled || readonly() || !uf() || loading()\"\n appendTo=\"body\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n >\n <ng-template pTemplate=\"item\" let-option>\n {{ getMunicipioDisplay(option) }}\n </ng-template>\n </p-autocomplete>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cnh-field',\n templateUrl: 'cnh-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCnhFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCnhFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCnhFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00000000000');\n id = input<string>(`pjc-cnh-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cnh()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cnpj-field',\n templateUrl: 'cnpj-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, InputGroupModule, InputGroupAddonModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCnpjFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCnpjFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCnpjFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00.000.000/0000-00');\n id = input<string>(`pjc-cnpj-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onSearch(): void {\n this.busca.emit(this.value);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cnpj()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99.999.999/9999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99.999.999/9999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output, computed } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-cpf-cnpj-field',\n templateUrl: 'cpf-cnpj-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, FloatLabelModule, InputTextModule, InputGroupModule, InputGroupAddonModule, IconFieldModule, InputIconModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCpfCnpjFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCpfCnpjFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCpfCnpjFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('CPF/CNPJ');\n placeholder = input<string>('');\n id = input<string>(`pjc-cpf-cnpj-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n displayValue: string = '';\n disabled: boolean = false;\n\n private rawValue: string = '';\n\n computedPlaceholder = computed(() => {\n const override = this.placeholder();\n if (override) return override;\n return this.rawValue.length > 11 ? '00.000.000/0000-00' : '000.000.000-00';\n });\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.rawValue = val?.replaceAll(/\\D/g, '') ?? '';\n this.displayValue = this.formatValue(this.rawValue);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart ?? 0;\n const digitsBeforeCursor = input.value.substring(0, cursorPos).replace(/\\D/g, '').length;\n\n this.rawValue = input.value.replaceAll(/\\D/g, '').substring(0, 14);\n this.displayValue = this.formatValue(this.rawValue);\n this.onChange(this.rawValue);\n\n let newCursor = this.displayValue.length;\n let digitCount = 0;\n for (let i = 0; i < this.displayValue.length; i++) {\n if (/\\d/.test(this.displayValue[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n setTimeout(() => input.setSelectionRange(newCursor, newCursor));\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onSearch(): void {\n this.busca.emit(this.rawValue);\n }\n\n private formatValue(digits: string): string {\n if (!digits) return '';\n\n if (digits.length <= 11) {\n return digits\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3}\\.\\d{3})(\\d{1,2})/, '$1-$2');\n }\n\n return digits\n .replace(/(\\d{2})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3})(\\d)/, '$1/$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4})(\\d{1,2})/, '$1-$2');\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cpfCnpj()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"18\"\n class=\"w-full p-2 outline-none bg-transparent\"\n />\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF/CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"18\"\n class=\"w-full p-2 outline-none bg-transparent border border-surface-300 rounded-md focus:border-primary-500\"\n />\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF/CNPJ\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, output } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-cpf-field',\n templateUrl: 'cpf-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, InputGroupModule, InputGroupAddonModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcCpfFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcCpfFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcCpfFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('000.000.000-00');\n id = input<string>(`pjc-cpf-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n showSearchButton = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n busca = output<string>();\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n onSearch(): void {\n this.busca.emit(this.value);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.cpf()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999.999.999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-inputgroup [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"prefixIcon()\"></i>\n </p-inputgroup-addon>\n }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999.999.999-99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n inputStyleClass=\"w-full outline-none bg-transparent\"\n ></p-inputMask>\n\n @if (showSearchButton()) {\n <p-inputgroup-addon>\n <button\n type=\"button\"\n (click)=\"onSearch()\"\n [disabled]=\"disabled || readonly()\"\n class=\"cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Buscar CPF\"\n >\n <i class=\"pi pi-search\"></i>\n </button>\n </p-inputgroup-addon>\n } @else if (suffixIcon()) {\n <p-inputgroup-addon>\n <i [class]=\"suffixIcon()\"></i>\n </p-inputgroup-addon>\n }\n </p-inputgroup>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, forwardRef, inject, Injector, input, OnDestroy, OnInit, computed, signal } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-data-field',\n templateUrl: 'data-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, DatePickerModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcDataFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcDataFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcDataFieldComponent implements ControlValueAccessor, Validator, AfterViewInit, OnDestroy, OnInit {\n label = input<string>('Data');\n placeholder = input<string>('dd/mm/yyyy');\n id = input<string>(`pjc-data-${Math.random().toString(36).substring(2, 9)}`);\n minDate = input<Date | undefined>(undefined);\n maxDate = input<Date | undefined>(undefined);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n mostrarAniversario = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n value: Date | null = null;\n disabled = false;\n\n valueSignal = signal<Date | null>(null);\n\n age = computed(() => {\n const date = this.valueSignal();\n if (!date) return null;\n return this.calculateAge(date);\n });\n\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private el = inject(ElementRef);\n private isFormatting = false;\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n ngAfterViewInit(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.addEventListener('input', this.handleDateInput);\n }\n }\n\n ngOnDestroy(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.removeEventListener('input', this.handleDateInput);\n }\n }\n\n private handleDateInput = (event: Event): void => {\n if (this.isFormatting) return;\n const input = event.target as HTMLInputElement;\n const raw = input.value;\n const cursor = input.selectionStart ?? raw.length;\n\n const digits = raw.replace(/\\D/g, '').substring(0, 8);\n let formatted = digits;\n if (digits.length > 2) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2)}`;\n }\n if (digits.length > 4) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4)}`;\n }\n\n if (raw === formatted) return;\n\n const digitsBeforeCursor = raw.substring(0, cursor).replace(/\\D/g, '').length;\n\n this.isFormatting = true;\n input.value = formatted;\n this.isFormatting = false;\n\n // Restore cursor at the position after the same digit count\n let newCursor = 0;\n let digitCount = 0;\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n input.setSelectionRange(newCursor, newCursor);\n };\n\n writeValue(val: Date | string | null): void {\n if (val === null || val === undefined) {\n this.value = null;\n } else if (typeof val === 'string') {\n // Parse ISO date strings (e.g., '1996-01-21') as local dates\n // to avoid timezone offset causing a day shift.\n // new Date('1996-01-21') parses as UTC midnight, which shifts\n // to the previous day in negative-UTC timezones.\n const parts = val.split('-').map(Number);\n this.value = parts.length >= 3\n ? new Date(parts[0], parts[1] - 1, parts[2])\n : new Date(val);\n } else {\n this.value = val;\n }\n this.valueSignal.set(this.value);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onValueChange(date: Date | null): void {\n this.valueSignal.set(date);\n this.onChange(date);\n }\n\n private calculateAge(birthDate: Date): number {\n const today = new Date();\n let age = today.getFullYear() - birthDate.getFullYear();\n const monthDiff = today.getMonth() - birthDate.getMonth();\n\n if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {\n age--;\n }\n\n return age;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.data(this.minDate(), this.maxDate())(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabled]=\"disabled\"\n [readonlyInput]=\"readonly()\"\n placeholder=\"dd/mm/aaaa\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n placeholder=\"dd/mm/aaaa\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (mostrarAniversario() && age()) {\n <p class=\"text-xs text-surface-600\">Idade: {{ age() }} {{ age() === 1 ? 'ano' : 'anos' }}</p>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, forwardRef, inject, Injector, input, OnDestroy, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-data-hora-field',\n templateUrl: 'data-hora-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, DatePickerModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcDataHoraFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcDataHoraFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcDataHoraFieldComponent implements ControlValueAccessor, Validator, AfterViewInit, OnDestroy, OnInit {\n label = input<string>('Data e Hora');\n placeholder = input<string>('dd/mm/yyyy HH:MM');\n id = input<string>(`pjc-data-hora-${Math.random().toString(36).substring(2, 9)}`);\n minDate = input<Date | undefined>(undefined);\n maxDate = input<Date | undefined>(undefined);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n value: Date | null = null;\n disabled = false;\n\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private el = inject(ElementRef);\n private isFormatting = false;\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n ngAfterViewInit(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.addEventListener('input', this.handleDateInput);\n }\n }\n\n ngOnDestroy(): void {\n const input = this.el.nativeElement.querySelector('input');\n if (input) {\n input.removeEventListener('input', this.handleDateInput);\n }\n }\n\n private handleDateInput = (event: Event): void => {\n if (this.isFormatting) return;\n const input = event.target as HTMLInputElement;\n const raw = input.value;\n const cursor = input.selectionStart ?? raw.length;\n\n const digits = raw.replace(/\\D/g, '').substring(0, 12);\n let formatted = digits;\n\n if (digits.length > 2) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2)}`;\n }\n if (digits.length > 4) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4)}`;\n }\n if (digits.length > 8) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4, 8)} ${digits.substring(8)}`;\n }\n if (digits.length > 10) {\n formatted = `${digits.substring(0, 2)}/${digits.substring(2, 4)}/${digits.substring(4, 8)} ${digits.substring(8, 10)}:${digits.substring(10)}`;\n }\n\n if (raw === formatted) return;\n\n const digitsBeforeCursor = raw.substring(0, cursor).replace(/\\D/g, '').length;\n\n this.isFormatting = true;\n input.value = formatted;\n this.isFormatting = false;\n\n let newCursor = 0;\n let digitCount = 0;\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n input.setSelectionRange(newCursor, newCursor);\n };\n\n writeValue(val: Date | string | null): void {\n if (val === null || val === undefined) {\n this.value = null;\n } else if (typeof val === 'string') {\n // Parse ISO date strings as local dates to avoid timezone offset day shift.\n const parts = val.split('-').map(Number);\n this.value = parts.length >= 3\n ? new Date(parts[0], parts[1] - 1, parts[2])\n : new Date(val);\n } else {\n this.value = val;\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onValueChange(date: Date | null): void {\n this.onChange(date);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.dataHora(this.minDate(), this.maxDate())(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showTime]=\"true\"\n [hourFormat]=\"'24'\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabled]=\"disabled\"\n [readonlyInput]=\"readonly()\"\n placeholder=\"dd/mm/aaaa HH:MM\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-datePicker\n [inputId]=\"id()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n dateFormat=\"dd/mm/yy\"\n [showTime]=\"true\"\n [hourFormat]=\"'24'\"\n [showIcon]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabled]=\"disabled\"\n [readonlyInput]=\"readonly()\"\n placeholder=\"dd/mm/aaaa HH:MM\"\n appendTo=\"body\"\n class=\"w-full\"\n inputStyleClass=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n ></p-datePicker>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'pjc-detalhes',\n templateUrl: 'detalhes.component.html',\n styleUrl: 'detalhes.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PjcDetalhesComponent {\n label = input.required<string>();\n value = input.required<string | number | null | undefined>();\n layout = input<'column' | 'row'>('column');\n\n displayValue = computed(() => {\n const v = this.value();\n return v !== null && v !== undefined ? String(v) : 'Não Informado';\n });\n}\n","@if (layout() === 'column') {\n <div class=\"pjc-detalhes pjc-detalhes--column\">\n @if (label()) {\n <span class=\"pjc-detalhes__label\">{{ label() }}</span>\n }\n <span class=\"pjc-detalhes__value\" [class.pjc-detalhes__value--empty]=\"value() === null || value() === undefined\">\n {{ displayValue() }}\n </span>\n </div>\n} @else {\n <div class=\"pjc-detalhes pjc-detalhes--row\">\n @if (label()) {\n <span class=\"pjc-detalhes__label\">{{ label() }}: </span>\n }\n <span class=\"pjc-detalhes__value\" [class.pjc-detalhes__value--empty]=\"value() === null || value() === undefined\">\n {{ displayValue() }}\n </span>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnInit,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport {\n getErrorMessage,\n initFormValidation,\n isFormControlInvalid,\n} from '../../utils/form-validation';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-email-field',\n templateUrl: 'email-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcEmailFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcEmailFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcEmailFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('E-mail');\n placeholder = input<string>('Digite o e-mail');\n id = input<string>(`pjc-email-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n hint = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val?.toLowerCase() ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.email()(control);\n }\n\n onInput(event: Event): void {\n const lower = (event.target as HTMLInputElement).value.toLowerCase();\n this.value = lower;\n this.onChange(lower);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n type=\"email\"\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n type=\"email\"\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PjcEnumItem } from './pjc-enum-item.model';\n\nexport interface PjcEnumServiceContract {\n getItems(url: string): Observable<PjcEnumItem[]>;\n}\n\nexport const PJC_ENUM_SERVICE = new InjectionToken<PjcEnumServiceContract>(\n 'PjcEnumService'\n);\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PjcEnumItem } from './pjc-enum-item.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PjcEnumService {\n private http = inject(HttpClient);\n\n getItems(url: string): Observable<PjcEnumItem[]> {\n return this.http\n .get<PjcEnumItem[]>(url)\n .pipe(\n map((data) =>\n [...data].sort((a, b) => {\n const aDisplay = String(a['descricao'] || a['nome'] || '');\n const bDisplay = String(b['descricao'] || b['nome'] || '');\n return aDisplay.localeCompare(bDisplay);\n })\n )\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, effect, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SelectModule } from 'primeng/select';\nimport { FilterService } from 'primeng/api';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { PjcEnumItem } from './pjc-enum-item.model';\nimport { PJC_ENUM_SERVICE } from './pjc-enum-service.token';\nimport { PjcEnumService } from './pjc-enum.service';\n\nconst PJC_ACCENT_CONTAINS = 'pjc-accent-contains';\nconst normalize = (s: string) => s.normalize('NFD').replaceAll(/[\\u0300-\\u036f]/g, '').toLowerCase();\n\n@Component({\n selector: 'pjc-enum-field',\n templateUrl: 'enum-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule, MultiSelectModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcEnumFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcEnumFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('Selecione uma opção');\n id = input<string>(`pjc-enum-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n erros = input<Record<string, string>>({});\n\n /** URL of the endpoint that returns the list of items. */\n url = input<string>('');\n\n /** Static list of items to display. When provided, takes precedence over `url`. */\n options = input<PjcEnumItem[]>([]);\n\n /**\n * Key of the object property displayed as the option label in the select.\n * Defaults to 'descricao'.\n */\n optionLabel = input<string>('descricao');\n\n /**\n * Key of the object property used as the option value bound to the formControl.\n * When left as undefined (default), the entire selected object is used as the value.\n */\n optionValue = input<string | undefined>(undefined);\n\n /** Whether the select should have a filter/search input. */\n filter = input<boolean>(false);\n\n /** Placeholder text for the filter input inside the dropdown. */\n filterPlaceholder = input<string>('');\n\n /** Whether to show a clear button to reset the selection. */\n showClear = input<boolean>(false);\n\n /** Whether to allow selecting multiple values. */\n multiple = input<boolean>(false);\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly filterService = inject(FilterService);\n private ngControl: NgControl | null = null;\n\n private readonly service = inject(PJC_ENUM_SERVICE, { optional: true }) ?? inject(PjcEnumService);\n\n readonly accentContainsFilter = PJC_ACCENT_CONTAINS;\n\n items = signal<PjcEnumItem[]>([]);\n loading = signal<boolean>(false);\n\n value: any = null;\n disabled = false;\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n private readonly setupOptionsEffect = effect(() => {\n const staticOptions = this.options();\n const url = this.url();\n\n if (staticOptions.length > 0) {\n this.items.set(staticOptions);\n } else if (url) {\n this.fetchItems(url);\n } else {\n this.items.set([]);\n }\n });\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n this.filterService.register(PJC_ACCENT_CONTAINS, (value: any, filter: any): boolean => {\n if (filter === undefined || filter === null || String(filter).trim() === '') return true;\n if (value === undefined || value === null) return false;\n return normalize(String(value)).includes(normalize(String(filter)));\n });\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: any): void {\n this.value = this.multiple() ? (val ?? []) : (val ?? null);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: any): void {\n this.value = value;\n this.onChange(value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n private fetchItems(url: string): void {\n this.loading.set(true);\n\n this.service.getItems(url).subscribe({\n next: (data) => {\n this.items.set(data);\n this.loading.set(false);\n this.cdr.markForCheck();\n },\n error: () => {\n this.items.set([]);\n this.loading.set(false);\n this.value = null;\n this.onChange(null);\n this.cdr.markForCheck();\n },\n });\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n @if (multiple()) {\n <p-multiselect\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n [filterPlaceHolder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n display=\"chip\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n [filterPlaceholder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n @if (multiple()) {\n <p-multiselect\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n [filterPlaceHolder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n display=\"chip\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"items()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterPlaceholder]=\"filterPlaceholder()\"\n [showClear]=\"showClear()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled || readonly() || loading()\"\n [loading]=\"loading()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n OnInit,\n inject,\n input,\n} from '@angular/core';\nimport { KeyValuePipe } from '@angular/common';\nimport { ControlContainer, AbstractControl } from '@angular/forms';\nimport { MessageModule } from 'primeng/message';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'pjc-erro-validacao',\n templateUrl: 'erro-validacao.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KeyValuePipe, MessageModule],\n})\nexport class PjcErroValidacaoComponent implements OnInit {\n private readonly container = inject(ControlContainer);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n controlName = input.required<string>();\n erros = input.required<Record<string, string>>();\n\n control: AbstractControl | null = null;\n\n ngOnInit(): void {\n const group = this.container.control;\n this.control = group?.get(this.controlName()) ?? null;\n\n if (this.control) {\n this.control.events\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.cdr.markForCheck());\n }\n }\n}\n","@if (control; as ctrl) {\n @if (ctrl.touched && ctrl.errors) {\n @for (entry of erros() | keyvalue; track entry.key) {\n @if (ctrl.errors[entry.key]) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ entry.value }}</p-message>\n }\n }\n }\n}\n","/**\n * Tipos públicos do componente `pjc-filtro-field` (Filtro Avançado).\n *\n * Spec: .sdd/filtro-avancado-lib.spec.md (v1.0, 2026-04-23).\n */\n\n/**\n * Discriminador que determina o modo de entrada e as regras de\n * parsing/formatação de um filtro.\n */\nexport enum PjcTipoFiltroCampo {\n TEXTO = 'TEXTO',\n NUMERICO = 'NUMERICO',\n NUMERICO_RANGE = 'NUMERICO_RANGE',\n DATA = 'DATA',\n DATA_RANGE = 'DATA_RANGE',\n ENUM = 'ENUM',\n ENUM_MULTI = 'ENUM_MULTI',\n BOOLEANO = 'BOOLEANO',\n}\n\n/**\n * Opção selecionável para filtros de tipo ENUM.\n *\n * `texto` é usado como `valorMostrar` quando aplicado; `valor` é usado\n * como `valor` bruto enviado ao backend.\n *\n * `metadados` é um slot opaco opcional para dados adicionais carregados\n * pela aplicação consumidora (ex.: atributos auxiliares herdados do\n * modelo de origem). Substitui o antigo atributo `renda` (ver A2/R6 da\n * spec).\n */\nexport interface PjcOpcaoEnumFiltro {\n texto: string;\n valor: string | boolean;\n metadados?: Record<string, unknown>;\n}\n\n/**\n * Entidade central. Representa um filtro — seja na coleção de\n * disponíveis (`valor` nulo) ou de aplicados (`valor` preenchido).\n *\n * Invariantes (§4.4):\n * - I1: `codigo` é imutável durante o ciclo de vida do componente.\n * - I2: mesmo `codigo` aparece em no máximo uma das duas coleções.\n * - I3: aplicados têm `valor` não-nulo; disponíveis têm `valor` nulo.\n * - I4: quando `tipo = ENUM`, `arrayEnum` é não-vazio.\n */\nexport interface PjcFiltro {\n codigo: string;\n nome: string;\n tipo: PjcTipoFiltroCampo;\n parametro: string;\n placeholder?: string;\n\n /**\n * Máscara opcional de entrada. Reconhecida pelo contrato público,\n * porém de semântica ainda não consolidada no MVP (ver A1/R7 da spec).\n * Atualmente ignorada pelo componente.\n */\n mascara?: string;\n\n /**\n * Quando `tipo = TEXTO`, aciona a heurística de máscara CPF/CNPJ\n * por contagem de dígitos (≤11 → CPF; >11 → CNPJ).\n */\n isCpfCnpj?: boolean;\n\n /**\n * Coleção de opções selecionáveis.\n *\n * - Obrigatório quando `tipo = ENUM` ou `tipo = ENUM_MULTI`.\n * - Opcional quando `tipo = BOOLEANO`: se omitido, o componente usa\n * o par padrão `[{texto:'Sim',valor:true},{texto:'Não',valor:false}]`.\n * Se fornecido, deve conter exatamente 2 opções (ex.: Ativo/Inativo).\n */\n arrayEnum?: PjcOpcaoEnumFiltro[];\n\n /** Presente apenas em filtros aplicados. Formato pronto para backend. */\n valor?: string;\n\n /** Presente apenas em filtros aplicados. Valor formatado para o chip. */\n valorMostrar?: string;\n}\n\n/**\n * Payload do evento `erroValidacao` emitido pelo componente ao detectar\n * entrada sintaticamente inválida durante tentativa de aplicação.\n *\n * A apresentação do erro é de inteira responsabilidade da aplicação\n * consumidora (RF-21 / N2).\n */\nexport interface PjcFiltroErroValidacao {\n codigoFiltro: string;\n mensagem: string;\n}\n","/**\n * Parsers e formatters internos por tipo de filtro.\n *\n * Arquivo INTERNO ao componente `pjc-filtro-field`. Não é exportado pelo\n * `public-api.ts` da biblioteca (ver §6.5 da spec: a arquitetura interna\n * segrega parser/formatter/validador/renderizador por tipo para permitir\n * evolução sem alterar o contrato externo).\n */\n\nimport { PjcOpcaoEnumFiltro, PjcTipoFiltroCampo } from './pjc-filtro.model';\n\n/**\n * Resultado de um parse bem-sucedido: o par (valor bruto, valor exibido)\n * que o componente armazenará no filtro aplicado.\n */\nexport interface PjcFiltroParseResultado {\n valor: string;\n valorMostrar: string;\n}\n\n/**\n * Mensagem de erro sintático padronizada por tipo (§6.4). A lib mantém\n * as strings fixadas em pt-BR no MVP (P3).\n */\nexport const PJC_FILTRO_ERROS = {\n DATA_INVALIDA: 'Data informada inválida!',\n DATA_RANGE_INVALIDA: 'Data inicio ou data fim inválida!',\n} as const;\n\n/**\n * Lançada por um parser quando a entrada é sintaticamente inválida.\n * O componente captura e converte em evento `erroValidacao`.\n */\nexport class PjcFiltroParseError extends Error {\n constructor(mensagem: string) {\n super(mensagem);\n this.name = 'PjcFiltroParseError';\n }\n}\n\nconst somenteDigitos = (s: string): string => s.replaceAll(/\\D/g, '');\n\nconst aplicarMascaraCpf = (digitos: string): string =>\n digitos\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3}\\.\\d{3}\\.\\d{3})(\\d{1,2})/, '$1-$2');\n\nconst aplicarMascaraCnpj = (digitos: string): string =>\n digitos\n .replace(/(\\d{2})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3})(\\d)/, '$1/$2')\n .replace(/(\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4})(\\d{1,2})/, '$1-$2');\n\n/**\n * Retorna a data no formato ISO `aaaa-MM-dd` se válida, ou `null`.\n * Aceita apenas `dd/MM/aaaa` como entrada (§6.4 — tipo DATA).\n *\n * Validação sintática estrita: ano com 4 dígitos, dia/mês dentro dos\n * limites, e reconstrução da data coincidindo com os componentes\n * informados (rejeita, por ex., 31/02/2025 que o Date \"ajustaria\"\n * automaticamente).\n */\nexport function parseDataBR(entrada: string): string | null {\n const match = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(entrada?.trim() ?? '');\n if (!match) return null;\n\n const dia = Number(match[1]);\n const mes = Number(match[2]);\n const ano = Number(match[3]);\n\n const d = new Date(ano, mes - 1, dia);\n if (d.getFullYear() !== ano || d.getMonth() !== mes - 1 || d.getDate() !== dia) {\n return null;\n }\n\n const mm = String(mes).padStart(2, '0');\n const dd = String(dia).padStart(2, '0');\n return `${ano}-${mm}-${dd}`;\n}\n\n/**\n * Converte um `Date` em `dd/MM/aaaa` (formato de exibição da spec).\n */\nexport function formatarDataExibicao(d: Date): string {\n const dd = String(d.getDate()).padStart(2, '0');\n const mm = String(d.getMonth() + 1).padStart(2, '0');\n const yyyy = String(d.getFullYear());\n return `${dd}/${mm}/${yyyy}`;\n}\n\n/**\n * Converte um `Date` em ISO `aaaa-MM-dd` (formato emitido ao backend).\n */\nexport function formatarDataIso(d: Date): string {\n const yyyy = String(d.getFullYear());\n const mm = String(d.getMonth() + 1).padStart(2, '0');\n const dd = String(d.getDate()).padStart(2, '0');\n return `${yyyy}-${mm}-${dd}`;\n}\n\n/**\n * Parser do tipo TEXTO (§6.4).\n *\n * - Força caixa alta (RF-09).\n * - Com `isCpfCnpj` e entrada puramente numérica, aplica máscara\n * CPF (≤11 dígitos) ou CNPJ (>11 dígitos) progressivamente (E7/E8/R8).\n * - Entrada vazia não aplica (retorna `null`, E5).\n */\nexport function parseTexto(\n entrada: string,\n isCpfCnpj: boolean,\n): PjcFiltroParseResultado | null {\n const valor = (entrada ?? '').trim().toUpperCase();\n if (!valor) return null;\n\n if (isCpfCnpj) {\n const digitos = somenteDigitos(valor);\n if (digitos === valor.replaceAll(/\\s/g, '')) {\n const mascarado = digitos.length <= 11\n ? aplicarMascaraCpf(digitos)\n : aplicarMascaraCnpj(digitos);\n return { valor: mascarado, valorMostrar: mascarado };\n }\n }\n\n return { valor, valorMostrar: valor };\n}\n\n/**\n * Parser do tipo NUMERICO (§6.4).\n *\n * Remove qualquer não-dígito (RF-11); entrada vazia após extração não\n * aplica (E6 tratado como E5).\n */\nexport function parseNumerico(entrada: string): PjcFiltroParseResultado | null {\n const digitos = somenteDigitos(entrada ?? '');\n if (!digitos) return null;\n return { valor: digitos, valorMostrar: digitos };\n}\n\n/**\n * Parser do tipo DATA (§6.4).\n *\n * Entrada `dd/MM/aaaa` → emite `valor` ISO (`aaaa-MM-dd`) e\n * `valorMostrar` em `DD/MM/AAAA`. Data inválida lança\n * `PjcFiltroParseError` com a mensagem padrão (RF-19).\n */\nexport function parseData(entrada: string): PjcFiltroParseResultado | null {\n if (!entrada?.trim()) return null;\n const iso = parseDataBR(entrada);\n if (!iso) throw new PjcFiltroParseError(PJC_FILTRO_ERROS.DATA_INVALIDA);\n return { valor: iso, valorMostrar: entrada.trim() };\n}\n\n/**\n * Parser do tipo DATA_RANGE (§6.4).\n *\n * Exige ambas as datas preenchidas (RF-06). Aceita `inicio` e `fim`\n * como `dd/MM/aaaa`; qualquer uma inválida lança\n * `PjcFiltroParseError` (RF-20). Emite `valor` como única cadeia\n * `inicioISO,fimISO` (separador vírgula) e `valorMostrar`\n * como `DD/MM/AAAA - DD/MM/AAAA`.\n *\n * Nota: não valida semanticamente fim ≥ início (N4).\n */\nexport function parseDataRange(\n inicio: string,\n fim: string,\n): PjcFiltroParseResultado | null {\n const inicioTrim = (inicio ?? '').trim();\n const fimTrim = (fim ?? '').trim();\n if (!inicioTrim || !fimTrim) return null;\n\n const inicioIso = parseDataBR(inicioTrim);\n const fimIso = parseDataBR(fimTrim);\n if (!inicioIso || !fimIso) {\n throw new PjcFiltroParseError(PJC_FILTRO_ERROS.DATA_RANGE_INVALIDA);\n }\n\n return {\n valor: `${inicioIso},${fimIso}`,\n valorMostrar: `${inicioTrim} - ${fimTrim}`,\n };\n}\n\n/**\n * Parser do tipo ENUM (§6.4).\n *\n * Seleção sempre válida (aplica na mudança, RF-07). Retorna `null`\n * somente quando a opção é `undefined` (proteção defensiva).\n */\nexport function parseEnum(\n opcao: PjcOpcaoEnumFiltro | undefined,\n): PjcFiltroParseResultado | null {\n if (!opcao) return null;\n return { valor: String(opcao.valor), valorMostrar: opcao.texto };\n}\n\n/**\n * Par padrão de opções para o tipo BOOLEANO quando `arrayEnum` é\n * omitido no filtro.\n */\nexport const PJC_OPCOES_BOOLEANO_PADRAO: PjcOpcaoEnumFiltro[] = [\n { texto: 'Sim', valor: true },\n { texto: 'Não', valor: false },\n];\n\n/**\n * Parser do tipo BOOLEANO (§6.4).\n *\n * Comportamento idêntico ao ENUM: aplica na mudança de seleção (RF-07).\n * Quando o filtro omite `arrayEnum`, o componente passa aqui a opção\n * escolhida entre `PJC_OPCOES_BOOLEANO_PADRAO`.\n */\nexport function parseBooleano(\n opcao: PjcOpcaoEnumFiltro | undefined,\n): PjcFiltroParseResultado | null {\n if (!opcao) return null;\n return { valor: String(opcao.valor), valorMostrar: opcao.texto };\n}\n\n/**\n * Parser do tipo ENUM_MULTI (§6.4).\n *\n * Seleção múltipla; aplica por confirmação explícita. Seleção vazia\n * não aplica (tratado como E5). Emite `valor` como lista de valores\n * brutos separados por vírgula (ex.: `\"A,B,C\"`) e `valorMostrar`\n * como lista de textos separados por \", \".\n */\nexport function parseEnumMulti(\n opcoes: PjcOpcaoEnumFiltro[] | null | undefined,\n): PjcFiltroParseResultado | null {\n if (!opcoes || opcoes.length === 0) return null;\n const valor = opcoes.map((o) => String(o.valor)).join(',');\n const valorMostrar = opcoes.map((o) => o.texto).join(', ');\n return { valor, valorMostrar };\n}\n\n/**\n * Parser do tipo NUMERICO_RANGE (§6.4).\n *\n * Exige ambos os valores preenchidos. Remove não-dígitos de cada lado\n * (coerente com NUMERICO, RF-11). Emite `valor` como única cadeia\n * `min,max` e `valorMostrar` como `min - max`. Não valida\n * semanticamente `max ≥ min` (coerente com N4).\n */\nexport function parseNumericoRange(\n minBruto: string,\n maxBruto: string,\n): PjcFiltroParseResultado | null {\n const min = somenteDigitos(minBruto ?? '');\n const max = somenteDigitos(maxBruto ?? '');\n if (!min || !max) return null;\n return {\n valor: `${min},${max}`,\n valorMostrar: `${min} - ${max}`,\n };\n}\n\n/**\n * Dicionário que marca se o tipo aplica por confirmação explícita\n * (ENTER ou botão) ou automaticamente na seleção. Usado pelo\n * componente para habilitar/ocultar o botão de confirmar e\n * controlar o fluxo de aplicação.\n */\nexport const APLICA_POR_CONFIRMACAO: Record<PjcTipoFiltroCampo, boolean> = {\n [PjcTipoFiltroCampo.TEXTO]: true,\n [PjcTipoFiltroCampo.NUMERICO]: true,\n [PjcTipoFiltroCampo.NUMERICO_RANGE]: true,\n [PjcTipoFiltroCampo.DATA]: true,\n [PjcTipoFiltroCampo.DATA_RANGE]: true,\n [PjcTipoFiltroCampo.ENUM]: false,\n [PjcTipoFiltroCampo.ENUM_MULTI]: true,\n [PjcTipoFiltroCampo.BOOLEANO]: false,\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ChipModule } from 'primeng/chip';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SelectModule } from 'primeng/select';\n\nimport {\n PjcFiltro,\n PjcFiltroErroValidacao,\n PjcOpcaoEnumFiltro,\n PjcTipoFiltroCampo,\n} from './pjc-filtro.model';\nimport {\n APLICA_POR_CONFIRMACAO,\n formatarDataExibicao,\n formatarDataIso,\n parseBooleano,\n parseData,\n parseDataRange,\n parseEnum,\n parseEnumMulti,\n parseNumerico,\n parseNumericoRange,\n parseTexto,\n PJC_OPCOES_BOOLEANO_PADRAO,\n PjcFiltroParseError,\n} from './pjc-filtro-parsers';\n\n/**\n * `pjc-filtro-field` — componente de Filtro Avançado.\n *\n * Permite compor dinamicamente um conjunto de filtros heterogêneos\n * (texto, numérico, data, intervalo de datas, enum) e apresenta os\n * aplicados como chips removíveis. Emite a coleção resultante via\n * evento `filtrar`.\n *\n * ## Divergência intencional do padrão da biblioteca\n *\n * Diferente dos demais componentes de `pjc-fields`, este NÃO é um\n * `ControlValueAccessor`. Razões, conforme spec v1.0 (§6.1–6.3):\n *\n * - Entradas são 3 coleções/valores (não um valor único).\n * - Saídas são 2 eventos tipados (não um `onChange` de CVA).\n * - O componente **muta in-place** as coleções de entrada\n * (`filtros` e `filtrosSelecionados`) — contrato versionado como\n * API pública (P7, R1, R4). Consumidores não devem compartilhar\n * essas referências com estruturas que dependam de imutabilidade.\n *\n * Os inputs \"padrão\" da biblioteca (`label`, `placeholder`, `id`,\n * `labelVariant`, `readonly`, `erros`, `hint`) não se aplicam aqui —\n * este não é um field de valor único, é uma superfície de composição\n * de filtros.\n *\n * Spec: `.sdd/filtro-avancado-lib.spec.md` (v1.0, 2026-04-23).\n */\n@Component({\n selector: 'pjc-filtro-field',\n templateUrl: 'filtro-field.component.html',\n styleUrl: 'filtro-field.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n SelectModule,\n MultiSelectModule,\n InputTextModule,\n DatePickerModule,\n ChipModule,\n ],\n})\nexport class PjcFiltroFieldComponent {\n /** Coleção mutável de Filtros disponíveis para seleção (§6.1). */\n filtros = input<PjcFiltro[]>([]);\n\n /** `codigo` do filtro pré-selecionado no seletor de prefixo (§6.1). */\n tipoSelecionado = input<string | undefined>(undefined);\n\n /** Coleção mutável de Filtros aplicados — exibidos como chips (§6.1). */\n filtrosSelecionados = input<PjcFiltro[]>([]);\n\n /** Placeholder do seletor de prefixo. */\n seletorPlaceholder = input<string>('Selecione um filtro');\n\n /**\n * Emitido a cada aplicação bem-sucedida e a cada remoção,\n * com a coleção completa de aplicados (§6.2).\n */\n filtrar = output<PjcFiltro[]>();\n\n /**\n * Emitido ao detectar entrada sintaticamente inválida durante\n * tentativa de aplicação (§6.2 / RF-19 / RF-20).\n */\n erroValidacao = output<PjcFiltroErroValidacao>();\n\n /** Código do filtro selecionado no seletor de prefixo (estado interno). */\n readonly codigoAtual = signal<string | undefined>(undefined);\n\n /** Termos de entrada por tipo — só um é usado por vez (RF-04). */\n readonly termoTexto = signal<string>('');\n readonly termoNumerico = signal<string>('');\n readonly termoNumericoRangeMin = signal<string>('');\n readonly termoNumericoRangeMax = signal<string>('');\n readonly termoData = signal<Date | null>(null);\n readonly termoDataRange = signal<Date[] | null>(null);\n readonly termoEnum = signal<PjcOpcaoEnumFiltro | null>(null);\n readonly termoEnumMulti = signal<PjcOpcaoEnumFiltro[] | null>(null);\n readonly termoBooleano = signal<PjcOpcaoEnumFiltro | null>(null);\n\n /** Mensagem para região `aria-live` (RF-24). */\n readonly anuncioA11y = signal<string>('');\n\n /** Expõe o enum no template. */\n readonly TipoFiltro = PjcTipoFiltroCampo;\n\n /**\n * Filtro atualmente selecionado no seletor de prefixo. Derivado\n * de `filtros()` + `codigoAtual()` com fallback para o primeiro\n * disponível (RF-02).\n */\n readonly filtroSelecionado = computed<PjcFiltro | undefined>(() => {\n const disponiveis = this.filtros();\n if (disponiveis.length === 0) return undefined;\n const codigo = this.codigoAtual();\n return disponiveis.find((f) => f.codigo === codigo) ?? disponiveis[0];\n });\n\n /** Placeholder efetivo do campo de entrada (RF-25). */\n readonly placeholderEntrada = computed<string>(() => {\n const f = this.filtroSelecionado();\n if (!f) return '';\n return f.placeholder ?? 'Informe o valor do filtro';\n });\n\n /**\n * Opções efetivas para BOOLEANO. Usa `arrayEnum` se fornecido\n * (ex.: Ativo/Inativo); senão, o par padrão Sim/Não.\n */\n readonly opcoesBooleano = computed<PjcOpcaoEnumFiltro[]>(() => {\n const f = this.filtroSelecionado();\n const custom = f?.arrayEnum;\n return custom && custom.length > 0 ? custom : PJC_OPCOES_BOOLEANO_PADRAO;\n });\n\n /** Se o tipo atual aplica via confirmação (ENTER/botão) ou auto. */\n readonly aplicaPorConfirmacao = computed<boolean>(() => {\n const f = this.filtroSelecionado();\n return f ? APLICA_POR_CONFIRMACAO[f.tipo] : false;\n });\n\n /** Campo de entrada habilitado? (RF-08) */\n readonly entradaHabilitada = computed<boolean>(() => this.filtros().length > 0);\n\n /**\n * Inicializa `codigoAtual` respeitando `tipoSelecionado` quando\n * presente, senão o primeiro disponível (RF-02). Também recompõe\n * a seleção quando a coleção de disponíveis muda externamente.\n */\n private readonly sincronizaCodigoAtual = effect(() => {\n const disponiveis = this.filtros();\n const externo = this.tipoSelecionado();\n const atual = this.codigoAtual();\n\n if (disponiveis.length === 0) {\n if (atual !== undefined) this.codigoAtual.set(undefined);\n return;\n }\n\n const alvo = externo && disponiveis.some((f) => f.codigo === externo)\n ? externo\n : atual && disponiveis.some((f) => f.codigo === atual)\n ? atual\n : disponiveis[0].codigo;\n\n if (alvo !== atual) this.codigoAtual.set(alvo);\n });\n\n /** Região `aria-live` (RF-24). */\n private readonly atualizaAnuncio = effect(() => {\n const aplicados = this.filtrosSelecionados();\n const total = aplicados.length;\n this.anuncioA11y.set(\n total === 0\n ? 'Nenhum filtro aplicado.'\n : total === 1\n ? '1 filtro aplicado.'\n : `${total} filtros aplicados.`,\n );\n });\n\n /** Handler do seletor de prefixo (§5.5 — reconfigura modo de entrada). */\n onSelecionarTipo(codigo: string): void {\n this.codigoAtual.set(codigo);\n this.limparTermos();\n }\n\n /**\n * Dispara a aplicação do filtro atualmente selecionado, conforme\n * o modo de entrada ativo. ENUM aplica automaticamente via\n * `onAplicarEnum` (RF-07).\n */\n aplicar(): void {\n const filtro = this.filtroSelecionado();\n if (!filtro) return;\n\n try {\n const resultado = this.executarParse(filtro);\n if (!resultado) return; // E5/E6 — entrada vazia, ignora silenciosamente\n this.moverParaAplicados(filtro, resultado.valor, resultado.valorMostrar);\n } catch (err) {\n if (err instanceof PjcFiltroParseError) {\n this.erroValidacao.emit({\n codigoFiltro: filtro.codigo,\n mensagem: err.message,\n });\n return;\n }\n throw err;\n }\n }\n\n /** Aplicação automática de ENUM na mudança de seleção (RF-07). */\n onAplicarEnum(opcao: PjcOpcaoEnumFiltro | null): void {\n this.termoEnum.set(opcao);\n if (!opcao) return;\n const filtro = this.filtroSelecionado();\n if (!filtro) return;\n\n const resultado = parseEnum(opcao);\n if (!resultado) return;\n this.moverParaAplicados(filtro, resultado.valor, resultado.valorMostrar);\n }\n\n /** Aplicação automática de BOOLEANO na mudança de seleção (RF-07). */\n onAplicarBooleano(opcao: PjcOpcaoEnumFiltro | null): void {\n this.termoBooleano.set(opcao);\n if (!opcao) return;\n const filtro = this.filtroSelecionado();\n if (!filtro) return;\n\n const resultado = parseBooleano(opcao);\n if (!resultado) return;\n this.moverParaAplicados(filtro, resultado.valor, resultado.valorMostrar);\n }\n\n /** Remove um filtro aplicado e o devolve ao topo dos disponíveis (RF-15). */\n remover(filtro: PjcFiltro): void {\n const aplicados = this.filtrosSelecionados();\n const disponiveis = this.filtros();\n\n const idx = aplicados.findIndex((f) => f.codigo === filtro.codigo);\n if (idx === -1) return;\n\n const [removido] = aplicados.splice(idx, 1);\n const devolvido: PjcFiltro = { ...removido };\n delete devolvido.valor;\n delete devolvido.valorMostrar;\n\n disponiveis.unshift(devolvido);\n\n this.codigoAtual.set(disponiveis[0]?.codigo);\n this.limparTermos();\n this.filtrar.emit(aplicados);\n }\n\n /**\n * Executa o parse apropriado ao tipo do filtro selecionado e\n * devolve o resultado (valor/valorMostrar) ou `null` se o\n * usuário ainda não preencheu o suficiente.\n */\n private executarParse(filtro: PjcFiltro) {\n switch (filtro.tipo) {\n case PjcTipoFiltroCampo.TEXTO:\n return parseTexto(this.termoTexto(), !!filtro.isCpfCnpj);\n\n case PjcTipoFiltroCampo.NUMERICO:\n return parseNumerico(this.termoNumerico());\n\n case PjcTipoFiltroCampo.NUMERICO_RANGE:\n return parseNumericoRange(\n this.termoNumericoRangeMin(),\n this.termoNumericoRangeMax(),\n );\n\n case PjcTipoFiltroCampo.DATA: {\n const d = this.termoData();\n if (!d) return null;\n return parseData(formatarDataExibicao(d));\n }\n\n case PjcTipoFiltroCampo.DATA_RANGE: {\n const range = this.termoDataRange();\n if (!range || range.length < 2 || !range[0] || !range[1]) {\n return null;\n }\n return parseDataRange(\n formatarDataExibicao(range[0]),\n formatarDataExibicao(range[1]),\n );\n }\n\n case PjcTipoFiltroCampo.ENUM:\n return parseEnum(this.termoEnum() ?? undefined);\n\n case PjcTipoFiltroCampo.ENUM_MULTI:\n return parseEnumMulti(this.termoEnumMulti());\n\n case PjcTipoFiltroCampo.BOOLEANO:\n return parseBooleano(this.termoBooleano() ?? undefined);\n\n default:\n return null;\n }\n }\n\n /**\n * Tradução compartilhada do fluxo §5.3 passo 5: tira o filtro de\n * disponíveis, empurra em aplicados com valor/valorMostrar\n * preenchidos, limpa termos, reposiciona seleção e emite `filtrar`.\n *\n * Usa mutação in-place das coleções (contrato §6.3).\n *\n * Para DATA, o caminho normal usa `valor` do parser (ISO). Aqui\n * aceita-se também o já-ISO direto, simplificando a chamada.\n */\n private moverParaAplicados(\n filtro: PjcFiltro,\n valor: string,\n valorMostrar: string,\n ): void {\n const disponiveis = this.filtros();\n const aplicados = this.filtrosSelecionados();\n\n const idx = disponiveis.findIndex((f) => f.codigo === filtro.codigo);\n if (idx === -1) return;\n\n disponiveis.splice(idx, 1);\n\n // Para DATA, §6.4 diz: valor ISO, valorMostrar = dd/MM/aaaa.\n // O parser já devolveu valor em ISO; valorMostrar pode vir do\n // `Date` fonte quando disponível, para garantir 4 dígitos no ano.\n let valorFinal = valor;\n let mostrarFinal = valorMostrar;\n if (filtro.tipo === PjcTipoFiltroCampo.DATA) {\n const d = this.termoData();\n if (d) {\n valorFinal = formatarDataIso(d);\n mostrarFinal = formatarDataExibicao(d);\n }\n } else if (filtro.tipo === PjcTipoFiltroCampo.DATA_RANGE) {\n const range = this.termoDataRange();\n if (range && range[0] && range[1]) {\n valorFinal = `${formatarDataIso(range[0])},${formatarDataIso(range[1])}`;\n mostrarFinal = `${formatarDataExibicao(range[0])} - ${formatarDataExibicao(range[1])}`;\n }\n }\n\n const aplicado: PjcFiltro = {\n ...filtro,\n valor: valorFinal,\n valorMostrar: mostrarFinal,\n };\n aplicados.push(aplicado);\n\n this.codigoAtual.set(disponiveis[0]?.codigo);\n this.limparTermos();\n this.filtrar.emit(aplicados);\n }\n\n private limparTermos(): void {\n this.termoTexto.set('');\n this.termoNumerico.set('');\n this.termoNumericoRangeMin.set('');\n this.termoNumericoRangeMax.set('');\n this.termoData.set(null);\n this.termoDataRange.set(null);\n this.termoEnum.set(null);\n this.termoEnumMulti.set(null);\n this.termoBooleano.set(null);\n }\n}\n","<div class=\"flex flex-col gap-2 w-full\">\n <div class=\"pjc-filtro-container\" [class.pjc-filtro-disabled]=\"!entradaHabilitada()\">\n @if (filtros().length > 0) {\n <p-select\n class=\"pjc-filtro-prefix\"\n [options]=\"filtros()\"\n [ngModel]=\"codigoAtual()\"\n (ngModelChange)=\"onSelecionarTipo($event)\"\n optionLabel=\"nome\"\n optionValue=\"codigo\"\n appendTo=\"body\"\n [placeholder]=\"seletorPlaceholder()\"\n ariaLabel=\"Selecione o tipo de filtro\"\n />\n }\n\n <div class=\"pjc-filtro-entrada\">\n @switch (filtroSelecionado()?.tipo) {\n @case (TipoFiltro.TEXTO) {\n <input\n pInputText\n type=\"text\"\n [ngModel]=\"termoTexto()\"\n (ngModelChange)=\"termoTexto.set($event)\"\n (keydown.enter)=\"aplicar()\"\n [placeholder]=\"placeholderEntrada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input pjc-filtro-uppercase\"\n />\n }\n\n @case (TipoFiltro.NUMERICO) {\n <input\n pInputText\n type=\"text\"\n inputmode=\"numeric\"\n [ngModel]=\"termoNumerico()\"\n (ngModelChange)=\"termoNumerico.set($event)\"\n (keydown.enter)=\"aplicar()\"\n [placeholder]=\"placeholderEntrada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input\"\n />\n }\n\n @case (TipoFiltro.NUMERICO_RANGE) {\n <div class=\"pjc-filtro-range\">\n <input\n pInputText\n type=\"text\"\n inputmode=\"numeric\"\n [ngModel]=\"termoNumericoRangeMin()\"\n (ngModelChange)=\"termoNumericoRangeMin.set($event)\"\n (keydown.enter)=\"aplicar()\"\n placeholder=\"mín\"\n [attr.aria-label]=\"(filtroSelecionado()?.nome ?? '') + ' (mínimo)'\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input\"\n />\n <span class=\"pjc-filtro-range-sep\" aria-hidden=\"true\">—</span>\n <input\n pInputText\n type=\"text\"\n inputmode=\"numeric\"\n [ngModel]=\"termoNumericoRangeMax()\"\n (ngModelChange)=\"termoNumericoRangeMax.set($event)\"\n (keydown.enter)=\"aplicar()\"\n placeholder=\"máx\"\n [attr.aria-label]=\"(filtroSelecionado()?.nome ?? '') + ' (máximo)'\"\n [disabled]=\"!entradaHabilitada()\"\n class=\"pjc-filtro-input\"\n />\n </div>\n }\n\n @case (TipoFiltro.DATA) {\n <p-datePicker\n class=\"pjc-filtro-datepicker\"\n [ngModel]=\"termoData()\"\n (ngModelChange)=\"termoData.set($event)\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"dd/mm/aaaa\"\n appendTo=\"body\"\n [disabled]=\"!entradaHabilitada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n (keydown.enter)=\"aplicar()\"\n />\n }\n\n @case (TipoFiltro.DATA_RANGE) {\n <p-datePicker\n class=\"pjc-filtro-datepicker\"\n [ngModel]=\"termoDataRange()\"\n (ngModelChange)=\"termoDataRange.set($event)\"\n selectionMode=\"range\"\n dateFormat=\"dd/mm/yy\"\n placeholder=\"dd/mm/aaaa - dd/mm/aaaa\"\n appendTo=\"body\"\n [disabled]=\"!entradaHabilitada()\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n (keydown.enter)=\"aplicar()\"\n />\n }\n\n @case (TipoFiltro.ENUM) {\n <p-select\n class=\"pjc-filtro-enum-select\"\n [options]=\"filtroSelecionado()?.arrayEnum ?? []\"\n [ngModel]=\"termoEnum()\"\n (ngModelChange)=\"onAplicarEnum($event)\"\n optionLabel=\"texto\"\n [placeholder]=\"placeholderEntrada()\"\n appendTo=\"body\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n />\n }\n\n @case (TipoFiltro.ENUM_MULTI) {\n <p-multiselect\n class=\"pjc-filtro-enum-multi\"\n [options]=\"filtroSelecionado()?.arrayEnum ?? []\"\n [ngModel]=\"termoEnumMulti()\"\n (ngModelChange)=\"termoEnumMulti.set($event)\"\n optionLabel=\"texto\"\n display=\"comma\"\n [placeholder]=\"placeholderEntrada()\"\n appendTo=\"body\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n />\n }\n\n @case (TipoFiltro.BOOLEANO) {\n <p-select\n class=\"pjc-filtro-enum-select\"\n [options]=\"opcoesBooleano()\"\n [ngModel]=\"termoBooleano()\"\n (ngModelChange)=\"onAplicarBooleano($event)\"\n optionLabel=\"texto\"\n [placeholder]=\"placeholderEntrada()\"\n appendTo=\"body\"\n [attr.aria-label]=\"filtroSelecionado()?.nome\"\n />\n }\n }\n </div>\n\n @if (aplicaPorConfirmacao() && entradaHabilitada()) {\n <button\n type=\"button\"\n class=\"pjc-filtro-confirmar\"\n (click)=\"aplicar()\"\n aria-label=\"Aplicar filtro\"\n >\n <i class=\"pi pi-plus\"></i>\n </button>\n }\n </div>\n\n @if (filtrosSelecionados().length > 0) {\n <div class=\"pjc-filtro-chips\" role=\"list\" aria-label=\"Filtros aplicados\">\n @for (f of filtrosSelecionados(); track f.codigo) {\n <p-chip\n [label]=\"f.nome + ': ' + f.valorMostrar\"\n [removable]=\"true\"\n (onRemove)=\"remover(f)\"\n />\n }\n </div>\n }\n\n <div class=\"pjc-sr-only\" role=\"status\" aria-live=\"polite\">{{ anuncioA11y() }}</div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-hora-field',\n templateUrl: 'hora-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcHoraFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcHoraFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcHoraFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Hora');\n placeholder = input<string>('HH:MM');\n id = input<string>(`pjc-hora-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.hora()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99:99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n placeholder=\"HH:MM\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99:99\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n placeholder=\"HH:MM\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-imei-field',\n templateUrl: 'imei-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcImeiFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcImeiFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcImeiFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('000000000000000');\n id = input<string>(`pjc-imei-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.imei()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999999999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"999999999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-integer-field',\n templateUrl: 'integer-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputNumberModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcIntegerFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcIntegerFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('Número');\n placeholder = input<string>('Digite o número');\n id = input<string>(`pjc-integer-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n prefix = input<string>('');\n suffix = input<string>('');\n useGrouping = input<boolean>(false);\n min = input<number | null>(null);\n max = input<number | null>(null);\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: number | null = null;\n disabled = false;\n\n onChange: (value: number | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: number | null): void {\n this.value = val;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onValueChange(value: number | null): void {\n this.value = value;\n this.onChange(value);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputnumber\n [inputId]=\"id()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [useGrouping]=\"useGrouping()\"\n [prefix]=\"prefix()\"\n [suffix]=\"suffix()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [maxFractionDigits]=\"0\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n styleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputnumber\n [inputId]=\"id()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n (onBlur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [useGrouping]=\"useGrouping()\"\n [prefix]=\"prefix()\"\n [suffix]=\"suffix()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [disabled]=\"disabled\"\n [maxFractionDigits]=\"0\"\n inputStyleClass=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500\"\n styleClass=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, DestroyRef, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport { ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-moeda-field',\n templateUrl: 'moeda-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FloatLabelModule, InputTextModule, IconFieldModule, InputIconModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcMoedaFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcMoedaFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n placeholder = input<string>('');\n hint = input<string>('');\n id = input<string>(`pjc-moeda-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n mode = input<'currency' | 'decimal'>('currency');\n currency = input<string>('BRL');\n locale = input<string>('pt-BR');\n minFractionDigits = input<number>(2);\n maxFractionDigits = input<number>(2);\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n private readonly divisor = computed(() => Math.pow(10, this.minFractionDigits()));\n private readonly cents = signal(0);\n\n readonly displayValue = computed(() => {\n const value = this.cents() / this.divisor();\n return new Intl.NumberFormat(this.locale(), {\n style: this.mode() === 'currency' ? 'currency' : 'decimal',\n currency: this.mode() === 'currency' ? this.currency() : undefined,\n minimumFractionDigits: this.minFractionDigits(),\n maximumFractionDigits: this.maxFractionDigits(),\n }).format(value);\n });\n\n disabled = false;\n\n onChange: (value: number | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled || this.readonly()) return;\n\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart ?? 0;\n const displayText = input.value;\n const digitsBeforeCursor = (displayText.substring(0, cursorPos).match(/\\d/g) || []).length;\n const displayDigits = (displayText.match(/\\d/g) || []).join('');\n\n if (/^\\d$/.test(event.key)) {\n event.preventDefault();\n const digits = displayDigits.split('');\n digits.splice(digitsBeforeCursor, 0, event.key);\n const newCents = Number.parseInt(digits.join(''), 10) || 0;\n if (newCents <= 9_999_999_999) {\n this.cents.set(newCents);\n this.emitValue();\n this.restoreCursor(input, digitsBeforeCursor + 1);\n }\n } else if (event.key === 'Backspace') {\n event.preventDefault();\n if (digitsBeforeCursor > 0) {\n const digits = displayDigits.split('');\n digits.splice(digitsBeforeCursor - 1, 1);\n this.cents.set(Number.parseInt(digits.join(''), 10) || 0);\n this.emitValue();\n this.restoreCursor(input, digitsBeforeCursor - 1);\n }\n } else if (event.key === 'Delete') {\n event.preventDefault();\n if (digitsBeforeCursor < displayDigits.length) {\n const digits = displayDigits.split('');\n digits.splice(digitsBeforeCursor, 1);\n this.cents.set(Number.parseInt(digits.join(''), 10) || 0);\n this.emitValue();\n this.restoreCursor(input, digitsBeforeCursor);\n }\n } else if (event.key.length === 1) {\n // Block all other printable characters (letters, symbols, etc.)\n event.preventDefault();\n }\n }\n\n private restoreCursor(input: HTMLInputElement, targetDigitPos: number): void {\n requestAnimationFrame(() => {\n const newValue = input.value;\n let digitCount = 0;\n let newPos = newValue.length;\n for (let i = 0; i < newValue.length; i++) {\n if (/\\d/.test(newValue[i])) {\n digitCount++;\n if (digitCount === targetDigitPos) {\n newPos = i + 1;\n break;\n }\n }\n }\n input.setSelectionRange(newPos, newPos);\n });\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n }\n\n private emitValue(): void {\n const value = this.cents() === 0 ? null : this.cents() / this.divisor();\n this.onChange(value);\n }\n\n writeValue(val: number | null): void {\n const cents = val == null ? 0 : Math.round(val * this.divisor());\n this.cents.set(cents);\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n (blur)=\"onTouched()\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n class=\"w-full\"\n styleClass=\"w-full\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n (blur)=\"onTouched()\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n class=\"w-full\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-numero-cartao-field',\n templateUrl: 'numero-cartao-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcNumeroCartaoFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcNumeroCartaoFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcNumeroCartaoFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('0000 0000 0000 0000');\n id = input<string>(`pjc-numero-cartao-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.numeroCartao()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"9999 9999 9999 9999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"9999 9999 9999 9999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, signal } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-password-field',\n templateUrl: 'password-field.component.html',\n styleUrl: 'password-field.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcPasswordFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcPasswordFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('');\n id = input<string>(`pjc-password-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled: boolean = false;\n showPassword = signal<boolean>(false);\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n this.value = (event.target as HTMLInputElement).value;\n this.onChange(this.value);\n }\n\n toggleVisibility(): void {\n this.showPassword.update(v => !v);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full password-wrapper\" [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [type]=\"showPassword() ? 'text' : 'password'\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full pr-10 outline-none bg-transparent\"\n />\n <button\n type=\"button\"\n (click)=\"toggleVisibility()\"\n [disabled]=\"disabled\"\n class=\"password-toggle cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n [attr.aria-label]=\"showPassword() ? 'Ocultar senha' : 'Mostrar senha'\"\n >\n <i [class]=\"showPassword() ? 'pi pi-eye-slash' : 'pi pi-eye'\"></i>\n </button>\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full password-wrapper\" [class.opacity-60]=\"disabled\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [type]=\"showPassword() ? 'text' : 'password'\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full pr-10 outline-none bg-transparent\"\n />\n <button\n type=\"button\"\n (click)=\"toggleVisibility()\"\n [disabled]=\"disabled\"\n class=\"password-toggle cursor-pointer bg-transparent border-none text-surface-500 hover:text-surface-700 disabled:text-surface-300 disabled:cursor-not-allowed transition-colors\"\n [attr.aria-label]=\"showPassword() ? 'Ocultar senha' : 'Mostrar senha'\"\n >\n <i [class]=\"showPassword() ? 'pi pi-eye-slash' : 'pi pi-eye'\"></i>\n </button>\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-placa-field',\n templateUrl: 'placa-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcPlacaFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcPlacaFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcPlacaFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Placa do Veículo');\n placeholder = input<string>('ABC-1234');\n id = input<string>(`pjc-placa-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value: string = '';\n disabled = false;\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val?.toUpperCase() || '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(event: Event): void {\n const val = (event.target as HTMLInputElement)?.value ?? '';\n this.onChange(val.toUpperCase());\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.placaVeiculo()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"aaa-9*99\"\n [(ngModel)]=\"value\"\n (onInput)=\"onModelChange($event)\"\n (onBlur)=\"onTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"aaa-9*99\"\n [(ngModel)]=\"value\"\n (onInput)=\"onModelChange($event)\"\n (onBlur)=\"onTouched()\"\n [unmask]=\"false\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 p-2 outline-none bg-transparent uppercase\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\n\n@Component({\n selector: 'pjc-renavam-field',\n templateUrl: 'renavam-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputMaskModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcRenavamFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcRenavamFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcRenavamFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('');\n hint = input<string>('');\n placeholder = input<string>('00000000000');\n id = input<string>(`pjc-renavam-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = '';\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val ?? '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string): void {\n this.value = value ?? '';\n this.onChange(this.value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.renavam()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <p-inputMask\n [id]=\"id()\"\n mask=\"99999999999\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n [unmask]=\"true\"\n [autoClear]=\"false\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n inputStyleClass=\"w-full p-2 outline-none bg-transparent\"\n ></p-inputMask>\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Injector, input, OnInit, computed } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { PjcValidators } from '../../validators/pjc-validators';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-telefone-field',\n templateUrl: 'telefone-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, FloatLabelModule, InputTextModule, IconFieldModule, InputIconModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcTelefoneFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PjcTelefoneFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcTelefoneFieldComponent implements ControlValueAccessor, Validator, OnInit {\n label = input<string>('Telefone');\n placeholder = input<string>('');\n id = input<string>(`pjc-telefone-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n displayValue: string = '';\n disabled: boolean = false;\n\n private rawValue: string = '';\n\n computedPlaceholder = computed(() => {\n const override = this.placeholder();\n if (override) return override;\n return this.rawValue.length > 10 ? '(00) 90000-0000' : '(00) 0000-0000';\n });\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.rawValue = val?.replaceAll(/\\D/g, '') ?? '';\n this.displayValue = this.formatValue(this.rawValue);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart ?? 0;\n const digitsBeforeCursor = input.value.substring(0, cursorPos).replace(/\\D/g, '').length;\n\n this.rawValue = input.value.replaceAll(/\\D/g, '').substring(0, 11);\n this.displayValue = this.formatValue(this.rawValue);\n this.onChange(this.rawValue);\n\n let newCursor = this.displayValue.length;\n let digitCount = 0;\n for (let i = 0; i < this.displayValue.length; i++) {\n if (/\\d/.test(this.displayValue[i])) digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n setTimeout(() => input.setSelectionRange(newCursor, newCursor));\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n\n private formatValue(digits: string): string {\n if (!digits) return '';\n\n if (digits.length <= 10) {\n // Fixo: (99) 9999-9999\n return digits\n .replace(/(\\d{2})(\\d)/, '($1) $2')\n .replace(/(\\(\\d{2}\\) \\d{4})(\\d)/, '$1-$2');\n }\n\n // Celular: (99) 99999-9999\n return digits\n .replace(/(\\d{2})(\\d)/, '($1) $2')\n .replace(/(\\(\\d{2}\\) \\d{5})(\\d)/, '$1-$2');\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return PjcValidators.telefone()(control);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"15\"\n class=\"w-full p-2 outline-none bg-transparent border border-surface-300 rounded-md focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"displayValue\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onModelTouched()\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n maxlength=\"15\"\n class=\"w-full p-2 outline-none bg-transparent border border-surface-300 rounded-md focus:border-primary-500\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport {\n getErrorMessage,\n initFormValidation,\n isFormControlInvalid,\n} from '../../utils/form-validation';\nimport { SelectModule } from 'primeng/select';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\nexport interface PjcTipoPessoa {\n label: string;\n value: string;\n}\n\nexport const TIPOS_PESSOA: PjcTipoPessoa[] = [\n { label: 'Pessoa Física', value: 'FISICA' },\n { label: 'Pessoa Jurídica', value: 'JURIDICA' },\n];\n\n@Component({\n selector: 'pjc-tipo-pessoa-field',\n templateUrl: 'tipo-pessoa-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcTipoPessoaFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcTipoPessoaFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('Tipo de Pessoa');\n placeholder = input<string>('Selecione o tipo de pessoa');\n id = input<string>(`pjc-tipo-pessoa-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n erros = input<Record<string, string>>({});\n hint = input<string>('');\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n readonly tiposPessoa = TIPOS_PESSOA;\n\n value: string | null = null;\n disabled = false;\n\n onChange: (value: string | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | null): void {\n this.value = val;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: string | null): void {\n this.value = value;\n this.onChange(value);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-select\n [inputId]=\"id()\"\n [options]=\"tiposPessoa\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n appendTo=\"body\"\n [disabled]=\"disabled || readonly()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"tiposPessoa\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n appendTo=\"body\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","export interface PjcUf {\n uf: string;\n descricao: string;\n}\n\nexport const ESTADOS: PjcUf[] = [\n { uf: 'MT', descricao: 'Mato Grosso' },\n { uf: 'AC', descricao: 'Acre' },\n { uf: 'AL', descricao: 'Alagoas' },\n { uf: 'AP', descricao: 'Amapá' },\n { uf: 'AM', descricao: 'Amazonas' },\n { uf: 'BA', descricao: 'Bahia' },\n { uf: 'CE', descricao: 'Ceará' },\n { uf: 'DF', descricao: 'Distrito Federal' },\n { uf: 'ES', descricao: 'Espírito Santo' },\n { uf: 'GO', descricao: 'Goiás' },\n { uf: 'MA', descricao: 'Maranhão' },\n { uf: 'MS', descricao: 'Mato Grosso do Sul' },\n { uf: 'MG', descricao: 'Minas Gerais' },\n { uf: 'PA', descricao: 'Pará' },\n { uf: 'PB', descricao: 'Paraíba' },\n { uf: 'PR', descricao: 'Paraná' },\n { uf: 'PE', descricao: 'Pernambuco' },\n { uf: 'PI', descricao: 'Piauí' },\n { uf: 'RJ', descricao: 'Rio de Janeiro' },\n { uf: 'RN', descricao: 'Rio Grande do Norte' },\n { uf: 'RS', descricao: 'Rio Grande do Sul' },\n { uf: 'RO', descricao: 'Rondônia' },\n { uf: 'RR', descricao: 'Roraima' },\n { uf: 'SC', descricao: 'Santa Catarina' },\n { uf: 'SP', descricao: 'São Paulo' },\n { uf: 'SE', descricao: 'Sergipe' },\n { uf: 'TO', descricao: 'Tocantins' },\n];\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, DestroyRef, forwardRef, inject, Injector, input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { getErrorMessage, initFormValidation, isFormControlInvalid } from '../../utils/form-validation';\nimport { SelectModule } from 'primeng/select';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\nimport { FilterService } from 'primeng/api';\nimport { ESTADOS, PjcUf } from './uf-field.constants';\n\nconst PJC_ACCENT_CONTAINS = 'pjc-accent-contains';\nconst normalize = (s: string) => s.normalize('NFD').replaceAll(/[\\u0300-\\u036f]/g, '').toLowerCase();\n\n@Component({\n selector: 'pjc-uf-field',\n templateUrl: 'uf-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcUfFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcUfFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('UF');\n hint = input<string>('');\n placeholder = input<string>('Selecione o estado');\n id = input<string>(`pjc-uf-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n filter = input<boolean>(false);\n uppercase = input<boolean>(false);\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly filterService = inject(FilterService);\n private ngControl: NgControl | null = null;\n\n readonly estadosDisplay = computed(() =>\n this.uppercase()\n ? ESTADOS.map(e => ({ ...e, descricao: e.descricao.toUpperCase() }))\n : ESTADOS\n );\n readonly accentContainsFilter = PJC_ACCENT_CONTAINS;\n\n value: PjcUf | null = null;\n disabled = false;\n\n onChange: (value: PjcUf | null) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n this.filterService.register(PJC_ACCENT_CONTAINS, (value: any, filter: any): boolean => {\n if (filter === undefined || filter === null || String(filter).trim() === '') return true;\n if (value === undefined || value === null) return false;\n return normalize(String(value)).includes(normalize(String(filter)));\n });\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: PjcUf | null): void {\n this.value = val?.uf ? (this.estadosDisplay().find(e => e.uf === val.uf) ?? null) : null;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: PjcUf | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onModelChange(value: PjcUf | null): void {\n this.value = value;\n const original = value?.uf ? (ESTADOS.find(e => e.uf === value.uf) ?? null) : null;\n this.onChange(original);\n }\n\n onModelTouched(): void {\n this.onTouched();\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-select\n [inputId]=\"id()\"\n [options]=\"estadosDisplay()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"descricao\"\n dataKey=\"uf\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n filterBy=\"descricao\"\n [disabled]=\"disabled || readonly()\"\n styleClass=\"w-full\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-select\n [inputId]=\"id()\"\n [options]=\"estadosDisplay()\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n (onBlur)=\"onModelTouched()\"\n optionLabel=\"descricao\"\n dataKey=\"uf\"\n appendTo=\"body\"\n [filter]=\"filter()\"\n [filterMatchMode]=\"$any(accentContainsFilter)\"\n filterBy=\"descricao\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled\"\n styleClass=\"w-full border border-surface-300 rounded-md focus:border-primary-500 transition-colors\"\n class=\"w-full\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n />\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n getErrorMessage,\n initFormValidation,\n isFormControlInvalid,\n} from '../../utils/form-validation';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'pjc-uppercase-field',\n templateUrl: 'uppercase-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, InputTextModule, IconFieldModule, InputIconModule, FloatLabelModule, MessageModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PjcUppercaseFieldComponent),\n multi: true,\n },\n ],\n})\nexport class PjcUppercaseFieldComponent implements ControlValueAccessor, OnInit {\n label = input<string>('Nome');\n placeholder = input<string | undefined>();\n id = input<string>(`pjc-uppercase-${Math.random().toString(36).substring(2, 9)}`);\n labelVariant = input<'over' | 'in' | 'on'>('on');\n readonly = input<boolean>(false);\n prefixIcon = input<string>('');\n suffixIcon = input<string>('');\n hint = input<string>('');\n erros = input<Record<string, string>>({});\n\n private readonly injector = inject(Injector);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private ngControl: NgControl | null = null;\n\n value = signal<string>('');\n disabled = false;\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.ngControl = initFormValidation(this.injector, this.cdr, this.destroyRef);\n }\n\n get invalid(): boolean {\n return isFormControlInvalid(this.ngControl);\n }\n\n get errorMessage(): string {\n return getErrorMessage(this.ngControl, this.erros());\n }\n\n writeValue(val: string | number | null): void {\n if (val == null) {\n this.value.set('');\n } else {\n this.value.set(String(val).toUpperCase());\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n const upper = (event.target as HTMLInputElement).value.toUpperCase();\n this.value.set(upper);\n this.onChange(upper);\n }\n}\n","<div class=\"flex flex-col gap-1 w-full\">\n @if (label()) {\n <p-floatlabel [variant]=\"labelVariant()\" class=\"w-full\">\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder() || label()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500 placeholder:normal-case\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n <label [for]=\"id()\">{{ label() }}</label>\n </p-floatlabel>\n } @else {\n <p-iconfield class=\"w-full\">\n @if (prefixIcon()) { <p-inputicon [styleClass]=\"prefixIcon()\" /> }\n <input\n pInputText\n [id]=\"id()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [placeholder]=\"placeholder() || label()\"\n [class.ng-invalid]=\"invalid\"\n [class.ng-dirty]=\"invalid\"\n class=\"w-full p-2 border border-surface-300 rounded-md outline-none bg-transparent focus:border-primary-500 placeholder:normal-case\"\n />\n @if (suffixIcon()) { <p-inputicon [styleClass]=\"suffixIcon()\" /> }\n </p-iconfield>\n }\n\n @if (hint()) {\n <small class=\"text-xs text-surface-500\">{{ hint() }}</small>\n }\n\n @if (errorMessage) {\n <p-message severity=\"error\" variant=\"simple\" size=\"small\">{{ errorMessage }}</p-message>\n }\n\n <ng-content></ng-content>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-pjc-fields',\n imports: [],\n template: ` <p>pjc-fields works!</p> `,\n styles: ``,\n})\nexport class PjcFields {}\n","export type PjcUnidadeMedida =\n | 'grama'\n | 'quilograma'\n | 'unidade'\n | 'miligrama'\n | 'litro'\n | 'mililitro'\n | 'centigrama'\n | 'metrocubico';\n\nconst unidadesM = ['', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove'];\nconst unidadesF = ['', 'uma', 'duas', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove'];\nconst dezenasEspeciais = [\n 'dez',\n 'onze',\n 'doze',\n 'treze',\n 'quatorze',\n 'quinze',\n 'dezesseis',\n 'dezessete',\n 'dezoito',\n 'dezenove',\n];\nconst dezenas = [\n '',\n '',\n 'vinte',\n 'trinta',\n 'quarenta',\n 'cinquenta',\n 'sessenta',\n 'setenta',\n 'oitenta',\n 'noventa',\n];\nconst centenasM = [\n '',\n 'cento',\n 'duzentos',\n 'trezentos',\n 'quatrocentos',\n 'quinhentos',\n 'seiscentos',\n 'setecentos',\n 'oitocentos',\n 'novecentos',\n];\nconst centenasF = [\n '',\n 'cento',\n 'duzentas',\n 'trezentas',\n 'quatrocentas',\n 'quinhentas',\n 'seiscentas',\n 'setecentas',\n 'oitocentas',\n 'novecentas',\n];\n\nconst configUnidades: Record<\n PjcUnidadeMedida,\n { singular: string; plural: string; feminino: boolean }\n> = {\n // Nota: \"Grama\" (peso) é substantivo masculino (\"dois gramas\").\n grama: { singular: 'grama', plural: 'gramas', feminino: false },\n quilograma: { singular: 'quilograma', plural: 'quilogramas', feminino: false },\n metrocubico: { singular: 'metro cúbico', plural: 'metros cúbicos', feminino: false },\n unidade: { singular: 'unidade', plural: 'unidades', feminino: true },\n miligrama: { singular: 'miligrama', plural: 'miligramas', feminino: false },\n litro: { singular: 'litro', plural: 'litros', feminino: false },\n mililitro: { singular: 'mililitro', plural: 'mililitros', feminino: false },\n centigrama: { singular: 'centigrama', plural: 'centigramas', feminino: false },\n};\n\nexport class PjcUtils {\n /**\n * Converte um número inteiro para extenso.\n */\n static numeroPorExtenso(numero: number, isFeminino = false): string {\n if (numero === 0) return 'zero';\n\n const partes: number[] = [];\n let temp = Math.floor(Math.abs(numero));\n while (temp > 0) {\n partes.push(temp % 1000);\n temp = Math.floor(temp / 1000);\n }\n\n const grandezasSingular = ['', 'mil', 'milhão', 'bilhão'];\n const grandezasPlural = ['', 'mil', 'milhões', 'bilhões'];\n\n const resultado: string[] = [];\n for (let i = 0; i < partes.length; i++) {\n const valor = partes[i];\n if (valor === 0) continue;\n\n if (i === 1 && valor === 1) {\n resultado.unshift('mil');\n } else {\n const strGrupo = PjcUtils.traduzirGrupo(valor, isFeminino);\n const grandeza = valor === 1 ? grandezasSingular[i] : grandezasPlural[i];\n resultado.unshift(grandeza ? `${strGrupo} ${grandeza}` : strGrupo);\n }\n }\n\n // Junta as casas maiores com vírgula e a última com \"e\"\n return resultado\n .join(', ')\n .replace(/,([^,]*)$/, ' e$1')\n .trim();\n }\n\n private static traduzirGrupo(n: number, isFeminino: boolean): string {\n if (n === 100) return 'cem';\n\n const u = isFeminino ? unidadesF : unidadesM;\n const c = isFeminino ? centenasF : centenasM;\n\n const centena = Math.floor(n / 100);\n const dezena = Math.floor((n % 100) / 10);\n const unidade = n % 10;\n\n const partes: string[] = [];\n if (centena > 0) partes.push(c[centena]);\n partes.push(PjcUtils.traduzirDezenaUnidade(dezena, unidade, u));\n\n return partes.filter(Boolean).join(' e ');\n }\n\n private static traduzirDezenaUnidade(dezena: number, unidade: number, u: string[]): string {\n if (dezena === 0 && unidade === 0) return '';\n if (dezena === 1) return dezenasEspeciais[unidade];\n\n const partes: string[] = [];\n if (dezena > 1) partes.push(dezenas[dezena]);\n if (unidade > 0) partes.push(u[unidade]);\n return partes.join(' e ');\n }\n\n /**\n * Converte valor monetário para extenso.\n */\n static valorMonetarioPorExtenso(\n valor: number,\n currencyName: string = 'real',\n currencyNamePlural: string = 'reais',\n centavoSingular: string = 'centavo',\n centavoPlural: string = 'centavos',\n ): string {\n const inteiros = Math.floor(valor);\n const centavos = Math.round((valor - inteiros) * 100);\n\n const partes = [];\n\n if (inteiros > 0) {\n const moeda = inteiros === 1 ? currencyName : currencyNamePlural;\n partes.push(`${PjcUtils.numeroPorExtenso(inteiros)} ${moeda}`);\n }\n\n if (centavos > 0) {\n const cent = centavos === 1 ? centavoSingular : centavoPlural;\n partes.push(`${PjcUtils.numeroPorExtenso(centavos)} ${cent}`);\n }\n\n return partes.join(' e ') || `zero ${currencyNamePlural}`;\n }\n\n /**\n * Converte unidade de medida para extenso, respeitando gênero.\n * Para quilograma e litro, a parte decimal é convertida para a subunidade\n * correspondente (grama e mililitro, respectivamente).\n */\n static unidadeMedidaPorExtenso(valor: number, unidade: PjcUnidadeMedida): string {\n const config = configUnidades[unidade];\n\n if (unidade === 'quilograma' || unidade === 'litro') {\n const resultado = PjcUtils.unidadeComSubunidade(valor, unidade, config);\n if (resultado) return resultado;\n }\n\n const textoNumero = PjcUtils.numeroPorExtenso(valor, config.feminino);\n const textoUnidade = valor === 1 ? config.singular : config.plural;\n\n return `${textoNumero} ${textoUnidade}`;\n }\n\n private static unidadeComSubunidade(\n valor: number,\n unidade: PjcUnidadeMedida,\n config: { singular: string; plural: string; feminino: boolean },\n ): string | null {\n const inteiros = Math.floor(valor);\n const decimal = Math.round((valor - inteiros) * 1000);\n\n if (decimal === 0) return null;\n\n const partes: string[] = [];\n\n if (inteiros > 0) {\n const textoInteiros = PjcUtils.numeroPorExtenso(inteiros, config.feminino);\n const textoUnidade = inteiros === 1 ? config.singular : config.plural;\n partes.push(`${textoInteiros} ${textoUnidade}`);\n }\n\n const subUnidade: PjcUnidadeMedida = unidade === 'quilograma' ? 'grama' : 'mililitro';\n const subConfig = configUnidades[subUnidade];\n const textoDecimal = PjcUtils.numeroPorExtenso(decimal, subConfig.feminino);\n const textoSubUnidade = decimal === 1 ? subConfig.singular : subConfig.plural;\n partes.push(`${textoDecimal} ${textoSubUnidade}`);\n\n return partes.join(' e ');\n }\n\n /**\n * Converte múltiplas unidades de massa para extenso em uma única string.\n * Todos os parâmetros são opcionais. Os valores informados são convertidos\n * para extenso e concatenados com vírgulas e \"e\" antes do último item.\n *\n * Exemplo:\n * PjcUtils.massaPorExtenso({ quilograma: 1, grama: 200, miligrama: 100, centigrama: 500 })\n * // => \"um quilograma, duzentos gramas, cem miligramas e quinhentos centigramas\"\n */\n static massaPorExtenso(params: {\n quilograma?: number;\n grama?: number;\n miligrama?: number;\n centigrama?: number;\n }): string {\n const mapeamento: { chave: keyof typeof params; unidade: PjcUnidadeMedida }[] = [\n { chave: 'quilograma', unidade: 'quilograma' },\n { chave: 'grama', unidade: 'grama' },\n { chave: 'miligrama', unidade: 'miligrama' },\n { chave: 'centigrama', unidade: 'centigrama' },\n ];\n\n const partes: string[] = [];\n\n for (const { chave, unidade } of mapeamento) {\n const valor = params[chave];\n if (valor != null && valor > 0) {\n partes.push(PjcUtils.unidadeMedidaPorExtenso(valor, unidade));\n }\n }\n\n if (partes.length === 0) return '';\n\n if (partes.length === 1) return partes[0];\n\n // Junta com vírgulas e \"e\" antes do último item\n const ultimo = partes.pop()!;\n return `${partes.join(', ')} e ${ultimo}`;\n }\n\n /**\n * Converte múltiplas unidades de volume para extenso em uma única string.\n * Todos os parâmetros são opcionais. Os valores informados são convertidos\n * para extenso e concatenados com vírgulas e \"e\" antes do último item.\n *\n * Exemplo:\n * PjcUtils.volumePorExtenso({ litro: 2, mililitro: 500 })\n * // => \"dois litros e quinhentos mililitros\"\n */\n static volumePorExtenso(params: {\n litro?: number;\n mililitro?: number;\n }): string {\n const mapeamento: { chave: keyof typeof params; unidade: PjcUnidadeMedida }[] = [\n { chave: 'litro', unidade: 'litro' },\n { chave: 'mililitro', unidade: 'mililitro' },\n ];\n\n const partes: string[] = [];\n\n for (const { chave, unidade } of mapeamento) {\n const valor = params[chave];\n if (valor != null && valor > 0) {\n partes.push(PjcUtils.unidadeMedidaPorExtenso(valor, unidade));\n }\n }\n\n if (partes.length === 0) return '';\n\n if (partes.length === 1) return partes[0];\n\n // Junta com vírgulas e \"e\" antes do último item\n const ultimo = partes.pop()!;\n return `${partes.join(', ')} e ${ultimo}`;\n }\n}\n","/*\n * Public API Surface of pjc-fields\n */\n\nexport * from './lib/components/cep-field/cep-field.component';\nexport * from './lib/components/chassi-field/chassi-field.component';\nexport * from './lib/components/chassi-field/chassi-input.directive';\nexport * from './lib/components/cidade-field/cidade-field.component';\nexport * from './lib/components/cidade-field/pjc-cidade-service.token';\nexport * from './lib/components/cidade-field/pjc-cidade.service';\nexport * from './lib/components/cidade-field/pjc-municipio.model';\nexport * from './lib/components/cnh-field/cnh-field.component';\nexport * from './lib/components/cnpj-field/cnpj-field.component';\nexport * from './lib/components/cpf-cnpj-field/cpf-cnpj-field.component';\nexport * from './lib/components/cpf-field/cpf-field.component';\nexport * from './lib/components/data-field/data-field.component';\nexport * from './lib/components/data-hora-field/data-hora-field.component';\nexport * from './lib/components/detalhes/detalhes.component';\nexport * from './lib/components/email-field/email-field.component';\nexport * from './lib/components/enum-field/enum-field.component';\nexport * from './lib/components/enum-field/pjc-enum-item.model';\nexport * from './lib/components/enum-field/pjc-enum-service.token';\nexport * from './lib/components/enum-field/pjc-enum.service';\nexport * from './lib/components/erro-validacao/erro-validacao.component';\nexport * from './lib/components/filtro-field/filtro-field.component';\nexport * from './lib/components/filtro-field/pjc-filtro.model';\nexport * from './lib/components/hora-field/hora-field.component';\nexport * from './lib/components/imei-field/imei-field.component';\nexport * from './lib/components/integer-field/integer-field.component';\nexport * from './lib/components/moeda-field/moeda-field.component';\nexport * from './lib/components/numero-cartao-field/numero-cartao-field.component';\nexport * from './lib/components/password-field/password-field.component';\nexport * from './lib/components/placa-field/placa-field.component';\nexport * from './lib/components/renavam-field/renavam-field.component';\nexport * from './lib/components/telefone-field/telefone-field.component';\nexport * from './lib/components/tipo-pessoa-field/tipo-pessoa-field.component';\nexport * from './lib/components/uf-field/uf-field.component';\nexport * from './lib/components/uf-field/uf-field.constants';\nexport * from './lib/components/uppercase-field/uppercase-field.component';\nexport * from './lib/pjc-fields';\nexport * from './lib/validators/pjc-validators';\n\nexport * from './lib/utils/pjc-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5","PJC_ACCENT_CONTAINS","normalize","i6"],"mappings":"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"}
|