mapa-library-ui 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"mapa-library-ui-src-lib-components-table.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/directives/custom-paginator.directive.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/paginator_customization.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/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/utils/date.util.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.html","../../../projects/mapa-library-ui/src/lib/components/svg-icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.html","../../../projects/mapa-library-ui/src/lib/components/table/public-api.ts","../../../projects/mapa-library-ui/src/table.ts","../../../projects/mapa-library-ui/src/mapa-library-ui-src-lib-components-table.ts"],"sourcesContent":["import {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { map, startWith } from 'rxjs/operators';\n\n@Directive({\n selector: '[appBubblePagination], [appStylePaginatorMv]',\n standalone: true,\n})\nexport class BubblePaginationDirective\n implements AfterViewInit, OnChanges, OnDestroy\n{\n @Output() pageIndexChangeEmitter: EventEmitter<number> =\n new EventEmitter<number>();\n @Input() showFirstButton = true;\n @Input() showLastButton = true;\n @Input() renderButtonsNumber = 2;\n @Input() appCustomLength?: number;\n @Input() hideDefaultArrows = false;\n @Input() bubblePageIndex?: number;\n @Input() bubblePageSize?: number;\n private dotsEndRef!: HTMLElement;\n private dotsStartRef!: HTMLElement;\n private bubbleContainerRef!: HTMLElement;\n private buttonsRef: HTMLElement[] = [];\n private removeButtonListeners: Array<() => void> = [];\n private rebuildQueued = false;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly matPag: MatPaginator,\n private elementRef: ElementRef,\n private ren: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n this.styleDefaultPagination();\n this.createBubbleDivRef();\n this.renderButtons();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n if (\n (!changes?.['appCustomLength']?.firstChange &&\n changes?.['appCustomLength']) ||\n (!changes?.['bubblePageIndex']?.firstChange &&\n changes?.['bubblePageIndex']) ||\n (!changes?.['bubblePageSize']?.firstChange && changes?.['bubblePageSize'])\n ) {\n this.scheduleRebuildButtons();\n }\n }\n\n ngOnDestroy(): void {\n this.clearButtonListeners();\n }\n\n private renderButtons(): void {\n this.rebuildButtons();\n\n this.matPag.page\n .pipe(\n map((e) => [e.previousPageIndex ?? 0, e.pageIndex] as const),\n startWith([\n this.getActivePageIndex(),\n this.getActivePageIndex(),\n ] as const),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(([prev, curr]) => {\n this.updateButtonsOnPageEvent(prev, curr);\n });\n }\n\n private changeActiveButtonStyles(previousIndex: number, newIndex: number) {\n if (!this.buttonsRef.length) {\n return;\n }\n\n const previouslyActive = this.buttonsRef[previousIndex];\n const currentActive = this.buttonsRef[newIndex];\n\n try {\n this.ren.removeClass(previouslyActive, 'g-bubble__active');\n this.ren.addClass(currentActive, 'g-bubble__active');\n } catch {}\n\n this.buttonsRef.forEach((button) =>\n this.ren.setStyle(button, 'display', 'none'),\n );\n\n const renderElements = this.renderButtonsNumber;\n const endDots = newIndex < this.buttonsRef.length - renderElements - 1;\n const startDots = newIndex - renderElements > 0;\n\n const firstButton = this.buttonsRef[0];\n const lastButton = this.buttonsRef[this.buttonsRef.length - 1];\n\n try {\n if (this.showLastButton) {\n this.ren.setStyle(\n this.dotsEndRef,\n 'display',\n endDots ? 'block' : 'none',\n );\n this.ren.setStyle(lastButton, 'display', endDots ? 'flex' : 'none');\n }\n } catch {}\n\n try {\n if (this.showFirstButton) {\n this.ren.setStyle(\n this.dotsStartRef,\n 'display',\n startDots ? 'block' : 'none',\n );\n this.ren.setStyle(firstButton, 'display', startDots ? 'flex' : 'none');\n }\n } catch {}\n\n const startingIndex = startDots ? newIndex - renderElements : 0;\n const endingIndex = endDots\n ? newIndex + renderElements\n : this.buttonsRef.length - 1;\n\n for (let i = startingIndex; i <= endingIndex; i++) {\n const button = this.buttonsRef[i];\n this.ren.setStyle(button, 'display', 'flex');\n }\n }\n\n private styleDefaultPagination() {\n const nativeElement = this.elementRef.nativeElement;\n const previousButton = nativeElement.querySelector(\n '.mat-mdc-paginator-navigation-previous',\n );\n const nextButtonDefault = nativeElement.querySelector(\n '.mat-mdc-paginator-navigation-next',\n );\n\n if (this.hideDefaultArrows) {\n this.ren.setStyle(previousButton, 'display', 'none');\n this.ren.setStyle(nextButtonDefault, 'display', 'none');\n }\n }\n\n private createBubbleDivRef(): void {\n const actionContainer = this.elementRef.nativeElement.querySelector(\n 'div.mat-mdc-paginator-range-actions',\n );\n const nextButtonDefault = this.elementRef.nativeElement.querySelector(\n 'button.mat-mdc-paginator-navigation-next',\n );\n const pageRange = this.elementRef.nativeElement.querySelector(\n 'div.mat-mdc-paginator-range-label',\n );\n\n this.bubbleContainerRef = this.ren.createElement('div') as HTMLElement;\n this.ren.addClass(this.bubbleContainerRef, 'g-bubble-container');\n if (actionContainer) {\n this.ren.addClass(actionContainer, 'custom-paginator-container');\n }\n if (pageRange) {\n this.ren.addClass(pageRange, 'custom-paginator-counter');\n }\n\n if (actionContainer) {\n this.ren.insertBefore(\n actionContainer,\n this.bubbleContainerRef,\n nextButtonDefault,\n );\n }\n }\n\n private buildButtons(neededButtons: number): void {\n if (neededButtons <= 1) {\n return;\n }\n\n this.buttonsRef = [this.createButton(0)];\n this.dotsStartRef = this.createDotsElement();\n\n for (let index = 1; index < neededButtons - 1; index++) {\n this.buttonsRef = [...this.buttonsRef, this.createButton(index)];\n }\n\n this.dotsEndRef = this.createDotsElement();\n\n this.buttonsRef = [\n ...this.buttonsRef,\n this.createButton(neededButtons - 1),\n ];\n }\n\n private removeButtons(): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n this.clearButtonListeners();\n\n while (this.bubbleContainerRef.firstChild) {\n this.ren.removeChild(\n this.bubbleContainerRef,\n this.bubbleContainerRef.firstChild,\n );\n }\n this.buttonsRef = [];\n }\n\n private createButton(i: number): HTMLElement {\n const bubbleButton = this.ren.createElement('button');\n const text = this.ren.createText(String(i + 1));\n\n this.ren.addClass(bubbleButton, 'g-bubble');\n this.ren.setAttribute(bubbleButton, 'type', 'button');\n this.ren.setStyle(bubbleButton, 'margin-right', '8px');\n this.ren.appendChild(bubbleButton, text);\n\n const removeClickListener = this.ren.listen(bubbleButton, 'click', () => {\n this.switchPage(i);\n });\n this.removeButtonListeners.push(removeClickListener);\n\n this.ren.appendChild(this.bubbleContainerRef, bubbleButton);\n this.ren.setStyle(bubbleButton, 'display', 'none');\n\n return bubbleButton;\n }\n\n private createDotsElement(): HTMLElement {\n const dotsEl = this.ren.createElement('span');\n const dotsText = this.ren.createText('...');\n\n this.ren.setStyle(dotsEl, 'font-size', '18px');\n this.ren.setStyle(dotsEl, 'margin-right', '8px');\n this.ren.setStyle(dotsEl, 'padding-top', '6px');\n this.ren.setStyle(dotsEl, 'color', '#919191');\n\n this.ren.appendChild(dotsEl, dotsText);\n this.ren.appendChild(this.bubbleContainerRef, dotsEl);\n this.ren.setStyle(dotsEl, 'display', 'none');\n\n return dotsEl;\n }\n\n private switchPage(i: number): void {\n const previousPageIndex = this.matPag.pageIndex;\n this.matPag.pageIndex = i;\n this.matPag.page.emit({\n previousPageIndex,\n pageIndex: i,\n pageSize: this.matPag.pageSize,\n length: this.matPag.length,\n });\n\n this.pageIndexChangeEmitter.emit(i);\n }\n\n private updateButtonsOnPageEvent(\n previousIndex: number,\n newIndex: number,\n ): void {\n const neededButtons = this.getNeededButtons();\n if (neededButtons === this.buttonsRef.length) {\n this.changeActiveButtonStyles(previousIndex, newIndex);\n return;\n }\n\n this.rebuildButtons();\n }\n\n private scheduleRebuildButtons(): void {\n if (this.rebuildQueued) {\n return;\n }\n\n this.rebuildQueued = true;\n Promise.resolve().then(() => {\n this.rebuildQueued = false;\n\n if (this.bubbleContainerRef) {\n this.rebuildButtons();\n }\n });\n }\n\n private rebuildButtons(): void {\n const neededButtons = this.getNeededButtons();\n const activePageIndex = Math.min(\n this.getActivePageIndex(),\n Math.max(neededButtons - 1, 0),\n );\n\n this.removeButtons();\n this.matPag.pageIndex = activePageIndex;\n\n if (neededButtons <= 1) {\n return;\n }\n\n this.buildButtons(neededButtons);\n this.changeActiveButtonStyles(activePageIndex, activePageIndex);\n }\n\n private getNeededButtons(): number {\n const pageSize = this.getPageSize();\n const length = this.getLength();\n\n if (!Number.isFinite(pageSize) || pageSize <= 0) {\n return 0;\n }\n\n return Math.ceil(length / pageSize);\n }\n\n private getActivePageIndex(): number {\n return Math.max(this.bubblePageIndex ?? this.matPag.pageIndex ?? 0, 0);\n }\n\n private getPageSize(): number {\n return this.bubblePageSize || this.matPag.pageSize;\n }\n\n private getLength(): number {\n return this.appCustomLength ?? this.matPag.length ?? 0;\n }\n\n private clearButtonListeners(): void {\n this.removeButtonListeners.forEach((removeListener) => removeListener());\n this.removeButtonListeners = [];\n }\n}\n","import { Injector, effect } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\n\nexport function customPaginatorFactory(\n i18n: MapaI18nService,\n injector: Injector\n): MatPaginatorIntl {\n const customPaginatorIntl = new MatPaginatorIntl();\n\n effect(\n () => {\n const paginatorTexts = i18n.textsSignal().paginator;\n\n customPaginatorIntl.itemsPerPageLabel = paginatorTexts.itemsPerPage;\n customPaginatorIntl.nextPageLabel = paginatorTexts.nextPage;\n customPaginatorIntl.previousPageLabel = paginatorTexts.previousPage;\n customPaginatorIntl.getRangeLabel = paginatorTexts.showingRangeLabel;\n customPaginatorIntl.changes.next();\n },\n { injector }\n );\n\n return customPaginatorIntl;\n}\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 { InjectionToken, Provider } from '@angular/core';\nimport type {\n MapaUiTextGroups,\n PartialMapaUiTexts,\n ValidationContext,\n ValidationTextResolver,\n} from 'mapa-frontend-i18n';\n\nexport type MapaUiTexts = MapaUiTextGroups;\nexport type ValidationMessageContext = ValidationContext;\nexport type { PartialMapaUiTexts, ValidationTextResolver };\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n 'MAPA_UI_TEXTS',\n);\n\nfunction formatPaginatorRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${safeLength}`;\n}\n\nfunction formatPaginatorShowingRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return 'Mostrando 0 - 0 de 0 item';\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n const itemLabel = safeLength === 1 ? 'item' : 'itens';\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${safeLength} ${itemLabel}`;\n}\n\nconst DEFAULT_MAPA_UI_TEXTS: MapaUiTexts = {\n common: {\n selectAll: 'Selecionar todos',\n retry: 'Tentar novamente',\n },\n filters: {\n clear: 'Limpar filtros',\n submit: 'Filtrar',\n },\n datepicker: {\n startDatePlaceholder: 'Data inicial',\n endDatePlaceholder: 'Data final',\n },\n capability: {\n groupAverageTitle: 'Média geral do grupo',\n individualAverageTitle: 'Média geral do indivíduo',\n conceptTitle: 'Conceito',\n resultTitle: 'Resultado',\n positiveIndicatorsTitle: 'Indicadores positivos',\n negativeIndicatorsTitle: 'Indicadores negativos',\n riskIndicatorsTitle: 'Indicadores de risco',\n precipitationRiskTitle: 'Risco de acidente por precipitação',\n negligenceRiskTitle: 'Risco de acidente por negligência',\n negativeDirectionLabel: 'Direção Negativa |',\n positiveDirectionLabel: 'Direção Positiva |',\n },\n paginator: {\n itemsPerPage: 'Itens por página',\n nextPage: 'Próxima página',\n previousPage: 'Página anterior',\n rangeLabel: formatPaginatorRange,\n showingRangeLabel: formatPaginatorShowingRange,\n },\n warning: {\n lowReliabilityTitle: 'Nível baixo de confiabilidade no(s) teste(s):',\n expirationLimitTitle: 'O prazo de validade do(s) teste(s) está no limite:',\n },\n table: {\n emptyTitle: 'Não foram encontrados resultados',\n emptySubtitle: '',\n loading: 'Carregando resultados',\n errorTitle: 'Não foi possível carregar os resultados.',\n selectAllVisible: 'Selecionar todos os itens desta página',\n selectionColumn: 'Seleção',\n selectRow: 'Selecionar item',\n selectNamedRow: (item: string) => `Selecionar ${item}`,\n },\n validation: {\n cnpj: 'CNPJ inválido',\n cpf: 'CPF inválido',\n email: 'E-mail inválido',\n max: (context?: ValidationContext) =>\n `O valor máximo permitido é ${context?.max ?? ''}`.trim(),\n maxLength: (context?: ValidationContext) =>\n `O máximo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n min: (context?: ValidationContext) =>\n `O valor mínimo permitido é ${context?.min ?? ''}`.trim(),\n minLength: (context?: ValidationContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n pattern: 'Formato inválido',\n required: 'Campo obrigatório',\n },\n};\n\nfunction getDefaultTexts(): MapaUiTexts {\n return DEFAULT_MAPA_UI_TEXTS;\n}\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null,\n): MapaUiTexts {\n const defaults = getDefaultTexts();\n\n return {\n common: { ...defaults.common, ...(customTexts?.common ?? {}) },\n filters: { ...defaults.filters, ...(customTexts?.filters ?? {}) },\n datepicker: { ...defaults.datepicker, ...(customTexts?.datepicker ?? {}) },\n capability: { ...defaults.capability, ...(customTexts?.capability ?? {}) },\n paginator: { ...defaults.paginator, ...(customTexts?.paginator ?? {}) },\n warning: { ...defaults.warning, ...(customTexts?.warning ?? {}) },\n table: { ...defaults.table, ...(customTexts?.table ?? {}) },\n validation: { ...defaults.validation, ...(customTexts?.validation ?? {}) },\n };\n}\n\nexport function provideMapaUiTexts(texts: PartialMapaUiTexts): Provider {\n return {\n provide: MAPA_UI_TEXTS,\n useValue: texts,\n };\n}\n","import { Inject, Injectable, Injector, Optional, inject, signal } from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport {\n MAPA_UI_TEXTS,\n MapaUiTexts,\n PartialMapaUiTexts,\n ValidationMessageContext,\n ValidationTextResolver,\n mergeMapaUiTexts,\n} from \"../i18n/mapa-ui-texts\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class MapaI18nService {\n private readonly injector = inject(Injector);\n private readonly textsState = signal<MapaUiTexts>(mergeMapaUiTexts());\n\n readonly textsSignal = this.textsState.asReadonly();\n readonly texts$ = toObservable(this.textsSignal, { injector: this.injector });\n\n constructor(\n @Optional() @Inject(MAPA_UI_TEXTS) customTexts: PartialMapaUiTexts | null\n ) {\n if (customTexts) {\n this.textsState.set(mergeMapaUiTexts(customTexts));\n }\n }\n\n get texts(): MapaUiTexts {\n return this.textsState();\n }\n\n setTexts(texts: PartialMapaUiTexts): void {\n this.textsState.set(mergeMapaUiTexts(texts));\n }\n\n resolveValidationText(\n key: keyof MapaUiTexts[\"validation\"],\n context?: ValidationMessageContext\n ): string {\n return this.resolveText(this.texts.validation[key], context);\n }\n\n private resolveText(\n value: ValidationTextResolver,\n context?: ValidationMessageContext\n ): string {\n return typeof value === \"function\" ? value(context) : value;\n }\n}\n","import { 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 { HttpClient } from \"@angular/common/http\";\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, DestroyRef, Input, OnChanges, inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: \"mapa-svg-icon\",\n templateUrl: \"./svg-icon.component.html\",\n styleUrl: \"./svg-icon.component.scss\",\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaSvgIconComponent implements OnChanges {\n @Input() public name?: string;\n @Input() public color?: string;\n\n public svgIcon = \"\";\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private httpClient: HttpClient, private cdr: ChangeDetectorRef) {}\n\n public ngOnChanges(): void {\n if (!this.name) {\n this.svgIcon = \"\";\n return;\n }\n\n if (this.color) {\n this.httpClient\n .get(`images/icons/${this.name}.svg`, { responseType: 'text' })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string) => {\n this.svgIcon = this.applyColor(value);\n this.cdr.markForCheck();\n });\n return;\n }\n\n this.svgIcon = `<img src=\"images/icons/${this.name}.svg\" alt=\"${this.name}\" />`;\n this.cdr.markForCheck();\n }\n private applyColor(value: string): string {\n if (!this.color) {\n return value;\n }\n\n return value\n .replaceAll('fill=\"#50575E\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#181818\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#7def7b\"', `fill=\"${this.color}\"`)\n .replaceAll('stroke=\"#50575E\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#181818\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#7def7b\"', `stroke=\"${this.color}\"`);\n }\n}\n\n","<span *ngIf=\"svgIcon\" class=\"mapa__svg-icon\" [innerHTML]=\"svgIcon | safeHtml\"></span>\n","/*\n * Public API Surface of mapa-library-ui svg-icon\n */\n\nexport * from './src/svg-icon.component';\n","import { DatePipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Directive,\n EventEmitter,\n Injector,\n Input,\n Output,\n TemplateRef,\n contentChildren,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from '@angular/material/paginator';\nimport { Sort, SortDirection } from '@angular/material/sort';\nimport { Params, RouterLink, UrlTree } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { BubblePaginationDirective } from '../../../core/directives/custom-paginator.directive';\nimport { MenuActionItem } from '../../../core/interfaces/menu-action.interface';\nimport { RowClickEvent } from '../../../core/interfaces/table-row-click-event.interface';\nimport { TableColumn } from '../../../core/interfaces/table-column.interface';\nimport { TableEmptyState } from '../../../core/interfaces/table-empty-state.interface';\nimport {\n SelectedTableRow,\n TableRowData,\n} from '../../../core/interfaces/table-row-data.interface';\nimport { TableStatus } from '../../../core/interfaces/table-status.interface';\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\nimport { isDateValue, parseDateValue } from '../../../core/utils/date.util';\nimport { MapaSvgIconComponent } from '../../svg-icon/public-api';\nimport { MenuItem } from '../../menu/public-api';\nimport { customPaginatorFactory } from './paginator_customization';\n\nexport type DataTableAlignment = 'start' | 'center' | 'end';\nexport type DataTableSortDirection = SortDirection;\nexport type DataTableColumn = TableColumn;\n\nexport interface DataTablePageChange {\n pageIndex: number;\n pageSize: number;\n}\n\nexport interface DataTableSortChange {\n active: string;\n direction: DataTableSortDirection;\n}\n\nexport interface DataTableSelectionChange {\n selectedKeys: string[];\n}\n\nexport interface MapaTableCellContext {\n $implicit: unknown;\n row: unknown;\n column: TableColumn;\n}\n\n@Directive({\n selector: 'ng-template[mapaTableCell]',\n standalone: true,\n})\nexport class MapaTableCellDirective {\n @Input({ required: true, alias: 'mapaTableCell' }) columnKey!: string;\n readonly templateRef = inject<TemplateRef<MapaTableCellContext>>(TemplateRef);\n\n static ngTemplateContextGuard(\n _directive: MapaTableCellDirective,\n context: unknown,\n ): context is MapaTableCellContext {\n return true;\n }\n}\n\n@Component({\n selector: 'mapa-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n BubblePaginationDirective,\n DatePipe,\n MatCheckboxModule,\n MatIconModule,\n MatMenuModule,\n MatPaginatorModule,\n MapaSvgIconComponent,\n NgClass,\n NgTemplateOutlet,\n RouterLink,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: MatPaginatorIntl,\n useFactory: customPaginatorFactory,\n deps: [MapaI18nService, Injector],\n },\n ],\n standalone: true,\n})\nexport class MapaTableComponent {\n @Input() columns: readonly TableColumn[] = [];\n @Input() data: readonly unknown[] = [];\n @Input() rowKey = 'id';\n @Input() caption = '';\n\n @Input() selectable?: boolean;\n @Input() showSelectAll = true;\n @Input() selectedKeys?: readonly string[];\n @Input() selectionLabelKey = 'name';\n\n /** @deprecated Prefer `selectable`. */\n @Input() checkbox?: boolean;\n /** @deprecated Prefer `selectedKeys`, `rowKey` and `selectionChange`. */\n @Input() selection?: SelectionModel<TableRowData>;\n\n @Input() loading?: boolean;\n @Input() finished?: boolean;\n @Input() error = false;\n @Input() emptyTitle?: string;\n @Input() emptySubtitle?: string | null;\n @Input() errorTitle?: string;\n @Input() errorSubtitle?: string | null;\n @Input() retryLabel?: string;\n\n /** @deprecated Prefer the individual state inputs. */\n @Input() status: TableStatus = { loading: false, finished: false };\n /** @deprecated Prefer `emptyTitle` and `emptySubtitle`. */\n @Input() empty: TableEmptyState = { title: '', subtitle: null };\n\n @Input() pagination?: boolean;\n @Input() pageIndex = 1;\n @Input() pageSize = 5;\n @Input() totalCount = 0;\n @Input() pageSizeOptions: readonly number[] = [5, 10, 25, 100];\n /** @deprecated The paginator derives its pages from `totalCount` and `pageSize`. */\n @Input() totalPages = 0;\n /** @deprecated Prefer `pagination`. */\n @Input() showPaginator = true;\n @Input() paginatorShowFirstButton = true;\n @Input() paginatorShowLastButton = true;\n @Input() paginatorRenderButtonsNumber = 2;\n @Input() paginatorHideDefaultArrows = false;\n\n @Input() sortActive = '';\n @Input() sortDirection: DataTableSortDirection = '';\n\n /** @deprecated Prefer projected cells for new integrations. */\n @Input() actions?: MenuItem[];\n /** @deprecated Prefer projected cells for new integrations. */\n @Input() menuItems: MenuItem[] = [];\n /** @deprecated The presence of a `menu` column controls menu rendering. */\n @Input() menu?: boolean;\n /** @deprecated Prefer filtering in the consuming feature. */\n @Input() filterControl?: FormControl<string | null>;\n\n @Output() readonly pageChange = new EventEmitter<DataTablePageChange>();\n @Output() readonly sortChange = new EventEmitter<DataTableSortChange>();\n @Output() readonly selectionChange =\n new EventEmitter<DataTableSelectionChange>();\n @Output() readonly retry = new EventEmitter<void>();\n\n /** @deprecated Prefer `pageChange`. */\n @Output() readonly onChangePage = new EventEmitter<PageEvent>();\n /** @deprecated Prefer `sortChange`. */\n @Output() readonly onSortChange = new EventEmitter<Sort>();\n /** @deprecated Prefer `selectionChange`. */\n @Output() readonly selectedRows = new EventEmitter<SelectedTableRow[]>();\n @Output() readonly rowClick = new EventEmitter<RowClickEvent>();\n\n private readonly projectedCells = contentChildren(MapaTableCellDirective);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly i18n = inject(MapaI18nService);\n private localSort: DataTableSortChange = { active: '', direction: '' };\n private filterValue = '';\n private observedFilter?: FormControl<string | null>;\n private filterSubscription?: Subscription;\n\n protected get texts() {\n return this.i18n.textsSignal();\n }\n\n protected get visibleData(): readonly unknown[] {\n this.observeFilterControl();\n if (!this.filterValue) return this.data;\n return this.data.filter((row) =>\n this.getFilterValue(row).includes(this.filterValue),\n );\n }\n\n protected get isSelectable(): boolean {\n return this.selectable ?? this.checkbox ?? false;\n }\n\n protected get isLoading(): boolean {\n return this.loading ?? this.status.loading;\n }\n\n protected get isFinished(): boolean {\n return this.finished ?? this.status.finished;\n }\n\n protected get resolvedEmptyTitle(): string {\n return (this.emptyTitle ?? this.empty.title) || this.texts.table.emptyTitle;\n }\n\n protected get resolvedEmptySubtitle(): string | null {\n return (\n (this.emptySubtitle ?? this.empty.subtitle) ||\n this.texts.table.emptySubtitle ||\n null\n );\n }\n\n protected get resolvedErrorTitle(): string {\n return this.errorTitle || this.texts.table.errorTitle;\n }\n\n protected get resolvedErrorSubtitle(): string | null {\n return this.errorSubtitle ?? null;\n }\n\n protected get resolvedRetryLabel(): string {\n return this.retryLabel || this.texts.common.retry;\n }\n\n protected get zeroBasedPageIndex(): number {\n return Math.max(this.pageIndex - 1, 0);\n }\n\n protected get shouldShowPaginator(): boolean {\n const enabled = this.pagination ?? this.showPaginator;\n return (\n enabled &&\n !this.isLoading &&\n !this.error &&\n this.totalCount > this.data.length\n );\n }\n\n protected get skeletonRows(): number[] {\n return Array.from(\n { length: Math.max(this.pageSize, 0) },\n (_, index) => index,\n );\n }\n\n protected skeletonColumnWidth(column: TableColumn): string {\n return (\n column.width ||\n (this.columns.length ? `${100 / this.columns.length}%` : '100%')\n );\n }\n\n protected rowIdentity(row: unknown, index: number): unknown {\n return this.getRowKey(row) || row || index;\n }\n\n protected getRowKey(row: unknown): string {\n const value = this.getColumnValue(row, this.rowKey);\n return value == null ? '' : String(value);\n }\n\n protected isSelected(row: unknown): boolean {\n if (this.selectedKeys !== undefined) {\n return new Set(this.selectedKeys.map(String)).has(this.getRowKey(row));\n }\n return this.selection?.isSelected(row as TableRowData) ?? false;\n }\n\n protected allVisibleSelected(): boolean {\n const rows = this.visibleData;\n return rows.length > 0 && rows.every((row) => this.isSelected(row));\n }\n\n protected someVisibleSelected(): boolean {\n const selectedCount = this.visibleData.filter((row) =>\n this.isSelected(row),\n ).length;\n return selectedCount > 0 && selectedCount < this.visibleData.length;\n }\n\n protected toggleRow(row: unknown, selected: boolean): void {\n if (this.selectedKeys !== undefined) {\n const next = new Set(this.selectedKeys.map(String));\n const key = this.getRowKey(row);\n if (!key) return;\n selected ? next.add(key) : next.delete(key);\n this.selectionChange.emit({ selectedKeys: Array.from(next) });\n return;\n }\n\n if (!this.selection) return;\n selected\n ? this.selection.select(row as TableRowData)\n : this.selection.deselect(row as TableRowData);\n this.emitLegacySelection();\n }\n\n protected toggleVisibleRows(selected: boolean): void {\n if (this.selectedKeys !== undefined) {\n const next = new Set(this.selectedKeys.map(String));\n for (const row of this.visibleData) {\n const key = this.getRowKey(row);\n if (!key) continue;\n selected ? next.add(key) : next.delete(key);\n }\n this.selectionChange.emit({ selectedKeys: Array.from(next) });\n return;\n }\n\n if (!this.selection) return;\n for (const row of this.visibleData) {\n selected\n ? this.selection.select(row as TableRowData)\n : this.selection.deselect(row as TableRowData);\n }\n this.emitLegacySelection();\n }\n\n protected selectionLabel(row: unknown): string {\n const value = this.getColumnValue(row, this.selectionLabelKey);\n return value == null\n ? this.texts.table.selectRow\n : this.texts.table.selectNamedRow(String(value));\n }\n\n protected cellTemplate(\n columnKey: string,\n ): TemplateRef<MapaTableCellContext> | null {\n return (\n this.projectedCells().find((cell) => cell.columnKey === columnKey)\n ?.templateRef ?? null\n );\n }\n\n protected isSortable(column: TableColumn): boolean {\n return column.sortable ?? column.sort ?? false;\n }\n\n protected ariaSort(\n column: TableColumn,\n ): 'ascending' | 'descending' | 'none' | null {\n if (!this.isSortable(column)) return null;\n if (this.activeSort() !== column.key) return 'none';\n if (this.activeDirection() === 'asc') return 'ascending';\n if (this.activeDirection() === 'desc') return 'descending';\n return 'none';\n }\n\n protected sortIcon(column: TableColumn): string {\n if (this.activeSort() !== column.key || !this.activeDirection())\n return 'unfold_more';\n return this.activeDirection() === 'asc' ? 'arrow_upward' : 'arrow_downward';\n }\n\n protected changeSort(column: TableColumn): void {\n if (!this.isSortable(column)) return;\n const current =\n this.activeSort() === column.key ? this.activeDirection() : '';\n const direction: DataTableSortDirection =\n current === '' ? 'asc' : current === 'asc' ? 'desc' : '';\n const active = direction ? column.key : '';\n this.localSort = { active, direction };\n this.sortChange.emit(this.localSort);\n this.onSortChange.emit(this.localSort);\n }\n\n protected handlePage(event: PageEvent): void {\n this.pageChange.emit({\n pageIndex: event.pageIndex + 1,\n pageSize: event.pageSize,\n });\n this.onChangePage.emit(event);\n }\n\n protected cellValue(row: unknown, column: TableColumn): string {\n const value = this.getColumnValue(row, column.key);\n if (value == null || value === '') return column.fallback ?? '-';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'string' || typeof value === 'number')\n return String(value);\n return '';\n }\n\n protected dateValue(row: unknown, column: TableColumn): Date | null {\n const value = this.getColumnValue(row, column.key);\n if (typeof value === 'string') {\n const dateOnly = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value.trim());\n if (dateOnly) {\n const [, year, month, day] = dateOnly;\n const localDate = new Date(\n Number(year),\n Number(month) - 1,\n Number(day),\n );\n return Number.isNaN(localDate.getTime()) ? null : localDate;\n }\n }\n return isDateValue(value) ? parseDateValue(value) : null;\n }\n\n protected dateFormat(column: TableColumn): string | null {\n return column.dateFormat ?? column.mask ?? null;\n }\n\n protected statusLabel(column: TableColumn, row: unknown): string {\n const labels = column.status?.label;\n if (!labels) return column.fallback ?? '-';\n return labels[this.statusIndex(row, column.key)] ?? column.fallback ?? '-';\n }\n\n protected statusBackground(column: TableColumn, row: unknown): string | null {\n return column.status?.color?.[this.statusIndex(row, column.key)] ?? null;\n }\n\n protected statusTextColor(column: TableColumn, row: unknown): string | null {\n return (\n column.status?.textColor?.[this.statusIndex(row, column.key)] ?? null\n );\n }\n\n protected cellClasses(column: TableColumn, row: unknown): string[] {\n const record = this.asRow(row);\n const cellClass =\n record.styleClass?.key === column.key ? record.styleClass.class : '';\n return [\n cellClass || column.class || record.rowStyleClass || '',\n column.collapse\n ? `mapa-data-table__cell--${this.normalizeCollapse(column.collapse)}`\n : '',\n ].filter(Boolean);\n }\n\n protected isCenterAligned(column: TableColumn): boolean {\n return column.align === 'center';\n }\n\n protected isEndAligned(column: TableColumn): boolean {\n return ['end', 'right', 'flex-end'].includes(column.align ?? '');\n }\n\n protected getActionItems(row: unknown): MenuItem[] {\n const rowActions = this.getMenuActionItems(row, 'actions');\n return rowActions.length ? rowActions : (this.actions ?? []);\n }\n\n protected getMenuItems(row: unknown): MenuItem[] {\n const rowItems = this.getMenuActionItems(row, 'menu');\n return rowItems.length ? rowItems : this.menuItems;\n }\n\n protected emitAction(row: unknown, item: MenuActionItem, event: Event): void {\n event.stopPropagation();\n if (item.disabled) return;\n this.rowClick.emit({ row: this.asRow(row), action: item.action });\n }\n\n protected emitRowInteraction(event: Event, row: unknown): void {\n if (!this.rowClick.observed || this.isInteractiveTarget(event.target))\n return;\n this.rowClick.emit({ row: this.asRow(row), action: '' });\n }\n\n protected emitRowKeyboard(event: KeyboardEvent, row: unknown): void {\n if (!this.rowClick.observed || !['Enter', ' '].includes(event.key)) return;\n event.preventDefault();\n this.rowClick.emit({ row: this.asRow(row), action: '' });\n }\n\n protected route(item: MenuActionItem): string | unknown[] | UrlTree | null {\n return item.route ?? null;\n }\n\n protected queryParams(item: MenuActionItem): Params | null {\n return item.queryParams ?? null;\n }\n\n protected svgName(svg: string): string {\n return svg.split('/').pop()?.split('.')[0] || '';\n }\n\n private activeSort(): string {\n return this.sortActive || this.localSort.active;\n }\n\n private activeDirection(): DataTableSortDirection {\n return this.sortDirection || this.localSort.direction;\n }\n\n private emitLegacySelection(): void {\n if (!this.selection) return;\n this.selectedRows.emit(this.selection.selected.map((row) => ({ row })));\n }\n\n private observeFilterControl(): void {\n if (this.observedFilter === this.filterControl) return;\n this.filterSubscription?.unsubscribe();\n this.observedFilter = this.filterControl;\n this.filterValue = `${this.filterControl?.value ?? ''}`\n .trim()\n .toLowerCase();\n this.filterSubscription = this.filterControl?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.filterValue = `${value ?? ''}`.trim().toLowerCase();\n this.cdr.markForCheck();\n });\n }\n\n private getColumnValue(row: unknown, key: string): unknown {\n if (!row || typeof row !== 'object') return null;\n return (row as Record<string, unknown>)[key];\n }\n\n private statusIndex(row: unknown, key: string): number {\n const value = this.getColumnValue(row, key);\n if (typeof value === 'boolean') return value ? 1 : 0;\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n }\n\n private normalizeCollapse(collapse: string): string {\n return collapse === 'nowrap' ? 'no-wrap' : collapse;\n }\n\n private getFilterValue(value: unknown): string {\n if (value == null) return '';\n if (['string', 'number', 'boolean'].includes(typeof value))\n return String(value).toLowerCase();\n if (Array.isArray(value))\n return value.map((item) => this.getFilterValue(item)).join(' ');\n if (typeof value === 'object')\n return Object.values(value)\n .map((item) => this.getFilterValue(item))\n .join(' ');\n return '';\n }\n\n private getMenuActionItems(\n row: unknown,\n key: 'actions' | 'menu',\n ): MenuItem[] {\n const value = this.getColumnValue(row, key);\n if (!Array.isArray(value)) return [];\n return value.filter(\n (item): item is MenuItem =>\n !!item &&\n typeof item === 'object' &&\n 'action' in item &&\n 'text' in item,\n );\n }\n\n private asRow(row: unknown): TableRowData {\n return row as TableRowData;\n }\n\n private isInteractiveTarget(target: EventTarget | null): boolean {\n return (\n target instanceof Element &&\n !!target.closest(\n \"a, button, input, select, textarea, [role='button'], [role='menuitem']\",\n )\n );\n }\n}\n","<section\n class=\"mapa-data-table\"\n [class.mapa-data-table--selectable]=\"isSelectable\"\n>\n <div class=\"mapa-data-table__frame\">\n @if (isLoading) {\n <table class=\"mapa-data-table__table\" aria-hidden=\"true\">\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"mapa-data-table__selection-cell\"></th>\n }\n @for (column of columns; track column.key) {\n <th [style.width]=\"skeletonColumnWidth(column)\">\n {{ column.label }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of skeletonRows; track row) {\n <tr>\n @if (isSelectable) {\n <td class=\"mapa-data-table__selection-cell\">\n <span\n class=\"mapa-data-table__skeleton mapa-data-table__skeleton--checkbox\"\n ></span>\n </td>\n }\n @for (column of columns; track column.key) {\n <td [style.width]=\"skeletonColumnWidth(column)\">\n <span class=\"mapa-data-table__skeleton\"></span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n <span class=\"mapa-data-table__sr-only\" role=\"status\">\n {{ texts.table.loading }}\n </span>\n } @else if (error) {\n <div class=\"mapa-data-table__state\" role=\"alert\">\n <strong>{{ resolvedErrorTitle }}</strong>\n @if (resolvedErrorSubtitle) {\n <span>{{ resolvedErrorSubtitle }}</span>\n }\n @if (retry.observed) {\n <button type=\"button\" (click)=\"retry.emit()\">\n {{ resolvedRetryLabel }}\n </button>\n }\n </div>\n } @else if (visibleData.length > 0) {\n <table class=\"mapa-data-table__table\">\n @if (caption) {\n <caption class=\"mapa-data-table__sr-only\">\n {{\n caption\n }}\n </caption>\n }\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"mapa-data-table__selection-cell\">\n @if (showSelectAll) {\n <mat-checkbox\n color=\"primary\"\n [checked]=\"allVisibleSelected()\"\n [indeterminate]=\"someVisibleSelected()\"\n [aria-label]=\"texts.table.selectAllVisible\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleVisibleRows($event.checked)\"\n />\n } @else {\n <span class=\"mapa-data-table__sr-only\">\n {{ texts.table.selectionColumn }}\n </span>\n }\n </th>\n }\n @for (column of columns; track column.key) {\n <th\n [class.mapa-data-table__cell--center]=\"isCenterAligned(column)\"\n [class.mapa-data-table__cell--end]=\"isEndAligned(column)\"\n [style.width]=\"column.width ?? null\"\n [attr.aria-sort]=\"ariaSort(column)\"\n >\n @if (isSortable(column)) {\n <button\n type=\"button\"\n class=\"mapa-data-table__sort\"\n (click)=\"changeSort(column)\"\n >\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n <mat-icon aria-hidden=\"true\">{{\n sortIcon(column)\n }}</mat-icon>\n </button>\n } @else {\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of visibleData; track rowIdentity(row, $index)) {\n <tr\n [class.mapa-data-table__row--selected]=\"isSelected(row)\"\n [class.mapa-data-table__row--interactive]=\"rowClick.observed\"\n [attr.tabindex]=\"rowClick.observed ? 0 : null\"\n (click)=\"emitRowInteraction($event, row)\"\n (keydown)=\"emitRowKeyboard($event, row)\"\n >\n @if (isSelectable) {\n <td class=\"mapa-data-table__selection-cell\">\n <mat-checkbox\n color=\"primary\"\n [checked]=\"isSelected(row)\"\n [aria-label]=\"selectionLabel(row)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRow(row, $event.checked)\"\n />\n </td>\n }\n @for (column of columns; track column.key) {\n <td\n [attr.data-label]=\"column.label\"\n [class.mapa-data-table__cell--center]=\"\n isCenterAligned(column)\n \"\n [class.mapa-data-table__cell--end]=\"isEndAligned(column)\"\n [style.width]=\"column.width ?? null\"\n >\n <div\n class=\"mapa-data-table__cell-content\"\n [ngClass]=\"cellClasses(column, row)\"\n >\n @if (cellTemplate(column.key); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n row,\n column,\n }\"\n ></ng-container>\n } @else if (column.key === \"actions\") {\n <div class=\"mapa-data-table__actions\">\n @for (item of getActionItems(row); track item) {\n @if (route(item); as actionRoute) {\n <a\n class=\"mapa-data-table__action\"\n [class.mapa-data-table__action--disabled]=\"\n item.disabled\n \"\n [attr.aria-disabled]=\"\n item.disabled ? 'true' : null\n \"\n [attr.tabindex]=\"item.disabled ? -1 : null\"\n [title]=\"item.text\"\n [routerLink]=\"item.disabled ? null : actionRoute\"\n [queryParams]=\"queryParams(item)\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"svgName(item.svg)\" />\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n } @else {\n <span class=\"mapa-data-table__sr-only\">{{\n item.text\n }}</span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"mapa-data-table__action\"\n [disabled]=\"item.disabled\"\n [title]=\"item.text\"\n (click)=\"emitAction(row, item, $event)\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"svgName(item.svg)\" />\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n } @else {\n <span class=\"mapa-data-table__sr-only\">{{\n item.text\n }}</span>\n }\n </button>\n }\n }\n </div>\n } @else if (column.key === \"menu\") {\n @if (getMenuItems(row).length > 0) {\n <button\n type=\"button\"\n class=\"mapa-data-table__menu-trigger\"\n [matMenuTriggerFor]=\"rowMenu\"\n [attr.aria-label]=\"column.label\"\n (click)=\"$event.stopPropagation()\"\n >\n <mat-icon aria-hidden=\"true\">more_vert</mat-icon>\n </button>\n <mat-menu #rowMenu=\"matMenu\">\n @for (item of getMenuItems(row); track item) {\n @if (route(item); as menuRoute) {\n <a\n mat-menu-item\n [disabled]=\"item.disabled\"\n [routerLink]=\"item.disabled ? null : menuRoute\"\n [queryParams]=\"queryParams(item)\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n <span>{{ item.text }}</span>\n </a>\n } @else {\n <button\n mat-menu-item\n [disabled]=\"item.disabled\"\n (click)=\"emitAction(row, item, $event)\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n <span>{{ item.text }}</span>\n </button>\n }\n }\n </mat-menu>\n }\n } @else if (dateFormat(column); as format) {\n @if (dateValue(row, column); as value) {\n {{ value | date: format }}\n } @else {\n {{ column.fallback ?? \"-\" }}\n }\n } @else if (column.status) {\n <span\n class=\"mapa-data-table__status\"\n [class.mapa-data-table__status--round]=\"\n column.status.style === 'round'\n \"\n [style.background-color]=\"statusBackground(column, row)\"\n [style.color]=\"statusTextColor(column, row)\"\n [innerHTML]=\"statusLabel(column, row) | safeHtml\"\n ></span>\n } @else {\n <span\n [innerHTML]=\"cellValue(row, column) | safeHtml\"\n ></span>\n }\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n } @else if (isFinished) {\n <div class=\"mapa-data-table__state\">\n <strong>{{ resolvedEmptyTitle }}</strong>\n @if (resolvedEmptySubtitle) {\n <span>{{ resolvedEmptySubtitle }}</span>\n }\n </div>\n }\n </div>\n\n @if (shouldShowPaginator) {\n <mat-paginator\n class=\"mapa-data-table__paginator\"\n appBubblePagination\n [appCustomLength]=\"totalCount\"\n [bubblePageIndex]=\"zeroBasedPageIndex\"\n [pageIndex]=\"zeroBasedPageIndex\"\n [showFirstButton]=\"paginatorShowFirstButton\"\n [showLastButton]=\"paginatorShowLastButton\"\n [renderButtonsNumber]=\"paginatorRenderButtonsNumber\"\n [hideDefaultArrows]=\"paginatorHideDefaultArrows\"\n [bubblePageSize]=\"pageSize\"\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"handlePage($event)\"\n />\n }\n</section>\n","/*\n * Public API Surface of mapa-library-ui table\n */\n\nexport * from './src/paginator_customization';\nexport * from './src/table.component';\n","/*\n * Public API Surface of mapa-library-ui table\n */\nexport * from './lib/core/directives/custom-paginator.directive';\nexport * from './lib/core/interfaces/table-empty-state.interface';\nexport * from './lib/core/interfaces/table-row-data.interface';\nexport * from './lib/core/interfaces/table-row-click-event.interface';\nexport * from './lib/core/interfaces/table-status.interface';\nexport * from './lib/components/table/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './table';\n"],"names":["i1","i1.HtmlSanitizerService","i2","i4"],"mappings":"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"}
1
+ {"version":3,"file":"mapa-library-ui-src-lib-components-table.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/directives/custom-paginator.directive.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/paginator_customization.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/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/utils/date.util.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.html","../../../projects/mapa-library-ui/src/lib/components/svg-icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.html","../../../projects/mapa-library-ui/src/lib/components/table/public-api.ts","../../../projects/mapa-library-ui/src/table.ts","../../../projects/mapa-library-ui/src/mapa-library-ui-src-lib-components-table.ts"],"sourcesContent":["import {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { map, startWith } from 'rxjs/operators';\n\n@Directive({\n selector: '[appBubblePagination], [appStylePaginatorMv]',\n standalone: true,\n})\nexport class BubblePaginationDirective\n implements AfterViewInit, OnChanges, OnDestroy\n{\n @Output() pageIndexChangeEmitter: EventEmitter<number> =\n new EventEmitter<number>();\n @Input() showFirstButton = true;\n @Input() showLastButton = true;\n @Input() renderButtonsNumber = 2;\n @Input() appCustomLength?: number;\n @Input() hideDefaultArrows = false;\n @Input() bubblePageIndex?: number;\n @Input() bubblePageSize?: number;\n private dotsEndRef!: HTMLElement;\n private dotsStartRef!: HTMLElement;\n private bubbleContainerRef!: HTMLElement;\n private buttonsRef: HTMLElement[] = [];\n private removeButtonListeners: Array<() => void> = [];\n private rebuildQueued = false;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly matPag: MatPaginator,\n private elementRef: ElementRef,\n private ren: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n this.styleDefaultPagination();\n this.createBubbleDivRef();\n this.renderButtons();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n if (\n (!changes?.['appCustomLength']?.firstChange &&\n changes?.['appCustomLength']) ||\n (!changes?.['bubblePageIndex']?.firstChange &&\n changes?.['bubblePageIndex']) ||\n (!changes?.['bubblePageSize']?.firstChange && changes?.['bubblePageSize'])\n ) {\n this.scheduleRebuildButtons();\n }\n }\n\n ngOnDestroy(): void {\n this.clearButtonListeners();\n }\n\n private renderButtons(): void {\n this.rebuildButtons();\n\n this.matPag.page\n .pipe(\n map((e) => [e.previousPageIndex ?? 0, e.pageIndex] as const),\n startWith([\n this.getActivePageIndex(),\n this.getActivePageIndex(),\n ] as const),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(([prev, curr]) => {\n this.updateButtonsOnPageEvent(prev, curr);\n });\n }\n\n private changeActiveButtonStyles(previousIndex: number, newIndex: number) {\n if (!this.buttonsRef.length) {\n return;\n }\n\n const previouslyActive = this.buttonsRef[previousIndex];\n const currentActive = this.buttonsRef[newIndex];\n\n try {\n this.ren.removeClass(previouslyActive, 'g-bubble__active');\n this.ren.addClass(currentActive, 'g-bubble__active');\n } catch {}\n\n this.buttonsRef.forEach((button) =>\n this.ren.setStyle(button, 'display', 'none'),\n );\n\n const renderElements = this.renderButtonsNumber;\n const endDots = newIndex < this.buttonsRef.length - renderElements - 1;\n const startDots = newIndex - renderElements > 0;\n\n const firstButton = this.buttonsRef[0];\n const lastButton = this.buttonsRef[this.buttonsRef.length - 1];\n\n try {\n if (this.showLastButton) {\n this.ren.setStyle(\n this.dotsEndRef,\n 'display',\n endDots ? 'block' : 'none',\n );\n this.ren.setStyle(lastButton, 'display', endDots ? 'flex' : 'none');\n }\n } catch {}\n\n try {\n if (this.showFirstButton) {\n this.ren.setStyle(\n this.dotsStartRef,\n 'display',\n startDots ? 'block' : 'none',\n );\n this.ren.setStyle(firstButton, 'display', startDots ? 'flex' : 'none');\n }\n } catch {}\n\n const startingIndex = startDots ? newIndex - renderElements : 0;\n const endingIndex = endDots\n ? newIndex + renderElements\n : this.buttonsRef.length - 1;\n\n for (let i = startingIndex; i <= endingIndex; i++) {\n const button = this.buttonsRef[i];\n this.ren.setStyle(button, 'display', 'flex');\n }\n }\n\n private styleDefaultPagination() {\n const nativeElement = this.elementRef.nativeElement;\n const previousButton = nativeElement.querySelector(\n '.mat-mdc-paginator-navigation-previous',\n );\n const nextButtonDefault = nativeElement.querySelector(\n '.mat-mdc-paginator-navigation-next',\n );\n\n if (this.hideDefaultArrows) {\n this.ren.setStyle(previousButton, 'display', 'none');\n this.ren.setStyle(nextButtonDefault, 'display', 'none');\n }\n }\n\n private createBubbleDivRef(): void {\n const actionContainer = this.elementRef.nativeElement.querySelector(\n 'div.mat-mdc-paginator-range-actions',\n );\n const nextButtonDefault = this.elementRef.nativeElement.querySelector(\n 'button.mat-mdc-paginator-navigation-next',\n );\n const pageRange = this.elementRef.nativeElement.querySelector(\n 'div.mat-mdc-paginator-range-label',\n );\n\n this.bubbleContainerRef = this.ren.createElement('div') as HTMLElement;\n this.ren.addClass(this.bubbleContainerRef, 'g-bubble-container');\n if (actionContainer) {\n this.ren.addClass(actionContainer, 'custom-paginator-container');\n }\n if (pageRange) {\n this.ren.addClass(pageRange, 'custom-paginator-counter');\n }\n\n if (actionContainer) {\n this.ren.insertBefore(\n actionContainer,\n this.bubbleContainerRef,\n nextButtonDefault,\n );\n }\n }\n\n private buildButtons(neededButtons: number): void {\n if (neededButtons <= 1) {\n return;\n }\n\n this.buttonsRef = [this.createButton(0)];\n this.dotsStartRef = this.createDotsElement();\n\n for (let index = 1; index < neededButtons - 1; index++) {\n this.buttonsRef = [...this.buttonsRef, this.createButton(index)];\n }\n\n this.dotsEndRef = this.createDotsElement();\n\n this.buttonsRef = [\n ...this.buttonsRef,\n this.createButton(neededButtons - 1),\n ];\n }\n\n private removeButtons(): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n this.clearButtonListeners();\n\n while (this.bubbleContainerRef.firstChild) {\n this.ren.removeChild(\n this.bubbleContainerRef,\n this.bubbleContainerRef.firstChild,\n );\n }\n this.buttonsRef = [];\n }\n\n private createButton(i: number): HTMLElement {\n const bubbleButton = this.ren.createElement('button');\n const text = this.ren.createText(String(i + 1));\n\n this.ren.addClass(bubbleButton, 'g-bubble');\n this.ren.setAttribute(bubbleButton, 'type', 'button');\n this.ren.setStyle(bubbleButton, 'margin-right', '8px');\n this.ren.appendChild(bubbleButton, text);\n\n const removeClickListener = this.ren.listen(bubbleButton, 'click', () => {\n this.switchPage(i);\n });\n this.removeButtonListeners.push(removeClickListener);\n\n this.ren.appendChild(this.bubbleContainerRef, bubbleButton);\n this.ren.setStyle(bubbleButton, 'display', 'none');\n\n return bubbleButton;\n }\n\n private createDotsElement(): HTMLElement {\n const dotsEl = this.ren.createElement('span');\n const dotsText = this.ren.createText('...');\n\n this.ren.setStyle(dotsEl, 'font-size', '18px');\n this.ren.setStyle(dotsEl, 'margin-right', '8px');\n this.ren.setStyle(dotsEl, 'padding-top', '6px');\n this.ren.setStyle(dotsEl, 'color', '#919191');\n\n this.ren.appendChild(dotsEl, dotsText);\n this.ren.appendChild(this.bubbleContainerRef, dotsEl);\n this.ren.setStyle(dotsEl, 'display', 'none');\n\n return dotsEl;\n }\n\n private switchPage(i: number): void {\n const previousPageIndex = this.matPag.pageIndex;\n this.matPag.pageIndex = i;\n this.matPag.page.emit({\n previousPageIndex,\n pageIndex: i,\n pageSize: this.matPag.pageSize,\n length: this.matPag.length,\n });\n\n this.pageIndexChangeEmitter.emit(i);\n }\n\n private updateButtonsOnPageEvent(\n previousIndex: number,\n newIndex: number,\n ): void {\n const neededButtons = this.getNeededButtons();\n if (neededButtons === this.buttonsRef.length) {\n this.changeActiveButtonStyles(previousIndex, newIndex);\n return;\n }\n\n this.rebuildButtons();\n }\n\n private scheduleRebuildButtons(): void {\n if (this.rebuildQueued) {\n return;\n }\n\n this.rebuildQueued = true;\n Promise.resolve().then(() => {\n this.rebuildQueued = false;\n\n if (this.bubbleContainerRef) {\n this.rebuildButtons();\n }\n });\n }\n\n private rebuildButtons(): void {\n const neededButtons = this.getNeededButtons();\n const activePageIndex = Math.min(\n this.getActivePageIndex(),\n Math.max(neededButtons - 1, 0),\n );\n\n this.removeButtons();\n this.matPag.pageIndex = activePageIndex;\n\n if (neededButtons <= 1) {\n return;\n }\n\n this.buildButtons(neededButtons);\n this.changeActiveButtonStyles(activePageIndex, activePageIndex);\n }\n\n private getNeededButtons(): number {\n const pageSize = this.getPageSize();\n const length = this.getLength();\n\n if (!Number.isFinite(pageSize) || pageSize <= 0) {\n return 0;\n }\n\n return Math.ceil(length / pageSize);\n }\n\n private getActivePageIndex(): number {\n return Math.max(this.bubblePageIndex ?? this.matPag.pageIndex ?? 0, 0);\n }\n\n private getPageSize(): number {\n return this.bubblePageSize || this.matPag.pageSize;\n }\n\n private getLength(): number {\n return this.appCustomLength ?? this.matPag.length ?? 0;\n }\n\n private clearButtonListeners(): void {\n this.removeButtonListeners.forEach((removeListener) => removeListener());\n this.removeButtonListeners = [];\n }\n}\n","import { Injector, effect } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\n\nexport function customPaginatorFactory(\n i18n: MapaI18nService,\n injector: Injector\n): MatPaginatorIntl {\n const customPaginatorIntl = new MatPaginatorIntl();\n\n effect(\n () => {\n const paginatorTexts = i18n.textsSignal().paginator;\n\n customPaginatorIntl.itemsPerPageLabel = paginatorTexts.itemsPerPage;\n customPaginatorIntl.nextPageLabel = paginatorTexts.nextPage;\n customPaginatorIntl.previousPageLabel = paginatorTexts.previousPage;\n customPaginatorIntl.getRangeLabel = paginatorTexts.showingRangeLabel;\n customPaginatorIntl.changes.next();\n },\n { injector }\n );\n\n return customPaginatorIntl;\n}\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 { InjectionToken, Provider } from '@angular/core';\nimport type {\n MapaUiTextGroups,\n PartialMapaUiTexts,\n ValidationContext,\n ValidationTextResolver,\n} from 'mapa-frontend-i18n';\n\nexport type MapaUiTexts = MapaUiTextGroups;\nexport type ValidationMessageContext = ValidationContext;\nexport type { PartialMapaUiTexts, ValidationTextResolver };\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n 'MAPA_UI_TEXTS',\n);\n\nfunction formatPaginatorRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${safeLength}`;\n}\n\nfunction formatPaginatorShowingRange(\n page: number,\n pageSize: number,\n length: number,\n): string {\n if (length === 0 || pageSize === 0) {\n return 'Mostrando 0 - 0 de 0 item';\n }\n\n const safeLength = Math.max(length, 0);\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < safeLength\n ? Math.min(startIndex + pageSize, safeLength)\n : startIndex + pageSize;\n const itemLabel = safeLength === 1 ? 'item' : 'itens';\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${safeLength} ${itemLabel}`;\n}\n\nconst DEFAULT_MAPA_UI_TEXTS: MapaUiTexts = {\n common: {\n selectAll: 'Selecionar todos',\n retry: 'Tentar novamente',\n },\n filters: {\n clear: 'Limpar filtros',\n submit: 'Filtrar',\n },\n datepicker: {\n startDatePlaceholder: 'Data inicial',\n endDatePlaceholder: 'Data final',\n },\n capability: {\n groupAverageTitle: 'Média geral do grupo',\n individualAverageTitle: 'Média geral do indivíduo',\n conceptTitle: 'Conceito',\n resultTitle: 'Resultado',\n positiveIndicatorsTitle: 'Indicadores positivos',\n negativeIndicatorsTitle: 'Indicadores negativos',\n riskIndicatorsTitle: 'Indicadores de risco',\n precipitationRiskTitle: 'Risco de acidente por precipitação',\n negligenceRiskTitle: 'Risco de acidente por negligência',\n negativeDirectionLabel: 'Direção Negativa |',\n positiveDirectionLabel: 'Direção Positiva |',\n },\n paginator: {\n itemsPerPage: 'Itens por página',\n nextPage: 'Próxima página',\n previousPage: 'Página anterior',\n rangeLabel: formatPaginatorRange,\n showingRangeLabel: formatPaginatorShowingRange,\n },\n warning: {\n lowReliabilityTitle: 'Nível baixo de confiabilidade no(s) teste(s):',\n expirationLimitTitle: 'O prazo de validade do(s) teste(s) está no limite:',\n },\n table: {\n emptyTitle: 'Não foram encontrados resultados',\n emptySubtitle: '',\n loading: 'Carregando resultados',\n errorTitle: 'Não foi possível carregar os resultados.',\n selectAllVisible: 'Selecionar todos os itens desta página',\n selectionColumn: 'Seleção',\n selectRow: 'Selecionar item',\n selectNamedRow: (item: string) => `Selecionar ${item}`,\n },\n validation: {\n cnpj: 'CNPJ inválido',\n cpf: 'CPF inválido',\n email: 'E-mail inválido',\n max: (context?: ValidationContext) =>\n `O valor máximo permitido é ${context?.max ?? ''}`.trim(),\n maxLength: (context?: ValidationContext) =>\n `O máximo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n min: (context?: ValidationContext) =>\n `O valor mínimo permitido é ${context?.min ?? ''}`.trim(),\n minLength: (context?: ValidationContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? ''} caracteres`.trim(),\n pattern: 'Formato inválido',\n required: 'Campo obrigatório',\n },\n};\n\nfunction getDefaultTexts(): MapaUiTexts {\n return DEFAULT_MAPA_UI_TEXTS;\n}\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null,\n): MapaUiTexts {\n const defaults = getDefaultTexts();\n\n return {\n common: { ...defaults.common, ...(customTexts?.common ?? {}) },\n filters: { ...defaults.filters, ...(customTexts?.filters ?? {}) },\n datepicker: { ...defaults.datepicker, ...(customTexts?.datepicker ?? {}) },\n capability: { ...defaults.capability, ...(customTexts?.capability ?? {}) },\n paginator: { ...defaults.paginator, ...(customTexts?.paginator ?? {}) },\n warning: { ...defaults.warning, ...(customTexts?.warning ?? {}) },\n table: { ...defaults.table, ...(customTexts?.table ?? {}) },\n validation: { ...defaults.validation, ...(customTexts?.validation ?? {}) },\n };\n}\n\nexport function provideMapaUiTexts(texts: PartialMapaUiTexts): Provider {\n return {\n provide: MAPA_UI_TEXTS,\n useValue: texts,\n };\n}\n","import { Inject, Injectable, Injector, Optional, inject, signal } from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport {\n MAPA_UI_TEXTS,\n MapaUiTexts,\n PartialMapaUiTexts,\n ValidationMessageContext,\n ValidationTextResolver,\n mergeMapaUiTexts,\n} from \"../i18n/mapa-ui-texts\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class MapaI18nService {\n private readonly injector = inject(Injector);\n private readonly textsState = signal<MapaUiTexts>(mergeMapaUiTexts());\n\n readonly textsSignal = this.textsState.asReadonly();\n readonly texts$ = toObservable(this.textsSignal, { injector: this.injector });\n\n constructor(\n @Optional() @Inject(MAPA_UI_TEXTS) customTexts: PartialMapaUiTexts | null\n ) {\n if (customTexts) {\n this.textsState.set(mergeMapaUiTexts(customTexts));\n }\n }\n\n get texts(): MapaUiTexts {\n return this.textsState();\n }\n\n setTexts(texts: PartialMapaUiTexts): void {\n this.textsState.set(mergeMapaUiTexts(texts));\n }\n\n resolveValidationText(\n key: keyof MapaUiTexts[\"validation\"],\n context?: ValidationMessageContext\n ): string {\n return this.resolveText(this.texts.validation[key], context);\n }\n\n private resolveText(\n value: ValidationTextResolver,\n context?: ValidationMessageContext\n ): string {\n return typeof value === \"function\" ? value(context) : value;\n }\n}\n","import { 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 { HttpClient } from \"@angular/common/http\";\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, DestroyRef, Input, OnChanges, inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: \"mapa-svg-icon\",\n templateUrl: \"./svg-icon.component.html\",\n styleUrl: \"./svg-icon.component.scss\",\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaSvgIconComponent implements OnChanges {\n @Input() public name?: string;\n @Input() public color?: string;\n\n public svgIcon = \"\";\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private httpClient: HttpClient, private cdr: ChangeDetectorRef) {}\n\n public ngOnChanges(): void {\n if (!this.name) {\n this.svgIcon = \"\";\n return;\n }\n\n if (this.color) {\n this.httpClient\n .get(`images/icons/${this.name}.svg`, { responseType: 'text' })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string) => {\n this.svgIcon = this.applyColor(value);\n this.cdr.markForCheck();\n });\n return;\n }\n\n this.svgIcon = `<img src=\"images/icons/${this.name}.svg\" alt=\"${this.name}\" />`;\n this.cdr.markForCheck();\n }\n private applyColor(value: string): string {\n if (!this.color) {\n return value;\n }\n\n return value\n .replaceAll('fill=\"#50575E\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#181818\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#7def7b\"', `fill=\"${this.color}\"`)\n .replaceAll('stroke=\"#50575E\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#181818\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#7def7b\"', `stroke=\"${this.color}\"`);\n }\n}\n\n","<span *ngIf=\"svgIcon\" class=\"mapa__svg-icon\" [innerHTML]=\"svgIcon | safeHtml\"></span>\n","/*\n * Public API Surface of mapa-library-ui svg-icon\n */\n\nexport * from './src/svg-icon.component';\n","import { DatePipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Directive,\n EventEmitter,\n Injector,\n Input,\n Output,\n TemplateRef,\n contentChildren,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from '@angular/material/paginator';\nimport { Sort, SortDirection } from '@angular/material/sort';\nimport { Params, RouterLink, UrlTree } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { BubblePaginationDirective } from '../../../core/directives/custom-paginator.directive';\nimport { MenuActionItem } from '../../../core/interfaces/menu-action.interface';\nimport { RowClickEvent } from '../../../core/interfaces/table-row-click-event.interface';\nimport { TableColumn } from '../../../core/interfaces/table-column.interface';\nimport { TableEmptyState } from '../../../core/interfaces/table-empty-state.interface';\nimport {\n SelectedTableRow,\n TableRowData,\n} from '../../../core/interfaces/table-row-data.interface';\nimport { TableStatus } from '../../../core/interfaces/table-status.interface';\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\nimport { isDateValue, parseDateValue } from '../../../core/utils/date.util';\nimport { MapaSvgIconComponent } from '../../svg-icon/public-api';\nimport { MenuItem } from '../../menu/public-api';\nimport { customPaginatorFactory } from './paginator_customization';\n\nexport type DataTableAlignment = 'start' | 'center' | 'end';\nexport type DataTableSortDirection = SortDirection;\nexport type DataTableColumn = TableColumn;\n\nexport interface DataTablePageChange {\n pageIndex: number;\n pageSize: number;\n}\n\nexport interface DataTableSortChange {\n active: string;\n direction: DataTableSortDirection;\n}\n\nexport interface DataTableSelectionChange {\n selectedKeys: string[];\n}\n\nexport interface MapaTableCellContext {\n $implicit: unknown;\n row: unknown;\n column: TableColumn;\n}\n\n@Directive({\n selector: 'ng-template[mapaTableCell]',\n standalone: true,\n})\nexport class MapaTableCellDirective {\n @Input({ required: true, alias: 'mapaTableCell' }) columnKey!: string;\n readonly templateRef = inject<TemplateRef<MapaTableCellContext>>(TemplateRef);\n\n static ngTemplateContextGuard(\n _directive: MapaTableCellDirective,\n context: unknown,\n ): context is MapaTableCellContext {\n return true;\n }\n}\n\n@Component({\n selector: 'mapa-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n BubblePaginationDirective,\n DatePipe,\n MatCheckboxModule,\n MatIconModule,\n MatMenuModule,\n MatPaginatorModule,\n MapaSvgIconComponent,\n NgClass,\n NgTemplateOutlet,\n RouterLink,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: MatPaginatorIntl,\n useFactory: customPaginatorFactory,\n deps: [MapaI18nService, Injector],\n },\n ],\n standalone: true,\n})\nexport class MapaTableComponent {\n @Input() columns: readonly TableColumn[] = [];\n @Input() data: readonly unknown[] = [];\n @Input() rowKey = 'id';\n @Input() caption = '';\n\n @Input() selectable?: boolean;\n @Input() showSelectAll = true;\n @Input() selectedKeys?: readonly string[];\n @Input() selectionLabelKey = 'name';\n\n /** @deprecated Prefer `selectable`. */\n @Input() checkbox?: boolean;\n /** @deprecated Prefer `selectedKeys`, `rowKey` and `selectionChange`. */\n @Input() selection?: SelectionModel<TableRowData>;\n\n @Input() loading?: boolean;\n @Input() finished?: boolean;\n @Input() error = false;\n @Input() emptyTitle?: string;\n @Input() emptySubtitle?: string | null;\n @Input() errorTitle?: string;\n @Input() errorSubtitle?: string | null;\n @Input() retryLabel?: string;\n\n /** @deprecated Prefer the individual state inputs. */\n @Input() status: TableStatus = { loading: false, finished: false };\n /** @deprecated Prefer `emptyTitle` and `emptySubtitle`. */\n @Input() empty: TableEmptyState = { title: '', subtitle: null };\n\n @Input() pagination?: boolean;\n @Input() pageIndex = 1;\n @Input() pageSize = 5;\n @Input() totalCount = 0;\n @Input() pageSizeOptions: readonly number[] = [5, 10, 25, 100];\n /** @deprecated The paginator derives its pages from `totalCount` and `pageSize`. */\n @Input() totalPages = 0;\n /** @deprecated Prefer `pagination`. */\n @Input() showPaginator = true;\n @Input() paginatorShowFirstButton = true;\n @Input() paginatorShowLastButton = true;\n @Input() paginatorRenderButtonsNumber = 2;\n @Input() paginatorHideDefaultArrows = false;\n\n @Input() sortActive = '';\n @Input() sortDirection: DataTableSortDirection = '';\n\n /** @deprecated Prefer projected cells for new integrations. */\n @Input() actions?: MenuItem[];\n /** @deprecated Prefer projected cells for new integrations. */\n @Input() menuItems: MenuItem[] = [];\n /** @deprecated The presence of a `menu` column controls menu rendering. */\n @Input() menu?: boolean;\n /** @deprecated Prefer filtering in the consuming feature. */\n @Input() filterControl?: FormControl<string | null>;\n\n @Output() readonly pageChange = new EventEmitter<DataTablePageChange>();\n @Output() readonly sortChange = new EventEmitter<DataTableSortChange>();\n @Output() readonly selectionChange =\n new EventEmitter<DataTableSelectionChange>();\n @Output() readonly retry = new EventEmitter<void>();\n\n /** @deprecated Prefer `pageChange`. */\n @Output() readonly onChangePage = new EventEmitter<PageEvent>();\n /** @deprecated Prefer `sortChange`. */\n @Output() readonly onSortChange = new EventEmitter<Sort>();\n /** @deprecated Prefer `selectionChange`. */\n @Output() readonly selectedRows = new EventEmitter<SelectedTableRow[]>();\n @Output() readonly rowClick = new EventEmitter<RowClickEvent>();\n\n private readonly projectedCells = contentChildren(MapaTableCellDirective);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly i18n = inject(MapaI18nService);\n private localSort: DataTableSortChange = { active: '', direction: '' };\n private filterValue = '';\n private observedFilter?: FormControl<string | null>;\n private filterSubscription?: Subscription;\n\n protected get texts() {\n return this.i18n.textsSignal();\n }\n\n protected get visibleData(): readonly unknown[] {\n this.observeFilterControl();\n if (!this.filterValue) return this.data;\n return this.data.filter((row) =>\n this.getFilterValue(row).includes(this.filterValue),\n );\n }\n\n protected get isSelectable(): boolean {\n return this.selectable ?? this.checkbox ?? false;\n }\n\n protected get isLoading(): boolean {\n return this.loading ?? this.status.loading;\n }\n\n protected get isFinished(): boolean {\n return this.finished ?? this.status.finished;\n }\n\n protected get resolvedEmptyTitle(): string {\n return (this.emptyTitle ?? this.empty.title) || this.texts.table.emptyTitle;\n }\n\n protected get resolvedEmptySubtitle(): string | null {\n return (\n (this.emptySubtitle ?? this.empty.subtitle) ||\n this.texts.table.emptySubtitle ||\n null\n );\n }\n\n protected get resolvedErrorTitle(): string {\n return this.errorTitle || this.texts.table.errorTitle;\n }\n\n protected get resolvedErrorSubtitle(): string | null {\n return this.errorSubtitle ?? null;\n }\n\n protected get resolvedRetryLabel(): string {\n return this.retryLabel || this.texts.common.retry;\n }\n\n protected get zeroBasedPageIndex(): number {\n return Math.max(this.pageIndex - 1, 0);\n }\n\n protected get shouldShowPaginator(): boolean {\n const enabled = this.pagination ?? this.showPaginator;\n return (\n enabled &&\n !this.isLoading &&\n !this.error &&\n this.totalCount > this.data.length\n );\n }\n\n protected get skeletonRows(): number[] {\n return Array.from(\n { length: Math.max(this.pageSize, 0) },\n (_, index) => index,\n );\n }\n\n protected skeletonColumnWidth(column: TableColumn): string {\n return (\n this.columnWidth(column) ||\n (this.columns.length ? `${100 / this.columns.length}%` : '100%')\n );\n }\n\n protected columnWidth(column: TableColumn): string | null {\n return column.width || (this.isCompactColumn(column) ? '1%' : null);\n }\n\n protected rowIdentity(row: unknown, index: number): unknown {\n return this.getRowKey(row) || row || index;\n }\n\n protected getRowKey(row: unknown): string {\n const value = this.getColumnValue(row, this.rowKey);\n return value == null ? '' : String(value);\n }\n\n protected isSelected(row: unknown): boolean {\n if (this.selectedKeys !== undefined) {\n return new Set(this.selectedKeys.map(String)).has(this.getRowKey(row));\n }\n return this.selection?.isSelected(row as TableRowData) ?? false;\n }\n\n protected allVisibleSelected(): boolean {\n const rows = this.visibleData;\n return rows.length > 0 && rows.every((row) => this.isSelected(row));\n }\n\n protected someVisibleSelected(): boolean {\n const selectedCount = this.visibleData.filter((row) =>\n this.isSelected(row),\n ).length;\n return selectedCount > 0 && selectedCount < this.visibleData.length;\n }\n\n protected toggleRow(row: unknown, selected: boolean): void {\n if (this.selectedKeys !== undefined) {\n const next = new Set(this.selectedKeys.map(String));\n const key = this.getRowKey(row);\n if (!key) return;\n selected ? next.add(key) : next.delete(key);\n this.selectionChange.emit({ selectedKeys: Array.from(next) });\n return;\n }\n\n if (!this.selection) return;\n selected\n ? this.selection.select(row as TableRowData)\n : this.selection.deselect(row as TableRowData);\n this.emitLegacySelection();\n }\n\n protected toggleVisibleRows(selected: boolean): void {\n if (this.selectedKeys !== undefined) {\n const next = new Set(this.selectedKeys.map(String));\n for (const row of this.visibleData) {\n const key = this.getRowKey(row);\n if (!key) continue;\n selected ? next.add(key) : next.delete(key);\n }\n this.selectionChange.emit({ selectedKeys: Array.from(next) });\n return;\n }\n\n if (!this.selection) return;\n for (const row of this.visibleData) {\n selected\n ? this.selection.select(row as TableRowData)\n : this.selection.deselect(row as TableRowData);\n }\n this.emitLegacySelection();\n }\n\n protected selectionLabel(row: unknown): string {\n const value = this.getColumnValue(row, this.selectionLabelKey);\n return value == null\n ? this.texts.table.selectRow\n : this.texts.table.selectNamedRow(String(value));\n }\n\n protected cellTemplate(\n columnKey: string,\n ): TemplateRef<MapaTableCellContext> | null {\n return (\n this.projectedCells().find((cell) => cell.columnKey === columnKey)\n ?.templateRef ?? null\n );\n }\n\n protected isSortable(column: TableColumn): boolean {\n return column.sortable ?? column.sort ?? false;\n }\n\n protected ariaSort(\n column: TableColumn,\n ): 'ascending' | 'descending' | 'none' | null {\n if (!this.isSortable(column)) return null;\n if (this.activeSort() !== column.key) return 'none';\n if (this.activeDirection() === 'asc') return 'ascending';\n if (this.activeDirection() === 'desc') return 'descending';\n return 'none';\n }\n\n protected sortIcon(column: TableColumn): string {\n if (this.activeSort() !== column.key || !this.activeDirection())\n return 'unfold_more';\n return this.activeDirection() === 'asc' ? 'arrow_upward' : 'arrow_downward';\n }\n\n protected changeSort(column: TableColumn): void {\n if (!this.isSortable(column)) return;\n const current =\n this.activeSort() === column.key ? this.activeDirection() : '';\n const direction: DataTableSortDirection =\n current === '' ? 'asc' : current === 'asc' ? 'desc' : '';\n const active = direction ? column.key : '';\n this.localSort = { active, direction };\n this.sortChange.emit(this.localSort);\n this.onSortChange.emit(this.localSort);\n }\n\n protected handlePage(event: PageEvent): void {\n this.pageChange.emit({\n pageIndex: event.pageIndex + 1,\n pageSize: event.pageSize,\n });\n this.onChangePage.emit(event);\n }\n\n protected cellValue(row: unknown, column: TableColumn): string {\n const value = this.getColumnValue(row, column.key);\n if (value == null || value === '') return column.fallback ?? '-';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n if (typeof value === 'string' || typeof value === 'number')\n return String(value);\n return '';\n }\n\n protected dateValue(row: unknown, column: TableColumn): Date | null {\n const value = this.getColumnValue(row, column.key);\n if (typeof value === 'string') {\n const dateOnly = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value.trim());\n if (dateOnly) {\n const [, year, month, day] = dateOnly;\n const localDate = new Date(\n Number(year),\n Number(month) - 1,\n Number(day),\n );\n return Number.isNaN(localDate.getTime()) ? null : localDate;\n }\n }\n return isDateValue(value) ? parseDateValue(value) : null;\n }\n\n protected dateFormat(column: TableColumn): string | null {\n return column.dateFormat ?? column.mask ?? null;\n }\n\n protected statusLabel(column: TableColumn, row: unknown): string {\n const labels = column.status?.label;\n if (!labels) return column.fallback ?? '-';\n return labels[this.statusIndex(row, column.key)] ?? column.fallback ?? '-';\n }\n\n protected statusBackground(column: TableColumn, row: unknown): string | null {\n return column.status?.color?.[this.statusIndex(row, column.key)] ?? null;\n }\n\n protected statusTextColor(column: TableColumn, row: unknown): string | null {\n return (\n column.status?.textColor?.[this.statusIndex(row, column.key)] ?? null\n );\n }\n\n protected cellClasses(column: TableColumn, row: unknown): string[] {\n const record = this.asRow(row);\n const cellClass =\n record.styleClass?.key === column.key ? record.styleClass.class : '';\n return [\n cellClass || column.class || record.rowStyleClass || '',\n column.collapse\n ? `mapa-data-table__cell--${this.normalizeCollapse(column.collapse)}`\n : '',\n ].filter(Boolean);\n }\n\n protected isCenterAligned(column: TableColumn): boolean {\n return column.align === 'center';\n }\n\n protected isEndAligned(column: TableColumn): boolean {\n return ['end', 'right', 'flex-end'].includes(column.align ?? '');\n }\n\n protected getActionItems(row: unknown): MenuItem[] {\n const rowActions = this.getMenuActionItems(row, 'actions');\n return rowActions.length ? rowActions : (this.actions ?? []);\n }\n\n protected getMenuItems(row: unknown): MenuItem[] {\n const rowItems = this.getMenuActionItems(row, 'menu');\n return rowItems.length ? rowItems : this.menuItems;\n }\n\n protected emitAction(row: unknown, item: MenuActionItem, event: Event): void {\n event.stopPropagation();\n if (item.disabled) return;\n this.rowClick.emit({ row: this.asRow(row), action: item.action });\n }\n\n protected emitRowInteraction(event: Event, row: unknown): void {\n if (!this.rowClick.observed || this.isInteractiveTarget(event.target))\n return;\n this.rowClick.emit({ row: this.asRow(row), action: '' });\n }\n\n protected emitRowKeyboard(event: KeyboardEvent, row: unknown): void {\n if (!this.rowClick.observed || !['Enter', ' '].includes(event.key)) return;\n event.preventDefault();\n this.rowClick.emit({ row: this.asRow(row), action: '' });\n }\n\n protected route(item: MenuActionItem): string | unknown[] | UrlTree | null {\n return item.route ?? null;\n }\n\n protected queryParams(item: MenuActionItem): Params | null {\n return item.queryParams ?? null;\n }\n\n protected svgName(svg: string): string {\n return svg.split('/').pop()?.split('.')[0] || '';\n }\n\n private activeSort(): string {\n return this.sortActive || this.localSort.active;\n }\n\n private activeDirection(): DataTableSortDirection {\n return this.sortDirection || this.localSort.direction;\n }\n\n private emitLegacySelection(): void {\n if (!this.selection) return;\n this.selectedRows.emit(this.selection.selected.map((row) => ({ row })));\n }\n\n private observeFilterControl(): void {\n if (this.observedFilter === this.filterControl) return;\n this.filterSubscription?.unsubscribe();\n this.observedFilter = this.filterControl;\n this.filterValue = `${this.filterControl?.value ?? ''}`\n .trim()\n .toLowerCase();\n this.filterSubscription = this.filterControl?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.filterValue = `${value ?? ''}`.trim().toLowerCase();\n this.cdr.markForCheck();\n });\n }\n\n private getColumnValue(row: unknown, key: string): unknown {\n if (!row || typeof row !== 'object') return null;\n return (row as Record<string, unknown>)[key];\n }\n\n private statusIndex(row: unknown, key: string): number {\n const value = this.getColumnValue(row, key);\n if (typeof value === 'boolean') return value ? 1 : 0;\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n }\n\n private normalizeCollapse(collapse: string): string {\n return collapse === 'nowrap' ? 'no-wrap' : collapse;\n }\n\n private isCompactColumn(column: TableColumn): boolean {\n return ['actions', 'menu'].includes(column.key);\n }\n\n private getFilterValue(value: unknown): string {\n if (value == null) return '';\n if (['string', 'number', 'boolean'].includes(typeof value))\n return String(value).toLowerCase();\n if (Array.isArray(value))\n return value.map((item) => this.getFilterValue(item)).join(' ');\n if (typeof value === 'object')\n return Object.values(value)\n .map((item) => this.getFilterValue(item))\n .join(' ');\n return '';\n }\n\n private getMenuActionItems(\n row: unknown,\n key: 'actions' | 'menu',\n ): MenuItem[] {\n const value = this.getColumnValue(row, key);\n if (!Array.isArray(value)) return [];\n return value.filter(\n (item): item is MenuItem =>\n !!item &&\n typeof item === 'object' &&\n 'action' in item &&\n 'text' in item,\n );\n }\n\n private asRow(row: unknown): TableRowData {\n return row as TableRowData;\n }\n\n private isInteractiveTarget(target: EventTarget | null): boolean {\n return (\n target instanceof Element &&\n !!target.closest(\n \"a, button, input, select, textarea, [role='button'], [role='menuitem']\",\n )\n );\n }\n}\n","<section\n class=\"mapa-data-table\"\n [class.mapa-data-table--selectable]=\"isSelectable\"\n>\n <div class=\"mapa-data-table__frame\">\n @if (isLoading) {\n <table class=\"mapa-data-table__table\" aria-hidden=\"true\">\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"mapa-data-table__selection-cell\"></th>\n }\n @for (column of columns; track column.key) {\n <th [style.width]=\"skeletonColumnWidth(column)\">\n {{ column.label }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of skeletonRows; track row) {\n <tr>\n @if (isSelectable) {\n <td class=\"mapa-data-table__selection-cell\">\n <span\n class=\"mapa-data-table__skeleton mapa-data-table__skeleton--checkbox\"\n ></span>\n </td>\n }\n @for (column of columns; track column.key) {\n <td [style.width]=\"skeletonColumnWidth(column)\">\n <span class=\"mapa-data-table__skeleton\"></span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n <span class=\"mapa-data-table__sr-only\" role=\"status\">\n {{ texts.table.loading }}\n </span>\n } @else if (error) {\n <div class=\"mapa-data-table__state\" role=\"alert\">\n <strong>{{ resolvedErrorTitle }}</strong>\n @if (resolvedErrorSubtitle) {\n <span>{{ resolvedErrorSubtitle }}</span>\n }\n @if (retry.observed) {\n <button type=\"button\" (click)=\"retry.emit()\">\n {{ resolvedRetryLabel }}\n </button>\n }\n </div>\n } @else if (visibleData.length > 0) {\n <table class=\"mapa-data-table__table\">\n @if (caption) {\n <caption class=\"mapa-data-table__sr-only\">\n {{\n caption\n }}\n </caption>\n }\n <thead>\n <tr>\n @if (isSelectable) {\n <th class=\"mapa-data-table__selection-cell\">\n @if (showSelectAll) {\n <mat-checkbox\n color=\"primary\"\n [checked]=\"allVisibleSelected()\"\n [indeterminate]=\"someVisibleSelected()\"\n [aria-label]=\"texts.table.selectAllVisible\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleVisibleRows($event.checked)\"\n />\n } @else {\n <span class=\"mapa-data-table__sr-only\">\n {{ texts.table.selectionColumn }}\n </span>\n }\n </th>\n }\n @for (column of columns; track column.key) {\n <th\n [class.mapa-data-table__cell--center]=\"isCenterAligned(column)\"\n [class.mapa-data-table__cell--end]=\"isEndAligned(column)\"\n [style.width]=\"columnWidth(column)\"\n [attr.aria-sort]=\"ariaSort(column)\"\n >\n @if (isSortable(column)) {\n <button\n type=\"button\"\n class=\"mapa-data-table__sort\"\n (click)=\"changeSort(column)\"\n >\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n <mat-icon aria-hidden=\"true\">{{\n sortIcon(column)\n }}</mat-icon>\n </button>\n } @else {\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of visibleData; track rowIdentity(row, $index)) {\n <tr\n [class.mapa-data-table__row--selected]=\"isSelected(row)\"\n [class.mapa-data-table__row--interactive]=\"rowClick.observed\"\n [attr.tabindex]=\"rowClick.observed ? 0 : null\"\n (click)=\"emitRowInteraction($event, row)\"\n (keydown)=\"emitRowKeyboard($event, row)\"\n >\n @if (isSelectable) {\n <td class=\"mapa-data-table__selection-cell\">\n <mat-checkbox\n color=\"primary\"\n [checked]=\"isSelected(row)\"\n [aria-label]=\"selectionLabel(row)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRow(row, $event.checked)\"\n />\n </td>\n }\n @for (column of columns; track column.key) {\n <td\n [attr.data-label]=\"column.label\"\n [class.mapa-data-table__cell--center]=\"\n isCenterAligned(column)\n \"\n [class.mapa-data-table__cell--end]=\"isEndAligned(column)\"\n [style.width]=\"columnWidth(column)\"\n >\n <div\n class=\"mapa-data-table__cell-content\"\n [ngClass]=\"cellClasses(column, row)\"\n >\n @if (cellTemplate(column.key); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n row,\n column,\n }\"\n ></ng-container>\n } @else if (column.key === \"actions\") {\n <div class=\"mapa-data-table__actions\">\n @for (item of getActionItems(row); track item) {\n @if (route(item); as actionRoute) {\n <a\n class=\"mapa-data-table__action\"\n [class.mapa-data-table__action--disabled]=\"\n item.disabled\n \"\n [attr.aria-disabled]=\"\n item.disabled ? 'true' : null\n \"\n [attr.tabindex]=\"item.disabled ? -1 : null\"\n [title]=\"item.text\"\n [routerLink]=\"item.disabled ? null : actionRoute\"\n [queryParams]=\"queryParams(item)\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"svgName(item.svg)\" />\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n } @else {\n <span class=\"mapa-data-table__sr-only\">{{\n item.text\n }}</span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"mapa-data-table__action\"\n [disabled]=\"item.disabled\"\n [title]=\"item.text\"\n (click)=\"emitAction(row, item, $event)\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"svgName(item.svg)\" />\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n } @else {\n <span class=\"mapa-data-table__sr-only\">{{\n item.text\n }}</span>\n }\n </button>\n }\n }\n </div>\n } @else if (column.key === \"menu\") {\n @if (getMenuItems(row).length > 0) {\n <button\n type=\"button\"\n class=\"mapa-data-table__menu-trigger\"\n [matMenuTriggerFor]=\"rowMenu\"\n [attr.aria-label]=\"column.label\"\n (click)=\"$event.stopPropagation()\"\n >\n <mat-icon aria-hidden=\"true\">more_vert</mat-icon>\n </button>\n <mat-menu #rowMenu=\"matMenu\">\n @for (item of getMenuItems(row); track item) {\n @if (route(item); as menuRoute) {\n <a\n mat-menu-item\n [disabled]=\"item.disabled\"\n [routerLink]=\"item.disabled ? null : menuRoute\"\n [queryParams]=\"queryParams(item)\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n <span>{{ item.text }}</span>\n </a>\n } @else {\n <button\n mat-menu-item\n [disabled]=\"item.disabled\"\n (click)=\"emitAction(row, item, $event)\"\n >\n @if (item.icon) {\n <mat-icon aria-hidden=\"true\">{{\n item.icon\n }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" alt=\"\" />\n }\n <span>{{ item.text }}</span>\n </button>\n }\n }\n </mat-menu>\n }\n } @else if (dateFormat(column); as format) {\n @if (dateValue(row, column); as value) {\n {{ value | date: format }}\n } @else {\n {{ column.fallback ?? \"-\" }}\n }\n } @else if (column.status) {\n <span\n class=\"mapa-data-table__status\"\n [class.mapa-data-table__status--round]=\"\n column.status.style === 'round'\n \"\n [style.background-color]=\"statusBackground(column, row)\"\n [style.color]=\"statusTextColor(column, row)\"\n [innerHTML]=\"statusLabel(column, row) | safeHtml\"\n ></span>\n } @else {\n <span\n [innerHTML]=\"cellValue(row, column) | safeHtml\"\n ></span>\n }\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n } @else if (isFinished) {\n <div class=\"mapa-data-table__state\">\n <strong>{{ resolvedEmptyTitle }}</strong>\n @if (resolvedEmptySubtitle) {\n <span>{{ resolvedEmptySubtitle }}</span>\n }\n </div>\n }\n </div>\n\n @if (shouldShowPaginator) {\n <mat-paginator\n class=\"mapa-data-table__paginator\"\n appBubblePagination\n [appCustomLength]=\"totalCount\"\n [bubblePageIndex]=\"zeroBasedPageIndex\"\n [pageIndex]=\"zeroBasedPageIndex\"\n [showFirstButton]=\"paginatorShowFirstButton\"\n [showLastButton]=\"paginatorShowLastButton\"\n [renderButtonsNumber]=\"paginatorRenderButtonsNumber\"\n [hideDefaultArrows]=\"paginatorHideDefaultArrows\"\n [bubblePageSize]=\"pageSize\"\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"handlePage($event)\"\n />\n }\n</section>\n","/*\n * Public API Surface of mapa-library-ui table\n */\n\nexport * from './src/paginator_customization';\nexport * from './src/table.component';\n","/*\n * Public API Surface of mapa-library-ui table\n */\nexport * from './lib/core/directives/custom-paginator.directive';\nexport * from './lib/core/interfaces/table-empty-state.interface';\nexport * from './lib/core/interfaces/table-row-data.interface';\nexport * from './lib/core/interfaces/table-row-click-event.interface';\nexport * from './lib/core/interfaces/table-status.interface';\nexport * from './lib/components/table/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './table';\n"],"names":["i1","i1.HtmlSanitizerService","i2","i4"],"mappings":"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"}