mapa-library-ui 2.10.0 → 2.11.0-oldind.1

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.
Files changed (35) hide show
  1. package/README.md +16 -1
  2. package/fesm2022/mapa-library-ui-src-lib-components-capability.mjs +2 -2
  3. package/fesm2022/mapa-library-ui-src-lib-components-capability.mjs.map +1 -1
  4. package/fesm2022/mapa-library-ui-src-lib-components-chart.mjs +2 -2
  5. package/fesm2022/mapa-library-ui-src-lib-components-chart.mjs.map +1 -1
  6. package/fesm2022/mapa-library-ui-src-lib-components-datepicker.mjs +2 -2
  7. package/fesm2022/mapa-library-ui-src-lib-components-datepicker.mjs.map +1 -1
  8. package/fesm2022/mapa-library-ui-src-lib-components-dropdown-tree.mjs +2 -2
  9. package/fesm2022/mapa-library-ui-src-lib-components-dropdown-tree.mjs.map +1 -1
  10. package/fesm2022/mapa-library-ui-src-lib-components-dropdown.mjs +2 -2
  11. package/fesm2022/mapa-library-ui-src-lib-components-dropdown.mjs.map +1 -1
  12. package/fesm2022/mapa-library-ui-src-lib-components-filters.mjs +2 -2
  13. package/fesm2022/mapa-library-ui-src-lib-components-filters.mjs.map +1 -1
  14. package/fesm2022/mapa-library-ui-src-lib-components-form.mjs +2 -2
  15. package/fesm2022/mapa-library-ui-src-lib-components-form.mjs.map +1 -1
  16. package/fesm2022/mapa-library-ui-src-lib-components-group-report.mjs +2 -2
  17. package/fesm2022/mapa-library-ui-src-lib-components-group-report.mjs.map +1 -1
  18. package/fesm2022/mapa-library-ui-src-lib-components-input.mjs +2 -2
  19. package/fesm2022/mapa-library-ui-src-lib-components-input.mjs.map +1 -1
  20. package/fesm2022/mapa-library-ui-src-lib-components-scale-parameterization.mjs +2 -2
  21. package/fesm2022/mapa-library-ui-src-lib-components-scale-parameterization.mjs.map +1 -1
  22. package/fesm2022/mapa-library-ui-src-lib-components-scale.mjs +2 -2
  23. package/fesm2022/mapa-library-ui-src-lib-components-scale.mjs.map +1 -1
  24. package/fesm2022/mapa-library-ui-src-lib-components-table.mjs +2 -2
  25. package/fesm2022/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
  26. package/fesm2022/mapa-library-ui-src-lib-components-textarea.mjs +2 -2
  27. package/fesm2022/mapa-library-ui-src-lib-components-textarea.mjs.map +1 -1
  28. package/fesm2022/mapa-library-ui-src-lib-components-warning.mjs +2 -2
  29. package/fesm2022/mapa-library-ui-src-lib-components-warning.mjs.map +1 -1
  30. package/fesm2022/mapa-library-ui.mjs +131 -70
  31. package/fesm2022/mapa-library-ui.mjs.map +1 -1
  32. package/index.d.ts +44 -5
  33. package/mapa-library-ui-2.11.0-oldind.1.tgz +0 -0
  34. package/package.json +2 -2
  35. package/mapa-library-ui-2.10.0.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mapa-library-ui-src-lib-components-form.mjs","sources":["../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.ts","../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.html","../../../projects/mapa-library-ui/src/lib/components/button/public-api.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/directives/mat-input-autosize.directive.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.html","../../../projects/mapa-library-ui/src/lib/components/input/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.html","../../../projects/mapa-library-ui/src/lib/components/radio-button/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.html","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.html","../../../projects/mapa-library-ui/src/lib/components/textarea/public-api.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/lib/core/services/html-sanitizer.service.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/safe-html.pipe.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.html","../../../projects/mapa-library-ui/src/lib/components/form/public-api.ts","../../../projects/mapa-library-ui/src/form.ts","../../../projects/mapa-library-ui/src/mapa-library-ui-src-lib-components-form.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'mapa-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n standalone: true,\n})\nexport class ButtonComponent {\n @Input() color: 'primary' | 'accent' | 'basic' | null | undefined;\n @Input() disabled!: boolean;\n @Input() shape: 'pill' | 'rounded' = 'rounded';\n @Input() fullWidth = false;\n @Output() clicked: EventEmitter<void> = new EventEmitter<void>();\n\n onClick(): void {\n this.clicked.emit();\n }\n}\n","<button\n class=\"mapa-button\"\n (click)=\"onClick()\"\n [class.primary]=\"color === 'primary'\"\n [class.accent]=\"color === 'accent'\"\n [class.basic]=\"color === 'basic'\"\n [class.mapa-button--rounded]=\"shape === 'rounded'\"\n [class.mapa-button--full-width]=\"fullWidth\"\n [disabled]=\"disabled\"\n>\n <ng-content></ng-content>\n</button>\n","/*\n * Public API Surface of mapa-library-ui button\n */\n\nexport * from './src/button.component';\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\nfunction formatItemCount(count: number): string {\n return `${count} ${count === 1 ? 'item' : 'itens'}`;\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 report: {\n summarized: 'Resumida',\n detailed: 'Detalhada',\n list: 'Lista',\n chart: 'Gráfico',\n viewModeLabel: 'Modo de visualização',\n readingInformationTitle: 'Informações de leitura',\n dimensionTitle: 'Dimensão',\n indicatorTitle: 'Indicador',\n conceptTitle: 'Conceito',\n classificationTitle: 'Classificação',\n resultReadingTitle: 'Leitura do resultado',\n resultTitle: 'Resultado',\n globalAverageTitle: 'Média global',\n factorsTitle: 'Fatores relativos à organização e ao trabalho',\n strongPointsTitle: 'Pontos fortes',\n attentionPointsTitle: 'Pontos de atenção',\n vulnerabilitiesTitle: 'Vulnerabilidades socioemocionais',\n positiveDirectionLabel: 'Direção positiva',\n negativeDirectionLabel: 'Direção negativa',\n lowerIntensityLabel: 'Menos intenso',\n higherIntensityLabel: 'Mais intenso',\n noClassification: 'Sem classificação',\n emptyState: 'Não há resultados disponíveis para esta seção.',\n interpretationTitle: 'Interpretação',\n detailedListLabel: 'Lista detalhada',\n groupAverageTitle: 'Média geral do grupo',\n groupDistributionLabel: 'Distribuição do grupo',\n overallPercentageTitle: '% Geral',\n summarizedReportTitle: 'Relatório resumido',\n detailedReportTitle: 'Relatório detalhado',\n competenciesAndDimensionsTitle: 'Competências e dimensões',\n parameterizationRankingTitle: 'Ranqueamento da parametrização',\n groupsTitle: 'Grupos',\n competenciesTitle: 'Competências',\n finalClassificationTitle: 'Classificação final',\n evaluationDateTitle: 'Data da avaliação',\n unitTitle: 'Unidade',\n positionTitle: 'Cargo',\n scaleConceptTitle: 'Conceito da escala',\n psychosocialFactorsTitle: 'Fatores psicossociais',\n editConclusionLabel: 'Editar conclusão',\n addConclusionLabel: 'Adicionar conclusão',\n meterLabel: (name: string, value: number) => `${name}: ${value}%`,\n gaugeLabel: (name: string, value: number) => `${name}: ${value}%`,\n itemCountLabel: formatItemCount,\n continueLabel: 'Continuar',\n newGroupTitle: 'Novo grupo',\n groupNameHint: 'Esse nome identifica o grupo nas tabelas, gráficos e legendas.',\n groupNameRequired: 'Informe o nome do grupo.',\n groupPeopleRequired: 'Selecione pelo menos uma pessoa para criar o grupo.',\n groupMinimumHint: 'Crie pelo menos dois grupos para comparar.',\n groupUnsavedHint: 'Salve ou cancele as alterações em edição antes de analisar os resultados.',\n groupSavedLabel: (name: string) => `Grupo ${name} salvo.`,\n groupCountLabel: (count: number, limit: number) => `${count} de ${limit} grupos criados`,\n scaleCountLabel: (count: number) =>\n `${count} ${count === 1 ? 'escala' : 'escalas'}`,\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 horizontalScrollHint: 'Role horizontalmente para ver todas as colunas →',\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 report: { ...defaults.report, ...(customTexts?.report ?? {}) },\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","/*\n* Originally from: https://github.com/anotherkitten/mat-input-autosize\n* @author: Ellie Larson (anotherkitten)\n*/\n\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n Optional,\n Self,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgModel } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n selector: '[matInputAutosize]',\n standalone: true,\n})\nexport class MatInputAutosizeDirective implements AfterViewInit {\n inputElement: HTMLInputElement;\n hiddenText!: Text;\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() matInputAutosizeMaxWidth?: string | null;\n @Input() matInputAutosizeMinWidth = '120px';\n @Input() matInputAutosizeFontStyle?: string | null;\n\n constructor(\n el: ElementRef<HTMLInputElement>,\n @Self() private childMatInput: MatInput,\n @Optional() @Self() private childNgModel: NgModel\n ) {\n this.inputElement = el.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.checkErrors();\n this.overwriteParentWidth();\n this.createHiddenTextContainer();\n this.setOwnStyles();\n this.subscribeToChanges();\n }\n\n checkErrors(): void {\n if (!(this.inputElement instanceof HTMLInputElement)) {\n throw new Error('matInputAutosize directive must be on an input element');\n }\n\n if (!this.childMatInput) {\n throw new Error(\n 'Element with matInputAutosize directive must also have the matInput directive'\n );\n }\n }\n\n overwriteParentWidth(): void {\n Object.assign((this.inputElement.parentNode as HTMLElement).style, {\n width: '100%',\n });\n }\n\n createHiddenTextContainer(): void {\n const textContainer = document.createElement('div');\n Object.assign(textContainer.style, {\n display: 'inline-block',\n 'max-width': this.matInputAutosizeMaxWidth || null,\n 'min-width': `max(var(--mapa-input-autosize-preferred-width, 0px), ${this.matInputAutosizeMinWidth})`,\n font: this.matInputAutosizeFontStyle || null,\n visibility: 'hidden',\n 'white-space': 'pre',\n });\n this.inputElement.parentNode?.appendChild(textContainer);\n\n this.hiddenText = document.createTextNode(' ');\n textContainer.appendChild(this.hiddenText);\n }\n\n setOwnStyles(): void {\n Object.assign(this.inputElement.style, {\n position: 'absolute',\n left: '0',\n });\n }\n\n subscribeToChanges(): void {\n if (this.childNgModel) {\n this.childNgModel.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => this.changeHiddenText(value));\n return;\n }\n\n fromEvent(this.inputElement, 'input')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeHiddenText(this.inputElement.value));\n }\n\n changeHiddenText = (newValue: unknown): void => {\n if (this.hiddenText) {\n this.hiddenText.data = `${newValue ?? ''} `;\n }\n };\n}\n\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { ButtonComponent } from '../../button/public-api';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { MapaMaskAutofillSyncDirective } from '../../../core/directives/mapa-mask-autofill-sync.directive';\nimport { MatInputAutosizeDirective } from '../../../core/directives/mat-input-autosize.directive';\nimport { InputText } from '../../../core/elements/input-text';\n\n@Component({\n selector: 'mapa-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ButtonComponent,\n MatInputAutosizeDirective,\n MapaMaskAutofillSyncDirective,\n MapaFormErrorsComponent,\n ],\n providers: [\n provideNgxMask(),\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MapaInputComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class MapaInputComponent implements ControlValueAccessor {\n @Input() formControl!: FormControl<unknown>;\n @Input() element!: InputText;\n @Input() type!: string;\n @Output() suffix: EventEmitter<void> = new EventEmitter<void>();\n\n writeValue(_value: unknown): void {\n // No-op: the inner <input> is bound directly to the @Input formControl,\n // so writes from the parent FormControl already propagate through it.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op: change propagation is handled by the DefaultValueAccessor on the\n // inner <input matInput [formControl]=\"formControl\"> binding.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op for the same reason.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op: disabled state is propagated via the @Input formControl directly.\n }\n\n hasValue(): boolean {\n return !!this.formControl?.value;\n }\n\n clearValue(): void {\n this.formControl?.setValue(null);\n }\n\n suffixEmit(): void {\n this.suffix.emit();\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-input__label\">\n {{ element.label }}\n</label>\n<div class=\"mapa-form--inline\">\n <mat-form-field\n class=\"mapa-input\"\n [class.mapa-input--autosize]=\"element.autosize\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n >\n <mat-icon *ngIf=\"element.prefix\" class=\"mapa-input--prefix\" matPrefix>\n {{ element.prefix }}\n </mat-icon>\n <input\n *ngIf=\"element.autosize\"\n matInput\n matInputAutosize\n [matInputAutosizeMinWidth]=\"element.autosizeMinWidth!\"\n [matInputAutosizeMaxWidth]=\"element.autosizeMaxWidth!\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n thousandSeparator=\".\"\n decimalMarker=\",\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <input\n matInput\n *ngIf=\"!element.autosize\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <button\n *ngIf=\"hasValue() && !formControl.disabled && element.clearValue\"\n type=\"button\"\n tabindex=\"-1\"\n matSuffix\n aria-label=\"Limpar\"\n (click)=\"clearValue()\"\n class=\"mapa-input--close\"\n >\n &times;\n </button>\n <mat-icon\n *ngIf=\"element.suffix\"\n class=\"mapa-input--suffix\"\n matSuffix\n (click)=\"suffix.emit()\"\n >\n {{ element.suffix }}\n </mat-icon>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n </mat-form-field>\n\n <div *ngIf=\"element.actionButton\" class=\"mapa-form--action\">\n <mapa-button\n color=\"basic\"\n (clicked)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui input\n */\n\nexport * from './src/input.component';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatRadioModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class RadioButtonComponent implements ControlValueAccessor, OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n\n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n writeValue(_value: unknown): void {\n // No-op: inner <mat-radio-group [formControl]=\"formControl\"> handles binding.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op.\n }\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onSelectionChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-radio-button__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-radio-button\">\n <mat-radio-group [formControl]=\"formControl\" [value]=\"selectedOption\" (change)=\"onSelectionChange($event.value)\">\n <mat-radio-button\n *ngFor=\"let option of options\"\n [value]=\"option\"\n >\n {{ option.value }}\n </mat-radio-button>\n </mat-radio-group>\n</section>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/radio-button.component';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrl: './slide-toggle.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatSlideToggleModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class SlideToggleComponent implements ControlValueAccessor, OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n\n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n writeValue(_value: unknown): void {\n // No-op: inner <mat-slide-toggle [formControl]=\"formControl\"> handles binding.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op.\n }\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onSelectionChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-slide-toggle__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-slide-toggle\">\n <mat-slide-toggle [formControl]=\"formControl\" color=\"primary\">\n {{ element.status ? ( formControl.value ? element.status[1].label :\n element.status[0].label ) :( formControl.value ? \"Ativo\" : \"Inativo\" ) }}\n </mat-slide-toggle>\n</section>\n","/*\n * Public API Surface of mapa-library-ui slide-toggle\n */\n\nexport * from './src/slide-toggle.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { Textarea } from '../../../core/elements/textarea';\n\n@Component({\n selector: 'mapa-textarea',\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MapaFormErrorsComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MapaTextareaComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class MapaTextareaComponent implements ControlValueAccessor {\n @Input() formControl!: FormControl;\n @Input() element!: Textarea;\n\n writeValue(_value: unknown): void {\n // No-op: inner <textarea [formControl]=\"formControl\"> handles binding.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op.\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-textarea__label\">\n {{ element.label }}\n</label>\n<mat-form-field\n class=\"mapa-textarea\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <textarea\n *ngIf=\"element.autosize\"\n class=\"mapa-textarea__control mapa-textarea__control--autosize\"\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"element.autosizeMinRow\"\n [cdkAutosizeMaxRows]=\"element.autosizeMaxRow\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <textarea\n class=\"mapa-textarea__control mapa-textarea__control--manual\"\n matInput\n *ngIf=\"!element.autosize\"\n [maxlength]=\"element.maxLength\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n</mat-form-field>\n","/*\n * Public API Surface of mapa-library-ui textarea\n */\n\nexport * from './src/textarea.component';\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 { merge } from 'rxjs';\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 merge(this.control.events, this.formGroup.events)\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 [class.mapa-datepicker--invalid]=\"shouldShowError()\"\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\">&ndash;</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 &times;\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 &times;\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","import { Injectable, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nexport function sanitizeHtmlContent(\n sanitizer: DomSanitizer,\n value?: string | null\n): string {\n return sanitizer.sanitize(SecurityContext.HTML, value ?? \"\") ?? \"\";\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class HtmlSanitizerService {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n sanitize(value?: string | null): string {\n return sanitizeHtmlContent(this.sanitizer, value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { HtmlSanitizerService } from \"../services/html-sanitizer.service\";\n\n@Pipe({\n name: \"safeHtml\",\n standalone: true,\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private readonly htmlSanitizer: HtmlSanitizerService) {}\n\n transform(value?: string | null): string {\n return this.htmlSanitizer.sanitize(value);\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from \"@angular/cdk/overlay\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n forwardRef,\n inject,\n signal,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from \"@angular/forms\";\nimport { EMPTY, merge, Subscription } from \"rxjs\";\nimport { ButtonComponent } from \"../../button/public-api\";\nimport { MapaFormErrorsComponent } from \"../../../core/components/form-errors/form-errors.component\";\nimport { Dropdown } from \"../../../core/elements/dropdown\";\nimport { ElementGroup } from \"../../../core/interfaces/element-group.interface\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\n\n@Component({\n selector: \"mapa-dropdown\",\n standalone: true,\n imports: [\n ReactiveFormsModule,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ButtonComponent,\n MapaFormErrorsComponent,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MapaDropdownComponent),\n multi: true,\n },\n ],\n templateUrl: \"./dropdown.component.html\",\n styleUrl: \"./dropdown.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapaDropdownComponent implements ControlValueAccessor {\n private readonly i18n = inject(MapaI18nService);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly isOpenState = signal(false);\n private readonly overlayWidthState = signal(0);\n private formControlValue!: FormControl<unknown>;\n private formControlChanges?: Subscription;\n\n @Input({ required: true }) element!: Dropdown;\n @Input({ required: true })\n set formControl(control: FormControl<unknown>) {\n this.formControlChanges?.unsubscribe();\n this.formControlValue = control;\n this.formControlChanges = merge(\n control.events,\n control.parent?.events ?? EMPTY,\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.cdr.markForCheck());\n }\n\n get formControl(): FormControl<unknown> {\n return this.formControlValue;\n }\n @Input() formControlSearch?: FormControl<string | null>;\n @Input() border: \"soft\" | \"tag\" | \"highlight\" | null | undefined;\n @Output() openedChange = new EventEmitter<boolean>();\n\n @ViewChild(\"triggerButton\")\n private triggerButton?: ElementRef<HTMLButtonElement>;\n @ViewChild(\"searchInput\")\n private searchInput?: ElementRef<HTMLInputElement>;\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\n writeValue(_value: unknown): void {\n // The inner control is bound directly through the formControl input.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // Changes are propagated by the supplied formControl.\n }\n\n registerOnTouched(_fn: () => void): void {\n // Touch state is propagated by the supplied formControl.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Disabled state is propagated by the supplied formControl.\n }\n\n isOpen(): boolean {\n return this.isOpenState();\n }\n\n overlayWidth(): number {\n return this.overlayWidthState();\n }\n\n isMultiple(): boolean {\n return !!this.element.multiple;\n }\n\n isDisabled(): boolean {\n return !!this.formControl?.disabled;\n }\n\n hasGroups(): boolean {\n return this.isElementGroup(this.element.options?.[0]);\n }\n\n selectedOptions(): ElementOption[] {\n const value = this.formControl?.value;\n\n if (Array.isArray(value)) {\n return value.filter((option): option is ElementOption =>\n this.isElementOption(option),\n );\n }\n\n return this.isElementOption(value) ? [value] : [];\n }\n\n selectedLabel(): string {\n const selected = this.selectedOptions();\n if (!selected.length) {\n return this.element.placeholder || \"\";\n }\n\n return selected.map((option) => option.value).join(\", \");\n }\n\n isOptionSelected(option: ElementOption): boolean {\n return this.selectedOptions().some(\n (selected) => selected.key === option.key,\n );\n }\n\n hasValue(): boolean {\n return this.selectedOptions().length > 0;\n }\n\n get selectAllLabel(): string {\n return this.i18n.textsSignal().common.selectAll;\n }\n\n isAllSelected(): boolean {\n const options = this.visibleOptions();\n return (\n options.length > 0 &&\n options.every((option) => this.isOptionSelected(option))\n );\n }\n\n isIndeterminate(): boolean {\n const options = this.visibleOptions();\n const selectedCount = options.filter((option) =>\n this.isOptionSelected(option),\n ).length;\n return selectedCount > 0 && selectedCount < options.length;\n }\n\n toggleSelectAll(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const options = this.visibleOptions();\n const next = this.isAllSelected() ? [] : options.slice();\n this.formControl.setValue(next);\n this.markControlAsChanged();\n }\n\n options(): ElementOption[] {\n if (this.hasGroups()) {\n return (this.element.options as ElementGroup[]).flatMap(\n (group) => group.options,\n );\n }\n\n return (this.element.options as ElementOption[]) ?? [];\n }\n\n filteredOptions(): ElementOption[] {\n const options = this.hasGroups() ? [] : this.options();\n const searchTerm = this.normalizedSearchTerm();\n\n if (!searchTerm) {\n return options;\n }\n\n return options.filter((option) =>\n this.normalizeValue(option.value).includes(searchTerm),\n );\n }\n\n filteredGroups(): ElementGroup[] {\n if (!this.hasGroups()) {\n return [];\n }\n\n const groups = this.element.options as ElementGroup[];\n const searchTerm = this.normalizedSearchTerm();\n\n if (!searchTerm) {\n return groups;\n }\n\n return groups\n .map((group) => ({\n label: group.label,\n options: this.normalizeValue(group.label).includes(searchTerm)\n ? group.options\n : group.options.filter((option) =>\n this.normalizeValue(option.value).includes(searchTerm),\n ),\n }))\n .filter((group) => group.options.length > 0);\n }\n\n visibleOptions(): ElementOption[] {\n return this.hasGroups()\n ? this.filteredGroups().flatMap((group) => group.options)\n : this.filteredOptions();\n }\n\n hasSearch(): boolean {\n return !!this.searchControl;\n }\n\n searchPlaceholder(): string {\n return this.element.search?.placeholder ?? \"\";\n }\n\n emptyStateLabel(): string {\n return this.element.search?.noEntriesFoundLabel ?? \"\";\n }\n\n shouldShowError(): boolean {\n return (\n this.formControl.invalid &&\n (this.formControl.dirty || this.formControl.touched)\n );\n }\n\n optionPadding(option: ElementOption): number {\n const level = Math.max(0, option.childrenLevel ?? 0);\n return level === 0 ? 16 : 10 + level * 20;\n }\n\n toggleDropdown(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const isOpening = !this.isOpenState();\n this.setOpenState(isOpening);\n\n if (isOpening) {\n this.overlayWidthState.set(\n this.triggerButton?.nativeElement.offsetWidth ?? 0,\n );\n this.searchControl?.setValue(\"\", { emitEvent: true });\n setTimeout(() => {\n this.triggerButton?.nativeElement.blur();\n this.searchInput?.nativeElement.focus();\n this.searchInput?.nativeElement.select();\n });\n return;\n }\n\n this.markAsTouchedIfEmpty();\n }\n\n selectOption(option: ElementOption): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isMultiple()) {\n this.toggleOption(option);\n return;\n }\n\n this.formControl.setValue(option);\n this.markControlAsChanged();\n this.closeDropdown();\n }\n\n clearValue(event: Event): void {\n event.stopPropagation();\n if (this.isDisabled()) {\n return;\n }\n\n this.formControl.setValue(this.isMultiple() ? [] : null);\n this.markControlAsChanged();\n }\n\n closeDropdown(): void {\n if (this.isOpenState()) {\n this.setOpenState(false);\n }\n this.searchControl?.setValue(\"\", { emitEvent: true });\n this.markAsTouchedIfEmpty();\n }\n\n handleOverlayOutsideClick(event: Event): void {\n if (this.triggerButton?.nativeElement.contains(event.target as Node)) {\n return;\n }\n this.closeDropdown();\n }\n\n @HostListener(\"window:resize\")\n handleWindowResize(): void {\n if (this.isOpenState()) {\n this.overlayWidthState.set(\n this.triggerButton?.nativeElement.offsetWidth ?? 0,\n );\n }\n }\n\n get searchControl(): FormControl<string | null> | undefined {\n return (this.element.search?.formControl ?? this.formControlSearch) as\n | FormControl<string | null>\n | undefined;\n }\n\n private toggleOption(option: ElementOption): void {\n const current = this.selectedOptions();\n const next = this.isOptionSelected(option)\n ? current.filter((selected) => selected.key !== option.key)\n : [...current, option];\n this.formControl.setValue(next);\n this.markControlAsChanged();\n }\n\n private normalizedSearchTerm(): string {\n return this.normalizeValue(this.searchControl?.value?.trim());\n }\n\n private normalizeValue(value?: string | null): string {\n return (value ?? \"\")\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLocaleLowerCase();\n }\n\n private isElementGroup(\n value: ElementOption | ElementGroup | undefined,\n ): value is ElementGroup {\n return !!value && \"label\" in value && \"options\" in value;\n }\n\n private isElementOption(value: unknown): value is ElementOption {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"key\" in value &&\n \"value\" in value\n );\n }\n\n private markControlAsChanged(): void {\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n }\n\n private markAsTouchedIfEmpty(): void {\n if (!this.hasValue()) {\n this.formControl.markAsTouched();\n }\n }\n\n private setOpenState(isOpen: boolean): void {\n this.isOpenState.set(isOpen);\n this.openedChange.emit(isOpen);\n }\n}\n","<div\n class=\"mapa-dropdown\"\n [class.mapa-dropdown--open]=\"isOpen()\"\n [class.mapa-dropdown--invalid]=\"shouldShowError()\"\n [class.mapa-dropdown--disabled]=\"isDisabled()\"\n [class.mapa-dropdown--highlight]=\"border === 'highlight'\"\n [class.mapa-dropdown--soft-border]=\"border === 'soft'\"\n [class.mapa-dropdown--tag]=\"border === 'tag'\"\n>\n @if (element.label) {\n <label class=\"mapa-dropdown__label\" [attr.for]=\"element.key || null\">\n {{ element.label }}\n </label>\n }\n\n <div class=\"mapa-dropdown__field-row\">\n <button\n #triggerButton\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n class=\"mapa-dropdown__trigger\"\n [class.mapa-dropdown__trigger--clearable]=\"hasValue() && element.clearValue\"\n [id]=\"element.key || null\"\n type=\"button\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n >\n <span\n class=\"mapa-dropdown__trigger-text\"\n [class.mapa-dropdown__trigger-text--placeholder]=\"!hasValue()\"\n [innerHTML]=\"selectedLabel() | safeHtml\"\n ></span>\n @if (hasValue() && !isDisabled() && element.clearValue) {\n <span\n class=\"mapa-dropdown__clear\"\n role=\"button\"\n aria-label=\"Limpar\"\n (click)=\"clearValue($event)\"\n >\n &times;\n </span>\n }\n </button>\n\n @if (element.actionButton) {\n <mapa-button\n class=\"mapa-dropdown__action\"\n color=\"basic\"\n (clicked)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n cdkConnectedOverlayPanelClass=\"mapa-dropdown__overlay-pane\"\n (overlayOutsideClick)=\"handleOverlayOutsideClick($event)\"\n >\n <div class=\"mapa-dropdown__panel\">\n @if (hasSearch()) {\n <input\n #searchInput\n class=\"mapa-dropdown__search-input\"\n type=\"text\"\n [formControl]=\"searchControl!\"\n [placeholder]=\"searchPlaceholder()\"\n />\n }\n\n <div class=\"mapa-dropdown__options\" role=\"listbox\">\n @if (isMultiple() && visibleOptions().length) {\n <button\n class=\"mapa-dropdown__option mapa-dropdown__option--select-all\"\n type=\"button\"\n (click)=\"toggleSelectAll()\"\n >\n <input\n class=\"mapa-dropdown__checkbox\"\n type=\"checkbox\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isIndeterminate()\"\n (click)=\"$event.stopPropagation(); toggleSelectAll()\"\n />\n {{ selectAllLabel }}\n </button>\n }\n\n @if (hasGroups()) {\n @for (group of filteredGroups(); track group.label) {\n <div class=\"mapa-dropdown__group\" role=\"group\">\n <p class=\"mapa-dropdown__group-label\">{{ group.label }}</p>\n @for (option of group.options; track option.key) {\n <button\n class=\"mapa-dropdown__option\"\n [class.mapa-dropdown__option--selected]=\"isOptionSelected(option)\"\n [style.padding-left.px]=\"optionPadding(option)\"\n type=\"button\"\n (click)=\"selectOption(option)\"\n >\n @if (isMultiple()) {\n <input\n class=\"mapa-dropdown__checkbox\"\n type=\"checkbox\"\n [checked]=\"isOptionSelected(option)\"\n (click)=\"$event.stopPropagation(); selectOption(option)\"\n />\n }\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </button>\n }\n </div>\n }\n } @else {\n @for (option of filteredOptions(); track option.key) {\n <button\n class=\"mapa-dropdown__option\"\n [class.mapa-dropdown__option--selected]=\"isOptionSelected(option)\"\n [style.padding-left.px]=\"optionPadding(option)\"\n type=\"button\"\n (click)=\"selectOption(option)\"\n >\n @if (isMultiple()) {\n <input\n class=\"mapa-dropdown__checkbox\"\n type=\"checkbox\"\n [checked]=\"isOptionSelected(option)\"\n (click)=\"$event.stopPropagation(); selectOption(option)\"\n />\n }\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </button>\n }\n }\n\n @if (!visibleOptions().length) {\n <p class=\"mapa-dropdown__empty-state\">\n {{ emptyStateLabel() }}\n </p>\n }\n </div>\n </div>\n </ng-template>\n\n @if (shouldShowError()) {\n <p class=\"mapa-dropdown__error\">\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </p>\n } @else if (element.hint) {\n <p class=\"mapa-dropdown__hint\">{{ element.hint }}</p>\n }\n</div>\n","/*\n * Public API Surface of mapa-library-ui dropdown\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { Dropdown } from '../../../core/elements/dropdown';\nimport { DropdownTree } from '../../../core/elements/dropdown-tree';\nimport {\n ElementOption,\n ElementTreeNode,\n} from '../../../core/interfaces/element-option.interface';\nimport { MapaDropdownComponent } from '../../dropdown/public-api';\n\nexport interface DataNode extends ElementTreeNode {}\n\n@Component({\n selector: 'mapa-dropdown-tree',\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MapaDropdownComponent],\n standalone: true\n})\nexport class MapaDropdownTreeComponent\n implements OnInit, OnChanges, AfterViewInit\n{\n @Input() formGroup!: FormGroup;\n @Input() element!: DropdownTree;\n elementOption!: Dropdown;\n formControl!: FormControl<unknown>;\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.syncElementOption();\n }\n\n ngAfterViewInit(): void {\n Promise.resolve().then(() => this.cdr.detectChanges());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element'] || changes['formGroup']) {\n this.syncElementOption();\n }\n }\n\n getFormControl(element: Dropdown): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n private syncElementOption(): void {\n if (!this.element || !this.formGroup) {\n return;\n }\n\n const options = this.formatTree(this.element.tree);\n\n this.elementOption = {\n ...this.element,\n options,\n };\n\n this.formControl = this.getFormControl(this.elementOption);\n }\n\n formatTree(\n tree: ElementTreeNode[],\n childrenLevel: number = 0\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n tree.map((item: ElementTreeNode) => {\n options.push({\n value: item.value,\n key: item.key,\n childrenLevel,\n });\n if (item.children) {\n options.push(\n ...this.formatTree(\n this.formatTreeChildren(item.children, childrenLevel + 1),\n childrenLevel + 1\n )\n );\n }\n });\n return options;\n }\n\n formatTreeChildren(\n children: ElementTreeNode[],\n childrenLevel: number\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n children.map((item) => {\n options.push({\n value: item.value,\n key: item.key,\n children: item.children,\n childrenLevel,\n });\n });\n\n return options;\n }\n\n triggerOpenedChange(event: boolean): void {\n this.openedChange.emit(event);\n }\n}\n\n","<section *ngIf=\"elementOption && formControl\">\n <mapa-dropdown\n [formControl]=\"formControl\"\n [element]=\"elementOption\"\n (openedChange)=\"triggerOpenedChange($event)\"\n ></mapa-dropdown>\n</section>\n","/*\n * Public API Surface of mapa-library-ui dropdown-tree\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from \"@angular/core\";\nimport { FormControl, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { ElementBase } from \"../../../core/elements/element-base\";\nimport { MapaDatepicker } from \"../../datepicker/public-api\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { MapaDropdownComponent } from \"../../dropdown/public-api\";\nimport { MapaDropdownTreeComponent } from \"../../dropdown-tree/public-api\";\nimport { MapaInputComponent } from \"../../input/public-api\";\nimport { RadioButtonComponent } from \"../../radio-button/public-api\";\nimport { SlideToggleComponent } from \"../../slide-toggle/public-api\";\nimport { MapaTextareaComponent } from \"../../textarea/public-api\";\n\n\n@Component({\n selector: \"mapa-form\",\n templateUrl: \"./form.component.html\",\n styleUrl: \"./form.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MapaDatepicker,\n MapaInputComponent,\n MapaDropdownComponent,\n MapaDropdownTreeComponent,\n RadioButtonComponent,\n SlideToggleComponent,\n MapaTextareaComponent,\n ],\n standalone: true\n})\nexport class MapaFormComponent {\n @Input() formGroup!: FormGroup;\n @Input() elements: ElementBase[] = [];\n @Output() emitter: EventEmitter<ElementBase> = new EventEmitter<ElementBase>();\n \n getFormControl(element: ElementBase): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n onOptionSelected(optionValue: ElementOption): void {\n const radioControl = this.formGroup.get(\"radio\");\n if (radioControl) {\n radioControl.setValue(optionValue.key);\n }\n }\n\n emitSuffix(element: ElementBase): void {\n this.emitter.emit(element);\n }\n\n triggerOpenedChange(element: ElementBase, event: boolean): void {\n element.openedChange?.emit(event);\n } \n}\n\n","<section class=\"mapa-form\">\n @for (element of elements; track element.key) {\n <div class=\"mapa-form__element\">\n <div class=\"mapa-form__element--type\">\n @switch (element.controlType) {\n @case (\"input\") {\n <mapa-input\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (suffix)=\"emitSuffix(element)\"\n ></mapa-input>\n }\n @case (\"dropdown\") {\n <mapa-dropdown\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (openedChange)=\"triggerOpenedChange(element, $event)\"\n ></mapa-dropdown>\n }\n @case (\"dropdown-tree\") {\n <mapa-dropdown-tree\n [formGroup]=\"formGroup\"\n [element]=\"element\"\n ></mapa-dropdown-tree>\n }\n @case (\"datepicker\") {\n <mapa-datepicker\n [formGroup]=\"$any(formGroup)\"\n [element]=\"$any(element)\"\n ></mapa-datepicker>\n }\n @case (\"radio-button\") {\n <mapa-radio-button\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (optionSelected)=\"onOptionSelected($event)\"\n ></mapa-radio-button>\n }\n @case (\"slide-toggle\") {\n <mapa-slide-toggle\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-slide-toggle>\n }\n @case (\"textarea\") {\n <mapa-textarea\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-textarea>\n }\n }\n </div>\n </div>\n }\n</section>\n","/*\n * Public API Surface of mapa-library-ui form\n */\n\nexport * from './src/form.component';\n","/*\n * Public API Surface of mapa-library-ui form\n */\n\nexport * from './lib/components/button/public-api';\nexport * from './lib/components/input/public-api';\nexport * from './lib/components/radio-button/public-api';\nexport * from './lib/components/slide-toggle/public-api';\nexport * from './lib/components/textarea/public-api';\n\nexport * from './lib/components/form/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './form';\n"],"names":["i1.MapaI18nService","i1.ValidationMessageResolverService","i1","i5","i3","i4","i2","i1.HtmlSanitizerService"],"mappings":"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"}
1
+ {"version":3,"file":"mapa-library-ui-src-lib-components-form.mjs","sources":["../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.ts","../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.html","../../../projects/mapa-library-ui/src/lib/components/button/public-api.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/directives/mat-input-autosize.directive.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.html","../../../projects/mapa-library-ui/src/lib/components/input/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.html","../../../projects/mapa-library-ui/src/lib/components/radio-button/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.html","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.html","../../../projects/mapa-library-ui/src/lib/components/textarea/public-api.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/lib/core/services/html-sanitizer.service.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/safe-html.pipe.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.html","../../../projects/mapa-library-ui/src/lib/components/form/public-api.ts","../../../projects/mapa-library-ui/src/form.ts","../../../projects/mapa-library-ui/src/mapa-library-ui-src-lib-components-form.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'mapa-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n standalone: true,\n})\nexport class ButtonComponent {\n @Input() color: 'primary' | 'accent' | 'basic' | null | undefined;\n @Input() disabled!: boolean;\n @Input() shape: 'pill' | 'rounded' = 'rounded';\n @Input() fullWidth = false;\n @Output() clicked: EventEmitter<void> = new EventEmitter<void>();\n\n onClick(): void {\n this.clicked.emit();\n }\n}\n","<button\n class=\"mapa-button\"\n (click)=\"onClick()\"\n [class.primary]=\"color === 'primary'\"\n [class.accent]=\"color === 'accent'\"\n [class.basic]=\"color === 'basic'\"\n [class.mapa-button--rounded]=\"shape === 'rounded'\"\n [class.mapa-button--full-width]=\"fullWidth\"\n [disabled]=\"disabled\"\n>\n <ng-content></ng-content>\n</button>\n","/*\n * Public API Surface of mapa-library-ui button\n */\n\nexport * from './src/button.component';\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\nfunction formatItemCount(count: number): string {\n return `${count} ${count === 1 ? 'item' : 'itens'}`;\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 report: {\n summarized: 'Resumida',\n detailed: 'Detalhada',\n list: 'Lista',\n chart: 'Gráfico',\n viewModeLabel: 'Modo de visualização',\n readingInformationTitle: 'Informações de leitura',\n dimensionTitle: 'Dimensão',\n indicatorTitle: 'Indicador',\n conceptTitle: 'Conceito',\n classificationTitle: 'Classificação',\n resultReadingTitle: 'Leitura do resultado',\n resultTitle: 'Resultado',\n globalAverageTitle: 'Média global',\n factorsTitle: 'Fatores relativos à organização e ao trabalho',\n strongPointsTitle: 'Pontos fortes',\n attentionPointsTitle: 'Pontos de atenção',\n vulnerabilitiesTitle: 'Vulnerabilidades socioemocionais',\n positiveDirectionLabel: 'Direção positiva',\n negativeDirectionLabel: 'Direção negativa',\n lowerIntensityLabel: 'Menos intensamente',\n higherIntensityLabel: 'Mais intensamente',\n noClassification: 'Sem classificação',\n emptyState: 'Não há resultados disponíveis para esta seção.',\n interpretationTitle: 'Interpretação',\n detailedListLabel: 'Lista detalhada',\n groupAverageTitle: 'Média geral do grupo',\n groupDistributionLabel: 'Distribuição do grupo',\n overallPercentageTitle: '% Geral',\n summarizedReportTitle: 'Relatório resumido',\n detailedReportTitle: 'Relatório detalhado',\n competenciesAndDimensionsTitle: 'Competências e dimensões',\n parameterizationRankingTitle: 'Ranqueamento da parametrização',\n groupsTitle: 'Grupos',\n competenciesTitle: 'Competências',\n finalClassificationTitle: 'Classificação final',\n evaluationDateTitle: 'Data da avaliação',\n unitTitle: 'Unidade',\n positionTitle: 'Cargo',\n scaleConceptTitle: 'Conceito da escala',\n psychosocialFactorsTitle: 'Fatores psicossociais',\n editConclusionLabel: 'Editar conclusão',\n addConclusionLabel: 'Adicionar conclusão',\n meterLabel: (name: string, value: number) => `${name}: ${value}%`,\n gaugeLabel: (name: string, value: number) => `${name}: ${value}%`,\n itemCountLabel: formatItemCount,\n continueLabel: 'Continuar',\n newGroupTitle: 'Novo grupo',\n groupNameHint: 'Esse nome identifica o grupo nas tabelas, gráficos e legendas.',\n groupNameRequired: 'Informe o nome do grupo.',\n groupPeopleRequired: 'Selecione pelo menos uma pessoa para criar o grupo.',\n groupMinimumHint: 'Crie pelo menos dois grupos para comparar.',\n groupUnsavedHint: 'Salve ou cancele as alterações em edição antes de analisar os resultados.',\n groupSavedLabel: (name: string) => `Grupo ${name} salvo.`,\n groupCountLabel: (count: number, limit: number) => `${count} de ${limit} grupos criados`,\n scaleCountLabel: (count: number) =>\n `${count} ${count === 1 ? 'escala' : 'escalas'}`,\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 horizontalScrollHint: 'Role horizontalmente para ver todas as colunas →',\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 report: { ...defaults.report, ...(customTexts?.report ?? {}) },\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","/*\n* Originally from: https://github.com/anotherkitten/mat-input-autosize\n* @author: Ellie Larson (anotherkitten)\n*/\n\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n Optional,\n Self,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgModel } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n selector: '[matInputAutosize]',\n standalone: true,\n})\nexport class MatInputAutosizeDirective implements AfterViewInit {\n inputElement: HTMLInputElement;\n hiddenText!: Text;\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() matInputAutosizeMaxWidth?: string | null;\n @Input() matInputAutosizeMinWidth = '120px';\n @Input() matInputAutosizeFontStyle?: string | null;\n\n constructor(\n el: ElementRef<HTMLInputElement>,\n @Self() private childMatInput: MatInput,\n @Optional() @Self() private childNgModel: NgModel\n ) {\n this.inputElement = el.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.checkErrors();\n this.overwriteParentWidth();\n this.createHiddenTextContainer();\n this.setOwnStyles();\n this.subscribeToChanges();\n }\n\n checkErrors(): void {\n if (!(this.inputElement instanceof HTMLInputElement)) {\n throw new Error('matInputAutosize directive must be on an input element');\n }\n\n if (!this.childMatInput) {\n throw new Error(\n 'Element with matInputAutosize directive must also have the matInput directive'\n );\n }\n }\n\n overwriteParentWidth(): void {\n Object.assign((this.inputElement.parentNode as HTMLElement).style, {\n width: '100%',\n });\n }\n\n createHiddenTextContainer(): void {\n const textContainer = document.createElement('div');\n Object.assign(textContainer.style, {\n display: 'inline-block',\n 'max-width': this.matInputAutosizeMaxWidth || null,\n 'min-width': `max(var(--mapa-input-autosize-preferred-width, 0px), ${this.matInputAutosizeMinWidth})`,\n font: this.matInputAutosizeFontStyle || null,\n visibility: 'hidden',\n 'white-space': 'pre',\n });\n this.inputElement.parentNode?.appendChild(textContainer);\n\n this.hiddenText = document.createTextNode(' ');\n textContainer.appendChild(this.hiddenText);\n }\n\n setOwnStyles(): void {\n Object.assign(this.inputElement.style, {\n position: 'absolute',\n left: '0',\n });\n }\n\n subscribeToChanges(): void {\n if (this.childNgModel) {\n this.childNgModel.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => this.changeHiddenText(value));\n return;\n }\n\n fromEvent(this.inputElement, 'input')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeHiddenText(this.inputElement.value));\n }\n\n changeHiddenText = (newValue: unknown): void => {\n if (this.hiddenText) {\n this.hiddenText.data = `${newValue ?? ''} `;\n }\n };\n}\n\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { ButtonComponent } from '../../button/public-api';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { MapaMaskAutofillSyncDirective } from '../../../core/directives/mapa-mask-autofill-sync.directive';\nimport { MatInputAutosizeDirective } from '../../../core/directives/mat-input-autosize.directive';\nimport { InputText } from '../../../core/elements/input-text';\n\n@Component({\n selector: 'mapa-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ButtonComponent,\n MatInputAutosizeDirective,\n MapaMaskAutofillSyncDirective,\n MapaFormErrorsComponent,\n ],\n providers: [\n provideNgxMask(),\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MapaInputComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class MapaInputComponent implements ControlValueAccessor {\n @Input() formControl!: FormControl<unknown>;\n @Input() element!: InputText;\n @Input() type!: string;\n @Output() suffix: EventEmitter<void> = new EventEmitter<void>();\n\n writeValue(_value: unknown): void {\n // No-op: the inner <input> is bound directly to the @Input formControl,\n // so writes from the parent FormControl already propagate through it.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op: change propagation is handled by the DefaultValueAccessor on the\n // inner <input matInput [formControl]=\"formControl\"> binding.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op for the same reason.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op: disabled state is propagated via the @Input formControl directly.\n }\n\n hasValue(): boolean {\n return !!this.formControl?.value;\n }\n\n clearValue(): void {\n this.formControl?.setValue(null);\n }\n\n suffixEmit(): void {\n this.suffix.emit();\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-input__label\">\n {{ element.label }}\n</label>\n<div class=\"mapa-form--inline\">\n <mat-form-field\n class=\"mapa-input\"\n [class.mapa-input--autosize]=\"element.autosize\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n >\n <mat-icon *ngIf=\"element.prefix\" class=\"mapa-input--prefix\" matPrefix>\n {{ element.prefix }}\n </mat-icon>\n <input\n *ngIf=\"element.autosize\"\n matInput\n matInputAutosize\n [matInputAutosizeMinWidth]=\"element.autosizeMinWidth!\"\n [matInputAutosizeMaxWidth]=\"element.autosizeMaxWidth!\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n thousandSeparator=\".\"\n decimalMarker=\",\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <input\n matInput\n *ngIf=\"!element.autosize\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <button\n *ngIf=\"hasValue() && !formControl.disabled && element.clearValue\"\n type=\"button\"\n tabindex=\"-1\"\n matSuffix\n aria-label=\"Limpar\"\n (click)=\"clearValue()\"\n class=\"mapa-input--close\"\n >\n &times;\n </button>\n <mat-icon\n *ngIf=\"element.suffix\"\n class=\"mapa-input--suffix\"\n matSuffix\n (click)=\"suffix.emit()\"\n >\n {{ element.suffix }}\n </mat-icon>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n </mat-form-field>\n\n <div *ngIf=\"element.actionButton\" class=\"mapa-form--action\">\n <mapa-button\n color=\"basic\"\n (clicked)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui input\n */\n\nexport * from './src/input.component';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatRadioModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class RadioButtonComponent implements ControlValueAccessor, OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n\n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n writeValue(_value: unknown): void {\n // No-op: inner <mat-radio-group [formControl]=\"formControl\"> handles binding.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op.\n }\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onSelectionChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-radio-button__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-radio-button\">\n <mat-radio-group [formControl]=\"formControl\" [value]=\"selectedOption\" (change)=\"onSelectionChange($event.value)\">\n <mat-radio-button\n *ngFor=\"let option of options\"\n [value]=\"option\"\n >\n {{ option.value }}\n </mat-radio-button>\n </mat-radio-group>\n</section>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/radio-button.component';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrl: './slide-toggle.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatSlideToggleModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class SlideToggleComponent implements ControlValueAccessor, OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n\n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n writeValue(_value: unknown): void {\n // No-op: inner <mat-slide-toggle [formControl]=\"formControl\"> handles binding.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op.\n }\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onSelectionChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-slide-toggle__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-slide-toggle\">\n <mat-slide-toggle [formControl]=\"formControl\" color=\"primary\">\n {{ element.status ? ( formControl.value ? element.status[1].label :\n element.status[0].label ) :( formControl.value ? \"Ativo\" : \"Inativo\" ) }}\n </mat-slide-toggle>\n</section>\n","/*\n * Public API Surface of mapa-library-ui slide-toggle\n */\n\nexport * from './src/slide-toggle.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { Textarea } from '../../../core/elements/textarea';\n\n@Component({\n selector: 'mapa-textarea',\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MapaFormErrorsComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MapaTextareaComponent),\n multi: true,\n },\n ],\n standalone: true\n})\nexport class MapaTextareaComponent implements ControlValueAccessor {\n @Input() formControl!: FormControl;\n @Input() element!: Textarea;\n\n writeValue(_value: unknown): void {\n // No-op: inner <textarea [formControl]=\"formControl\"> handles binding.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // No-op.\n }\n\n registerOnTouched(_fn: () => void): void {\n // No-op.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // No-op.\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-textarea__label\">\n {{ element.label }}\n</label>\n<mat-form-field\n class=\"mapa-textarea\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <textarea\n *ngIf=\"element.autosize\"\n class=\"mapa-textarea__control mapa-textarea__control--autosize\"\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"element.autosizeMinRow\"\n [cdkAutosizeMaxRows]=\"element.autosizeMaxRow\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <textarea\n class=\"mapa-textarea__control mapa-textarea__control--manual\"\n matInput\n *ngIf=\"!element.autosize\"\n [maxlength]=\"element.maxLength\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n</mat-form-field>\n","/*\n * Public API Surface of mapa-library-ui textarea\n */\n\nexport * from './src/textarea.component';\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 { merge } from 'rxjs';\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 merge(this.control.events, this.formGroup.events)\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 [class.mapa-datepicker--invalid]=\"shouldShowError()\"\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\">&ndash;</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 &times;\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 &times;\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","import { Injectable, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nexport function sanitizeHtmlContent(\n sanitizer: DomSanitizer,\n value?: string | null\n): string {\n return sanitizer.sanitize(SecurityContext.HTML, value ?? \"\") ?? \"\";\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class HtmlSanitizerService {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n sanitize(value?: string | null): string {\n return sanitizeHtmlContent(this.sanitizer, value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { HtmlSanitizerService } from \"../services/html-sanitizer.service\";\n\n@Pipe({\n name: \"safeHtml\",\n standalone: true,\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private readonly htmlSanitizer: HtmlSanitizerService) {}\n\n transform(value?: string | null): string {\n return this.htmlSanitizer.sanitize(value);\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from \"@angular/cdk/overlay\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n forwardRef,\n inject,\n signal,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from \"@angular/forms\";\nimport { EMPTY, merge, Subscription } from \"rxjs\";\nimport { ButtonComponent } from \"../../button/public-api\";\nimport { MapaFormErrorsComponent } from \"../../../core/components/form-errors/form-errors.component\";\nimport { Dropdown } from \"../../../core/elements/dropdown\";\nimport { ElementGroup } from \"../../../core/interfaces/element-group.interface\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\n\n@Component({\n selector: \"mapa-dropdown\",\n standalone: true,\n imports: [\n ReactiveFormsModule,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ButtonComponent,\n MapaFormErrorsComponent,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MapaDropdownComponent),\n multi: true,\n },\n ],\n templateUrl: \"./dropdown.component.html\",\n styleUrl: \"./dropdown.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapaDropdownComponent implements ControlValueAccessor {\n private readonly i18n = inject(MapaI18nService);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly isOpenState = signal(false);\n private readonly overlayWidthState = signal(0);\n private formControlValue!: FormControl<unknown>;\n private formControlChanges?: Subscription;\n\n @Input({ required: true }) element!: Dropdown;\n @Input({ required: true })\n set formControl(control: FormControl<unknown>) {\n this.formControlChanges?.unsubscribe();\n this.formControlValue = control;\n this.formControlChanges = merge(\n control.events,\n control.parent?.events ?? EMPTY,\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.cdr.markForCheck());\n }\n\n get formControl(): FormControl<unknown> {\n return this.formControlValue;\n }\n @Input() formControlSearch?: FormControl<string | null>;\n @Input() border: \"soft\" | \"tag\" | \"highlight\" | null | undefined;\n @Output() openedChange = new EventEmitter<boolean>();\n\n @ViewChild(\"triggerButton\")\n private triggerButton?: ElementRef<HTMLButtonElement>;\n @ViewChild(\"searchInput\")\n private searchInput?: ElementRef<HTMLInputElement>;\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\n writeValue(_value: unknown): void {\n // The inner control is bound directly through the formControl input.\n }\n\n registerOnChange(_fn: (value: unknown) => void): void {\n // Changes are propagated by the supplied formControl.\n }\n\n registerOnTouched(_fn: () => void): void {\n // Touch state is propagated by the supplied formControl.\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Disabled state is propagated by the supplied formControl.\n }\n\n isOpen(): boolean {\n return this.isOpenState();\n }\n\n overlayWidth(): number {\n return this.overlayWidthState();\n }\n\n isMultiple(): boolean {\n return !!this.element.multiple;\n }\n\n isDisabled(): boolean {\n return !!this.formControl?.disabled;\n }\n\n hasGroups(): boolean {\n return this.isElementGroup(this.element.options?.[0]);\n }\n\n selectedOptions(): ElementOption[] {\n const value = this.formControl?.value;\n\n if (Array.isArray(value)) {\n return value.filter((option): option is ElementOption =>\n this.isElementOption(option),\n );\n }\n\n return this.isElementOption(value) ? [value] : [];\n }\n\n selectedLabel(): string {\n const selected = this.selectedOptions();\n if (!selected.length) {\n return this.element.placeholder || \"\";\n }\n\n return selected.map((option) => option.value).join(\", \");\n }\n\n isOptionSelected(option: ElementOption): boolean {\n return this.selectedOptions().some(\n (selected) => selected.key === option.key,\n );\n }\n\n hasValue(): boolean {\n return this.selectedOptions().length > 0;\n }\n\n get selectAllLabel(): string {\n return this.i18n.textsSignal().common.selectAll;\n }\n\n isAllSelected(): boolean {\n const options = this.visibleOptions();\n return (\n options.length > 0 &&\n options.every((option) => this.isOptionSelected(option))\n );\n }\n\n isIndeterminate(): boolean {\n const options = this.visibleOptions();\n const selectedCount = options.filter((option) =>\n this.isOptionSelected(option),\n ).length;\n return selectedCount > 0 && selectedCount < options.length;\n }\n\n toggleSelectAll(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const options = this.visibleOptions();\n const next = this.isAllSelected() ? [] : options.slice();\n this.formControl.setValue(next);\n this.markControlAsChanged();\n }\n\n options(): ElementOption[] {\n if (this.hasGroups()) {\n return (this.element.options as ElementGroup[]).flatMap(\n (group) => group.options,\n );\n }\n\n return (this.element.options as ElementOption[]) ?? [];\n }\n\n filteredOptions(): ElementOption[] {\n const options = this.hasGroups() ? [] : this.options();\n const searchTerm = this.normalizedSearchTerm();\n\n if (!searchTerm) {\n return options;\n }\n\n return options.filter((option) =>\n this.normalizeValue(option.value).includes(searchTerm),\n );\n }\n\n filteredGroups(): ElementGroup[] {\n if (!this.hasGroups()) {\n return [];\n }\n\n const groups = this.element.options as ElementGroup[];\n const searchTerm = this.normalizedSearchTerm();\n\n if (!searchTerm) {\n return groups;\n }\n\n return groups\n .map((group) => ({\n label: group.label,\n options: this.normalizeValue(group.label).includes(searchTerm)\n ? group.options\n : group.options.filter((option) =>\n this.normalizeValue(option.value).includes(searchTerm),\n ),\n }))\n .filter((group) => group.options.length > 0);\n }\n\n visibleOptions(): ElementOption[] {\n return this.hasGroups()\n ? this.filteredGroups().flatMap((group) => group.options)\n : this.filteredOptions();\n }\n\n hasSearch(): boolean {\n return !!this.searchControl;\n }\n\n searchPlaceholder(): string {\n return this.element.search?.placeholder ?? \"\";\n }\n\n emptyStateLabel(): string {\n return this.element.search?.noEntriesFoundLabel ?? \"\";\n }\n\n shouldShowError(): boolean {\n return (\n this.formControl.invalid &&\n (this.formControl.dirty || this.formControl.touched)\n );\n }\n\n optionPadding(option: ElementOption): number {\n const level = Math.max(0, option.childrenLevel ?? 0);\n return level === 0 ? 16 : 10 + level * 20;\n }\n\n toggleDropdown(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const isOpening = !this.isOpenState();\n this.setOpenState(isOpening);\n\n if (isOpening) {\n this.overlayWidthState.set(\n this.triggerButton?.nativeElement.offsetWidth ?? 0,\n );\n this.searchControl?.setValue(\"\", { emitEvent: true });\n setTimeout(() => {\n this.triggerButton?.nativeElement.blur();\n this.searchInput?.nativeElement.focus();\n this.searchInput?.nativeElement.select();\n });\n return;\n }\n\n this.markAsTouchedIfEmpty();\n }\n\n selectOption(option: ElementOption): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isMultiple()) {\n this.toggleOption(option);\n return;\n }\n\n this.formControl.setValue(option);\n this.markControlAsChanged();\n this.closeDropdown();\n }\n\n clearValue(event: Event): void {\n event.stopPropagation();\n if (this.isDisabled()) {\n return;\n }\n\n this.formControl.setValue(this.isMultiple() ? [] : null);\n this.markControlAsChanged();\n }\n\n closeDropdown(): void {\n if (this.isOpenState()) {\n this.setOpenState(false);\n }\n this.searchControl?.setValue(\"\", { emitEvent: true });\n this.markAsTouchedIfEmpty();\n }\n\n handleOverlayOutsideClick(event: Event): void {\n if (this.triggerButton?.nativeElement.contains(event.target as Node)) {\n return;\n }\n this.closeDropdown();\n }\n\n @HostListener(\"window:resize\")\n handleWindowResize(): void {\n if (this.isOpenState()) {\n this.overlayWidthState.set(\n this.triggerButton?.nativeElement.offsetWidth ?? 0,\n );\n }\n }\n\n get searchControl(): FormControl<string | null> | undefined {\n return (this.element.search?.formControl ?? this.formControlSearch) as\n | FormControl<string | null>\n | undefined;\n }\n\n private toggleOption(option: ElementOption): void {\n const current = this.selectedOptions();\n const next = this.isOptionSelected(option)\n ? current.filter((selected) => selected.key !== option.key)\n : [...current, option];\n this.formControl.setValue(next);\n this.markControlAsChanged();\n }\n\n private normalizedSearchTerm(): string {\n return this.normalizeValue(this.searchControl?.value?.trim());\n }\n\n private normalizeValue(value?: string | null): string {\n return (value ?? \"\")\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLocaleLowerCase();\n }\n\n private isElementGroup(\n value: ElementOption | ElementGroup | undefined,\n ): value is ElementGroup {\n return !!value && \"label\" in value && \"options\" in value;\n }\n\n private isElementOption(value: unknown): value is ElementOption {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"key\" in value &&\n \"value\" in value\n );\n }\n\n private markControlAsChanged(): void {\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n }\n\n private markAsTouchedIfEmpty(): void {\n if (!this.hasValue()) {\n this.formControl.markAsTouched();\n }\n }\n\n private setOpenState(isOpen: boolean): void {\n this.isOpenState.set(isOpen);\n this.openedChange.emit(isOpen);\n }\n}\n","<div\n class=\"mapa-dropdown\"\n [class.mapa-dropdown--open]=\"isOpen()\"\n [class.mapa-dropdown--invalid]=\"shouldShowError()\"\n [class.mapa-dropdown--disabled]=\"isDisabled()\"\n [class.mapa-dropdown--highlight]=\"border === 'highlight'\"\n [class.mapa-dropdown--soft-border]=\"border === 'soft'\"\n [class.mapa-dropdown--tag]=\"border === 'tag'\"\n>\n @if (element.label) {\n <label class=\"mapa-dropdown__label\" [attr.for]=\"element.key || null\">\n {{ element.label }}\n </label>\n }\n\n <div class=\"mapa-dropdown__field-row\">\n <button\n #triggerButton\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n class=\"mapa-dropdown__trigger\"\n [class.mapa-dropdown__trigger--clearable]=\"hasValue() && element.clearValue\"\n [id]=\"element.key || null\"\n type=\"button\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n >\n <span\n class=\"mapa-dropdown__trigger-text\"\n [class.mapa-dropdown__trigger-text--placeholder]=\"!hasValue()\"\n [innerHTML]=\"selectedLabel() | safeHtml\"\n ></span>\n @if (hasValue() && !isDisabled() && element.clearValue) {\n <span\n class=\"mapa-dropdown__clear\"\n role=\"button\"\n aria-label=\"Limpar\"\n (click)=\"clearValue($event)\"\n >\n &times;\n </span>\n }\n </button>\n\n @if (element.actionButton) {\n <mapa-button\n class=\"mapa-dropdown__action\"\n color=\"basic\"\n (clicked)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n cdkConnectedOverlayPanelClass=\"mapa-dropdown__overlay-pane\"\n (overlayOutsideClick)=\"handleOverlayOutsideClick($event)\"\n >\n <div class=\"mapa-dropdown__panel\">\n @if (hasSearch()) {\n <input\n #searchInput\n class=\"mapa-dropdown__search-input\"\n type=\"text\"\n [formControl]=\"searchControl!\"\n [placeholder]=\"searchPlaceholder()\"\n />\n }\n\n <div class=\"mapa-dropdown__options\" role=\"listbox\">\n @if (isMultiple() && visibleOptions().length) {\n <button\n class=\"mapa-dropdown__option mapa-dropdown__option--select-all\"\n type=\"button\"\n (click)=\"toggleSelectAll()\"\n >\n <input\n class=\"mapa-dropdown__checkbox\"\n type=\"checkbox\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isIndeterminate()\"\n (click)=\"$event.stopPropagation(); toggleSelectAll()\"\n />\n {{ selectAllLabel }}\n </button>\n }\n\n @if (hasGroups()) {\n @for (group of filteredGroups(); track group.label) {\n <div class=\"mapa-dropdown__group\" role=\"group\">\n <p class=\"mapa-dropdown__group-label\">{{ group.label }}</p>\n @for (option of group.options; track option.key) {\n <button\n class=\"mapa-dropdown__option\"\n [class.mapa-dropdown__option--selected]=\"isOptionSelected(option)\"\n [style.padding-left.px]=\"optionPadding(option)\"\n type=\"button\"\n (click)=\"selectOption(option)\"\n >\n @if (isMultiple()) {\n <input\n class=\"mapa-dropdown__checkbox\"\n type=\"checkbox\"\n [checked]=\"isOptionSelected(option)\"\n (click)=\"$event.stopPropagation(); selectOption(option)\"\n />\n }\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </button>\n }\n </div>\n }\n } @else {\n @for (option of filteredOptions(); track option.key) {\n <button\n class=\"mapa-dropdown__option\"\n [class.mapa-dropdown__option--selected]=\"isOptionSelected(option)\"\n [style.padding-left.px]=\"optionPadding(option)\"\n type=\"button\"\n (click)=\"selectOption(option)\"\n >\n @if (isMultiple()) {\n <input\n class=\"mapa-dropdown__checkbox\"\n type=\"checkbox\"\n [checked]=\"isOptionSelected(option)\"\n (click)=\"$event.stopPropagation(); selectOption(option)\"\n />\n }\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </button>\n }\n }\n\n @if (!visibleOptions().length) {\n <p class=\"mapa-dropdown__empty-state\">\n {{ emptyStateLabel() }}\n </p>\n }\n </div>\n </div>\n </ng-template>\n\n @if (shouldShowError()) {\n <p class=\"mapa-dropdown__error\">\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </p>\n } @else if (element.hint) {\n <p class=\"mapa-dropdown__hint\">{{ element.hint }}</p>\n }\n</div>\n","/*\n * Public API Surface of mapa-library-ui dropdown\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { Dropdown } from '../../../core/elements/dropdown';\nimport { DropdownTree } from '../../../core/elements/dropdown-tree';\nimport {\n ElementOption,\n ElementTreeNode,\n} from '../../../core/interfaces/element-option.interface';\nimport { MapaDropdownComponent } from '../../dropdown/public-api';\n\nexport interface DataNode extends ElementTreeNode {}\n\n@Component({\n selector: 'mapa-dropdown-tree',\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MapaDropdownComponent],\n standalone: true\n})\nexport class MapaDropdownTreeComponent\n implements OnInit, OnChanges, AfterViewInit\n{\n @Input() formGroup!: FormGroup;\n @Input() element!: DropdownTree;\n elementOption!: Dropdown;\n formControl!: FormControl<unknown>;\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.syncElementOption();\n }\n\n ngAfterViewInit(): void {\n Promise.resolve().then(() => this.cdr.detectChanges());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element'] || changes['formGroup']) {\n this.syncElementOption();\n }\n }\n\n getFormControl(element: Dropdown): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n private syncElementOption(): void {\n if (!this.element || !this.formGroup) {\n return;\n }\n\n const options = this.formatTree(this.element.tree);\n\n this.elementOption = {\n ...this.element,\n options,\n };\n\n this.formControl = this.getFormControl(this.elementOption);\n }\n\n formatTree(\n tree: ElementTreeNode[],\n childrenLevel: number = 0\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n tree.map((item: ElementTreeNode) => {\n options.push({\n value: item.value,\n key: item.key,\n childrenLevel,\n });\n if (item.children) {\n options.push(\n ...this.formatTree(\n this.formatTreeChildren(item.children, childrenLevel + 1),\n childrenLevel + 1\n )\n );\n }\n });\n return options;\n }\n\n formatTreeChildren(\n children: ElementTreeNode[],\n childrenLevel: number\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n children.map((item) => {\n options.push({\n value: item.value,\n key: item.key,\n children: item.children,\n childrenLevel,\n });\n });\n\n return options;\n }\n\n triggerOpenedChange(event: boolean): void {\n this.openedChange.emit(event);\n }\n}\n\n","<section *ngIf=\"elementOption && formControl\">\n <mapa-dropdown\n [formControl]=\"formControl\"\n [element]=\"elementOption\"\n (openedChange)=\"triggerOpenedChange($event)\"\n ></mapa-dropdown>\n</section>\n","/*\n * Public API Surface of mapa-library-ui dropdown-tree\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from \"@angular/core\";\nimport { FormControl, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { ElementBase } from \"../../../core/elements/element-base\";\nimport { MapaDatepicker } from \"../../datepicker/public-api\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { MapaDropdownComponent } from \"../../dropdown/public-api\";\nimport { MapaDropdownTreeComponent } from \"../../dropdown-tree/public-api\";\nimport { MapaInputComponent } from \"../../input/public-api\";\nimport { RadioButtonComponent } from \"../../radio-button/public-api\";\nimport { SlideToggleComponent } from \"../../slide-toggle/public-api\";\nimport { MapaTextareaComponent } from \"../../textarea/public-api\";\n\n\n@Component({\n selector: \"mapa-form\",\n templateUrl: \"./form.component.html\",\n styleUrl: \"./form.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MapaDatepicker,\n MapaInputComponent,\n MapaDropdownComponent,\n MapaDropdownTreeComponent,\n RadioButtonComponent,\n SlideToggleComponent,\n MapaTextareaComponent,\n ],\n standalone: true\n})\nexport class MapaFormComponent {\n @Input() formGroup!: FormGroup;\n @Input() elements: ElementBase[] = [];\n @Output() emitter: EventEmitter<ElementBase> = new EventEmitter<ElementBase>();\n \n getFormControl(element: ElementBase): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n onOptionSelected(optionValue: ElementOption): void {\n const radioControl = this.formGroup.get(\"radio\");\n if (radioControl) {\n radioControl.setValue(optionValue.key);\n }\n }\n\n emitSuffix(element: ElementBase): void {\n this.emitter.emit(element);\n }\n\n triggerOpenedChange(element: ElementBase, event: boolean): void {\n element.openedChange?.emit(event);\n } \n}\n\n","<section class=\"mapa-form\">\n @for (element of elements; track element.key) {\n <div class=\"mapa-form__element\">\n <div class=\"mapa-form__element--type\">\n @switch (element.controlType) {\n @case (\"input\") {\n <mapa-input\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (suffix)=\"emitSuffix(element)\"\n ></mapa-input>\n }\n @case (\"dropdown\") {\n <mapa-dropdown\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (openedChange)=\"triggerOpenedChange(element, $event)\"\n ></mapa-dropdown>\n }\n @case (\"dropdown-tree\") {\n <mapa-dropdown-tree\n [formGroup]=\"formGroup\"\n [element]=\"element\"\n ></mapa-dropdown-tree>\n }\n @case (\"datepicker\") {\n <mapa-datepicker\n [formGroup]=\"$any(formGroup)\"\n [element]=\"$any(element)\"\n ></mapa-datepicker>\n }\n @case (\"radio-button\") {\n <mapa-radio-button\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (optionSelected)=\"onOptionSelected($event)\"\n ></mapa-radio-button>\n }\n @case (\"slide-toggle\") {\n <mapa-slide-toggle\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-slide-toggle>\n }\n @case (\"textarea\") {\n <mapa-textarea\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-textarea>\n }\n }\n </div>\n </div>\n }\n</section>\n","/*\n * Public API Surface of mapa-library-ui form\n */\n\nexport * from './src/form.component';\n","/*\n * Public API Surface of mapa-library-ui form\n */\n\nexport * from './lib/components/button/public-api';\nexport * from './lib/components/input/public-api';\nexport * from './lib/components/radio-button/public-api';\nexport * from './lib/components/slide-toggle/public-api';\nexport * from './lib/components/textarea/public-api';\n\nexport * from './lib/components/form/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './form';\n"],"names":["i1.MapaI18nService","i1.ValidationMessageResolverService","i1","i5","i3","i4","i2","i1.HtmlSanitizerService"],"mappings":"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"}