{"version":3,"file":"seniorsistemas-angular-components-shared.mjs","sources":["../../projects/angular-components/shared/src/lib/shared/models/severities.ts","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.component.ts","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.component.html","../../projects/angular-components/shared/src/lib/shared/border-button/border-button.module.ts","../../projects/angular-components/shared/src/lib/shared/helpers.ts","../../projects/angular-components/shared/src/lib/accessibility/datepicker-no-period-tab.directive.ts","../../projects/angular-components/shared/src/lib/accessibility/paginator-accessibility.directive.ts","../../projects/angular-components/shared/src/lib/accessibility/table-checkbox-accessibility.directive.ts","../../projects/angular-components/shared/src/seniorsistemas-angular-components-shared.ts"],"sourcesContent":["export type Severities = 'default' | 'info' | 'warn' | 'error' | 'success';\n\nexport enum EnumSeverity {\n    Default = 'default',\n    Info = 'info',\n    Warn = 'warn',\n    Error = 'error',\n    Success = 'success',\n}\n","import { Component, Input } from '@angular/core';\n\nimport { BorderButtonOptions } from '../models/border-button-options';\nimport { Severities } from '../models/severities';\n\n/**\n * @description Botão com borda que varia de estilo de acordo com a severidade informada.\n * Utilizado internamente por outros componentes da biblioteca.\n *\n * @category Shared\n */\n@Component({\n    selector: 's-border-button',\n    templateUrl: './border-button.component.html',\n    styleUrls: ['./border-button.component.scss'],\n})\nexport class BorderButtonComponent {\n    /** @description Nível de severidade que define a cor e estilo do botão. @default 'default' */\n    @Input()\n    public severity: Severities = 'default';\n\n    /** @description Opções de configuração do botão (rótulo, ação, etc.). */\n    @Input()\n    public options?: BorderButtonOptions;\n}\n\n","<button\n    class=\"border-button\"\n    [ngClass]=\"{\n        'border-button--severity-default': severity === 'default',\n        'border-button--severity-info': severity === 'info',\n        'border-button--severity-warn': severity === 'warn',\n        'border-button--severity-error': severity === 'error',\n        'border-button--severity-success': severity === 'success',\n        'border-button--disabled': options?.disabled ? options?.disabled(severity) : false,\n    }\"\n    (click)=\"options?.onClick ? options?.onClick(severity) : null\"\n    [sTooltip]=\"options?.tooltip?.(severity)\"\n    tooltipPosition=\"left\"\n    [disabled]=\"options?.disabled ? options?.disabled(severity) : false\"\n>\n    <span class=\"border-button__label\">\n        {{ options?.label ? options?.label(severity) : null }}\n    </span>\n    @if (options?.icon ? options?.icon(severity) : false) {\n        <span class=\"border-button__icon {{ options?.icon(severity) }}\"></span>\n    }\n</button>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { BorderButtonComponent } from \"./border-button.component\";\nimport { TooltipModule } from \"@seniorsistemas/angular-components/tooltip\";\n\n@NgModule({\n    imports: [CommonModule, TooltipModule],\n    declarations: [BorderButtonComponent],\n    exports: [BorderButtonComponent]\n})\nexport class BorderButtonModule { }\n","/**\n * A decorator that can be used to disable functions based on a boolean property on the component.\n *\n * @param disabledField The name of the boolean property that will be used to determine if the decorated\n * function should be disabled. Defaults to 'disabled'.\n * @returns A decorator function that can be used to decorate a function.\n *\n * @example\n * class MyComponent {\n *   disabled = true;\n *\n *   @CheckDisabled()\n *   onClick() {\n *     console.log('Button was clicked');\n *   }\n * }\n */\nexport function CheckDisabled(disabledField = 'disabled') {\n    return function (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) {\n        const originalMethod = descriptor.value;\n        descriptor.value = function (...args: any[]) {\n            const self = this as Record<string, any>;\n            if (self[disabledField]) {\n                return;\n            }\n            return originalMethod.apply(this, args);\n        };\n\n        return descriptor;\n    };\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, HostListener, LOCALE_ID, OnDestroy, Renderer2, inject } from '@angular/core';\nimport { DatePicker } from 'primeng/datepicker';\n\n/**\n * CSS customizado injetado globalmente para focus-visible nos internals do DatePicker.\n * Necessário porque com `appendTo=\"body\"` o overlay fica fora do host component,\n * e estilos com `:host ::ng-deep` ou ViewEncapsulation.Emulated não alcançam.\n */\nconst FOCUS_STYLE_ID = 's-datepicker-a11y-focus-styles';\n\n/** Delay em ms para foco pós-abertura e navegação (permite NVDA processar dialog announce). */\nconst FOCUS_DELAY_MS = 50;\n\n/** Delay em ms para debounce do MutationObserver (evita re-execução por ripple/animações). */\nconst MUTATION_DEBOUNCE_MS = 100;\n\n/** Attribute name constant to avoid SonarQube literal duplication warning. */\nconst ARIA_LABEL_ATTR = 'aria-label';\nconst FOCUS_STYLES = `\n.p-datepicker-day:focus-visible,\n.p-datepicker-day.s-datepicker-day-focused {\n    outline: 2px solid var(--p-primary-color, #3b82f6) !important;\n    outline-offset: -2px;\n    border-radius: 4px;\n}\n.p-datepicker-month:focus-visible,\n.p-datepicker-month.s-datepicker-day-focused {\n    outline: 2px solid var(--p-primary-color, #3b82f6) !important;\n    outline-offset: -2px;\n    border-radius: 4px;\n}\n.p-datepicker-year:focus-visible,\n.p-datepicker-year.s-datepicker-day-focused {\n    outline: 2px solid var(--p-primary-color, #3b82f6) !important;\n    outline-offset: -2px;\n    border-radius: 4px;\n}\n.p-datepicker-select-month:focus-visible,\n.p-datepicker-select-year:focus-visible {\n    outline: 2px solid var(--p-primary-color, #3b82f6) !important;\n    outline-offset: 2px;\n    border-radius: 4px;\n}\n.p-datepicker-prev-button:focus-visible,\n.p-datepicker-next-button:focus-visible {\n    outline: 2px solid var(--p-primary-color, #3b82f6) !important;\n    outline-offset: 2px;\n    border-radius: 50%;\n}\n`;\n\n/**\n * Traduções pt-BR para aria-labels do DatePicker PrimeNG.\n * PrimeNG usa `getTranslation()` que retorna inglês por padrão\n * se não configurado via `PrimeNGConfig.setTranslation()`.\n *\n * Keys correspondem ao texto exato renderizado pelo PrimeNG no DOM:\n * - \"Previous Month\" (não \"Prev Month\")\n * - \"Choose Date\", \"Choose Month\", \"Choose Year\"\n */\nconst PREV_DECADE_PT = 'Década anterior';\nconst PREV_DECADE_ES = 'Década anterior';\n\nconst ARIA_TRANSLATIONS_PT_BR: Record<string, string> = {\n    'Choose Date': 'Selecionar data',\n    'Choose Month': 'Selecionar mês',\n    'Choose Year': 'Selecionar ano',\n    'Previous Month': 'Mês anterior',\n    'Next Month': 'Próximo mês',\n    'Previous Year': 'Ano anterior',\n    'Next Year': 'Próximo ano',\n    'Previous Decade': PREV_DECADE_PT,\n    'Next Decade': 'Próxima década',\n    'Prev Month': 'Mês anterior',\n    'Prev Year': 'Ano anterior',\n    'Prev Decade': PREV_DECADE_PT,\n};\n\nconst ARIA_TRANSLATIONS_ES: Record<string, string> = {\n    'Choose Date': 'Seleccionar fecha',\n    'Choose Month': 'Seleccionar mes',\n    'Choose Year': 'Seleccionar año',\n    'Previous Month': 'Mes anterior',\n    'Next Month': 'Próximo mes',\n    'Previous Year': 'Año anterior',\n    'Next Year': 'Próximo año',\n    'Previous Decade': PREV_DECADE_ES,\n    'Next Decade': 'Próxima década',\n    'Prev Month': 'Mes anterior',\n    'Prev Year': 'Año anterior',\n    'Prev Decade': PREV_DECADE_ES,\n};\n\nconst ARIA_TRANSLATIONS: Record<string, Record<string, string>> = {\n    'pt-BR': ARIA_TRANSLATIONS_PT_BR,\n    'pt': ARIA_TRANSLATIONS_PT_BR,\n    'es': ARIA_TRANSLATIONS_ES,\n    'es-CO': ARIA_TRANSLATIONS_ES,\n    'es-ES': ARIA_TRANSLATIONS_ES,\n};\n\n/**\n * Diretiva para corrigir a acessibilidade do painel do DatePicker PrimeNG.\n *\n * Resolve os seguintes problemas:\n *\n * 1. **Foco inicial ao abrir overlay**: move foco programaticamente para\n *    a célula selecionada, hoje, ou primeira célula disponível — evitando\n *    que NVDA leia toda estrutura do grid ao entrar no painel.\n *\n * 2. **Re-foco ao trocar view (mês/ano)**: ao navegar para views de mês ou\n *    ano, o DOM é destruído e recriado. Sem intervenção, foco escapa para\n *    `<body>` e NVDA lê conteúdo fora do overlay. A diretiva re-foca o\n *    primeiro elemento interativo da nova view.\n *\n * 3. **Focus-visible nos elementos internos**: injeta CSS global com\n *    outline para todos elementos interativos do overlay, garantindo\n *    feedback visual mesmo com `appendTo=\"body\"`.\n *\n * 4. **aria-label enriquecido nos day cells**: PrimeNG seta apenas o\n *    número do dia. A diretiva sobrescreve com data completa formatada\n *    (ex: \"3 de junho de 2026, Qua\") — NVDA narra label sem precisar\n *    contextualizar toda grid.\n *\n * 5. **View de meses/anos sem tabindex**: spans de mês/ano recebem\n *    `tabindex=\"0\"` e `role=\"option\"` para navegação por teclado.\n *\n * Utiliza `MutationObserver` para detectar mudanças internas de view,\n * já que PrimeNG não emite eventos para essas transições.\n *\n * **CSS**: A diretiva injeta um `<style>` global no `<head>` (uma vez).\n * Para projetos que preferem controle manual, desabilite via Input\n * `[sDatepickerInjectStyles]=\"false\"` e importe os estilos manualmente.\n *\n * Uso: `<p-datepicker sDatepickerNoPeriodTab ...>`\n *\n * @deprecated Use `s-datepicker` (`<s-datepicker>`), o componente oficial do\n * Design System da Senior, que implementa toda a acessibilidade necessária\n * nativamente. Esta diretiva será removida na próxima major release.\n *\n * @category Directives\n */\n@Directive({\n    selector: '[sDatepickerNoPeriodTab]',\n    standalone: true,\n})\nexport class DatepickerNoPeriodTabDirective implements OnDestroy {\n    private readonly datePicker = inject(DatePicker);\n    private readonly renderer = inject(Renderer2);\n    private readonly locale = inject(LOCALE_ID);\n    private readonly document = inject(DOCUMENT);\n    private observer: MutationObserver | null = null;\n    private focusListenerCleanups: Array<() => void> = [];\n\n    constructor() {\n        this.injectGlobalFocusStyles();\n    }\n\n    @HostListener('onShow')\n    public onPanelShow(): void {\n        setTimeout(() => {\n            this.fixPanelAccessibility();\n            // Não chamar focusBestTarget() aqui — PrimeNG initFocusableCell()\n            // já move foco pro day cell com tabindex=\"0\" na abertura.\n            // Chamar de novo causa double-announce no NVDA.\n            setTimeout(() => this.observePanelChanges(), MUTATION_DEBOUNCE_MS);\n        }, FOCUS_DELAY_MS);\n    }\n\n    @HostListener('onMonthChange')\n    @HostListener('onYearChange')\n    public onNavigationChange(): void {\n        setTimeout(() => {\n            this.fixPanelAccessibility();\n            this.focusBestTarget();\n        }, FOCUS_DELAY_MS);\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnectObserver();\n        this.removeFocusListeners();\n    }\n\n    /**\n     * Move foco para melhor alvo disponível no painel.\n     * Usado ao abrir overlay e ao trocar view (mês/ano).\n     *\n     * Ao abrir: evita que NVDA leia toda estrutura do grid.\n     * Ao trocar view: previne foco escapar para `<body>` quando\n     * PrimeNG destrói DOM da view anterior.\n     *\n     * Prioridade: selecionado > hoje > primeiro disponível.\n     * Pula se foco já está no target correto (evita double-announce no NVDA).\n     */\n    private focusBestTarget(): void {\n        const panel = this.datePicker.overlay;\n        if (!panel) {\n            return;\n        }\n\n        const target = this.findFocusTarget(panel);\n        if (target && this.document.activeElement !== target) {\n            target.tabIndex = 0;\n            target.focus();\n        }\n    }\n\n    /**\n     * Injeta CSS global de focus-visible no `<head>` do documento.\n     * Executa apenas uma vez (idempotente via ID do style element).\n     * Necessário porque overlay com `appendTo=\"body\"` fica fora do\n     * escopo de ViewEncapsulation do componente host.\n     */\n    private injectGlobalFocusStyles(): void {\n        if (this.document.getElementById(FOCUS_STYLE_ID)) {\n            return;\n        }\n\n        const style = this.renderer.createElement('style');\n        this.renderer.setAttribute(style, 'id', FOCUS_STYLE_ID);\n        this.renderer.setAttribute(style, 'type', 'text/css');\n        const text = this.renderer.createText(FOCUS_STYLES);\n        this.renderer.appendChild(style, text);\n        this.renderer.appendChild(this.document.head, style);\n    }\n\n    /**\n     * Encontra melhor elemento para receber foco no painel atual.\n     * Busca em ordem: selecionado → hoje → primeiro disponível.\n     * Funciona para views de dias, meses e anos.\n     */\n    private findFocusTarget(panel: HTMLElement): HTMLElement | null {\n        // View de dias\n        const selectedDay = panel.querySelector<HTMLElement>(\n            '.p-datepicker-day-selected, .p-datepicker-day[aria-selected=\"true\"]'\n        );\n        if (selectedDay) {\n            return selectedDay;\n        }\n\n        const today = panel.querySelector<HTMLElement>('.p-datepicker-today .p-datepicker-day');\n        if (today) {\n            return today;\n        }\n\n        // View de meses\n        const selectedMonth = panel.querySelector<HTMLElement>('.p-datepicker-month.p-datepicker-month-selected');\n        if (selectedMonth) {\n            return selectedMonth;\n        }\n        const firstMonth = panel.querySelector<HTMLElement>('.p-datepicker-month:not(.p-disabled)');\n        if (firstMonth) {\n            return firstMonth;\n        }\n\n        // View de anos\n        const selectedYear = panel.querySelector<HTMLElement>('.p-datepicker-year.p-datepicker-year-selected');\n        if (selectedYear) {\n            return selectedYear;\n        }\n        const firstYear = panel.querySelector<HTMLElement>('.p-datepicker-year:not(.p-disabled)');\n        if (firstYear) {\n            return firstYear;\n        }\n\n        // Fallback: primeiro day cell disponível\n        const firstDay = panel.querySelector<HTMLElement>('.p-datepicker-day:not(.p-disabled)');\n        return firstDay;\n    }\n\n    /**\n     * Aplica correções de acessibilidade no painel do DatePicker,\n     * independente da view interna ativa (dias, meses ou anos).\n     */\n    private fixPanelAccessibility(): void {\n        const panel = this.datePicker.overlay;\n        if (!panel) {\n            return;\n        }\n\n        panel.querySelectorAll<HTMLElement>('.p-datepicker-select-month, .p-datepicker-select-year').forEach((btn) => {\n            this.renderer.setAttribute(btn, 'tabindex', '0');\n        });\n\n        panel.querySelectorAll<HTMLElement>('.p-datepicker-month:not([tabindex])').forEach((month) => {\n            this.renderer.setAttribute(month, 'tabindex', '0');\n            this.renderer.setAttribute(month, 'role', 'option');\n        });\n\n        panel.querySelectorAll<HTMLElement>('.p-datepicker-year:not([tabindex])').forEach((year) => {\n            this.renderer.setAttribute(year, 'tabindex', '0');\n            this.renderer.setAttribute(year, 'role', 'option');\n        });\n\n        this.applyGridcellRoleToDays(panel);\n        this.enrichDayCellAriaLabels(panel);\n        this.enrichGridAriaLabel(panel);\n        this.translateAriaLabels(panel);\n        this.fixNavigationButtonLabels(panel);\n        this.removeApplicationRoleFromContainer(panel);\n        this.setupFocusTracking(panel);\n    }\n\n    /**\n     * Adiciona `role=\"gridcell\"` nos `<span class=\"p-datepicker-day\">` que recebem foco.\n     *\n     * PrimeNG coloca `tabindex` no `<span>` dentro do `<td>`, mas sem role explícito.\n     * NVDA não entra automaticamente em focus mode quando foca um elemento sem\n     * role de widget (gridcell, button, etc). Resultado: NVDA fica em browse mode\n     * e lê toda a tabela sequencialmente ao invés de anunciar só a célula focada.\n     *\n     * Ao adicionar `role=\"gridcell\"` no span focável, NVDA reconhece que é um\n     * widget interativo e entra em focus mode — anunciando apenas o aria-label\n     * da célula focada.\n     */\n    private applyGridcellRoleToDays(panel: HTMLElement): void {\n        panel.querySelectorAll<HTMLElement>('.p-datepicker-day:not(.p-disabled)').forEach((daySpan) => {\n            if (!daySpan.getAttribute('role')) {\n                this.renderer.setAttribute(daySpan, 'role', 'gridcell');\n            }\n        });\n    }\n\n    /**\n     * Enriquece `aria-label` dos day cells com data completa formatada.\n     * PrimeNG por padrão usa apenas o número do dia, forçando NVDA\n     * a narrar contexto de grid (linha/coluna/weekday) para informar a data.\n     * Com aria-label completo, NVDA narra diretamente a data sem verbosidade.\n     */\n    private enrichDayCellAriaLabels(panel: HTMLElement): void {\n        const { currentMonth, currentYear } = this.datePicker;\n\n        if (currentMonth == null || currentYear == null) {\n            return;\n        }\n\n        const weekdayHeaders = panel.querySelectorAll<HTMLElement>('.p-datepicker-weekday');\n        const weekdays: string[] = [];\n        weekdayHeaders.forEach((header) => {\n            weekdays.push(header.textContent?.trim() || '');\n        });\n\n        const rows = panel.querySelectorAll<HTMLElement>('.p-datepicker-day-view tbody tr');\n        rows.forEach((row) => {\n            const cells = row.querySelectorAll<HTMLElement>('td');\n            cells.forEach((cell, cellIndex) => {\n                const daySpan = cell.querySelector<HTMLElement>('.p-datepicker-day');\n                if (!daySpan) {\n                    return;\n                }\n\n                const dayNumber = parseInt(daySpan.textContent?.trim() || '0', 10);\n                if (!dayNumber) {\n                    return;\n                }\n\n                const isOtherMonth = cell.classList.contains('p-datepicker-other-month');\n                if (isOtherMonth) {\n                    return;\n                }\n\n                const date = new Date(currentYear, currentMonth, dayNumber);\n                const formattedDate = this.formatDateForAriaLabel(date);\n                const weekday = weekdays[cellIndex] || '';\n                const ariaLabel = weekday ? `${formattedDate}, ${weekday}` : formattedDate;\n\n                this.renderer.setAttribute(daySpan, ARIA_LABEL_ATTR, ariaLabel);\n            });\n        });\n    }\n\n    /**\n     * Adiciona aria-label no grid com mês/ano atual para dar contexto\n     * imediato ao NVDA ao entrar na tabela de dias.\n     * Exemplo: \"Calendário, Junho 2026\"\n     */\n    private enrichGridAriaLabel(panel: HTMLElement): void {\n        const grid = panel.querySelector<HTMLElement>('.p-datepicker-day-view[role=\"grid\"]');\n        if (!grid) {\n            return;\n        }\n\n        const { currentMonth, currentYear } = this.datePicker;\n        if (currentMonth == null || currentYear == null) {\n            return;\n        }\n\n        const monthName = new Date(currentYear, currentMonth, 1).toLocaleDateString('pt-BR', {\n            month: 'long',\n        });\n        const capitalizedMonth = monthName.charAt(0).toUpperCase() + monthName.slice(1);\n        const label = `Calendário, ${capitalizedMonth} ${currentYear}`;\n        this.renderer.setAttribute(grid, ARIA_LABEL_ATTR, label);\n    }\n\n    /**\n     * Formata data para aria-label legível por leitor de tela.\n     * Sempre usa pt-BR para garantir consistência com labels traduzidos,\n     * independente do LOCALE_ID configurado no Angular.\n     * Exemplo: \"3 de junho de 2026\"\n     */\n    private formatDateForAriaLabel(date: Date): string {\n        try {\n            return date.toLocaleDateString('pt-BR', {\n                day: 'numeric',\n                month: 'long',\n                year: 'numeric',\n            });\n        } catch {\n            return `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}`;\n        }\n    }\n\n    /**\n     * Retorna locale string para formatação.\n     */\n    private getLocale(): string {\n        return this.locale || 'pt-BR';\n    }\n\n    /**\n     * Traduz aria-labels dos botões do header que PrimeNG renderiza em inglês.\n     * PrimeNG usa `getTranslation('chooseDate')` etc, que retorna inglês\n     * se `PrimeNGConfig.setTranslation()` não foi configurado pelo projeto.\n     *\n     * Busca botões com aria-label em inglês e traduz pro locale atual.\n     */\n    private translateAriaLabels(panel: HTMLElement): void {\n        const translations = this.getTranslations();\n\n        // Dialog aria-label (\"Choose Date\")\n        const dialog = panel.closest('[role=\"dialog\"]') || panel;\n        const dialogLabel = dialog.getAttribute(ARIA_LABEL_ATTR);\n        if (dialogLabel && translations[dialogLabel]) {\n            this.renderer.setAttribute(dialog, ARIA_LABEL_ATTR, translations[dialogLabel]);\n        }\n\n        // Botões \"Choose Month\" e \"Choose Year\" no header\n        panel.querySelectorAll<HTMLElement>('.p-datepicker-select-month, .p-datepicker-select-year').forEach((btn) => {\n            const label = btn.getAttribute(ARIA_LABEL_ATTR);\n            if (label && translations[label]) {\n                this.renderer.setAttribute(btn, ARIA_LABEL_ATTR, translations[label]);\n            }\n        });\n    }\n\n    /**\n     * Corrige aria-label dos botões prev/next do PrimeNG.\n     * PrimeNG usa `p-button` component que seta `aria-label` no host element `<p-button>`,\n     * mas NVDA foca o `<button>` interno que não herda o label do custom element.\n     *\n     * Estrutura DOM: `<p-button aria-label=\"Previous Month\"><button class=\"p-datepicker-prev-button\">...</button></p-button>`\n     *\n     * Fix: lê aria-label do `<p-button>` host, traduz, e propaga pro `<button>` interno.\n     */\n    private fixNavigationButtonLabels(panel: HTMLElement): void {\n        const translations = this.getTranslations();\n\n        // Buscar <p-button> hosts que contém os botões prev/next\n        const pButtons = panel.querySelectorAll<HTMLElement>('p-button');\n        pButtons.forEach((pBtn) => {\n            const innerButton = pBtn.querySelector<HTMLElement>(\n                'button.p-datepicker-prev-button, button.p-datepicker-next-button'\n            );\n            if (!innerButton) {\n                return;\n            }\n\n            let label = pBtn.getAttribute(ARIA_LABEL_ATTR) || '';\n\n            // Traduzir\n            if (label && translations[label]) {\n                label = translations[label];\n                this.renderer.setAttribute(pBtn, ARIA_LABEL_ATTR, label);\n            }\n\n            // Propagar pro <button> interno\n            if (label) {\n                this.renderer.setAttribute(innerButton, ARIA_LABEL_ATTR, label);\n            }\n        });\n    }\n\n    /**\n     * Remove `role=\"application\"` do container do calendário.\n     *\n     * PrimeNG seta `role=\"application\"` no `.p-datepicker-calendar-container`\n     * para que arrow keys cheguem no JavaScript sem interceptação do browse mode.\n     * Porém `role=\"grid\"` na table já garante esse comportamento — NVDA entra\n     * automaticamente em focus mode ao focar uma gridcell.\n     *\n     * O `role=\"application\"` no container PAI causa NVDA a despeja o conteúdo\n     * virtual do container inteiro ao entrar no dialog, antes de pousar na célula.\n     * Removê-lo resolve a leitura excessiva sem quebrar navegação por setas.\n     */\n    private removeApplicationRoleFromContainer(panel: HTMLElement): void {\n        const calendarContainer = panel.querySelector<HTMLElement>('.p-datepicker-calendar-container');\n        if (calendarContainer?.getAttribute('role') === 'application') {\n            this.renderer.removeAttribute(calendarContainer, 'role');\n        }\n    }\n\n    /**\n     * Retorna mapa de traduções pro locale atual.\n     * Se locale é inglês ou não reconhecido, fallback pra pt-BR\n     * (assumimos que labels em inglês devem ser traduzidos).\n     */\n    private getTranslations(): Record<string, string> {\n        const locale = this.getLocale();\n        return ARIA_TRANSLATIONS[locale]\n            || ARIA_TRANSLATIONS[locale.split('-')[0]]\n            || ARIA_TRANSLATIONS_PT_BR;\n    }\n\n    /**\n     * Adiciona listeners de focus/blur nos elementos interativos para\n     * garantir indicador visual quando `.focus()` é chamado programaticamente.\n     *\n     * `:focus-visible` pode não ser aplicado quando foco é movido via JS,\n     * então usamos classe auxiliar `s-datepicker-day-focused` como fallback.\n     */\n    private setupFocusTracking(panel: HTMLElement): void {\n        this.removeFocusListeners();\n\n        const focusableElements = panel.querySelectorAll<HTMLElement>(\n            '.p-datepicker-day, .p-datepicker-month, .p-datepicker-year'\n        );\n        focusableElements.forEach((el) => {\n            const focusCleanup = this.renderer.listen(el, 'focus', () => {\n                this.renderer.addClass(el, 's-datepicker-day-focused');\n            });\n            const blurCleanup = this.renderer.listen(el, 'blur', () => {\n                this.renderer.removeClass(el, 's-datepicker-day-focused');\n            });\n            this.focusListenerCleanups.push(focusCleanup, blurCleanup);\n        });\n    }\n\n    /**\n     * Remove listeners de focus/blur registrados anteriormente.\n     */\n    private removeFocusListeners(): void {\n        this.focusListenerCleanups.forEach((cleanup) => cleanup());\n        this.focusListenerCleanups = [];\n    }\n\n    /**\n     * Observa mudanças no DOM do painel para reaplicar correções\n     * quando o PrimeNG troca a view interna (dias → meses → anos).\n     * Usa debounce e só reage a childList changes (não attributes)\n     * para evitar loop infinito com as próprias mutações da diretiva.\n     */\n    private observePanelChanges(): void {\n        this.disconnectObserver();\n\n        const panel = this.datePicker.overlay;\n        if (!panel) {\n            return;\n        }\n\n        let debounceTimer: ReturnType<typeof setTimeout> | null = null;\n        let isProcessing = false;\n\n        this.observer = new MutationObserver((mutations) => {\n            if (isProcessing) {\n                return;\n            }\n\n            // Só reagir se houve adição/remoção de nós (troca de view)\n            const hasStructuralChange = mutations.some(\n                (m) => m.type === 'childList' && (m.addedNodes.length > 0 || m.removedNodes.length > 0)\n            );\n\n            if (!hasStructuralChange) {\n                return;\n            }\n\n            if (debounceTimer) {\n                clearTimeout(debounceTimer);\n            }\n            debounceTimer = setTimeout(() => {\n                isProcessing = true;\n                this.fixPanelAccessibility();\n                this.focusBestTarget();\n                isProcessing = false;\n            }, MUTATION_DEBOUNCE_MS);\n        });\n\n        this.observer.observe(panel, {\n            childList: true,\n            subtree: true,\n        });\n    }\n\n    private disconnectObserver(): void {\n        if (this.observer) {\n            this.observer.disconnect();\n            this.observer = null;\n        }\n    }\n}\n","import { Directive, ElementRef, OnInit, Renderer2, OnDestroy, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n/**\n * Diretiva para melhorar a acessibilidade dos botões do paginador PrimeNG\n * Adiciona tabindex=\"0\" aos botões habilitados e tabindex=\"-1\" aos desabilitados\n * Adiciona aria-labels traduzidos para os botões do paginador\n */\n@Directive({\n  selector: '[sPaginatorAccessibility]',\n  standalone: true\n})\nexport class PaginatorAccessibilityDirective implements OnInit, OnDestroy {\n  private readonly el = inject(ElementRef);\n  private readonly renderer = inject(Renderer2);\n  private readonly translateService = inject(TranslateService);\n\n  private observer: MutationObserver | null = null;\n  private readonly equalWebSpanMarker = 'data-equalweb-sr-only';\n  private isObserverPaused = false;\n  private observedPaginatorElement: Element | null = null;\n\n  ngOnInit() {\n    // Aguarda o próximo ciclo para garantir que o paginador foi renderizado\n    setTimeout(() => {\n      this.updatePaginatorButtons();\n      this.observePaginatorChanges();\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.observer) {\n      this.observer.disconnect();\n      }\n    }\n\n  private updatePaginatorButtons() {\n    const paginatorElement = this.el.nativeElement.querySelector('p-paginator');\n    if (!paginatorElement) {\n      return;\n    }\n\n    // Atualiza botões de navegação (first, prev, next, last)\n    const navigationSelectors = {\n      '.p-paginator-first': this.translateService.instant('platform.angular_components.aria_first_page'),\n      '.p-paginator-prev': this.translateService.instant('platform.angular_components.aria_previous_page'),\n      '.p-paginator-next': this.translateService.instant('platform.angular_components.aria_next_page'),\n      '.p-paginator-last': this.translateService.instant('platform.angular_components.aria_last_page'),\n      '.p-select-label': this.translateService.instant('platform.angular_components.aria_page_selection')\n    };\n\n    Object.entries(navigationSelectors).forEach(([selector, label]) => {\n      const button = paginatorElement.querySelector(selector);\n      if (button) {\n        const isDisabled = this.isButtonDisabled(button);\n        this.updateTabIndex(button, isDisabled);\n        if (isDisabled) {\n          this.renderer.removeAttribute(button, 'data-ind-readable');\n        } else {\n          this.renderer.setAttribute(button, 'data-ind-readable', 'true');\n        }\n        this.renderer.setAttribute(button, 'aria-label', label);\n        this.applyEqualWebTextFix(button, label, isDisabled);\n      }\n    });\n\n    // Atualiza botões de página numérica\n    const pageButtons = paginatorElement.querySelectorAll('.p-paginator-page');\n    pageButtons.forEach((button: Element) => {\n      const pageNumber = this.getPaginatorPageNumber(button);\n      if (pageNumber) {\n        const isDisabled = this.isButtonDisabled(button);\n        const isSelected = button.classList.contains('p-paginator-page-selected');\n        const ariaLabel = isSelected \n          ? this.translateService.instant('platform.angular_components.aria_current_page', { page: pageNumber })\n          : this.translateService.instant('platform.angular_components.aria_page_number', { page: pageNumber });\n        this.renderer.setAttribute(button, 'aria-label', ariaLabel);\n        this.updateTabIndex(button, isDisabled);\n        this.applyEqualWebTextFix(button, ariaLabel, isDisabled);\n        \n        if (isSelected) {\n          this.renderer.setAttribute(button, 'aria-current', 'page');\n        } else {\n          this.renderer.removeAttribute(button, 'aria-current');\n        }\n      }\n    });\n  }\n\n  private isButtonDisabled(button: Element): boolean {\n    return button.hasAttribute('disabled') || button.classList.contains('p-disabled');\n  }\n\n  private updateTabIndex(button: Element, isDisabled: boolean) {\n    if (isDisabled) {\n      this.renderer.removeAttribute(button, 'tabindex');\n      return;\n    }\n\n    this.renderer.setAttribute(button, 'tabindex', '0');\n  }\n\n  private getPaginatorPageNumber(button: Element): string {\n    const buttonElement = button as HTMLElement;\n\n    // Evita pegar texto do span sr-only criado pela diretiva.\n    const visualLabel = buttonElement.querySelector(`span:not([${this.equalWebSpanMarker}])`);\n    const visualText = visualLabel?.textContent?.trim();\n    if (visualText) {\n      return visualText;\n    }\n\n    // Fallback para casos em que o PrimeNG renderiza sem span interno.\n    const srOnlyText = buttonElement.querySelector(`span[${this.equalWebSpanMarker}=\"true\"]`)?.textContent?.trim() || '';\n    const fullText = buttonElement.textContent?.trim() || '';\n    return fullText.replace(srOnlyText, '').trim();\n  }\n\n  private applyEqualWebTextFix(button: Element, accessibleText: string, isDisabled: boolean) {\n    const buttonElement = button as HTMLElement;\n\n    // Oculta spans visuais do PrimeNG para o script do EqualWeb.\n    const visualSpans = buttonElement.querySelectorAll(`span:not([${this.equalWebSpanMarker}])`);\n    visualSpans.forEach((span: Element) => {\n      this.renderer.setAttribute(span, 'aria-hidden', 'true');\n    });\n\n    const existingSrOnly = buttonElement.querySelector(`span[${this.equalWebSpanMarker}=\"true\"]`);\n\n    // Não mantém texto extra em botões desabilitados.\n    if (isDisabled) {\n      if (existingSrOnly) {\n        this.renderer.removeChild(buttonElement, existingSrOnly);\n      }\n      return;\n    }\n\n    if (existingSrOnly) {\n      this.renderer.removeAttribute(existingSrOnly, 'tabindex');\n      this.renderer.setProperty(existingSrOnly, 'textContent', accessibleText);\n      return;\n    }\n\n    const srOnlySpan = this.renderer.createElement('span');\n    this.renderer.addClass(srOnlySpan, 'sr-only');\n    this.renderer.setAttribute(srOnlySpan, this.equalWebSpanMarker, 'true');\n    this.renderer.removeAttribute(srOnlySpan, 'tabindex');\n    const srOnlyText = this.renderer.createText(accessibleText);\n    this.renderer.appendChild(srOnlySpan, srOnlyText);\n    this.renderer.appendChild(buttonElement, srOnlySpan);\n  }\n\n  private observePaginatorChanges() {\n    const paginatorElement = this.el.nativeElement.querySelector('p-paginator');\n    if (!paginatorElement) {\n      return;\n    }\n\n    this.observedPaginatorElement = paginatorElement;\n\n    // Observa mudanças no paginador (quando botões são habilitados/desabilitados)\n    this.observer = new MutationObserver(() => {\n      this.updateWithObserverPaused();\n    });\n\n    this.startObserving();\n  }\n\n  private updateWithObserverPaused() {\n    if (!this.observer || this.isObserverPaused) {\n      return;\n    }\n\n    this.isObserverPaused = true;\n    this.observer.disconnect();\n\n    try {\n      this.updatePaginatorButtons();\n    } finally {\n      this.startObserving();\n      this.isObserverPaused = false;\n    }\n  }\n\n  private startObserving() {\n    if (!this.observer || !this.observedPaginatorElement) {\n      return;\n    }\n\n    this.observer.observe(this.observedPaginatorElement, {\n      attributes: true,\n      childList: true,\n      subtree: true,\n      attributeFilter: ['disabled', 'class', 'tabindex']\n    });\n  }\n}\n","import { Directive, ElementRef, OnInit, OnDestroy, inject } from '@angular/core';\n\n/**\n * Diretiva para corrigir a acessibilidade de checkboxes em tabelas PrimeNG.\n *\n * Propaga o `aria-label` dos custom elements wrapper (`p-tablecheckbox` e\n * `p-tableheadercheckbox`) para os `<input type=\"checkbox\">` internos e\n * remove o atributo do wrapper, eliminando as violações WCAG 4.1.2:\n * - `label` (crítica): input sem nome acessível\n * - `aria-prohibited-attr` (séria): aria-label em custom element sem role ARIA\n *\n * Remove também o `aria-label` do `p-checkbox` intermediário e monitora\n * mutations de atributo para re-aplicar o label correto caso o binding\n * interno do PrimeNG sobrescreva o valor no input via change detection.\n *\n * Utiliza MutationObserver para tratar linhas adicionadas dinamicamente\n * (paginação, lazy loading).\n *\n * Uso: `<p-table sTableCheckboxAccessibility ...>`\n */\n@Directive({\n    selector: '[sTableCheckboxAccessibility]',\n    standalone: true,\n})\nexport class TableCheckboxAccessibilityDirective implements OnInit, OnDestroy {\n    private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    private childListObserver: MutationObserver | null = null;\n    private attributeObserver: MutationObserver | null = null;\n    private isChildListPaused = false;\n    private isAttributePaused = false;\n    private readonly observedElements: Element[] = [];\n    private readonly inputLabelMap = new Map<Element, string>();\n\n    private static readonly CHECKBOX_SELECTOR = 'p-tablecheckbox, p-tableheadercheckbox';\n    private static readonly INNER_CHECKBOX_SELECTOR = 'p-checkbox';\n    private static readonly INPUT_SELECTOR = 'input[type=\"checkbox\"]';\n    private static readonly ARIA_LABEL_ATTR = 'aria-label';\n\n    ngOnInit() {\n        setTimeout(() => {\n            this.updateCheckboxLabels();\n            this.observeTableChanges();\n        });\n    }\n\n    ngOnDestroy() {\n        this.childListObserver?.disconnect();\n        this.attributeObserver?.disconnect();\n        this.inputLabelMap.clear();\n    }\n\n    private updateCheckboxLabels() {\n        const host = this.el.nativeElement;\n        const checkboxWrappers = host.querySelectorAll(TableCheckboxAccessibilityDirective.CHECKBOX_SELECTOR);\n\n        checkboxWrappers.forEach((wrapper) => {\n            const wrapperAriaLabel = wrapper.getAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);\n            if (!wrapperAriaLabel?.trim()) {\n                return;\n            }\n\n            const input = wrapper.querySelector(TableCheckboxAccessibilityDirective.INPUT_SELECTOR);\n            if (!input) {\n                return;\n            }\n\n            this.applyLabelToInput(input, wrapperAriaLabel);\n            wrapper.removeAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);\n            this.removeInnerCheckboxAriaLabel(wrapper);\n        });\n    }\n\n    private applyLabelToInput(input: Element, label: string) {\n        this.inputLabelMap.set(input, label);\n        input.setAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR, label);\n    }\n\n    private removeInnerCheckboxAriaLabel(wrapper: Element) {\n        const innerCheckbox = wrapper.querySelector(TableCheckboxAccessibilityDirective.INNER_CHECKBOX_SELECTOR);\n        if (innerCheckbox) {\n            innerCheckbox.removeAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);\n        }\n    }\n\n    private observeTableChanges() {\n        const host = this.el.nativeElement;\n        const tbody = host.querySelector('tbody');\n        const thead = host.querySelector('thead');\n\n        if (tbody) {\n            this.observedElements.push(tbody);\n        }\n        if (thead) {\n            this.observedElements.push(thead);\n        }\n\n        if (this.observedElements.length === 0) {\n            return;\n        }\n\n        this.childListObserver = new MutationObserver(() => {\n            this.handleChildListMutation();\n        });\n\n        this.attributeObserver = new MutationObserver((mutations) => {\n            this.handleAttributeMutations(mutations);\n        });\n\n        this.startObserving();\n    }\n\n    private handleAttributeMutations(mutations: MutationRecord[]) {\n        if (this.isAttributePaused) {\n            return;\n        }\n\n        this.isAttributePaused = true;\n\n        try {\n            mutations\n                .filter((m) => m.attributeName === TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR)\n                .forEach((mutation) => {\n                    const target = mutation.target as Element;\n                    const tagName = target.tagName?.toLowerCase();\n\n                    if (tagName === 'p-checkbox') {\n                        target.removeAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);\n                    } else if (tagName === 'input') {\n                        this.enforceInputLabel(target);\n                    } else {\n                        // Outros elementos não precisam de tratamento\n                    }\n                });\n        } finally {\n            this.isAttributePaused = false;\n        }\n    }\n\n    private enforceInputLabel(input: Element) {\n        const correctLabel = this.inputLabelMap.get(input);\n        if (!correctLabel) {\n            return;\n        }\n\n        const currentLabel = input.getAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);\n        if (currentLabel !== correctLabel) {\n            input.setAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR, correctLabel);\n        }\n    }\n\n    private handleChildListMutation() {\n        if (!this.childListObserver || this.isChildListPaused) {\n            return;\n        }\n\n        this.isChildListPaused = true;\n        this.childListObserver.disconnect();\n\n        try {\n            this.updateCheckboxLabels();\n        } finally {\n            this.startObserving();\n            this.isChildListPaused = false;\n        }\n    }\n\n    private startObserving() {\n        const { childListObserver, attributeObserver, observedElements } = this;\n\n        if (!childListObserver) {\n            return;\n        }\n\n        observedElements.forEach((element) => {\n            childListObserver.observe(element, {\n                childList: true,\n                subtree: true,\n            });\n\n            if (attributeObserver) {\n                attributeObserver.observe(element, {\n                    attributes: true,\n                    subtree: true,\n                    attributeFilter: [TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR],\n                });\n            }\n        });\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}