mapa-library-ui 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/mapa-library-ui-src-lib-components-datepicker.mjs +28 -2
- package/fesm2022/mapa-library-ui-src-lib-components-datepicker.mjs.map +1 -1
- package/fesm2022/mapa-library-ui-src-lib-components-form.mjs +28 -2
- package/fesm2022/mapa-library-ui-src-lib-components-form.mjs.map +1 -1
- package/fesm2022/mapa-library-ui-src-lib-components-table.mjs +2 -2
- package/fesm2022/mapa-library-ui.mjs +30 -4
- package/fesm2022/mapa-library-ui.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/mapa-library-ui-2.0.5.tgz +0 -0
- package/package.json +1 -1
- package/src/lib/components/datepicker/index.d.ts +3 -0
- package/mapa-library-ui-2.0.4.tgz +0 -0
|
@@ -742,6 +742,18 @@ class MapaDatepicker {
|
|
|
742
742
|
this.isPresetsOpenState = signal(false, ...(ngDevMode ? [{ debugName: "isPresetsOpenState" }] : []));
|
|
743
743
|
this.localeState = null;
|
|
744
744
|
this.syncing = false;
|
|
745
|
+
this.minDateCache = {
|
|
746
|
+
initialized: false,
|
|
747
|
+
source: undefined,
|
|
748
|
+
sourceTimestamp: null,
|
|
749
|
+
value: null,
|
|
750
|
+
};
|
|
751
|
+
this.maxDateCache = {
|
|
752
|
+
initialized: false,
|
|
753
|
+
source: undefined,
|
|
754
|
+
sourceTimestamp: null,
|
|
755
|
+
value: null,
|
|
756
|
+
};
|
|
745
757
|
this.overlayPositions = [
|
|
746
758
|
{
|
|
747
759
|
originX: 'start',
|
|
@@ -852,10 +864,10 @@ class MapaDatepicker {
|
|
|
852
864
|
return getActiveDateFormat(this.locale());
|
|
853
865
|
}
|
|
854
866
|
minDate() {
|
|
855
|
-
return
|
|
867
|
+
return this.resolveDateBoundary(this.element.minDate, this.minDateCache);
|
|
856
868
|
}
|
|
857
869
|
maxDate() {
|
|
858
|
-
return
|
|
870
|
+
return this.resolveDateBoundary(this.element.maxDate, this.maxDateCache);
|
|
859
871
|
}
|
|
860
872
|
disabledDates() {
|
|
861
873
|
return this.element.disabledDates ?? this.emptyDisabledDates;
|
|
@@ -863,6 +875,20 @@ class MapaDatepicker {
|
|
|
863
875
|
isInvalidDate() {
|
|
864
876
|
return this.element.isInvalidDate ?? this.neverInvalid;
|
|
865
877
|
}
|
|
878
|
+
resolveDateBoundary(source, cache) {
|
|
879
|
+
const sourceTimestamp = source instanceof Date && !Number.isNaN(source.getTime())
|
|
880
|
+
? source.getTime()
|
|
881
|
+
: null;
|
|
882
|
+
if (!cache.initialized ||
|
|
883
|
+
cache.source !== source ||
|
|
884
|
+
cache.sourceTimestamp !== sourceTimestamp) {
|
|
885
|
+
cache.initialized = true;
|
|
886
|
+
cache.source = source;
|
|
887
|
+
cache.sourceTimestamp = sourceTimestamp;
|
|
888
|
+
cache.value = parseDateValue(source);
|
|
889
|
+
}
|
|
890
|
+
return cache.value;
|
|
891
|
+
}
|
|
866
892
|
/**
|
|
867
893
|
* Um mês por padrão em todos os modos, para o painel ficar na largura do
|
|
868
894
|
* campo. Dois meses são opt-in via `element.calendars`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapa-library-ui-src-lib-components-datepicker.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/elements/element-base.ts","../../../projects/mapa-library-ui/src/lib/core/elements/datepicker.ts","../../../projects/mapa-library-ui/src/lib/core/i18n/mapa-ui-texts.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-i18n.service.ts","../../../projects/mapa-library-ui/src/lib/core/services/validation-message-resolver.service.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.html","../../../projects/mapa-library-ui/src/lib/core/directives/mapa-mask-autofill-sync.directive.ts","../../../projects/mapa-library-ui/src/lib/core/utils/date.util.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-date-locale.service.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.html","../../../projects/mapa-library-ui/src/lib/components/datepicker/public-api.ts","../../../projects/mapa-library-ui/src/datepicker.ts","../../../projects/mapa-library-ui/src/mapa-library-ui-src-lib-components-datepicker.ts"],"sourcesContent":["import { EventEmitter } from \"@angular/core\";\nimport { ElementGroup } from \"../interfaces/element-group.interface\";\nimport { ElementOption, ElementTreeNode } from \"../interfaces/element-option.interface\";\nimport { ActionButton } from \"./action-button\";\nimport { ElementSearch } from \"./element-search\";\nimport { Errors } from \"./errors\";\nexport interface Status {\n label: string;\n}\n\nexport class ElementBase {\n value: string;\n key: string;\n label: string;\n required: boolean;\n order: number;\n controlType: string;\n type: string;\n placeholder?: string;\n readonly: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options: ElementOption[] | ElementGroup[];\n tree: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength!: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n\n constructor(\n options: {\n value?: string;\n key?: string;\n label?: string;\n required?: boolean;\n order?: number;\n controlType?: string;\n type?: string;\n placeholder?: string;\n readonly?: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options?: ElementOption[] | ElementGroup[];\n tree?: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength?: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n } = {}\n ) {\n this.value = options.value || \"\";\n this.key = options.key || \"\";\n this.label = options.label || \"\";\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType || \"\";\n this.type = options.type || \"\";\n this.placeholder = options.placeholder || \"\";\n this.readonly = options.readonly || false;\n this.hint = options.hint || \"\";\n this.prefix = options.prefix || \"\";\n this.suffix = options.suffix || \"\";\n this.autosize = options.autosize || false;\n this.autosizeMinWidth = options.autosizeMinWidth || \"212px\";\n this.autosizeMaxWidth = options.autosizeMaxWidth || \"400px\";\n this.autosizeMinRow = options.autosizeMinRow || 2;\n this.autosizeMaxRow = options.autosizeMaxRow || 5;\n this.options = options.options || [];\n this.tree = options.tree || [];\n this.multiple = options.multiple || false;\n this.search = options.search || undefined;\n this.maxLength = options.maxLength || null;\n this.errors = options.errors || undefined;\n this.actionButton = options.actionButton || undefined;\n this.mask = options.mask || undefined;\n this.autocomplete = options.autocomplete || \"\";\n this.clearValue =\n options.clearValue !== undefined ? options.clearValue : true;\n this.minDate = options.minDate || undefined;\n this.maxDate = options.maxDate || undefined;\n this.status = options.status || undefined;\n this.checkParent = options.checkParent || false;\n this.checkChildren = options.checkChildren || false;\n this.openedChange = options.openedChange || undefined;\n }\n}\n","import { ElementBase } from './element-base';\n\nexport type DatepickerMode = 'single' | 'range' | 'multiple';\n\n/**\n * Atalho de período exibido no painel do modo `range`.\n *\n * Use `daysBack` para uma faixa relativa a hoje (resolvida por\n * `getRelativeDateRange`) ou `startDate`/`endDate` para uma faixa fixa. Quando\n * ambos são informados, a faixa fixa prevalece.\n */\nexport interface DatepickerPreset {\n label: string;\n daysBack?: number;\n startDate?: Date;\n endDate?: Date;\n}\n\ntype ElementBaseOptions = NonNullable<\n ConstructorParameters<typeof ElementBase>[0]\n>;\n\nexport interface DatepickerOptions extends ElementBaseOptions {\n mode?: DatepickerMode;\n disabledDates?: (string | Date)[];\n isInvalidDate?: (date: Date) => boolean;\n presets?: DatepickerPreset[];\n presetsLabel?: string;\n calendars?: 1 | 2 | 3;\n weekStart?: number | null;\n closeOnSelect?: boolean;\n}\n\nexport class Datepicker extends ElementBase {\n override controlType = 'datepicker';\n\n mode: DatepickerMode;\n disabledDates?: (string | Date)[];\n isInvalidDate?: (date: Date) => boolean;\n presets?: DatepickerPreset[];\n /** Rótulo do gatilho de presets enquanto nenhum atalho está ativo. */\n presetsLabel?: string;\n /** `undefined` resolve para 2 no modo `range` e 1 nos demais. */\n calendars?: 1 | 2 | 3;\n weekStart: number | null;\n closeOnSelect: boolean;\n\n constructor(options: DatepickerOptions = {}) {\n super(options);\n this.mode = options.mode || 'single';\n this.disabledDates = options.disabledDates || undefined;\n this.isInvalidDate = options.isInvalidDate || undefined;\n this.presets = options.presets || undefined;\n this.presetsLabel = options.presetsLabel || undefined;\n this.calendars = options.calendars || undefined;\n this.weekStart = options.weekStart ?? null;\n this.closeOnSelect =\n options.closeOnSelect !== undefined ? options.closeOnSelect : true;\n }\n}\n\n/**\n * @deprecated Use `Datepicker` with `mode: \"range\"`.\n * Kept as a compatibility bridge for 2.x consumers.\n */\nexport class DatepickerRange extends Datepicker {\n override controlType = 'datepicker-range';\n\n constructor(options: DatepickerOptions = {}) {\n super({ ...options, mode: 'range' });\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport type {\n MapaUiTextGroups,\n PartialMapaUiTexts,\n ValidationContext,\n ValidationTextResolver,\n} from 'mapa-frontend-i18n';\n\nexport type MapaUiTexts = MapaUiTextGroups;\nexport type ValidationMessageContext = ValidationContext;\nexport type { PartialMapaUiTexts, ValidationTextResolver };\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n 'MAPA_UI_TEXTS',\n);\n\nfunction formatPaginatorRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${safeLength}`;\n}\n\nfunction formatPaginatorShowingRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return 'Mostrando 0 - 0 de 0 item';\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n const itemLabel = safeLength === 1 ? 'item' : 'itens';\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${safeLength} ${itemLabel}`;\n}\n\nconst DEFAULT_MAPA_UI_TEXTS: MapaUiTexts = {\n common: {\n selectAll: 'Selecionar todos',\n retry: 'Tentar novamente',\n },\n filters: {\n clear: 'Limpar filtros',\n submit: 'Filtrar',\n },\n datepicker: {\n startDatePlaceholder: 'Data inicial',\n endDatePlaceholder: 'Data final',\n },\n capability: {\n groupAverageTitle: 'Média geral do grupo',\n individualAverageTitle: 'Média geral do indivíduo',\n conceptTitle: 'Conceito',\n resultTitle: 'Resultado',\n positiveIndicatorsTitle: 'Indicadores positivos',\n negativeIndicatorsTitle: 'Indicadores negativos',\n riskIndicatorsTitle: 'Indicadores de risco',\n precipitationRiskTitle: 'Risco de acidente por precipitação',\n negligenceRiskTitle: 'Risco de acidente por negligência',\n negativeDirectionLabel: 'Direção Negativa |',\n positiveDirectionLabel: 'Direção Positiva |',\n },\n paginator: {\n itemsPerPage: 'Itens por página',\n nextPage: 'Próxima página',\n previousPage: 'Página anterior',\n rangeLabel: formatPaginatorRange,\n showingRangeLabel: formatPaginatorShowingRange,\n },\n warning: {\n lowReliabilityTitle: 'Nível baixo de confiabilidade no(s) teste(s):',\n expirationLimitTitle: 'O prazo de validade do(s) teste(s) está no limite:',\n },\n table: {\n emptyTitle: 'Não foram encontrados resultados',\n emptySubtitle: '',\n loading: 'Carregando resultados',\n errorTitle: 'Não foi possível carregar os resultados.',\n selectAllVisible: 'Selecionar todos os itens desta página',\n selectionColumn: 'Seleção',\n selectRow: 'Selecionar item',\n selectNamedRow: (item: string) => `Selecionar ${item}`,\n },\n validation: {\n cnpj: 'CNPJ inválido',\n cpf: 'CPF inválido',\n email: 'E-mail inválido',\n max: (context?: ValidationContext) =>\n `O valor máximo permitido é ${context?.max ?? ''}`.trim(),\n maxLength: (context?: ValidationContext) =>\n `O máximo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n min: (context?: ValidationContext) =>\n `O valor mínimo permitido é ${context?.min ?? ''}`.trim(),\n minLength: (context?: ValidationContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n pattern: 'Formato inválido',\n required: 'Campo obrigatório',\n },\n};\n\nfunction getDefaultTexts(): MapaUiTexts {\n return DEFAULT_MAPA_UI_TEXTS;\n}\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null,\n): MapaUiTexts {\n const defaults = getDefaultTexts();\n\n return {\n common: { ...defaults.common, ...(customTexts?.common ?? {}) },\n filters: { ...defaults.filters, ...(customTexts?.filters ?? {}) },\n datepicker: { ...defaults.datepicker, ...(customTexts?.datepicker ?? {}) },\n capability: { ...defaults.capability, ...(customTexts?.capability ?? {}) },\n paginator: { ...defaults.paginator, ...(customTexts?.paginator ?? {}) },\n warning: { ...defaults.warning, ...(customTexts?.warning ?? {}) },\n table: { ...defaults.table, ...(customTexts?.table ?? {}) },\n validation: { ...defaults.validation, ...(customTexts?.validation ?? {}) },\n };\n}\n\nexport function provideMapaUiTexts(texts: PartialMapaUiTexts): Provider {\n return {\n provide: MAPA_UI_TEXTS,\n useValue: texts,\n };\n}\n","import { Inject, Injectable, Injector, Optional, inject, signal } from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport {\n MAPA_UI_TEXTS,\n MapaUiTexts,\n PartialMapaUiTexts,\n ValidationMessageContext,\n ValidationTextResolver,\n mergeMapaUiTexts,\n} from \"../i18n/mapa-ui-texts\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class MapaI18nService {\n private readonly injector = inject(Injector);\n private readonly textsState = signal<MapaUiTexts>(mergeMapaUiTexts());\n\n readonly textsSignal = this.textsState.asReadonly();\n readonly texts$ = toObservable(this.textsSignal, { injector: this.injector });\n\n constructor(\n @Optional() @Inject(MAPA_UI_TEXTS) customTexts: PartialMapaUiTexts | null\n ) {\n if (customTexts) {\n this.textsState.set(mergeMapaUiTexts(customTexts));\n }\n }\n\n get texts(): MapaUiTexts {\n return this.textsState();\n }\n\n setTexts(texts: PartialMapaUiTexts): void {\n this.textsState.set(mergeMapaUiTexts(texts));\n }\n\n resolveValidationText(\n key: keyof MapaUiTexts[\"validation\"],\n context?: ValidationMessageContext\n ): string {\n return this.resolveText(this.texts.validation[key], context);\n }\n\n private resolveText(\n value: ValidationTextResolver,\n context?: ValidationMessageContext\n ): string {\n return typeof value === \"function\" ? value(context) : value;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AbstractControl, ValidationErrors } from \"@angular/forms\";\nimport { Errors } from \"../elements/errors\";\nimport { MapaI18nService } from \"./mapa-i18n.service\";\n\ntype ValidationKey =\n | \"required\"\n | \"minlength\"\n | \"maxlength\"\n | \"cpf\"\n | \"cnpj\"\n | \"email\"\n | \"pattern\"\n | \"min\"\n | \"max\";\n\ntype ErrorOverrides = Errors & {\n maxlength?: string;\n minlength?: string;\n};\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ValidationMessageResolverService {\n private readonly errorOrder: ValidationKey[] = [\n \"required\",\n \"minlength\",\n \"maxlength\",\n \"cpf\",\n \"cnpj\",\n \"email\",\n \"pattern\",\n \"min\",\n \"max\",\n ];\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n resolveFirstError(\n control?: AbstractControl | null,\n errors?: Errors\n ): string | null {\n const validationErrors = control?.errors;\n\n if (!validationErrors) {\n return null;\n }\n\n const firstErrorKey = this.errorOrder.find((key) => control?.hasError(key));\n\n if (!firstErrorKey) {\n return null;\n }\n\n return this.resolveErrorMessage(firstErrorKey, validationErrors, errors);\n }\n\n private resolveErrorMessage(\n errorKey: ValidationKey,\n validationErrors: ValidationErrors,\n errors?: Errors\n ): string {\n const errorOverrides = errors as ErrorOverrides | undefined;\n const customMessage = this.getCustomMessage(errorKey, errorOverrides);\n\n if (customMessage) {\n return customMessage;\n }\n\n const errorValue = validationErrors[errorKey];\n\n switch (errorKey) {\n case \"minlength\":\n return this.i18n.resolveValidationText(\"minLength\", errorValue);\n case \"maxlength\":\n return this.i18n.resolveValidationText(\"maxLength\", errorValue);\n case \"min\":\n return this.i18n.resolveValidationText(\"min\", errorValue);\n case \"max\":\n return this.i18n.resolveValidationText(\"max\", errorValue);\n default:\n return this.i18n.resolveValidationText(errorKey);\n }\n }\n\n private getCustomMessage(\n errorKey: ValidationKey,\n errors?: ErrorOverrides\n ): string | undefined {\n if (!errors) {\n return undefined;\n }\n\n switch (errorKey) {\n case \"minlength\":\n return errors.minLength ?? errors.minlength;\n case \"maxlength\":\n return errors.maxLength ?? errors.maxlength;\n default:\n return errors[errorKey];\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { Errors } from \"../../elements/errors\";\nimport { ValidationMessageResolverService } from \"../../services/validation-message-resolver.service\";\n\n@Component({\n selector: \"mapa-form-errors\",\n imports: [CommonModule, MatFormFieldModule],\n templateUrl: \"./form-errors.component.html\"\n})\nexport class MapaFormErrorsComponent {\n @Input() control?: AbstractControl | null;\n @Input() errors?: Errors;\n\n constructor(\n private readonly validationMessageResolver: ValidationMessageResolverService\n ) {}\n\n get message(): string | null {\n return this.validationMessageResolver.resolveFirstError(\n this.control,\n this.errors\n );\n }\n}\n","<span *ngIf=\"message\">\n {{ message }}\n</span>\n","import { AutofillMonitor } from '@angular/cdk/text-field';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n OnInit,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { filter } from 'rxjs/operators';\n\ntype MaskedElement = HTMLInputElement | HTMLTextAreaElement;\n\n/**\n * Máscaras numéricas cujo valor de modelo não é a simples projeção\n * \"texto renderizado menos caracteres especiais\". `separator` ainda altera\n * `NgxMaskService.specialCharacters` em runtime, o que quebra a simetria da\n * comparação feita aqui. Nenhuma delas é produzida por autofill.\n */\nconst SKIPPED_MASK_PREFIXES = ['separator', 'percent'];\n\n/**\n * Mantém o FormControl em sincronia com `input.value` quando o valor foi escrito\n * por algo que não é o usuário: autofill do navegador, gerenciador de senhas ou\n * extensão (geradores de CPF/CNPJ).\n *\n * A NgxMaskDirective é o ControlValueAccessor de todo input com máscara desta\n * biblioteca e só empurra valor para o modelo a partir do seu host listener de\n * `input`. O handler de `blur` chama `onTouch()` mas nunca `onChange()`, e não\n * existe listener de `change`. Um agente externo que atribui `element.value` sem\n * disparar um evento `input` nativo deixa o controle no valor anterior, mantendo\n * o erro `required` na tela até o usuário redigitar o campo.\n *\n * Esta diretiva detecta a divergência e reenvia o evento `input` que faltou,\n * fazendo a NgxMaskDirective analisar, re-renderizar e emitir exatamente como se\n * o usuário tivesse colado o valor. É no-op enquanto DOM e modelo concordam.\n */\n@Directive({\n selector: 'input[mask], textarea[mask]',\n standalone: true,\n exportAs: 'mapaMaskAutofillSync',\n host: {\n '(change)': 'reconcile()',\n '(focusout)': 'reconcile()',\n },\n})\nexport class MapaMaskAutofillSyncDirective implements OnInit {\n /** Permite desligar a reconciliação em um campo específico. */\n @Input({ transform: booleanAttribute }) mapaMaskAutofillSync = true;\n\n private readonly elementRef = inject<ElementRef<MaskedElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly autofillMonitor = inject(AutofillMonitor);\n private readonly maskDirective = inject(NgxMaskDirective, {\n self: true,\n optional: true,\n });\n private readonly maskService = inject(NgxMaskService, {\n self: true,\n optional: true,\n });\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n private reconciling = false;\n\n ngOnInit(): void {\n // monitor() é idempotente por elemento e devolve um Subject compartilhado\n // com o MatInput, que já monitora este mesmo elemento. Nunca chamar\n // stopMonitoring(): ele completa esse Subject e remove o listener de\n // animação para todos os consumidores. O MatInput cuida do teardown.\n this.autofillMonitor\n .monitor(this.elementRef.nativeElement)\n .pipe(\n filter((event) => event.isAutofilled),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.reconcile());\n }\n\n /** Idempotente: não faz nada enquanto DOM e modelo concordam. */\n reconcile(): void {\n if (!this.mapaMaskAutofillSync || this.reconciling) {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n // ngControl.control só existe depois do ngOnChanges da FormControlDirective,\n // por isso é lido aqui e não no construtor.\n const control = this.ngControl?.control;\n\n if (!control || control.disabled || element.readOnly) {\n return;\n }\n\n if (element instanceof HTMLInputElement && element.type === 'number') {\n return;\n }\n\n const mask = this.maskDirective?.mask() ?? '';\n\n if (SKIPPED_MASK_PREFIXES.some((prefix) => mask.startsWith(prefix))) {\n return;\n }\n\n if (this.isInSync(element, control, mask)) {\n return;\n }\n\n const previousValue = control.value;\n\n this.reconciling = true;\n\n try {\n // Reenvia o que o navegador deveria ter emitido. A NgxMaskDirective relê\n // element.value, reaplica a máscara, re-renderiza o campo e empurra o\n // valor pelo seu próprio pipeline de CVA — marcando o controle como dirty\n // e reexecutando todos os validadores.\n element.dispatchEvent(new Event('input', { bubbles: true }));\n\n if (control.value === previousValue) {\n // O evento não moveu o modelo. Acontece com controles criados como\n // { updateOn: 'blur' | 'submit' }, em que o value accessor apenas\n // enfileira a mudança em vez de comitá-la.\n control.setValue(this.toModelValue(element.value, mask));\n control.markAsDirty();\n }\n } finally {\n this.reconciling = false;\n }\n }\n\n private isInSync(\n element: MaskedElement,\n control: AbstractControl,\n mask: string\n ): boolean {\n return (\n this.toComparable(element.value, mask) ===\n this.toComparable(this.stringify(control.value), mask)\n );\n }\n\n /**\n * Sem máscara, o texto renderizado e o valor de modelo são a mesma string. Com\n * máscara eles diferem apenas pelos caracteres especiais, então limpar os dois\n * lados com as regras da própria NgxMaskService vale tanto para\n * `dropSpecialCharacters: true` quanto para `false`.\n */\n private toComparable(value: string, mask: string): string {\n return mask && this.maskService ? this.maskService.removeMask(value) : value;\n }\n\n private toModelValue(domValue: string, mask: string): string {\n return mask && this.maskService && this.maskService.dropSpecialCharacters\n ? this.maskService.removeMask(domValue)\n : domValue;\n }\n\n private stringify(value: unknown): string {\n return value === null || value === undefined ? '' : String(value);\n }\n}\n","import { getIntlLocale, getStoredAppLanguage } from \"mapa-frontend-i18n\";\n\nconst DAY_MONTH_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\nconst MONTH_DAY_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\nconst ISO_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}([T ].*)?$/;\nconst DOCS_LANGUAGE_STORAGE_KEY = \"mapa-library-ui-docs-language\";\n\nexport type MapaDateLocale = \"pt-BR\" | \"en\" | \"es\";\nexport type MapaDateFormat = \"DD/MM/YYYY\" | \"MM/DD/YYYY\";\n\nexport type DateInput = Date | string | number | null | undefined;\n\nfunction isValidDate(date: Date): boolean {\n return !Number.isNaN(date.getTime());\n}\n\nfunction buildUtcDate(\n date: Date,\n dayOffset: number,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number,\n): Date {\n return new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate() + dayOffset,\n hours,\n minutes,\n seconds,\n milliseconds,\n ),\n );\n}\n\nexport function formatDateAsDayMonthYear(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const year = `${date.getFullYear()}`;\n\n return `${day}/${month}/${year}`;\n}\n\nexport function formatDateAsMonthDayYear(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const year = `${date.getFullYear()}`;\n\n return `${month}/${day}/${year}`;\n}\n\nexport function normalizeDateLocale(value: unknown): MapaDateLocale {\n if (typeof value !== \"string\") {\n return \"pt-BR\";\n }\n\n const normalizedValue = value.trim().toLowerCase();\n\n if (normalizedValue.startsWith(\"en\")) {\n return \"en\";\n }\n\n if (normalizedValue.startsWith(\"es\")) {\n return \"es\";\n }\n\n return \"pt-BR\";\n}\n\nfunction getDocsStoredLanguage(): string | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n try {\n return window.localStorage.getItem(DOCS_LANGUAGE_STORAGE_KEY);\n } catch {\n return null;\n }\n}\n\nexport function getActiveDateLocale(): MapaDateLocale {\n return normalizeDateLocale(getDocsStoredLanguage() ?? getStoredAppLanguage());\n}\n\nexport function isMonthFirstDateLocale(locale = getActiveDateLocale()): boolean {\n return normalizeDateLocale(locale) === \"en\";\n}\n\nexport function getActiveDateFormat(locale = getActiveDateLocale()): MapaDateFormat {\n return isMonthFirstDateLocale(locale) ? \"MM/DD/YYYY\" : \"DD/MM/YYYY\";\n}\n\nexport function getDateInputMask(_locale = getActiveDateLocale()): string {\n return \"00/00/0000\";\n}\n\nexport function formatDateForLocale(date: Date, locale = getActiveDateLocale()): string {\n return isMonthFirstDateLocale(locale)\n ? formatDateAsMonthDayYear(date)\n : formatDateAsDayMonthYear(date);\n}\n\nfunction parseOrderedDate(\n value: string,\n pattern: RegExp,\n order: \"day-first\" | \"month-first\"\n): Date | null {\n const match = pattern.exec(value.trim());\n if (!match) {\n return null;\n }\n\n const [, firstValue, secondValue, yearValue] = match;\n const year = Number(yearValue);\n const month = Number(order === \"month-first\" ? firstValue : secondValue);\n const day = Number(order === \"month-first\" ? secondValue : firstValue);\n const parsedDate = new Date(year, month - 1, day);\n\n if (\n parsedDate.getFullYear() !== year ||\n parsedDate.getMonth() !== month - 1 ||\n parsedDate.getDate() !== day\n ) {\n return null;\n }\n\n return parsedDate;\n}\n\nexport function parseLocaleDateValue(\n value: string,\n locale = getActiveDateLocale()\n): Date | null {\n const normalizedLocale = normalizeDateLocale(locale);\n const parsers =\n normalizedLocale === \"en\"\n ? [\n () => parseOrderedDate(value, MONTH_DAY_YEAR_PATTERN, \"month-first\"),\n () => parseOrderedDate(value, DAY_MONTH_YEAR_PATTERN, \"day-first\"),\n ]\n : [\n () => parseOrderedDate(value, DAY_MONTH_YEAR_PATTERN, \"day-first\"),\n () => parseOrderedDate(value, MONTH_DAY_YEAR_PATTERN, \"month-first\"),\n ];\n\n for (const parse of parsers) {\n const parsedDate = parse();\n if (parsedDate) {\n return parsedDate;\n }\n }\n\n return null;\n}\n\nexport function parseDateValue(\n value: unknown,\n locale = getActiveDateLocale()\n): Date | null {\n if (value instanceof Date) {\n return isValidDate(value) ? new Date(value.getTime()) : null;\n }\n\n if (typeof value === \"number\") {\n const parsedDate = new Date(value);\n return isValidDate(parsedDate) ? parsedDate : null;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n const localeDate = parseLocaleDateValue(trimmedValue, locale);\n if (localeDate) {\n return localeDate;\n }\n\n if (DAY_MONTH_YEAR_PATTERN.test(trimmedValue) || MONTH_DAY_YEAR_PATTERN.test(trimmedValue)) {\n return null;\n }\n\n const parsedDate = new Date(trimmedValue);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\n/**\n * Parse estrito para o texto de um campo de data mascarado.\n *\n * Diferente de `parseDateValue`, não cai em `new Date(string)` para qualquer\n * entrada. O motor de datas do V8 aceita fragmentos numéricos e devolve datas\n * inventadas — `\"2\"` vira 01/02/2001 e `\"251220\"` vira o ano 251220 —, o que\n * fazia os datepickers moverem o calendário a cada tecla enquanto o usuário\n * ainda estava digitando.\n *\n * Aceita apenas uma data completa no formato do locale ativo (com validação de\n * faixa de dia/mês) ou uma data ISO-8601, para não quebrar valores vindos de\n * API que o consumidor grave direto no controle.\n */\nexport function parseDateFieldValue(\n value: unknown,\n locale = getActiveDateLocale()\n): Date | null {\n if (value instanceof Date || typeof value === \"number\") {\n return parseDateValue(value, locale);\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n const localeDate = parseLocaleDateValue(trimmedValue, locale);\n if (localeDate) {\n return localeDate;\n }\n\n return ISO_DATE_PATTERN.test(trimmedValue)\n ? parseDateValue(trimmedValue, locale)\n : null;\n}\n\nexport function isDateValue(value: unknown): boolean {\n return parseDateValue(value) !== null;\n}\n\nexport function parseBrazilianDate(value: string): Date | null {\n return parseOrderedDate(value, DAY_MONTH_YEAR_PATTERN, \"day-first\");\n}\n\nexport function normalizeDateInput(value: DateInput): Date | null {\n return parseDateValue(value);\n}\n\nexport function formatBrazilianDate(value: DateInput): string {\n const date = normalizeDateInput(value);\n return date ? formatDateAsDayMonthYear(date) : \"\";\n}\n\nexport function addDays(date: Date, days: number): Date {\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + days);\n return nextDate;\n}\n\nexport type LocaleDateStyle = \"short\" | \"medium\" | \"long\" | \"full\";\n\nexport function formatLocaleDate(\n value: DateInput,\n dateStyle: LocaleDateStyle = \"short\",\n): string {\n const date = normalizeDateInput(value);\n if (!date) {\n return \"\";\n }\n\n return new Intl.DateTimeFormat(getIntlLocale(getActiveDateLocale()), {\n dateStyle,\n }).format(date);\n}\n\nexport function formatLocaleDateTime(\n value: DateInput,\n options: { dateStyle?: LocaleDateStyle; timeStyle?: LocaleDateStyle } = {},\n): string {\n const date = normalizeDateInput(value);\n if (!date) {\n return \"\";\n }\n\n const { dateStyle = \"short\", timeStyle = \"short\" } = options;\n\n return new Intl.DateTimeFormat(getIntlLocale(getActiveDateLocale()), {\n dateStyle,\n timeStyle,\n }).format(date);\n}\n\nexport function getDefaultDateRange(days = 60): {\n startDate: string;\n endDate: string;\n} {\n const today = new Date();\n\n return {\n startDate: formatBrazilianDate(addDays(today, -days)),\n endDate: formatBrazilianDate(today),\n };\n}\n\nexport function getRelativeDateRange(daysBack: number): {\n startDate: Date;\n endDate: Date;\n} {\n const endDate = new Date();\n endDate.setHours(23, 59, 59, 999);\n\n const startDate = new Date();\n startDate.setHours(0, 0, 0, 0);\n startDate.setDate(startDate.getDate() - daysBack);\n\n return { startDate, endDate };\n}\n\nexport function toUtcRangeStartIso(value: DateInput): string | undefined {\n const date = normalizeDateInput(value);\n return date ? buildUtcDate(date, 0, 3, 0, 0, 0).toISOString() : undefined;\n}\n\nexport function toUtcRangeEndIso(value: DateInput): string | undefined {\n const date = normalizeDateInput(value);\n return date ? buildUtcDate(date, 1, 2, 59, 59, 999).toISOString() : undefined;\n}\n\nexport function toUtcDayExclusiveEndIso(value: DateInput): string | undefined {\n const date = normalizeDateInput(value);\n return date ? buildUtcDate(date, 1, 3, 0, 0, 0).toISOString() : undefined;\n}\n","import { Injectable, effect, inject, signal } from \"@angular/core\";\nimport { MapaDateLocale, getActiveDateLocale } from \"../utils/date.util\";\nimport { MapaI18nService } from \"./mapa-i18n.service\";\n\n/**\n * Locale de data ativo exposto como sinal.\n *\n * `getActiveDateLocale()` lê do localStorage, que não é reativo. Em vez de\n * consultar o valor a cada ciclo de change detection, observamos o\n * `textsSignal` do `MapaI18nService`: toda troca de idioma do ecossistema\n * passa por `setTexts()`. Como effects do Angular são agendados e não\n * síncronos, quando o corpo do effect roda a gravação no localStorage feita\n * logo após o `setTexts()` já aconteceu.\n *\n * Root-provided de propósito: um effect para toda a aplicação em vez de um por\n * instância de datepicker.\n */\n@Injectable({ providedIn: \"root\" })\nexport class MapaDateLocaleService {\n private readonly i18n = inject(MapaI18nService);\n private readonly localeState = signal<MapaDateLocale>(getActiveDateLocale());\n\n readonly localeSignal = this.localeState.asReadonly();\n\n constructor() {\n effect(() => {\n this.i18n.textsSignal();\n this.refresh();\n });\n }\n\n /**\n * Relê o locale do storage. Cinto de segurança para consumidores que trocam\n * o idioma sem passar por `setTexts()`.\n */\n refresh(): void {\n const nextLocale = getActiveDateLocale();\n\n if (this.localeState() !== nextLocale) {\n this.localeState.set(nextLocale);\n }\n }\n}\n","import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output,\n ViewChild,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\nimport { DatepickerValue, NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { MapaMaskAutofillSyncDirective } from '../../../core/directives/mapa-mask-autofill-sync.directive';\nimport {\n Datepicker,\n DatepickerMode,\n DatepickerPreset,\n} from '../../../core/elements/datepicker';\nimport { MapaDateLocaleService } from '../../../core/services/mapa-date-locale.service';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\nimport {\n MapaDateLocale,\n formatDateForLocale,\n getActiveDateFormat,\n getDateInputMask,\n getRelativeDateRange,\n parseDateFieldValue,\n parseDateValue,\n} from '../../../core/utils/date.util';\n\nexport interface MapaDatepickerRangeValue {\n startDate: string | null;\n endDate: string | null;\n}\n\n/** @deprecated Use `MapaDatepickerRangeValue`. */\nexport type MapaDatepickerRangeControlValue = MapaDatepickerRangeValue;\n\n/** @deprecated Use `FormGroup`. */\nexport type MapaDatepickerRangeFormGroup = FormGroup;\n\nexport type MapaDatepickerControlValue =\n string | MapaDatepickerRangeValue | string[] | null;\n\ninterface MapaDatepickerDisplayValue {\n startDate: string | null;\n endDate: string | null;\n}\n\n/** Preset já resolvido em datas concretas, pronto para o dropdown. */\nexport interface MapaDatepickerPresetEntry {\n label: string;\n range: [Date, Date];\n}\n\n/**\n * Fallback do gatilho de presets. Literal como o `aria-label=\"Limpar\"` que o\n * v1 e o `mapa-dropdown` já embarcam — `MapaUiTextGroups[\"datepicker\"]` vem do\n * pacote externo `mapa-frontend-i18n`, então uma chave nova exigiria publicar\n * aquele pacote antes. Consumidores sobrescrevem via `element.presetsLabel`.\n */\nconst DEFAULT_PRESETS_LABEL = 'Período';\n\n/**\n * O `Intl` interno do ngxsmk trabalha melhor com tags BCP47 completas — `en`\n * sozinho deixa a ordem dia/mês ambígua para ele.\n */\nconst NGXSMK_LOCALE_BY_MAPA_LOCALE: Record<MapaDateLocale, string> = {\n 'pt-BR': 'pt-BR',\n en: 'en-US',\n es: 'es-ES',\n};\n\n@Component({\n selector: 'mapa-datepicker, mapa-datepicker-range',\n host: {\n '[class.mapa-datepicker--range]': 'mode() === \"range\"',\n },\n standalone: true,\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n NgxMaskDirective,\n MapaMaskAutofillSyncDirective,\n MatFormFieldModule,\n MatInputModule,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n NgxsmkDatepickerComponent,\n MapaFormErrorsComponent,\n ],\n providers: [provideNgxMask()],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapaDatepicker implements OnInit {\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly i18n = inject(MapaI18nService);\n private readonly dateLocale = inject(MapaDateLocaleService);\n\n @Input({ required: true }) formGroup!: FormGroup;\n @Input({ required: true }) element!: Datepicker;\n @Output() openedChange = new EventEmitter<boolean>();\n\n @ViewChild('toggleButton')\n private toggleButton?: ElementRef<HTMLButtonElement>;\n\n @ViewChild(NgxsmkDatepickerComponent)\n private picker?: NgxsmkDatepickerComponent;\n\n /** Controle do consumidor, resolvido por `element.key` no `ngOnInit`. */\n control!: FormControl<MapaDatepickerControlValue>;\n\n /** Camada visível: strings mascaradas. `single` usa apenas `startDate`. */\n readonly formDisplay = new FormGroup({\n startDate: new FormControl<string | null>(null),\n endDate: new FormControl<string | null>(null),\n });\n\n /** Camada do calendário: `Date`, no formato que o ngxsmk consome. */\n readonly pickerValue = signal<DatepickerValue>(null);\n\n private readonly isOpenState = signal(false);\n private readonly isPresetsOpenState = signal(false);\n private localeState: MapaDateLocale | null = null;\n private syncing = false;\n private presetsCache?: {\n source: DatepickerPreset[] | undefined;\n entries: MapaDatepickerPresetEntry[];\n };\n\n readonly overlayPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n /**\n * Referências estáveis: com OnPush, devolver um literal novo a cada ciclo\n * marcaria o input do ngxsmk como alterado em toda change detection.\n */\n readonly ngxsmkClasses = { inputGroup: 'mapa-datepicker__ngxsmk-group' };\n private readonly emptyDisabledDates: (string | Date)[] = [];\n private readonly neverInvalid = (): boolean => false;\n\n private readonly localeSync = effect(() => {\n this.handleLocaleChange(this.dateLocale.localeSignal());\n });\n\n ngOnInit(): void {\n if (!this.element?.key) {\n throw new Error('mapa-datepicker: element.key é obrigatório.');\n }\n\n const control = this.formGroup?.get(this.element.key);\n\n if (!control) {\n throw new Error(\n `mapa-datepicker: controle \"${this.element.key}\" não encontrado no formGroup.`,\n );\n }\n\n this.control = control as FormControl<MapaDatepickerControlValue>;\n this.applyExternal(this.control.value);\n\n this.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => this.applyExternal(value));\n\n this.control.statusChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.cdr.markForCheck());\n\n this.formDisplay.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleDisplayChange());\n }\n\n // --- estado exposto ao template -----------------------------------------\n\n mode(): DatepickerMode {\n return this.element?.mode ?? 'single';\n }\n\n isOpen(): boolean {\n return this.isOpenState();\n }\n\n isDisabled(): boolean {\n return !!this.control?.disabled;\n }\n\n isReadonly(): boolean {\n return !!this.element?.readonly;\n }\n\n hasValue(): boolean {\n return this.serializeExternal(this.control?.value) !== '';\n }\n\n showClear(): boolean {\n return this.hasValue() && !this.isDisabled() && !!this.element.clearValue;\n }\n\n shouldShowError(): boolean {\n return (\n !!this.control &&\n this.control.invalid &&\n (this.control.dirty || this.control.touched)\n );\n }\n\n /** Texto somente leitura do modo `multiple` — evita chaves novas de i18n. */\n selectedLabel(): string {\n const value = this.control?.value;\n return Array.isArray(value) ? value.join(', ') : '';\n }\n\n mask(): string {\n return this.element.mask ?? getDateInputMask(this.locale());\n }\n\n singlePlaceholder(): string {\n return this.element.placeholder || this.element.label || '';\n }\n\n get startDatePlaceholder(): string {\n return this.i18n.textsSignal().datepicker.startDatePlaceholder;\n }\n\n get endDatePlaceholder(): string {\n return this.i18n.textsSignal().datepicker.endDatePlaceholder;\n }\n\n // --- entradas repassadas ao ngxsmk --------------------------------------\n\n ngxsmkLocale(): string {\n return NGXSMK_LOCALE_BY_MAPA_LOCALE[this.locale()];\n }\n\n displayFormat(): string {\n return getActiveDateFormat(this.locale());\n }\n\n minDate(): Date | null {\n return parseDateValue(this.element.minDate);\n }\n\n maxDate(): Date | null {\n return parseDateValue(this.element.maxDate);\n }\n\n disabledDates(): (string | Date)[] {\n return this.element.disabledDates ?? this.emptyDisabledDates;\n }\n\n isInvalidDate(): (date: Date) => boolean {\n return this.element.isInvalidDate ?? this.neverInvalid;\n }\n\n /**\n * Um mês por padrão em todos os modos, para o painel ficar na largura do\n * campo. Dois meses são opt-in via `element.calendars`.\n */\n calendars(): number {\n return this.element.calendars ?? 1;\n }\n\n weekStart(): number | null {\n return this.element.weekStart;\n }\n\n /**\n * Presets já resolvidos em datas. Memoizado pela referência de\n * `element.presets` para não reconstruir `Date`s a cada change detection.\n *\n * Alimenta o nosso dropdown, não o painel nativo do ngxsmk: o layout dele é\n * ditado por media queries duplicadas que nenhum input ou variável controla\n * (coluna lateral acima de 992px, cards de 45px acima de 1024px), e o input\n * `classes` do componente de presets é morto — o template dele nunca o lê.\n */\n presetList(): MapaDatepickerPresetEntry[] {\n const presets = this.element.presets;\n const cache = this.presetsCache;\n\n if (cache && cache.source === presets) {\n return cache.entries;\n }\n\n const entries = this.buildPresetEntries(presets);\n this.presetsCache = { source: presets, entries };\n\n return entries;\n }\n\n hasPresets(): boolean {\n return this.presetList().length > 0;\n }\n\n isPresetsOpen(): boolean {\n return this.isPresetsOpenState();\n }\n\n isPresetActive(entry: MapaDatepickerPresetEntry): boolean {\n const locale = this.locale();\n\n return (\n this.serializeExternal({\n startDate: formatDateForLocale(entry.range[0], locale),\n endDate: formatDateForLocale(entry.range[1], locale),\n }) === this.serializeExternal(this.control?.value)\n );\n }\n\n presetsTriggerLabel(): string {\n const active = this.presetList().find((entry) =>\n this.isPresetActive(entry),\n );\n\n return active?.label ?? this.element.presetsLabel ?? DEFAULT_PRESETS_LABEL;\n }\n\n togglePresets(): void {\n this.isPresetsOpenState.update((isOpen) => !isOpen);\n }\n\n closePresets(): void {\n if (this.isPresetsOpenState()) {\n this.isPresetsOpenState.set(false);\n this.cdr.markForCheck();\n }\n }\n\n applyPreset(entry: MapaDatepickerPresetEntry): void {\n this.closePresets();\n\n if (this.isDisabled()) {\n return;\n }\n\n // `selectRange` reposiciona o mês visível para o início da faixa e emite\n // `valueChange` uma única vez, caindo no `handlePickerValue`. Em modo\n // inline ele não fecha nada — quem fecha continua sendo o nosso overlay.\n if (this.picker) {\n this.picker.selectRange([entry.range[0], entry.range[1]]);\n return;\n }\n\n this.handlePickerValue({ start: entry.range[0], end: entry.range[1] });\n }\n\n // --- interação ------------------------------------------------------------\n\n toggleCalendar(): void {\n if (this.isDisabled() || this.isReadonly()) {\n return;\n }\n\n const isOpening = !this.isOpenState();\n\n if (isOpening) {\n this.dateLocale.refresh();\n }\n\n this.setOpenState(isOpening);\n\n if (!isOpening) {\n this.control.markAsTouched();\n }\n }\n\n closeCalendar(): void {\n if (this.isOpenState()) {\n this.setOpenState(false);\n }\n\n this.control?.markAsTouched();\n }\n\n handleOverlayOutsideClick(event: Event): void {\n if (this.toggleButton?.nativeElement.contains(event.target as Node)) {\n return;\n }\n\n this.closeCalendar();\n }\n\n @HostListener('document:keydown.escape')\n handleEscape(): void {\n // Dois estágios: o Escape fecha primeiro o dropdown de presets, e só o\n // segundo fecha o calendário.\n if (this.isPresetsOpenState()) {\n this.closePresets();\n return;\n }\n\n if (this.isOpenState()) {\n this.closeCalendar();\n this.toggleButton?.nativeElement.focus();\n }\n }\n\n /** Seleção vinda do calendário. */\n handlePickerValue(value: DatepickerValue): void {\n const next = this.toExternal(value, this.locale());\n\n this.closePresets();\n this.patchDisplay(this.toDisplayValue(next));\n this.pickerValue.set(value);\n\n // Um range pela metade nunca chega ao consumidor: o ngxsmk emite\n // `{ start, end: null }` já no primeiro clique.\n if (this.mode() === 'range' && !this.isCompleteRange(next)) {\n this.cdr.markForCheck();\n return;\n }\n\n this.emitExternal(next);\n\n if (this.element.closeOnSelect && this.shouldCloseAfterSelect(next)) {\n this.closeCalendar();\n }\n }\n\n clear(event?: Event): void {\n event?.stopPropagation();\n\n if (this.isDisabled()) {\n return;\n }\n\n this.patchDisplay({ startDate: null, endDate: null });\n this.pickerValue.set(null);\n this.emitExternal(this.emptyValue());\n this.control.markAsTouched();\n }\n\n // --- sincronização --------------------------------------------------------\n\n private locale(): MapaDateLocale {\n return this.localeState ?? this.dateLocale.localeSignal();\n }\n\n private handleLocaleChange(locale: MapaDateLocale): void {\n const previousLocale = this.localeState;\n this.localeState = locale;\n\n // O effect roda uma primeira vez antes de haver troca real de idioma, e\n // pode rodar antes do ngOnInit resolver o controle.\n if (!this.control || previousLocale === null || previousLocale === locale) {\n this.cdr.markForCheck();\n return;\n }\n\n const picker = this.pickerValue();\n\n // Reformatamos a partir das datas já resolvidas, nunca reinterpretando o\n // texto: assim um valor meio digitado ou inválido sobrevive à troca.\n if (!picker) {\n this.cdr.markForCheck();\n return;\n }\n\n const next = this.toExternal(picker, locale);\n this.patchDisplay(this.toDisplayValue(next));\n this.emitExternal(next);\n }\n\n /** Digitação no campo mascarado. Passa o texto adiante verbatim. */\n private handleDisplayChange(): void {\n if (this.syncing || this.mode() === 'multiple' || !this.control) {\n return;\n }\n\n const display = this.formDisplay.getRawValue();\n const next: MapaDatepickerControlValue =\n this.mode() === 'range'\n ? {\n startDate: display.startDate || null,\n endDate: display.endDate || null,\n }\n : (display.startDate ?? '');\n\n this.pickerValue.set(this.toPickerValue(next, this.locale()));\n this.emitExternal(next);\n }\n\n private applyExternal(value: MapaDatepickerControlValue): void {\n if (this.syncing) {\n return;\n }\n\n const display = this.toDisplayValue(value);\n const current = this.formDisplay.getRawValue();\n\n if (\n current.startDate !== display.startDate ||\n current.endDate !== display.endDate\n ) {\n this.patchDisplay(display);\n }\n\n this.pickerValue.set(this.toPickerValue(value, this.locale()));\n this.cdr.markForCheck();\n }\n\n private emitExternal(next: MapaDatepickerControlValue): void {\n // Comparação pela string formatada, não por `Date`: presets devolvem o fim\n // do range às 23:59:59.999 e um guard por `getTime()` reemitiria em loop.\n if (\n this.serializeExternal(this.control.value) ===\n this.serializeExternal(next)\n ) {\n this.cdr.markForCheck();\n return;\n }\n\n this.syncing = true;\n\n try {\n this.control.patchValue(next);\n this.control.markAsDirty();\n } finally {\n this.syncing = false;\n }\n\n this.cdr.markForCheck();\n }\n\n private patchDisplay(display: MapaDatepickerDisplayValue): void {\n this.syncing = true;\n\n try {\n this.formDisplay.patchValue(display, { emitEvent: false });\n } finally {\n this.syncing = false;\n }\n }\n\n // --- conversões -----------------------------------------------------------\n\n private toPickerValue(\n value: MapaDatepickerControlValue,\n locale: MapaDateLocale,\n ): DatepickerValue {\n switch (this.mode()) {\n case 'range': {\n const range = this.asRangeValue(value);\n const start = parseDateFieldValue(range.startDate, locale);\n const end = parseDateFieldValue(range.endDate, locale);\n\n return start || end ? { start, end } : null;\n }\n case 'multiple': {\n const dates = (Array.isArray(value) ? value : [])\n .map((item) => parseDateFieldValue(item, locale))\n .filter((date): date is Date => !!date);\n\n return dates.length ? dates : null;\n }\n default:\n return parseDateFieldValue(value, locale);\n }\n }\n\n private toExternal(\n value: DatepickerValue,\n locale: MapaDateLocale,\n ): MapaDatepickerControlValue {\n switch (this.mode()) {\n case 'range': {\n const range = this.asPickerRange(value);\n\n return {\n startDate: range.start\n ? formatDateForLocale(range.start, locale)\n : null,\n endDate: range.end ? formatDateForLocale(range.end, locale) : null,\n };\n }\n case 'multiple':\n return (Array.isArray(value) ? value : []).map((date) =>\n formatDateForLocale(date, locale),\n );\n default:\n return value instanceof Date ? formatDateForLocale(value, locale) : '';\n }\n }\n\n private toDisplayValue(\n value: MapaDatepickerControlValue,\n ): MapaDatepickerDisplayValue {\n switch (this.mode()) {\n case 'range': {\n const range = this.asRangeValue(value);\n return { startDate: range.startDate, endDate: range.endDate };\n }\n case 'multiple':\n return { startDate: null, endDate: null };\n default:\n return {\n startDate: typeof value === 'string' ? value : '',\n endDate: null,\n };\n }\n }\n\n /** Forma canônica usada só para comparar — nunca é gravada no controle. */\n private serializeExternal(value: unknown): string {\n switch (this.mode()) {\n case 'range': {\n const range = this.asRangeValue(value as MapaDatepickerControlValue);\n const serialized = `${range.startDate ?? ''}|${range.endDate ?? ''}`;\n return serialized === '|' ? '' : serialized;\n }\n case 'multiple':\n return (Array.isArray(value) ? value : []).join('|');\n default:\n return typeof value === 'string' ? value : '';\n }\n }\n\n private emptyValue(): MapaDatepickerControlValue {\n switch (this.mode()) {\n case 'range':\n return { startDate: null, endDate: null };\n case 'multiple':\n return [];\n default:\n return '';\n }\n }\n\n private asRangeValue(\n value: MapaDatepickerControlValue,\n ): MapaDatepickerRangeValue {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return {\n startDate: value.startDate ?? null,\n endDate: value.endDate ?? null,\n };\n }\n\n return { startDate: null, endDate: null };\n }\n\n private asPickerRange(value: DatepickerValue): {\n start: Date | null;\n end: Date | null;\n } {\n if (value && !Array.isArray(value) && !(value instanceof Date)) {\n return { start: value.start ?? null, end: value.end ?? null };\n }\n\n return { start: null, end: null };\n }\n\n private isCompleteRange(value: MapaDatepickerControlValue): boolean {\n const range = this.asRangeValue(value);\n return !!range.startDate && !!range.endDate;\n }\n\n private shouldCloseAfterSelect(value: MapaDatepickerControlValue): boolean {\n switch (this.mode()) {\n case 'multiple':\n return false;\n case 'range':\n return this.isCompleteRange(value);\n default:\n return typeof value === 'string' && !!value;\n }\n }\n\n private buildPresetEntries(\n presets: DatepickerPreset[] | undefined,\n ): MapaDatepickerPresetEntry[] {\n if (this.mode() !== 'range' || !presets?.length) {\n return [];\n }\n\n return presets.map((preset) => ({\n label: preset.label,\n range: this.resolvePreset(preset),\n }));\n }\n\n private resolvePreset(preset: DatepickerPreset): [Date, Date] {\n if (preset.startDate && preset.endDate) {\n return [preset.startDate, preset.endDate];\n }\n\n // Atenção: `getRelativeDateRange` devolve o fim às 23:59:59.999. Só o\n // guard por string formatada de `emitExternal` tolera isso — um guard por\n // `getTime()` reemitiria em loop.\n const { startDate, endDate } = getRelativeDateRange(preset.daysBack ?? 0);\n\n return [startDate, endDate];\n }\n\n private setOpenState(isOpen: boolean): void {\n this.isOpenState.set(isOpen);\n this.isPresetsOpenState.set(false);\n this.openedChange.emit(isOpen);\n }\n}\n\n/** @deprecated Use `MapaDatepicker` with a `Datepicker` in range mode. */\nexport { MapaDatepicker as MapaDatepickerRange };\n\n/** @deprecated Use `MapaDatepicker`. */\nexport type MapaDatepickerRangeComponent = MapaDatepicker;\n","@if (element && formGroup) {\n <div\n class=\"mapa-datepicker\"\n [class.mapa-datepicker--open]=\"isOpen()\"\n [class.mapa-datepicker--disabled]=\"isDisabled()\"\n >\n @if (element.label) {\n <label class=\"mapa-datepicker__label\" [attr.for]=\"element.key || null\">\n {{ element.label }}\n </label>\n }\n\n <!-- A origem do overlay precisa ficar fora do @if: referências de template\n não atravessam blocos de controle de fluxo. -->\n <div\n class=\"mapa-datepicker__origin\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n [formGroup]=\"formDisplay\"\n >\n @if (mode() === \"range\") {\n <div class=\"mapa-datepicker__range\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker__range-start\"\n >\n <input\n matInput\n formControlName=\"startDate\"\n [attr.id]=\"element.key || null\"\n [placeholder]=\"startDatePlaceholder\"\n [mask]=\"mask()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isReadonly()\"\n />\n </mat-form-field>\n\n <span class=\"mapa-datepicker__divider\">–</span>\n\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker__range-end\"\n >\n <input\n matInput\n formControlName=\"endDate\"\n [placeholder]=\"endDatePlaceholder\"\n [mask]=\"mask()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isReadonly()\"\n />\n\n @if (showClear()) {\n <button\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__clear\"\n aria-label=\"Limpar\"\n tabindex=\"-1\"\n (click)=\"clear($event)\"\n >\n ×\n </button>\n }\n\n <button\n #toggleButton\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__toggle\"\n [disabled]=\"isDisabled() || isReadonly()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"dialog\"\n aria-label=\"Abrir calendário\"\n (click)=\"toggleCalendar()\"\n >\n <ng-container [ngTemplateOutlet]=\"calendarIcon\"></ng-container>\n </button>\n </mat-form-field>\n </div>\n } @else {\n <div class=\"mapa-datepicker__field\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n @if (mode() === \"multiple\") {\n <input\n matInput\n [attr.id]=\"element.key || null\"\n [value]=\"selectedLabel()\"\n [placeholder]=\"singlePlaceholder()\"\n readonly\n (click)=\"toggleCalendar()\"\n />\n } @else {\n <input\n matInput\n formControlName=\"startDate\"\n [attr.id]=\"element.key || null\"\n [placeholder]=\"singlePlaceholder()\"\n [mask]=\"mask()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isReadonly()\"\n />\n }\n\n @if (showClear()) {\n <button\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__clear\"\n aria-label=\"Limpar\"\n tabindex=\"-1\"\n (click)=\"clear($event)\"\n >\n ×\n </button>\n }\n\n <button\n #toggleButton\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__toggle\"\n [disabled]=\"isDisabled() || isReadonly()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"dialog\"\n aria-label=\"Abrir calendário\"\n (click)=\"toggleCalendar()\"\n >\n <ng-container [ngTemplateOutlet]=\"calendarIcon\"></ng-container>\n </button>\n </mat-form-field>\n </div>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n cdkConnectedOverlayPanelClass=\"mapa-datepicker__overlay-pane\"\n (overlayOutsideClick)=\"handleOverlayOutsideClick($event)\"\n >\n <div class=\"mapa-datepicker__panel\" role=\"dialog\">\n @if (hasPresets()) {\n <div class=\"mapa-datepicker__presets\">\n <button\n type=\"button\"\n class=\"mapa-datepicker__presets-trigger\"\n [class.mapa-datepicker__presets-trigger--open]=\"isPresetsOpen()\"\n [attr.aria-expanded]=\"isPresetsOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"togglePresets()\"\n >\n <span>{{ presetsTriggerLabel() }}</span>\n <svg\n class=\"mapa-datepicker__presets-chevron\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M6 9l6 6 6-6\"></path>\n </svg>\n </button>\n\n @if (isPresetsOpen()) {\n <ul class=\"mapa-datepicker__presets-list\" role=\"listbox\">\n @for (preset of presetList(); track preset.label) {\n <li role=\"option\" [attr.aria-selected]=\"isPresetActive(preset)\">\n <button\n type=\"button\"\n class=\"mapa-datepicker__presets-option\"\n [class.mapa-datepicker__presets-option--active]=\"\n isPresetActive(preset)\n \"\n (click)=\"applyPreset(preset)\"\n >\n {{ preset.label }}\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n <ngxsmk-datepicker\n [inline]=\"true\"\n [mode]=\"mode()\"\n [value]=\"pickerValue()\"\n [locale]=\"ngxsmkLocale()\"\n [displayFormat]=\"displayFormat()\"\n [theme]=\"'light'\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabledDates]=\"disabledDates()\"\n [isInvalidDate]=\"isInvalidDate()\"\n [showRanges]=\"false\"\n [calendars]=\"calendars()\"\n [weekStart]=\"weekStart()\"\n [showCalendarButton]=\"false\"\n [classes]=\"ngxsmkClasses\"\n (valueChange)=\"handlePickerValue($event)\"\n ></ngxsmk-datepicker>\n </div>\n </ng-template>\n\n @if (shouldShowError()) {\n <p class=\"mapa-datepicker__error\">\n <mapa-form-errors\n [control]=\"control\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </p>\n } @else if (element.hint) {\n <p class=\"mapa-datepicker__hint\">{{ element.hint }}</p>\n }\n </div>\n}\n\n<ng-template #calendarIcon>\n <svg\n class=\"mapa-datepicker__icon\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"3\"></rect>\n <path d=\"M3 10h18M8 3v4M16 3v4\"></path>\n </svg>\n</ng-template>\n","/*\n * Public API Surface of mapa-library-ui datepicker\n */\n\nexport * from './src/datepicker.component';\n","/*\n * Public API Surface of mapa-library-ui datepicker\n */\n\nexport * from './lib/core/elements/element-base';\nexport * from './lib/core/elements/datepicker';\nexport * from './lib/core/elements/errors';\n\nexport * from './lib/components/datepicker/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './datepicker';\n"],"names":["i1.MapaI18nService","i1.ValidationMessageResolverService","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapa-library-ui-src-lib-components-datepicker.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/elements/element-base.ts","../../../projects/mapa-library-ui/src/lib/core/elements/datepicker.ts","../../../projects/mapa-library-ui/src/lib/core/i18n/mapa-ui-texts.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-i18n.service.ts","../../../projects/mapa-library-ui/src/lib/core/services/validation-message-resolver.service.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.html","../../../projects/mapa-library-ui/src/lib/core/directives/mapa-mask-autofill-sync.directive.ts","../../../projects/mapa-library-ui/src/lib/core/utils/date.util.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-date-locale.service.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.html","../../../projects/mapa-library-ui/src/lib/components/datepicker/public-api.ts","../../../projects/mapa-library-ui/src/datepicker.ts","../../../projects/mapa-library-ui/src/mapa-library-ui-src-lib-components-datepicker.ts"],"sourcesContent":["import { EventEmitter } from \"@angular/core\";\nimport { ElementGroup } from \"../interfaces/element-group.interface\";\nimport { ElementOption, ElementTreeNode } from \"../interfaces/element-option.interface\";\nimport { ActionButton } from \"./action-button\";\nimport { ElementSearch } from \"./element-search\";\nimport { Errors } from \"./errors\";\nexport interface Status {\n label: string;\n}\n\nexport class ElementBase {\n value: string;\n key: string;\n label: string;\n required: boolean;\n order: number;\n controlType: string;\n type: string;\n placeholder?: string;\n readonly: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options: ElementOption[] | ElementGroup[];\n tree: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength!: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n\n constructor(\n options: {\n value?: string;\n key?: string;\n label?: string;\n required?: boolean;\n order?: number;\n controlType?: string;\n type?: string;\n placeholder?: string;\n readonly?: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options?: ElementOption[] | ElementGroup[];\n tree?: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength?: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n } = {}\n ) {\n this.value = options.value || \"\";\n this.key = options.key || \"\";\n this.label = options.label || \"\";\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType || \"\";\n this.type = options.type || \"\";\n this.placeholder = options.placeholder || \"\";\n this.readonly = options.readonly || false;\n this.hint = options.hint || \"\";\n this.prefix = options.prefix || \"\";\n this.suffix = options.suffix || \"\";\n this.autosize = options.autosize || false;\n this.autosizeMinWidth = options.autosizeMinWidth || \"212px\";\n this.autosizeMaxWidth = options.autosizeMaxWidth || \"400px\";\n this.autosizeMinRow = options.autosizeMinRow || 2;\n this.autosizeMaxRow = options.autosizeMaxRow || 5;\n this.options = options.options || [];\n this.tree = options.tree || [];\n this.multiple = options.multiple || false;\n this.search = options.search || undefined;\n this.maxLength = options.maxLength || null;\n this.errors = options.errors || undefined;\n this.actionButton = options.actionButton || undefined;\n this.mask = options.mask || undefined;\n this.autocomplete = options.autocomplete || \"\";\n this.clearValue =\n options.clearValue !== undefined ? options.clearValue : true;\n this.minDate = options.minDate || undefined;\n this.maxDate = options.maxDate || undefined;\n this.status = options.status || undefined;\n this.checkParent = options.checkParent || false;\n this.checkChildren = options.checkChildren || false;\n this.openedChange = options.openedChange || undefined;\n }\n}\n","import { ElementBase } from './element-base';\n\nexport type DatepickerMode = 'single' | 'range' | 'multiple';\n\n/**\n * Atalho de período exibido no painel do modo `range`.\n *\n * Use `daysBack` para uma faixa relativa a hoje (resolvida por\n * `getRelativeDateRange`) ou `startDate`/`endDate` para uma faixa fixa. Quando\n * ambos são informados, a faixa fixa prevalece.\n */\nexport interface DatepickerPreset {\n label: string;\n daysBack?: number;\n startDate?: Date;\n endDate?: Date;\n}\n\ntype ElementBaseOptions = NonNullable<\n ConstructorParameters<typeof ElementBase>[0]\n>;\n\nexport interface DatepickerOptions extends ElementBaseOptions {\n mode?: DatepickerMode;\n disabledDates?: (string | Date)[];\n isInvalidDate?: (date: Date) => boolean;\n presets?: DatepickerPreset[];\n presetsLabel?: string;\n calendars?: 1 | 2 | 3;\n weekStart?: number | null;\n closeOnSelect?: boolean;\n}\n\nexport class Datepicker extends ElementBase {\n override controlType = 'datepicker';\n\n mode: DatepickerMode;\n disabledDates?: (string | Date)[];\n isInvalidDate?: (date: Date) => boolean;\n presets?: DatepickerPreset[];\n /** Rótulo do gatilho de presets enquanto nenhum atalho está ativo. */\n presetsLabel?: string;\n /** `undefined` resolve para 2 no modo `range` e 1 nos demais. */\n calendars?: 1 | 2 | 3;\n weekStart: number | null;\n closeOnSelect: boolean;\n\n constructor(options: DatepickerOptions = {}) {\n super(options);\n this.mode = options.mode || 'single';\n this.disabledDates = options.disabledDates || undefined;\n this.isInvalidDate = options.isInvalidDate || undefined;\n this.presets = options.presets || undefined;\n this.presetsLabel = options.presetsLabel || undefined;\n this.calendars = options.calendars || undefined;\n this.weekStart = options.weekStart ?? null;\n this.closeOnSelect =\n options.closeOnSelect !== undefined ? options.closeOnSelect : true;\n }\n}\n\n/**\n * @deprecated Use `Datepicker` with `mode: \"range\"`.\n * Kept as a compatibility bridge for 2.x consumers.\n */\nexport class DatepickerRange extends Datepicker {\n override controlType = 'datepicker-range';\n\n constructor(options: DatepickerOptions = {}) {\n super({ ...options, mode: 'range' });\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport type {\n MapaUiTextGroups,\n PartialMapaUiTexts,\n ValidationContext,\n ValidationTextResolver,\n} from 'mapa-frontend-i18n';\n\nexport type MapaUiTexts = MapaUiTextGroups;\nexport type ValidationMessageContext = ValidationContext;\nexport type { PartialMapaUiTexts, ValidationTextResolver };\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n 'MAPA_UI_TEXTS',\n);\n\nfunction formatPaginatorRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${safeLength}`;\n}\n\nfunction formatPaginatorShowingRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return 'Mostrando 0 - 0 de 0 item';\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n const itemLabel = safeLength === 1 ? 'item' : 'itens';\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${safeLength} ${itemLabel}`;\n}\n\nconst DEFAULT_MAPA_UI_TEXTS: MapaUiTexts = {\n common: {\n selectAll: 'Selecionar todos',\n retry: 'Tentar novamente',\n },\n filters: {\n clear: 'Limpar filtros',\n submit: 'Filtrar',\n },\n datepicker: {\n startDatePlaceholder: 'Data inicial',\n endDatePlaceholder: 'Data final',\n },\n capability: {\n groupAverageTitle: 'Média geral do grupo',\n individualAverageTitle: 'Média geral do indivíduo',\n conceptTitle: 'Conceito',\n resultTitle: 'Resultado',\n positiveIndicatorsTitle: 'Indicadores positivos',\n negativeIndicatorsTitle: 'Indicadores negativos',\n riskIndicatorsTitle: 'Indicadores de risco',\n precipitationRiskTitle: 'Risco de acidente por precipitação',\n negligenceRiskTitle: 'Risco de acidente por negligência',\n negativeDirectionLabel: 'Direção Negativa |',\n positiveDirectionLabel: 'Direção Positiva |',\n },\n paginator: {\n itemsPerPage: 'Itens por página',\n nextPage: 'Próxima página',\n previousPage: 'Página anterior',\n rangeLabel: formatPaginatorRange,\n showingRangeLabel: formatPaginatorShowingRange,\n },\n warning: {\n lowReliabilityTitle: 'Nível baixo de confiabilidade no(s) teste(s):',\n expirationLimitTitle: 'O prazo de validade do(s) teste(s) está no limite:',\n },\n table: {\n emptyTitle: 'Não foram encontrados resultados',\n emptySubtitle: '',\n loading: 'Carregando resultados',\n errorTitle: 'Não foi possível carregar os resultados.',\n selectAllVisible: 'Selecionar todos os itens desta página',\n selectionColumn: 'Seleção',\n selectRow: 'Selecionar item',\n selectNamedRow: (item: string) => `Selecionar ${item}`,\n },\n validation: {\n cnpj: 'CNPJ inválido',\n cpf: 'CPF inválido',\n email: 'E-mail inválido',\n max: (context?: ValidationContext) =>\n `O valor máximo permitido é ${context?.max ?? ''}`.trim(),\n maxLength: (context?: ValidationContext) =>\n `O máximo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n min: (context?: ValidationContext) =>\n `O valor mínimo permitido é ${context?.min ?? ''}`.trim(),\n minLength: (context?: ValidationContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n pattern: 'Formato inválido',\n required: 'Campo obrigatório',\n },\n};\n\nfunction getDefaultTexts(): MapaUiTexts {\n return DEFAULT_MAPA_UI_TEXTS;\n}\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null,\n): MapaUiTexts {\n const defaults = getDefaultTexts();\n\n return {\n common: { ...defaults.common, ...(customTexts?.common ?? {}) },\n filters: { ...defaults.filters, ...(customTexts?.filters ?? {}) },\n datepicker: { ...defaults.datepicker, ...(customTexts?.datepicker ?? {}) },\n capability: { ...defaults.capability, ...(customTexts?.capability ?? {}) },\n paginator: { ...defaults.paginator, ...(customTexts?.paginator ?? {}) },\n warning: { ...defaults.warning, ...(customTexts?.warning ?? {}) },\n table: { ...defaults.table, ...(customTexts?.table ?? {}) },\n validation: { ...defaults.validation, ...(customTexts?.validation ?? {}) },\n };\n}\n\nexport function provideMapaUiTexts(texts: PartialMapaUiTexts): Provider {\n return {\n provide: MAPA_UI_TEXTS,\n useValue: texts,\n };\n}\n","import { Inject, Injectable, Injector, Optional, inject, signal } from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport {\n MAPA_UI_TEXTS,\n MapaUiTexts,\n PartialMapaUiTexts,\n ValidationMessageContext,\n ValidationTextResolver,\n mergeMapaUiTexts,\n} from \"../i18n/mapa-ui-texts\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class MapaI18nService {\n private readonly injector = inject(Injector);\n private readonly textsState = signal<MapaUiTexts>(mergeMapaUiTexts());\n\n readonly textsSignal = this.textsState.asReadonly();\n readonly texts$ = toObservable(this.textsSignal, { injector: this.injector });\n\n constructor(\n @Optional() @Inject(MAPA_UI_TEXTS) customTexts: PartialMapaUiTexts | null\n ) {\n if (customTexts) {\n this.textsState.set(mergeMapaUiTexts(customTexts));\n }\n }\n\n get texts(): MapaUiTexts {\n return this.textsState();\n }\n\n setTexts(texts: PartialMapaUiTexts): void {\n this.textsState.set(mergeMapaUiTexts(texts));\n }\n\n resolveValidationText(\n key: keyof MapaUiTexts[\"validation\"],\n context?: ValidationMessageContext\n ): string {\n return this.resolveText(this.texts.validation[key], context);\n }\n\n private resolveText(\n value: ValidationTextResolver,\n context?: ValidationMessageContext\n ): string {\n return typeof value === \"function\" ? value(context) : value;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AbstractControl, ValidationErrors } from \"@angular/forms\";\nimport { Errors } from \"../elements/errors\";\nimport { MapaI18nService } from \"./mapa-i18n.service\";\n\ntype ValidationKey =\n | \"required\"\n | \"minlength\"\n | \"maxlength\"\n | \"cpf\"\n | \"cnpj\"\n | \"email\"\n | \"pattern\"\n | \"min\"\n | \"max\";\n\ntype ErrorOverrides = Errors & {\n maxlength?: string;\n minlength?: string;\n};\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ValidationMessageResolverService {\n private readonly errorOrder: ValidationKey[] = [\n \"required\",\n \"minlength\",\n \"maxlength\",\n \"cpf\",\n \"cnpj\",\n \"email\",\n \"pattern\",\n \"min\",\n \"max\",\n ];\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n resolveFirstError(\n control?: AbstractControl | null,\n errors?: Errors\n ): string | null {\n const validationErrors = control?.errors;\n\n if (!validationErrors) {\n return null;\n }\n\n const firstErrorKey = this.errorOrder.find((key) => control?.hasError(key));\n\n if (!firstErrorKey) {\n return null;\n }\n\n return this.resolveErrorMessage(firstErrorKey, validationErrors, errors);\n }\n\n private resolveErrorMessage(\n errorKey: ValidationKey,\n validationErrors: ValidationErrors,\n errors?: Errors\n ): string {\n const errorOverrides = errors as ErrorOverrides | undefined;\n const customMessage = this.getCustomMessage(errorKey, errorOverrides);\n\n if (customMessage) {\n return customMessage;\n }\n\n const errorValue = validationErrors[errorKey];\n\n switch (errorKey) {\n case \"minlength\":\n return this.i18n.resolveValidationText(\"minLength\", errorValue);\n case \"maxlength\":\n return this.i18n.resolveValidationText(\"maxLength\", errorValue);\n case \"min\":\n return this.i18n.resolveValidationText(\"min\", errorValue);\n case \"max\":\n return this.i18n.resolveValidationText(\"max\", errorValue);\n default:\n return this.i18n.resolveValidationText(errorKey);\n }\n }\n\n private getCustomMessage(\n errorKey: ValidationKey,\n errors?: ErrorOverrides\n ): string | undefined {\n if (!errors) {\n return undefined;\n }\n\n switch (errorKey) {\n case \"minlength\":\n return errors.minLength ?? errors.minlength;\n case \"maxlength\":\n return errors.maxLength ?? errors.maxlength;\n default:\n return errors[errorKey];\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { Errors } from \"../../elements/errors\";\nimport { ValidationMessageResolverService } from \"../../services/validation-message-resolver.service\";\n\n@Component({\n selector: \"mapa-form-errors\",\n imports: [CommonModule, MatFormFieldModule],\n templateUrl: \"./form-errors.component.html\"\n})\nexport class MapaFormErrorsComponent {\n @Input() control?: AbstractControl | null;\n @Input() errors?: Errors;\n\n constructor(\n private readonly validationMessageResolver: ValidationMessageResolverService\n ) {}\n\n get message(): string | null {\n return this.validationMessageResolver.resolveFirstError(\n this.control,\n this.errors\n );\n }\n}\n","<span *ngIf=\"message\">\n {{ message }}\n</span>\n","import { AutofillMonitor } from '@angular/cdk/text-field';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n OnInit,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { filter } from 'rxjs/operators';\n\ntype MaskedElement = HTMLInputElement | HTMLTextAreaElement;\n\n/**\n * Máscaras numéricas cujo valor de modelo não é a simples projeção\n * \"texto renderizado menos caracteres especiais\". `separator` ainda altera\n * `NgxMaskService.specialCharacters` em runtime, o que quebra a simetria da\n * comparação feita aqui. Nenhuma delas é produzida por autofill.\n */\nconst SKIPPED_MASK_PREFIXES = ['separator', 'percent'];\n\n/**\n * Mantém o FormControl em sincronia com `input.value` quando o valor foi escrito\n * por algo que não é o usuário: autofill do navegador, gerenciador de senhas ou\n * extensão (geradores de CPF/CNPJ).\n *\n * A NgxMaskDirective é o ControlValueAccessor de todo input com máscara desta\n * biblioteca e só empurra valor para o modelo a partir do seu host listener de\n * `input`. O handler de `blur` chama `onTouch()` mas nunca `onChange()`, e não\n * existe listener de `change`. Um agente externo que atribui `element.value` sem\n * disparar um evento `input` nativo deixa o controle no valor anterior, mantendo\n * o erro `required` na tela até o usuário redigitar o campo.\n *\n * Esta diretiva detecta a divergência e reenvia o evento `input` que faltou,\n * fazendo a NgxMaskDirective analisar, re-renderizar e emitir exatamente como se\n * o usuário tivesse colado o valor. É no-op enquanto DOM e modelo concordam.\n */\n@Directive({\n selector: 'input[mask], textarea[mask]',\n standalone: true,\n exportAs: 'mapaMaskAutofillSync',\n host: {\n '(change)': 'reconcile()',\n '(focusout)': 'reconcile()',\n },\n})\nexport class MapaMaskAutofillSyncDirective implements OnInit {\n /** Permite desligar a reconciliação em um campo específico. */\n @Input({ transform: booleanAttribute }) mapaMaskAutofillSync = true;\n\n private readonly elementRef = inject<ElementRef<MaskedElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly autofillMonitor = inject(AutofillMonitor);\n private readonly maskDirective = inject(NgxMaskDirective, {\n self: true,\n optional: true,\n });\n private readonly maskService = inject(NgxMaskService, {\n self: true,\n optional: true,\n });\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n private reconciling = false;\n\n ngOnInit(): void {\n // monitor() é idempotente por elemento e devolve um Subject compartilhado\n // com o MatInput, que já monitora este mesmo elemento. Nunca chamar\n // stopMonitoring(): ele completa esse Subject e remove o listener de\n // animação para todos os consumidores. O MatInput cuida do teardown.\n this.autofillMonitor\n .monitor(this.elementRef.nativeElement)\n .pipe(\n filter((event) => event.isAutofilled),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.reconcile());\n }\n\n /** Idempotente: não faz nada enquanto DOM e modelo concordam. */\n reconcile(): void {\n if (!this.mapaMaskAutofillSync || this.reconciling) {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n // ngControl.control só existe depois do ngOnChanges da FormControlDirective,\n // por isso é lido aqui e não no construtor.\n const control = this.ngControl?.control;\n\n if (!control || control.disabled || element.readOnly) {\n return;\n }\n\n if (element instanceof HTMLInputElement && element.type === 'number') {\n return;\n }\n\n const mask = this.maskDirective?.mask() ?? '';\n\n if (SKIPPED_MASK_PREFIXES.some((prefix) => mask.startsWith(prefix))) {\n return;\n }\n\n if (this.isInSync(element, control, mask)) {\n return;\n }\n\n const previousValue = control.value;\n\n this.reconciling = true;\n\n try {\n // Reenvia o que o navegador deveria ter emitido. A NgxMaskDirective relê\n // element.value, reaplica a máscara, re-renderiza o campo e empurra o\n // valor pelo seu próprio pipeline de CVA — marcando o controle como dirty\n // e reexecutando todos os validadores.\n element.dispatchEvent(new Event('input', { bubbles: true }));\n\n if (control.value === previousValue) {\n // O evento não moveu o modelo. Acontece com controles criados como\n // { updateOn: 'blur' | 'submit' }, em que o value accessor apenas\n // enfileira a mudança em vez de comitá-la.\n control.setValue(this.toModelValue(element.value, mask));\n control.markAsDirty();\n }\n } finally {\n this.reconciling = false;\n }\n }\n\n private isInSync(\n element: MaskedElement,\n control: AbstractControl,\n mask: string\n ): boolean {\n return (\n this.toComparable(element.value, mask) ===\n this.toComparable(this.stringify(control.value), mask)\n );\n }\n\n /**\n * Sem máscara, o texto renderizado e o valor de modelo são a mesma string. Com\n * máscara eles diferem apenas pelos caracteres especiais, então limpar os dois\n * lados com as regras da própria NgxMaskService vale tanto para\n * `dropSpecialCharacters: true` quanto para `false`.\n */\n private toComparable(value: string, mask: string): string {\n return mask && this.maskService ? this.maskService.removeMask(value) : value;\n }\n\n private toModelValue(domValue: string, mask: string): string {\n return mask && this.maskService && this.maskService.dropSpecialCharacters\n ? this.maskService.removeMask(domValue)\n : domValue;\n }\n\n private stringify(value: unknown): string {\n return value === null || value === undefined ? '' : String(value);\n }\n}\n","import { getIntlLocale, getStoredAppLanguage } from \"mapa-frontend-i18n\";\n\nconst DAY_MONTH_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\nconst MONTH_DAY_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\nconst ISO_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}([T ].*)?$/;\nconst DOCS_LANGUAGE_STORAGE_KEY = \"mapa-library-ui-docs-language\";\n\nexport type MapaDateLocale = \"pt-BR\" | \"en\" | \"es\";\nexport type MapaDateFormat = \"DD/MM/YYYY\" | \"MM/DD/YYYY\";\n\nexport type DateInput = Date | string | number | null | undefined;\n\nfunction isValidDate(date: Date): boolean {\n return !Number.isNaN(date.getTime());\n}\n\nfunction buildUtcDate(\n date: Date,\n dayOffset: number,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number,\n): Date {\n return new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate() + dayOffset,\n hours,\n minutes,\n seconds,\n milliseconds,\n ),\n );\n}\n\nexport function formatDateAsDayMonthYear(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const year = `${date.getFullYear()}`;\n\n return `${day}/${month}/${year}`;\n}\n\nexport function formatDateAsMonthDayYear(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const year = `${date.getFullYear()}`;\n\n return `${month}/${day}/${year}`;\n}\n\nexport function normalizeDateLocale(value: unknown): MapaDateLocale {\n if (typeof value !== \"string\") {\n return \"pt-BR\";\n }\n\n const normalizedValue = value.trim().toLowerCase();\n\n if (normalizedValue.startsWith(\"en\")) {\n return \"en\";\n }\n\n if (normalizedValue.startsWith(\"es\")) {\n return \"es\";\n }\n\n return \"pt-BR\";\n}\n\nfunction getDocsStoredLanguage(): string | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n try {\n return window.localStorage.getItem(DOCS_LANGUAGE_STORAGE_KEY);\n } catch {\n return null;\n }\n}\n\nexport function getActiveDateLocale(): MapaDateLocale {\n return normalizeDateLocale(getDocsStoredLanguage() ?? getStoredAppLanguage());\n}\n\nexport function isMonthFirstDateLocale(locale = getActiveDateLocale()): boolean {\n return normalizeDateLocale(locale) === \"en\";\n}\n\nexport function getActiveDateFormat(locale = getActiveDateLocale()): MapaDateFormat {\n return isMonthFirstDateLocale(locale) ? \"MM/DD/YYYY\" : \"DD/MM/YYYY\";\n}\n\nexport function getDateInputMask(_locale = getActiveDateLocale()): string {\n return \"00/00/0000\";\n}\n\nexport function formatDateForLocale(date: Date, locale = getActiveDateLocale()): string {\n return isMonthFirstDateLocale(locale)\n ? formatDateAsMonthDayYear(date)\n : formatDateAsDayMonthYear(date);\n}\n\nfunction parseOrderedDate(\n value: string,\n pattern: RegExp,\n order: \"day-first\" | \"month-first\"\n): Date | null {\n const match = pattern.exec(value.trim());\n if (!match) {\n return null;\n }\n\n const [, firstValue, secondValue, yearValue] = match;\n const year = Number(yearValue);\n const month = Number(order === \"month-first\" ? firstValue : secondValue);\n const day = Number(order === \"month-first\" ? secondValue : firstValue);\n const parsedDate = new Date(year, month - 1, day);\n\n if (\n parsedDate.getFullYear() !== year ||\n parsedDate.getMonth() !== month - 1 ||\n parsedDate.getDate() !== day\n ) {\n return null;\n }\n\n return parsedDate;\n}\n\nexport function parseLocaleDateValue(\n value: string,\n locale = getActiveDateLocale()\n): Date | null {\n const normalizedLocale = normalizeDateLocale(locale);\n const parsers =\n normalizedLocale === \"en\"\n ? [\n () => parseOrderedDate(value, MONTH_DAY_YEAR_PATTERN, \"month-first\"),\n () => parseOrderedDate(value, DAY_MONTH_YEAR_PATTERN, \"day-first\"),\n ]\n : [\n () => parseOrderedDate(value, DAY_MONTH_YEAR_PATTERN, \"day-first\"),\n () => parseOrderedDate(value, MONTH_DAY_YEAR_PATTERN, \"month-first\"),\n ];\n\n for (const parse of parsers) {\n const parsedDate = parse();\n if (parsedDate) {\n return parsedDate;\n }\n }\n\n return null;\n}\n\nexport function parseDateValue(\n value: unknown,\n locale = getActiveDateLocale()\n): Date | null {\n if (value instanceof Date) {\n return isValidDate(value) ? new Date(value.getTime()) : null;\n }\n\n if (typeof value === \"number\") {\n const parsedDate = new Date(value);\n return isValidDate(parsedDate) ? parsedDate : null;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n const localeDate = parseLocaleDateValue(trimmedValue, locale);\n if (localeDate) {\n return localeDate;\n }\n\n if (DAY_MONTH_YEAR_PATTERN.test(trimmedValue) || MONTH_DAY_YEAR_PATTERN.test(trimmedValue)) {\n return null;\n }\n\n const parsedDate = new Date(trimmedValue);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\n/**\n * Parse estrito para o texto de um campo de data mascarado.\n *\n * Diferente de `parseDateValue`, não cai em `new Date(string)` para qualquer\n * entrada. O motor de datas do V8 aceita fragmentos numéricos e devolve datas\n * inventadas — `\"2\"` vira 01/02/2001 e `\"251220\"` vira o ano 251220 —, o que\n * fazia os datepickers moverem o calendário a cada tecla enquanto o usuário\n * ainda estava digitando.\n *\n * Aceita apenas uma data completa no formato do locale ativo (com validação de\n * faixa de dia/mês) ou uma data ISO-8601, para não quebrar valores vindos de\n * API que o consumidor grave direto no controle.\n */\nexport function parseDateFieldValue(\n value: unknown,\n locale = getActiveDateLocale()\n): Date | null {\n if (value instanceof Date || typeof value === \"number\") {\n return parseDateValue(value, locale);\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n const localeDate = parseLocaleDateValue(trimmedValue, locale);\n if (localeDate) {\n return localeDate;\n }\n\n return ISO_DATE_PATTERN.test(trimmedValue)\n ? parseDateValue(trimmedValue, locale)\n : null;\n}\n\nexport function isDateValue(value: unknown): boolean {\n return parseDateValue(value) !== null;\n}\n\nexport function parseBrazilianDate(value: string): Date | null {\n return parseOrderedDate(value, DAY_MONTH_YEAR_PATTERN, \"day-first\");\n}\n\nexport function normalizeDateInput(value: DateInput): Date | null {\n return parseDateValue(value);\n}\n\nexport function formatBrazilianDate(value: DateInput): string {\n const date = normalizeDateInput(value);\n return date ? formatDateAsDayMonthYear(date) : \"\";\n}\n\nexport function addDays(date: Date, days: number): Date {\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + days);\n return nextDate;\n}\n\nexport type LocaleDateStyle = \"short\" | \"medium\" | \"long\" | \"full\";\n\nexport function formatLocaleDate(\n value: DateInput,\n dateStyle: LocaleDateStyle = \"short\",\n): string {\n const date = normalizeDateInput(value);\n if (!date) {\n return \"\";\n }\n\n return new Intl.DateTimeFormat(getIntlLocale(getActiveDateLocale()), {\n dateStyle,\n }).format(date);\n}\n\nexport function formatLocaleDateTime(\n value: DateInput,\n options: { dateStyle?: LocaleDateStyle; timeStyle?: LocaleDateStyle } = {},\n): string {\n const date = normalizeDateInput(value);\n if (!date) {\n return \"\";\n }\n\n const { dateStyle = \"short\", timeStyle = \"short\" } = options;\n\n return new Intl.DateTimeFormat(getIntlLocale(getActiveDateLocale()), {\n dateStyle,\n timeStyle,\n }).format(date);\n}\n\nexport function getDefaultDateRange(days = 60): {\n startDate: string;\n endDate: string;\n} {\n const today = new Date();\n\n return {\n startDate: formatBrazilianDate(addDays(today, -days)),\n endDate: formatBrazilianDate(today),\n };\n}\n\nexport function getRelativeDateRange(daysBack: number): {\n startDate: Date;\n endDate: Date;\n} {\n const endDate = new Date();\n endDate.setHours(23, 59, 59, 999);\n\n const startDate = new Date();\n startDate.setHours(0, 0, 0, 0);\n startDate.setDate(startDate.getDate() - daysBack);\n\n return { startDate, endDate };\n}\n\nexport function toUtcRangeStartIso(value: DateInput): string | undefined {\n const date = normalizeDateInput(value);\n return date ? buildUtcDate(date, 0, 3, 0, 0, 0).toISOString() : undefined;\n}\n\nexport function toUtcRangeEndIso(value: DateInput): string | undefined {\n const date = normalizeDateInput(value);\n return date ? buildUtcDate(date, 1, 2, 59, 59, 999).toISOString() : undefined;\n}\n\nexport function toUtcDayExclusiveEndIso(value: DateInput): string | undefined {\n const date = normalizeDateInput(value);\n return date ? buildUtcDate(date, 1, 3, 0, 0, 0).toISOString() : undefined;\n}\n","import { Injectable, effect, inject, signal } from \"@angular/core\";\nimport { MapaDateLocale, getActiveDateLocale } from \"../utils/date.util\";\nimport { MapaI18nService } from \"./mapa-i18n.service\";\n\n/**\n * Locale de data ativo exposto como sinal.\n *\n * `getActiveDateLocale()` lê do localStorage, que não é reativo. Em vez de\n * consultar o valor a cada ciclo de change detection, observamos o\n * `textsSignal` do `MapaI18nService`: toda troca de idioma do ecossistema\n * passa por `setTexts()`. Como effects do Angular são agendados e não\n * síncronos, quando o corpo do effect roda a gravação no localStorage feita\n * logo após o `setTexts()` já aconteceu.\n *\n * Root-provided de propósito: um effect para toda a aplicação em vez de um por\n * instância de datepicker.\n */\n@Injectable({ providedIn: \"root\" })\nexport class MapaDateLocaleService {\n private readonly i18n = inject(MapaI18nService);\n private readonly localeState = signal<MapaDateLocale>(getActiveDateLocale());\n\n readonly localeSignal = this.localeState.asReadonly();\n\n constructor() {\n effect(() => {\n this.i18n.textsSignal();\n this.refresh();\n });\n }\n\n /**\n * Relê o locale do storage. Cinto de segurança para consumidores que trocam\n * o idioma sem passar por `setTexts()`.\n */\n refresh(): void {\n const nextLocale = getActiveDateLocale();\n\n if (this.localeState() !== nextLocale) {\n this.localeState.set(nextLocale);\n }\n }\n}\n","import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output,\n ViewChild,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\nimport { DatepickerValue, NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { MapaMaskAutofillSyncDirective } from '../../../core/directives/mapa-mask-autofill-sync.directive';\nimport {\n Datepicker,\n DatepickerMode,\n DatepickerPreset,\n} from '../../../core/elements/datepicker';\nimport { MapaDateLocaleService } from '../../../core/services/mapa-date-locale.service';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\nimport {\n MapaDateLocale,\n formatDateForLocale,\n getActiveDateFormat,\n getDateInputMask,\n getRelativeDateRange,\n parseDateFieldValue,\n parseDateValue,\n} from '../../../core/utils/date.util';\n\nexport interface MapaDatepickerRangeValue {\n startDate: string | null;\n endDate: string | null;\n}\n\n/** @deprecated Use `MapaDatepickerRangeValue`. */\nexport type MapaDatepickerRangeControlValue = MapaDatepickerRangeValue;\n\n/** @deprecated Use `FormGroup`. */\nexport type MapaDatepickerRangeFormGroup = FormGroup;\n\nexport type MapaDatepickerControlValue =\n string | MapaDatepickerRangeValue | string[] | null;\n\ninterface MapaDatepickerDisplayValue {\n startDate: string | null;\n endDate: string | null;\n}\n\ninterface MapaDateBoundaryCache {\n initialized: boolean;\n source: unknown;\n sourceTimestamp: number | null;\n value: Date | null;\n}\n\n/** Preset já resolvido em datas concretas, pronto para o dropdown. */\nexport interface MapaDatepickerPresetEntry {\n label: string;\n range: [Date, Date];\n}\n\n/**\n * Fallback do gatilho de presets. Literal como o `aria-label=\"Limpar\"` que o\n * v1 e o `mapa-dropdown` já embarcam — `MapaUiTextGroups[\"datepicker\"]` vem do\n * pacote externo `mapa-frontend-i18n`, então uma chave nova exigiria publicar\n * aquele pacote antes. Consumidores sobrescrevem via `element.presetsLabel`.\n */\nconst DEFAULT_PRESETS_LABEL = 'Período';\n\n/**\n * O `Intl` interno do ngxsmk trabalha melhor com tags BCP47 completas — `en`\n * sozinho deixa a ordem dia/mês ambígua para ele.\n */\nconst NGXSMK_LOCALE_BY_MAPA_LOCALE: Record<MapaDateLocale, string> = {\n 'pt-BR': 'pt-BR',\n en: 'en-US',\n es: 'es-ES',\n};\n\n@Component({\n selector: 'mapa-datepicker, mapa-datepicker-range',\n host: {\n '[class.mapa-datepicker--range]': 'mode() === \"range\"',\n },\n standalone: true,\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n NgxMaskDirective,\n MapaMaskAutofillSyncDirective,\n MatFormFieldModule,\n MatInputModule,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n NgxsmkDatepickerComponent,\n MapaFormErrorsComponent,\n ],\n providers: [provideNgxMask()],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapaDatepicker implements OnInit {\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly i18n = inject(MapaI18nService);\n private readonly dateLocale = inject(MapaDateLocaleService);\n\n @Input({ required: true }) formGroup!: FormGroup;\n @Input({ required: true }) element!: Datepicker;\n @Output() openedChange = new EventEmitter<boolean>();\n\n @ViewChild('toggleButton')\n private toggleButton?: ElementRef<HTMLButtonElement>;\n\n @ViewChild(NgxsmkDatepickerComponent)\n private picker?: NgxsmkDatepickerComponent;\n\n /** Controle do consumidor, resolvido por `element.key` no `ngOnInit`. */\n control!: FormControl<MapaDatepickerControlValue>;\n\n /** Camada visível: strings mascaradas. `single` usa apenas `startDate`. */\n readonly formDisplay = new FormGroup({\n startDate: new FormControl<string | null>(null),\n endDate: new FormControl<string | null>(null),\n });\n\n /** Camada do calendário: `Date`, no formato que o ngxsmk consome. */\n readonly pickerValue = signal<DatepickerValue>(null);\n\n private readonly isOpenState = signal(false);\n private readonly isPresetsOpenState = signal(false);\n private localeState: MapaDateLocale | null = null;\n private syncing = false;\n private presetsCache?: {\n source: DatepickerPreset[] | undefined;\n entries: MapaDatepickerPresetEntry[];\n };\n private readonly minDateCache: MapaDateBoundaryCache = {\n initialized: false,\n source: undefined,\n sourceTimestamp: null,\n value: null,\n };\n private readonly maxDateCache: MapaDateBoundaryCache = {\n initialized: false,\n source: undefined,\n sourceTimestamp: null,\n value: null,\n };\n\n readonly overlayPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n /**\n * Referências estáveis: com OnPush, devolver um literal novo a cada ciclo\n * marcaria o input do ngxsmk como alterado em toda change detection.\n */\n readonly ngxsmkClasses = { inputGroup: 'mapa-datepicker__ngxsmk-group' };\n private readonly emptyDisabledDates: (string | Date)[] = [];\n private readonly neverInvalid = (): boolean => false;\n\n private readonly localeSync = effect(() => {\n this.handleLocaleChange(this.dateLocale.localeSignal());\n });\n\n ngOnInit(): void {\n if (!this.element?.key) {\n throw new Error('mapa-datepicker: element.key é obrigatório.');\n }\n\n const control = this.formGroup?.get(this.element.key);\n\n if (!control) {\n throw new Error(\n `mapa-datepicker: controle \"${this.element.key}\" não encontrado no formGroup.`,\n );\n }\n\n this.control = control as FormControl<MapaDatepickerControlValue>;\n this.applyExternal(this.control.value);\n\n this.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => this.applyExternal(value));\n\n this.control.statusChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.cdr.markForCheck());\n\n this.formDisplay.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleDisplayChange());\n }\n\n // --- estado exposto ao template -----------------------------------------\n\n mode(): DatepickerMode {\n return this.element?.mode ?? 'single';\n }\n\n isOpen(): boolean {\n return this.isOpenState();\n }\n\n isDisabled(): boolean {\n return !!this.control?.disabled;\n }\n\n isReadonly(): boolean {\n return !!this.element?.readonly;\n }\n\n hasValue(): boolean {\n return this.serializeExternal(this.control?.value) !== '';\n }\n\n showClear(): boolean {\n return this.hasValue() && !this.isDisabled() && !!this.element.clearValue;\n }\n\n shouldShowError(): boolean {\n return (\n !!this.control &&\n this.control.invalid &&\n (this.control.dirty || this.control.touched)\n );\n }\n\n /** Texto somente leitura do modo `multiple` — evita chaves novas de i18n. */\n selectedLabel(): string {\n const value = this.control?.value;\n return Array.isArray(value) ? value.join(', ') : '';\n }\n\n mask(): string {\n return this.element.mask ?? getDateInputMask(this.locale());\n }\n\n singlePlaceholder(): string {\n return this.element.placeholder || this.element.label || '';\n }\n\n get startDatePlaceholder(): string {\n return this.i18n.textsSignal().datepicker.startDatePlaceholder;\n }\n\n get endDatePlaceholder(): string {\n return this.i18n.textsSignal().datepicker.endDatePlaceholder;\n }\n\n // --- entradas repassadas ao ngxsmk --------------------------------------\n\n ngxsmkLocale(): string {\n return NGXSMK_LOCALE_BY_MAPA_LOCALE[this.locale()];\n }\n\n displayFormat(): string {\n return getActiveDateFormat(this.locale());\n }\n\n minDate(): Date | null {\n return this.resolveDateBoundary(this.element.minDate, this.minDateCache);\n }\n\n maxDate(): Date | null {\n return this.resolveDateBoundary(this.element.maxDate, this.maxDateCache);\n }\n\n disabledDates(): (string | Date)[] {\n return this.element.disabledDates ?? this.emptyDisabledDates;\n }\n\n isInvalidDate(): (date: Date) => boolean {\n return this.element.isInvalidDate ?? this.neverInvalid;\n }\n\n private resolveDateBoundary(\n source: unknown,\n cache: MapaDateBoundaryCache,\n ): Date | null {\n const sourceTimestamp =\n source instanceof Date && !Number.isNaN(source.getTime())\n ? source.getTime()\n : null;\n\n if (\n !cache.initialized ||\n cache.source !== source ||\n cache.sourceTimestamp !== sourceTimestamp\n ) {\n cache.initialized = true;\n cache.source = source;\n cache.sourceTimestamp = sourceTimestamp;\n cache.value = parseDateValue(source);\n }\n\n return cache.value;\n }\n\n /**\n * Um mês por padrão em todos os modos, para o painel ficar na largura do\n * campo. Dois meses são opt-in via `element.calendars`.\n */\n calendars(): number {\n return this.element.calendars ?? 1;\n }\n\n weekStart(): number | null {\n return this.element.weekStart;\n }\n\n /**\n * Presets já resolvidos em datas. Memoizado pela referência de\n * `element.presets` para não reconstruir `Date`s a cada change detection.\n *\n * Alimenta o nosso dropdown, não o painel nativo do ngxsmk: o layout dele é\n * ditado por media queries duplicadas que nenhum input ou variável controla\n * (coluna lateral acima de 992px, cards de 45px acima de 1024px), e o input\n * `classes` do componente de presets é morto — o template dele nunca o lê.\n */\n presetList(): MapaDatepickerPresetEntry[] {\n const presets = this.element.presets;\n const cache = this.presetsCache;\n\n if (cache && cache.source === presets) {\n return cache.entries;\n }\n\n const entries = this.buildPresetEntries(presets);\n this.presetsCache = { source: presets, entries };\n\n return entries;\n }\n\n hasPresets(): boolean {\n return this.presetList().length > 0;\n }\n\n isPresetsOpen(): boolean {\n return this.isPresetsOpenState();\n }\n\n isPresetActive(entry: MapaDatepickerPresetEntry): boolean {\n const locale = this.locale();\n\n return (\n this.serializeExternal({\n startDate: formatDateForLocale(entry.range[0], locale),\n endDate: formatDateForLocale(entry.range[1], locale),\n }) === this.serializeExternal(this.control?.value)\n );\n }\n\n presetsTriggerLabel(): string {\n const active = this.presetList().find((entry) =>\n this.isPresetActive(entry),\n );\n\n return active?.label ?? this.element.presetsLabel ?? DEFAULT_PRESETS_LABEL;\n }\n\n togglePresets(): void {\n this.isPresetsOpenState.update((isOpen) => !isOpen);\n }\n\n closePresets(): void {\n if (this.isPresetsOpenState()) {\n this.isPresetsOpenState.set(false);\n this.cdr.markForCheck();\n }\n }\n\n applyPreset(entry: MapaDatepickerPresetEntry): void {\n this.closePresets();\n\n if (this.isDisabled()) {\n return;\n }\n\n // `selectRange` reposiciona o mês visível para o início da faixa e emite\n // `valueChange` uma única vez, caindo no `handlePickerValue`. Em modo\n // inline ele não fecha nada — quem fecha continua sendo o nosso overlay.\n if (this.picker) {\n this.picker.selectRange([entry.range[0], entry.range[1]]);\n return;\n }\n\n this.handlePickerValue({ start: entry.range[0], end: entry.range[1] });\n }\n\n // --- interação ------------------------------------------------------------\n\n toggleCalendar(): void {\n if (this.isDisabled() || this.isReadonly()) {\n return;\n }\n\n const isOpening = !this.isOpenState();\n\n if (isOpening) {\n this.dateLocale.refresh();\n }\n\n this.setOpenState(isOpening);\n\n if (!isOpening) {\n this.control.markAsTouched();\n }\n }\n\n closeCalendar(): void {\n if (this.isOpenState()) {\n this.setOpenState(false);\n }\n\n this.control?.markAsTouched();\n }\n\n handleOverlayOutsideClick(event: Event): void {\n if (this.toggleButton?.nativeElement.contains(event.target as Node)) {\n return;\n }\n\n this.closeCalendar();\n }\n\n @HostListener('document:keydown.escape')\n handleEscape(): void {\n // Dois estágios: o Escape fecha primeiro o dropdown de presets, e só o\n // segundo fecha o calendário.\n if (this.isPresetsOpenState()) {\n this.closePresets();\n return;\n }\n\n if (this.isOpenState()) {\n this.closeCalendar();\n this.toggleButton?.nativeElement.focus();\n }\n }\n\n /** Seleção vinda do calendário. */\n handlePickerValue(value: DatepickerValue): void {\n const next = this.toExternal(value, this.locale());\n\n this.closePresets();\n this.patchDisplay(this.toDisplayValue(next));\n this.pickerValue.set(value);\n\n // Um range pela metade nunca chega ao consumidor: o ngxsmk emite\n // `{ start, end: null }` já no primeiro clique.\n if (this.mode() === 'range' && !this.isCompleteRange(next)) {\n this.cdr.markForCheck();\n return;\n }\n\n this.emitExternal(next);\n\n if (this.element.closeOnSelect && this.shouldCloseAfterSelect(next)) {\n this.closeCalendar();\n }\n }\n\n clear(event?: Event): void {\n event?.stopPropagation();\n\n if (this.isDisabled()) {\n return;\n }\n\n this.patchDisplay({ startDate: null, endDate: null });\n this.pickerValue.set(null);\n this.emitExternal(this.emptyValue());\n this.control.markAsTouched();\n }\n\n // --- sincronização --------------------------------------------------------\n\n private locale(): MapaDateLocale {\n return this.localeState ?? this.dateLocale.localeSignal();\n }\n\n private handleLocaleChange(locale: MapaDateLocale): void {\n const previousLocale = this.localeState;\n this.localeState = locale;\n\n // O effect roda uma primeira vez antes de haver troca real de idioma, e\n // pode rodar antes do ngOnInit resolver o controle.\n if (!this.control || previousLocale === null || previousLocale === locale) {\n this.cdr.markForCheck();\n return;\n }\n\n const picker = this.pickerValue();\n\n // Reformatamos a partir das datas já resolvidas, nunca reinterpretando o\n // texto: assim um valor meio digitado ou inválido sobrevive à troca.\n if (!picker) {\n this.cdr.markForCheck();\n return;\n }\n\n const next = this.toExternal(picker, locale);\n this.patchDisplay(this.toDisplayValue(next));\n this.emitExternal(next);\n }\n\n /** Digitação no campo mascarado. Passa o texto adiante verbatim. */\n private handleDisplayChange(): void {\n if (this.syncing || this.mode() === 'multiple' || !this.control) {\n return;\n }\n\n const display = this.formDisplay.getRawValue();\n const next: MapaDatepickerControlValue =\n this.mode() === 'range'\n ? {\n startDate: display.startDate || null,\n endDate: display.endDate || null,\n }\n : (display.startDate ?? '');\n\n this.pickerValue.set(this.toPickerValue(next, this.locale()));\n this.emitExternal(next);\n }\n\n private applyExternal(value: MapaDatepickerControlValue): void {\n if (this.syncing) {\n return;\n }\n\n const display = this.toDisplayValue(value);\n const current = this.formDisplay.getRawValue();\n\n if (\n current.startDate !== display.startDate ||\n current.endDate !== display.endDate\n ) {\n this.patchDisplay(display);\n }\n\n this.pickerValue.set(this.toPickerValue(value, this.locale()));\n this.cdr.markForCheck();\n }\n\n private emitExternal(next: MapaDatepickerControlValue): void {\n // Comparação pela string formatada, não por `Date`: presets devolvem o fim\n // do range às 23:59:59.999 e um guard por `getTime()` reemitiria em loop.\n if (\n this.serializeExternal(this.control.value) ===\n this.serializeExternal(next)\n ) {\n this.cdr.markForCheck();\n return;\n }\n\n this.syncing = true;\n\n try {\n this.control.patchValue(next);\n this.control.markAsDirty();\n } finally {\n this.syncing = false;\n }\n\n this.cdr.markForCheck();\n }\n\n private patchDisplay(display: MapaDatepickerDisplayValue): void {\n this.syncing = true;\n\n try {\n this.formDisplay.patchValue(display, { emitEvent: false });\n } finally {\n this.syncing = false;\n }\n }\n\n // --- conversões -----------------------------------------------------------\n\n private toPickerValue(\n value: MapaDatepickerControlValue,\n locale: MapaDateLocale,\n ): DatepickerValue {\n switch (this.mode()) {\n case 'range': {\n const range = this.asRangeValue(value);\n const start = parseDateFieldValue(range.startDate, locale);\n const end = parseDateFieldValue(range.endDate, locale);\n\n return start || end ? { start, end } : null;\n }\n case 'multiple': {\n const dates = (Array.isArray(value) ? value : [])\n .map((item) => parseDateFieldValue(item, locale))\n .filter((date): date is Date => !!date);\n\n return dates.length ? dates : null;\n }\n default:\n return parseDateFieldValue(value, locale);\n }\n }\n\n private toExternal(\n value: DatepickerValue,\n locale: MapaDateLocale,\n ): MapaDatepickerControlValue {\n switch (this.mode()) {\n case 'range': {\n const range = this.asPickerRange(value);\n\n return {\n startDate: range.start\n ? formatDateForLocale(range.start, locale)\n : null,\n endDate: range.end ? formatDateForLocale(range.end, locale) : null,\n };\n }\n case 'multiple':\n return (Array.isArray(value) ? value : []).map((date) =>\n formatDateForLocale(date, locale),\n );\n default:\n return value instanceof Date ? formatDateForLocale(value, locale) : '';\n }\n }\n\n private toDisplayValue(\n value: MapaDatepickerControlValue,\n ): MapaDatepickerDisplayValue {\n switch (this.mode()) {\n case 'range': {\n const range = this.asRangeValue(value);\n return { startDate: range.startDate, endDate: range.endDate };\n }\n case 'multiple':\n return { startDate: null, endDate: null };\n default:\n return {\n startDate: typeof value === 'string' ? value : '',\n endDate: null,\n };\n }\n }\n\n /** Forma canônica usada só para comparar — nunca é gravada no controle. */\n private serializeExternal(value: unknown): string {\n switch (this.mode()) {\n case 'range': {\n const range = this.asRangeValue(value as MapaDatepickerControlValue);\n const serialized = `${range.startDate ?? ''}|${range.endDate ?? ''}`;\n return serialized === '|' ? '' : serialized;\n }\n case 'multiple':\n return (Array.isArray(value) ? value : []).join('|');\n default:\n return typeof value === 'string' ? value : '';\n }\n }\n\n private emptyValue(): MapaDatepickerControlValue {\n switch (this.mode()) {\n case 'range':\n return { startDate: null, endDate: null };\n case 'multiple':\n return [];\n default:\n return '';\n }\n }\n\n private asRangeValue(\n value: MapaDatepickerControlValue,\n ): MapaDatepickerRangeValue {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return {\n startDate: value.startDate ?? null,\n endDate: value.endDate ?? null,\n };\n }\n\n return { startDate: null, endDate: null };\n }\n\n private asPickerRange(value: DatepickerValue): {\n start: Date | null;\n end: Date | null;\n } {\n if (value && !Array.isArray(value) && !(value instanceof Date)) {\n return { start: value.start ?? null, end: value.end ?? null };\n }\n\n return { start: null, end: null };\n }\n\n private isCompleteRange(value: MapaDatepickerControlValue): boolean {\n const range = this.asRangeValue(value);\n return !!range.startDate && !!range.endDate;\n }\n\n private shouldCloseAfterSelect(value: MapaDatepickerControlValue): boolean {\n switch (this.mode()) {\n case 'multiple':\n return false;\n case 'range':\n return this.isCompleteRange(value);\n default:\n return typeof value === 'string' && !!value;\n }\n }\n\n private buildPresetEntries(\n presets: DatepickerPreset[] | undefined,\n ): MapaDatepickerPresetEntry[] {\n if (this.mode() !== 'range' || !presets?.length) {\n return [];\n }\n\n return presets.map((preset) => ({\n label: preset.label,\n range: this.resolvePreset(preset),\n }));\n }\n\n private resolvePreset(preset: DatepickerPreset): [Date, Date] {\n if (preset.startDate && preset.endDate) {\n return [preset.startDate, preset.endDate];\n }\n\n // Atenção: `getRelativeDateRange` devolve o fim às 23:59:59.999. Só o\n // guard por string formatada de `emitExternal` tolera isso — um guard por\n // `getTime()` reemitiria em loop.\n const { startDate, endDate } = getRelativeDateRange(preset.daysBack ?? 0);\n\n return [startDate, endDate];\n }\n\n private setOpenState(isOpen: boolean): void {\n this.isOpenState.set(isOpen);\n this.isPresetsOpenState.set(false);\n this.openedChange.emit(isOpen);\n }\n}\n\n/** @deprecated Use `MapaDatepicker` with a `Datepicker` in range mode. */\nexport { MapaDatepicker as MapaDatepickerRange };\n\n/** @deprecated Use `MapaDatepicker`. */\nexport type MapaDatepickerRangeComponent = MapaDatepicker;\n","@if (element && formGroup) {\n <div\n class=\"mapa-datepicker\"\n [class.mapa-datepicker--open]=\"isOpen()\"\n [class.mapa-datepicker--disabled]=\"isDisabled()\"\n >\n @if (element.label) {\n <label class=\"mapa-datepicker__label\" [attr.for]=\"element.key || null\">\n {{ element.label }}\n </label>\n }\n\n <!-- A origem do overlay precisa ficar fora do @if: referências de template\n não atravessam blocos de controle de fluxo. -->\n <div\n class=\"mapa-datepicker__origin\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n [formGroup]=\"formDisplay\"\n >\n @if (mode() === \"range\") {\n <div class=\"mapa-datepicker__range\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker__range-start\"\n >\n <input\n matInput\n formControlName=\"startDate\"\n [attr.id]=\"element.key || null\"\n [placeholder]=\"startDatePlaceholder\"\n [mask]=\"mask()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isReadonly()\"\n />\n </mat-form-field>\n\n <span class=\"mapa-datepicker__divider\">–</span>\n\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker__range-end\"\n >\n <input\n matInput\n formControlName=\"endDate\"\n [placeholder]=\"endDatePlaceholder\"\n [mask]=\"mask()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isReadonly()\"\n />\n\n @if (showClear()) {\n <button\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__clear\"\n aria-label=\"Limpar\"\n tabindex=\"-1\"\n (click)=\"clear($event)\"\n >\n ×\n </button>\n }\n\n <button\n #toggleButton\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__toggle\"\n [disabled]=\"isDisabled() || isReadonly()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"dialog\"\n aria-label=\"Abrir calendário\"\n (click)=\"toggleCalendar()\"\n >\n <ng-container [ngTemplateOutlet]=\"calendarIcon\"></ng-container>\n </button>\n </mat-form-field>\n </div>\n } @else {\n <div class=\"mapa-datepicker__field\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n @if (mode() === \"multiple\") {\n <input\n matInput\n [attr.id]=\"element.key || null\"\n [value]=\"selectedLabel()\"\n [placeholder]=\"singlePlaceholder()\"\n readonly\n (click)=\"toggleCalendar()\"\n />\n } @else {\n <input\n matInput\n formControlName=\"startDate\"\n [attr.id]=\"element.key || null\"\n [placeholder]=\"singlePlaceholder()\"\n [mask]=\"mask()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isReadonly()\"\n />\n }\n\n @if (showClear()) {\n <button\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__clear\"\n aria-label=\"Limpar\"\n tabindex=\"-1\"\n (click)=\"clear($event)\"\n >\n ×\n </button>\n }\n\n <button\n #toggleButton\n matSuffix\n type=\"button\"\n class=\"mapa-datepicker__toggle\"\n [disabled]=\"isDisabled() || isReadonly()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"dialog\"\n aria-label=\"Abrir calendário\"\n (click)=\"toggleCalendar()\"\n >\n <ng-container [ngTemplateOutlet]=\"calendarIcon\"></ng-container>\n </button>\n </mat-form-field>\n </div>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n cdkConnectedOverlayPanelClass=\"mapa-datepicker__overlay-pane\"\n (overlayOutsideClick)=\"handleOverlayOutsideClick($event)\"\n >\n <div class=\"mapa-datepicker__panel\" role=\"dialog\">\n @if (hasPresets()) {\n <div class=\"mapa-datepicker__presets\">\n <button\n type=\"button\"\n class=\"mapa-datepicker__presets-trigger\"\n [class.mapa-datepicker__presets-trigger--open]=\"isPresetsOpen()\"\n [attr.aria-expanded]=\"isPresetsOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"togglePresets()\"\n >\n <span>{{ presetsTriggerLabel() }}</span>\n <svg\n class=\"mapa-datepicker__presets-chevron\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M6 9l6 6 6-6\"></path>\n </svg>\n </button>\n\n @if (isPresetsOpen()) {\n <ul class=\"mapa-datepicker__presets-list\" role=\"listbox\">\n @for (preset of presetList(); track preset.label) {\n <li role=\"option\" [attr.aria-selected]=\"isPresetActive(preset)\">\n <button\n type=\"button\"\n class=\"mapa-datepicker__presets-option\"\n [class.mapa-datepicker__presets-option--active]=\"\n isPresetActive(preset)\n \"\n (click)=\"applyPreset(preset)\"\n >\n {{ preset.label }}\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n <ngxsmk-datepicker\n [inline]=\"true\"\n [mode]=\"mode()\"\n [value]=\"pickerValue()\"\n [locale]=\"ngxsmkLocale()\"\n [displayFormat]=\"displayFormat()\"\n [theme]=\"'light'\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabledDates]=\"disabledDates()\"\n [isInvalidDate]=\"isInvalidDate()\"\n [showRanges]=\"false\"\n [calendars]=\"calendars()\"\n [weekStart]=\"weekStart()\"\n [showCalendarButton]=\"false\"\n [classes]=\"ngxsmkClasses\"\n (valueChange)=\"handlePickerValue($event)\"\n ></ngxsmk-datepicker>\n </div>\n </ng-template>\n\n @if (shouldShowError()) {\n <p class=\"mapa-datepicker__error\">\n <mapa-form-errors\n [control]=\"control\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </p>\n } @else if (element.hint) {\n <p class=\"mapa-datepicker__hint\">{{ element.hint }}</p>\n }\n </div>\n}\n\n<ng-template #calendarIcon>\n <svg\n class=\"mapa-datepicker__icon\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"3\"></rect>\n <path d=\"M3 10h18M8 3v4M16 3v4\"></path>\n </svg>\n</ng-template>\n","/*\n * Public API Surface of mapa-library-ui datepicker\n */\n\nexport * from './src/datepicker.component';\n","/*\n * Public API Surface of mapa-library-ui datepicker\n */\n\nexport * from './lib/core/elements/element-base';\nexport * from './lib/core/elements/datepicker';\nexport * from './lib/core/elements/errors';\n\nexport * from './lib/components/datepicker/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './datepicker';\n"],"names":["i1.MapaI18nService","i1.ValidationMessageResolverService","i2"],"mappings":"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"}
|