mapa-library-ui 1.1.3 → 1.1.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.
- package/fesm2022/mapa-library-ui-src-lib-components-benchmarking.mjs +6 -6
- package/fesm2022/mapa-library-ui-src-lib-components-breadcrumb.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-button-icon.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-button.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-capability.mjs +72 -72
- package/fesm2022/mapa-library-ui-src-lib-components-chart.mjs +24 -24
- package/fesm2022/mapa-library-ui-src-lib-components-checkbox.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-datepicker-range.mjs +6 -6
- package/fesm2022/mapa-library-ui-src-lib-components-datepicker.mjs +12 -12
- package/fesm2022/mapa-library-ui-src-lib-components-dialog.mjs +16 -16
- package/fesm2022/mapa-library-ui-src-lib-components-dialog.mjs.map +1 -1
- package/fesm2022/mapa-library-ui-src-lib-components-dropdown-tree.mjs +24 -24
- package/fesm2022/mapa-library-ui-src-lib-components-dropdown.mjs +21 -21
- package/fesm2022/mapa-library-ui-src-lib-components-empty.mjs +9 -9
- package/fesm2022/mapa-library-ui-src-lib-components-filters.mjs +36 -36
- package/fesm2022/mapa-library-ui-src-lib-components-form.mjs +48 -48
- package/fesm2022/mapa-library-ui-src-lib-components-group-report.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-icon.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-input.mjs +18 -18
- package/fesm2022/mapa-library-ui-src-lib-components-menu.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-nav-list.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-radio-button.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-report-item.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-scale-parameterization.mjs +69 -69
- package/fesm2022/mapa-library-ui-src-lib-components-scale.mjs +66 -66
- package/fesm2022/mapa-library-ui-src-lib-components-slide-toggle.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-svg-icon.mjs +9 -9
- package/fesm2022/mapa-library-ui-src-lib-components-table.mjs +26 -26
- package/fesm2022/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
- package/fesm2022/mapa-library-ui-src-lib-components-tag.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-components-textarea.mjs +12 -12
- package/fesm2022/mapa-library-ui-src-lib-components-tooltip.mjs +6 -6
- package/fesm2022/mapa-library-ui-src-lib-components-warning.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-core-guards-authorize-guard.mjs +3 -3
- package/fesm2022/mapa-library-ui-src-lib-core-services.mjs +3 -3
- package/fesm2022/mapa-library-ui.mjs +168 -168
- package/fesm2022/mapa-library-ui.mjs.map +1 -1
- package/mapa-library-ui-1.1.4.tgz +0 -0
- package/package.json +1 -1
- package/mapa-library-ui-1.1.3.tgz +0 -0
|
@@ -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/components/menu/src/menu.component.ts","../../../projects/mapa-library-ui/src/lib/components/menu/src/menu.component.html","../../../projects/mapa-library-ui/src/lib/components/menu/public-api.ts","../../../projects/mapa-library-ui/src/lib/core/services/html-sanitizer.service.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/safe-html.pipe.ts","../../../projects/mapa-library-ui/src/lib/components/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/empty/src/empty.component.ts","../../../projects/mapa-library-ui/src/lib/components/empty/src/empty.component.html","../../../projects/mapa-library-ui/src/lib/components/empty/public-api.ts","../../../projects/mapa-library-ui/src/lib/core/i18n/mapa-ui-texts.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-i18n.service.ts","../../../projects/mapa-library-ui/src/lib/core/utils/date.util.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 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]\",\n standalone: true,\n})\nexport class BubblePaginationDirective\n implements AfterViewInit, OnChanges\n{\n @Output() pageIndexChangeEmitter: EventEmitter<number> = new EventEmitter<number>();\n @Input() showFirstButton = true;\n @Input() showLastButton = true;\n @Input() renderButtonsNumber = 2;\n @Input() appCustomLength: number = 0;\n @Input() hideDefaultArrows = false;\n @Input() bubblePageIndex = 0;\n private dotsEndRef!: HTMLElement;\n private dotsStartRef!: HTMLElement;\n private bubbleContainerRef!: HTMLElement;\n private buttonsRef: HTMLElement[] = [];\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 && changes?.[\"appCustomLength\"]) ||\n (!changes?.[\"bubblePageIndex\"]?.firstChange && changes?.[\"bubblePageIndex\"])\n ) {\n this.rebuildButtons();\n }\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([this.getActivePageIndex(), this.getActivePageIndex()] 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(this.dotsEndRef, \"display\", endDots ? \"block\" : \"none\");\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 while (this.bubbleContainerRef.firstChild) {\n this.ren.removeChild(this.bubbleContainerRef, this.bubbleContainerRef.firstChild);\n }\n this.buttonsRef = [];\n }\n\n private createButton(i: number): HTMLElement {\n const bubbleButton = this.ren.createElement(\"div\");\n const text = this.ren.createText(String(i + 1));\n\n this.ren.addClass(bubbleButton, \"g-bubble\");\n this.ren.setStyle(bubbleButton, \"margin-right\", \"8px\");\n this.ren.appendChild(bubbleButton, text);\n\n this.ren.listen(bubbleButton, \"click\", () => {\n this.switchPage(i);\n });\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(previousIndex: number, newIndex: number): 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 rebuildButtons(): void {\n const neededButtons = this.getNeededButtons();\n const activePageIndex = Math.min(this.getActivePageIndex(), Math.max(neededButtons - 1, 0));\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 return Math.ceil(this.appCustomLength / this.matPag.pageSize);\n }\n\n private getActivePageIndex(): number {\n return Math.max(this.bubblePageIndex, this.matPag.pageIndex, 0);\n }\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 { CommonModule } from \"@angular/common\";\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport {\n MenuActionEvent,\n MenuActionItem,\n} from \"../../../core/interfaces/menu-action.interface\";\n\nexport interface MenuItem extends MenuActionItem {}\n\n@Component({\n selector: \"mapa-menu\",\n templateUrl: \"./menu.component.html\",\n styleUrl: \"./menu.component.scss\",\n imports: [CommonModule, MatIconModule, MatMenuModule],\n standalone: true\n})\nexport class MapaMenuComponent {\n @Input() items: MenuItem[] = [];\n @Input() data?: unknown;\n @Output() emitMenu: EventEmitter<MenuActionEvent<unknown>> =\n new EventEmitter<MenuActionEvent<unknown>>();\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n clickMenu(item: MenuItem): void {\n this.emitMenu.emit({ action: item.action, data: this.data });\n }\n}\n","<mat-menu #menu=\"matMenu\" class=\"mapa-menu\">\n <button\n *ngFor=\"let item of items\"\n mat-menu-item\n (click)=\"clickMenu(item)\"\n class=\"mapa-menu__item\"\n [class.mapa-menu__item--disabled]=\"item.disabled\"\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n <span>{{item.text}}</span>\n </button>\n</mat-menu>\n\n<img\n class=\"outside-menu-icon\"\n src=\"assets/images/icons/ThreePoints.svg\"\n (click)=\"toggleMenu()\"\n [matMenuTriggerFor]=\"menu\"\n/>\n","/*\n * Public API Surface of mapa-library-ui menu\n */\n\nexport * from './src/menu.component';\n","import { Injectable, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nexport function sanitizeHtmlContent(\n sanitizer: DomSanitizer,\n value?: string | null\n): string {\n return sanitizer.sanitize(SecurityContext.HTML, value ?? \"\") ?? \"\";\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class HtmlSanitizerService {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n sanitize(value?: string | null): string {\n return sanitizeHtmlContent(this.sanitizer, value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { HtmlSanitizerService } from \"../services/html-sanitizer.service\";\n\n@Pipe({\n name: \"safeHtml\",\n standalone: true,\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private readonly htmlSanitizer: HtmlSanitizerService) {}\n\n transform(value?: string | null): string {\n return this.htmlSanitizer.sanitize(value);\n }\n}\n","import { 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 { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: 'mapa-empty',\n templateUrl: './empty.component.html',\n styleUrl: './empty.component.scss',\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaEmptyStateComponent {\n @Input() title: string | null = null;\n @Input() subtitle: string | null = null;\n}\n","<div class=\"empty\">\n <svg\n width=\"284\"\n height=\"284\"\n viewBox=\"0 0 284 284\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"284\" height=\"284\" fill=\"url(#pattern0)\" />\n <defs>\n <pattern\n id=\"pattern0\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use xlink:href=\"#image0_861_11131\" transform=\"scale(0.00219298)\" />\n </pattern>\n <image\n id=\"image0_861_11131\"\n width=\"456\"\n height=\"456\"\n xlink:href=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n <h2 *ngIf=\"title\" [innerHTML]=\"title | safeHtml\"></h2>\n <h3 *ngIf=\"subtitle\" [innerHTML]=\"subtitle | safeHtml\"></h3>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui empty\n */\n\nexport * from './src/empty.component';\n","import { InjectionToken, Provider } from \"@angular/core\";\n\nexport interface ValidationMessageContext {\n actualLength?: number;\n max?: number;\n min?: number;\n requiredLength?: number;\n}\n\nexport type ValidationTextResolver =\n | string\n | ((context?: ValidationMessageContext) => string);\n\nexport interface MapaUiTexts {\n common: {\n selectAll: string;\n };\n filters: {\n clear: string;\n submit: string;\n };\n datepicker: {\n startDatePlaceholder: string;\n endDatePlaceholder: string;\n };\n capability: {\n groupAverageTitle: string;\n individualAverageTitle: string;\n conceptTitle: string;\n resultTitle: string;\n positiveIndicatorsTitle: string;\n negativeIndicatorsTitle: string;\n riskIndicatorsTitle: string;\n precipitationRiskTitle: string;\n negligenceRiskTitle: string;\n negativeDirectionLabel: string;\n positiveDirectionLabel: string;\n };\n paginator: {\n itemsPerPage: string;\n nextPage: string;\n previousPage: string;\n rangeLabel: (page: number, pageSize: number, length: number) => string;\n showingRangeLabel: (\n page: number,\n pageSize: number,\n length: number\n ) => string;\n };\n table: {\n emptyTitle: string;\n emptySubtitle: string;\n };\n validation: {\n cnpj: ValidationTextResolver;\n cpf: ValidationTextResolver;\n email: ValidationTextResolver;\n max: ValidationTextResolver;\n maxLength: ValidationTextResolver;\n min: ValidationTextResolver;\n minLength: ValidationTextResolver;\n pattern: ValidationTextResolver;\n required: ValidationTextResolver;\n };\n}\n\nexport type PartialMapaUiTexts = Partial<{\n [K in keyof MapaUiTexts]: Partial<MapaUiTexts[K]>;\n}>;\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n \"MAPA_UI_TEXTS\"\n);\n\nexport const MAPA_UI_DEFAULT_TEXTS: MapaUiTexts = {\n common: {\n selectAll: \"Selecionar todos\",\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: (page: number, pageSize: number, length: number) => {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${length}`;\n },\n showingRangeLabel: (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return \"Mostrando 0 - 0 de 0 item\";\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n const itemLabel = length === 1 ? \"item\" : \"itens\";\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${length} ${itemLabel}`;\n },\n },\n table: {\n emptyTitle: \"Nao foram encontrados resultados\",\n emptySubtitle: \"\",\n },\n validation: {\n cnpj: \"CNPJ inválido\",\n cpf: \"CPF inválido\",\n email: \"E-mail inválido\",\n max: (context?: ValidationMessageContext) =>\n `O valor máximo permitido é ${context?.max ?? \"\"}`.trim(),\n maxLength: (context?: ValidationMessageContext) =>\n `O máximo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n min: (context?: ValidationMessageContext) =>\n `O valor minimo permitido é ${context?.min ?? \"\"}`.trim(),\n minLength: (context?: ValidationMessageContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n pattern: \"Formato inválido\",\n required: \"Campo obrigatório\",\n },\n};\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null\n): MapaUiTexts {\n return {\n common: {\n ...MAPA_UI_DEFAULT_TEXTS.common,\n ...(customTexts?.common ?? {}),\n },\n filters: {\n ...MAPA_UI_DEFAULT_TEXTS.filters,\n ...(customTexts?.filters ?? {}),\n },\n datepicker: {\n ...MAPA_UI_DEFAULT_TEXTS.datepicker,\n ...(customTexts?.datepicker ?? {}),\n },\n capability: {\n ...MAPA_UI_DEFAULT_TEXTS.capability,\n ...(customTexts?.capability ?? {}),\n },\n paginator: {\n ...MAPA_UI_DEFAULT_TEXTS.paginator,\n ...(customTexts?.paginator ?? {}),\n },\n table: {\n ...MAPA_UI_DEFAULT_TEXTS.table,\n ...(customTexts?.table ?? {}),\n },\n validation: {\n ...MAPA_UI_DEFAULT_TEXTS.validation,\n ...(customTexts?.validation ?? {}),\n },\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","const DAY_MONTH_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n\nfunction isValidDate(date: Date): boolean {\n return !Number.isNaN(date.getTime());\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 parseDateValue(value: unknown): 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 dayMonthYearMatch = DAY_MONTH_YEAR_PATTERN.exec(trimmedValue);\n if (dayMonthYearMatch) {\n const [, dayValue, monthValue, yearValue] = dayMonthYearMatch;\n const day = Number(dayValue);\n const month = Number(monthValue);\n const year = Number(yearValue);\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 parsedDate;\n }\n\n return null;\n }\n\n const parsedDate = new Date(trimmedValue);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\nexport function isDateValue(value: unknown): boolean {\n return parseDateValue(value) !== null;\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","import { CommonModule } from \"@angular/common\";\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n Injector,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormControl } from \"@angular/forms\";\nimport {\n MatPaginator,\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from \"@angular/material/paginator\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTable, MatTableDataSource } from \"@angular/material/table\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { RouterModule } from \"@angular/router\";\nimport { Subscription } from \"rxjs\";\n\nimport { MapaMenuComponent, MenuItem } from \"../../menu/public-api\";\nimport { MapaSvgIconComponent } from \"../../svg-icon/public-api\";\nimport { MapaEmptyStateComponent } from \"../../empty/public-api\";\nimport { BubblePaginationDirective } from \"../../../core/directives/custom-paginator.directive\";\nimport { MenuActionEvent } from \"../../../core/interfaces/menu-action.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\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 { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { isDateValue, parseDateValue } from \"../../../core/utils/date.util\";\nimport { customPaginatorFactory } from \"./paginator_customization\";\n\n@Component({\n selector: \"mapa-table\",\n templateUrl: \"./table.component.html\",\n styleUrls: [\n \"./table.component.scss\",\n \"./../../capability/styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n RouterModule,\n MapaMenuComponent,\n MapaSvgIconComponent,\n MapaEmptyStateComponent,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n BubblePaginationDirective,\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 implements AfterViewInit, OnChanges {\n @Input() columns: TableColumn[] = [];\n @Input() data: TableRowData[] = [];\n @Input() pageIndex: number = 1;\n @Input() pageSize: number = 5;\n @Input() totalCount: number = 0;\n @Input() totalPages: number = 0;\n @Input() checkbox: boolean | undefined;\n @Input() selection: SelectionModel<TableRowData> | undefined;\n @Input() actions?: MenuItem[] | undefined;\n @Input() filterControl: FormControl<string | null> | undefined;\n @Input() menuItems: MenuItem[] = [];\n @Input() menu: boolean | undefined;\n @Input() showPaginator: boolean = true;\n @Input() status: TableStatus = { loading: false, finished: false };\n @Input() empty: TableEmptyState = { title: \"\", subtitle: null };\n @Input() paginatorShowFirstButton = true;\n @Input() paginatorShowLastButton = true;\n @Input() paginatorRenderButtonsNumber = 2;\n @Input() paginatorHideDefaultArrows = false;\n\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n @ViewChild(MatTable) table?: MatTable<TableRowData>;\n\n @Output() rowClick: EventEmitter<RowClickEvent> = new EventEmitter<RowClickEvent>();\n @Output() selectedRows: EventEmitter<SelectedTableRow[]> =\n new EventEmitter<SelectedTableRow[]>();\n @Output() onChangePage: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n @Output() onSortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { read: true }) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n\n dataSource: MatTableDataSource<TableRowData> =\n new MatTableDataSource<TableRowData>([]);\n displayedColumns: string[] = [];\n currentSort: Sort | undefined;\n desktopTableVisible = true;\n private readonly destroyRef = inject(DestroyRef);\n private filterControlSubscription?: Subscription;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private readonly i18n: MapaI18nService\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get selectAllLabel(): string {\n return this.texts.common.selectAll;\n }\n\n get paginatorPageIndex(): number {\n return Math.max(this.pageIndex - 1, 0);\n }\n\n get shouldShowPaginator(): boolean {\n return this.showPaginator && this.totalPages > 1;\n }\n\n get resolvedEmptyTitle(): string {\n return this.empty.title || this.texts.table.emptyTitle;\n }\n\n get resolvedEmptySubtitle(): string | null {\n return this.empty.subtitle || this.texts.table.emptySubtitle || null;\n }\n\n get skeletonRows(): number[] {\n const rowsCount = Math.max(this.pageSize, 0);\n return Array.from({ length: rowsCount }, (_, index) => index);\n }\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n this.cdr.markForCheck();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes[\"data\"] || changes[\"columns\"]) && this.dataSource) {\n if (changes[\"data\"]) {\n this.data = changes[\"data\"].currentValue;\n }\n if (changes[\"columns\"]) {\n this.columns = changes[\"columns\"].currentValue;\n }\n\n this.refreshTableState();\n if (changes[\"columns\"]) {\n this.rebuildDesktopTable();\n }\n this.cdr.markForCheck();\n }\n\n if (changes[\"filterControl\"] && this.filterControl) {\n this.setupFilter();\n }\n }\n\n private refreshTableState(): void {\n this.dataSource = new MatTableDataSource(this.data);\n this.dataSource.sort = this.sort;\n this.displayedColumns = this.columns.map((column) => column.key);\n if (this.filterControl) {\n this.setupFilter();\n this.dataSource.filter = `${this.filterControl.value ?? \"\"}`.trim().toLowerCase();\n }\n this.table?.renderRows();\n }\n\n private rebuildDesktopTable(): void {\n this.desktopTableVisible = false;\n this.cdr.detectChanges();\n this.desktopTableVisible = true;\n this.cdr.detectChanges();\n }\n\n trackColumn(index: number, column: TableColumn): string {\n return `${index}:${column.key}:${column.label}`;\n }\n\n getSkeletonColumnWidth(column: TableColumn): string {\n if (column.width) {\n return column.width;\n }\n\n if (!this.columns.length) {\n return \"100%\";\n }\n\n return `${100 / this.columns.length}%`;\n }\n\n setupFilter(): void {\n this.filterControlSubscription?.unsubscribe();\n\n if (!this.dataSource || !this.filterControl) {\n return;\n }\n\n this.filterControlSubscription = this.filterControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string | null) => {\n this.dataSource.filter = (value ?? \"\").trim().toLowerCase();\n this.cdr.markForCheck();\n });\n\n this.dataSource.filterPredicate = (\n data: TableRowData,\n filter: string\n ): boolean => {\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n return `${currentTerm}${this.getFilterValue(data[key])} `;\n }, \"\")\n .trim()\n .toLowerCase();\n\n return dataStr.indexOf(filter) !== -1;\n };\n }\n\n isAllSelected(): boolean {\n if (this.selection) {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n return false;\n }\n\n toggleAllRows(): void {\n if (this.selection) {\n if (this.isAllSelected()) {\n this.selection.clear();\n this.getSelectedValues();\n } else {\n this.dataSource.data.forEach((row) => this.selection?.select(row));\n this.getSelectedValues();\n }\n }\n }\n\n checkboxLabel(row?: TableRowData): string {\n if (this.selection) {\n if (!row) {\n return `${this.isAllSelected() ? \"deselect\" : \"select\"} all`;\n }\n const rowPosition = typeof row.position === \"number\" ? row.position + 1 : 1;\n return `${this.selection.isSelected(row) ? \"deselect\" : \"select\"} row ${rowPosition}`;\n }\n return \"\";\n }\n\n sortData(column: TableColumn): void {\n if (column.sort) {\n const sort: Sort = { active: column.key, direction: \"asc\" };\n\n if (\n this.currentSort &&\n this.currentSort.active === column.key &&\n this.currentSort.direction === \"asc\"\n ) {\n sort.direction = \"desc\";\n }\n\n this.currentSort = sort;\n this.sortDataFunction(sort);\n }\n }\n\n sortDataFunction(sort: Sort): void {\n this.onSortChange.emit(sort);\n }\n\n emitRowClick(row: TableRowData, action: string): void {\n const rowData: RowClickEvent = { row, action };\n this.rowClick.emit(rowData);\n }\n\n toggleSelection(row: TableRowData): void {\n if (this.selection) {\n if (this.selection.isSelected(row)) {\n this.selection.deselect(row);\n } else {\n this.selection.select(row);\n }\n this.getSelectedValues();\n }\n }\n\n getSelectedValues(): void {\n if (this.selection) {\n const selectedRows: SelectedTableRow[] = this.selection.selected.map((row) => {\n return { row };\n });\n this.selectedRows.emit(selectedRows);\n }\n }\n\n generateColumns(): void {\n const columns: TableColumn[] = [{ key: \"name\", label: \"\", sort: false }];\n\n this.columns = columns;\n }\n\n columnExists(columns: TableColumn[], key: string): boolean {\n return columns.some((column) => column.key === key);\n }\n\n generateGroupData(): void {\n const result: TableRowData[] = [];\n\n this.data = result;\n }\n\n isBoolean(column: TableColumn, row: TableRowData): boolean {\n return typeof this.getColumnValue(row, column.key) === \"boolean\";\n }\n\n isMaskedData(column: TableColumn, row: TableRowData): boolean {\n return !!column.mask && isDateValue(this.getColumnValue(row, column.key));\n }\n\n getValueAsDate(column: TableColumn, row: TableRowData): Date {\n return parseDateValue(this.getColumnValue(row, column.key)) ?? new Date(\"\");\n }\n\n getCellClass(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return `classification`;\n } catch {\n return \"\";\n }\n }\n\n getCellBg(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getCellTextColor(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationTextColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getValue(row: { value?: string | number | null }): string {\n try {\n if (row.value !== undefined && row.value !== null && row.value !== \"\") {\n return row.value + \"%\";\n }\n return \"-\";\n } catch {\n return \"-\";\n }\n }\n\n changePage(event: PageEvent): void {\n this.onChangePage.emit(event);\n }\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n getBackgroundColor(column: TableColumn, row: TableRowData): string {\n return column.status?.color?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n getTextColor(column: TableColumn, row: TableRowData): string {\n return column.status?.textColor?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n hasCustomClass(column: TableColumn, row: TableRowData, key: string): boolean {\n if (\n column?.class ||\n row?.rowStyleClass ||\n this.hasCellStyleClass(row, key)\n ) {\n return true;\n }\n return false;\n }\n\n getCustomClass(column: TableColumn, row: TableRowData, key: string): string {\n if (this.hasCellStyleClass(row, key)) {\n return this.getCellStyleClass(row, column.key);\n } else if (column?.class) {\n return column.class;\n } else if (row?.rowStyleClass) {\n return row.rowStyleClass;\n }\n return \"\";\n }\n\n hasCellStyleClass(row: TableRowData, key: string): boolean {\n return row.styleClass?.key === key;\n }\n\n getCellStyleClass(row: TableRowData, key: string): string {\n return row.styleClass?.key === key ? row.styleClass?.class : \"\";\n }\n\n handleMenu(selected: MenuActionEvent<unknown>): void {\n if (this.isTableRowData(selected.data)) {\n this.emitRowClick(selected.data, selected.action);\n }\n }\n\n hasIndividualMenu(row: TableRowData | undefined): boolean {\n return this.getMenuItems(row).length > 0;\n }\n\n getMenuItems(row: TableRowData | undefined): MenuItem[] {\n return this.getMenuActionItems(row, \"menu\");\n }\n\n getActionItems(row: TableRowData | undefined): MenuItem[] {\n const rowActions = this.getMenuActionItems(row, \"actions\");\n return rowActions.length > 0 ? rowActions : (this.actions ?? []);\n }\n\n getStatusLabel(column: TableColumn, row: TableRowData): string {\n const labels = column.status?.label;\n\n if (!labels) {\n return \"-\";\n }\n\n const value = this.getColumnValue(row, column.key);\n\n if (typeof value === \"boolean\") {\n return labels[value ? 1 : 0] ?? \"-\";\n }\n\n if (typeof value === \"number\") {\n return labels[value] ?? \"-\";\n }\n\n if (typeof value === \"string\") {\n const numericIndex = Number(value);\n return Number.isNaN(numericIndex) ? labels[0] ?? \"-\" : labels[numericIndex] ?? \"-\";\n }\n\n return \"-\";\n }\n\n getCellContent(row: TableRowData, key: string): string {\n const value = this.getColumnValue(row, key);\n\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return `${value}`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n\n return \"\";\n }\n\n hasActionsColumn(): boolean {\n return this.columns.some((column) => column.key.includes('actions'));\n }\n\n hasMenuColumn(): boolean {\n return this.columns.some((column) => column.key.includes('menu'));\n }\n\n setSvgName(image: string): string {\n return image.split('/').pop()?.split('.')[0] || '';\n }\n\n private getColumnValue(row: TableRowData, key: string): unknown {\n return row[key];\n }\n\n private getColumnRecord(\n row: TableRowData,\n key: string\n ): Record<string, unknown> | undefined {\n const value = this.getColumnValue(row, key);\n\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n return value as Record<string, unknown>;\n }\n\n private getRecordStringValue(\n value: Record<string, unknown> | undefined,\n key: string\n ): string {\n const recordValue = value?.[key];\n return typeof recordValue === \"string\" ? recordValue : \"\";\n }\n\n private getStatusIndex(row: TableRowData, key: string): number {\n const value = this.getColumnValue(row, key);\n\n if (typeof value === \"boolean\") {\n return value ? 1 : 0;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n if (typeof value === \"string\") {\n const parsedValue = Number(value);\n return Number.isNaN(parsedValue) ? 0 : parsedValue;\n }\n\n return 0;\n }\n\n private getFilterValue(value: unknown): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return `${value}`.toLowerCase();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n if (typeof value === \"object\") {\n return Object.values(value).map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n return \"\";\n }\n\n private getMenuActionItems(\n row: TableRowData | undefined,\n key: \"actions\" | \"menu\"\n ): MenuItem[] {\n const value = row?.[key];\n\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((item): item is MenuItem => this.isMenuItem(item));\n }\n\n private isMenuItem(value: unknown): value is MenuItem {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"action\" in value &&\n \"text\" in value\n );\n }\n\n private isTableRowData(value: unknown): value is TableRowData {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n }\n}\n","@if (status.loading) {\n <section class=\"mapa-table mapa-table__skeleton\" aria-hidden=\"true\">\n <div class=\"mapa-table__skeleton-content mapa__card mapa__card--show-on-desktop\">\n <div class=\"mapa-table__skeleton-header\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell mapa-table__skeleton-cell--header\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n @for (rowIndex of skeletonRows; track rowIndex) {\n <div class=\"mapa-table__skeleton-row\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n }\n </div>\n </section>\n} @else if (dataSource.data.length > 0) {\n <section class=\"mapa-table\">\n <div class=\"mapa-table--show-on-mobile\">\n @if (checkbox) {\n <div class=\"mapa-table__select-all\">\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n > {{ selectAllLabel }}</mat-checkbox>\n }\n </div>\n }\n @for (row of dataSource.data; track row) {\n <div>\n <div class=\"mapa-table__card mapa__card\">\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <div [ngClass]=\"'mapa-table__card--column-' + column.key\">\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <strong\n class=\"mapa-table__card--header\"\n [class.mapa-table__checkbox--header]=\"isFirst && checkbox\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox: false }\"\n class=\"hidden\"\n ></div>\n </strong>\n }\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div>\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n\n @if (column.key === \"menu\") {\n @if (hasIndividualMenu(row)) {\n <div class=\"mapa-table__column--menu\">\n @for (item of getMenuItems(row); track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n } @else {\n <div class=\"mapa-table__column--menu\">\n @for (item of menuItems; track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <mapa-svg-icon [name]=\"setSvgName(item.image)\"></mapa-svg-icon>\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"mapa-table--show-on-desktop\">\n @if (desktopTableVisible) {\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <ng-container [matColumnDef]=\"column.key\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div class=\"mapa-table__column--actions\">\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n @if (column.key === \"menu\") {\n <div class=\"mapa-table__column--menu\">\n @if (hasIndividualMenu(row)) {\n <mapa-menu\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n } @else if (menuItems.length > 0) {\n <mapa-menu\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n }\n </div>\n }\n }\n </div>\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n }\n </div>\n\n @if (shouldShowPaginator) {\n <section>\n <mat-paginator\n class=\"mapa-table__paginator\"\n appBubblePagination\n [appCustomLength]=\"totalCount\"\n [bubblePageIndex]=\"paginatorPageIndex\"\n [pageIndex]=\"paginatorPageIndex\"\n [showFirstButton]=\"paginatorShowFirstButton\"\n [showLastButton]=\"paginatorShowLastButton\"\n [renderButtonsNumber]=\"paginatorRenderButtonsNumber\"\n [hideDefaultArrows]=\"paginatorHideDefaultArrows\"\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n }\n </section>\n} @else if (status.finished && dataSource.data.length === 0) {\n <section class=\"mapa-table\">\n <mapa-empty\n [title]=\"resolvedEmptyTitle\"\n [subtitle]=\"resolvedEmptySubtitle\"\n ></mapa-empty>\n </section>\n}\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n @if (isFirst && checkbox) {\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n }\n }\n <div>\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n </div>\n @if (column.key !== \"actions\" && column.key !== \"menu\" && column.sort) {\n <div class=\"mapa-table--show-on-desktop\">\n <mat-icon>filter_list</mat-icon>\n </div>\n }\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n @if (isFirst && checkbox) {\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n class=\"mapa-table__checkbox\"\n >\n </mat-checkbox>\n }\n @if (isMaskedData(column, row)) {\n {{ getValueAsDate(column, row) | date: column.mask }}\n } @else if (column.status) {\n <span [innerHTML]=\"getStatusLabel(column, row) | safeHtml\"></span>\n } @else {\n <span [innerHTML]=\"getCellContent(row, column.key) | safeHtml\"></span>\n }\n</ng-template>\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","i2","i1.HtmlSanitizerService","i1.MapaI18nService","i6","i7"],"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/components/menu/src/menu.component.ts","../../../projects/mapa-library-ui/src/lib/components/menu/src/menu.component.html","../../../projects/mapa-library-ui/src/lib/components/menu/public-api.ts","../../../projects/mapa-library-ui/src/lib/core/services/html-sanitizer.service.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/safe-html.pipe.ts","../../../projects/mapa-library-ui/src/lib/components/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/empty/src/empty.component.ts","../../../projects/mapa-library-ui/src/lib/components/empty/src/empty.component.html","../../../projects/mapa-library-ui/src/lib/components/empty/public-api.ts","../../../projects/mapa-library-ui/src/lib/core/i18n/mapa-ui-texts.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-i18n.service.ts","../../../projects/mapa-library-ui/src/lib/core/utils/date.util.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 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]\",\n standalone: true,\n})\nexport class BubblePaginationDirective\n implements AfterViewInit, OnChanges\n{\n @Output() pageIndexChangeEmitter: EventEmitter<number> = new EventEmitter<number>();\n @Input() showFirstButton = true;\n @Input() showLastButton = true;\n @Input() renderButtonsNumber = 2;\n @Input() appCustomLength: number = 0;\n @Input() hideDefaultArrows = false;\n @Input() bubblePageIndex = 0;\n private dotsEndRef!: HTMLElement;\n private dotsStartRef!: HTMLElement;\n private bubbleContainerRef!: HTMLElement;\n private buttonsRef: HTMLElement[] = [];\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 && changes?.[\"appCustomLength\"]) ||\n (!changes?.[\"bubblePageIndex\"]?.firstChange && changes?.[\"bubblePageIndex\"])\n ) {\n this.rebuildButtons();\n }\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([this.getActivePageIndex(), this.getActivePageIndex()] 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(this.dotsEndRef, \"display\", endDots ? \"block\" : \"none\");\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 while (this.bubbleContainerRef.firstChild) {\n this.ren.removeChild(this.bubbleContainerRef, this.bubbleContainerRef.firstChild);\n }\n this.buttonsRef = [];\n }\n\n private createButton(i: number): HTMLElement {\n const bubbleButton = this.ren.createElement(\"div\");\n const text = this.ren.createText(String(i + 1));\n\n this.ren.addClass(bubbleButton, \"g-bubble\");\n this.ren.setStyle(bubbleButton, \"margin-right\", \"8px\");\n this.ren.appendChild(bubbleButton, text);\n\n this.ren.listen(bubbleButton, \"click\", () => {\n this.switchPage(i);\n });\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(previousIndex: number, newIndex: number): 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 rebuildButtons(): void {\n const neededButtons = this.getNeededButtons();\n const activePageIndex = Math.min(this.getActivePageIndex(), Math.max(neededButtons - 1, 0));\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 return Math.ceil(this.appCustomLength / this.matPag.pageSize);\n }\n\n private getActivePageIndex(): number {\n return Math.max(this.bubblePageIndex, this.matPag.pageIndex, 0);\n }\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 { CommonModule } from \"@angular/common\";\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport {\n MenuActionEvent,\n MenuActionItem,\n} from \"../../../core/interfaces/menu-action.interface\";\n\nexport interface MenuItem extends MenuActionItem {}\n\n@Component({\n selector: \"mapa-menu\",\n templateUrl: \"./menu.component.html\",\n styleUrl: \"./menu.component.scss\",\n imports: [CommonModule, MatIconModule, MatMenuModule],\n standalone: true\n})\nexport class MapaMenuComponent {\n @Input() items: MenuItem[] = [];\n @Input() data?: unknown;\n @Output() emitMenu: EventEmitter<MenuActionEvent<unknown>> =\n new EventEmitter<MenuActionEvent<unknown>>();\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n clickMenu(item: MenuItem): void {\n this.emitMenu.emit({ action: item.action, data: this.data });\n }\n}\n","<mat-menu #menu=\"matMenu\" class=\"mapa-menu\">\n <button\n *ngFor=\"let item of items\"\n mat-menu-item\n (click)=\"clickMenu(item)\"\n class=\"mapa-menu__item\"\n [class.mapa-menu__item--disabled]=\"item.disabled\"\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n <span>{{item.text}}</span>\n </button>\n</mat-menu>\n\n<img\n class=\"outside-menu-icon\"\n src=\"assets/images/icons/ThreePoints.svg\"\n (click)=\"toggleMenu()\"\n [matMenuTriggerFor]=\"menu\"\n/>\n","/*\n * Public API Surface of mapa-library-ui menu\n */\n\nexport * from './src/menu.component';\n","import { Injectable, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nexport function sanitizeHtmlContent(\n sanitizer: DomSanitizer,\n value?: string | null\n): string {\n return sanitizer.sanitize(SecurityContext.HTML, value ?? \"\") ?? \"\";\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class HtmlSanitizerService {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n sanitize(value?: string | null): string {\n return sanitizeHtmlContent(this.sanitizer, value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { HtmlSanitizerService } from \"../services/html-sanitizer.service\";\n\n@Pipe({\n name: \"safeHtml\",\n standalone: true,\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private readonly htmlSanitizer: HtmlSanitizerService) {}\n\n transform(value?: string | null): string {\n return this.htmlSanitizer.sanitize(value);\n }\n}\n","import { 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 { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: 'mapa-empty',\n templateUrl: './empty.component.html',\n styleUrl: './empty.component.scss',\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaEmptyStateComponent {\n @Input() title: string | null = null;\n @Input() subtitle: string | null = null;\n}\n","<div class=\"empty\">\n <svg\n width=\"284\"\n height=\"284\"\n viewBox=\"0 0 284 284\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"284\" height=\"284\" fill=\"url(#pattern0)\" />\n <defs>\n <pattern\n id=\"pattern0\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use xlink:href=\"#image0_861_11131\" transform=\"scale(0.00219298)\" />\n </pattern>\n <image\n id=\"image0_861_11131\"\n width=\"456\"\n height=\"456\"\n xlink:href=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n <h2 *ngIf=\"title\" [innerHTML]=\"title | safeHtml\"></h2>\n <h3 *ngIf=\"subtitle\" [innerHTML]=\"subtitle | safeHtml\"></h3>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui empty\n */\n\nexport * from './src/empty.component';\n","import { InjectionToken, Provider } from \"@angular/core\";\n\nexport interface ValidationMessageContext {\n actualLength?: number;\n max?: number;\n min?: number;\n requiredLength?: number;\n}\n\nexport type ValidationTextResolver =\n | string\n | ((context?: ValidationMessageContext) => string);\n\nexport interface MapaUiTexts {\n common: {\n selectAll: string;\n };\n filters: {\n clear: string;\n submit: string;\n };\n datepicker: {\n startDatePlaceholder: string;\n endDatePlaceholder: string;\n };\n capability: {\n groupAverageTitle: string;\n individualAverageTitle: string;\n conceptTitle: string;\n resultTitle: string;\n positiveIndicatorsTitle: string;\n negativeIndicatorsTitle: string;\n riskIndicatorsTitle: string;\n precipitationRiskTitle: string;\n negligenceRiskTitle: string;\n negativeDirectionLabel: string;\n positiveDirectionLabel: string;\n };\n paginator: {\n itemsPerPage: string;\n nextPage: string;\n previousPage: string;\n rangeLabel: (page: number, pageSize: number, length: number) => string;\n showingRangeLabel: (\n page: number,\n pageSize: number,\n length: number\n ) => string;\n };\n table: {\n emptyTitle: string;\n emptySubtitle: string;\n };\n validation: {\n cnpj: ValidationTextResolver;\n cpf: ValidationTextResolver;\n email: ValidationTextResolver;\n max: ValidationTextResolver;\n maxLength: ValidationTextResolver;\n min: ValidationTextResolver;\n minLength: ValidationTextResolver;\n pattern: ValidationTextResolver;\n required: ValidationTextResolver;\n };\n}\n\nexport type PartialMapaUiTexts = Partial<{\n [K in keyof MapaUiTexts]: Partial<MapaUiTexts[K]>;\n}>;\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n \"MAPA_UI_TEXTS\"\n);\n\nexport const MAPA_UI_DEFAULT_TEXTS: MapaUiTexts = {\n common: {\n selectAll: \"Selecionar todos\",\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: (page: number, pageSize: number, length: number) => {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${length}`;\n },\n showingRangeLabel: (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return \"Mostrando 0 - 0 de 0 item\";\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n const itemLabel = length === 1 ? \"item\" : \"itens\";\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${length} ${itemLabel}`;\n },\n },\n table: {\n emptyTitle: \"Nao foram encontrados resultados\",\n emptySubtitle: \"\",\n },\n validation: {\n cnpj: \"CNPJ inválido\",\n cpf: \"CPF inválido\",\n email: \"E-mail inválido\",\n max: (context?: ValidationMessageContext) =>\n `O valor máximo permitido é ${context?.max ?? \"\"}`.trim(),\n maxLength: (context?: ValidationMessageContext) =>\n `O máximo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n min: (context?: ValidationMessageContext) =>\n `O valor minimo permitido é ${context?.min ?? \"\"}`.trim(),\n minLength: (context?: ValidationMessageContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n pattern: \"Formato inválido\",\n required: \"Campo obrigatório\",\n },\n};\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null\n): MapaUiTexts {\n return {\n common: {\n ...MAPA_UI_DEFAULT_TEXTS.common,\n ...(customTexts?.common ?? {}),\n },\n filters: {\n ...MAPA_UI_DEFAULT_TEXTS.filters,\n ...(customTexts?.filters ?? {}),\n },\n datepicker: {\n ...MAPA_UI_DEFAULT_TEXTS.datepicker,\n ...(customTexts?.datepicker ?? {}),\n },\n capability: {\n ...MAPA_UI_DEFAULT_TEXTS.capability,\n ...(customTexts?.capability ?? {}),\n },\n paginator: {\n ...MAPA_UI_DEFAULT_TEXTS.paginator,\n ...(customTexts?.paginator ?? {}),\n },\n table: {\n ...MAPA_UI_DEFAULT_TEXTS.table,\n ...(customTexts?.table ?? {}),\n },\n validation: {\n ...MAPA_UI_DEFAULT_TEXTS.validation,\n ...(customTexts?.validation ?? {}),\n },\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","const DAY_MONTH_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n\nfunction isValidDate(date: Date): boolean {\n return !Number.isNaN(date.getTime());\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 parseDateValue(value: unknown): 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 dayMonthYearMatch = DAY_MONTH_YEAR_PATTERN.exec(trimmedValue);\n if (dayMonthYearMatch) {\n const [, dayValue, monthValue, yearValue] = dayMonthYearMatch;\n const day = Number(dayValue);\n const month = Number(monthValue);\n const year = Number(yearValue);\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 parsedDate;\n }\n\n return null;\n }\n\n const parsedDate = new Date(trimmedValue);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\nexport function isDateValue(value: unknown): boolean {\n return parseDateValue(value) !== null;\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","import { CommonModule } from \"@angular/common\";\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n Injector,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormControl } from \"@angular/forms\";\nimport {\n MatPaginator,\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from \"@angular/material/paginator\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTable, MatTableDataSource } from \"@angular/material/table\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { RouterModule } from \"@angular/router\";\nimport { Subscription } from \"rxjs\";\n\nimport { MapaMenuComponent, MenuItem } from \"../../menu/public-api\";\nimport { MapaSvgIconComponent } from \"../../svg-icon/public-api\";\nimport { MapaEmptyStateComponent } from \"../../empty/public-api\";\nimport { BubblePaginationDirective } from \"../../../core/directives/custom-paginator.directive\";\nimport { MenuActionEvent } from \"../../../core/interfaces/menu-action.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\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 { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { isDateValue, parseDateValue } from \"../../../core/utils/date.util\";\nimport { customPaginatorFactory } from \"./paginator_customization\";\n\n@Component({\n selector: \"mapa-table\",\n templateUrl: \"./table.component.html\",\n styleUrls: [\n \"./table.component.scss\",\n \"./../../capability/styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n RouterModule,\n MapaMenuComponent,\n MapaSvgIconComponent,\n MapaEmptyStateComponent,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n BubblePaginationDirective,\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 implements AfterViewInit, OnChanges {\n @Input() columns: TableColumn[] = [];\n @Input() data: TableRowData[] = [];\n @Input() pageIndex: number = 1;\n @Input() pageSize: number = 5;\n @Input() totalCount: number = 0;\n @Input() totalPages: number = 0;\n @Input() checkbox: boolean | undefined;\n @Input() selection: SelectionModel<TableRowData> | undefined;\n @Input() actions?: MenuItem[] | undefined;\n @Input() filterControl: FormControl<string | null> | undefined;\n @Input() menuItems: MenuItem[] = [];\n @Input() menu: boolean | undefined;\n @Input() showPaginator: boolean = true;\n @Input() status: TableStatus = { loading: false, finished: false };\n @Input() empty: TableEmptyState = { title: \"\", subtitle: null };\n @Input() paginatorShowFirstButton = true;\n @Input() paginatorShowLastButton = true;\n @Input() paginatorRenderButtonsNumber = 2;\n @Input() paginatorHideDefaultArrows = false;\n\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n @ViewChild(MatTable) table?: MatTable<TableRowData>;\n\n @Output() rowClick: EventEmitter<RowClickEvent> = new EventEmitter<RowClickEvent>();\n @Output() selectedRows: EventEmitter<SelectedTableRow[]> =\n new EventEmitter<SelectedTableRow[]>();\n @Output() onChangePage: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n @Output() onSortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { read: true }) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n\n dataSource: MatTableDataSource<TableRowData> =\n new MatTableDataSource<TableRowData>([]);\n displayedColumns: string[] = [];\n currentSort: Sort | undefined;\n desktopTableVisible = true;\n private readonly destroyRef = inject(DestroyRef);\n private filterControlSubscription?: Subscription;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private readonly i18n: MapaI18nService\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get selectAllLabel(): string {\n return this.texts.common.selectAll;\n }\n\n get paginatorPageIndex(): number {\n return Math.max(this.pageIndex - 1, 0);\n }\n\n get shouldShowPaginator(): boolean {\n return this.showPaginator && this.totalPages > 1;\n }\n\n get resolvedEmptyTitle(): string {\n return this.empty.title || this.texts.table.emptyTitle;\n }\n\n get resolvedEmptySubtitle(): string | null {\n return this.empty.subtitle || this.texts.table.emptySubtitle || null;\n }\n\n get skeletonRows(): number[] {\n const rowsCount = Math.max(this.pageSize, 0);\n return Array.from({ length: rowsCount }, (_, index) => index);\n }\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n this.cdr.markForCheck();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes[\"data\"] || changes[\"columns\"]) && this.dataSource) {\n if (changes[\"data\"]) {\n this.data = changes[\"data\"].currentValue;\n }\n if (changes[\"columns\"]) {\n this.columns = changes[\"columns\"].currentValue;\n }\n\n this.refreshTableState();\n if (changes[\"columns\"]) {\n this.rebuildDesktopTable();\n }\n this.cdr.markForCheck();\n }\n\n if (changes[\"filterControl\"] && this.filterControl) {\n this.setupFilter();\n }\n }\n\n private refreshTableState(): void {\n this.dataSource = new MatTableDataSource(this.data);\n this.dataSource.sort = this.sort;\n this.displayedColumns = this.columns.map((column) => column.key);\n if (this.filterControl) {\n this.setupFilter();\n this.dataSource.filter = `${this.filterControl.value ?? \"\"}`.trim().toLowerCase();\n }\n this.table?.renderRows();\n }\n\n private rebuildDesktopTable(): void {\n this.desktopTableVisible = false;\n this.cdr.detectChanges();\n this.desktopTableVisible = true;\n this.cdr.detectChanges();\n }\n\n trackColumn(index: number, column: TableColumn): string {\n return `${index}:${column.key}:${column.label}`;\n }\n\n getSkeletonColumnWidth(column: TableColumn): string {\n if (column.width) {\n return column.width;\n }\n\n if (!this.columns.length) {\n return \"100%\";\n }\n\n return `${100 / this.columns.length}%`;\n }\n\n setupFilter(): void {\n this.filterControlSubscription?.unsubscribe();\n\n if (!this.dataSource || !this.filterControl) {\n return;\n }\n\n this.filterControlSubscription = this.filterControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string | null) => {\n this.dataSource.filter = (value ?? \"\").trim().toLowerCase();\n this.cdr.markForCheck();\n });\n\n this.dataSource.filterPredicate = (\n data: TableRowData,\n filter: string\n ): boolean => {\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n return `${currentTerm}${this.getFilterValue(data[key])} `;\n }, \"\")\n .trim()\n .toLowerCase();\n\n return dataStr.indexOf(filter) !== -1;\n };\n }\n\n isAllSelected(): boolean {\n if (this.selection) {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n return false;\n }\n\n toggleAllRows(): void {\n if (this.selection) {\n if (this.isAllSelected()) {\n this.selection.clear();\n this.getSelectedValues();\n } else {\n this.dataSource.data.forEach((row) => this.selection?.select(row));\n this.getSelectedValues();\n }\n }\n }\n\n checkboxLabel(row?: TableRowData): string {\n if (this.selection) {\n if (!row) {\n return `${this.isAllSelected() ? \"deselect\" : \"select\"} all`;\n }\n const rowPosition = typeof row.position === \"number\" ? row.position + 1 : 1;\n return `${this.selection.isSelected(row) ? \"deselect\" : \"select\"} row ${rowPosition}`;\n }\n return \"\";\n }\n\n sortData(column: TableColumn): void {\n if (column.sort) {\n const sort: Sort = { active: column.key, direction: \"asc\" };\n\n if (\n this.currentSort &&\n this.currentSort.active === column.key &&\n this.currentSort.direction === \"asc\"\n ) {\n sort.direction = \"desc\";\n }\n\n this.currentSort = sort;\n this.sortDataFunction(sort);\n }\n }\n\n sortDataFunction(sort: Sort): void {\n this.onSortChange.emit(sort);\n }\n\n emitRowClick(row: TableRowData, action: string): void {\n const rowData: RowClickEvent = { row, action };\n this.rowClick.emit(rowData);\n }\n\n toggleSelection(row: TableRowData): void {\n if (this.selection) {\n if (this.selection.isSelected(row)) {\n this.selection.deselect(row);\n } else {\n this.selection.select(row);\n }\n this.getSelectedValues();\n }\n }\n\n getSelectedValues(): void {\n if (this.selection) {\n const selectedRows: SelectedTableRow[] = this.selection.selected.map((row) => {\n return { row };\n });\n this.selectedRows.emit(selectedRows);\n }\n }\n\n generateColumns(): void {\n const columns: TableColumn[] = [{ key: \"name\", label: \"\", sort: false }];\n\n this.columns = columns;\n }\n\n columnExists(columns: TableColumn[], key: string): boolean {\n return columns.some((column) => column.key === key);\n }\n\n generateGroupData(): void {\n const result: TableRowData[] = [];\n\n this.data = result;\n }\n\n isBoolean(column: TableColumn, row: TableRowData): boolean {\n return typeof this.getColumnValue(row, column.key) === \"boolean\";\n }\n\n isMaskedData(column: TableColumn, row: TableRowData): boolean {\n return !!column.mask && isDateValue(this.getColumnValue(row, column.key));\n }\n\n getValueAsDate(column: TableColumn, row: TableRowData): Date {\n return parseDateValue(this.getColumnValue(row, column.key)) ?? new Date(\"\");\n }\n\n getCellClass(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return `classification`;\n } catch {\n return \"\";\n }\n }\n\n getCellBg(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getCellTextColor(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationTextColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getValue(row: { value?: string | number | null }): string {\n try {\n if (row.value !== undefined && row.value !== null && row.value !== \"\") {\n return row.value + \"%\";\n }\n return \"-\";\n } catch {\n return \"-\";\n }\n }\n\n changePage(event: PageEvent): void {\n this.onChangePage.emit(event);\n }\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n getBackgroundColor(column: TableColumn, row: TableRowData): string {\n return column.status?.color?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n getTextColor(column: TableColumn, row: TableRowData): string {\n return column.status?.textColor?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n hasCustomClass(column: TableColumn, row: TableRowData, key: string): boolean {\n if (\n column?.class ||\n row?.rowStyleClass ||\n this.hasCellStyleClass(row, key)\n ) {\n return true;\n }\n return false;\n }\n\n getCustomClass(column: TableColumn, row: TableRowData, key: string): string {\n if (this.hasCellStyleClass(row, key)) {\n return this.getCellStyleClass(row, column.key);\n } else if (column?.class) {\n return column.class;\n } else if (row?.rowStyleClass) {\n return row.rowStyleClass;\n }\n return \"\";\n }\n\n hasCellStyleClass(row: TableRowData, key: string): boolean {\n return row.styleClass?.key === key;\n }\n\n getCellStyleClass(row: TableRowData, key: string): string {\n return row.styleClass?.key === key ? row.styleClass?.class : \"\";\n }\n\n handleMenu(selected: MenuActionEvent<unknown>): void {\n if (this.isTableRowData(selected.data)) {\n this.emitRowClick(selected.data, selected.action);\n }\n }\n\n hasIndividualMenu(row: TableRowData | undefined): boolean {\n return this.getMenuItems(row).length > 0;\n }\n\n getMenuItems(row: TableRowData | undefined): MenuItem[] {\n return this.getMenuActionItems(row, \"menu\");\n }\n\n getActionItems(row: TableRowData | undefined): MenuItem[] {\n const rowActions = this.getMenuActionItems(row, \"actions\");\n return rowActions.length > 0 ? rowActions : (this.actions ?? []);\n }\n\n getStatusLabel(column: TableColumn, row: TableRowData): string {\n const labels = column.status?.label;\n\n if (!labels) {\n return \"-\";\n }\n\n const value = this.getColumnValue(row, column.key);\n\n if (typeof value === \"boolean\") {\n return labels[value ? 1 : 0] ?? \"-\";\n }\n\n if (typeof value === \"number\") {\n return labels[value] ?? \"-\";\n }\n\n if (typeof value === \"string\") {\n const numericIndex = Number(value);\n return Number.isNaN(numericIndex) ? labels[0] ?? \"-\" : labels[numericIndex] ?? \"-\";\n }\n\n return \"-\";\n }\n\n getCellContent(row: TableRowData, key: string): string {\n const value = this.getColumnValue(row, key);\n\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return `${value}`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n\n return \"\";\n }\n\n hasActionsColumn(): boolean {\n return this.columns.some((column) => column.key.includes('actions'));\n }\n\n hasMenuColumn(): boolean {\n return this.columns.some((column) => column.key.includes('menu'));\n }\n\n setSvgName(image: string): string {\n return image.split('/').pop()?.split('.')[0] || '';\n }\n\n private getColumnValue(row: TableRowData, key: string): unknown {\n return row[key];\n }\n\n private getColumnRecord(\n row: TableRowData,\n key: string\n ): Record<string, unknown> | undefined {\n const value = this.getColumnValue(row, key);\n\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n return value as Record<string, unknown>;\n }\n\n private getRecordStringValue(\n value: Record<string, unknown> | undefined,\n key: string\n ): string {\n const recordValue = value?.[key];\n return typeof recordValue === \"string\" ? recordValue : \"\";\n }\n\n private getStatusIndex(row: TableRowData, key: string): number {\n const value = this.getColumnValue(row, key);\n\n if (typeof value === \"boolean\") {\n return value ? 1 : 0;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n if (typeof value === \"string\") {\n const parsedValue = Number(value);\n return Number.isNaN(parsedValue) ? 0 : parsedValue;\n }\n\n return 0;\n }\n\n private getFilterValue(value: unknown): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return `${value}`.toLowerCase();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n if (typeof value === \"object\") {\n return Object.values(value).map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n return \"\";\n }\n\n private getMenuActionItems(\n row: TableRowData | undefined,\n key: \"actions\" | \"menu\"\n ): MenuItem[] {\n const value = row?.[key];\n\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((item): item is MenuItem => this.isMenuItem(item));\n }\n\n private isMenuItem(value: unknown): value is MenuItem {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"action\" in value &&\n \"text\" in value\n );\n }\n\n private isTableRowData(value: unknown): value is TableRowData {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n }\n}\n","@if (status.loading) {\n <section class=\"mapa-table mapa-table__skeleton\" aria-hidden=\"true\">\n <div class=\"mapa-table__skeleton-content mapa__card mapa__card--show-on-desktop\">\n <div class=\"mapa-table__skeleton-header\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell mapa-table__skeleton-cell--header\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n @for (rowIndex of skeletonRows; track rowIndex) {\n <div class=\"mapa-table__skeleton-row\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n }\n </div>\n </section>\n} @else if (dataSource.data.length > 0) {\n <section class=\"mapa-table\">\n <div class=\"mapa-table--show-on-mobile\">\n @if (checkbox) {\n <div class=\"mapa-table__select-all\">\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n > {{ selectAllLabel }}</mat-checkbox>\n }\n </div>\n }\n @for (row of dataSource.data; track row) {\n <div>\n <div class=\"mapa-table__card mapa__card\">\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <div [ngClass]=\"'mapa-table__card--column-' + column.key\">\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <strong\n class=\"mapa-table__card--header\"\n [class.mapa-table__checkbox--header]=\"isFirst && checkbox\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox: false }\"\n class=\"hidden\"\n ></div>\n </strong>\n }\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div>\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n\n @if (column.key === \"menu\") {\n @if (hasIndividualMenu(row)) {\n <div class=\"mapa-table__column--menu\">\n @for (item of getMenuItems(row); track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n } @else {\n <div class=\"mapa-table__column--menu\">\n @for (item of menuItems; track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <mapa-svg-icon [name]=\"setSvgName(item.image)\"></mapa-svg-icon>\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"mapa-table--show-on-desktop\">\n @if (desktopTableVisible) {\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <ng-container [matColumnDef]=\"column.key\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div class=\"mapa-table__column--actions\">\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n @if (column.key === \"menu\") {\n <div class=\"mapa-table__column--menu\">\n @if (hasIndividualMenu(row)) {\n <mapa-menu\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n } @else if (menuItems.length > 0) {\n <mapa-menu\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n }\n </div>\n }\n }\n </div>\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n }\n </div>\n\n @if (shouldShowPaginator) {\n <section>\n <mat-paginator\n class=\"mapa-table__paginator\"\n appBubblePagination\n [appCustomLength]=\"totalCount\"\n [bubblePageIndex]=\"paginatorPageIndex\"\n [pageIndex]=\"paginatorPageIndex\"\n [showFirstButton]=\"paginatorShowFirstButton\"\n [showLastButton]=\"paginatorShowLastButton\"\n [renderButtonsNumber]=\"paginatorRenderButtonsNumber\"\n [hideDefaultArrows]=\"paginatorHideDefaultArrows\"\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n }\n </section>\n} @else if (status.finished && dataSource.data.length === 0) {\n <section class=\"mapa-table\">\n <mapa-empty\n [title]=\"resolvedEmptyTitle\"\n [subtitle]=\"resolvedEmptySubtitle\"\n ></mapa-empty>\n </section>\n}\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n @if (isFirst && checkbox) {\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n }\n }\n <div>\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n </div>\n @if (column.key !== \"actions\" && column.key !== \"menu\" && column.sort) {\n <div class=\"mapa-table--show-on-desktop\">\n <mat-icon>filter_list</mat-icon>\n </div>\n }\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n @if (isFirst && checkbox) {\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n class=\"mapa-table__checkbox\"\n >\n </mat-checkbox>\n }\n @if (isMaskedData(column, row)) {\n {{ getValueAsDate(column, row) | date: column.mask }}\n } @else if (column.status) {\n <span [innerHTML]=\"getStatusLabel(column, row) | safeHtml\"></span>\n } @else {\n <span [innerHTML]=\"getCellContent(row, column.key) | safeHtml\"></span>\n }\n</ng-template>\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","i2","i1.HtmlSanitizerService","i1.MapaI18nService","i6","i7"],"mappings":"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"}
|