{"version":3,"file":"seniorsistemas-angular-components-localized-number-input.mjs","sources":["../../projects/angular-components/localized-number-input/src/lib/localized-number-input/localized-number-input.directive.ts","../../projects/angular-components/localized-number-input/src/lib/localized-number-input/localized-number-input.module.ts","../../projects/angular-components/localized-number-input/src/seniorsistemas-angular-components-localized-number-input.ts"],"sourcesContent":["import { Directive, forwardRef, Input, OnInit, inject } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { LocaleService } from '@seniorsistemas/angular-components/locale';\n\nimport { first } from 'rxjs/operators';\n\n/**\n * @description Diretiva de validação para campos `<input>` que verificam se o valor digitado\n * é um número localizado válido (considerando separadores decimal e de milhar do locale ativo).\n * Ao ser integrada ao `NG_VALIDATORS`, adiciona o erro `invalidNumber` ao control quando\n * o valor não corresponde ao formato esperado.\n *\n * @example\n * ```html\n * <input sLocalizedNumberInput [precision]=\"4\" formControlName=\"valor\" />\n * ```\n *\n * @category Inputs\n */\n@Directive({\n    selector: 'input[sLocalizedNumberInput]',\n    providers: [\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => LocalizedNumberInputDirective),\n            multi: true,\n        },\n    ],\n})\nexport class LocalizedNumberInputDirective implements OnInit, Validator {\n    private readonly localeService = inject(LocaleService);\n\n    /** @description Separador decimal personalizado. Usa o do locale ativo se não informado. */\n    @Input()\n    public decimalSeparator?: string;\n\n    /** @description Separador de milhar personalizado. Usa o do locale ativo se não informado. */\n    @Input()\n    public thousandsSeparator?: string;\n\n    /** @description Número máximo de casas decimais aceitas na validação. @default 2 */\n    @Input()\n    public precision = 2;\n\n    private numberRegex?: string;\n\n    public ngOnInit(): void {\n        // Gera a expressão regular para validar números de acordo com os separadores decimais e de milhares.\n        // Exemplo: /^(\\+?)(\\-?)([0-9]{0,3})*((\\,[0-9]{3,3})|((\\,[0-9]{3,3})+(\\,[0-9]{3,3}))|((\\,[0-9]{3,3})+(\\.[0-9]{1,10})))?$/g\n        // tslint:disable-next-line: max-line-length\n        this.numberRegex = `^((\\\\+?)|(-?))([0-9]{1,3})+((\\\\${this.thousandsSeparator}[0-9]{3,3})|((\\\\${this.thousandsSeparator}[0-9]{3,3})+(\\\\${this.thousandsSeparator}[0-9]{3,3}))|((\\\\${this.thousandsSeparator}[0-9]{3,3})+(\\\\${this.decimalSeparator}[0-9]{1,2}))|(\\\\${this.decimalSeparator}[0-9]{1,${this.precision}}))?$`;\n\n        this.localeService\n            .getLocale()\n            .pipe(first())\n            .subscribe(() => {\n                this.decimalSeparator = this.decimalSeparator ?? this.localeService.getDecimalSeparator();\n                this.thousandsSeparator = this.thousandsSeparator ?? this.localeService.getGroupingSeparator();\n\n                this.numberRegex = `^((\\\\+?)|(-?))([0-9]{1,3})+((\\\\${this.thousandsSeparator}[0-9]{3,3})|((\\\\${this.thousandsSeparator}[0-9]{3,3})+(\\\\${this.thousandsSeparator}[0-9]{3,3}))|((\\\\${this.thousandsSeparator}[0-9]{3,3})+(\\\\${this.decimalSeparator}[0-9]{1,2}))|(\\\\${this.decimalSeparator}[0-9]{1,${this.precision}}))?$`;\n            });\n    }\n\n    public validate(control: AbstractControl): ValidationErrors | null {\n        if (control.value && !String(control.value).match(new RegExp(this.numberRegex ?? '', 'g'))) {\n            return { invalidNumber: true };\n        }\n        return null;\n    }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LocalizedNumberInputDirective } from './localized-number-input.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [LocalizedNumberInputDirective],\n    exports: [LocalizedNumberInputDirective],\n})\nexport class LocalizedNumberInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}