lib-portal-angular 0.0.112 → 0.0.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"lib-portal-angular.mjs","sources":["../../../projects/lib-portal-angular/src/lib/service/auth-service.service.ts","../../../projects/lib-portal-angular/src/lib/components/accordion/accordion.component.ts","../../../projects/lib-portal-angular/src/lib/components/accordion/accordion.component.html","../../../projects/lib-portal-angular/src/lib/components/alert/alert.component.ts","../../../projects/lib-portal-angular/src/lib/components/alert/alert.component.html","../../../projects/lib-portal-angular/src/lib/components/app-background/app-background.component.ts","../../../projects/lib-portal-angular/src/lib/enum/ButtonClassesEnum.ts","../../../projects/lib-portal-angular/src/lib/components/badge/badge.component.ts","../../../projects/lib-portal-angular/src/lib/components/badge/badge.component.html","../../../projects/lib-portal-angular/src/lib/components/button/button.component.ts","../../../projects/lib-portal-angular/src/lib/components/button/button.component.html","../../../projects/lib-portal-angular/src/lib/components/basic-registration/basic-registration.component.ts","../../../projects/lib-portal-angular/src/lib/components/basic-registration/basic-registration.component.html","../../../projects/lib-portal-angular/src/lib/components/calendar-argenta/calendar-argenta.component.ts","../../../projects/lib-portal-angular/src/lib/components/calendar-argenta/calendar-argenta.component.html","../../../projects/lib-portal-angular/src/lib/components/card-info/card-info.component.ts","../../../projects/lib-portal-angular/src/lib/components/card-info/card-info.component.html","../../../projects/lib-portal-angular/src/lib/components/card/card.component.ts","../../../projects/lib-portal-angular/src/lib/components/checkbox/checkbox.component.ts","../../../projects/lib-portal-angular/src/lib/components/code-highlight/code-highlight.component.ts","../../../projects/lib-portal-angular/src/lib/directive/autofocus-directive/autofocus.directive.ts","../../../projects/lib-portal-angular/src/lib/components/confirmation/confirmation.component.ts","../../../projects/lib-portal-angular/src/lib/components/confirmation/confirmation.component.html","../../../projects/lib-portal-angular/src/lib/components/csv-importer/csv-importer.component.ts","../../../projects/lib-portal-angular/src/lib/components/csv-importer/csv-importer.component.html","../../../projects/lib-portal-angular/src/lib/components/custom-pagination/custom-pagination.component.ts","../../../projects/lib-portal-angular/src/lib/components/custom-pagination/custom-pagination.component.html","../../../projects/lib-portal-angular/src/lib/components/custom-switch/custom-switch.component.ts","../../../projects/lib-portal-angular/src/lib/components/custom-switch/custom-switch.component.html","../../../projects/lib-portal-angular/src/lib/components/data-excel-exporter/data-excel-exporter.component.ts","../../../projects/lib-portal-angular/src/lib/components/data-excel-import/data-excel-importer.component.ts","../../../projects/lib-portal-angular/src/lib/components/data-excel-import/data-excel-importer.component.html","../../../projects/lib-portal-angular/src/lib/components/drag-drop-list/drag-drop-list.component.ts","../../../projects/lib-portal-angular/src/lib/components/drag-drop-list/drag-drop-list.component.html","../../../projects/lib-portal-angular/src/lib/components/dynamic-modal/dynamic-modal.component.ts","../../../projects/lib-portal-angular/src/lib/components/dynamic-modal/dynamic-modal.component.html","../../../projects/lib-portal-angular/src/lib/components/dynamic-table/dynamic-table.component.ts","../../../projects/lib-portal-angular/src/lib/components/dynamic-table/dynamic-table.component.html","../../../projects/lib-portal-angular/src/lib/components/file-upload/file-upload.component.ts","../../../projects/lib-portal-angular/src/lib/components/file-upload/file-upload.component.html","../../../projects/lib-portal-angular/src/lib/components/image-upload/image-upload.component.ts","../../../projects/lib-portal-angular/src/lib/components/image-upload/image-upload.component.html","../../../projects/lib-portal-angular/src/lib/directive/cep-mask.directive.ts","../../../projects/lib-portal-angular/src/lib/directive/cnpj-mask.directive.ts","../../../projects/lib-portal-angular/src/lib/directive/cpf-mask.directive.ts","../../../projects/lib-portal-angular/src/lib/components/imput/input.component.ts","../../../projects/lib-portal-angular/src/lib/components/imput/input.component.html","../../../projects/lib-portal-angular/src/lib/components/json-editor/json-editor.component.ts","../../../projects/lib-portal-angular/src/lib/components/json-editor/json-editor.component.html","../../../projects/lib-portal-angular/src/lib/components/json-viewer/json-viewer.component.ts","../../../projects/lib-portal-angular/src/lib/components/json-viewer/json-viewer.component.html","../../../projects/lib-portal-angular/src/lib/components/modal/modal.component.ts","../../../projects/lib-portal-angular/src/lib/components/modal/modal.component.html","../../../projects/lib-portal-angular/src/lib/components/multi-select/multi-select.component.ts","../../../projects/lib-portal-angular/src/lib/components/multi-select/multi-select.component.html","../../../projects/lib-portal-angular/src/lib/components/multi-select-category/multi-select-category.component.ts","../../../projects/lib-portal-angular/src/lib/components/multi-select-category/multi-select-category.component.html","../../../projects/lib-portal-angular/src/lib/components/pdf-data-handler/function/formatToBrazilianNumber.ts","../../../projects/lib-portal-angular/src/lib/components/pdf-data-handler/argenta-pdf-data-handler.component.ts","../../../projects/lib-portal-angular/src/lib/components/pdf-data-handler/argenta-pdf-data-handler.component.html","../../../projects/lib-portal-angular/src/lib/components/pdf-download/argenta-pdf-download.component.ts","../../../projects/lib-portal-angular/src/lib/components/pdf-download/argenta-pdf-download.component.html","../../../projects/lib-portal-angular/src/lib/components/radio/radio.component.ts","../../../projects/lib-portal-angular/src/lib/components/radio/radio.component.html","../../../projects/lib-portal-angular/src/lib/components/search-customer/search-customer.component.ts","../../../projects/lib-portal-angular/src/lib/components/search-customer/search-customer.component.html","../../../projects/lib-portal-angular/src/lib/components/search-input/search-input.component.ts","../../../projects/lib-portal-angular/src/lib/components/search-input/search-input.component.html","../../../projects/lib-portal-angular/src/lib/components/select/select.component.ts","../../../projects/lib-portal-angular/src/lib/components/tab/tab.component.ts","../../../projects/lib-portal-angular/src/lib/components/tab/tab.component.html","../../../projects/lib-portal-angular/src/lib/service/refresh-service.service.ts","../../../projects/lib-portal-angular/src/lib/components/confirmation/confirmation.service.ts","../../../projects/lib-portal-angular/src/lib/components/tables/data-table.component.ts","../../../projects/lib-portal-angular/src/lib/components/tables/data-table.component.html","../../../projects/lib-portal-angular/src/lib/components/textarea/textarea.component.ts","../../../projects/lib-portal-angular/src/lib/components/tree-node/tree-node.component.ts","../../../projects/lib-portal-angular/src/lib/components/tree-node/tree-node.component.html","../../../projects/lib-portal-angular/src/lib/icons/lucide-icons.module.ts","../../../projects/lib-portal-angular/src/lib/components/components.module.ts","../../../projects/lib-portal-angular/src/lib/components/alert/notification.service.ts","../../../projects/lib-portal-angular/src/lib/components/tables/data-paginate.service.ts","../../../projects/lib-portal-angular/src/lib/service/route-parameter.service.ts","../../../projects/lib-portal-angular/src/lib/lib-portal-angular.module.ts","../../../projects/lib-portal-angular/src/lib/service/excel-service.service.ts","../../../projects/lib-portal-angular/src/lib/function/ConvertToSnakeCase.ts","../../../projects/lib-portal-angular/src/lib/function/SetThemeColors.ts","../../../projects/lib-portal-angular/src/public-api.ts","../../../projects/lib-portal-angular/src/lib-portal-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n private userRoles: string[] = [];\n\n constructor() {\n this.loadUserRoles();\n }\n\n private loadUserRoles(): void {\n const storedUser = localStorage.getItem('user');\n if (!storedUser) {\n throw new Error('User not found in localStorage');\n }\n const { role } = JSON.parse(storedUser);\n if (!role || !Array.isArray(role)) {\n throw new Error('Roles not found or invalid in localStorage');\n }\n this.userRoles = role.map((r: string) => r.toString());\n }\n\n public hasPermission(requiredPermissions: string[]): boolean {\n if (this.userRoles.length === 0) {\n throw new Error('No roles found for the user');\n }\n return requiredPermissions.every(permission => this.userRoles.includes(permission));\n }\n}\n","\nimport { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss']\n})\nexport class AccordionArgentaComponent {\n @Input() title: string = 'Accordion Title'; // Título do accordion\n @Input() isOpen: boolean = false; // Estado inicial do accordion\n @Input() permissions: string[] = []; // Permissões necessárias para exibir o accordion\n\n @Output() toggleEvent = new EventEmitter<boolean>(); // Evento emitido ao abrir/fechar o accordion\n\n constructor(private authService: AuthService) { }\n\n ngOnInit(): void {\n this.validatePermissions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['permissions']) {\n this.validatePermissions();\n }\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true; // Se não forem passadas permissões, o accordion será exibido por padrão\n }\n\n try {\n return this.authService.hasPermission(this.permissions); // Verifica se o usuário tem as permissões\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return false; // Se ocorrer um erro ou as permissões não forem válidas, o accordion não será exibido\n }\n }\n\n toggle() {\n this.isOpen = !this.isOpen;\n this.toggleEvent.emit(this.isOpen); // Emite o estado atual (aberto ou fechado)\n }\n\n private validatePermissions(): void {\n if (!Array.isArray(this.permissions)) {\n throw new Error(`Invalid permissions: ${this.permissions}. It should be an array of strings.`);\n }\n }\n}","<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- Ícone da seta -->\n <span class=\"accordion-icon\">▼</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conteúdo do accordion -->\n </div>\n </div>\n</ng-container>\n","import { AfterViewInit, Component, Input, OnInit } from '@angular/core';\nimport { Alert } from './notification.service';\n\n@Component({\n selector: 'lib-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent implements OnInit, AfterViewInit {\n @Input() alerts: Alert[] = [];\n private closeTimeouts: { [key: string]: any } = {}; // Armazena os temporizadores para cada alerta\n\n ngOnInit(): void {\n // Inicia o temporizador de fechamento para cada alerta quando a página é carregada\n this.alerts.forEach(alert => {\n this.closeTimeouts[alert.message] = setTimeout(() => {\n this.closeAlert(alert);\n }, 6000); // Fecha após 8 segundos\n });\n }\n\n ngAfterViewInit(): void {\n // Adiciona a classe 'show' após um curto atraso para acionar a animação\n setTimeout(() => {\n this.alerts.forEach(alert => {\n const element = document.getElementById(`alert-${alert.message}`);\n if (element) {\n element.classList.add('show');\n }\n });\n }, 10); // Pequeno atraso para garantir que o elemento esteja no DOM\n }\n\n closeAlert(alert: Alert) {\n const element = document.getElementById(`alert-${alert.message}`);\n if (element) {\n element.classList.remove('show');\n setTimeout(() => {\n this.alerts = this.alerts.filter(a => a !== alert);\n }, 500); // Duração da animação de saída\n } else {\n this.alerts = this.alerts.filter(a => a !== alert);\n }\n }\n\n getAlertClass(alert: Alert) {\n return {\n 'alert-container': true,\n 'alert-dismissible': true,\n [`alert-${alert.type}`]: true\n };\n }\n\n getAlertIconClass(alert: Alert) {\n switch (alert.type) {\n case 'success':\n return 'success-icon'; // Classe para o ícone de sucesso\n case 'info':\n return 'info-icon'; // Classe para o ícone de informação\n case 'warning':\n return 'warning-icon'; // Classe para o ícone de aviso\n case 'danger':\n return 'danger-icon'; // Classe para o ícone de erro\n default:\n return '';\n }\n }\n\n onMouseEnter(alert: Alert) {\n // Cancela o temporizador quando o mouse entra no alerta\n if (this.closeTimeouts[alert.message]) {\n clearTimeout(this.closeTimeouts[alert.message]);\n delete this.closeTimeouts[alert.message];\n }\n }\n\n onMouseLeave(alert: Alert) {\n // Inicia um novo temporizador para fechar o alerta após 2 segundos quando o mouse sai do alerta\n this.closeTimeouts[alert.message] = setTimeout(() => {\n this.closeAlert(alert);\n }, 2000); // Fechar após 2 segundos\n }\n}\n","<div *ngFor=\"let alert of alerts\" \n [ngClass]=\"getAlertClass(alert)\" \n role=\"alert\" \n [id]=\"'alert-' + alert.message\"\n (mouseenter)=\"onMouseEnter(alert)\" \n (mouseleave)=\"onMouseLeave(alert)\">\n <button type=\"button\" class=\"close\" (click)=\"closeAlert(alert)\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div class=\"alert-header\">\n <span [ngClass]=\"getAlertIconClass(alert)\" class=\"alert-icon\"></span>\n <strong>{{ alert.title }}</strong>\n </div>\n <div class=\"alert-body\">\n {{ alert.message }}\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'argenta-app-background',\n template: `\n <div class=\"row row-car\">\n <div class=\"card\">\n <div class=\"card-content\">\n <ng-content></ng-content>\n </div>\n </div> \n </div>\n `,\n styles: [` \n .card {\n border-radius: 10px;\n padding: 1rem;\n background-color: #FFFFFF; /* Cor de fundo ajustada */\n border: none; /* Remover borda */\n }\n .row-car{\n margin-left: -0.8rem;\n margin-right: -0.8rem;\n }\n `]\n})\nexport class AppBackgroundComponent { }\n","export enum ButtonClasses {\n Primary = 'btn-primary',\n Secondary = 'btn-secondary',\n Success = 'btn-success',\n Danger = 'btn-danger',\n Warning = 'btn-warning',\n Info = 'btn-info',\n Light = 'btn-light',\n Dark = 'btn-dark',\n Link = 'btn-link'\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from \"@angular/core\";\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\";\n\n@Component({\n selector: \"sim-app-badge\",\n templateUrl: \"./badge.component.html\",\n styleUrls: [\"./badge.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n @Input() label: string = \"Mensagem\";\n @Input() badgeContent: string = \"+45\";\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n @Input() btnClass: ButtonClasses = ButtonClasses.Primary;\n @Output() buttonClick: EventEmitter<void> = new EventEmitter<void>();\n\n isHovered: boolean = false;\n isClicked: boolean = false;\n isActive: boolean = false;\n\n getDynamicStyles() {\n let backgroundColor = \"\";\n let textColor = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--text-color\")\n .trim();\n let borderColor = \"\";\n\n const getCSSVariable = (variable: string) =>\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim();\n\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Secondary:\n backgroundColor = getCSSVariable(\"--secondary-color\");\n break;\n case ButtonClasses.Success:\n backgroundColor = getCSSVariable(\"--success-color\");\n break;\n case ButtonClasses.Danger:\n backgroundColor = getCSSVariable(\"--danger-color\");\n break;\n case ButtonClasses.Warning:\n backgroundColor = getCSSVariable(\"--warning-color\");\n break;\n case ButtonClasses.Info:\n backgroundColor = getCSSVariable(\"--info-color\");\n break;\n case ButtonClasses.Light:\n backgroundColor = getCSSVariable(\"--light-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Dark:\n backgroundColor = getCSSVariable(\"--dark-color\");\n break;\n case ButtonClasses.Link:\n backgroundColor = \"transparent\";\n borderColor = getCSSVariable(\"--link-border-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n default:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n }\n\n const hoverFilter = this.isHovered ? \"brightness(80%)\" : \"none\";\n const activeFilter = this.isClicked ? \"brightness(60%)\" : hoverFilter;\n\n return {\n \"margin-top\": `${this.marginTop}rem`,\n \"margin-bottom\": `${this.marginBottom}rem`,\n \"margin-left\": `${this.marginLeft}rem`,\n \"margin-right\": `${this.marginRight}rem`,\n \"background-color\": backgroundColor,\n color: textColor,\n border: borderColor ? `1px solid ${borderColor}` : \"none\",\n transition: \"background-color 0.3s, border-color 0.3s, filter 0.3s\",\n filter: activeFilter,\n };\n }\n\n onClick() {\n this.buttonClick.emit();\n }\n\n @HostListener(\"mouseenter\")\n onMouseEnter() {\n this.isHovered = true;\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave() {\n this.isHovered = false;\n this.isClicked = false;\n }\n\n @HostListener(\"mousedown\")\n onMouseDown() {\n this.isClicked = true;\n }\n\n @HostListener(\"mouseup\")\n onMouseUp() {\n this.isClicked = false;\n }\n}\n","<button\n class=\"notification-button\"\n [ngStyle]=\"getDynamicStyles()\"\n (click)=\"onClick()\"\n [class.hovered]=\"isHovered\"\n [class.clicked]=\"isClicked\"\n (mousedown)=\"onMouseDown()\"\n (mouseup)=\"onMouseUp()\"\n (mouseleave)=\"onMouseLeave()\"\n (mouseenter)=\"onMouseEnter()\"\n>\n {{ label }}\n <span class=\"badge\">{{ badgeContent }}</span>\n</button>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ElementRef,\n ViewChild,\n AfterViewInit,\n Renderer2,\n} from \"@angular/core\";\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\";\nimport { AuthService } from \"../../service/auth-service.service\";\n\n@Component({\n selector: \"argenta-custom-button\",\n templateUrl: \"./button.component.html\",\n styleUrls: [\"./button.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() type: string = \"button\";\n @Input() label: string = \"Submit\";\n @Input() btnClass: ButtonClasses = ButtonClasses.Primary;\n @Input() fontSize: string = \"1rem\";\n @Input() disabled: boolean = false;\n @Input() autofocus: boolean = false;\n @Input() form: string | null = null;\n @Input() formaction: string | null = null;\n @Input() formenctype: string | null = null;\n @Input() formmethod: string | null = null;\n @Input() formnovalidate: boolean = false;\n @Input() formtarget: string | null = null;\n @Input() name: string | null = null;\n @Input() value: string | null = null;\n @Input() permissions: string[] = [];\n\n @Output() onButtonClick: EventEmitter<Event> = new EventEmitter<Event>();\n @ViewChild(\"buttonElement\") buttonElement!: ElementRef<HTMLButtonElement>;\n\n private isHovered: boolean = false;\n private isActive: boolean = false;\n\n clicked: boolean = false;\n\n constructor(\n private authService: AuthService,\n private cdr: ChangeDetectorRef,\n private renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.validateInputs();\n }\n\n ngAfterViewInit(): void {\n this.addHoverEffect(); // Chama o método para aplicar o efeito de hover\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes) {\n this.validateInputs();\n }\n }\n\n private validateInputs(): void {\n const validTypes = [\"button\", \"submit\", \"reset\"];\n const validClasses = Object.values(ButtonClasses);\n\n if (!validTypes.includes(this.type)) {\n throw new Error(\n `Invalid type: ${this.type}. Allowed values are: ${validTypes.join(\n \", \"\n )}`\n );\n }\n\n if (!validClasses.includes(this.btnClass)) {\n throw new Error(\n `Invalid btnClass: ${\n this.btnClass\n }. Allowed values are: ${validClasses.join(\", \")}`\n );\n }\n\n if (typeof this.disabled !== \"boolean\") {\n throw new Error(\n `Invalid disabled value: ${this.disabled}. It should be a boolean.`\n );\n }\n\n if (typeof this.autofocus !== \"boolean\") {\n throw new Error(\n `Invalid autofocus value: ${this.autofocus}. It should be a boolean.`\n );\n }\n\n if (this.permissions && !Array.isArray(this.permissions)) {\n throw new Error(\n `Invalid permissions value: ${this.permissions}. It should be an array of strings.`\n );\n }\n }\n\n onClick(event: Event) {\n this.clicked = true;\n this.onButtonClick.emit(event);\n setTimeout(() => {\n this.clicked = false;\n this.cdr.detectChanges();\n }, 80);\n }\n\n get dynamicStyles() {\n return this.calculateDynamicStyles();\n }\n\n private calculateDynamicStyles() {\n let backgroundColor = \"\";\n let textColor = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--text-color\")\n .trim(); // Cor de texto padrão\n let borderColor = \"\";\n\n const getCSSVariable = (variable: string) =>\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim();\n\n if (this.clicked) {\n backgroundColor = \"rgba(126, 126, 126, 0.25)\"; // Cor temporária ao clicar\n } else {\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Secondary:\n backgroundColor = getCSSVariable(\"--secondary-color\");\n break;\n case ButtonClasses.Success:\n backgroundColor = getCSSVariable(\"--success-color\");\n break;\n case ButtonClasses.Danger:\n backgroundColor = getCSSVariable(\"--danger-color\");\n break;\n case ButtonClasses.Warning:\n backgroundColor = getCSSVariable(\"--warning-color\");\n break;\n case ButtonClasses.Info:\n backgroundColor = getCSSVariable(\"--info-color\");\n break;\n case ButtonClasses.Light:\n backgroundColor = getCSSVariable(\"--light-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Dark:\n backgroundColor = getCSSVariable(\"--dark-color\");\n break;\n case ButtonClasses.Link:\n backgroundColor = \"transparent\";\n borderColor = getCSSVariable(\"--link-border-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n default:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n }\n }\n\n const hoverFilter = this.isHovered ? \"brightness(80%)\" : \"none\";\n const activeFilter = this.isActive ? \"brightness(60%)\" : hoverFilter;\n\n return {\n \"font-size\": this.fontSize,\n \"background-color\": backgroundColor,\n color: textColor,\n border: borderColor ? `1px solid ${borderColor}` : \"none\",\n transition: \"background-color 0.3s, border-color 0.3s, filter 0.3s\",\n filter: activeFilter,\n };\n }\n\n private addHoverEffect(): void {\n const buttonElement = this.buttonElement.nativeElement;\n\n if (buttonElement) {\n // Evento de mouseover para adicionar box-shadow\n this.renderer.listen(buttonElement, \"mouseover\", () => {\n const hoverColor = this.calculateHoverColor(); // Calcula a cor de hover\n this.renderer.setStyle(\n buttonElement,\n \"box-shadow\",\n `0 0 0 0.15rem ${hoverColor}`\n );\n });\n\n // Evento de mouseout para remover o box-shadow\n this.renderer.listen(buttonElement, \"mouseout\", () => {\n this.renderer.setStyle(buttonElement, \"box-shadow\", \"none\");\n });\n }\n }\n\n // Calcula a cor de hover com base na classe de botão\n private calculateHoverColor(): string {\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n case ButtonClasses.Secondary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--secondary-color\")\n .trim();\n case ButtonClasses.Success:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--success-color\")\n .trim();\n case ButtonClasses.Danger:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--danger-color\")\n .trim();\n case ButtonClasses.Warning:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--warning-color\")\n .trim();\n case ButtonClasses.Info:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--info-color\")\n .trim();\n case ButtonClasses.Link:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"light-color\")\n .trim();\n case ButtonClasses.Light:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--light-color\")\n .trim();\n case ButtonClasses.Dark:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--dark-color\")\n .trim();\n default:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n }\n }\n\n // Calcula a cor de fundo original\n private calculateOriginalColor(): string {\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n case ButtonClasses.Secondary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--secondary-color\")\n .trim();\n case ButtonClasses.Success:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--success-color\")\n .trim();\n case ButtonClasses.Danger:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--danger-color\")\n .trim();\n case ButtonClasses.Warning:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--warning-color\")\n .trim();\n case ButtonClasses.Info:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--info-color\")\n .trim();\n case ButtonClasses.Link:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"transparent\")\n .trim();\n case ButtonClasses.Light:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--light-color\")\n .trim();\n case ButtonClasses.Dark:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--dark-color\")\n .trim();\n default:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n }\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n onCancel(event: Event) {\n console.log(\"Cancel button clicked\", event);\n // Lógica para o cancelamento\n }\n\n onSave(event: Event) {\n console.log(\"Save button clicked\", event);\n // Lógica para salvar alterações\n }\n}\n","<ng-container *ngIf=\"hasPermission()\">\n <button\n #buttonElement\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.type]=\"type\"\n >\n {{ label }}\n </button>\n</ng-container>\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\nimport { ButtonClasses } from '../../enum/ButtonClassesEnum';\n\n@Component({\n selector: 'argenta-basic-registration',\n templateUrl: './basic-registration.component.html',\n styleUrls: ['./basic-registration.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BasicRegistrationComponent {\n @Input() cancelLabel: string = 'Cancelar';\n @Input() saveLabel: string = 'Salvar';\n @Input() cancelPermissions: string[] = [];\n @Input() savePermissions: string[] = [];\n\n @Output() cancelClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() saveClick: EventEmitter<Event> = new EventEmitter<Event>();\n ButtonClasses = ButtonClasses;\n\n constructor(private authService: AuthService) { }\n\n hasPermission(permissions: string[]): boolean {\n if (!permissions || permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n\n handleCancel(event: Event) {\n this.cancelClick.emit(event);\n }\n\n handleSave(event: Event) {\n this.saveClick.emit(event);\n }\n}\n","<div class=\"row row-car\">\n <div class=\"card\">\n <div class=\"card-content\" style=\"margin-top: 2.5rem;\">\n <ng-content></ng-content> <!-- Permite a inclusão de conteúdo dinâmico -->\n </div>\n <div class=\"card-footer\">\n <div class=\"button-group\">\n <argenta-custom-button\n *ngIf=\"hasPermission(cancelPermissions)\"\n [type]=\"'button'\"\n [label]=\"cancelLabel\"\n [btnClass]=\"ButtonClasses.Light\"\n (onButtonClick)=\"handleCancel($event)\"\n class=\"argenta-custom-button\">\n </argenta-custom-button>\n <argenta-custom-button\n *ngIf=\"hasPermission(savePermissions)\"\n [type]=\"'submit'\"\n [label]=\"saveLabel\"\n [btnClass]=\"ButtonClasses.Primary\"\n (onButtonClick)=\"handleSave($event)\"\n class=\"argenta-custom-button\">\n </argenta-custom-button>\n </div>\n </div>\n </div> \n</div>\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'argenta-calendar',\n templateUrl: './calendar-argenta.component.html',\n styleUrls: ['./calendar-argenta.component.scss'],\n})\nexport class CalendarArgentaComponent implements OnInit, OnChanges {\n @Input() id: string = 'argenta-calendar';\n @Input() placeholder: string = 'Select a date';\n @Input() label: string = 'Select a date';\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() locale: string = 'pt';\n @Input() useTime: boolean = false; // Incluir ou não a hora\n @Input() initialDate: string | null = null; // Data inicial no modo de data única\n @Input() rangeMode: boolean = false; // Ativa o modo de intervalo de datas\n @Input() startDate: string | null = null; // Data de início do intervalo\n @Input() endDate: string | null = null; // Data de fim do intervalo\n @Input() closeButtonLabel: string = 'Fechar'; // Texto do botão de fechar\n @Output() rangeChange = new EventEmitter<{ start: string, end: string }>(); // Evento que emite data única ou intervalo\n\n currentYear: number = new Date().getFullYear();\n currentMonth: number = new Date().getMonth();\n selectedDate: Date | null = null;\n selectedStartDate: Date | null = null;\n selectedEndDate: Date | null = null;\n isCalendarVisible: boolean = false;\n inputDate: string = '';\n invalidDate: boolean = false;\n isSelectingStart: boolean = true; // Controla se estamos selecionando a data inicial ou final\n startTime: string = '';\n endTime: string = '';\n selectedTime: string = '';\n\n locales: any = {\n en: {\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'\n ],\n daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n invalidDateMessage: 'Invalid date. Please enter a date in the format dd/MM/yyyy',\n startTimeLabel: 'Start Time', \n endTimeLabel: 'End Time',\n },\n pt: {\n months: [\n 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'\n ],\n daysOfWeek: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n invalidDateMessage: 'Data inválida. Por favor, insira uma data no formato dd/MM/yyyy',\n startTimeLabel: 'Hora de Início', \n endTimeLabel: 'Hora de Fim',\n },\n es: {\n months: [\n 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'\n ],\n daysOfWeek: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'],\n invalidDateMessage: 'Fecha inválida. Por favor, ingrese una fecha en el formato dd/MM/yyyy',\n startTimeLabel: 'Hora de Inicio', \n endTimeLabel: 'Hora de Fin', \n }\n };\n\n ngOnInit(): void {\n if (this.rangeMode) {\n if (this.startDate) {\n this.selectedStartDate = this.parseDate(this.startDate);\n this.startTime = this.formatTimeForDisplay(this.selectedStartDate);\n }\n if (this.endDate) {\n this.selectedEndDate = this.parseDate(this.endDate);\n this.endTime = this.formatTimeForDisplay(this.selectedEndDate);\n }\n this.updateInputForRange(); // Atualiza o input no modo range com horas\n } else {\n if (this.initialDate) {\n this.updateCalendar(this.initialDate); // Atualiza o input único com a data inicial\n this.selectedTime = this.formatTimeForDisplay(this.selectedDate);\n }\n }\n }\n \n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['initialDate'] && changes['initialDate'].currentValue) {\n this.updateCalendar(changes['initialDate'].currentValue);\n }\n }\n\n // Atualiza o calendário para exibir a data única e a hora\n updateCalendar(dateString: string): void {\n const parsedDate = this.parseDate(dateString);\n if (parsedDate && this.validateDate(dateString)) {\n this.selectedDate = parsedDate;\n this.currentYear = parsedDate.getFullYear();\n this.currentMonth = parsedDate.getMonth();\n this.inputDate = this.formatDateForDisplay(parsedDate); // Inclui a hora no input principal\n this.emitSingleOrRange(); // Emite data única ou intervalo\n this.invalidDate = false;\n } else {\n this.invalidDate = true;\n }\n }\n\n onInputChange(event: any): void {\n const inputValue = event.target.value;\n this.inputDate = this.applyDateMask(inputValue);\n\n if (this.rangeMode) {\n const dateParts = this.inputDate.split(' - ');\n if (dateParts.length === 2) {\n const [startDate, endDate] = dateParts;\n\n // Valida as duas partes do intervalo\n if (this.validateDate(startDate) && this.validateDate(endDate)) {\n this.invalidDate = false;\n const parsedStartDate = this.parseDate(startDate);\n const parsedEndDate = this.parseDate(endDate);\n\n if (parsedStartDate && parsedEndDate) {\n this.selectedStartDate = parsedStartDate;\n this.selectedEndDate = parsedEndDate;\n this.emitSingleOrRange(); // Emite o intervalo atualizado\n }\n } else {\n this.invalidDate = true;\n }\n }\n } else {\n // Valida data única\n if ((this.useTime && this.inputDate.length === 16) || (!this.useTime && this.inputDate.length === 10)) {\n if (this.validateDate(this.inputDate)) {\n this.invalidDate = false;\n const parsedDate = this.parseDate(this.inputDate);\n if (parsedDate) {\n this.selectedDate = parsedDate;\n this.emitSingleOrRange(); // Emite a data única atualizada\n }\n } else {\n this.invalidDate = true;\n }\n }\n }\n }\n\n\n // Atualiza o input no modo intervalo\n updateInputForRange(): void {\n if (this.selectedStartDate && this.selectedEndDate) {\n const formattedStart = this.formatDateForDisplay(this.selectedStartDate);\n const formattedEnd = this.formatDateForDisplay(this.selectedEndDate);\n this.inputDate = `${formattedStart} - ${formattedEnd}`;\n } else if (this.selectedStartDate) {\n this.inputDate = this.formatDateForDisplay(this.selectedStartDate);\n }\n }\n\n\n /// Emite data única ou intervalo, incluindo horas\n emitSingleOrRange(): void {\n if (this.rangeMode) {\n const formattedStart = this.selectedStartDate ? this.formatDateForDisplay(this.selectedStartDate) : '';\n const formattedEnd = this.selectedEndDate ? this.formatDateForDisplay(this.selectedEndDate) : '';\n this.inputDate = `${formattedStart} - ${formattedEnd}`; // Atualiza o input principal com o range e horas\n this.rangeChange.emit({ start: formattedStart, end: formattedEnd });\n } else {\n const formattedDate = this.selectedDate ? this.formatDateForDisplay(this.selectedDate) : '';\n this.inputDate = formattedDate; // Atualiza o input principal com a data única e hora\n this.rangeChange.emit({ start: formattedDate, end: '' });\n }\n }\n // Função para tratar mudanças nas horas\n onTimeChange(type: string): void {\n if (type === 'start') {\n if (this.selectedStartDate) {\n const [hours, minutes] = this.startTime ? this.startTime.split(':') : ['00', '00'];\n this.selectedStartDate.setHours(+hours, +minutes);\n }\n } else if (type === 'end') {\n if (this.selectedEndDate) {\n const [hours, minutes] = this.endTime ? this.endTime.split(':') : ['00', '00'];\n this.selectedEndDate.setHours(+hours, +minutes);\n }\n } else if (type === 'single') {\n if (this.selectedDate) {\n const [hours, minutes] = this.selectedTime ? this.selectedTime.split(':') : ['00', '00'];\n this.selectedDate.setHours(+hours, +minutes);\n }\n }\n this.emitSingleOrRange(); // Atualiza o valor no input principal\n }\n\n\n\n // Função para formatação da hora no input de hora\n formatTimeForDisplay(date: Date | null): string {\n if (!date) return '';\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n return `${hours}:${minutes}`;\n }\n\n\n // Método para selecionar uma data no calendário\n selectDate(day: number): void {\n const date = new Date(this.currentYear, this.currentMonth, day);\n\n if (this.rangeMode) {\n // Lógica para rangeMode\n if (this.isSelectingStart) {\n this.selectedStartDate = date;\n if (this.startTime) {\n const [hours, minutes] = this.startTime.split(':');\n this.selectedStartDate.setHours(+hours, +minutes);\n } else {\n this.selectedStartDate.setHours(0, 0);\n this.startTime = '00:00';\n }\n this.isSelectingStart = false;\n } else {\n this.selectedEndDate = date;\n if (this.endTime) {\n const [hours, minutes] = this.endTime.split(':');\n this.selectedEndDate.setHours(+hours, +minutes);\n } else {\n this.selectedEndDate.setHours(0, 0);\n this.endTime = '00:00';\n }\n this.isSelectingStart = true;\n this.emitSingleOrRange();\n }\n this.updateInputForRange();\n // O calendário só será fechado ao clicar no botão \"Fechar\"\n } else {\n // Lógica para quando não está em rangeMode\n this.selectedDate = date;\n if (this.selectedTime) {\n const [hours, minutes] = this.selectedTime.split(':');\n this.selectedDate.setHours(+hours, +minutes);\n } else {\n this.selectedDate.setHours(0, 0);\n this.selectedTime = '00:00';\n }\n this.inputDate = this.formatDateForDisplay(date);\n this.emitSingleOrRange();\n\n // **Fechar o calendário apenas se `useTime` for false**\n if (!this.useTime) {\n this.isCalendarVisible = false; // Fecha o calendário automaticamente se `useTime` for false\n }\n // Se `useTime` for true, o calendário permanece aberto para inserir a hora\n }\n }\n\n\n\n applyDateMask(inputValue: string): string {\n // Remove qualquer caractere que não seja numérico\n let digitsOnly = inputValue.replace(/\\D/g, '');\n\n if (this.rangeMode) {\n const maxLength = this.useTime ? 28 : 17; // Ajusta o comprimento máximo para intervalo com ou sem tempo\n\n // Certifica-se de que a entrada não excede o comprimento permitido\n if (digitsOnly.length > maxLength) {\n digitsOnly = digitsOnly.substring(0, maxLength);\n }\n\n // Primeiro intervalo (start date)\n let day1 = digitsOnly.substring(0, 2);\n let month1 = digitsOnly.substring(2, 4);\n let year1 = digitsOnly.substring(4, 8);\n let hour1 = digitsOnly.substring(8, 10);\n let minute1 = digitsOnly.substring(10, 12);\n\n // Cria a data formatada para a primeira parte (start date)\n let maskedDate = `${day1}/${month1}/${year1}`;\n if (this.useTime && hour1 && minute1) {\n maskedDate += ` ${hour1}:${minute1}`;\n }\n\n // Adiciona o separador ' - ' se houver dados para o segundo intervalo\n if (digitsOnly.length > 12) {\n maskedDate += ' - ';\n }\n\n // Segundo intervalo (end date)\n let day2 = digitsOnly.substring(12, 14);\n let month2 = digitsOnly.substring(14, 16);\n let year2 = digitsOnly.substring(16, 20);\n let hour2 = digitsOnly.substring(20, 22);\n let minute2 = digitsOnly.substring(22, 24);\n\n let endDatePart = `${day2}/${month2}/${year2}`;\n if (this.useTime && hour2 && minute2) {\n endDatePart += ` ${hour2}:${minute2}`;\n }\n\n // Adiciona a segunda parte (end date) ao input, se aplicável\n if (digitsOnly.length > 12) {\n maskedDate += endDatePart;\n }\n\n return maskedDate;\n } else {\n const maxLength = this.useTime ? 16 : 10;\n if (digitsOnly.length > maxLength) {\n digitsOnly = digitsOnly.substring(0, maxLength);\n }\n\n let day = digitsOnly.substring(0, 2);\n let month = digitsOnly.substring(2, 4);\n let year = digitsOnly.substring(4, 8);\n let hour = digitsOnly.substring(8, 10);\n let minute = digitsOnly.substring(10, 12);\n\n let maskedDate = `${day}/${month}/${year}`;\n if (this.useTime && hour && minute) {\n maskedDate += ` ${hour}:${minute}`;\n }\n\n return maskedDate;\n }\n }\n\n\n\n // Validação da data\n validateDate(inputValue: string): boolean {\n const [datePart, timePart] = inputValue.split(' ');\n const [dayStr, monthStr, yearStr] = datePart.split('/');\n const day = Number(dayStr);\n const month = Number(monthStr);\n const year = Number(yearStr);\n\n if (month < 1 || month > 12 || yearStr.length !== 4 || isNaN(year)) {\n return false;\n }\n\n const lastDayOfMonth = new Date(year, month, 0).getDate();\n if (day < 1 || day > lastDayOfMonth) {\n return false;\n }\n\n if (this.useTime && timePart) {\n const [hourStr, minuteStr] = timePart.split(':');\n const hour = Number(hourStr);\n const minute = Number(minuteStr);\n if (hour < 0 || hour > 23 || minute < 0 || minute > 59 || isNaN(hour) || isNaN(minute)) {\n return false;\n }\n }\n\n return true;\n }\n\n handleKeyPress(event: KeyboardEvent): void {\n const charCode = event.key.charCodeAt(0);\n\n // Permitir apenas números e barra \"/\"\n if ((charCode < 48 || charCode > 57) && charCode !== 47) {\n event.preventDefault(); // Bloqueia a inserção de caracteres não permitidos\n }\n\n // Limita o tamanho da entrada conforme o tipo de dado (com ou sem hora)\n if (this.inputDate.replace(/\\D/g, '').length >= (this.useTime ? 12 : 8)) {\n event.preventDefault(); // Limita o número de caracteres permitidos\n }\n }\n\n\n // Fecha o calendário\n closeCalendar(): void {\n this.isCalendarVisible = false;\n }\n\n // Alterna a visibilidade do calendário\n toggleCalendar(): void {\n this.isCalendarVisible = !this.isCalendarVisible;\n }\n\n // Formata a data e hora para exibição no input principal\n formatDateForDisplay(date: Date): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n let formattedDate = `${day}/${month}/${year}`;\n\n if (this.useTime) {\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n formattedDate += ` ${hours}:${minutes}`;\n }\n\n return formattedDate;\n }\n\n\n // Formata a data para emitir no evento\n formatDateForEmit(date: Date): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n let formattedDate = `${day}/${month}/${year}`;\n if (this.useTime) {\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n formattedDate += ` - ${hours}:${minutes}`;\n }\n return formattedDate;\n }\n\n // Função para parsing de string para Date\n parseDate(dateStr: string): Date | null {\n const [datePart, timePart] = dateStr.split(' ');\n const [day, month, year] = datePart.split('/').map(Number);\n if (!day || !month || !year) {\n return null;\n }\n\n const date = new Date(year, month - 1, day);\n if (this.useTime && timePart) {\n const [hour, minute] = timePart.split(':').map(Number);\n date.setHours(hour || 0, minute || 0);\n }\n return date;\n }\n\n // Gera a lista de dias no mês atual\n get daysInMonth(): any[] {\n const firstDayOfMonth = new Date(this.currentYear, this.currentMonth, 1).getDay();\n const totalDaysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate();\n const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => i + 1);\n const leadingEmptyDays = Array(firstDayOfMonth).fill(null); // Dias vazios antes do primeiro dia do mês\n return [...leadingEmptyDays, ...daysArray];\n }\n\n // Verifica se um dia está selecionado\n isSelected(day: number): boolean {\n if (!this.selectedDate) return false;\n const selectedDay = this.selectedDate.getDate();\n const selectedMonth = this.selectedDate.getMonth();\n const selectedYear = this.selectedDate.getFullYear();\n return selectedDay === day && selectedMonth === this.currentMonth && selectedYear === this.currentYear;\n }\n\n // Verifica se o dia é hoje\n isToday(day: number): boolean {\n const today = new Date();\n return today.getFullYear() === this.currentYear && today.getMonth() === this.currentMonth && today.getDate() === day;\n }\n\n // Verifica se a data está desabilitada\n isDateDisabled(day: number): boolean {\n const date = new Date(this.currentYear, this.currentMonth, day);\n if (this.minDate && date < this.minDate) return true;\n if (this.maxDate && date > this.maxDate) return true;\n return false;\n }\n\n // Verifica se um dia está no intervalo selecionado\n isInRange(day: number): boolean {\n if (!this.selectedStartDate || !this.selectedEndDate) return false;\n const date = new Date(this.currentYear, this.currentMonth, day);\n return date >= this.selectedStartDate && date <= this.selectedEndDate;\n }\n\n // Avança para o próximo mês\n nextMonth(): void {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.currentYear++;\n } else {\n this.currentMonth++;\n }\n }\n\n // Retrocede para o mês anterior\n prevMonth(): void {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.currentYear--;\n } else {\n this.currentMonth--;\n }\n }\n\n // Retorna a lista de meses de acordo com o locale\n get months(): string[] {\n return this.locales[this.locale]?.months || this.locales['en'].months;\n }\n\n // Retorna a lista de dias da semana de acordo com o locale\n get daysOfWeek(): string[] {\n return this.locales[this.locale]?.daysOfWeek || this.locales['en'].daysOfWeek;\n }\n\n \n\n}\n","<div class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-wrapper\">\n <input\n id=\"{{ id }}\"\n type=\"text\"\n class=\"custom-input\"\n [attr.placeholder]=\"rangeMode && useTime ? 'dd/MM/yyyy HH:mm - dd/MM/yyyy HH:mm' : \n rangeMode && !useTime ? 'dd/MM/yyyy - dd/MM/yyyy' :(!rangeMode && useTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy')\"\n [value]=\"inputDate\"\n (input)=\"onInputChange($event)\"\n (keypress)=\"handleKeyPress($event)\"\n (click)=\"toggleCalendar()\"\n />\n <lucide-icon name=\"calendar\" class=\"calendar-icon\"></lucide-icon>\n </div>\n\n <div *ngIf=\"invalidDate\" class=\"error-message\">\n {{ locales[locale].invalidDateMessage }}\n <span *ngIf=\"useTime\"> HH:mm.</span>\n </div>\n\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" [ngClass]=\"{ open: isCalendarVisible }\">\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <button (click)=\"prevMonth()\">&#8249;</button>\n <span>{{ months[currentMonth] }} {{ currentYear }}</span>\n <button (click)=\"nextMonth()\">&#8250;</button>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"calendar-day-names\">\n <span *ngFor=\"let day of daysOfWeek\">{{ day }}</span>\n </div>\n\n <div class=\"calendar-days\">\n <span\n *ngFor=\"let day of daysInMonth; let i = index\"\n [class.today]=\"isToday(day)\"\n [class.selected]=\"isSelected(day)\"\n [class.in-range]=\"isInRange(day)\"\n [class.disabled]=\"isDateDisabled(day)\"\n (click)=\"day ? selectDate(day) : null\"\n >\n {{ day ? day : \"\" }}\n </span>\n </div>\n </div>\n\n <!-- Inputs para inserção das horas -->\n <div *ngIf=\"useTime\" class=\"time-inputs\">\n <!-- Campo de hora de início -->\n <div *ngIf=\"rangeMode\" class=\"time-input\">\n <label>{{ locales[locale]?.startTimeLabel || 'Hora de Início' }}</label> <!-- Usando tradução -->\n <input type=\"time\" [(ngModel)]=\"startTime\" (change)=\"onTimeChange('start')\" />\n </div>\n\n <!-- Campo de hora de fim -->\n <div *ngIf=\"rangeMode\" class=\"time-input\">\n <label>{{ locales[locale]?.endTimeLabel || 'Hora de Fim' }}</label> <!-- Usando tradução -->\n <input type=\"time\" [(ngModel)]=\"endTime\" (change)=\"onTimeChange('end')\" />\n </div>\n\n <!-- Campo de hora única (se não for range) -->\n <div *ngIf=\"!rangeMode\" class=\"time-input\">\n <label>{{ locales[locale]?.startTimeLabel || 'Hora' }}</label> <!-- Usando o label de início -->\n <input type=\"time\" [(ngModel)]=\"selectedTime\" (change)=\"onTimeChange('single')\" />\n </div>\n </div>\n\n <!-- Botão de fechar o calendário -->\n <button class=\"close-button\" (click)=\"closeCalendar()\">{{ closeButtonLabel }}</button>\n </div>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from \"@angular/core\";\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\";\n\n@Component({\n selector: \"argenta-card-info\",\n templateUrl: \"./card-info.component.html\",\n styleUrls: [\"./card-info.component.scss\"],\n})\nexport class CardInfoComponent implements OnInit {\n @Input() title: string = \"Title\";\n @Input() titleCard: string = \"Title\";\n @Input() subTitleCard: string = \"sub-title\";\n @Input() cardClass: ButtonClasses = ButtonClasses.Primary;\n @Input() iconCard: string = \"check\";\n clicked: boolean = false;\n @Output() onCardClick: EventEmitter<Event> = new EventEmitter<Event>();\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n get dynamicStyles() {\n return this.calculateDynamicStyles();\n }\n\n onClick(event: Event) {\n this.clicked = true;\n this.onCardClick.emit(event);\n setTimeout(() => {\n this.clicked = false;\n this.cdr.detectChanges();\n }, 80);\n }\n\n private calculateDynamicStyles() {\n let backgroundColor = \"\";\n let textColor = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--text-color\")\n .trim();\n let borderColor = \"\";\n\n const getCSSVariable = (variable: string) =>\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim();\n\n switch (this.cardClass) {\n case ButtonClasses.Primary:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Secondary:\n backgroundColor = getCSSVariable(\"--secondary-color\");\n break;\n case ButtonClasses.Success:\n backgroundColor = getCSSVariable(\"--success-color\");\n break;\n case ButtonClasses.Danger:\n backgroundColor = getCSSVariable(\"--danger-color\");\n break;\n case ButtonClasses.Warning:\n backgroundColor = getCSSVariable(\"--warning-color\");\n break;\n case ButtonClasses.Info:\n backgroundColor = getCSSVariable(\"--info-color\");\n break;\n case ButtonClasses.Light:\n backgroundColor = getCSSVariable(\"--light-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Dark:\n backgroundColor = getCSSVariable(\"--dark-color\");\n break;\n case ButtonClasses.Link:\n backgroundColor = \"transparent\";\n borderColor = getCSSVariable(\"--link-border-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n default:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n }\n\n return {\n \"background-color\": backgroundColor,\n color: textColor,\n border: borderColor ? `1px solid ${borderColor}` : \"none\",\n };\n }\n}\n","<div\n class=\"card order-card\"\n (click)=\"onClick($event)\"\n [ngClass]=\"cardClass\"\n [ngStyle]=\"dynamicStyles\"\n title=\"{{title}}\"\n>\n <div class=\"card-body\">\n <h2 class=\"text-white\">{{titleCard}}</h2>\n <h3 class=\"text-white\">{{subTitleCard}}</h3>\n <lucide-icon class=\"icon-card\" name=\"{{iconCard}}\" [size]=\"100\"></lucide-icon>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'sim-app-card',\n template: `\n <div class=\"card mb-3\">\n <div class=\"card-header\">\n <h3>{{ cardTitle }}</h3>\n </div>\n <div class=\"card-body\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class CardComponent {\n @Input() cardTitle: string = 'Default Title';\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'sim-app-checkbox',\n template: `\n <div\n class=\"form-group form-check\"\n [ngStyle]=\"{\n 'margin-top': marginTop + 'rem',\n 'margin-bottom': marginBottom + 'rem',\n 'margin-left': marginLeft + 'rem',\n 'margin-right': marginRight + 'rem'\n }\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n [id]=\"id\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n />\n <label class=\"form-check-label\" [for]=\"id\">{{ label }}</label>\n </div>\n `,\n styles: [`\n .form-check-input {\n font-family: Arial, sans-serif;\n color: #333;\n font-size: 1rem; /* Define o tamanho padrão da fonte para o input */\n }\n .form-check-label {\n font-family: Arial, sans-serif;\n color: #333;\n font-size: 1rem; /* Define o tamanho padrão da fonte para o label */\n font-weight: bold;\n }\n `],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() id: string = 'defaultCheckbox';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() label: string = 'Check me out';\n\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChangeFn: (value: boolean) => void = () => { };\n private onTouchedFn: () => void = () => { };\n\n onChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.onChangeFn(this.checked);\n this.checkedChange.emit(this.checked);\n }\n\n writeValue(value: boolean): void {\n this.checked = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport hljs from 'highlight.js';\n\n@Component({\n selector: 'app-code-highlight',\n template: `\n <div class=\"code-container\">\n <pre><code #codeElement [innerHTML]=\"highlightedCode\"></code></pre>\n <button (click)=\"copyCode()\">Copy</button>\n </div>\n `,\n styles: [`\n .code-container {\n position: relative;\n }\n pre {\n background-color: #2d2d2d;\n color: #f8f8f2;\n padding: 1rem;\n border-radius: 5px;\n overflow-x: auto;\n }\n button {\n position: absolute;\n top: 10px;\n right: 10px;\n background-color: #f8f8f2;\n border: none;\n padding: 0.5rem 1rem;\n cursor: pointer;\n border-radius: 5px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n transition: background-color 0.3s, transform 0.2s, box-shadow 0.2s;\n }\n button:hover {\n background-color: #e0e0e0;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);\n }\n button:active {\n background-color: #d0d0d0;\n transform: scale(0.98);\n }\n `]\n})\nexport class CodeHighlightComponent implements AfterViewInit {\n @Input() code: string = ''; // Definindo um valor padrão\n @Input() language: string = 'typescript';\n @ViewChild('codeElement') codeElement!: ElementRef; // Usando operador de asserção não nula\n\n highlightedCode: string = '';\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.highlightCode();\n this.cdr.detectChanges();\n });\n }\n\n highlightCode() {\n const code = hljs.highlight(this.language, this.code).value;\n this.highlightedCode = code;\n }\n\n copyCode() {\n const codeElement = this.codeElement.nativeElement;\n navigator.clipboard.writeText(codeElement.innerText).then(() => {\n alert('Code copied to clipboard!');\n });\n }\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[appAutofocus]'\n})\nexport class AutofocusDirective implements AfterViewInit {\n constructor(private elementRef: ElementRef) { }\n\n ngAfterViewInit() {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConfirmationComponent implements OnDestroy {\n @Input() title: string = 'Confirmação';\n @Input() message: string = 'Você tem certeza que deseja continuar?';\n @Input() confirmButtonText: string = 'Sim';\n @Input() cancelButtonText: string = 'Não';\n\n constructor(public activeModal: NgbActiveModal) { }\n\n confirm() {\n this.activeModal.close('confirm');\n }\n\n cancel() {\n this.activeModal.dismiss('cancel');\n }\n\n ngOnDestroy() {\n // Clear any subscriptions if there were any\n }\n}\n","<div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"confirmationModalLabel\">{{ title }}</h5>\n</div>\n<div class=\"modal-body\">\n <p>{{ message }}</p>\n</div>\n<div class=\"modal-footer d-flex justify-content-end\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\">{{ cancelButtonText }}</button>\n <button type=\"button\" class=\"btn btn-primary ms-2\" (click)=\"confirm()\" appAutofocus>{{ confirmButtonText }}</button>\n</div>\n","import { Component, Input } from \"@angular/core\";\nimport * as XLSX from \"xlsx\";\n\nexport interface CsvExcelImporterConfig {\n acceptedFileTypes?: string[]; // Tipos de arquivos permitidos (padrão: .xlsx, .xls, .csv)\n detectHeaders?: boolean; // Detectar automaticamente cabeçalhos (padrão: true)\n customHeaders?: string[]; // Fornecer cabeçalhos personalizados\n delimiter?: string; // Delimitador para arquivos CSV (padrão: \";\")\n onImport: (data: any[]) => void; // Callback para manipular os dados\n}\n\n@Component({\n selector: \"argenta-csv-importer\",\n templateUrl: \"./csv-importer.component.html\",\n styleUrls: [\"./csv-importer.component.scss\"],\n})\nexport class CsvImporterComponent {\n @Input() config: CsvExcelImporterConfig = {\n acceptedFileTypes: [\".xlsx\", \".xls\", \".csv\"],\n detectHeaders: true,\n delimiter: \";\",\n onImport: () => {},\n };\n\n handleFileInput(event: any): void {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n\n // Detecta se o arquivo é CSV\n if (file.name.endsWith(\".csv\")) {\n reader.onload = (e: any) => {\n const csvData = e.target.result;\n const delimiter = this.config.delimiter ?? \";\"; // Usa delimitador configurado ou padrão\n const jsonData = this.parseCSV(csvData, delimiter);\n this.processData(jsonData);\n };\n reader.readAsText(file);\n } else {\n // Processa arquivos Excel (XLSX/XLS)\n reader.onload = (e: any) => {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: \"array\" });\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n\n const jsonData = XLSX.utils.sheet_to_json<any[]>(worksheet, {\n header: 1,\n defval: \"\",\n });\n\n this.processData(jsonData);\n };\n reader.readAsArrayBuffer(file);\n }\n }\n }\n\n private parseCSV(csvData: string, delimiter: string = \";\"): any[][] {\n return csvData\n .split(\"\\n\")\n .map((row) => row.split(delimiter).map((cell) => cell.trim()));\n }\n\n private processData(jsonData: any[][]): void {\n const headers = this.getHeaders(jsonData);\n const dataRows = jsonData.slice(headers ? 1 : 0);\n\n const formattedData = this.formatData(dataRows, headers);\n this.config.onImport(formattedData);\n }\n\n private getHeaders(data: any[][]): string[] | null {\n if (this.config.customHeaders) {\n return this.config.customHeaders;\n }\n if (this.config.detectHeaders && data.length > 0) {\n return data[0].map((header: any, index: number) =>\n this.normalizeHeader(header || `col_${index}`)\n );\n }\n return null; // Nenhum cabeçalho detectado\n }\n\n private formatData(dataRows: any[][], headers: string[] | null): any[] {\n if (!headers) {\n return dataRows; // Retorna dados brutos se não houver cabeçalhos\n }\n\n return dataRows.map((row) => {\n const record: any = {};\n headers.forEach((header, index) => {\n record[header] = row[index] ?? \"\";\n });\n return record;\n });\n }\n\n private normalizeHeader(header: any): string {\n return String(header)\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \"_\")\n .toLowerCase();\n }\n}\n","<div class=\"excel-importer\">\n <input\n type=\"file\"\n (change)=\"handleFileInput($event)\"\n [accept]=\"config.acceptedFileTypes?.join(',')\"\n style=\"display: none\"\n #fileInput\n />\n <button (click)=\"fileInput.click()\">Importar Arquivo</button>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'custom-pagination',\n templateUrl: './custom-pagination.component.html',\n styleUrls: ['./custom-pagination.component.scss']\n})\nexport class CustomPaginationComponent implements OnDestroy {\n @Input() totalItems: number = 0;\n @Input() itemsPerPage: number = 10;\n @Input() currentPage: number = 1;\n @Input() showPageInfo: boolean = true; // Mostrar ou esconder a informação da página\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n\n\n maxSize: number = 5; // Número máximo de botões de página visíveis\n\n private destroy$ = new Subject<void>();\n\n get totalPages(): number {\n return Math.ceil(this.totalItems / this.itemsPerPage);\n }\n\n changePage(page: number) {\n if (page >= 1 && page <= this.totalPages) {\n this.currentPage = page;\n this.pageChange.emit(this.currentPage);\n }\n }\n\n get pages(): number[] {\n const pages: number[] = [];\n const half = Math.floor(this.maxSize / 2);\n let start = Math.max(this.currentPage - half, 1);\n let end = start + this.maxSize - 1;\n\n if (end > this.totalPages) {\n end = this.totalPages;\n start = Math.max(end - this.maxSize + 1, 1);\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n return pages;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<nav *ngIf=\"totalPages > 0\">\n <ul class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage === 1\">\n <a class=\"page-link\" (click)=\"changePage(1)\">&laquo;&laquo;</a>\n </li>\n <li class=\"page-item\" [class.disabled]=\"currentPage === 1\">\n <a class=\"page-link\" (click)=\"changePage(currentPage - 1)\">&laquo;</a>\n </li>\n <li class=\"page-item\" *ngFor=\"let page of pages\" [class.active]=\"page === currentPage\">\n <a class=\"page-link\" (click)=\"changePage(page)\">{{ page }}</a>\n </li>\n <li class=\"page-item\" [class.disabled]=\"currentPage === totalPages\">\n <a class=\"page-link\" (click)=\"changePage(currentPage + 1)\">&raquo;</a>\n </li>\n <li class=\"page-item\" [class.disabled]=\"currentPage === totalPages\">\n <a class=\"page-link\" (click)=\"changePage(totalPages)\">&raquo;&raquo;</a>\n </li>\n </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-custom-switch',\n templateUrl: './custom-switch.component.html',\n styleUrls: ['./custom-switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CustomSwitchComponent {\n @Input() checked: boolean = false;\n @Input() label: string = '';\n @Input() permissions: string[] = [];\n @Output() switchChange = new EventEmitter<boolean>();\n\n constructor(private authService: AuthService) { }\n\n toggleSwitch() {\n this.checked = !this.checked;\n this.switchChange.emit(this.checked);\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n}\n","<ng-container *ngIf=\"hasPermission()\">\n <div class=\"form-check form-switch\">\n <input \n class=\"form-check-input\" \n type=\"checkbox\" \n [checked]=\"checked\" \n (change)=\"toggleSwitch()\" \n id=\"flexSwitchCheckDefault\" \n />\n <label class=\"form-check-label\" for=\"flexSwitchCheckDefault\">\n {{ label }}\n </label>\n </div>\n</ng-container>\n","import { Component, Input } from \"@angular/core\"\nimport * as XLSX from \"xlsx\"\nimport { IExcelExportConfig } from \"./IExcelExportConfig\"\n\n@Component({\n selector: \"argenta-excel-exporter\",\n template: `\n <button (click)=\"exportToExcel()\">{{ config.buttonLabel ?? '' }}</button>\n `,\n styleUrls: [\"./data-excel-exporter.component.scss\"],\n})\nexport class DataExcelExporterComponent {\n @Input() config!: IExcelExportConfig;\n @Input() data: any[] = [];\n\n async exportToExcel(): Promise<void> {\n let sheetConfig: IExcelExportConfig = this.config\n\n if (!this.config || (!this.data.length && !sheetConfig.multipleSheets)) {\n console.warn(\"Nenhuma configuração ou dados fornecidos.\");\n return;\n }\n\n const workbook = XLSX.utils.book_new();\n\n // Verifica se múltiplas planilhas estão configuradas\n if (sheetConfig.multipleSheets) {\n sheetConfig.multipleSheets.forEach((sheetConfig: any) => {\n const worksheet = XLSX.utils.aoa_to_sheet([]);\n\n // Adiciona o título, se houver\n let startRow = 0;\n if (sheetConfig.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[sheetConfig.title]], {\n origin: \"A1\",\n });\n\n // Define larguras personalizadas do título\n if (sheetConfig.titleWidths) {\n worksheet[\"!cols\"] = sheetConfig.titleWidths.map((width: any) => ({\n wch: width,\n }));\n }\n\n // Mescla o título\n if (sheetConfig.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || [];\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: sheetConfig.tableHeaders.length - 1 },\n });\n }\n\n startRow = 1;\n }\n\n // Adiciona cabeçalhos\n if (sheetConfig.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [sheetConfig.tableHeaders], {\n origin: `A${startRow + 1}`,\n });\n }\n\n // Adiciona dados\n if (sheetConfig.data) {\n XLSX.utils.sheet_add_json(worksheet, sheetConfig.data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n });\n }\n\n // Define larguras das colunas\n if (sheetConfig.columnWidths) {\n worksheet[\"!cols\"] = sheetConfig.columnWidths.map((width: any) => ({\n wch: width,\n }));\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(\n workbook,\n worksheet,\n sheetConfig.sheetName\n );\n });\n } else {\n // Caso não haja múltiplas planilhas, processa a planilha única\n const worksheet = XLSX.utils.aoa_to_sheet([]);\n\n // Adiciona título, se houver\n let startRow = 0;\n if (sheetConfig.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[sheetConfig.title]], {\n origin: \"A1\",\n });\n\n // Define larguras do título\n if (sheetConfig.titleWidths) {\n worksheet[\"!cols\"] = sheetConfig.titleWidths.map((width) => ({\n wch: width,\n }));\n }\n\n // Mescla o título\n if (sheetConfig.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || [];\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: sheetConfig.tableHeaders.length - 1 },\n });\n }\n\n startRow = 1;\n }\n\n // Adiciona cabeçalhos\n if (sheetConfig.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [sheetConfig.tableHeaders], {\n origin: `A${startRow + 1}`,\n });\n }\n\n // Adiciona dados\n XLSX.utils.sheet_add_json(worksheet, this.data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n });\n\n // Define larguras das colunas\n if (sheetConfig.columnWidths) {\n worksheet[\"!cols\"] = sheetConfig.columnWidths.map((width) => ({\n wch: width,\n }));\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetConfig.sheetName!);\n }\n\n // Salva o arquivo Excel\n XLSX.writeFile(workbook, sheetConfig.fileName);\n }\n}\n","import { Component, EventEmitter, Output } from \"@angular/core\";\nimport * as XLSX from \"xlsx\";\n\nexport interface ExcelImporterConfig {\n acceptedFileTypes: string[];\n onImport: (data: any[]) => void;\n excludeRows?: number[];\n excludeColumns?: number[];\n hasHeader?: boolean;\n headerRowIndex?: number;\n titleRowIndex?: number;\n}\n\n@Component({\n selector: \"argenta-excel-importer\",\n templateUrl: \"./data-excel-importer.component.html\",\n styleUrls: [\"./data-excel-importer.component.scss\"],\n})\nexport class DataExcelImporterComponent {\n @Output() excelData = new EventEmitter<any[]>(); // Evento para enviar dados processados\n // Configurações padrão\n config: ExcelImporterConfig = {\n acceptedFileTypes: [\".xlsx\", \".xls\", \".csv\"],\n onImport: (data) => this.defaultImportHandler(data),\n excludeRows: [],\n excludeColumns: [],\n hasHeader: true,\n headerRowIndex: 1,\n titleRowIndex: 1,\n };\n\n // Controle do modal e inputs de configuração\n userConfig = { ...this.config };\n excludeRowsInput: string = \"\"; // Para capturar linhas a excluir\n excludeColumnsInput: string = \"\"; // Para capturar colunas a excluir\n showConfigModal = false;\n buttonLabel = \"Importar Dados\";\n\n // Abre o modal de configurações\n openModal(): void {\n this.showConfigModal = true;\n }\n\n // Fecha o modal de configurações\n closeModal(): void {\n this.showConfigModal = false;\n }\n\n // Salva as configurações ajustadas no modal\n saveConfig(): void {\n this.config = {\n ...this.userConfig,\n titleRowIndex: (this.userConfig.titleRowIndex ?? 1) - 1, // Converte para índice zero-based\n headerRowIndex: (this.userConfig.headerRowIndex ?? 2) - 1, // Converte para índice zero-based\n excludeRows: this.excludeRowsInput\n .split(\",\")\n .map((row) => parseInt(row.trim(), 10) - 1), // Converte para zero-based\n excludeColumns: this.excludeColumnsInput\n .split(\",\")\n .map((col) => this.columnLetterToIndex(col.trim())), // Converte letras para índices\n };\n this.closeModal();\n }\n\n // Valida que as linhas informadas sejam pelo menos 1\n validateRowInput(field: \"headerRow\" | \"titleRow\"): void {\n if (field === \"headerRow\" && this.userConfig.headerRowIndex! < 1) {\n this.userConfig.headerRowIndex = 1;\n }\n if (field === \"titleRow\" && this.userConfig.titleRowIndex! < 1) {\n this.userConfig.titleRowIndex = 1;\n }\n }\n\n // Processa o arquivo selecionado\n handleFileInput(event: any): void {\n const file = event.target.files[0];\n if (file) {\n const fileType = file.name.split(\".\").pop()?.toLowerCase();\n\n if (fileType === \"csv\") {\n this.processCSVFile(file); // Processa o CSV de forma isolada\n } else {\n this.processExcelFile(file); // Mantém o fluxo atual para Excel\n }\n event.target.value = \"\"; // Reseta o input para permitir reimportação\n }\n }\n\n private processExcelFile(file: File): void {\n const reader = new FileReader();\n reader.onload = (e: any) => {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: \"array\" });\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n\n const titleRowIndex = this.config.titleRowIndex ?? 0;\n const headerRowIndex = this.config.headerRowIndex ?? titleRowIndex + 1;\n\n if (worksheet[\"!ref\"]) {\n worksheet[\"!ref\"] = this.adjustRange(\n worksheet[\"!ref\"],\n headerRowIndex + 1\n );\n } else {\n console.error(\"Intervalo da planilha ('!ref') não encontrado.\");\n return;\n }\n\n const jsonData = XLSX.utils.sheet_to_json<any[]>(worksheet, {\n header: 1,\n defval: \"\",\n blankrows: false,\n });\n\n this.processData(jsonData);\n };\n reader.readAsArrayBuffer(file); // Lê o Excel como array buffer\n }\n\n private processCSVFile(file: File): void {\n if (this.userConfig.hasHeader) {\n if (this.config?.headerRowIndex !== undefined) {\n this.config.headerRowIndex =\n this.config.headerRowIndex === 0 ? 1 : this.config.headerRowIndex + 1;\n }\n\n const sum =\n (this.config.excludeRows ?? []).reduce((acc, value) => acc + value, 0) +\n 1;\n\n this.config.excludeRows = [sum];\n }\n\n const reader = new FileReader();\n reader.onload = (e: any) => {\n const csvData = e.target.result;\n\n // Converte CSV em JSON usando XLSX\n const workbook = XLSX.read(csvData, { type: \"string\" });\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n\n const jsonData = XLSX.utils.sheet_to_json<any[]>(worksheet, {\n header: 1,\n defval: \"\",\n blankrows: false,\n });\n\n this.processData(jsonData);\n };\n reader.readAsText(file); // Lê o CSV como texto\n }\n\n private processData(jsonData: any[]): void {\n const titleRowIndex = this.config.titleRowIndex ?? 0;\n const headerRowIndex = this.config.headerRowIndex ?? titleRowIndex + 1;\n\n const headers = jsonData[0];\n if (!headers) {\n console.error(\"Cabeçalhos não encontrados. Verifique o headerRowIndex.\");\n return;\n }\n\n const normalizedHeaders = headers.map((header: any, index: any) =>\n this.normalizeHeader(header || `col_${index}`)\n );\n\n const dataRows = jsonData.slice(1); // Remove a linha de cabeçalho\n\n // Filtra as linhas baseando-se no índice informado pelo usuário (1-based)\n const filteredRows = dataRows.filter(\n (_, index) =>\n !this.config.excludeRows?.includes(index + headerRowIndex + 1)\n );\n\n const formattedData = filteredRows.map((row) => {\n const record: any = {};\n normalizedHeaders.forEach((header: any, index: any) => {\n record[header] = row[index] ?? \"\";\n });\n return record;\n });\n\n const finalData = this.filterColumns(formattedData);\n this.config.onImport(finalData); // Chama o callback com os dados processados\n this.excelData.emit(finalData); // Emite os dados processados para o cliente\n }\n\n // Ajusta o intervalo da planilha com base na linha do cabeçalho\n private adjustRange(range: string, startRow: number): string {\n const [start, end] = range.split(\":\");\n const startCol = start.replace(/[0-9]/g, \"\");\n const endCol = end.replace(/[0-9]/g, \"\");\n const endRow = end.replace(/[A-Za-z]/g, \"\");\n return `${startCol}${startRow}:${endCol}${endRow}`;\n }\n\n // Normaliza os cabeçalhos removendo acentos e espaços\n private normalizeHeader(header: string): string {\n return header\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \"_\")\n .toLowerCase();\n }\n\n // Filtra as colunas configuradas para exclusão\n private filterColumns(data: any[]): any[] {\n const { excludeColumns } = this.config;\n\n return data.map((row) => {\n const filteredRow: any = {};\n Object.keys(row).forEach((key, index) => {\n if (!excludeColumns?.includes(index)) {\n filteredRow[key] = row[key];\n }\n });\n return filteredRow;\n });\n }\n\n // Converte letra da coluna para índice (A -> 0, B -> 1, etc.)\n private columnLetterToIndex(letter: string): number {\n let index = 0;\n for (let i = 0; i < letter.length; i++) {\n index = index * 26 + (letter.charCodeAt(i) - \"A\".charCodeAt(0) + 1);\n }\n return index - 1;\n }\n\n // Callback padrão para manipular dados importados\n private defaultImportHandler(data: any[]): void {}\n\n transformToUppercase(): void {\n this.excludeColumnsInput = this.excludeColumnsInput.toUpperCase();\n }\n}\n","<div class=\"excel-importer\">\n <input\n type=\"file\"\n (change)=\"handleFileInput($event)\"\n [accept]=\"config.acceptedFileTypes?.join(',')\"\n style=\"display: none\"\n #fileInput\n />\n <button (click)=\"fileInput.click()\">{{ buttonLabel }}</button>\n <lucide-icon\n name=\"settings\"\n [size]=\"24\"\n [strokeWidth]=\"2.25\"\n class=\"settings-icon\"\n (click)=\"openModal()\"\n ></lucide-icon>\n</div>\n\n<div class=\"modal-container\" *ngIf=\"showConfigModal\">\n <div class=\"modal-content\">\n <h4 class=\"titulo\">Configuração de Importação</h4>\n <form (ngSubmit)=\"saveConfig()\">\n <div class=\"form-group\">\n <label for=\"acceptedFileTypes\">Tipos de Arquivo Permitidos</label>\n <input\n id=\"acceptedFileTypes\"\n type=\"text\"\n [(ngModel)]=\"userConfig.acceptedFileTypes\"\n name=\"acceptedFileTypes\"\n placeholder=\".xlsx, .xls\"\n />\n </div>\n <div class=\"form-group\" style=\"display: none\">\n <label for=\"titleRow\">Linha do Título (se aplicável)</label>\n <input\n id=\"titleRow\"\n type=\"number\"\n [(ngModel)]=\"userConfig.titleRowIndex\"\n name=\"titleRow\"\n placeholder=\"Ex: 1\"\n (change)=\"validateRowInput('titleRow')\"\n />\n </div>\n <div class=\"form-group checkbox-group\">\n <div class=\"row\">\n <div class=\"col-md-8\">\n <label for=\"hasHeader\">A planilha contém cabeçalho?</label>\n </div>\n <div class=\"col-md-4\">\n <input\n id=\"hasHeader\"\n class=\"input-checkbox\"\n type=\"checkbox\"\n [(ngModel)]=\"userConfig.hasHeader\"\n name=\"hasHeader\"\n />\n </div>\n </div>\n </div>\n\n <!-- Exibe a linha do cabeçalho apenas se o checkbox estiver marcado -->\n <div class=\"form-group\" *ngIf=\"userConfig.hasHeader\">\n <label for=\"headerRow\">Linha do Cabeçalho</label>\n <input\n id=\"headerRow\"\n type=\"number\"\n [(ngModel)]=\"userConfig.headerRowIndex\"\n name=\"headerRow\"\n placeholder=\"Ex: 2\"\n (change)=\"validateRowInput('headerRow')\"\n />\n </div>\n\n <div class=\"form-group\">\n <label for=\"excludeRows\">Linhas a Excluir</label>\n <input\n id=\"excludeRows\"\n type=\"text\"\n [(ngModel)]=\"excludeRowsInput\"\n name=\"excludeRows\"\n placeholder=\"Ex: 1, 3\"\n />\n </div>\n <div class=\"form-group\">\n <label for=\"excludeColumns\">Colunas a Excluir</label>\n <input\n id=\"excludeColumns\"\n type=\"text\"\n [(ngModel)]=\"excludeColumnsInput\"\n name=\"excludeColumns\"\n placeholder=\"Ex: A, C\"\n (input)=\"transformToUppercase()\"\n />\n </div>\n <button type=\"submit\">Salvar Configurações</button>\n <button type=\"button\" (click)=\"closeModal()\">Fechar</button>\n </form>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\"\nimport { Subject } from \"rxjs\"\nimport { debounceTime } from \"rxjs/operators\"\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\"\n\ninterface ListItem {\n id: string;\n descricao: string;\n}\n\n@Component({\n selector: \"argenta-drag-drop-list\",\n templateUrl: \"./drag-drop-list.component.html\",\n styleUrls: [\"./drag-drop-list.component.scss\"],\n})\nexport class DragDropListComponent {\n @Input() nonSelectedTitle!: string\n @Input() nonSelectedList: ListItem[] = [];\n @Input() nonSelectedButtonLabel?: string\n @Output() nonSelectedButtonClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() nonSelectedInputChanged = new EventEmitter<string>();\n\n @Input() selectedTitle!: string\n @Input() selectedList: ListItem[] = [];\n @Input() selectedButtonLabel?: string\n @Output() selectedButtonClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() selectedInputChanged = new EventEmitter<string>();\n\n private nonSelectedListInputSubject = new Subject<string>();\n private selectedListInputSubject = new Subject<string>();\n\n\n ButtonClasses = ButtonClasses; // Adicione a enumeração ao componente\n draggedItem: ListItem | null = null\n\n constructor() {\n this.nonSelectedListInputSubject.pipe(debounceTime(2000)).subscribe((value) => {\n this.nonSelectedInputChanged.emit(value);\n });\n\n this.selectedListInputSubject.pipe(debounceTime(2000)).subscribe((value) => {\n this.selectedInputChanged.emit(value);\n });\n }\n\n onDragStart(item: ListItem) {\n this.draggedItem = item;\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n\n onDrop(list: ListItem[], event: DragEvent) {\n event.preventDefault();\n if (this.draggedItem) {\n const index = list.indexOf(this.draggedItem);\n if (index === -1) {\n this.removeItem(this.draggedItem);\n list.push(this.draggedItem);\n }\n this.draggedItem = null;\n }\n }\n\n private removeItem(item: any) {\n [this.nonSelectedList, this.selectedList].forEach((list) => {\n const index = list.indexOf(item);\n if (index !== -1) {\n list.splice(index, 1);\n }\n });\n }\n\n nonSelectedListInputChange(event: any) {\n this.nonSelectedListInputSubject.next(event.target.value);\n }\n\n selectedListInputChange(event: any) {\n this.selectedListInputSubject.next(event.target.value);\n }\n\n selButtonClick() {\n this.selectedButtonClick!.emit()\n }\n\n nonSelButtonClick() {\n this.nonSelectedButtonClick!.emit()\n }\n}\n","<!-- Contêiner externo para dar a aparência de grupo -->\n<div class=\"group-container\">\n <div class=\"container\">\n <!-- Lista 1 com input -->\n <div\n class=\"list\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(nonSelectedList, $event)\"\n >\n <div class=\"row\">\n <h6 class=\"col-md-8\">{{ nonSelectedTitle }}</h6>\n <div *ngIf=\"nonSelectedButtonLabel\" class=\"col-md-4 align-end\">\n <argenta-custom-button\n label=\"{{ nonSelectedButtonLabel }}\"\n (onButtonClick)=\"nonSelButtonClick()\"\n class=\"align-end\"\n [btnClass]=\"ButtonClasses.Primary\"\n >\n </argenta-custom-button>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"list-input\"\n (input)=\"nonSelectedListInputChange($event)\"\n />\n <div\n *ngFor=\"let item of nonSelectedList\"\n class=\"item-card\"\n draggable=\"true\"\n (dragstart)=\"onDragStart(item)\"\n >\n {{ item.descricao }}\n </div>\n </div>\n\n <!-- Lista 2 com input -->\n <div\n class=\"list\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(selectedList, $event)\"\n >\n <div class=\"row\">\n <h6 class=\"col-md-8\">{{ selectedTitle }}</h6>\n <div *ngIf=\"selectedButtonLabel\" class=\"col-md-4 align-end\">\n <argenta-custom-button\n label=\"{{ selectedButtonLabel }}\"\n (onButtonClick)=\"selButtonClick()\"\n class=\"align-end\"\n [btnClass]=\"ButtonClasses.Primary\"\n >\n </argenta-custom-button>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"list-input\"\n (input)=\"selectedListInputChange($event)\"\n />\n <div\n *ngFor=\"let item of selectedList\"\n class=\"item-card\"\n draggable=\"true\"\n (dragstart)=\"onDragStart(item)\"\n >\n {{ item.descricao }}\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input } from \"@angular/core\";\n\n@Component({\n selector: \"argenta-dynamic-modal\",\n templateUrl: \"./dynamic-modal.component.html\",\n styleUrls: [\"./dynamic-modal.component.scss\"],\n})\nexport class DynamicModalComponent {\n @Input() modalTitle: string = \"Modal Title\";\n @Input() modalSizeClass: string = \"\";\n @Input() modalId: string = \"dynamicModal\"; // ID único para cada modal\n\n openModal() {\n const modalElement = document.getElementById(this.modalId);\n if (modalElement) {\n (modalElement as any).classList.add(\"show\");\n modalElement.setAttribute(\"aria-hidden\", \"false\");\n modalElement.style.display = \"block\";\n document.body.classList.add(\"modal-open\");\n\n // Adiciona o backdrop manualmente se não existir\n if (\n !document.querySelector(\n `.modal-backdrop[data-modal-id=\"${this.modalId}\"]`\n )\n ) {\n const backdrop = document.createElement(\"div\");\n backdrop.className = \"modal-backdrop fade show\";\n backdrop.setAttribute(\"data-modal-id\", this.modalId);\n document.body.appendChild(backdrop);\n }\n }\n }\n\n closeModal() {\n const modalElement = document.getElementById(this.modalId);\n if (modalElement) {\n (modalElement as any).classList.remove(\"show\");\n modalElement.setAttribute(\"aria-hidden\", \"true\");\n modalElement.style.display = \"none\";\n document.body.classList.remove(\"modal-open\");\n document\n .querySelector(`.modal-backdrop[data-modal-id=\"${this.modalId}\"]`)\n ?.remove();\n }\n }\n}\n","<div\n class=\"modal fade\"\n [id]=\"modalId\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"modalId + 'Label'\"\n aria-hidden=\"true\"\n>\n <div class=\"modal-dialog\" [ngClass]=\"modalSizeClass\">\n <div class=\"modal-content\">\n <div class=\"modal-header custom-header\">\n <h5 class=\"modal-title custom-modal-title\" [id]=\"modalId + 'Label'\">\n {{ modalTitle }}\n </h5>\n <button\n type=\"button\"\n class=\"custom-close-button\"\n (click)=\"closeModal()\"\n aria-label=\"Close\"\n >\n &times;\n </button>\n </div>\n <div class=\"modal-body custom-body\">\n <ng-content select=\"[modal-body]\"></ng-content>\n </div>\n <div class=\"modal-footer custom-footer\">\n <ng-content select=\"[modal-footer]\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, TemplateRef, OnInit } from \"@angular/core\";\nimport { DynamicTableConfig } from \"./dynamic-table-config\";\n\n@Component({\n selector: \"argenta-dynamic-table\",\n templateUrl: \"./dynamic-table.component.html\",\n styleUrls: [\"./dynamic-table.component.scss\"],\n})\nexport class DynamicTableComponent implements OnInit {\n @Input() config!: DynamicTableConfig;\n @Input() itemsPerPageOptions = [10, 20, 50];\n @Input() showPageInfo = true;\n\n currentPage = 1;\n itemsPerPage = 10;\n\n constructor() {}\n\n get totalItems() {\n return this.config.totalItems ?? this.config.data.length;\n }\n\n get paginatedData() {\n if (!this.config.pagination) {\n // Retorna todos os dados se a paginação estiver desativada\n return this.config.data;\n }\n\n const itemsPerPage = this.config.itemsPerPage || this.itemsPerPage;\n const startIndex = (this.currentPage - 1) * itemsPerPage;\n return this.config.data.slice(startIndex, startIndex + itemsPerPage);\n }\n\n ngOnInit(): void {\n if (!this.config || !this.config.columns || !this.config.data) {\n throw new Error(\"DynamicTableComponent: Configuração inválida.\");\n }\n\n // Define valores padrão se não especificados\n this.config.showHeader = this.config.showHeader ?? true; // Exibe o cabeçalho por padrão\n this.config.pagination = this.config.pagination ?? true; // Ativa paginação por padrão\n this.itemsPerPage = this.config.itemsPerPage || 10;\n }\n\n onPageChange(newPage: number) {\n this.currentPage = newPage;\n }\n\n onItemsPerPageChange(event: Event) {\n const target = event.target as HTMLSelectElement;\n this.itemsPerPage = +target.value;\n this.currentPage = 1; // Reinicia a paginação ao alterar os itens por página\n }\n\n // Getter para garantir que totalItems nunca seja undefined\n get safeTotalItems(): number {\n return this.totalItems || 0;\n }\n}\n","<table class=\"table\" [ngClass]=\"{ nested: config.isNested }\">\n <thead *ngIf=\"config.showHeader\">\n <tr>\n <th *ngFor=\"let column of config.columns\">{{ column.header }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of paginatedData\">\n <td *ngFor=\"let column of config.columns\">\n <ng-container [ngSwitch]=\"column.type\">\n <span *ngSwitchCase=\"'text'\">{{ row[column.key] }}</span>\n <ng-container *ngSwitchCase=\"'template'\">\n <ng-container\n *ngTemplateOutlet=\"\n column.template || null;\n context: { $implicit: row }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </tbody>\n</table>\n\n<div\n class=\"text-center pagination-controls\"\n [ngClass]=\"{ nested: config.isNested }\"\n *ngIf=\"config.pagination\"\n>\n <custom-pagination\n [totalItems]=\"safeTotalItems\"\n [itemsPerPage]=\"itemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\"\n >\n </custom-pagination>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileUploadComponent implements OnDestroy {\n @Input() accept: string = '.pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .jpg, .jpeg, .png, .gif, .bmp, .svg, .webp, .zip, .rar, .csv';\n @Input() multiple: boolean = false;\n @Input() maxFileSize: number = 2 * 1024 * 1024; // 2MB\n @Input() labelText: string = 'Select Files to Upload'; // Dynamic label text\n @Input() permissions: string[] | undefined; // Array of permissions\n\n @Output() fileUploaded = new EventEmitter<File[]>(); // Emits selected files\n private destroy$ = new Subject<void>();\n\n constructor(private authService: AuthService) { }\n\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n if (input.files) {\n const files = Array.from(input.files);\n if (this.validateFiles(files)) {\n this.fileUploaded.emit(files); // Emit files for external handling\n } else {\n console.warn('One or more files exceed the maximum allowed size of 2MB.');\n }\n }\n }\n\n private validateFiles(files: File[]): boolean {\n return files.every(file => file.size <= this.maxFileSize);\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"file-upload-container\">\n <label for=\"fileUpload\" class=\"form-label\">{{ labelText }}</label> \n <input\n type=\"file\"\n id=\"fileUpload\"\n class=\"form-control\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileChange($event)\" \n />\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { AuthService } from '../../service/auth-service.service'\n\n@Component({\n selector: 'argenta-image-upload',\n templateUrl: './image-upload.component.html',\n styleUrls: ['./image-upload.component.scss']\n})\nexport class ImageUploadComponent {\n @Input() imagePreview: string | ArrayBuffer | null = null;\n @Input() label!: string\n @Input() permissions: string[] | undefined; // Array of permissions\n @Output() base64Output = new EventEmitter<string>();\n \n constructor(private authService: AuthService) { }\n\n onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n \n if (input.files && input.files.length > 0) {\n const file = input.files[0];\n const reader = new FileReader();\n\n reader.onload = () => {\n this.imagePreview = reader.result;\n this.base64Output.emit(reader.result as string);\n };\n\n reader.readAsDataURL(file);\n }\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"image-uploader\">\n <div *ngIf=\"imagePreview\">\n <img [src]=\"imagePreview\" />\n </div>\n <label for=\"fileInput\" class=\"custom-file-label\">\n {{ label }} <i-lucide name=\"import\" [size]=\"20\" color=\"black\"></i-lucide>\n </label>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n accept=\"image/*\"\n hidden\n />\n</div>\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cepMask]',\n})\nexport class CepMaskDirective {\n @Input('cepMask') enabled: boolean = false; // Define como opcional e padrão desabilitado\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('input', ['$event'])\n onInputChange(event: any) {\n if (!this.enabled) return; // Não aplica a máscara se não estiver habilitada\n\n // Obtém o valor atual e remove todos os caracteres não numéricos\n let initialValue = this.el.nativeElement.value.replace(/\\D/g, '');\n\n // Limita o número de caracteres a 8 para CEP\n if (initialValue.length > 8) {\n initialValue = initialValue.slice(0, 8);\n }\n\n // Aplica a máscara de CEP\n const formattedValue = this.formatCep(initialValue);\n\n // Atualiza o valor do input se necessário\n if (formattedValue !== this.el.nativeElement.value) {\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n\n // Dispara um evento de input para atualizar o modelo\n if (event.target.dispatchEvent) {\n const newEvent = new Event('input', { bubbles: true });\n event.target.dispatchEvent(newEvent);\n }\n }\n }\n\n formatCep(value: string): string {\n // Aplica a formatação de CEP: 12345-678\n return value.replace(/(\\d{5})(\\d)/, '$1-$2');\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cnpjMask]',\n})\nexport class CnpjMaskDirective {\n @Input('cnpjMask') enabled: boolean = false; // Define como opcional e padrão desabilitado\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('input', ['$event'])\n onInputChange(event: any) {\n if (!this.enabled) return; // Não aplica a máscara se não estiver habilitada\n\n // Obtém o valor atual e remove todos os caracteres não numéricos\n let initialValue = this.el.nativeElement.value.replace(/\\D/g, '');\n\n // Limita o número de caracteres a 14 para CNPJ\n if (initialValue.length > 14) {\n initialValue = initialValue.slice(0, 14);\n }\n\n // Aplica a máscara de CNPJ\n const formattedValue = this.formatCnpj(initialValue);\n\n // Atualiza o valor do input se necessário\n if (formattedValue !== this.el.nativeElement.value) {\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n\n // Dispara um evento de input para atualizar o modelo\n if (event.target.dispatchEvent) {\n const newEvent = new Event('input', { bubbles: true });\n event.target.dispatchEvent(newEvent);\n }\n }\n }\n\n formatCnpj(value: string): string {\n // Aplica a formatação de CNPJ: 12.345.678/0001-00\n return value\n .replace(/(\\d{2})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d{4})(\\d)/, '$1/$2-$3')\n .replace(/(\\d{4})(\\d{2})$/, '$1-$2');\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cpfMask]',\n})\nexport class CpfMaskDirective {\n @Input('cpfMask') enabled: boolean = false; // Define como opcional e padrão desabilitado\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('input', ['$event'])\n onInputChange(event: any) {\n if (!this.enabled) return;\n\n // Obtém o valor atual e remove todos os caracteres não numéricos\n let initialValue = this.el.nativeElement.value.replace(/\\D/g, '');\n\n // Limita o número de caracteres a 11 para CPF\n if (initialValue.length > 11) {\n initialValue = initialValue.slice(0, 11);\n }\n\n // Aplica a máscara de CPF\n const formattedValue = this.formatCpf(initialValue);\n\n // Atualiza o valor do input se necessário\n if (formattedValue !== this.el.nativeElement.value) {\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n\n // Dispara um evento de input para atualizar o modelo\n if (event.target.dispatchEvent) {\n const newEvent = new Event('input', { bubbles: true });\n event.target.dispatchEvent(newEvent);\n }\n }\n }\n\n formatCpf(value: string): string {\n // Aplica a formatação de CPF: 123.456.789-00\n return value\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d{1,2})$/, '$1-$2');\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n} from \"@angular/core\"\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\"\nimport { Subscription } from \"rxjs\"\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\"\nimport { AuthService } from \"../../service/auth-service.service\"\n\n@Component({\n selector: \"argenta-custom-input\",\n styleUrls: [\"./input.component.scss\"],\n templateUrl: \"./input.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputComponent implements ControlValueAccessor, OnDestroy {\n @Input() label: string = \"Default Label\";\n @Input() placeholder: string = \"\";\n @Input() id: string = \"inputId\";\n @Input() type: string = \"text\";\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() maxlength: number | null = null;\n @Input() minlength: number | null = null;\n @Input() required: boolean = false;\n @Input() pattern: string | null = null;\n @Input() autofocus: boolean = false;\n @Input() useCpfMask: boolean = false;\n @Input() useCnpjMask: boolean = false;\n @Input() useCepMask: boolean = false;\n @Input() onlyNumbers: boolean = false;\n @Input() onlyNumbersAndDecimals: boolean = false;\n @Input() validateInput: boolean = false;\n @Input() labelFontWeight: number = 400;\n @Input() permissions: string[] | undefined;\n @Input() useMoneyMask: boolean = false; // Para ativar/desativar a máscara de moeda\n @Input() currencyCode: string = \"BRL\"; // Código da moeda\n @Input() displayCurrencySymbol: boolean = true; // Exibir ou não o símbolo da moeda\n @Input() prependText: string = \"\";\n @Input() buttonText: string | null = null;\n @Input() useLatitudeMask: boolean = false;\n @Input() useLongitudeMask: boolean = false;\n\n @Output() inputEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() changeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() focusEvent: EventEmitter<FocusEvent> =\n new EventEmitter<FocusEvent>();\n @Output() blurEvent: EventEmitter<FocusEvent> =\n new EventEmitter<FocusEvent>();\n @Output() keyupEvent: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n @Output() keydownEvent: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n @Output() keypressEvent: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n @Output() buttonClick: EventEmitter<void> = new EventEmitter<void>();\n\n private onChangeCallback: (_: any) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n ButtonClasses = ButtonClasses;\n\n value: string = \"\";\n showErrorModal: boolean = false;\n errorMessage: string = \"\";\n\n private subscriptions: Subscription[] = [];\n\n constructor(private authService: AuthService) {}\n\n getInputType(): string {\n return (this.onlyNumbers || this.onlyNumbersAndDecimals) ? \"tel\" : this.type;\n }\n\n onInput(event: Event) {\n const inputElement = event.target as HTMLInputElement;\n let inputValue = inputElement.value;\n\n if (this.useLatitudeMask || this.useLongitudeMask) {\n inputValue = inputValue.replace(/[^0-9.,-]/g, \"\");\n inputValue = inputValue.replace(/,/g, \".\");\n\n const parts = inputValue.split(\".\");\n } else if (\n this.onlyNumbers &&\n !(\n this.useCpfMask ||\n this.useCnpjMask ||\n this.useCepMask ||\n this.useMoneyMask\n )\n ) {\n inputValue = inputValue.replace(/\\D/g, \"\"); // Remove todos os não numéricos\n }\n\n // Validação imediata para CPF, CNPJ ou CEP\n const numericValue = inputValue.replace(/\\D/g, \"\"); // Remove todos os caracteres não numéricos\n if (this.validateInput) {\n if (\n this.useCpfMask &&\n numericValue.length === 11 &&\n !this.validateCpf(numericValue)\n ) {\n this.clearAndShowValidationError(\n \"CPF inválido. Por favor, insira um CPF correto.\"\n );\n } else if (\n this.useCnpjMask &&\n numericValue.length === 14 &&\n !this.validateCnpj(numericValue)\n ) {\n this.clearAndShowValidationError(\n \"CNPJ inválido. Por favor, insira um CNPJ correto.\"\n );\n } else if (\n this.useCepMask &&\n numericValue.length === 8 &&\n !this.validateCep(numericValue)\n ) {\n this.clearAndShowValidationError(\n \"CEP inválido. Por favor, insira um CEP correto.\"\n );\n }\n }\n\n // Máscara de moeda\n if (this.useMoneyMask) {\n const numericValue = inputValue.replace(/\\D/g, \"\"); // Remove todos os não numéricos\n const formattedValue = this.formatMoney(numericValue); // Formata como dinheiro ou número decimal\n inputElement.value = formattedValue;\n this.value = formattedValue;\n } else {\n this.value = inputValue;\n }\n\n // Atualiza o valor e emite o evento de mudança\n this.onChangeCallback(this.value);\n this.inputEvent.emit(event);\n }\n\n private formatMoney(value: string): string {\n if (!value) return \"\"; // Se o valor estiver vazio, retorna uma string vazia\n\n const numericValue = parseFloat(value) / 100;\n\n // Verifica se deve exibir o símbolo da moeda ou não\n if (this.displayCurrencySymbol) {\n // Formata como moeda\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: this.currencyCode,\n }).format(numericValue);\n } else {\n // Formata como número decimal, sem o símbolo da moeda\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"decimal\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numericValue);\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.useLatitudeMask || this.useLongitudeMask) {\n const allowedKeys = [\n \"Backspace\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Delete\",\n \"Enter\",\n \"-\",\n \".\",\n \",\",\n ];\n if (!allowedKeys.includes(event.key) && !/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n } else if (\n this.onlyNumbers &&\n !/^\\d$/.test(event.key) &&\n event.key !== \"Backspace\" &&\n event.key !== \"ArrowLeft\" &&\n event.key !== \"ArrowRight\"\n ) {\n event.preventDefault(); // Impede a entrada de caracteres não numéricos\n }\n const input = event.target as HTMLInputElement;\n if (\n this.onlyNumbersAndDecimals &&\n !/^\\d$/.test(event.key) &&\n (event.key !== \".\" || input.value.includes(\".\")) &&\n event.key !== \"Backspace\" &&\n event.key !== \"Delete\" &&\n event.key !== \"Tab\" && // Adiciona suporte ao Tab\n event.key !== \"ArrowLeft\" &&\n event.key !== \"ArrowRight\"\n ) {\n event.preventDefault();\n }\n }\n\n onChange(event: Event) {\n const numericValue = this.value.replace(/\\D/g, \"\"); // Remove todos os caracteres não numéricos\n // Validação também ocorre no blur para casos onde o input não está completo\n if (this.validateInput) {\n if (this.useCpfMask && !this.validateCpf(numericValue)) {\n this.clearAndShowValidationError(\n \"CPF inválido. Por favor, insira um CPF correto.\"\n );\n } else if (this.useCnpjMask && !this.validateCnpj(numericValue)) {\n this.clearAndShowValidationError(\n \"CNPJ inválido. Por favor, insira um CNPJ correto.\"\n );\n } else if (this.useCepMask && !this.validateCep(numericValue)) {\n this.clearAndShowValidationError(\n \"CEP inválido. Por favor, insira um CEP correto.\"\n );\n }\n }\n this.changeEvent.emit(event);\n }\n\n validateCpf(cpf: string): boolean {\n if (cpf.length !== 11 || /^(\\d)\\1+$/.test(cpf)) return false;\n let sum = 0,\n remainder;\n for (let i = 1; i <= 9; i++)\n sum += parseInt(cpf.substring(i - 1, i)) * (11 - i);\n remainder = (sum * 10) % 11;\n if (remainder === 10 || remainder === 11) remainder = 0;\n if (remainder !== parseInt(cpf.substring(9, 10))) return false;\n sum = 0;\n for (let i = 1; i <= 10; i++)\n sum += parseInt(cpf.substring(i - 1, i)) * (12 - i);\n remainder = (sum * 10) % 11;\n if (remainder === 10 || remainder === 11) remainder = 0;\n return remainder === parseInt(cpf.substring(10, 11));\n }\n\n validateCnpj(cnpj: string): boolean {\n if (cnpj.length !== 14) return false;\n let length = cnpj.length - 2;\n let numbers = cnpj.substring(0, length);\n let digits = cnpj.substring(length);\n let sum = 0,\n pos = length - 7;\n for (let i = length; i >= 1; i--) {\n sum += parseInt(numbers.charAt(length - i)) * pos--;\n if (pos < 2) pos = 9;\n }\n let result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== parseInt(digits.charAt(0))) return false;\n length = length + 1;\n numbers = cnpj.substring(0, length);\n sum = 0;\n pos = length - 7;\n for (let i = length; i >= 1; i--) {\n sum += parseInt(numbers.charAt(length - i)) * pos--;\n if (pos < 2) pos = 9;\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n return result === parseInt(digits.charAt(1));\n }\n\n validateCep(cep: string): boolean {\n return /^\\d{8}$/.test(cep); // Valida apenas números, sem considerar a máscara\n }\n\n clearAndShowValidationError(message: string) {\n this.value = \"\"; // Limpa o valor do ngModel\n this.onChangeCallback(this.value); // Atualiza o ngModel com o valor limpo\n this.errorMessage = message;\n this.showErrorModal = true;\n }\n\n closeModal() {\n this.showErrorModal = false;\n this.errorMessage = \"\";\n }\n\n onFocus(event: FocusEvent) {\n this.focusEvent.emit(event);\n }\n\n onBlur(event: FocusEvent) {\n this.onTouchedCallback();\n this.blurEvent.emit(event);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n onButtonClick() {\n this.buttonClick.emit();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-group\">\n <div *ngIf=\"prependText\" class=\"input-group-prepend\">\n <span\n class=\"input-group-text custom-input-group-text\"\n id=\"basic-addon3\"\n >{{ prependText }}</span\n >\n </div>\n <input\n [type]=\"getInputType()\"\n class=\"form-control custom-input\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"keyupEvent.emit($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keypress)=\"keypressEvent.emit($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [attr.pattern]=\"pattern\"\n [autofocus]=\"autofocus\"\n [cpfMask]=\"useCpfMask\"\n [cnpjMask]=\"useCnpjMask\"\n [cepMask]=\"useCepMask\"\n />\n\n <div class=\"input-group-append\" *ngIf=\"buttonText\">\n <button type=\"button\" class=\"btn-group-append\" (click)=\"onButtonClick()\">\n {{ buttonText }}\n </button>\n </div>\n\n <!-- Modal para exibir mensagens de erro -->\n <div class=\"modal-overlay\" *ngIf=\"showErrorModal\">\n <div class=\"modal-content\">\n <span class=\"close\" (click)=\"closeModal()\">&times;</span>\n <p>{{ errorMessage }}</p>\n <button class=\"btn-ok\" (click)=\"closeModal()\">OK</button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\n\n@Component({\n selector: 'argenta-json-editor',\n templateUrl: './json-editor.component.html',\n styleUrls: ['./json-editor.component.scss'],\n})\nexport class JsonEditorComponent implements OnInit {\n @Input() data: any\n @Input() readonly: boolean = false;\n @Output() jsonChange = new EventEmitter<any>();\n @Output() isJsonValid = new EventEmitter<boolean>()\n\n jsonText = '';\n isValidJson = true;\n copyFeedback = '';\n showExample = false;\n exampleJson = {\n nome: \"João\",\n idade: 30,\n ativo: true,\n notas: [9.5, 8.3, 7.8],\n endereco: {\n cidade: \"São Paulo\",\n estado: \"SP\"\n },\n email: null\n };\n\n get formattedExample(): string {\n return JSON.stringify(this.exampleJson, null, 2)\n }\n\n toggleExample(): void {\n this.showExample = !this.showExample\n }\n\n\n ngOnInit(): void {\n this.jsonText = this.formatJson(this.data)\n this.isValidJson = this.checkValidJson(this.jsonText)\n }\n\n onTextChange(text: string): void {\n this.jsonText = text\n this.isValidJson = this.checkValidJson(text)\n\n if (this.isValidJson) {\n try {\n const parsed = JSON.parse(text)\n this.jsonChange.emit(parsed)\n } catch {\n this.isValidJson = false\n }\n }\n }\n\n format(): void {\n try {\n const fixed = this.tryFixInvalidJson(this.jsonText)\n const parsed = JSON.parse(fixed)\n this.jsonText = JSON.stringify(parsed, null, 2)\n this.isValidJson = true\n this.jsonChange.emit(parsed)\n } catch {\n this.isValidJson = false\n }\n this.isJsonValid.emit(this.isValidJson)\n }\n\n\n copyToClipboard(): void {\n navigator.clipboard.writeText(this.jsonText).then(() => {\n this.copyFeedback = 'Copiado!'\n setTimeout(() => this.copyFeedback = '', 2000)\n })\n }\n\n private checkValidJson(text: string): boolean {\n try {\n JSON.parse(text)\n return true\n } catch {\n return false\n }\n }\n\n private formatJson(data: any): string {\n try {\n return JSON.stringify(data, null, 2)\n } catch {\n return ''\n }\n }\n\n private tryFixInvalidJson(text: string): string {\n let fixed = text;\n \n // 1) Remove comentários de linha e de bloco\n fixed = fixed.replace(/\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//g, '');\n \n // 2) Aspas simples → duplas em strings\n fixed = fixed.replace(/'([^']*)'/g, '\"$1\"');\n \n // 3) Remove trailing commas antes de ] ou }\n fixed = fixed.replace(/,\\s*(?=[}\\]])/g, '');\n \n // 4) Chaves não-aspadas → entre aspas\n fixed = fixed.replace(/([{,]\\s*)([A-Za-z0-9_\\$]+)\\s*:/g, '$1\"$2\":');\n \n // 5) Valores string soltos → entre aspas duplas\n fixed = fixed.replace(\n /:\\s*([^\\s\"'`\\{\\}\\[\\],][^,\\}\\]]*)(?=[,\\}\\]])/g,\n (_match, p1: string) => {\n const v = p1.trim();\n // se for número ou literal JSON, deixa como está\n if (/^[-+]?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$/.test(v) ||\n /^(true|false|null)$/.test(v.toLowerCase())) {\n return `: ${v}`;\n }\n // escapa eventuais aspas internas e envolve em duplas\n const escaped = v.replace(/\"/g, '\\\\\"');\n return `: \"${escaped}\"`;\n }\n );\n \n return fixed;\n }\n \n \n\n\n}\n","<div class=\"json-editor-container\">\n <div\n class=\"status-indicator\"\n *ngIf=\"!readonly\"\n [ngClass]=\"{ valid: isValidJson, invalid: !isValidJson }\"\n >\n {{ isValidJson ? \"✅\" : \"❌\" }}\n </div>\n\n <div class=\"actions\" *ngIf=\"!readonly\">\n <button (click)=\"format()\">\n <i-lucide name=\"file-json\" [size]=\"20\" color=\"white\"></i-lucide>\n </button>\n <button (click)=\"copyToClipboard()\">\n <i-lucide name=\"copy\" [size]=\"20\" color=\"white\"></i-lucide>\n </button>\n <button class=\"info\" (click)=\"toggleExample()\">\n <i-lucide name=\"info\" [size]=\"20\" color=\"white\"></i-lucide>\n </button>\n\n <span class=\"feedback\" *ngIf=\"copyFeedback\">{{ copyFeedback }}</span>\n </div>\n\n <div class=\"example-box\" *ngIf=\"showExample\">\n <pre>{{ formattedExample }}</pre>\n </div>\n\n <textarea\n [readonly]=\"readonly\"\n [ngClass]=\"{ invalid: !isValidJson }\"\n [(ngModel)]=\"jsonText\"\n (ngModelChange)=\"onTextChange($event)\"\n placeholder=\"Digite ou cole seu JSON aqui...\"\n ></textarea>\n</div>\n","import { Component, Input } from '@angular/core'\n\n@Component({\n selector: 'argenta-json-viewer',\n templateUrl: './json-viewer.component.html',\n styleUrls: ['./json-viewer.component.scss']\n})\nexport class JsonViewerComponent {\n @Input() jsonData: any;\n @Input() isRoot: boolean = true;\n @Input() copyLabel!: string\n @Input() showLabel!: string\n @Input() hideLabel!: string\n\n allExpanded: boolean = true;\n expandedMap: Map<string, boolean> = new Map();\n\n toggleAll() {\n this.allExpanded = !this.allExpanded;\n this.expandedMap.clear();\n }\n\n toggleExpand(key: string) {\n const currentState = this.isExpanded(key);\n this.expandedMap.set(key, !currentState);\n }\n\n isObject(val: any): boolean {\n return val !== null && typeof val === 'object';\n }\n\n objectKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n\n isExpanded(key: string): boolean {\n return this.expandedMap.has(key) ? this.expandedMap.get(key)! : this.allExpanded;\n }\n\n copyJson() {\n const jsonString = JSON.stringify(this.jsonData, null, 2);\n navigator.clipboard.writeText(jsonString).then(() => {\n alert('JSON copiado com sucesso!');\n }).catch(err => {\n console.error('Error copying JSON to clipboard:', err);\n });\n }\n}\n","<div class=\"json-viewer-box\">\n <div class=\"toolbar\">\n <button\n *ngIf=\"isRoot\"\n class=\"action-button copy-button\"\n (click)=\"copyJson()\"\n >\n {{ copyLabel }}\n </button>\n <button\n *ngIf=\"isRoot\"\n class=\"action-button toggle-button\"\n (click)=\"toggleAll()\"\n >\n {{ allExpanded ? \"▼ \" + hideLabel : \"► \" + showLabel }}\n </button>\n </div>\n\n <div class=\"json-content\">\n <div *ngIf=\"isObject(jsonData)\">\n <div class=\"json-pair\" *ngFor=\"let key of objectKeys(jsonData)\">\n <span class=\"key\">\n {{ key }}:\n <button class=\"minimal-toggle-button\" (click)=\"toggleExpand(key)\">\n {{ isExpanded(key) ? \"▼\" : \"►\" }}\n </button>\n </span>\n\n <div class=\"nested-json\" *ngIf=\"isExpanded(key)\">\n <argenta-json-viewer\n [jsonData]=\"jsonData[key]\"\n [isRoot]=\"false\"\n ></argenta-json-viewer>\n </div>\n <span *ngIf=\"!isExpanded(key) && isObject(jsonData[key])\">[...]</span>\n </div>\n </div>\n <span *ngIf=\"!isObject(jsonData)\">\n {{ jsonData }}\n </span>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core'\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'\n\n@Component({\n selector: 'argenta-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss']\n})\nexport class ModalComponent {\n @Input() title!: string;\n @Input() component!: any;\n @Input() componentInputs?: any;\n @Input() closeButtonLabel!: string\n @Input() buttonLabel?: string\n @Output() onButtonClick: EventEmitter<void> = new EventEmitter(); // Novo evento\n\n @ViewChild('dynamicComponent', { read: ViewContainerRef, static: true }) dynamicComponent!: ViewContainerRef;\n\n constructor(public activeModal: NgbActiveModal) {}\n\n ngOnInit() {\n const componentRef = this.dynamicComponent.createComponent(this.component);\n const instance = componentRef.instance as any;\n if (this.componentInputs) {\n Object.keys(this.componentInputs).forEach(inputName => {\n instance[inputName] = this.componentInputs[inputName];\n });\n }\n }\n\n closeModal() {\n this.activeModal.close();\n }\n\n buttonClicked() {\n this.onButtonClick.emit(); // Emitindo o evento\n }\n}\n","<div class=\"modal-header custom-modal-header\">\n <h4 class=\"modal-title\">{{ title }}</h4>\n <p class=\"float-right close-modal\" (click)=\"closeModal()\">X</p>\n</div>\n<div class=\"modal-body\">\n <ng-container #dynamicComponent></ng-container>\n</div>\n<div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"closeModal()\">\n {{ closeButtonLabel }}\n </button>\n <button *ngIf=\"buttonLabel\" class=\"btn btn-custom\" (click)=\"buttonClicked()\">\n {{ buttonLabel }}\n </button>\n</div>\n","import { HttpClient } from \"@angular/common/http\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Observable, of, Subject } from \"rxjs\";\nimport {\n catchError,\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap,\n tap\n} from \"rxjs/operators\";\nimport { AuthService } from \"../../service/auth-service.service\";\n\n@Component({\n selector: \"argenta-custom-multi-select\",\n templateUrl: \"./multi-select.component.html\",\n styleUrls: [\"./multi-select.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MultiSelectComponent\n implements ControlValueAccessor, OnInit, OnChanges\n{\n @HostListener(\"document:click\", [\"$event\"])\n onClickOutside(event: Event) {\n const target = event.target as HTMLElement;\n if (!target.closest(\".custom-select-container\")) {\n this.closeDropdown();\n }\n }\n\n @Input() label: string = \"Multi Select\";\n @Input() data: any[] = [];\n @Input() placeholder: string = \"\";\n @Input() selected: any;\n @Input() id: string = \"multiSelectId\";\n @Input() bindLabel: string = \"\";\n @Input() bindValue: string = \"\";\n @Input() permissions: string[] | undefined;\n @Input() closeOnSelect: boolean = false;\n @Input() searchUrl: string = \"\";\n @Input() multiple: boolean = true;\n @Input() searchParams: { [key: string]: string } = {};\n\n @Output() keyupEvent: EventEmitter<any> = new EventEmitter<any>();\n\n private lastSearchTerm: string = \"\";\n private backupData: any[] = [];\n private allItems: any[] = [];\n items: Observable<any[]> = of([]);\n filteredItems: Observable<any[]> = of([]);\n private searchTerms = new Subject<string>();\n isOpen = false;\n\n constructor(\n private authService: AuthService,\n private http: HttpClient,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.filteredItems = this.searchTerms.pipe(\n debounceTime(700), // Reduz chamadas repetitivas\n distinctUntilChanged(), // Ignora termos repetidos consecutivos\n switchMap((term) => {\n // Sempre busca no back-end\n return this.search(term).pipe(\n tap((fetchedItems) => {\n this.updateData(fetchedItems);\n }),\n map((fetchedItems) => this.filterOutSelected(fetchedItems))\n );\n })\n );\n\n this.filteredItems.subscribe({\n next: (items: any) => {},\n error: (err) => console.error(\"Erro ao buscar no back-end:\", err),\n });\n\n this.fetchInitialData().subscribe((data) => {\n this.updateData(data);\n });\n }\n\n onInputChange(event: any): void {\n const input = event.target.value.trim();\n\n this.searchTerms.next(input);\n\n if (input === \"\") {\n this.fetchInitialData().subscribe((data) => {\n this.allItems = data;\n this.filteredItems = of(this.filterOutSelected(this.allItems));\n });\n }\n }\n\n search(term: string): Observable<any[]> {\n return this.http.get<any[]>(`${this.searchUrl}`, { params: { term } }).pipe(\n map((response: any[]) => {\n const transformedItems = response.map((item: any) => ({\n [this.bindValue]: item[this.bindValue],\n [this.bindLabel]: item[this.bindLabel],\n }));\n\n this.allItems = transformedItems;\n\n this.filteredItems = of(this.filterOutSelected(this.allItems));\n this.cdr.markForCheck(); // Notifica o Angular sobre a alteração\n\n return transformedItems;\n }),\n catchError((error) => {\n console.error(\"Erro ao buscar no back-end:\", error);\n this.filteredItems = of([]);\n return of([]);\n })\n );\n }\n\n private fetchInitialData(): Observable<any[]> {\n return this.http.get<any[]>(this.searchUrl).pipe(\n map((response: any[]) => {\n const transformedItems = response.map((item: any) => ({\n [this.bindValue]: item[this.bindValue],\n [this.bindLabel]: item[this.bindLabel],\n }));\n\n this.allItems = transformedItems;\n return this.allItems;\n }),\n catchError((error: any) => {\n console.error(\"Erro ao carregar dados iniciais:\", error);\n return of([]);\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"selected\"] && !changes[\"selected\"].isFirstChange()) {\n this.addSelectedItemsToData();\n }\n }\n\n private updateData(newData: any[]): void {\n newData.forEach((item: any) => {\n const existsInList = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n if (!existsInList) {\n this.allItems = [...this.allItems, item]; // Cria uma nova referência\n }\n });\n \n this.filteredItems = of([...this.allItems]); // Garante nova referência\n this.cdr.markForCheck(); // Notifica o Angular sobre mudanças\n }\n \n\n private addSelectedItemsToData(): void {\n if (this.selected) {\n const selectedItems = this.multiple ? this.selected : [this.selected];\n selectedItems.forEach((item: any) => {\n const existsInList = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n if (!existsInList) {\n const newItem = {\n [this.bindValue]: item[this.bindValue] || item,\n [this.bindLabel]: item[this.bindLabel] || item,\n };\n this.data.push(newItem);\n this.allItems.push(newItem);\n }\n });\n\n this.items = of(this.allItems);\n }\n }\n\n private onChangeCallback: (_: any) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n isCourseEntered = false;\n\n onFocus() {\n this.isCourseEntered = true;\n }\n\n onBlur() {\n this.isCourseEntered = false;\n }\n\n onKeyUp(event: KeyboardEvent): void {\n this.keyupEvent.emit(event);\n }\n\n onSelectedChange(event: any): void {\n const previousSelected = this.selected;\n\n if (this.multiple) {\n this.selected = event;\n } else {\n this.selected = event ? event : null;\n }\n\n this.onChangeCallback(this.selected);\n\n if (previousSelected && Array.isArray(previousSelected)) {\n const removedItems = previousSelected.filter(\n (item) => !event.includes(item)\n );\n\n removedItems.forEach((item) => {\n const existsInAllItems = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n if (!existsInAllItems) {\n this.allItems.push(item);\n }\n });\n this.items = of(this.allItems);\n }\n }\n\n writeValue(value: any): void {\n if (this.multiple) {\n this.selected = value || [];\n } else {\n this.selected = value || null;\n }\n\n this.addSelectedItemsToData();\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {}\n\n compareFn = (item1: any, item2: any): boolean => {\n return item1 && item2\n ? item1[this.bindValue] === item2[this.bindValue]\n : item1 === item2;\n };\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n toggleDropdown() {\n this.isOpen = !this.isOpen;\n }\n\n closeDropdown() {\n this.isOpen = false;\n }\n\n isSelected(item: any): boolean {\n if (this.multiple) {\n return this.selected?.some((selectedItem: any) =>\n this.compareFn(selectedItem, item)\n );\n } else {\n return this.compareFn(this.selected, item);\n }\n }\n\n selectItem(item: any, event: Event): void {\n event.stopPropagation();\n\n if (!this.isSelected(item)) {\n if (this.multiple) {\n this.selected.push(item);\n } else {\n this.selected = [item];\n }\n }\n\n if (this.multiple) {\n this.allItems = this.allItems.filter(\n (listItem) => !this.compareFn(listItem, item)\n );\n }\n\n this.filteredItems = of(this.filterOutSelected(this.allItems));\n this.onSelectedChange(this.selected);\n\n if (this.closeOnSelect) {\n this.closeDropdown();\n }\n }\n\n private filterByTerm(term: string): any[] {\n return this.allItems.filter((item) =>\n item[this.bindLabel]?.toLowerCase().includes(term.toLowerCase())\n );\n }\n\n private filterOutSelected(items: any[]): any[] {\n if (!this.multiple) {\n return items;\n }\n\n return items.filter(\n (item) =>\n !this.selected.some((selectedItem: any) =>\n this.compareFn(selectedItem, item)\n )\n );\n }\n\n removeSelectedItem(item: any, event: Event): void {\n event.stopPropagation();\n\n this.selected = this.selected.filter(\n (selectedItem: any) => !this.compareFn(selectedItem, item)\n );\n\n const existsInAllItems = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n\n if (!existsInAllItems) {\n this.allItems.push(item);\n }\n\n this.filteredItems = of(this.filterByTerm(this.lastSearchTerm || \"\"));\n this.onSelectedChange(this.selected);\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" class=\"form-label\" style=\"margin-top: 1rem\">\n {{ label }}\n </label>\n <div class=\"custom-select-container\" tabindex=\"0\">\n <!-- Input com itens selecionados -->\n <div class=\"custom-input\">\n <span class=\"selected-item\" *ngFor=\"let item of selected\">\n {{ item[bindLabel] }}\n <button\n class=\"remove-item-btn\"\n (click)=\"removeSelectedItem(item, $event)\"\n >\n ×\n </button>\n </span>\n <input\n type=\"text\"\n class=\"input-field\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n (focus)=\"toggleDropdown()\"\n (keyup)=\"onKeyUp($event)\"\n (input)=\"onInputChange($event)\"\n />\n <!-- Ícone flutuante -->\n <lucide-icon\n [name]=\"isOpen ? 'align-justify' : 'chevron-down'\"\n class=\"dropdown-icon\"\n ></lucide-icon>\n </div>\n\n <!-- Dropdown suspenso -->\n <div *ngIf=\"isOpen\" class=\"dropdown\">\n <div\n *ngFor=\"let item of filteredItems | async\"\n class=\"dropdown-item\"\n [class.selected]=\"isSelected(item)\"\n (click)=\"selectItem(item, $event)\"\n >\n {{ item[bindLabel] }}\n </div>\n <div *ngIf=\"(filteredItems | async)?.length === 0\" class=\"empty-dropdown\">\n Nenhum item disponível\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'argenta-multi-select-category',\n templateUrl: './multi-select-category.component.html',\n styleUrls: ['./multi-select-category.component.scss']\n})\nexport class MultiSelectCategoryComponent implements OnInit {\n\n // Inputs para receber dados dinâmicos de diferentes categorias\n @Input() unidadesOrganizacionais: any[] = [];\n @Input() clientes: any[] = [];\n @Input() empresas: any[] = [];\n @Input() usuarios: any[] = [];\n\n // Inputs para permissões específicas de cada categoria\n @Input() permissoesUnidades: string[] = [];\n @Input() permissoesClientes: string[] = [];\n @Input() permissoesEmpresas: string[] = [];\n @Input() permissoesUsuarios: string[] = [];\n\n constructor() { }\n\n ngOnInit(): void { }\n}\n","<div class=\"multi-select-category\">\n <div class=\"row\">\n <!-- Primeira linha: Usuário e Cliente -->\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Usuários\"\n [data]=\"usuarios\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesUsuarios\"\n placeholder=\"Selecione Usuários\">\n </argenta-custom-multi-select>\n </div>\n\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Clientes\"\n [data]=\"clientes\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesClientes\"\n placeholder=\"Selecione Clientes\">\n </argenta-custom-multi-select>\n </div>\n </div>\n\n <div class=\"row\">\n <!-- Segunda linha: Empresa e Unidade Organizacional -->\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Empresas\"\n [data]=\"empresas\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesEmpresas\"\n placeholder=\"Selecione Empresas\">\n </argenta-custom-multi-select>\n </div>\n\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Unidades Organizacionais\"\n [data]=\"unidadesOrganizacionais\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesUnidades\"\n placeholder=\"Selecione Unidades Organizacionais\">\n </argenta-custom-multi-select>\n </div>\n </div>\n</div>\n","export function formatToBrazilianNumber(value: number): string {\n return value.toLocaleString(\"pt-BR\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n}\n","import { Component, Input } from \"@angular/core\";\nimport jsPDF from \"jspdf\";\nimport \"jspdf-autotable\";\nimport { PdfExportConfig } from \"./interface/PdfExportConfig\";\nimport { PdfTableStyles } from \"./interface/PdfTableStyles\";\nimport { parseBrazilianNumber } from \"./function/parseBrazilianNumber\";\nimport { DataRow } from \"./interface/DataRow\";\nimport { formatToBrazilianNumber } from \"./function/formatToBrazilianNumber\";\n\n@Component({\n selector: \"argenta-pdf-data-handler\",\n templateUrl: \"./argenta-pdf-data-handler.component.html\",\n styleUrls: [\"./argenta-pdf-data-handler.component.scss\"],\n})\nexport class ArgentaPdfDataHandlerComponent {\n @Input() config!: PdfExportConfig;\n @Input() data: DataRow[] = [];\n @Input() styles!: PdfTableStyles;\n\n private isNumericColumn(key: string): boolean {\n // Se 'numericColumns' estiver definido no pdfConfig, use-o como referência\n return this.config?.numericColumns?.includes(key) ?? false;\n }\n\n private processData(data: DataRow[]): DataRow[] {\n if (!data || !this.config?.tableKeys?.length) {\n console.warn(\"Dados ou chaves de tabela ausentes!\");\n return [];\n }\n\n // Identificar colunas numéricas\n const numericColumns = this.config.numericColumns || [];\n\n return data.map((item) => {\n const processedItem: any = {};\n this.config.tableKeys.forEach((key) => {\n if (numericColumns.includes(key)) {\n const value = item[key];\n if (typeof value === \"string\") {\n // Converte o valor no formato brasileiro para número\n processedItem[key] = parseFloat(\n value.replace(\".\", \"\").replace(\",\", \".\")\n );\n } else if (typeof value === \"number\") {\n processedItem[key] = value;\n } else {\n processedItem[key] = 0; // Valor padrão para entradas inválidas\n }\n } else {\n // Mantém o valor original para colunas não numéricas\n processedItem[key] = item[key];\n }\n });\n return processedItem;\n });\n }\n\n exportToPdf() {\n if (!this.config || !this.data.length) {\n console.warn(\"Configuração ou dados ausentes para exportação de PDF!\");\n return;\n }\n\n const doc = new jsPDF();\n\n // Configuração do título\n const titleStyle = this.styles?.titleStyle || {};\n doc.setFont(titleStyle.fontFamily || \"helvetica\", \"normal\");\n doc.setFontSize(titleStyle.fontSize || 14);\n doc.setTextColor(titleStyle.fontColor || \"#000\");\n doc.text(\n this.config.pdfTitle || \"Relatório\",\n titleStyle.align === \"center\" ? 105 : 10,\n 10,\n { align: titleStyle.align || \"left\" }\n );\n\n // Processar os dados\n const processedData = this.processData(this.data);\n\n // Calcular totais por linha\n const calculatedData = processedData.map((row) => {\n const newRow = { ...row };\n this.config.rowCalculations?.forEach((calc) => {\n const result = calc.formula(row);\n newRow[calc.label] = isNaN(result)\n ? \"-\"\n : formatToBrazilianNumber(result); // Formata os totais por linha\n });\n return newRow;\n });\n\n // Calcular o total geral\n let totalRow: Partial<DataRow> = {};\n if (this.config.totalizer?.include) {\n this.config.totalizer.columns.forEach((column) => {\n const values = calculatedData\n .map((item) => {\n const value = item[column.field];\n if (typeof value === \"string\") {\n return parseFloat(value.replace(\".\", \"\").replace(\",\", \".\"));\n }\n return typeof value === \"number\" ? value : 0; // Valores inválidos tratados como 0\n })\n .filter((value) => !isNaN(value)); // Filtra valores válidos\n\n const total = column.formula(values);\n totalRow[column.field] = formatToBrazilianNumber(total); // Formata o total geral\n });\n }\n\n // Preparar os dados para a tabela\n const tableHeaders = [...this.config.tableHeaders];\n const tableKeys = [...this.config.tableKeys];\n const tableData = calculatedData.map((item) =>\n tableKeys.map((key) => {\n const value = item[key];\n if (typeof value === \"number\") {\n return formatToBrazilianNumber(value); // Formata números\n }\n return value || \"-\"; // Retorna o valor original\n })\n );\n\n // Adicionar a linha totalizadora ao final da tabela\n if (this.config.totalizer?.include) {\n const totalizerRow = tableKeys.map((key, index) => {\n if (index === 0) {\n return this.config.totalizer?.columns[0].label || \"-\"; // Adiciona o label na primeira coluna\n }\n return totalRow[key] || \"-\";\n });\n tableData.push(totalizerRow);\n }\n\n // Configurar estilos e gerar a tabela\n const tableStyle = this.styles?.tableStyle || {};\n const headerStyle = this.styles?.headerStyle || {};\n const dataStyle = this.styles?.dataStyle || {};\n\n (doc as any).autoTable({\n head: [tableHeaders],\n body: tableData,\n startY: 20,\n headStyles: {\n fontSize: headerStyle.fontSize || 12,\n textColor: headerStyle.fontColor || \"#fff\",\n fillColor: headerStyle.backgroundColor || \"#007bff\",\n },\n bodyStyles: {\n fontSize: dataStyle.fontSize || 10,\n textColor: dataStyle.fontColor || \"#555\",\n },\n styles: {\n fontSize: tableStyle.fontSize || 10,\n textColor: tableStyle.fontColor || \"#000\",\n fillColor: tableStyle.backgroundColor || \"#fff\",\n },\n theme: \"grid\",\n });\n\n // Salvar o PDF\n doc.save(this.config.fileName || \"relatorio.pdf\");\n }\n}\n","<div class=\"pdf-data-handler-container\">\n <button class=\"pdf-button\" (click)=\"exportToPdf()\">\n {{ config.buttonLabel || \"Export PDF\" }}\n </button>\n</div>\n","import { Component, Input } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\n\n@Component({\n selector: \"argenta-pdf-download\",\n templateUrl: \"./argenta-pdf-download.component.html\",\n styleUrls: [\"./argenta-pdf-download.component.scss\"],\n})\nexport class ArgentaPdfDownloadComponent {\n @Input() apiEndpoint: string = \"\"; // Endpoint do back-end ou URL pública\n @Input() buttonText: string = \"Baixar PDF\"; // Texto do botão\n @Input() loadingText: string = \"Baixando...\"; // Texto durante o carregamento\n\n isLoading: boolean = false;\n\n constructor(private http: HttpClient) {}\n\n downloadPdf(): void {\n if (!this.apiEndpoint) {\n console.error(\"O endpoint da API não foi fornecido.\");\n return;\n }\n\n // Verifica se a URL é pública (HTTPS ou HTTP)\n if (\n this.apiEndpoint.startsWith(\"http://\") ||\n this.apiEndpoint.startsWith(\"https://\")\n ) {\n window.open(this.apiEndpoint, \"_blank\"); // Abre a URL diretamente\n return;\n }\n\n this.isLoading = true;\n\n // Requisição para obter o arquivo como blob\n this.http.get(this.apiEndpoint, { responseType: \"blob\" }).subscribe({\n next: (blob) => {\n const fileURL = window.URL.createObjectURL(blob);\n window.open(fileURL, \"_blank\"); // Abre o arquivo como blob\n this.isLoading = false;\n },\n error: (err) => {\n console.error(\"Erro ao baixar o PDF:\", err);\n this.isLoading = false;\n },\n });\n }\n}\n","<button (click)=\"downloadPdf()\" [disabled]=\"isLoading\">\n <span *ngIf=\"!isLoading\">{{ buttonText }}</span>\n <span *ngIf=\"isLoading\">{{ loadingText }}</span>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n@Component({\n selector: \"sim-app-radio\",\n templateUrl: \"./radio.component.html\",\n styleUrls: [\"./radio.component.scss\"],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioComponent implements ControlValueAccessor {\n @Input() name: string = \"defaultRadio\";\n @Input() id: string = \"radioId\";\n @Input() value: string = \"default\";\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() label: string = \"Radio label\";\n\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n\n @Output() changeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n private onChangeCallback: (_: any) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n handleRadioChange(event: Event) {\n const inputElement = event.target as HTMLInputElement;\n this.checked = inputElement.checked;\n this.onChangeCallback(this.checked);\n this.changeEvent.emit(event);\n }\n\n writeValue(value: any): void {\n this.checked = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div\n class=\"form-check\"\n [ngStyle]=\"{\n 'margin-top': marginTop + 'rem',\n 'margin-bottom': marginBottom + 'rem',\n 'margin-left': marginLeft + 'rem',\n 'margin-right': marginRight + 'rem'\n }\"\n>\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [name]=\"name\"\n [id]=\"id\"\n [value]=\"value\"\n [checked]=\"checked\"\n (change)=\"handleRadioChange($event)\"\n [disabled]=\"disabled\"\n />\n <label class=\"form-check-label\" [for]=\"id\">{{ label }}</label>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'argenta-search-customer',\n templateUrl: './search-customer.component.html',\n styleUrls: ['./search-customer.component.scss']\n})\nexport class SearchCustomerComponent {\n // Inputs\n @Input() placeholder: string = 'Search';\n @Input() id: string = '';\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() autofocus: boolean = false;\n\n // Output\n @Output() searchTerm = new EventEmitter<string>();\n\n onSearch(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n this.searchTerm.emit(inputElement.value);\n }\n}\n","<div class=\"search-container\">\n <span class=\"search-icon\" [ngClass]=\"'search-icon-green'\">\n <lucide-icon name=\"search\" [size]=\"16\"></lucide-icon>\n </span>\n <input\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [autofocus]=\"autofocus\"\n (input)=\"onSearch($event)\"\n class=\"search-input custom-input\"\n />\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, forwardRef } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'argenta-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SearchInputComponent),\n multi: true\n }\n ]\n})\nexport class SearchInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() id: string = '';\n @Input() label: string = 'Search';\n @Input() type: string = 'text';\n @Input() placeholder: string = 'Type to search...';\n @Input() value: string = '';\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() autofocus: boolean = false;\n @Input() maxlength: number | null = null;\n @Input() minlength: number | null = null;\n @Input() required: boolean = false;\n @Input() pattern: string | null = null;\n @Input() debounceTime: number = 700; // Valor padrão\n\n @Output() search = new EventEmitter<string>();\n @Output() inputChange = new EventEmitter<string>();\n @Output() change = new EventEmitter<Event>();\n @Output() focus = new EventEmitter<Event>();\n @Output() blur = new EventEmitter<Event>();\n @Output() keyup = new EventEmitter<KeyboardEvent>();\n @Output() keydown = new EventEmitter<KeyboardEvent>();\n @Output() keypress = new EventEmitter<KeyboardEvent>();\n\n private searchSubject: Subject<string> = new Subject<string>();\n private searchSubscription: Subscription = new Subscription();\n\n constructor() { }\n\n ngOnInit(): void {\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTime)\n ).subscribe((searchText) => {\n this.search.emit(searchText);\n });\n }\n\n onInput(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n const value = inputElement.value;\n this.value = value;\n this.inputChange.emit(value); // Emite o valor de input imediatamente\n this.searchSubject.next(value);\n this.onChangeFn(value); // Chame onChangeFn para notificar o Angular Forms sobre a mudança\n }\n\n onChange(event: Event): void {\n this.change.emit(event);\n }\n\n onFocus(event: Event): void {\n this.focus.emit(event);\n }\n\n onBlur(event: Event): void {\n this.blur.emit(event);\n this.onTouchedFn(); // Chame onTouchedFn para notificar o Angular Forms sobre o blur\n }\n\n onKeyup(event: KeyboardEvent): void {\n this.keyup.emit(event);\n }\n\n onKeydown(event: KeyboardEvent): void {\n this.keydown.emit(event);\n }\n\n onKeypress(event: KeyboardEvent): void {\n this.keypress.emit(event);\n }\n\n ngOnDestroy(): void {\n this.searchSubscription.unsubscribe();\n }\n\n getLabelStyles() {\n return {\n fontFamily: 'Inter',\n fontSize: '16px',\n lineHeight: '19.36px',\n };\n }\n\n // ControlValueAccessor interface implementation\n onChangeFn: (value: string) => void = () => { };\n onTouchedFn: () => void = () => { };\n\n writeValue(value: string): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"form-group\">\n <label [for]=\"id\" [ngStyle]=\"getLabelStyles()\">{{ label }}</label>\n <input [type]=\"type\"\n class=\"form-control custom-input\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onKeyup($event)\"\n (keydown)=\"onKeydown($event)\"\n (keypress)=\"onKeypress($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [attr.pattern]=\"pattern\"\n [autofocus]=\"autofocus\">\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, OnDestroy, OnChanges, SimpleChanges, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-custom-select',\n styleUrls: ['./select.component.scss'],\n template: `\n <div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"select-container\">\n <select class=\"form-control custom-select\"\n [id]=\"id\"\n [value]=\"value\"\n (change)=\"onSelectChange($event)\"\n [disabled]=\"disabled\">\n <option *ngFor=\"let option of options\" [value]=\"option.value\">{{ option.label }}</option>\n </select>\n <lucide-icon name=\"chevron-down\" [size]=\"16\" color=\"#5E6366\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n </div>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectComponent implements ControlValueAccessor, OnDestroy, OnChanges {\n @Input() label: string = 'Default Label';\n @Input() id: string = 'selectId';\n @Input() disabled: boolean = false;\n @Input() options: { value: any, label: string }[] = [];\n @Input() permissions: string[] | undefined;\n\n @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n\n private onChangeCallback: (_: any) => void = () => { };\n private onTouchedCallback: () => void = () => { };\n\n value: any;\n private destroy$ = new Subject<void>();\n\n constructor(private authService: AuthService) { }\n\n onSelectChange(event: Event) {\n const selectElement = event.target as HTMLSelectElement;\n this.value = selectElement.value;\n this.onChangeCallback(this.value);\n this.changeEvent.emit(this.value);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options'] && changes['options'].currentValue !== changes['options'].previousValue) {\n this.updateOptions(changes['options'].currentValue);\n }\n }\n\n updateOptions(newOptions: { value: any, label: string }[]): void {\n this.options = newOptions;\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent implements OnInit, OnChanges {\n @Input() tabs: { label: string; content: TemplateRef<any>; permissions?: string[] }[] = [];\n @Input() activeTabIndex: number = 0;\n @Input() componentPermissions?: string[];\n @Output() tabChanged: EventEmitter<number> = new EventEmitter<number>();\n\n showTabs = true; // Controla a exibição do componente\n\n constructor(private authService: AuthService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.hasComponentPermission() && this.tabs.length > 0) {\n this.selectTab(this.activeTabIndex);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['tabs'] && !changes['tabs'].firstChange) {\n this.tabs = [...this.tabs]; // Gera uma nova referência\n this.activeTabIndex = 0;\n this.cdr.markForCheck(); // Força a atualização\n }\n }\n\n selectTab(index: number, event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n }\n if (this.hasPermission(this.tabs[index]?.permissions)) {\n this.activeTabIndex = index;\n this.tabChanged.emit(this.activeTabIndex);\n }\n }\n\n hasPermission(requiredPermissions?: string[]): boolean {\n if (!requiredPermissions || requiredPermissions.length === 0) {\n return true;\n }\n return this.authService.hasPermission(requiredPermissions);\n }\n\n hasComponentPermission(): boolean {\n if (!this.componentPermissions || this.componentPermissions.length === 0) {\n return true;\n }\n return this.authService.hasPermission(this.componentPermissions);\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n // 🔹 Método para reiniciar o componente\n refreshTabs(): void {\n this.showTabs = false; // Remove o componente do DOM\n setTimeout(() => {\n this.showTabs = true; // Adiciona novamente\n this.cdr.detectChanges(); // Força a atualização do template\n });\n }\n}\n","<ng-container *ngIf=\"showTabs\">\n <ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RefreshService {\n private refreshSubject = new Subject<void>();\n\n get refresh$(): Observable<void> {\n return this.refreshSubject.asObservable();\n }\n\n refresh() {\n this.refreshSubject.next();\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { ConfirmationComponent } from './confirmation.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService implements OnDestroy {\n private modalRef: NgbModalRef | null = null;\n\n constructor(private modalService: NgbModal) { }\n\n confirm(\n title: string,\n message: string,\n confirmButtonText: string = 'Sim',\n cancelButtonText: string = 'Não'\n ): Promise<boolean> {\n this.modalRef = this.modalService.open(ConfirmationComponent, { backdrop: 'static', keyboard: false });\n this.modalRef.componentInstance.title = title;\n this.modalRef.componentInstance.message = message;\n this.modalRef.componentInstance.confirmButtonText = confirmButtonText;\n this.modalRef.componentInstance.cancelButtonText = cancelButtonText;\n\n return this.modalRef.result.then((result) => {\n return result === 'confirm';\n }, () => {\n return false;\n }).finally(() => {\n this.modalRef = null; // Clear the reference after the modal is closed\n });\n }\n\n ngOnDestroy() {\n if (this.modalRef) {\n this.modalRef.dismiss();\n this.modalRef = null;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n} from \"@angular/core\"\nimport { Observable, Subject } from \"rxjs\"\nimport { takeUntil } from \"rxjs/operators\"\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\"; // Importando o enum\nimport { AuthService } from \"../../service/auth-service.service\"\nimport { RefreshService } from \"../../service/refresh-service.service\"\nimport { ConfirmationService } from \"../confirmation/confirmation.service\"\nimport { IDataIndexPaginate, IPaginateResult } from \"./data-paginate.service\"\n\n@Component({\n selector: \"argenta-list-data-table\",\n templateUrl: \"./data-table.component.html\",\n styleUrls: [\"./data-table.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent implements OnInit, OnDestroy {\n @Input() columns: {\n label: string;\n prop: string;\n type?: \"string\" | \"image\";\n isSearchSelected?: boolean;\n }[] = [];\n @Input() hiddenColumns: string[] = [];\n @Input() defaultItemsPerPage: number = 10;\n @Input() itemsPerPageLabel: string = \"Items per page:\";\n @Input() showActionColumn: boolean = false;\n @Input() actionColumnLabel: string = \"Actions\";\n @Input() totalItems: number = 0;\n\n @Input() fetchDataFunction: (\n params: IDataIndexPaginate\n ) => Observable<IPaginateResult<any>> = () => {\n return new Observable((subscriber) =>\n subscriber.error(\n \"Implement the fetchDataFunction to fetch paginated data from the back-end.\"\n )\n );\n };\n\n @Input() editPermissions: string[] = [];\n @Input() deletePermissions: string[] = [];\n @Input() inativoPermissions: string[] = [];\n @Input() viewPermissions: string[] = [];\n @Input() inativoTexts: {\n inactivate: string;\n activate: string;\n modalTitle: string;\n modalText: string;\n } = {\n inactivate: \"Desativar\",\n activate: \"Ativar\",\n modalTitle: \"Alterar status\",\n modalText: \"Você deseja realmente alterar o status?\",\n };\n @Input() showPageInfo: boolean = true;\n @Input() pageText: string = \"Page\";\n @Input() ofText: string = \"of\";\n @Input() filterDescription: string = \"\";\n @Input() buttonLabel: string = \"\";\n @Input() pagedData: any[] = [];\n @Input() initialFilterField: string | null = null;\n @Input() buttonList?: TemplateRef<any>[] = [];\n @Input() statusField: string = 'indInativo';\n\n @Output() statusChange: EventEmitter<any> = new EventEmitter();\n @Output() sortChange: EventEmitter<any> = new EventEmitter();\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n @Output() itemsPerPageChange: EventEmitter<number> = new EventEmitter();\n @Output() onEditTable: EventEmitter<any> = new EventEmitter();\n @Output() onDeleteTable: EventEmitter<any> = new EventEmitter();\n @Output() onViewTable: EventEmitter<any> = new EventEmitter();\n @Output() onButtonClick: EventEmitter<void> = new EventEmitter();\n @Output() filterFieldChange: EventEmitter<string> = new EventEmitter();\n\n itemsPerPageOptions: number[] = [5, 10, 15, 25];\n currentPage: number = 1;\n sortColumn: string = \"\";\n sortDirection: \"asc\" | \"desc\" = \"asc\";\n selectedSearchField: string = \"\";\n isLoading = false;\n private destroy$ = new Subject<void>();\n private isInitialized = false; // Flag para evitar chamadas duplas\n ButtonClasses = ButtonClasses;\n\n labelStyle = {\n \"font-family\": \"Inter, Arial, sans-serif\",\n \"font-size\": \"14px\",\n color: \"#000\",\n };\n\n constructor(\n private cdr: ChangeDetectorRef,\n private authService: AuthService,\n private refreshService: RefreshService,\n private confirmationService: ConfirmationService\n ) {}\n\n ngOnInit() {\n if (this.initialFilterField) {\n // Se o usuário definir o initialFilterField, ele será usado como o campo inicial\n this.selectedSearchField = this.initialFilterField;\n this.sortColumn = this.initialFilterField;\n this.sortDirection = \"asc\";\n\n this.columns = this.columns.map((column) => ({\n ...column,\n isSearchSelected: column.prop === this.initialFilterField,\n }));\n } else if (this.columns.length > 0) {\n // Caso contrário, usa a primeira coluna como padrão\n this.selectedSearchField = this.columns[0].prop;\n this.sortColumn = this.columns[0].prop;\n this.sortDirection = \"asc\";\n\n this.columns = this.columns.map((column) => ({\n ...column,\n isSearchSelected: column.prop === this.selectedSearchField,\n }));\n }\n\n //this.fetchData();\n this.refreshService.refresh$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.isInitialized) {\n this.refreshData();\n }\n });\n\n this.isInitialized = true;\n }\n\n // ngOnChanges(changes: SimpleChanges) {\n // if (\n // changes[\"totalItems\"] ||\n // changes[\"defaultItemsPerPage\"] ||\n // changes[\"currentPage\"] ||\n // changes[\"fetchDataFunction\"] ||\n // changes[\"filterDescription\"]\n // ) {\n // this.fetchData();\n // }\n // }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n protected getNestedProperty(obj: any, path: string): any {\n return path.split(\".\").reduce((acc, part) => acc && acc[part], obj);\n }\n\n fetchData() {\n if (this.fetchDataFunction) {\n this.isLoading = true;\n const params: IDataIndexPaginate = {\n filterDescription: this.filterDescription,\n filterField: this.selectedSearchField,\n pageNumber: this.currentPage ?? 1,\n pageSize: this.defaultItemsPerPage ?? 10,\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n };\n\n this.fetchDataFunction(params)\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (result) => {\n this.pagedData = result.items;\n this.totalItems = result.totalItems;\n this.isLoading = false;\n this.cdr.markForCheck();\n },\n error: (error) => {\n console.error(\"Error fetching data:\", error);\n this.isLoading = false;\n },\n });\n }\n }\n\n refreshData() {\n this.fetchData();\n }\n\n onPageChange(page: number) {\n this.currentPage = page;\n this.pageChange.emit(page);\n this.fetchData();\n }\n\n onItemsPerPageChange() {\n this.currentPage = 1;\n this.itemsPerPageChange.emit(this.defaultItemsPerPage);\n this.fetchData();\n }\n\n onSelectSearchField(columnProp: string) {\n if (this.sortColumn === columnProp) {\n this.sortDirection = this.sortDirection === \"asc\" ? \"desc\" : \"asc\";\n } else {\n this.sortDirection = \"asc\";\n }\n\n this.selectedSearchField = columnProp;\n this.sortColumn = columnProp;\n\n this.columns = this.columns.map((column) => ({\n ...column,\n isSearchSelected: column.prop === columnProp,\n }));\n\n this.filterFieldChange.emit(this.selectedSearchField);\n\n if (this.fetchDataFunction) {\n this.fetchDataFunction({\n filterDescription: this.filterDescription,\n filterField: this.selectedSearchField,\n pageNumber: this.currentPage,\n pageSize: this.defaultItemsPerPage,\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n }).subscribe({\n next: (result) => {\n this.pagedData = result.items;\n this.totalItems = result.totalItems;\n this.cdr.markForCheck();\n },\n error: (error) => {\n console.error(\"Erro ao buscar dados:\", error);\n },\n });\n }\n }\n\n handleAction(action: string, item: any, index: number) {\n switch (action) {\n case \"edit\":\n if (this.hasPermission(this.editPermissions)) {\n this.onEditTable.emit({ item, index });\n }\n break;\n case \"delete\":\n if (this.hasPermission(this.deletePermissions)) {\n this.onDeleteTable.emit({ item, index });\n }\n break;\n case \"view\":\n if (this.hasPermission(this.viewPermissions)) {\n this.onViewTable.emit({ item, index });\n }\n break;\n case \"inativar\":\n if (this.hasPermission(this.inativoPermissions)) {\n this.confirmationService\n .confirm(this.inativoTexts.modalTitle, this.inativoTexts.modalText)\n .then((confirmed: boolean) => {\n if (confirmed) {\n let value = !item[this.statusField]\n item[this.statusField] = value\n this.statusChange.emit({ status: value, item: item });\n } else {\n return;\n }\n });\n }\n break;\n }\n }\n\n hasPermission(requiredPermissions: string[]): boolean {\n if (!requiredPermissions || requiredPermissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(requiredPermissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n isColumnHidden(columnProp: string): boolean {\n return this.hiddenColumns.includes(columnProp);\n }\n\n isBoolean(value: any): boolean {\n return typeof value === 'boolean';\n }\n\n onSearch(searchText: string) {\n this.filterDescription = searchText;\n this.currentPage = 1; // Resetar para a primeira página\n this.fetchData();\n }\n\n onNewButtonClick() {\n this.onButtonClick.emit(); // Emitindo o evento\n }\n}\n","<div class=\"data-table-header\" style=\"margin-top: 2.5rem\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{\n itemsPerPageLabel\n }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\"\n >\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"right-section\">\n <div *ngIf=\"buttonList && buttonList.length > 0\" class=\"ng-button-row\">\n <ng-container *ngFor=\"let buttonTemplate of buttonList\">\n <ng-container\n *ngTemplateOutlet=\"buttonTemplate\"\n class=\"ng-button\"\n ></ng-container>\n </ng-container>\n </div>\n <button\n *ngIf=\"buttonLabel && buttonLabel.length > 0\"\n class=\"custom-button\"\n (click)=\"onNewButtonClick()\"\n >\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input\n id=\"search\"\n label=\"\"\n placeholder=\"Buscar\"\n [(ngModel)]=\"filterDescription\"\n (search)=\"onSearch($event)\"\n ></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th\n *ngIf=\"!isColumnHidden(column.prop)\"\n (click)=\"onSelectSearchField(column.prop)\"\n >\n {{ column.label }}\n <span>\n <i-lucide\n name=\"arrow-up\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'asc'\n \"\n ></i-lucide>\n <i-lucide\n name=\"arrow-down\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'desc'\n \"\n ></i-lucide>\n </span>\n </th>\n </ng-container>\n <th\n *ngIf=\"showActionColumn\"\n class=\"text-end\"\n style=\"padding-right: 6.3rem\"\n >\n {{ actionColumnLabel }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\" [ngSwitch]=\"column.type\">\n <!-- Default case (when type is undefined or not matched) -->\n <span *ngSwitchDefault>\n {{ getNestedProperty(item, column.prop) }}\n </span>\n\n <!-- String case -->\n <span *ngSwitchCase=\"'string'\">\n {{ getNestedProperty(item, column.prop) }}\n </span>\n\n <!-- Image case -->\n <img\n *ngSwitchCase=\"'image'\"\n [src]=\"getNestedProperty(item, column.prop)\"\n alt=\"Image\"\n width=\"50\"\n height=\"50\"\n />\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div\n *ngIf=\"\n hasPermission(editPermissions) &&\n onEditTable.observers.length > 0\n \"\n (click)=\"handleAction('edit', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"square-pen\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(inativoPermissions) &&\n statusChange.observers.length > 0 &&\n statusField.length > 0 &&\n isBoolean(item[statusField])\n \"\n (click)=\"handleAction('inativar', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <button\n [ngClass]=\"\n item[statusField]\n ? 'btn btn-success small-rounded-btn'\n : 'btn btn-danger small-rounded-btn'\n \"\n >\n {{\n item[statusField] ? inativoTexts.activate : inativoTexts.inactivate\n }}\n </button>\n </div>\n <div\n *ngIf=\"\n hasPermission(viewPermissions) &&\n onViewTable.observers.length > 0\n \"\n (click)=\"handleAction('view', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"user-round\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(deletePermissions) &&\n onDeleteTable.observers.length > 0\n \"\n (click)=\"handleAction('delete', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <i-lucide\n name=\"trash-2\"\n [size]=\"20\"\n color=\"#F26E6E\"\n [strokeWidth]=\"1.75\"\n ></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\"\n >\n </custom-pagination>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'sim-app-textarea',\n template: `\n <div class=\"form-group\" [ngStyle]=\"{\n 'margin-top': marginTop + 'rem',\n 'margin-bottom': marginBottom + 'rem',\n 'margin-left': marginLeft + 'rem',\n 'margin-right': marginRight + 'rem'\n }\">\n <label [for]=\"id\" class=\"form-label\">{{ label }}</label>\n <textarea class=\"form-control custom-textarea\"\n [id]=\"id\"\n [rows]=\"rows\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onKeyup($event)\"\n (keydown)=\"onKeydown($event)\"\n (keypress)=\"onKeypress($event)\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [autofocus]=\"autofocus\"></textarea>\n </div>\n `,\n styles: [`\n .form-group {\n margin-bottom: 1rem;\n }\n .form-label {\n font-family: Arial, sans-serif;\n color: #333;\n font-size: 1rem;\n font-weight: bold;\n }\n `],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TextareaComponent implements ControlValueAccessor {\n @Input() label: string = 'Default Label';\n @Input() placeholder: string = 'Default Placeholder';\n @Input() id: string = 'textareaId';\n @Input() rows: number = 3;\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() maxlength: number | null = null;\n @Input() minlength: number | null = null;\n @Input() required: boolean = false;\n @Input() autofocus: boolean = false;\n\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n\n @Output() inputEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() changeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output() blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output() keyupEvent: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() keydownEvent: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() keypressEvent: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n private onChangeCallback: (_: any) => void = () => { };\n private onTouchedCallback: () => void = () => { };\n\n value: string = '';\n\n onInput(event: Event) {\n const inputElement = event.target as HTMLTextAreaElement;\n this.value = inputElement.value;\n this.onChangeCallback(this.value);\n this.inputEvent.emit(event);\n }\n\n onChange(event: Event) {\n this.changeEvent.emit(event);\n }\n\n onFocus(event: FocusEvent) {\n this.focusEvent.emit(event);\n }\n\n onBlur(event: FocusEvent) {\n this.onTouchedCallback();\n this.blurEvent.emit(event);\n }\n\n onKeyup(event: KeyboardEvent) {\n this.keyupEvent.emit(event);\n }\n\n onKeydown(event: KeyboardEvent) {\n this.keydownEvent.emit(event);\n }\n\n onKeypress(event: KeyboardEvent) {\n this.keypressEvent.emit(event);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ITreeNode } from './Itree-node';\n\n@Component({\n selector: 'argenta-custom-tree-node',\n templateUrl: './tree-node.component.html',\n styleUrls: ['./tree-node.component.scss']\n})\nexport class TreeNodeComponent implements OnInit {\n @Input() title: string = '';\n @Input() nodes: ITreeNode[] = [];\n @Input() isRoot: boolean = true;\n @Output() nodeSelected = new EventEmitter<ITreeNode>();\n\n ngOnInit() {\n if (this.isRoot && !this.title) {\n this.title = 'Tree Node';\n }\n }\n\n onNodeSelected(node: ITreeNode, event: any) {\n node.selected = event.target.checked;\n if (node.children) {\n this.toggleChildren(node.children, node.selected);\n }\n this.updateParentSelection(this.nodes);\n this.nodeSelected.emit(node);\n }\n\n toggleChildren(children: ITreeNode[], selected: boolean) {\n children.forEach(child => {\n child.selected = selected;\n if (child.children) {\n this.toggleChildren(child.children, selected);\n }\n });\n }\n\n onChildNodeSelected(node: ITreeNode) {\n this.updateParentSelection(this.nodes);\n this.nodeSelected.emit(node);\n }\n\n updateParentSelection(nodes: ITreeNode[]) {\n nodes.forEach(node => {\n if (node.children) {\n const anyChildSelected = node.children.some(child => child.selected);\n if (anyChildSelected) {\n node.selected = true;\n }\n // Recursive call for nested parents\n this.updateParentSelection(node.children);\n }\n });\n }\n\n toggleCollapse(node: ITreeNode) {\n node.collapsed = !node.collapsed;\n }\n}\n","<div *ngIf=\"isRoot\" class=\"tree-title\">{{ title || 'Tree Node' }}</div>\n<ul class=\"tree\">\n <li *ngFor=\"let node of nodes\">\n <div class=\"node-content\">\n <!-- Exibir a seta apenas se o nó tiver filhos não vazios -->\n <span *ngIf=\"node.children && node.children.length > 0\" class=\"toggle-icon\" (click)=\"toggleCollapse(node)\"\n [ngClass]=\"{'collapsed-icon': node.collapsed, 'expanded-icon': !node.collapsed}\">\n {{ node.collapsed ? '▶' : '▼' }}\n </span>\n <!-- Exibir a bolinha cinza se o nó não tiver filhos -->\n <span *ngIf=\"!node.children || node.children.length === 0\" class=\"dot\"></span>\n <label class=\"custom-checkbox\">\n <input type=\"checkbox\" [checked]=\"node.selected\" (change)=\"onNodeSelected(node, $event)\" />\n <span class=\"checkmark\"></span>\n </label>\n <label class=\"node-label\">{{ node.name }}</label>\n </div>\n <!-- Renderizar recursivamente apenas se o nó tiver filhos não vazios e não estiver colapsado -->\n <argenta-custom-tree-node *ngIf=\"node.children && node.children.length > 0 && !node.collapsed\" [nodes]=\"node.children\" [isRoot]=\"false\" (nodeSelected)=\"onChildNodeSelected(node)\"></argenta-custom-tree-node>\n </li>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { icons, LucideAngularModule } from 'lucide-angular';\n\n// Select some icons (use an object, not an array)\n@NgModule({\n imports: [LucideAngularModule.pick(icons)],\n exports: [LucideAngularModule],\n})\nexport class LucideIconsModule { }\n","import { CommonModule } from \"@angular/common\"\nimport { NgModule } from \"@angular/core\"\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\"\nimport { NgSelectModule } from \"@ng-select/ng-select\"\nimport { AutofocusDirective } from \"../directive/autofocus-directive/autofocus.directive\"\nimport { CepMaskDirective } from \"../directive/cep-mask.directive\"\nimport { CnpjMaskDirective } from \"../directive/cnpj-mask.directive\"\nimport { CpfMaskDirective } from \"../directive/cpf-mask.directive\"\nimport { LucideIconsModule } from \"../icons/lucide-icons.module\"\nimport { AccordionArgentaComponent } from \"./accordion/accordion.component\"\nimport { AlertComponent } from \"./alert/alert.component\"\nimport { AppBackgroundComponent } from \"./app-background/app-background.component\"\nimport { BadgeComponent } from \"./badge/badge.component\"\nimport { BasicRegistrationComponent } from \"./basic-registration/basic-registration.component\"\nimport { ButtonComponent } from \"./button/button.component\"\nimport { CalendarArgentaComponent } from \"./calendar-argenta/calendar-argenta.component\"\nimport { CardInfoComponent } from \"./card-info/card-info.component\"\nimport { CardComponent } from \"./card/card.component\"\nimport { CheckboxComponent } from \"./checkbox/checkbox.component\"\nimport { CodeHighlightComponent } from \"./code-highlight/code-highlight.component\"\nimport { ConfirmationComponent } from \"./confirmation/confirmation.component\"\nimport { CsvImporterComponent } from \"./csv-importer/csv-importer.component\"\nimport { CustomPaginationComponent } from \"./custom-pagination/custom-pagination.component\"\nimport { CustomSwitchComponent } from \"./custom-switch/custom-switch.component\"\nimport { DataExcelExporterComponent } from \"./data-excel-exporter/data-excel-exporter.component\"\nimport { DataExcelImporterComponent } from \"./data-excel-import/data-excel-importer.component\"\nimport { DragDropListComponent } from \"./drag-drop-list/drag-drop-list.component\"\nimport { DynamicModalComponent } from \"./dynamic-modal/dynamic-modal.component\"\nimport { DynamicTableComponent } from \"./dynamic-table/dynamic-table.component\"\nimport { FileUploadComponent } from \"./file-upload/file-upload.component\"\nimport { ImageUploadComponent } from \"./image-upload/image-upload.component\"\nimport { InputComponent } from \"./imput/input.component\"\nimport { JsonEditorComponent } from \"./json-editor/json-editor.component\"\nimport { JsonViewerComponent } from \"./json-viewer/json-viewer.component\"\nimport { ModalComponent } from \"./modal/modal.component\"\nimport { MultiSelectCategoryComponent } from \"./multi-select-category/multi-select-category.component\"\nimport { MultiSelectComponent } from \"./multi-select/multi-select.component\"\nimport { ArgentaPdfDataHandlerComponent } from \"./pdf-data-handler/argenta-pdf-data-handler.component\"\nimport { ArgentaPdfDownloadComponent } from \"./pdf-download/argenta-pdf-download.component\"\nimport { RadioComponent } from \"./radio/radio.component\"\nimport { SearchCustomerComponent } from \"./search-customer/search-customer.component\"\nimport { SearchInputComponent } from \"./search-input/search-input.component\"\nimport { SelectComponent } from \"./select/select.component\"\nimport { TabComponent } from \"./tab/tab.component\"\nimport { DataTableComponent } from \"./tables/data-table.component\"\nimport { TextareaComponent } from \"./textarea/textarea.component\"\nimport { TreeNodeComponent } from \"./tree-node/tree-node.component\"\n\n@NgModule({\n declarations: [\n ButtonComponent,\n CardComponent,\n InputComponent,\n CheckboxComponent,\n TextareaComponent,\n SelectComponent,\n RadioComponent,\n MultiSelectComponent,\n DataTableComponent,\n CodeHighlightComponent,\n BadgeComponent,\n AlertComponent,\n CardInfoComponent,\n ConfirmationComponent,\n AutofocusDirective,\n CepMaskDirective,\n CnpjMaskDirective,\n CpfMaskDirective,\n CustomPaginationComponent,\n TreeNodeComponent,\n SearchInputComponent,\n AppBackgroundComponent,\n BasicRegistrationComponent,\n CustomSwitchComponent,\n SearchCustomerComponent,\n TabComponent,\n FileUploadComponent,\n ImageUploadComponent,\n MultiSelectCategoryComponent,\n CalendarArgentaComponent,\n AccordionArgentaComponent,\n JsonViewerComponent,\n JsonEditorComponent,\n ModalComponent,\n DragDropListComponent,\n DynamicModalComponent,\n DynamicTableComponent,\n ArgentaPdfDataHandlerComponent,\n ArgentaPdfDownloadComponent,\n DataExcelExporterComponent,\n DataExcelImporterComponent,\n CsvImporterComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n LucideIconsModule,\n ],\n exports: [\n ButtonComponent,\n CardComponent,\n InputComponent,\n CheckboxComponent,\n TextareaComponent,\n SelectComponent,\n RadioComponent,\n MultiSelectComponent,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n DataTableComponent,\n CodeHighlightComponent,\n BadgeComponent,\n AlertComponent,\n CardInfoComponent,\n ConfirmationComponent,\n AutofocusDirective,\n CepMaskDirective,\n CnpjMaskDirective,\n CpfMaskDirective,\n CustomPaginationComponent,\n TreeNodeComponent,\n SearchInputComponent,\n LucideIconsModule,\n AppBackgroundComponent,\n BasicRegistrationComponent,\n CustomSwitchComponent,\n SearchCustomerComponent,\n TabComponent,\n FileUploadComponent,\n ImageUploadComponent,\n MultiSelectCategoryComponent,\n CalendarArgentaComponent,\n AccordionArgentaComponent,\n JsonViewerComponent,\n JsonEditorComponent,\n ModalComponent,\n DragDropListComponent,\n DynamicModalComponent,\n DynamicTableComponent,\n ArgentaPdfDataHandlerComponent,\n ArgentaPdfDownloadComponent,\n DataExcelExporterComponent,\n DataExcelImporterComponent,\n CsvImporterComponent,\n ],\n})\nexport class ComponentsModule {}\n","import { ApplicationRef, ComponentRef, createComponent, Injectable, Injector } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AlertComponent } from './alert.component';\n\nexport interface Alert {\n type: 'success' | 'info' | 'warning' | 'danger';\n title: string;\n message: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n private alertsSubject = new Subject<Alert>();\n alerts$ = this.alertsSubject.asObservable();\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector\n ) { }\n\n showAlert(type: 'success' | 'info' | 'warning' | 'danger', title: string, message: string) {\n const alert: Alert = { type, title, message };\n this.alertsSubject.next(alert);\n\n // Create the alert component dynamically\n const componentRef: ComponentRef<AlertComponent> = createComponent(AlertComponent, { environmentInjector: this.appRef.injector });\n componentRef.instance.alerts = [alert];\n\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as any).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n \n \n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nexport interface IDataIndexPaginate {\n filterDescription?: string;\n filterField: string;\n pageNumber: number;\n pageSize: number;\n sortColumn: string;\n sortDirection: \"asc\" | \"desc\";\n}\n\nexport interface IPaginateResult<T> {\n items: T[];\n totalItems: number;\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class DataPaginateService {\n constructor(private http: HttpClient) {}\n\n fetchData<T>(\n url: string,\n params: IDataIndexPaginate\n ): Observable<IPaginateResult<T>> {\n let httpParams = new HttpParams()\n .set(\"page\", params.pageNumber.toString())\n .set(\"limit\", params.pageSize.toString())\n .set(\"sort\", params.sortColumn)\n .set(\"order\", params.sortDirection);\n\n if (params.filterDescription) {\n httpParams = httpParams.set(\"description\", params.filterDescription);\n }\n\n if (params.filterField) {\n httpParams = httpParams.set(\"filterField\", params.filterField);\n }\n\n return this.http\n .get<{ meta: { total: number }; data: T[] }>(url, { params: httpParams })\n .pipe(\n map((response) => {\n const items = response.data || [];\n const totalItems = response.meta?.total || 0;\n return {\n items,\n totalItems,\n };\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterParameterService {\n private secretKey = '9db3589f$h86115&@b457bdff422c232e0e04c!ibe14374970aef0fe0ba054618f!='\n setParameter(data: string): string {\n return CryptoJS.AES.encrypt(data, this.secretKey).toString();\n }\n\n getParameter(data: string): string {\n const bytes = CryptoJS.AES.decrypt(data, this.secretKey);\n return bytes.toString(CryptoJS.enc.Utf8);\n }\n}\n","import { NgModule } from '@angular/core'\nimport { NotificationService } from './components/alert/notification.service'\nimport { ComponentsModule } from './components/components.module'\nimport { ConfirmationService } from './components/confirmation/confirmation.service'\nimport { DataPaginateService } from './components/tables/data-paginate.service'\n// import { ExcelService } from './service/excel-service.service'\nimport { RefreshService } from './service/refresh-service.service'\nimport { RouterParameterService } from './service/route-parameter.service'\n\n@NgModule({\n imports: [\n ComponentsModule,\n \n ],\n exports: [\n ComponentsModule, \n ],\n providers: [\n NotificationService,\n ConfirmationService,\n DataPaginateService,\n RefreshService,\n RouterParameterService,\n // ExcelService,\n ],\n})\nexport class LibPortalAngularModule { }\n","import { Injectable } from '@angular/core'\nimport * as XLSX from \"xlsx\"\nimport { IExcelExportConfig } from '../components/data-excel-exporter/IExcelExportConfig'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ExcelService {\n\n constructor() { }\n\n async createExcel(data: IExcelExportConfig): Promise<void> {\n let mainSheetData: IExcelExportConfig = data\n\n const workbook = XLSX.utils.book_new()\n\n // Verifica se múltiplas planilhas estão configuradas\n if (mainSheetData.multipleSheets) {\n mainSheetData.multipleSheets.forEach((sheetConfig: any) => {\n const worksheet = XLSX.utils.aoa_to_sheet([])\n\n // Adiciona o título, se houver\n let startRow = 0\n if (sheetConfig.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[sheetConfig.title]], {\n origin: \"A1\",\n })\n\n // Define larguras personalizadas do título\n if (sheetConfig.titleWidths) {\n worksheet[\"!cols\"] = sheetConfig.titleWidths.map((width: any) => ({\n wch: width,\n }))\n }\n\n // Mescla o título\n if (sheetConfig.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || []\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: sheetConfig.tableHeaders.length - 1 },\n })\n }\n\n startRow = 1\n }\n\n // Adiciona cabeçalhos\n if (sheetConfig.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [sheetConfig.tableHeaders], {\n origin: `A${startRow + 1}`,\n })\n }\n\n // Adiciona dados\n if (sheetConfig.data) {\n XLSX.utils.sheet_add_json(worksheet, sheetConfig.data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n })\n }\n\n // Define larguras das colunas\n if (sheetConfig.columnWidths) {\n worksheet[\"!cols\"] = sheetConfig.columnWidths.map((width: any) => ({\n wch: width,\n }))\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(\n workbook,\n worksheet,\n sheetConfig.sheetName\n )\n })\n } else {\n // Caso não haja múltiplas planilhas, processa a planilha única\n const worksheet = XLSX.utils.aoa_to_sheet([])\n\n // Adiciona título, se houver\n let startRow = 0\n if (mainSheetData.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[mainSheetData.title]], {\n origin: \"A1\",\n })\n\n // Define larguras do título\n if (mainSheetData.titleWidths) {\n worksheet[\"!cols\"] = mainSheetData.titleWidths.map((width) => ({\n wch: width,\n }))\n }\n\n // Mescla o título\n if (mainSheetData.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || []\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: mainSheetData.tableHeaders.length - 1 },\n })\n }\n\n startRow = 1\n }\n\n // Adiciona cabeçalhos\n if (mainSheetData.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [mainSheetData.tableHeaders], {\n origin: `A${startRow + 1}`,\n })\n }\n\n // Adiciona dados\n XLSX.utils.sheet_add_json(worksheet, mainSheetData.multipleSheets![0].data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n })\n\n // Define larguras das colunas\n if (mainSheetData.columnWidths) {\n worksheet[\"!cols\"] = mainSheetData.columnWidths.map((width) => ({\n wch: width,\n }))\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(workbook, worksheet, mainSheetData.sheetName!)\n }\n\n // Salva o arquivo Excel\n XLSX.writeFile(workbook, mainSheetData.fileName)\n }\n}","export function convertToSnakeCase(input: string): string {\n return input.replace(/([A-Z])/g, \"_$1\").toLowerCase();\n}\n","export function setThemeColors(config: {\n primary?: string;\n secondary?: string;\n success?: string;\n danger?: string;\n warning?: string;\n info?: string;\n light?: string;\n dark?: string;\n linkBorder?: string;\n background?: string;\n text?: string;\n font?: string;\n}) {\n if (config.primary) {\n document.documentElement.style.setProperty(\n \"--primary-color\",\n config.primary\n );\n }\n if (config.secondary) {\n document.documentElement.style.setProperty(\n \"--secondary-color\",\n config.secondary\n );\n }\n if (config.success) {\n document.documentElement.style.setProperty(\n \"--success-color\",\n config.success\n );\n }\n if (config.danger) {\n document.documentElement.style.setProperty(\"--danger-color\", config.danger);\n }\n if (config.warning) {\n document.documentElement.style.setProperty(\n \"--warning-color\",\n config.warning\n );\n }\n if (config.info) {\n document.documentElement.style.setProperty(\"--info-color\", config.info);\n }\n if (config.light) {\n document.documentElement.style.setProperty(\"--light-color\", config.light);\n }\n if (config.dark) {\n document.documentElement.style.setProperty(\"--dark-color\", config.dark);\n }\n if (config.linkBorder) {\n document.documentElement.style.setProperty(\n \"--link-border-color\",\n config.linkBorder\n );\n }\n if (config.background) {\n document.documentElement.style.setProperty(\n \"--background-color\",\n config.background\n );\n }\n if (config.text) {\n document.documentElement.style.setProperty(\"--text-color\", config.text);\n }\n if (config.font) {\n document.documentElement.style.setProperty(\"--font-family\", config.font);\n }\n}\n","/*\n * Public API Surface of lib-atriun-angular\n *\n * Este arquivo exporta todos os componentes, enums e módulos necessários\n * para que os consumidores da biblioteca possam utilizá-los em suas aplicações.\n */\n\n// Componentes\nexport * from \"./lib/components/accordion/accordion.component\"\nexport * from \"./lib/components/alert/alert.component\"\nexport * from \"./lib/components/app-background/app-background.component\"\nexport * from \"./lib/components/badge/badge.component\"\nexport * from \"./lib/components/basic-registration/basic-registration.component\"\nexport * from \"./lib/components/button/button.component\"\nexport * from \"./lib/components/calendar-argenta/calendar-argenta.component\"\nexport * from \"./lib/components/card-info/card-info.component\"\nexport * from \"./lib/components/card/card.component\"\nexport * from \"./lib/components/checkbox/checkbox.component\"\nexport * from \"./lib/components/code-highlight/code-highlight.component\"\nexport * from \"./lib/components/confirmation/confirmation.component\"\nexport * from \"./lib/components/csv-importer/csv-importer.component\"\nexport * from \"./lib/components/custom-pagination/custom-pagination.component\"\nexport * from \"./lib/components/custom-switch/custom-switch.component\"\nexport * from \"./lib/components/data-excel-exporter/data-excel-exporter.component\"\nexport * from \"./lib/components/data-excel-import/data-excel-importer.component\"\nexport * from \"./lib/components/drag-drop-list/drag-drop-list.component\"\nexport * from \"./lib/components/dynamic-modal/dynamic-modal.component\"\nexport * from \"./lib/components/dynamic-table/dynamic-table.component\"\nexport * from \"./lib/components/file-upload/file-upload.component\"\nexport * from \"./lib/components/image-upload/image-upload.component\"\nexport * from \"./lib/components/imput/input.component\"\nexport * from \"./lib/components/json-editor/json-editor.component\"\nexport * from \"./lib/components/json-viewer/json-viewer.component\"\nexport * from \"./lib/components/modal/modal.component\"\nexport * from \"./lib/components/multi-select-category/multi-select-category.component\"\nexport * from \"./lib/components/multi-select/multi-select.component\"\nexport * from \"./lib/components/pdf-data-handler/argenta-pdf-data-handler.component\"\nexport * from \"./lib/components/pdf-download/argenta-pdf-download.component\"\nexport * from \"./lib/components/radio/radio.component\"\nexport * from \"./lib/components/search-customer/search-customer.component\"\nexport * from \"./lib/components/search-input/search-input.component\"\nexport * from \"./lib/components/select/select.component\"\nexport * from \"./lib/components/tab/tab.component\"\nexport * from \"./lib/components/tables/data-table.component\"\nexport * from \"./lib/components/textarea/textarea.component\"\nexport * from \"./lib/components/tree-node/tree-node.component\"\n\n// Interface\nexport * from \"./lib/components/data-excel-exporter/IExcelExportConfig\"\nexport * from \"./lib/components/dynamic-table/dynamic-table-config\"\nexport * from \"./lib/components/pdf-data-handler/interface/PdfExportConfig\"\nexport * from \"./lib/components/pdf-data-handler/interface/PdfTableStyles\"\n\n// Diretivas\nexport * from \"./lib/directive/autofocus-directive/autofocus.directive\"\nexport * from \"./lib/directive/cep-mask.directive\"\nexport * from \"./lib/directive/cnpj-mask.directive\"\nexport * from \"./lib/directive/cpf-mask.directive\"\n\n// Enums\nexport * from \"./lib/enum/ButtonClassesEnum\"\nexport * from \"./lib/enum/CardInfoClassesEnum\"\n\n// Módulos\nexport * from \"./lib/components/components.module\"\nexport * from \"./lib/icons/lucide-icons.module\"\nexport * from \"./lib/lib-portal-angular.module\"\n\n// Service\nexport * from \"./lib/components/alert/notification.service\"\nexport * from \"./lib/components/confirmation/confirmation.service\"\nexport * from \"./lib/components/tables/data-paginate.service\"\nexport * from \"./lib/service/excel-service.service\"\nexport * from \"./lib/service/refresh-service.service\"\nexport * from \"./lib/service/route-parameter.service\"\n\n// function\nexport * from \"./lib/function/ConvertToSnakeCase\"\nexport * from \"./lib/function/SetThemeColors\"\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthService","i2","i3.ButtonComponent","i1","i2.AutofocusDirective","i2.ButtonComponent","i2.CustomPaginationComponent","i3","i4.CepMaskDirective","i5.CnpjMaskDirective","i6.CpfMaskDirective","i4","i1.MultiSelectComponent","i2.RefreshService","i3.ConfirmationService","i5","i6","i7.CustomPaginationComponent","i8.SearchInputComponent"],"mappings":"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"}
1
+ {"version":3,"file":"lib-portal-angular.mjs","sources":["../../../projects/lib-portal-angular/src/lib/service/auth-service.service.ts","../../../projects/lib-portal-angular/src/lib/components/accordion/accordion.component.ts","../../../projects/lib-portal-angular/src/lib/components/accordion/accordion.component.html","../../../projects/lib-portal-angular/src/lib/components/alert/alert.component.ts","../../../projects/lib-portal-angular/src/lib/components/alert/alert.component.html","../../../projects/lib-portal-angular/src/lib/components/app-background/app-background.component.ts","../../../projects/lib-portal-angular/src/lib/enum/ButtonClassesEnum.ts","../../../projects/lib-portal-angular/src/lib/components/badge/badge.component.ts","../../../projects/lib-portal-angular/src/lib/components/badge/badge.component.html","../../../projects/lib-portal-angular/src/lib/components/button/button.component.ts","../../../projects/lib-portal-angular/src/lib/components/button/button.component.html","../../../projects/lib-portal-angular/src/lib/components/basic-registration/basic-registration.component.ts","../../../projects/lib-portal-angular/src/lib/components/basic-registration/basic-registration.component.html","../../../projects/lib-portal-angular/src/lib/components/calendar-argenta/calendar-argenta.component.ts","../../../projects/lib-portal-angular/src/lib/components/calendar-argenta/calendar-argenta.component.html","../../../projects/lib-portal-angular/src/lib/components/card-info/card-info.component.ts","../../../projects/lib-portal-angular/src/lib/components/card-info/card-info.component.html","../../../projects/lib-portal-angular/src/lib/components/card/card.component.ts","../../../projects/lib-portal-angular/src/lib/components/checkbox/checkbox.component.ts","../../../projects/lib-portal-angular/src/lib/components/code-highlight/code-highlight.component.ts","../../../projects/lib-portal-angular/src/lib/directive/autofocus-directive/autofocus.directive.ts","../../../projects/lib-portal-angular/src/lib/components/confirmation/confirmation.component.ts","../../../projects/lib-portal-angular/src/lib/components/confirmation/confirmation.component.html","../../../projects/lib-portal-angular/src/lib/components/csv-importer/csv-importer.component.ts","../../../projects/lib-portal-angular/src/lib/components/csv-importer/csv-importer.component.html","../../../projects/lib-portal-angular/src/lib/components/custom-pagination/custom-pagination.component.ts","../../../projects/lib-portal-angular/src/lib/components/custom-pagination/custom-pagination.component.html","../../../projects/lib-portal-angular/src/lib/components/custom-switch/custom-switch.component.ts","../../../projects/lib-portal-angular/src/lib/components/custom-switch/custom-switch.component.html","../../../projects/lib-portal-angular/src/lib/components/data-excel-exporter/data-excel-exporter.component.ts","../../../projects/lib-portal-angular/src/lib/components/data-excel-import/data-excel-importer.component.ts","../../../projects/lib-portal-angular/src/lib/components/data-excel-import/data-excel-importer.component.html","../../../projects/lib-portal-angular/src/lib/components/drag-drop-list/drag-drop-list.component.ts","../../../projects/lib-portal-angular/src/lib/components/drag-drop-list/drag-drop-list.component.html","../../../projects/lib-portal-angular/src/lib/components/dynamic-modal/dynamic-modal.component.ts","../../../projects/lib-portal-angular/src/lib/components/dynamic-modal/dynamic-modal.component.html","../../../projects/lib-portal-angular/src/lib/components/dynamic-table/dynamic-table.component.ts","../../../projects/lib-portal-angular/src/lib/components/dynamic-table/dynamic-table.component.html","../../../projects/lib-portal-angular/src/lib/components/file-upload/file-upload.component.ts","../../../projects/lib-portal-angular/src/lib/components/file-upload/file-upload.component.html","../../../projects/lib-portal-angular/src/lib/components/image-upload/image-upload.component.ts","../../../projects/lib-portal-angular/src/lib/components/image-upload/image-upload.component.html","../../../projects/lib-portal-angular/src/lib/directive/cep-mask.directive.ts","../../../projects/lib-portal-angular/src/lib/directive/cnpj-mask.directive.ts","../../../projects/lib-portal-angular/src/lib/directive/cpf-mask.directive.ts","../../../projects/lib-portal-angular/src/lib/components/imput/input.component.ts","../../../projects/lib-portal-angular/src/lib/components/imput/input.component.html","../../../projects/lib-portal-angular/src/lib/components/json-editor/json-editor.component.ts","../../../projects/lib-portal-angular/src/lib/components/json-editor/json-editor.component.html","../../../projects/lib-portal-angular/src/lib/components/json-viewer/json-viewer.component.ts","../../../projects/lib-portal-angular/src/lib/components/json-viewer/json-viewer.component.html","../../../projects/lib-portal-angular/src/lib/components/modal/modal.component.ts","../../../projects/lib-portal-angular/src/lib/components/modal/modal.component.html","../../../projects/lib-portal-angular/src/lib/components/multi-select/multi-select.component.ts","../../../projects/lib-portal-angular/src/lib/components/multi-select/multi-select.component.html","../../../projects/lib-portal-angular/src/lib/components/multi-select-category/multi-select-category.component.ts","../../../projects/lib-portal-angular/src/lib/components/multi-select-category/multi-select-category.component.html","../../../projects/lib-portal-angular/src/lib/components/pdf-data-handler/function/formatToBrazilianNumber.ts","../../../projects/lib-portal-angular/src/lib/components/pdf-data-handler/argenta-pdf-data-handler.component.ts","../../../projects/lib-portal-angular/src/lib/components/pdf-data-handler/argenta-pdf-data-handler.component.html","../../../projects/lib-portal-angular/src/lib/components/pdf-download/argenta-pdf-download.component.ts","../../../projects/lib-portal-angular/src/lib/components/pdf-download/argenta-pdf-download.component.html","../../../projects/lib-portal-angular/src/lib/components/radio/radio.component.ts","../../../projects/lib-portal-angular/src/lib/components/radio/radio.component.html","../../../projects/lib-portal-angular/src/lib/components/search-customer/search-customer.component.ts","../../../projects/lib-portal-angular/src/lib/components/search-customer/search-customer.component.html","../../../projects/lib-portal-angular/src/lib/components/search-input/search-input.component.ts","../../../projects/lib-portal-angular/src/lib/components/search-input/search-input.component.html","../../../projects/lib-portal-angular/src/lib/components/select/select.component.ts","../../../projects/lib-portal-angular/src/lib/components/tab/tab.component.ts","../../../projects/lib-portal-angular/src/lib/components/tab/tab.component.html","../../../projects/lib-portal-angular/src/lib/service/refresh-service.service.ts","../../../projects/lib-portal-angular/src/lib/components/confirmation/confirmation.service.ts","../../../projects/lib-portal-angular/src/lib/components/tables/data-table.component.ts","../../../projects/lib-portal-angular/src/lib/components/tables/data-table.component.html","../../../projects/lib-portal-angular/src/lib/components/textarea/textarea.component.ts","../../../projects/lib-portal-angular/src/lib/components/tree-node/tree-node.component.ts","../../../projects/lib-portal-angular/src/lib/components/tree-node/tree-node.component.html","../../../projects/lib-portal-angular/src/lib/icons/lucide-icons.module.ts","../../../projects/lib-portal-angular/src/lib/components/components.module.ts","../../../projects/lib-portal-angular/src/lib/components/alert/notification.service.ts","../../../projects/lib-portal-angular/src/lib/components/tables/data-paginate.service.ts","../../../projects/lib-portal-angular/src/lib/service/route-parameter.service.ts","../../../projects/lib-portal-angular/src/lib/lib-portal-angular.module.ts","../../../projects/lib-portal-angular/src/lib/service/excel-service.service.ts","../../../projects/lib-portal-angular/src/lib/function/ConvertToSnakeCase.ts","../../../projects/lib-portal-angular/src/lib/function/SetThemeColors.ts","../../../projects/lib-portal-angular/src/public-api.ts","../../../projects/lib-portal-angular/src/lib-portal-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n private userRoles: string[] = [];\n\n constructor() {\n this.loadUserRoles();\n }\n\n private loadUserRoles(): void {\n const storedUser = localStorage.getItem('user');\n if (!storedUser) {\n throw new Error('User not found in localStorage');\n }\n const { role } = JSON.parse(storedUser);\n if (!role || !Array.isArray(role)) {\n throw new Error('Roles not found or invalid in localStorage');\n }\n this.userRoles = role.map((r: string) => r.toString());\n }\n\n public hasPermission(requiredPermissions: string[]): boolean {\n if (this.userRoles.length === 0) {\n throw new Error('No roles found for the user');\n }\n return requiredPermissions.every(permission => this.userRoles.includes(permission));\n }\n}\n","\nimport { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss']\n})\nexport class AccordionArgentaComponent {\n @Input() title: string = 'Accordion Title'; // Título do accordion\n @Input() isOpen: boolean = false; // Estado inicial do accordion\n @Input() permissions: string[] = []; // Permissões necessárias para exibir o accordion\n\n @Output() toggleEvent = new EventEmitter<boolean>(); // Evento emitido ao abrir/fechar o accordion\n\n constructor(private authService: AuthService) { }\n\n ngOnInit(): void {\n this.validatePermissions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['permissions']) {\n this.validatePermissions();\n }\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true; // Se não forem passadas permissões, o accordion será exibido por padrão\n }\n\n try {\n return this.authService.hasPermission(this.permissions); // Verifica se o usuário tem as permissões\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return false; // Se ocorrer um erro ou as permissões não forem válidas, o accordion não será exibido\n }\n }\n\n toggle() {\n this.isOpen = !this.isOpen;\n this.toggleEvent.emit(this.isOpen); // Emite o estado atual (aberto ou fechado)\n }\n\n private validatePermissions(): void {\n if (!Array.isArray(this.permissions)) {\n throw new Error(`Invalid permissions: ${this.permissions}. It should be an array of strings.`);\n }\n }\n}","<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- Ícone da seta -->\n <span class=\"accordion-icon\">▼</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conteúdo do accordion -->\n </div>\n </div>\n</ng-container>\n","import { AfterViewInit, Component, Input, OnInit } from '@angular/core';\nimport { Alert } from './notification.service';\n\n@Component({\n selector: 'lib-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent implements OnInit, AfterViewInit {\n @Input() alerts: Alert[] = [];\n private closeTimeouts: { [key: string]: any } = {}; // Armazena os temporizadores para cada alerta\n\n ngOnInit(): void {\n // Inicia o temporizador de fechamento para cada alerta quando a página é carregada\n this.alerts.forEach(alert => {\n this.closeTimeouts[alert.message] = setTimeout(() => {\n this.closeAlert(alert);\n }, 6000); // Fecha após 8 segundos\n });\n }\n\n ngAfterViewInit(): void {\n // Adiciona a classe 'show' após um curto atraso para acionar a animação\n setTimeout(() => {\n this.alerts.forEach(alert => {\n const element = document.getElementById(`alert-${alert.message}`);\n if (element) {\n element.classList.add('show');\n }\n });\n }, 10); // Pequeno atraso para garantir que o elemento esteja no DOM\n }\n\n closeAlert(alert: Alert) {\n const element = document.getElementById(`alert-${alert.message}`);\n if (element) {\n element.classList.remove('show');\n setTimeout(() => {\n this.alerts = this.alerts.filter(a => a !== alert);\n }, 500); // Duração da animação de saída\n } else {\n this.alerts = this.alerts.filter(a => a !== alert);\n }\n }\n\n getAlertClass(alert: Alert) {\n return {\n 'alert-container': true,\n 'alert-dismissible': true,\n [`alert-${alert.type}`]: true\n };\n }\n\n getAlertIconClass(alert: Alert) {\n switch (alert.type) {\n case 'success':\n return 'success-icon'; // Classe para o ícone de sucesso\n case 'info':\n return 'info-icon'; // Classe para o ícone de informação\n case 'warning':\n return 'warning-icon'; // Classe para o ícone de aviso\n case 'danger':\n return 'danger-icon'; // Classe para o ícone de erro\n default:\n return '';\n }\n }\n\n onMouseEnter(alert: Alert) {\n // Cancela o temporizador quando o mouse entra no alerta\n if (this.closeTimeouts[alert.message]) {\n clearTimeout(this.closeTimeouts[alert.message]);\n delete this.closeTimeouts[alert.message];\n }\n }\n\n onMouseLeave(alert: Alert) {\n // Inicia um novo temporizador para fechar o alerta após 2 segundos quando o mouse sai do alerta\n this.closeTimeouts[alert.message] = setTimeout(() => {\n this.closeAlert(alert);\n }, 2000); // Fechar após 2 segundos\n }\n}\n","<div *ngFor=\"let alert of alerts\" \n [ngClass]=\"getAlertClass(alert)\" \n role=\"alert\" \n [id]=\"'alert-' + alert.message\"\n (mouseenter)=\"onMouseEnter(alert)\" \n (mouseleave)=\"onMouseLeave(alert)\">\n <button type=\"button\" class=\"close\" (click)=\"closeAlert(alert)\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div class=\"alert-header\">\n <span [ngClass]=\"getAlertIconClass(alert)\" class=\"alert-icon\"></span>\n <strong>{{ alert.title }}</strong>\n </div>\n <div class=\"alert-body\">\n {{ alert.message }}\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'argenta-app-background',\n template: `\n <div class=\"row row-car\">\n <div class=\"card\">\n <div class=\"card-content\">\n <ng-content></ng-content>\n </div>\n </div> \n </div>\n `,\n styles: [` \n .card {\n border-radius: 10px;\n padding: 1rem;\n background-color: #FFFFFF; /* Cor de fundo ajustada */\n border: none; /* Remover borda */\n }\n .row-car{\n margin-left: -0.8rem;\n margin-right: -0.8rem;\n }\n `]\n})\nexport class AppBackgroundComponent { }\n","export enum ButtonClasses {\n Primary = 'btn-primary',\n Secondary = 'btn-secondary',\n Success = 'btn-success',\n Danger = 'btn-danger',\n Warning = 'btn-warning',\n Info = 'btn-info',\n Light = 'btn-light',\n Dark = 'btn-dark',\n Link = 'btn-link'\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from \"@angular/core\";\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\";\n\n@Component({\n selector: \"sim-app-badge\",\n templateUrl: \"./badge.component.html\",\n styleUrls: [\"./badge.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n @Input() label: string = \"Mensagem\";\n @Input() badgeContent: string = \"+45\";\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n @Input() btnClass: ButtonClasses = ButtonClasses.Primary;\n @Output() buttonClick: EventEmitter<void> = new EventEmitter<void>();\n\n isHovered: boolean = false;\n isClicked: boolean = false;\n isActive: boolean = false;\n\n getDynamicStyles() {\n let backgroundColor = \"\";\n let textColor = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--text-color\")\n .trim();\n let borderColor = \"\";\n\n const getCSSVariable = (variable: string) =>\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim();\n\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Secondary:\n backgroundColor = getCSSVariable(\"--secondary-color\");\n break;\n case ButtonClasses.Success:\n backgroundColor = getCSSVariable(\"--success-color\");\n break;\n case ButtonClasses.Danger:\n backgroundColor = getCSSVariable(\"--danger-color\");\n break;\n case ButtonClasses.Warning:\n backgroundColor = getCSSVariable(\"--warning-color\");\n break;\n case ButtonClasses.Info:\n backgroundColor = getCSSVariable(\"--info-color\");\n break;\n case ButtonClasses.Light:\n backgroundColor = getCSSVariable(\"--light-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Dark:\n backgroundColor = getCSSVariable(\"--dark-color\");\n break;\n case ButtonClasses.Link:\n backgroundColor = \"transparent\";\n borderColor = getCSSVariable(\"--link-border-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n default:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n }\n\n const hoverFilter = this.isHovered ? \"brightness(80%)\" : \"none\";\n const activeFilter = this.isClicked ? \"brightness(60%)\" : hoverFilter;\n\n return {\n \"margin-top\": `${this.marginTop}rem`,\n \"margin-bottom\": `${this.marginBottom}rem`,\n \"margin-left\": `${this.marginLeft}rem`,\n \"margin-right\": `${this.marginRight}rem`,\n \"background-color\": backgroundColor,\n color: textColor,\n border: borderColor ? `1px solid ${borderColor}` : \"none\",\n transition: \"background-color 0.3s, border-color 0.3s, filter 0.3s\",\n filter: activeFilter,\n };\n }\n\n onClick() {\n this.buttonClick.emit();\n }\n\n @HostListener(\"mouseenter\")\n onMouseEnter() {\n this.isHovered = true;\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave() {\n this.isHovered = false;\n this.isClicked = false;\n }\n\n @HostListener(\"mousedown\")\n onMouseDown() {\n this.isClicked = true;\n }\n\n @HostListener(\"mouseup\")\n onMouseUp() {\n this.isClicked = false;\n }\n}\n","<button\n class=\"notification-button\"\n [ngStyle]=\"getDynamicStyles()\"\n (click)=\"onClick()\"\n [class.hovered]=\"isHovered\"\n [class.clicked]=\"isClicked\"\n (mousedown)=\"onMouseDown()\"\n (mouseup)=\"onMouseUp()\"\n (mouseleave)=\"onMouseLeave()\"\n (mouseenter)=\"onMouseEnter()\"\n>\n {{ label }}\n <span class=\"badge\">{{ badgeContent }}</span>\n</button>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit,\n OnChanges,\n SimpleChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ElementRef,\n ViewChild,\n AfterViewInit,\n Renderer2,\n} from \"@angular/core\";\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\";\nimport { AuthService } from \"../../service/auth-service.service\";\n\n@Component({\n selector: \"argenta-custom-button\",\n templateUrl: \"./button.component.html\",\n styleUrls: [\"./button.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() type: string = \"button\";\n @Input() label: string = \"Submit\";\n @Input() btnClass: ButtonClasses = ButtonClasses.Primary;\n @Input() fontSize: string = \"1rem\";\n @Input() disabled: boolean = false;\n @Input() autofocus: boolean = false;\n @Input() form: string | null = null;\n @Input() formaction: string | null = null;\n @Input() formenctype: string | null = null;\n @Input() formmethod: string | null = null;\n @Input() formnovalidate: boolean = false;\n @Input() formtarget: string | null = null;\n @Input() name: string | null = null;\n @Input() value: string | null = null;\n @Input() permissions: string[] = [];\n\n @Output() onButtonClick: EventEmitter<Event> = new EventEmitter<Event>();\n @ViewChild(\"buttonElement\") buttonElement!: ElementRef<HTMLButtonElement>;\n\n private isHovered: boolean = false;\n private isActive: boolean = false;\n\n clicked: boolean = false;\n\n constructor(\n private authService: AuthService,\n private cdr: ChangeDetectorRef,\n private renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.validateInputs();\n }\n\n ngAfterViewInit(): void {\n this.addHoverEffect(); // Chama o método para aplicar o efeito de hover\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes) {\n this.validateInputs();\n }\n }\n\n private validateInputs(): void {\n const validTypes = [\"button\", \"submit\", \"reset\"];\n const validClasses = Object.values(ButtonClasses);\n\n if (!validTypes.includes(this.type)) {\n throw new Error(\n `Invalid type: ${this.type}. Allowed values are: ${validTypes.join(\n \", \"\n )}`\n );\n }\n\n if (!validClasses.includes(this.btnClass)) {\n throw new Error(\n `Invalid btnClass: ${\n this.btnClass\n }. Allowed values are: ${validClasses.join(\", \")}`\n );\n }\n\n if (typeof this.disabled !== \"boolean\") {\n throw new Error(\n `Invalid disabled value: ${this.disabled}. It should be a boolean.`\n );\n }\n\n if (typeof this.autofocus !== \"boolean\") {\n throw new Error(\n `Invalid autofocus value: ${this.autofocus}. It should be a boolean.`\n );\n }\n\n if (this.permissions && !Array.isArray(this.permissions)) {\n throw new Error(\n `Invalid permissions value: ${this.permissions}. It should be an array of strings.`\n );\n }\n }\n\n onClick(event: Event) {\n this.clicked = true;\n this.onButtonClick.emit(event);\n setTimeout(() => {\n this.clicked = false;\n this.cdr.detectChanges();\n }, 80);\n }\n\n get dynamicStyles() {\n return this.calculateDynamicStyles();\n }\n\n private calculateDynamicStyles() {\n let backgroundColor = \"\";\n let textColor = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--text-color\")\n .trim(); // Cor de texto padrão\n let borderColor = \"\";\n\n const getCSSVariable = (variable: string) =>\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim();\n\n if (this.clicked) {\n backgroundColor = \"rgba(126, 126, 126, 0.25)\"; // Cor temporária ao clicar\n } else {\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Secondary:\n backgroundColor = getCSSVariable(\"--secondary-color\");\n break;\n case ButtonClasses.Success:\n backgroundColor = getCSSVariable(\"--success-color\");\n break;\n case ButtonClasses.Danger:\n backgroundColor = getCSSVariable(\"--danger-color\");\n break;\n case ButtonClasses.Warning:\n backgroundColor = getCSSVariable(\"--warning-color\");\n break;\n case ButtonClasses.Info:\n backgroundColor = getCSSVariable(\"--info-color\");\n break;\n case ButtonClasses.Light:\n backgroundColor = getCSSVariable(\"--light-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Dark:\n backgroundColor = getCSSVariable(\"--dark-color\");\n break;\n case ButtonClasses.Link:\n backgroundColor = \"transparent\";\n borderColor = getCSSVariable(\"--link-border-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n default:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n }\n }\n\n const hoverFilter = this.isHovered ? \"brightness(80%)\" : \"none\";\n const activeFilter = this.isActive ? \"brightness(60%)\" : hoverFilter;\n\n return {\n \"font-size\": this.fontSize,\n \"background-color\": backgroundColor,\n color: textColor,\n border: borderColor ? `1px solid ${borderColor}` : \"none\",\n transition: \"background-color 0.3s, border-color 0.3s, filter 0.3s\",\n filter: activeFilter,\n };\n }\n\n private addHoverEffect(): void {\n const buttonElement = this.buttonElement.nativeElement;\n\n if (buttonElement) {\n // Evento de mouseover para adicionar box-shadow\n this.renderer.listen(buttonElement, \"mouseover\", () => {\n const hoverColor = this.calculateHoverColor(); // Calcula a cor de hover\n this.renderer.setStyle(\n buttonElement,\n \"box-shadow\",\n `0 0 0 0.15rem ${hoverColor}`\n );\n });\n\n // Evento de mouseout para remover o box-shadow\n this.renderer.listen(buttonElement, \"mouseout\", () => {\n this.renderer.setStyle(buttonElement, \"box-shadow\", \"none\");\n });\n }\n }\n\n // Calcula a cor de hover com base na classe de botão\n private calculateHoverColor(): string {\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n case ButtonClasses.Secondary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--secondary-color\")\n .trim();\n case ButtonClasses.Success:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--success-color\")\n .trim();\n case ButtonClasses.Danger:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--danger-color\")\n .trim();\n case ButtonClasses.Warning:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--warning-color\")\n .trim();\n case ButtonClasses.Info:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--info-color\")\n .trim();\n case ButtonClasses.Link:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"light-color\")\n .trim();\n case ButtonClasses.Light:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--light-color\")\n .trim();\n case ButtonClasses.Dark:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--dark-color\")\n .trim();\n default:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n }\n }\n\n // Calcula a cor de fundo original\n private calculateOriginalColor(): string {\n switch (this.btnClass) {\n case ButtonClasses.Primary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n case ButtonClasses.Secondary:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--secondary-color\")\n .trim();\n case ButtonClasses.Success:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--success-color\")\n .trim();\n case ButtonClasses.Danger:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--danger-color\")\n .trim();\n case ButtonClasses.Warning:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--warning-color\")\n .trim();\n case ButtonClasses.Info:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--info-color\")\n .trim();\n case ButtonClasses.Link:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"transparent\")\n .trim();\n case ButtonClasses.Light:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--light-color\")\n .trim();\n case ButtonClasses.Dark:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--dark-color\")\n .trim();\n default:\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--primary-color\")\n .trim();\n }\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n onCancel(event: Event) {\n console.log(\"Cancel button clicked\", event);\n // Lógica para o cancelamento\n }\n\n onSave(event: Event) {\n console.log(\"Save button clicked\", event);\n // Lógica para salvar alterações\n }\n}\n","<ng-container *ngIf=\"hasPermission()\">\n <button\n #buttonElement\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.type]=\"type\"\n >\n {{ label }}\n </button>\n</ng-container>\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\nimport { ButtonClasses } from '../../enum/ButtonClassesEnum';\n\n@Component({\n selector: 'argenta-basic-registration',\n templateUrl: './basic-registration.component.html',\n styleUrls: ['./basic-registration.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BasicRegistrationComponent {\n @Input() cancelLabel: string = 'Cancelar';\n @Input() saveLabel: string = 'Salvar';\n @Input() cancelPermissions: string[] = [];\n @Input() savePermissions: string[] = [];\n\n @Output() cancelClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() saveClick: EventEmitter<Event> = new EventEmitter<Event>();\n ButtonClasses = ButtonClasses;\n\n constructor(private authService: AuthService) { }\n\n hasPermission(permissions: string[]): boolean {\n if (!permissions || permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n\n handleCancel(event: Event) {\n this.cancelClick.emit(event);\n }\n\n handleSave(event: Event) {\n this.saveClick.emit(event);\n }\n}\n","<div class=\"row row-car\">\n <div class=\"card\">\n <div class=\"card-content\" style=\"margin-top: 2.5rem;\">\n <ng-content></ng-content> <!-- Permite a inclusão de conteúdo dinâmico -->\n </div>\n <div class=\"card-footer\">\n <div class=\"button-group\">\n <argenta-custom-button\n *ngIf=\"hasPermission(cancelPermissions)\"\n [type]=\"'button'\"\n [label]=\"cancelLabel\"\n [btnClass]=\"ButtonClasses.Light\"\n (onButtonClick)=\"handleCancel($event)\"\n class=\"argenta-custom-button\">\n </argenta-custom-button>\n <argenta-custom-button\n *ngIf=\"hasPermission(savePermissions)\"\n [type]=\"'submit'\"\n [label]=\"saveLabel\"\n [btnClass]=\"ButtonClasses.Primary\"\n (onButtonClick)=\"handleSave($event)\"\n class=\"argenta-custom-button\">\n </argenta-custom-button>\n </div>\n </div>\n </div> \n</div>\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'argenta-calendar',\n templateUrl: './calendar-argenta.component.html',\n styleUrls: ['./calendar-argenta.component.scss'],\n})\nexport class CalendarArgentaComponent implements OnInit, OnChanges {\n @Input() id: string = 'argenta-calendar';\n @Input() placeholder: string = 'Select a date';\n @Input() label: string = 'Select a date';\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() locale: string = 'pt';\n @Input() useTime: boolean = false; // Incluir ou não a hora\n @Input() initialDate: string | null = null; // Data inicial no modo de data única\n @Input() rangeMode: boolean = false; // Ativa o modo de intervalo de datas\n @Input() startDate: string | null = null; // Data de início do intervalo\n @Input() endDate: string | null = null; // Data de fim do intervalo\n @Input() closeButtonLabel: string = 'Fechar'; // Texto do botão de fechar\n @Output() rangeChange = new EventEmitter<{ start: string, end: string }>(); // Evento que emite data única ou intervalo\n\n currentYear: number = new Date().getFullYear();\n currentMonth: number = new Date().getMonth();\n selectedDate: Date | null = null;\n selectedStartDate: Date | null = null;\n selectedEndDate: Date | null = null;\n isCalendarVisible: boolean = false;\n inputDate: string = '';\n invalidDate: boolean = false;\n isSelectingStart: boolean = true; // Controla se estamos selecionando a data inicial ou final\n startTime: string = '';\n endTime: string = '';\n selectedTime: string = '';\n\n locales: any = {\n en: {\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'\n ],\n daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n invalidDateMessage: 'Invalid date. Please enter a date in the format dd/MM/yyyy',\n startTimeLabel: 'Start Time', \n endTimeLabel: 'End Time',\n },\n pt: {\n months: [\n 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'\n ],\n daysOfWeek: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n invalidDateMessage: 'Data inválida. Por favor, insira uma data no formato dd/MM/yyyy',\n startTimeLabel: 'Hora de Início', \n endTimeLabel: 'Hora de Fim',\n },\n es: {\n months: [\n 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'\n ],\n daysOfWeek: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'],\n invalidDateMessage: 'Fecha inválida. Por favor, ingrese una fecha en el formato dd/MM/yyyy',\n startTimeLabel: 'Hora de Inicio', \n endTimeLabel: 'Hora de Fin', \n }\n };\n\n ngOnInit(): void {\n if (this.rangeMode) {\n if (this.startDate) {\n this.selectedStartDate = this.parseDate(this.startDate);\n this.startTime = this.formatTimeForDisplay(this.selectedStartDate);\n }\n if (this.endDate) {\n this.selectedEndDate = this.parseDate(this.endDate);\n this.endTime = this.formatTimeForDisplay(this.selectedEndDate);\n }\n this.updateInputForRange(); // Atualiza o input no modo range com horas\n } else {\n if (this.initialDate) {\n this.updateCalendar(this.initialDate); // Atualiza o input único com a data inicial\n this.selectedTime = this.formatTimeForDisplay(this.selectedDate);\n }\n }\n }\n \n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['initialDate'] && changes['initialDate'].currentValue) {\n this.updateCalendar(changes['initialDate'].currentValue);\n }\n }\n\n // Atualiza o calendário para exibir a data única e a hora\n updateCalendar(dateString: string): void {\n const parsedDate = this.parseDate(dateString);\n if (parsedDate && this.validateDate(dateString)) {\n this.selectedDate = parsedDate;\n this.currentYear = parsedDate.getFullYear();\n this.currentMonth = parsedDate.getMonth();\n this.inputDate = this.formatDateForDisplay(parsedDate); // Inclui a hora no input principal\n this.emitSingleOrRange(); // Emite data única ou intervalo\n this.invalidDate = false;\n } else {\n this.invalidDate = true;\n }\n }\n\n onInputChange(event: any): void {\n const inputValue = event.target.value;\n this.inputDate = this.applyDateMask(inputValue);\n\n if (this.rangeMode) {\n const dateParts = this.inputDate.split(' - ');\n if (dateParts.length === 2) {\n const [startDate, endDate] = dateParts;\n\n // Valida as duas partes do intervalo\n if (this.validateDate(startDate) && this.validateDate(endDate)) {\n this.invalidDate = false;\n const parsedStartDate = this.parseDate(startDate);\n const parsedEndDate = this.parseDate(endDate);\n\n if (parsedStartDate && parsedEndDate) {\n this.selectedStartDate = parsedStartDate;\n this.selectedEndDate = parsedEndDate;\n this.emitSingleOrRange(); // Emite o intervalo atualizado\n }\n } else {\n this.invalidDate = true;\n }\n }\n } else {\n // Valida data única\n if ((this.useTime && this.inputDate.length === 16) || (!this.useTime && this.inputDate.length === 10)) {\n if (this.validateDate(this.inputDate)) {\n this.invalidDate = false;\n const parsedDate = this.parseDate(this.inputDate);\n if (parsedDate) {\n this.selectedDate = parsedDate;\n this.emitSingleOrRange(); // Emite a data única atualizada\n }\n } else {\n this.invalidDate = true;\n }\n }\n }\n }\n\n\n // Atualiza o input no modo intervalo\n updateInputForRange(): void {\n if (this.selectedStartDate && this.selectedEndDate) {\n const formattedStart = this.formatDateForDisplay(this.selectedStartDate);\n const formattedEnd = this.formatDateForDisplay(this.selectedEndDate);\n this.inputDate = `${formattedStart} - ${formattedEnd}`;\n } else if (this.selectedStartDate) {\n this.inputDate = this.formatDateForDisplay(this.selectedStartDate);\n }\n }\n\n\n /// Emite data única ou intervalo, incluindo horas\n emitSingleOrRange(): void {\n if (this.rangeMode) {\n const formattedStart = this.selectedStartDate ? this.formatDateForDisplay(this.selectedStartDate) : '';\n const formattedEnd = this.selectedEndDate ? this.formatDateForDisplay(this.selectedEndDate) : '';\n this.inputDate = `${formattedStart} - ${formattedEnd}`; // Atualiza o input principal com o range e horas\n this.rangeChange.emit({ start: formattedStart, end: formattedEnd });\n } else {\n const formattedDate = this.selectedDate ? this.formatDateForDisplay(this.selectedDate) : '';\n this.inputDate = formattedDate; // Atualiza o input principal com a data única e hora\n this.rangeChange.emit({ start: formattedDate, end: '' });\n }\n }\n // Função para tratar mudanças nas horas\n onTimeChange(type: string): void {\n if (type === 'start') {\n if (this.selectedStartDate) {\n const [hours, minutes] = this.startTime ? this.startTime.split(':') : ['00', '00'];\n this.selectedStartDate.setHours(+hours, +minutes);\n }\n } else if (type === 'end') {\n if (this.selectedEndDate) {\n const [hours, minutes] = this.endTime ? this.endTime.split(':') : ['00', '00'];\n this.selectedEndDate.setHours(+hours, +minutes);\n }\n } else if (type === 'single') {\n if (this.selectedDate) {\n const [hours, minutes] = this.selectedTime ? this.selectedTime.split(':') : ['00', '00'];\n this.selectedDate.setHours(+hours, +minutes);\n }\n }\n this.emitSingleOrRange(); // Atualiza o valor no input principal\n }\n\n\n\n // Função para formatação da hora no input de hora\n formatTimeForDisplay(date: Date | null): string {\n if (!date) return '';\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n return `${hours}:${minutes}`;\n }\n\n\n // Método para selecionar uma data no calendário\n selectDate(day: number): void {\n const date = new Date(this.currentYear, this.currentMonth, day);\n\n if (this.rangeMode) {\n // Lógica para rangeMode\n if (this.isSelectingStart) {\n this.selectedStartDate = date;\n if (this.startTime) {\n const [hours, minutes] = this.startTime.split(':');\n this.selectedStartDate.setHours(+hours, +minutes);\n } else {\n this.selectedStartDate.setHours(0, 0);\n this.startTime = '00:00';\n }\n this.isSelectingStart = false;\n } else {\n this.selectedEndDate = date;\n if (this.endTime) {\n const [hours, minutes] = this.endTime.split(':');\n this.selectedEndDate.setHours(+hours, +minutes);\n } else {\n this.selectedEndDate.setHours(0, 0);\n this.endTime = '00:00';\n }\n this.isSelectingStart = true;\n this.emitSingleOrRange();\n }\n this.updateInputForRange();\n // O calendário só será fechado ao clicar no botão \"Fechar\"\n } else {\n // Lógica para quando não está em rangeMode\n this.selectedDate = date;\n if (this.selectedTime) {\n const [hours, minutes] = this.selectedTime.split(':');\n this.selectedDate.setHours(+hours, +minutes);\n } else {\n this.selectedDate.setHours(0, 0);\n this.selectedTime = '00:00';\n }\n this.inputDate = this.formatDateForDisplay(date);\n this.emitSingleOrRange();\n\n // **Fechar o calendário apenas se `useTime` for false**\n if (!this.useTime) {\n this.isCalendarVisible = false; // Fecha o calendário automaticamente se `useTime` for false\n }\n // Se `useTime` for true, o calendário permanece aberto para inserir a hora\n }\n }\n\n\n\n applyDateMask(inputValue: string): string {\n // Remove qualquer caractere que não seja numérico\n let digitsOnly = inputValue.replace(/\\D/g, '');\n\n if (this.rangeMode) {\n const maxLength = this.useTime ? 28 : 17; // Ajusta o comprimento máximo para intervalo com ou sem tempo\n\n // Certifica-se de que a entrada não excede o comprimento permitido\n if (digitsOnly.length > maxLength) {\n digitsOnly = digitsOnly.substring(0, maxLength);\n }\n\n // Primeiro intervalo (start date)\n let day1 = digitsOnly.substring(0, 2);\n let month1 = digitsOnly.substring(2, 4);\n let year1 = digitsOnly.substring(4, 8);\n let hour1 = digitsOnly.substring(8, 10);\n let minute1 = digitsOnly.substring(10, 12);\n\n // Cria a data formatada para a primeira parte (start date)\n let maskedDate = `${day1}/${month1}/${year1}`;\n if (this.useTime && hour1 && minute1) {\n maskedDate += ` ${hour1}:${minute1}`;\n }\n\n // Adiciona o separador ' - ' se houver dados para o segundo intervalo\n if (digitsOnly.length > 12) {\n maskedDate += ' - ';\n }\n\n // Segundo intervalo (end date)\n let day2 = digitsOnly.substring(12, 14);\n let month2 = digitsOnly.substring(14, 16);\n let year2 = digitsOnly.substring(16, 20);\n let hour2 = digitsOnly.substring(20, 22);\n let minute2 = digitsOnly.substring(22, 24);\n\n let endDatePart = `${day2}/${month2}/${year2}`;\n if (this.useTime && hour2 && minute2) {\n endDatePart += ` ${hour2}:${minute2}`;\n }\n\n // Adiciona a segunda parte (end date) ao input, se aplicável\n if (digitsOnly.length > 12) {\n maskedDate += endDatePart;\n }\n\n return maskedDate;\n } else {\n const maxLength = this.useTime ? 16 : 10;\n if (digitsOnly.length > maxLength) {\n digitsOnly = digitsOnly.substring(0, maxLength);\n }\n\n let day = digitsOnly.substring(0, 2);\n let month = digitsOnly.substring(2, 4);\n let year = digitsOnly.substring(4, 8);\n let hour = digitsOnly.substring(8, 10);\n let minute = digitsOnly.substring(10, 12);\n\n let maskedDate = `${day}/${month}/${year}`;\n if (this.useTime && hour && minute) {\n maskedDate += ` ${hour}:${minute}`;\n }\n\n return maskedDate;\n }\n }\n\n\n\n // Validação da data\n validateDate(inputValue: string): boolean {\n const [datePart, timePart] = inputValue.split(' ');\n const [dayStr, monthStr, yearStr] = datePart.split('/');\n const day = Number(dayStr);\n const month = Number(monthStr);\n const year = Number(yearStr);\n\n if (month < 1 || month > 12 || yearStr.length !== 4 || isNaN(year)) {\n return false;\n }\n\n const lastDayOfMonth = new Date(year, month, 0).getDate();\n if (day < 1 || day > lastDayOfMonth) {\n return false;\n }\n\n if (this.useTime && timePart) {\n const [hourStr, minuteStr] = timePart.split(':');\n const hour = Number(hourStr);\n const minute = Number(minuteStr);\n if (hour < 0 || hour > 23 || minute < 0 || minute > 59 || isNaN(hour) || isNaN(minute)) {\n return false;\n }\n }\n\n return true;\n }\n\n handleKeyPress(event: KeyboardEvent): void {\n const charCode = event.key.charCodeAt(0);\n\n // Permitir apenas números e barra \"/\"\n if ((charCode < 48 || charCode > 57) && charCode !== 47) {\n event.preventDefault(); // Bloqueia a inserção de caracteres não permitidos\n }\n\n // Limita o tamanho da entrada conforme o tipo de dado (com ou sem hora)\n if (this.inputDate.replace(/\\D/g, '').length >= (this.useTime ? 12 : 8)) {\n event.preventDefault(); // Limita o número de caracteres permitidos\n }\n }\n\n\n // Fecha o calendário\n closeCalendar(): void {\n this.isCalendarVisible = false;\n }\n\n // Alterna a visibilidade do calendário\n toggleCalendar(): void {\n this.isCalendarVisible = !this.isCalendarVisible;\n }\n\n // Formata a data e hora para exibição no input principal\n formatDateForDisplay(date: Date): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n let formattedDate = `${day}/${month}/${year}`;\n\n if (this.useTime) {\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n formattedDate += ` ${hours}:${minutes}`;\n }\n\n return formattedDate;\n }\n\n\n // Formata a data para emitir no evento\n formatDateForEmit(date: Date): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n let formattedDate = `${day}/${month}/${year}`;\n if (this.useTime) {\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n formattedDate += ` - ${hours}:${minutes}`;\n }\n return formattedDate;\n }\n\n // Função para parsing de string para Date\n parseDate(dateStr: string): Date | null {\n const [datePart, timePart] = dateStr.split(' ');\n const [day, month, year] = datePart.split('/').map(Number);\n if (!day || !month || !year) {\n return null;\n }\n\n const date = new Date(year, month - 1, day);\n if (this.useTime && timePart) {\n const [hour, minute] = timePart.split(':').map(Number);\n date.setHours(hour || 0, minute || 0);\n }\n return date;\n }\n\n // Gera a lista de dias no mês atual\n get daysInMonth(): any[] {\n const firstDayOfMonth = new Date(this.currentYear, this.currentMonth, 1).getDay();\n const totalDaysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate();\n const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => i + 1);\n const leadingEmptyDays = Array(firstDayOfMonth).fill(null); // Dias vazios antes do primeiro dia do mês\n return [...leadingEmptyDays, ...daysArray];\n }\n\n // Verifica se um dia está selecionado\n isSelected(day: number): boolean {\n if (!this.selectedDate) return false;\n const selectedDay = this.selectedDate.getDate();\n const selectedMonth = this.selectedDate.getMonth();\n const selectedYear = this.selectedDate.getFullYear();\n return selectedDay === day && selectedMonth === this.currentMonth && selectedYear === this.currentYear;\n }\n\n // Verifica se o dia é hoje\n isToday(day: number): boolean {\n const today = new Date();\n return today.getFullYear() === this.currentYear && today.getMonth() === this.currentMonth && today.getDate() === day;\n }\n\n // Verifica se a data está desabilitada\n isDateDisabled(day: number): boolean {\n const date = new Date(this.currentYear, this.currentMonth, day);\n if (this.minDate && date < this.minDate) return true;\n if (this.maxDate && date > this.maxDate) return true;\n return false;\n }\n\n // Verifica se um dia está no intervalo selecionado\n isInRange(day: number): boolean {\n if (!this.selectedStartDate || !this.selectedEndDate) return false;\n const date = new Date(this.currentYear, this.currentMonth, day);\n return date >= this.selectedStartDate && date <= this.selectedEndDate;\n }\n\n // Avança para o próximo mês\n nextMonth(): void {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.currentYear++;\n } else {\n this.currentMonth++;\n }\n }\n\n // Retrocede para o mês anterior\n prevMonth(): void {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.currentYear--;\n } else {\n this.currentMonth--;\n }\n }\n\n // Retorna a lista de meses de acordo com o locale\n get months(): string[] {\n return this.locales[this.locale]?.months || this.locales['en'].months;\n }\n\n // Retorna a lista de dias da semana de acordo com o locale\n get daysOfWeek(): string[] {\n return this.locales[this.locale]?.daysOfWeek || this.locales['en'].daysOfWeek;\n }\n\n \n\n}\n","<div class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-wrapper\">\n <input\n id=\"{{ id }}\"\n type=\"text\"\n class=\"custom-input\"\n [attr.placeholder]=\"rangeMode && useTime ? 'dd/MM/yyyy HH:mm - dd/MM/yyyy HH:mm' : \n rangeMode && !useTime ? 'dd/MM/yyyy - dd/MM/yyyy' :(!rangeMode && useTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy')\"\n [value]=\"inputDate\"\n (input)=\"onInputChange($event)\"\n (keypress)=\"handleKeyPress($event)\"\n (click)=\"toggleCalendar()\"\n />\n <lucide-icon name=\"calendar\" class=\"calendar-icon\"></lucide-icon>\n </div>\n\n <div *ngIf=\"invalidDate\" class=\"error-message\">\n {{ locales[locale].invalidDateMessage }}\n <span *ngIf=\"useTime\"> HH:mm.</span>\n </div>\n\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" [ngClass]=\"{ open: isCalendarVisible }\">\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <button (click)=\"prevMonth()\">&#8249;</button>\n <span>{{ months[currentMonth] }} {{ currentYear }}</span>\n <button (click)=\"nextMonth()\">&#8250;</button>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"calendar-day-names\">\n <span *ngFor=\"let day of daysOfWeek\">{{ day }}</span>\n </div>\n\n <div class=\"calendar-days\">\n <span\n *ngFor=\"let day of daysInMonth; let i = index\"\n [class.today]=\"isToday(day)\"\n [class.selected]=\"isSelected(day)\"\n [class.in-range]=\"isInRange(day)\"\n [class.disabled]=\"isDateDisabled(day)\"\n (click)=\"day ? selectDate(day) : null\"\n >\n {{ day ? day : \"\" }}\n </span>\n </div>\n </div>\n\n <!-- Inputs para inserção das horas -->\n <div *ngIf=\"useTime\" class=\"time-inputs\">\n <!-- Campo de hora de início -->\n <div *ngIf=\"rangeMode\" class=\"time-input\">\n <label>{{ locales[locale]?.startTimeLabel || 'Hora de Início' }}</label> <!-- Usando tradução -->\n <input type=\"time\" [(ngModel)]=\"startTime\" (change)=\"onTimeChange('start')\" />\n </div>\n\n <!-- Campo de hora de fim -->\n <div *ngIf=\"rangeMode\" class=\"time-input\">\n <label>{{ locales[locale]?.endTimeLabel || 'Hora de Fim' }}</label> <!-- Usando tradução -->\n <input type=\"time\" [(ngModel)]=\"endTime\" (change)=\"onTimeChange('end')\" />\n </div>\n\n <!-- Campo de hora única (se não for range) -->\n <div *ngIf=\"!rangeMode\" class=\"time-input\">\n <label>{{ locales[locale]?.startTimeLabel || 'Hora' }}</label> <!-- Usando o label de início -->\n <input type=\"time\" [(ngModel)]=\"selectedTime\" (change)=\"onTimeChange('single')\" />\n </div>\n </div>\n\n <!-- Botão de fechar o calendário -->\n <button class=\"close-button\" (click)=\"closeCalendar()\">{{ closeButtonLabel }}</button>\n </div>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from \"@angular/core\";\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\";\n\n@Component({\n selector: \"argenta-card-info\",\n templateUrl: \"./card-info.component.html\",\n styleUrls: [\"./card-info.component.scss\"],\n})\nexport class CardInfoComponent implements OnInit {\n @Input() title: string = \"Title\";\n @Input() titleCard: string = \"Title\";\n @Input() subTitleCard: string = \"sub-title\";\n @Input() cardClass: ButtonClasses = ButtonClasses.Primary;\n @Input() iconCard: string = \"check\";\n clicked: boolean = false;\n @Output() onCardClick: EventEmitter<Event> = new EventEmitter<Event>();\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n get dynamicStyles() {\n return this.calculateDynamicStyles();\n }\n\n onClick(event: Event) {\n this.clicked = true;\n this.onCardClick.emit(event);\n setTimeout(() => {\n this.clicked = false;\n this.cdr.detectChanges();\n }, 80);\n }\n\n private calculateDynamicStyles() {\n let backgroundColor = \"\";\n let textColor = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--text-color\")\n .trim();\n let borderColor = \"\";\n\n const getCSSVariable = (variable: string) =>\n getComputedStyle(document.documentElement)\n .getPropertyValue(variable)\n .trim();\n\n switch (this.cardClass) {\n case ButtonClasses.Primary:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Secondary:\n backgroundColor = getCSSVariable(\"--secondary-color\");\n break;\n case ButtonClasses.Success:\n backgroundColor = getCSSVariable(\"--success-color\");\n break;\n case ButtonClasses.Danger:\n backgroundColor = getCSSVariable(\"--danger-color\");\n break;\n case ButtonClasses.Warning:\n backgroundColor = getCSSVariable(\"--warning-color\");\n break;\n case ButtonClasses.Info:\n backgroundColor = getCSSVariable(\"--info-color\");\n break;\n case ButtonClasses.Light:\n backgroundColor = getCSSVariable(\"--light-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n case ButtonClasses.Dark:\n backgroundColor = getCSSVariable(\"--dark-color\");\n break;\n case ButtonClasses.Link:\n backgroundColor = \"transparent\";\n borderColor = getCSSVariable(\"--link-border-color\");\n textColor = getCSSVariable(\"--primary-color\");\n break;\n default:\n backgroundColor = getCSSVariable(\"--primary-color\");\n break;\n }\n\n return {\n \"background-color\": backgroundColor,\n color: textColor,\n border: borderColor ? `1px solid ${borderColor}` : \"none\",\n };\n }\n}\n","<div\n class=\"card order-card\"\n (click)=\"onClick($event)\"\n [ngClass]=\"cardClass\"\n [ngStyle]=\"dynamicStyles\"\n title=\"{{title}}\"\n>\n <div class=\"card-body\">\n <h2 class=\"text-white\">{{titleCard}}</h2>\n <h3 class=\"text-white\">{{subTitleCard}}</h3>\n <lucide-icon class=\"icon-card\" name=\"{{iconCard}}\" [size]=\"100\"></lucide-icon>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'sim-app-card',\n template: `\n <div class=\"card mb-3\">\n <div class=\"card-header\">\n <h3>{{ cardTitle }}</h3>\n </div>\n <div class=\"card-body\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class CardComponent {\n @Input() cardTitle: string = 'Default Title';\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'sim-app-checkbox',\n template: `\n <div\n class=\"form-group form-check\"\n [ngStyle]=\"{\n 'margin-top': marginTop + 'rem',\n 'margin-bottom': marginBottom + 'rem',\n 'margin-left': marginLeft + 'rem',\n 'margin-right': marginRight + 'rem'\n }\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n [id]=\"id\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n />\n <label class=\"form-check-label\" [for]=\"id\">{{ label }}</label>\n </div>\n `,\n styles: [`\n .form-check-input {\n font-family: Arial, sans-serif;\n color: #333;\n font-size: 1rem; /* Define o tamanho padrão da fonte para o input */\n }\n .form-check-label {\n font-family: Arial, sans-serif;\n color: #333;\n font-size: 1rem; /* Define o tamanho padrão da fonte para o label */\n font-weight: bold;\n }\n `],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() id: string = 'defaultCheckbox';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() label: string = 'Check me out';\n\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChangeFn: (value: boolean) => void = () => { };\n private onTouchedFn: () => void = () => { };\n\n onChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.onChangeFn(this.checked);\n this.checkedChange.emit(this.checked);\n }\n\n writeValue(value: boolean): void {\n this.checked = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport hljs from 'highlight.js';\n\n@Component({\n selector: 'app-code-highlight',\n template: `\n <div class=\"code-container\">\n <pre><code #codeElement [innerHTML]=\"highlightedCode\"></code></pre>\n <button (click)=\"copyCode()\">Copy</button>\n </div>\n `,\n styles: [`\n .code-container {\n position: relative;\n }\n pre {\n background-color: #2d2d2d;\n color: #f8f8f2;\n padding: 1rem;\n border-radius: 5px;\n overflow-x: auto;\n }\n button {\n position: absolute;\n top: 10px;\n right: 10px;\n background-color: #f8f8f2;\n border: none;\n padding: 0.5rem 1rem;\n cursor: pointer;\n border-radius: 5px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n transition: background-color 0.3s, transform 0.2s, box-shadow 0.2s;\n }\n button:hover {\n background-color: #e0e0e0;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);\n }\n button:active {\n background-color: #d0d0d0;\n transform: scale(0.98);\n }\n `]\n})\nexport class CodeHighlightComponent implements AfterViewInit {\n @Input() code: string = ''; // Definindo um valor padrão\n @Input() language: string = 'typescript';\n @ViewChild('codeElement') codeElement!: ElementRef; // Usando operador de asserção não nula\n\n highlightedCode: string = '';\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.highlightCode();\n this.cdr.detectChanges();\n });\n }\n\n highlightCode() {\n const code = hljs.highlight(this.language, this.code).value;\n this.highlightedCode = code;\n }\n\n copyCode() {\n const codeElement = this.codeElement.nativeElement;\n navigator.clipboard.writeText(codeElement.innerText).then(() => {\n alert('Code copied to clipboard!');\n });\n }\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[appAutofocus]'\n})\nexport class AutofocusDirective implements AfterViewInit {\n constructor(private elementRef: ElementRef) { }\n\n ngAfterViewInit() {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConfirmationComponent implements OnDestroy {\n @Input() title: string = 'Confirmação';\n @Input() message: string = 'Você tem certeza que deseja continuar?';\n @Input() confirmButtonText: string = 'Sim';\n @Input() cancelButtonText: string = 'Não';\n\n constructor(public activeModal: NgbActiveModal) { }\n\n confirm() {\n this.activeModal.close('confirm');\n }\n\n cancel() {\n this.activeModal.dismiss('cancel');\n }\n\n ngOnDestroy() {\n // Clear any subscriptions if there were any\n }\n}\n","<div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"confirmationModalLabel\">{{ title }}</h5>\n</div>\n<div class=\"modal-body\">\n <p>{{ message }}</p>\n</div>\n<div class=\"modal-footer d-flex justify-content-end\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\">{{ cancelButtonText }}</button>\n <button type=\"button\" class=\"btn btn-primary ms-2\" (click)=\"confirm()\" appAutofocus>{{ confirmButtonText }}</button>\n</div>\n","import { Component, Input } from \"@angular/core\";\nimport * as XLSX from \"xlsx\";\n\nexport interface CsvExcelImporterConfig {\n acceptedFileTypes?: string[]; // Tipos de arquivos permitidos (padrão: .xlsx, .xls, .csv)\n detectHeaders?: boolean; // Detectar automaticamente cabeçalhos (padrão: true)\n customHeaders?: string[]; // Fornecer cabeçalhos personalizados\n delimiter?: string; // Delimitador para arquivos CSV (padrão: \";\")\n onImport: (data: any[]) => void; // Callback para manipular os dados\n}\n\n@Component({\n selector: \"argenta-csv-importer\",\n templateUrl: \"./csv-importer.component.html\",\n styleUrls: [\"./csv-importer.component.scss\"],\n})\nexport class CsvImporterComponent {\n @Input() config: CsvExcelImporterConfig = {\n acceptedFileTypes: [\".xlsx\", \".xls\", \".csv\"],\n detectHeaders: true,\n delimiter: \";\",\n onImport: () => {},\n };\n\n handleFileInput(event: any): void {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n\n // Detecta se o arquivo é CSV\n if (file.name.endsWith(\".csv\")) {\n reader.onload = (e: any) => {\n const csvData = e.target.result;\n const delimiter = this.config.delimiter ?? \";\"; // Usa delimitador configurado ou padrão\n const jsonData = this.parseCSV(csvData, delimiter);\n this.processData(jsonData);\n };\n reader.readAsText(file);\n } else {\n // Processa arquivos Excel (XLSX/XLS)\n reader.onload = (e: any) => {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: \"array\" });\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n\n const jsonData = XLSX.utils.sheet_to_json<any[]>(worksheet, {\n header: 1,\n defval: \"\",\n });\n\n this.processData(jsonData);\n };\n reader.readAsArrayBuffer(file);\n }\n }\n }\n\n private parseCSV(csvData: string, delimiter: string = \";\"): any[][] {\n return csvData\n .split(\"\\n\")\n .map((row) => row.split(delimiter).map((cell) => cell.trim()));\n }\n\n private processData(jsonData: any[][]): void {\n const headers = this.getHeaders(jsonData);\n const dataRows = jsonData.slice(headers ? 1 : 0);\n\n const formattedData = this.formatData(dataRows, headers);\n this.config.onImport(formattedData);\n }\n\n private getHeaders(data: any[][]): string[] | null {\n if (this.config.customHeaders) {\n return this.config.customHeaders;\n }\n if (this.config.detectHeaders && data.length > 0) {\n return data[0].map((header: any, index: number) =>\n this.normalizeHeader(header || `col_${index}`)\n );\n }\n return null; // Nenhum cabeçalho detectado\n }\n\n private formatData(dataRows: any[][], headers: string[] | null): any[] {\n if (!headers) {\n return dataRows; // Retorna dados brutos se não houver cabeçalhos\n }\n\n return dataRows.map((row) => {\n const record: any = {};\n headers.forEach((header, index) => {\n record[header] = row[index] ?? \"\";\n });\n return record;\n });\n }\n\n private normalizeHeader(header: any): string {\n return String(header)\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \"_\")\n .toLowerCase();\n }\n}\n","<div class=\"excel-importer\">\n <input\n type=\"file\"\n (change)=\"handleFileInput($event)\"\n [accept]=\"config.acceptedFileTypes?.join(',')\"\n style=\"display: none\"\n #fileInput\n />\n <button (click)=\"fileInput.click()\">Importar Arquivo</button>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'custom-pagination',\n templateUrl: './custom-pagination.component.html',\n styleUrls: ['./custom-pagination.component.scss']\n})\nexport class CustomPaginationComponent implements OnDestroy {\n @Input() totalItems: number = 0;\n @Input() itemsPerPage: number = 10;\n @Input() currentPage: number = 1;\n @Input() showPageInfo: boolean = true; // Mostrar ou esconder a informação da página\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n\n\n maxSize: number = 5; // Número máximo de botões de página visíveis\n\n private destroy$ = new Subject<void>();\n\n get totalPages(): number {\n return Math.ceil(this.totalItems / this.itemsPerPage);\n }\n\n changePage(page: number) {\n if (page >= 1 && page <= this.totalPages) {\n this.currentPage = page;\n this.pageChange.emit(this.currentPage);\n }\n }\n\n get pages(): number[] {\n const pages: number[] = [];\n const half = Math.floor(this.maxSize / 2);\n let start = Math.max(this.currentPage - half, 1);\n let end = start + this.maxSize - 1;\n\n if (end > this.totalPages) {\n end = this.totalPages;\n start = Math.max(end - this.maxSize + 1, 1);\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n return pages;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<nav *ngIf=\"totalPages > 0\">\n <ul class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage === 1\">\n <a class=\"page-link\" (click)=\"changePage(1)\">&laquo;&laquo;</a>\n </li>\n <li class=\"page-item\" [class.disabled]=\"currentPage === 1\">\n <a class=\"page-link\" (click)=\"changePage(currentPage - 1)\">&laquo;</a>\n </li>\n <li class=\"page-item\" *ngFor=\"let page of pages\" [class.active]=\"page === currentPage\">\n <a class=\"page-link\" (click)=\"changePage(page)\">{{ page }}</a>\n </li>\n <li class=\"page-item\" [class.disabled]=\"currentPage === totalPages\">\n <a class=\"page-link\" (click)=\"changePage(currentPage + 1)\">&raquo;</a>\n </li>\n <li class=\"page-item\" [class.disabled]=\"currentPage === totalPages\">\n <a class=\"page-link\" (click)=\"changePage(totalPages)\">&raquo;&raquo;</a>\n </li>\n </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-custom-switch',\n templateUrl: './custom-switch.component.html',\n styleUrls: ['./custom-switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CustomSwitchComponent {\n @Input() checked: boolean = false;\n @Input() label: string = '';\n @Input() permissions: string[] = [];\n @Output() switchChange = new EventEmitter<boolean>();\n\n constructor(private authService: AuthService) { }\n\n toggleSwitch() {\n this.checked = !this.checked;\n this.switchChange.emit(this.checked);\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n}\n","<ng-container *ngIf=\"hasPermission()\">\n <div class=\"form-check form-switch\">\n <input \n class=\"form-check-input\" \n type=\"checkbox\" \n [checked]=\"checked\" \n (change)=\"toggleSwitch()\" \n id=\"flexSwitchCheckDefault\" \n />\n <label class=\"form-check-label\" for=\"flexSwitchCheckDefault\">\n {{ label }}\n </label>\n </div>\n</ng-container>\n","import { Component, Input } from \"@angular/core\"\nimport * as XLSX from \"xlsx\"\nimport { IExcelExportConfig } from \"./IExcelExportConfig\"\n\n@Component({\n selector: \"argenta-excel-exporter\",\n template: `\n <button (click)=\"exportToExcel()\">{{ config.buttonLabel ?? '' }}</button>\n `,\n styleUrls: [\"./data-excel-exporter.component.scss\"],\n})\nexport class DataExcelExporterComponent {\n @Input() config!: IExcelExportConfig;\n @Input() data: any[] = [];\n\n async exportToExcel(): Promise<void> {\n let sheetConfig: IExcelExportConfig = this.config\n\n if (!this.config || (!this.data.length && !sheetConfig.multipleSheets)) {\n console.warn(\"Nenhuma configuração ou dados fornecidos.\");\n return;\n }\n\n const workbook = XLSX.utils.book_new();\n\n // Verifica se múltiplas planilhas estão configuradas\n if (sheetConfig.multipleSheets) {\n sheetConfig.multipleSheets.forEach((sheetConfig: any) => {\n const worksheet = XLSX.utils.aoa_to_sheet([]);\n\n // Adiciona o título, se houver\n let startRow = 0;\n if (sheetConfig.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[sheetConfig.title]], {\n origin: \"A1\",\n });\n\n // Define larguras personalizadas do título\n if (sheetConfig.titleWidths) {\n worksheet[\"!cols\"] = sheetConfig.titleWidths.map((width: any) => ({\n wch: width,\n }));\n }\n\n // Mescla o título\n if (sheetConfig.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || [];\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: sheetConfig.tableHeaders.length - 1 },\n });\n }\n\n startRow = 1;\n }\n\n // Adiciona cabeçalhos\n if (sheetConfig.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [sheetConfig.tableHeaders], {\n origin: `A${startRow + 1}`,\n });\n }\n\n // Adiciona dados\n if (sheetConfig.data) {\n XLSX.utils.sheet_add_json(worksheet, sheetConfig.data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n });\n }\n\n // Define larguras das colunas\n if (sheetConfig.columnWidths) {\n worksheet[\"!cols\"] = sheetConfig.columnWidths.map((width: any) => ({\n wch: width,\n }));\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(\n workbook,\n worksheet,\n sheetConfig.sheetName\n );\n });\n } else {\n // Caso não haja múltiplas planilhas, processa a planilha única\n const worksheet = XLSX.utils.aoa_to_sheet([]);\n\n // Adiciona título, se houver\n let startRow = 0;\n if (sheetConfig.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[sheetConfig.title]], {\n origin: \"A1\",\n });\n\n // Define larguras do título\n if (sheetConfig.titleWidths) {\n worksheet[\"!cols\"] = sheetConfig.titleWidths.map((width) => ({\n wch: width,\n }));\n }\n\n // Mescla o título\n if (sheetConfig.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || [];\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: sheetConfig.tableHeaders.length - 1 },\n });\n }\n\n startRow = 1;\n }\n\n // Adiciona cabeçalhos\n if (sheetConfig.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [sheetConfig.tableHeaders], {\n origin: `A${startRow + 1}`,\n });\n }\n\n // Adiciona dados\n XLSX.utils.sheet_add_json(worksheet, this.data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n });\n\n // Define larguras das colunas\n if (sheetConfig.columnWidths) {\n worksheet[\"!cols\"] = sheetConfig.columnWidths.map((width) => ({\n wch: width,\n }));\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetConfig.sheetName!);\n }\n\n // Salva o arquivo Excel\n XLSX.writeFile(workbook, sheetConfig.fileName);\n }\n}\n","import { Component, EventEmitter, Output } from \"@angular/core\";\nimport * as XLSX from \"xlsx\";\n\nexport interface ExcelImporterConfig {\n acceptedFileTypes: string[];\n onImport: (data: any[]) => void;\n excludeRows?: number[];\n excludeColumns?: number[];\n hasHeader?: boolean;\n headerRowIndex?: number;\n titleRowIndex?: number;\n}\n\n@Component({\n selector: \"argenta-excel-importer\",\n templateUrl: \"./data-excel-importer.component.html\",\n styleUrls: [\"./data-excel-importer.component.scss\"],\n})\nexport class DataExcelImporterComponent {\n @Output() excelData = new EventEmitter<any[]>(); // Evento para enviar dados processados\n // Configurações padrão\n config: ExcelImporterConfig = {\n acceptedFileTypes: [\".xlsx\", \".xls\", \".csv\"],\n onImport: (data) => this.defaultImportHandler(data),\n excludeRows: [],\n excludeColumns: [],\n hasHeader: true,\n headerRowIndex: 1,\n titleRowIndex: 1,\n };\n\n // Controle do modal e inputs de configuração\n userConfig = { ...this.config };\n excludeRowsInput: string = \"\"; // Para capturar linhas a excluir\n excludeColumnsInput: string = \"\"; // Para capturar colunas a excluir\n showConfigModal = false;\n buttonLabel = \"Importar Dados\";\n\n // Abre o modal de configurações\n openModal(): void {\n this.showConfigModal = true;\n }\n\n // Fecha o modal de configurações\n closeModal(): void {\n this.showConfigModal = false;\n }\n\n // Salva as configurações ajustadas no modal\n saveConfig(): void {\n this.config = {\n ...this.userConfig,\n titleRowIndex: (this.userConfig.titleRowIndex ?? 1) - 1, // Converte para índice zero-based\n headerRowIndex: (this.userConfig.headerRowIndex ?? 2) - 1, // Converte para índice zero-based\n excludeRows: this.excludeRowsInput\n .split(\",\")\n .map((row) => parseInt(row.trim(), 10) - 1), // Converte para zero-based\n excludeColumns: this.excludeColumnsInput\n .split(\",\")\n .map((col) => this.columnLetterToIndex(col.trim())), // Converte letras para índices\n };\n this.closeModal();\n }\n\n // Valida que as linhas informadas sejam pelo menos 1\n validateRowInput(field: \"headerRow\" | \"titleRow\"): void {\n if (field === \"headerRow\" && this.userConfig.headerRowIndex! < 1) {\n this.userConfig.headerRowIndex = 1;\n }\n if (field === \"titleRow\" && this.userConfig.titleRowIndex! < 1) {\n this.userConfig.titleRowIndex = 1;\n }\n }\n\n // Processa o arquivo selecionado\n handleFileInput(event: any): void {\n const file = event.target.files[0];\n if (file) {\n const fileType = file.name.split(\".\").pop()?.toLowerCase();\n\n if (fileType === \"csv\") {\n this.processCSVFile(file); // Processa o CSV de forma isolada\n } else {\n this.processExcelFile(file); // Mantém o fluxo atual para Excel\n }\n event.target.value = \"\"; // Reseta o input para permitir reimportação\n }\n }\n\n private processExcelFile(file: File): void {\n const reader = new FileReader();\n reader.onload = (e: any) => {\n const data = new Uint8Array(e.target.result);\n const workbook = XLSX.read(data, { type: \"array\" });\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n\n const titleRowIndex = this.config.titleRowIndex ?? 0;\n const headerRowIndex = this.config.headerRowIndex ?? titleRowIndex + 1;\n\n if (worksheet[\"!ref\"]) {\n worksheet[\"!ref\"] = this.adjustRange(\n worksheet[\"!ref\"],\n headerRowIndex + 1\n );\n } else {\n console.error(\"Intervalo da planilha ('!ref') não encontrado.\");\n return;\n }\n\n const jsonData = XLSX.utils.sheet_to_json<any[]>(worksheet, {\n header: 1,\n defval: \"\",\n blankrows: false,\n });\n\n this.processData(jsonData);\n };\n reader.readAsArrayBuffer(file); // Lê o Excel como array buffer\n }\n\n private processCSVFile(file: File): void {\n if (this.userConfig.hasHeader) {\n if (this.config?.headerRowIndex !== undefined) {\n this.config.headerRowIndex =\n this.config.headerRowIndex === 0 ? 1 : this.config.headerRowIndex + 1;\n }\n\n const sum =\n (this.config.excludeRows ?? []).reduce((acc, value) => acc + value, 0) +\n 1;\n\n this.config.excludeRows = [sum];\n }\n\n const reader = new FileReader();\n reader.onload = (e: any) => {\n const csvData = e.target.result;\n\n // Converte CSV em JSON usando XLSX\n const workbook = XLSX.read(csvData, { type: \"string\" });\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n\n const jsonData = XLSX.utils.sheet_to_json<any[]>(worksheet, {\n header: 1,\n defval: \"\",\n blankrows: false,\n });\n\n this.processData(jsonData);\n };\n reader.readAsText(file); // Lê o CSV como texto\n }\n\n private processData(jsonData: any[]): void {\n const titleRowIndex = this.config.titleRowIndex ?? 0;\n const headerRowIndex = this.config.headerRowIndex ?? titleRowIndex + 1;\n\n const headers = jsonData[0];\n if (!headers) {\n console.error(\"Cabeçalhos não encontrados. Verifique o headerRowIndex.\");\n return;\n }\n\n const normalizedHeaders = headers.map((header: any, index: any) =>\n this.normalizeHeader(header || `col_${index}`)\n );\n\n const dataRows = jsonData.slice(1); // Remove a linha de cabeçalho\n\n // Filtra as linhas baseando-se no índice informado pelo usuário (1-based)\n const filteredRows = dataRows.filter(\n (_, index) =>\n !this.config.excludeRows?.includes(index + headerRowIndex + 1)\n );\n\n const formattedData = filteredRows.map((row) => {\n const record: any = {};\n normalizedHeaders.forEach((header: any, index: any) => {\n record[header] = row[index] ?? \"\";\n });\n return record;\n });\n\n const finalData = this.filterColumns(formattedData);\n this.config.onImport(finalData); // Chama o callback com os dados processados\n this.excelData.emit(finalData); // Emite os dados processados para o cliente\n }\n\n // Ajusta o intervalo da planilha com base na linha do cabeçalho\n private adjustRange(range: string, startRow: number): string {\n const [start, end] = range.split(\":\");\n const startCol = start.replace(/[0-9]/g, \"\");\n const endCol = end.replace(/[0-9]/g, \"\");\n const endRow = end.replace(/[A-Za-z]/g, \"\");\n return `${startCol}${startRow}:${endCol}${endRow}`;\n }\n\n // Normaliza os cabeçalhos removendo acentos e espaços\n private normalizeHeader(header: string): string {\n return header\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \"_\")\n .toLowerCase();\n }\n\n // Filtra as colunas configuradas para exclusão\n private filterColumns(data: any[]): any[] {\n const { excludeColumns } = this.config;\n\n return data.map((row) => {\n const filteredRow: any = {};\n Object.keys(row).forEach((key, index) => {\n if (!excludeColumns?.includes(index)) {\n filteredRow[key] = row[key];\n }\n });\n return filteredRow;\n });\n }\n\n // Converte letra da coluna para índice (A -> 0, B -> 1, etc.)\n private columnLetterToIndex(letter: string): number {\n let index = 0;\n for (let i = 0; i < letter.length; i++) {\n index = index * 26 + (letter.charCodeAt(i) - \"A\".charCodeAt(0) + 1);\n }\n return index - 1;\n }\n\n // Callback padrão para manipular dados importados\n private defaultImportHandler(data: any[]): void {}\n\n transformToUppercase(): void {\n this.excludeColumnsInput = this.excludeColumnsInput.toUpperCase();\n }\n}\n","<div class=\"excel-importer\">\n <input\n type=\"file\"\n (change)=\"handleFileInput($event)\"\n [accept]=\"config.acceptedFileTypes?.join(',')\"\n style=\"display: none\"\n #fileInput\n />\n <button (click)=\"fileInput.click()\">{{ buttonLabel }}</button>\n <lucide-icon\n name=\"settings\"\n [size]=\"24\"\n [strokeWidth]=\"2.25\"\n class=\"settings-icon\"\n (click)=\"openModal()\"\n ></lucide-icon>\n</div>\n\n<div class=\"modal-container\" *ngIf=\"showConfigModal\">\n <div class=\"modal-content\">\n <h4 class=\"titulo\">Configuração de Importação</h4>\n <form (ngSubmit)=\"saveConfig()\">\n <div class=\"form-group\">\n <label for=\"acceptedFileTypes\">Tipos de Arquivo Permitidos</label>\n <input\n id=\"acceptedFileTypes\"\n type=\"text\"\n [(ngModel)]=\"userConfig.acceptedFileTypes\"\n name=\"acceptedFileTypes\"\n placeholder=\".xlsx, .xls\"\n />\n </div>\n <div class=\"form-group\" style=\"display: none\">\n <label for=\"titleRow\">Linha do Título (se aplicável)</label>\n <input\n id=\"titleRow\"\n type=\"number\"\n [(ngModel)]=\"userConfig.titleRowIndex\"\n name=\"titleRow\"\n placeholder=\"Ex: 1\"\n (change)=\"validateRowInput('titleRow')\"\n />\n </div>\n <div class=\"form-group checkbox-group\">\n <div class=\"row\">\n <div class=\"col-md-8\">\n <label for=\"hasHeader\">A planilha contém cabeçalho?</label>\n </div>\n <div class=\"col-md-4\">\n <input\n id=\"hasHeader\"\n class=\"input-checkbox\"\n type=\"checkbox\"\n [(ngModel)]=\"userConfig.hasHeader\"\n name=\"hasHeader\"\n />\n </div>\n </div>\n </div>\n\n <!-- Exibe a linha do cabeçalho apenas se o checkbox estiver marcado -->\n <div class=\"form-group\" *ngIf=\"userConfig.hasHeader\">\n <label for=\"headerRow\">Linha do Cabeçalho</label>\n <input\n id=\"headerRow\"\n type=\"number\"\n [(ngModel)]=\"userConfig.headerRowIndex\"\n name=\"headerRow\"\n placeholder=\"Ex: 2\"\n (change)=\"validateRowInput('headerRow')\"\n />\n </div>\n\n <div class=\"form-group\">\n <label for=\"excludeRows\">Linhas a Excluir</label>\n <input\n id=\"excludeRows\"\n type=\"text\"\n [(ngModel)]=\"excludeRowsInput\"\n name=\"excludeRows\"\n placeholder=\"Ex: 1, 3\"\n />\n </div>\n <div class=\"form-group\">\n <label for=\"excludeColumns\">Colunas a Excluir</label>\n <input\n id=\"excludeColumns\"\n type=\"text\"\n [(ngModel)]=\"excludeColumnsInput\"\n name=\"excludeColumns\"\n placeholder=\"Ex: A, C\"\n (input)=\"transformToUppercase()\"\n />\n </div>\n <button type=\"submit\">Salvar Configurações</button>\n <button type=\"button\" (click)=\"closeModal()\">Fechar</button>\n </form>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\"\nimport { Subject } from \"rxjs\"\nimport { debounceTime } from \"rxjs/operators\"\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\"\n\ninterface ListItem {\n id: string;\n descricao: string;\n}\n\n@Component({\n selector: \"argenta-drag-drop-list\",\n templateUrl: \"./drag-drop-list.component.html\",\n styleUrls: [\"./drag-drop-list.component.scss\"],\n})\nexport class DragDropListComponent {\n @Input() nonSelectedTitle!: string\n @Input() nonSelectedList: ListItem[] = [];\n @Input() nonSelectedButtonLabel?: string\n @Output() nonSelectedButtonClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() nonSelectedInputChanged = new EventEmitter<string>();\n\n @Input() selectedTitle!: string\n @Input() selectedList: ListItem[] = [];\n @Input() selectedButtonLabel?: string\n @Output() selectedButtonClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() selectedInputChanged = new EventEmitter<string>();\n\n private nonSelectedListInputSubject = new Subject<string>();\n private selectedListInputSubject = new Subject<string>();\n\n\n ButtonClasses = ButtonClasses; // Adicione a enumeração ao componente\n draggedItem: ListItem | null = null\n\n constructor() {\n this.nonSelectedListInputSubject.pipe(debounceTime(2000)).subscribe((value) => {\n this.nonSelectedInputChanged.emit(value);\n });\n\n this.selectedListInputSubject.pipe(debounceTime(2000)).subscribe((value) => {\n this.selectedInputChanged.emit(value);\n });\n }\n\n onDragStart(item: ListItem) {\n this.draggedItem = item;\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n\n onDrop(list: ListItem[], event: DragEvent) {\n event.preventDefault();\n if (this.draggedItem) {\n const index = list.indexOf(this.draggedItem);\n if (index === -1) {\n this.removeItem(this.draggedItem);\n list.push(this.draggedItem);\n }\n this.draggedItem = null;\n }\n }\n\n private removeItem(item: any) {\n [this.nonSelectedList, this.selectedList].forEach((list) => {\n const index = list.indexOf(item);\n if (index !== -1) {\n list.splice(index, 1);\n }\n });\n }\n\n nonSelectedListInputChange(event: any) {\n this.nonSelectedListInputSubject.next(event.target.value);\n }\n\n selectedListInputChange(event: any) {\n this.selectedListInputSubject.next(event.target.value);\n }\n\n selButtonClick() {\n this.selectedButtonClick!.emit()\n }\n\n nonSelButtonClick() {\n this.nonSelectedButtonClick!.emit()\n }\n}\n","<!-- Contêiner externo para dar a aparência de grupo -->\n<div class=\"group-container\">\n <div class=\"container\">\n <!-- Lista 1 com input -->\n <div\n class=\"list\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(nonSelectedList, $event)\"\n >\n <div class=\"row\">\n <h6 class=\"col-md-8\">{{ nonSelectedTitle }}</h6>\n <div *ngIf=\"nonSelectedButtonLabel\" class=\"col-md-4 align-end\">\n <argenta-custom-button\n label=\"{{ nonSelectedButtonLabel }}\"\n (onButtonClick)=\"nonSelButtonClick()\"\n class=\"align-end\"\n [btnClass]=\"ButtonClasses.Primary\"\n >\n </argenta-custom-button>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"list-input\"\n (input)=\"nonSelectedListInputChange($event)\"\n />\n <div\n *ngFor=\"let item of nonSelectedList\"\n class=\"item-card\"\n draggable=\"true\"\n (dragstart)=\"onDragStart(item)\"\n >\n {{ item.descricao }}\n </div>\n </div>\n\n <!-- Lista 2 com input -->\n <div\n class=\"list\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(selectedList, $event)\"\n >\n <div class=\"row\">\n <h6 class=\"col-md-8\">{{ selectedTitle }}</h6>\n <div *ngIf=\"selectedButtonLabel\" class=\"col-md-4 align-end\">\n <argenta-custom-button\n label=\"{{ selectedButtonLabel }}\"\n (onButtonClick)=\"selButtonClick()\"\n class=\"align-end\"\n [btnClass]=\"ButtonClasses.Primary\"\n >\n </argenta-custom-button>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"list-input\"\n (input)=\"selectedListInputChange($event)\"\n />\n <div\n *ngFor=\"let item of selectedList\"\n class=\"item-card\"\n draggable=\"true\"\n (dragstart)=\"onDragStart(item)\"\n >\n {{ item.descricao }}\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input } from \"@angular/core\";\n\n@Component({\n selector: \"argenta-dynamic-modal\",\n templateUrl: \"./dynamic-modal.component.html\",\n styleUrls: [\"./dynamic-modal.component.scss\"],\n})\nexport class DynamicModalComponent {\n @Input() modalTitle: string = \"Modal Title\";\n @Input() modalSizeClass: string = \"\";\n @Input() modalId: string = \"dynamicModal\"; // ID único para cada modal\n\n openModal() {\n const modalElement = document.getElementById(this.modalId);\n if (modalElement) {\n (modalElement as any).classList.add(\"show\");\n modalElement.setAttribute(\"aria-hidden\", \"false\");\n modalElement.style.display = \"block\";\n document.body.classList.add(\"modal-open\");\n\n // Adiciona o backdrop manualmente se não existir\n if (\n !document.querySelector(\n `.modal-backdrop[data-modal-id=\"${this.modalId}\"]`\n )\n ) {\n const backdrop = document.createElement(\"div\");\n backdrop.className = \"modal-backdrop fade show\";\n backdrop.setAttribute(\"data-modal-id\", this.modalId);\n document.body.appendChild(backdrop);\n }\n }\n }\n\n closeModal() {\n const modalElement = document.getElementById(this.modalId);\n if (modalElement) {\n (modalElement as any).classList.remove(\"show\");\n modalElement.setAttribute(\"aria-hidden\", \"true\");\n modalElement.style.display = \"none\";\n document.body.classList.remove(\"modal-open\");\n document\n .querySelector(`.modal-backdrop[data-modal-id=\"${this.modalId}\"]`)\n ?.remove();\n }\n }\n}\n","<div\n class=\"modal fade\"\n [id]=\"modalId\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"modalId + 'Label'\"\n aria-hidden=\"true\"\n>\n <div class=\"modal-dialog\" [ngClass]=\"modalSizeClass\">\n <div class=\"modal-content\">\n <div class=\"modal-header custom-header\">\n <h5 class=\"modal-title custom-modal-title\" [id]=\"modalId + 'Label'\">\n {{ modalTitle }}\n </h5>\n <button\n type=\"button\"\n class=\"custom-close-button\"\n (click)=\"closeModal()\"\n aria-label=\"Close\"\n >\n &times;\n </button>\n </div>\n <div class=\"modal-body custom-body\">\n <ng-content select=\"[modal-body]\"></ng-content>\n </div>\n <div class=\"modal-footer custom-footer\">\n <ng-content select=\"[modal-footer]\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, TemplateRef, OnInit } from \"@angular/core\";\nimport { DynamicTableConfig } from \"./dynamic-table-config\";\n\n@Component({\n selector: \"argenta-dynamic-table\",\n templateUrl: \"./dynamic-table.component.html\",\n styleUrls: [\"./dynamic-table.component.scss\"],\n})\nexport class DynamicTableComponent implements OnInit {\n @Input() config!: DynamicTableConfig;\n @Input() itemsPerPageOptions = [10, 20, 50];\n @Input() showPageInfo = true;\n\n currentPage = 1;\n itemsPerPage = 10;\n\n constructor() {}\n\n get totalItems() {\n return this.config.totalItems ?? this.config.data.length;\n }\n\n get paginatedData() {\n if (!this.config.pagination) {\n // Retorna todos os dados se a paginação estiver desativada\n return this.config.data;\n }\n\n const itemsPerPage = this.config.itemsPerPage || this.itemsPerPage;\n const startIndex = (this.currentPage - 1) * itemsPerPage;\n return this.config.data.slice(startIndex, startIndex + itemsPerPage);\n }\n\n ngOnInit(): void {\n if (!this.config || !this.config.columns || !this.config.data) {\n throw new Error(\"DynamicTableComponent: Configuração inválida.\");\n }\n\n // Define valores padrão se não especificados\n this.config.showHeader = this.config.showHeader ?? true; // Exibe o cabeçalho por padrão\n this.config.pagination = this.config.pagination ?? true; // Ativa paginação por padrão\n this.itemsPerPage = this.config.itemsPerPage || 10;\n }\n\n onPageChange(newPage: number) {\n this.currentPage = newPage;\n }\n\n onItemsPerPageChange(event: Event) {\n const target = event.target as HTMLSelectElement;\n this.itemsPerPage = +target.value;\n this.currentPage = 1; // Reinicia a paginação ao alterar os itens por página\n }\n\n // Getter para garantir que totalItems nunca seja undefined\n get safeTotalItems(): number {\n return this.totalItems || 0;\n }\n}\n","<table class=\"table\" [ngClass]=\"{ nested: config.isNested }\">\n <thead *ngIf=\"config.showHeader\">\n <tr>\n <th *ngFor=\"let column of config.columns\">{{ column.header }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of paginatedData\">\n <td *ngFor=\"let column of config.columns\">\n <ng-container [ngSwitch]=\"column.type\">\n <span *ngSwitchCase=\"'text'\">{{ row[column.key] }}</span>\n <ng-container *ngSwitchCase=\"'template'\">\n <ng-container\n *ngTemplateOutlet=\"\n column.template || null;\n context: { $implicit: row }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </td>\n </tr>\n </tbody>\n</table>\n\n<div\n class=\"text-center pagination-controls\"\n [ngClass]=\"{ nested: config.isNested }\"\n *ngIf=\"config.pagination\"\n>\n <custom-pagination\n [totalItems]=\"safeTotalItems\"\n [itemsPerPage]=\"itemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\"\n >\n </custom-pagination>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileUploadComponent implements OnDestroy {\n @Input() accept: string = '.pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .jpg, .jpeg, .png, .gif, .bmp, .svg, .webp, .zip, .rar, .csv';\n @Input() multiple: boolean = false;\n @Input() maxFileSize: number = 2 * 1024 * 1024; // 2MB\n @Input() labelText: string = 'Select Files to Upload'; // Dynamic label text\n @Input() permissions: string[] | undefined; // Array of permissions\n\n @Output() fileUploaded = new EventEmitter<File[]>(); // Emits selected files\n private destroy$ = new Subject<void>();\n\n constructor(private authService: AuthService) { }\n\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n if (input.files) {\n const files = Array.from(input.files);\n if (this.validateFiles(files)) {\n this.fileUploaded.emit(files); // Emit files for external handling\n } else {\n console.warn('One or more files exceed the maximum allowed size of 2MB.');\n }\n }\n }\n\n private validateFiles(files: File[]): boolean {\n return files.every(file => file.size <= this.maxFileSize);\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"file-upload-container\">\n <label for=\"fileUpload\" class=\"form-label\">{{ labelText }}</label> \n <input\n type=\"file\"\n id=\"fileUpload\"\n class=\"form-control\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileChange($event)\" \n />\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { AuthService } from '../../service/auth-service.service'\n\n@Component({\n selector: 'argenta-image-upload',\n templateUrl: './image-upload.component.html',\n styleUrls: ['./image-upload.component.scss']\n})\nexport class ImageUploadComponent {\n @Input() imagePreview: string | ArrayBuffer | null = null;\n @Input() label!: string\n @Input() permissions: string[] | undefined; // Array of permissions\n @Output() base64Output = new EventEmitter<string>();\n \n constructor(private authService: AuthService) { }\n\n onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n \n if (input.files && input.files.length > 0) {\n const file = input.files[0];\n const reader = new FileReader();\n\n reader.onload = () => {\n this.imagePreview = reader.result;\n this.base64Output.emit(reader.result as string);\n };\n\n reader.readAsDataURL(file);\n }\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"image-uploader\">\n <div *ngIf=\"imagePreview\">\n <img [src]=\"imagePreview\" />\n </div>\n <label for=\"fileInput\" class=\"custom-file-label\">\n {{ label }} <i-lucide name=\"import\" [size]=\"20\" color=\"black\"></i-lucide>\n </label>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n accept=\"image/*\"\n hidden\n />\n</div>\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cepMask]',\n})\nexport class CepMaskDirective {\n @Input('cepMask') enabled: boolean = false; // Define como opcional e padrão desabilitado\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('input', ['$event'])\n onInputChange(event: any) {\n if (!this.enabled) return; // Não aplica a máscara se não estiver habilitada\n\n // Obtém o valor atual e remove todos os caracteres não numéricos\n let initialValue = this.el.nativeElement.value.replace(/\\D/g, '');\n\n // Limita o número de caracteres a 8 para CEP\n if (initialValue.length > 8) {\n initialValue = initialValue.slice(0, 8);\n }\n\n // Aplica a máscara de CEP\n const formattedValue = this.formatCep(initialValue);\n\n // Atualiza o valor do input se necessário\n if (formattedValue !== this.el.nativeElement.value) {\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n\n // Dispara um evento de input para atualizar o modelo\n if (event.target.dispatchEvent) {\n const newEvent = new Event('input', { bubbles: true });\n event.target.dispatchEvent(newEvent);\n }\n }\n }\n\n formatCep(value: string): string {\n // Aplica a formatação de CEP: 12345-678\n return value.replace(/(\\d{5})(\\d)/, '$1-$2');\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cnpjMask]',\n})\nexport class CnpjMaskDirective {\n @Input('cnpjMask') enabled: boolean = false; // Define como opcional e padrão desabilitado\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('input', ['$event'])\n onInputChange(event: any) {\n if (!this.enabled) return; // Não aplica a máscara se não estiver habilitada\n\n // Obtém o valor atual e remove todos os caracteres não numéricos\n let initialValue = this.el.nativeElement.value.replace(/\\D/g, '');\n\n // Limita o número de caracteres a 14 para CNPJ\n if (initialValue.length > 14) {\n initialValue = initialValue.slice(0, 14);\n }\n\n // Aplica a máscara de CNPJ\n const formattedValue = this.formatCnpj(initialValue);\n\n // Atualiza o valor do input se necessário\n if (formattedValue !== this.el.nativeElement.value) {\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n\n // Dispara um evento de input para atualizar o modelo\n if (event.target.dispatchEvent) {\n const newEvent = new Event('input', { bubbles: true });\n event.target.dispatchEvent(newEvent);\n }\n }\n }\n\n formatCnpj(value: string): string {\n // Aplica a formatação de CNPJ: 12.345.678/0001-00\n return value\n .replace(/(\\d{2})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d{4})(\\d)/, '$1/$2-$3')\n .replace(/(\\d{4})(\\d{2})$/, '$1-$2');\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cpfMask]',\n})\nexport class CpfMaskDirective {\n @Input('cpfMask') enabled: boolean = false; // Define como opcional e padrão desabilitado\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('input', ['$event'])\n onInputChange(event: any) {\n if (!this.enabled) return;\n\n // Obtém o valor atual e remove todos os caracteres não numéricos\n let initialValue = this.el.nativeElement.value.replace(/\\D/g, '');\n\n // Limita o número de caracteres a 11 para CPF\n if (initialValue.length > 11) {\n initialValue = initialValue.slice(0, 11);\n }\n\n // Aplica a máscara de CPF\n const formattedValue = this.formatCpf(initialValue);\n\n // Atualiza o valor do input se necessário\n if (formattedValue !== this.el.nativeElement.value) {\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\n\n // Dispara um evento de input para atualizar o modelo\n if (event.target.dispatchEvent) {\n const newEvent = new Event('input', { bubbles: true });\n event.target.dispatchEvent(newEvent);\n }\n }\n }\n\n formatCpf(value: string): string {\n // Aplica a formatação de CPF: 123.456.789-00\n return value\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d)/, '$1.$2')\n .replace(/(\\d{3})(\\d{1,2})$/, '$1-$2');\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n} from \"@angular/core\"\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\"\nimport { Subscription } from \"rxjs\"\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\"\nimport { AuthService } from \"../../service/auth-service.service\"\n\n@Component({\n selector: \"argenta-custom-input\",\n styleUrls: [\"./input.component.scss\"],\n templateUrl: \"./input.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputComponent implements ControlValueAccessor, OnDestroy {\n @Input() label: string = \"Default Label\";\n @Input() placeholder: string = \"\";\n @Input() id: string = \"inputId\";\n @Input() type: string = \"text\";\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() maxlength: number | null = null;\n @Input() minlength: number | null = null;\n @Input() required: boolean = false;\n @Input() pattern: string | null = null;\n @Input() autofocus: boolean = false;\n @Input() useCpfMask: boolean = false;\n @Input() useCnpjMask: boolean = false;\n @Input() useCepMask: boolean = false;\n @Input() onlyNumbers: boolean = false;\n @Input() onlyNumbersAndDecimals: boolean = false;\n @Input() validateInput: boolean = false;\n @Input() labelFontWeight: number = 400;\n @Input() permissions: string[] | undefined;\n @Input() useMoneyMask: boolean = false; // Para ativar/desativar a máscara de moeda\n @Input() currencyCode: string = \"BRL\"; // Código da moeda\n @Input() displayCurrencySymbol: boolean = true; // Exibir ou não o símbolo da moeda\n @Input() prependText: string = \"\";\n @Input() buttonText: string | null = null;\n @Input() useLatitudeMask: boolean = false;\n @Input() useLongitudeMask: boolean = false;\n\n @Output() inputEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() changeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() focusEvent: EventEmitter<FocusEvent> =\n new EventEmitter<FocusEvent>();\n @Output() blurEvent: EventEmitter<FocusEvent> =\n new EventEmitter<FocusEvent>();\n @Output() keyupEvent: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n @Output() keydownEvent: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n @Output() keypressEvent: EventEmitter<KeyboardEvent> =\n new EventEmitter<KeyboardEvent>();\n @Output() buttonClick: EventEmitter<void> = new EventEmitter<void>();\n\n private onChangeCallback: (_: any) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n ButtonClasses = ButtonClasses;\n\n value: string = \"\";\n showErrorModal: boolean = false;\n errorMessage: string = \"\";\n\n private subscriptions: Subscription[] = [];\n\n constructor(private authService: AuthService) {}\n\n getInputType(): string {\n return (this.onlyNumbers || this.onlyNumbersAndDecimals) ? \"tel\" : this.type;\n }\n\n onInput(event: Event) {\n const inputElement = event.target as HTMLInputElement;\n let inputValue = inputElement.value;\n\n if (this.useLatitudeMask || this.useLongitudeMask) {\n inputValue = inputValue.replace(/[^0-9.,-]/g, \"\");\n inputValue = inputValue.replace(/,/g, \".\");\n\n const parts = inputValue.split(\".\");\n } else if (\n this.onlyNumbers &&\n !(\n this.useCpfMask ||\n this.useCnpjMask ||\n this.useCepMask ||\n this.useMoneyMask\n )\n ) {\n inputValue = inputValue.replace(/\\D/g, \"\"); // Remove todos os não numéricos\n }\n\n // Validação imediata para CPF, CNPJ ou CEP\n const numericValue = inputValue.replace(/\\D/g, \"\"); // Remove todos os caracteres não numéricos\n if (this.validateInput) {\n if (\n this.useCpfMask &&\n numericValue.length === 11 &&\n !this.validateCpf(numericValue)\n ) {\n this.clearAndShowValidationError(\n \"CPF inválido. Por favor, insira um CPF correto.\"\n );\n } else if (\n this.useCnpjMask &&\n numericValue.length === 14 &&\n !this.validateCnpj(numericValue)\n ) {\n this.clearAndShowValidationError(\n \"CNPJ inválido. Por favor, insira um CNPJ correto.\"\n );\n } else if (\n this.useCepMask &&\n numericValue.length === 8 &&\n !this.validateCep(numericValue)\n ) {\n this.clearAndShowValidationError(\n \"CEP inválido. Por favor, insira um CEP correto.\"\n );\n }\n }\n\n // Máscara de moeda\n if (this.useMoneyMask) {\n const numericValue = inputValue.replace(/\\D/g, \"\"); // Remove todos os não numéricos\n const formattedValue = this.formatMoney(numericValue); // Formata como dinheiro ou número decimal\n inputElement.value = formattedValue;\n this.value = formattedValue;\n } else {\n this.value = inputValue;\n }\n\n // Atualiza o valor e emite o evento de mudança\n this.onChangeCallback(this.value);\n this.inputEvent.emit(event);\n }\n\n private formatMoney(value: string): string {\n if (!value) return \"\"; // Se o valor estiver vazio, retorna uma string vazia\n\n const numericValue = parseFloat(value) / 100;\n\n // Verifica se deve exibir o símbolo da moeda ou não\n if (this.displayCurrencySymbol) {\n // Formata como moeda\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: this.currencyCode,\n }).format(numericValue);\n } else {\n // Formata como número decimal, sem o símbolo da moeda\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"decimal\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numericValue);\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.useLatitudeMask || this.useLongitudeMask) {\n const allowedKeys = [\n \"Backspace\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Delete\",\n \"Enter\",\n \"-\",\n \".\",\n \",\",\n ];\n if (!allowedKeys.includes(event.key) && !/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n } else if (\n this.onlyNumbers &&\n !/^\\d$/.test(event.key) &&\n event.key !== \"Backspace\" &&\n event.key !== \"ArrowLeft\" &&\n event.key !== \"ArrowRight\"\n ) {\n event.preventDefault(); // Impede a entrada de caracteres não numéricos\n }\n const input = event.target as HTMLInputElement;\n if (\n this.onlyNumbersAndDecimals &&\n !/^\\d$/.test(event.key) &&\n (event.key !== \".\" || input.value.includes(\".\")) &&\n event.key !== \"Backspace\" &&\n event.key !== \"Delete\" &&\n event.key !== \"Tab\" && // Adiciona suporte ao Tab\n event.key !== \"ArrowLeft\" &&\n event.key !== \"ArrowRight\"\n ) {\n event.preventDefault();\n }\n }\n\n onChange(event: Event) {\n const numericValue = this.value.replace(/\\D/g, \"\"); // Remove todos os caracteres não numéricos\n // Validação também ocorre no blur para casos onde o input não está completo\n if (this.validateInput) {\n if (this.useCpfMask && !this.validateCpf(numericValue)) {\n this.clearAndShowValidationError(\n \"CPF inválido. Por favor, insira um CPF correto.\"\n );\n } else if (this.useCnpjMask && !this.validateCnpj(numericValue)) {\n this.clearAndShowValidationError(\n \"CNPJ inválido. Por favor, insira um CNPJ correto.\"\n );\n } else if (this.useCepMask && !this.validateCep(numericValue)) {\n this.clearAndShowValidationError(\n \"CEP inválido. Por favor, insira um CEP correto.\"\n );\n }\n }\n this.changeEvent.emit(event);\n }\n\n validateCpf(cpf: string): boolean {\n if (cpf.length !== 11 || /^(\\d)\\1+$/.test(cpf)) return false;\n let sum = 0,\n remainder;\n for (let i = 1; i <= 9; i++)\n sum += parseInt(cpf.substring(i - 1, i)) * (11 - i);\n remainder = (sum * 10) % 11;\n if (remainder === 10 || remainder === 11) remainder = 0;\n if (remainder !== parseInt(cpf.substring(9, 10))) return false;\n sum = 0;\n for (let i = 1; i <= 10; i++)\n sum += parseInt(cpf.substring(i - 1, i)) * (12 - i);\n remainder = (sum * 10) % 11;\n if (remainder === 10 || remainder === 11) remainder = 0;\n return remainder === parseInt(cpf.substring(10, 11));\n }\n\n validateCnpj(cnpj: string): boolean {\n if (cnpj.length !== 14) return false;\n let length = cnpj.length - 2;\n let numbers = cnpj.substring(0, length);\n let digits = cnpj.substring(length);\n let sum = 0,\n pos = length - 7;\n for (let i = length; i >= 1; i--) {\n sum += parseInt(numbers.charAt(length - i)) * pos--;\n if (pos < 2) pos = 9;\n }\n let result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== parseInt(digits.charAt(0))) return false;\n length = length + 1;\n numbers = cnpj.substring(0, length);\n sum = 0;\n pos = length - 7;\n for (let i = length; i >= 1; i--) {\n sum += parseInt(numbers.charAt(length - i)) * pos--;\n if (pos < 2) pos = 9;\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n return result === parseInt(digits.charAt(1));\n }\n\n validateCep(cep: string): boolean {\n return /^\\d{8}$/.test(cep); // Valida apenas números, sem considerar a máscara\n }\n\n clearAndShowValidationError(message: string) {\n this.value = \"\"; // Limpa o valor do ngModel\n this.onChangeCallback(this.value); // Atualiza o ngModel com o valor limpo\n this.errorMessage = message;\n this.showErrorModal = true;\n }\n\n closeModal() {\n this.showErrorModal = false;\n this.errorMessage = \"\";\n }\n\n onFocus(event: FocusEvent) {\n this.focusEvent.emit(event);\n }\n\n onBlur(event: FocusEvent) {\n this.onTouchedCallback();\n this.blurEvent.emit(event);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n onButtonClick() {\n this.buttonClick.emit();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-group\">\n <div *ngIf=\"prependText\" class=\"input-group-prepend\">\n <span\n class=\"input-group-text custom-input-group-text\"\n id=\"basic-addon3\"\n >{{ prependText }}</span\n >\n </div>\n <input\n [type]=\"getInputType()\"\n class=\"form-control custom-input\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"keyupEvent.emit($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keypress)=\"keypressEvent.emit($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [attr.pattern]=\"pattern\"\n [autofocus]=\"autofocus\"\n [cpfMask]=\"useCpfMask\"\n [cnpjMask]=\"useCnpjMask\"\n [cepMask]=\"useCepMask\"\n />\n\n <div class=\"input-group-append\" *ngIf=\"buttonText\">\n <button type=\"button\" class=\"btn-group-append\" (click)=\"onButtonClick()\">\n {{ buttonText }}\n </button>\n </div>\n\n <!-- Modal para exibir mensagens de erro -->\n <div class=\"modal-overlay\" *ngIf=\"showErrorModal\">\n <div class=\"modal-content\">\n <span class=\"close\" (click)=\"closeModal()\">&times;</span>\n <p>{{ errorMessage }}</p>\n <button class=\"btn-ok\" (click)=\"closeModal()\">OK</button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\n\n@Component({\n selector: 'argenta-json-editor',\n templateUrl: './json-editor.component.html',\n styleUrls: ['./json-editor.component.scss'],\n})\nexport class JsonEditorComponent implements OnInit {\n @Input() data: any\n @Input() readonly: boolean = false;\n @Output() jsonChange = new EventEmitter<any>();\n @Output() isJsonValid = new EventEmitter<boolean>()\n\n jsonText = '';\n isValidJson = true;\n copyFeedback = '';\n showExample = false;\n exampleJson = {\n nome: \"João\",\n idade: 30,\n ativo: true,\n notas: [9.5, 8.3, 7.8],\n endereco: {\n cidade: \"São Paulo\",\n estado: \"SP\"\n },\n email: null\n };\n\n get formattedExample(): string {\n return JSON.stringify(this.exampleJson, null, 2)\n }\n\n toggleExample(): void {\n this.showExample = !this.showExample\n }\n\n\n ngOnInit(): void {\n this.jsonText = this.formatJson(this.data)\n this.isValidJson = this.checkValidJson(this.jsonText)\n }\n\n onTextChange(text: string): void {\n this.jsonText = text\n this.isValidJson = this.checkValidJson(text)\n\n if (this.isValidJson) {\n try {\n const parsed = JSON.parse(text)\n this.jsonChange.emit(parsed)\n } catch {\n this.isValidJson = false\n }\n }\n this.isJsonValid.emit(this.isValidJson)\n }\n\n format(): void {\n try {\n const fixed = this.tryFixInvalidJson(this.jsonText)\n const parsed = JSON.parse(fixed)\n this.jsonText = JSON.stringify(parsed, null, 2)\n this.isValidJson = true\n this.jsonChange.emit(parsed)\n } catch {\n this.isValidJson = false\n }\n this.isJsonValid.emit(this.isValidJson)\n }\n\n\n copyToClipboard(): void {\n navigator.clipboard.writeText(this.jsonText).then(() => {\n this.copyFeedback = 'Copiado!'\n setTimeout(() => this.copyFeedback = '', 2000)\n })\n }\n\n private checkValidJson(text: string): boolean {\n try {\n JSON.parse(text)\n return true\n } catch {\n return false\n }\n }\n\n private formatJson(data: any): string {\n try {\n return JSON.stringify(data, null, 2)\n } catch {\n return ''\n }\n }\n\n private tryFixInvalidJson(text: string): string {\n let fixed = text;\n \n // 1) Remove comentários de linha e de bloco\n fixed = fixed.replace(/\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//g, '');\n \n // 2) Aspas simples → duplas em strings\n fixed = fixed.replace(/'([^']*)'/g, '\"$1\"');\n \n // 3) Remove trailing commas antes de ] ou }\n fixed = fixed.replace(/,\\s*(?=[}\\]])/g, '');\n \n // 4) Chaves não-aspadas → entre aspas\n fixed = fixed.replace(/([{,]\\s*)([A-Za-z0-9_\\$]+)\\s*:/g, '$1\"$2\":');\n \n // 5) Valores string soltos → entre aspas duplas\n fixed = fixed.replace(\n /:\\s*([^\\s\"'`\\{\\}\\[\\],][^,\\}\\]]*)(?=[,\\}\\]])/g,\n (_match, p1: string) => {\n const v = p1.trim();\n // se for número ou literal JSON, deixa como está\n if (/^[-+]?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$/.test(v) ||\n /^(true|false|null)$/.test(v.toLowerCase())) {\n return `: ${v}`;\n }\n // escapa eventuais aspas internas e envolve em duplas\n const escaped = v.replace(/\"/g, '\\\\\"');\n return `: \"${escaped}\"`;\n }\n );\n \n return fixed;\n }\n \n \n\n\n}\n","<div class=\"json-editor-container\">\n <div\n class=\"status-indicator\"\n *ngIf=\"!readonly\"\n [ngClass]=\"{ valid: isValidJson, invalid: !isValidJson }\"\n >\n {{ isValidJson ? \"✅\" : \"❌\" }}\n </div>\n\n <div class=\"actions\" *ngIf=\"!readonly\">\n <button (click)=\"format()\">\n <i-lucide name=\"file-json\" [size]=\"20\" color=\"white\"></i-lucide>\n </button>\n <button (click)=\"copyToClipboard()\">\n <i-lucide name=\"copy\" [size]=\"20\" color=\"white\"></i-lucide>\n </button>\n <button class=\"info\" (click)=\"toggleExample()\">\n <i-lucide name=\"info\" [size]=\"20\" color=\"white\"></i-lucide>\n </button>\n\n <span class=\"feedback\" *ngIf=\"copyFeedback\">{{ copyFeedback }}</span>\n </div>\n\n <div class=\"example-box\" *ngIf=\"showExample\">\n <pre>{{ formattedExample }}</pre>\n </div>\n\n <textarea\n [readonly]=\"readonly\"\n [ngClass]=\"{ invalid: !isValidJson }\"\n [(ngModel)]=\"jsonText\"\n (ngModelChange)=\"onTextChange($event)\"\n placeholder=\"Digite ou cole seu JSON aqui...\"\n ></textarea>\n</div>\n","import { Component, Input } from '@angular/core'\n\n@Component({\n selector: 'argenta-json-viewer',\n templateUrl: './json-viewer.component.html',\n styleUrls: ['./json-viewer.component.scss']\n})\nexport class JsonViewerComponent {\n @Input() jsonData: any;\n @Input() isRoot: boolean = true;\n @Input() copyLabel!: string\n @Input() showLabel!: string\n @Input() hideLabel!: string\n\n allExpanded: boolean = true;\n expandedMap: Map<string, boolean> = new Map();\n\n toggleAll() {\n this.allExpanded = !this.allExpanded;\n this.expandedMap.clear();\n }\n\n toggleExpand(key: string) {\n const currentState = this.isExpanded(key);\n this.expandedMap.set(key, !currentState);\n }\n\n isObject(val: any): boolean {\n return val !== null && typeof val === 'object';\n }\n\n objectKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n\n isExpanded(key: string): boolean {\n return this.expandedMap.has(key) ? this.expandedMap.get(key)! : this.allExpanded;\n }\n\n copyJson() {\n const jsonString = JSON.stringify(this.jsonData, null, 2);\n navigator.clipboard.writeText(jsonString).then(() => {\n alert('JSON copiado com sucesso!');\n }).catch(err => {\n console.error('Error copying JSON to clipboard:', err);\n });\n }\n}\n","<div class=\"json-viewer-box\">\n <div class=\"toolbar\">\n <button\n *ngIf=\"isRoot\"\n class=\"action-button copy-button\"\n (click)=\"copyJson()\"\n >\n {{ copyLabel }}\n </button>\n <button\n *ngIf=\"isRoot\"\n class=\"action-button toggle-button\"\n (click)=\"toggleAll()\"\n >\n {{ allExpanded ? \"▼ \" + hideLabel : \"► \" + showLabel }}\n </button>\n </div>\n\n <div class=\"json-content\">\n <div *ngIf=\"isObject(jsonData)\">\n <div class=\"json-pair\" *ngFor=\"let key of objectKeys(jsonData)\">\n <span class=\"key\">\n {{ key }}:\n <button class=\"minimal-toggle-button\" (click)=\"toggleExpand(key)\">\n {{ isExpanded(key) ? \"▼\" : \"►\" }}\n </button>\n </span>\n\n <div class=\"nested-json\" *ngIf=\"isExpanded(key)\">\n <argenta-json-viewer\n [jsonData]=\"jsonData[key]\"\n [isRoot]=\"false\"\n ></argenta-json-viewer>\n </div>\n <span *ngIf=\"!isExpanded(key) && isObject(jsonData[key])\">[...]</span>\n </div>\n </div>\n <span *ngIf=\"!isObject(jsonData)\">\n {{ jsonData }}\n </span>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core'\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'\n\n@Component({\n selector: 'argenta-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss']\n})\nexport class ModalComponent {\n @Input() title!: string;\n @Input() component!: any;\n @Input() componentInputs?: any;\n @Input() closeButtonLabel!: string\n @Input() buttonLabel?: string\n @Output() onButtonClick: EventEmitter<void> = new EventEmitter(); // Novo evento\n\n @ViewChild('dynamicComponent', { read: ViewContainerRef, static: true }) dynamicComponent!: ViewContainerRef;\n\n constructor(public activeModal: NgbActiveModal) {}\n\n ngOnInit() {\n const componentRef = this.dynamicComponent.createComponent(this.component);\n const instance = componentRef.instance as any;\n if (this.componentInputs) {\n Object.keys(this.componentInputs).forEach(inputName => {\n instance[inputName] = this.componentInputs[inputName];\n });\n }\n }\n\n closeModal() {\n this.activeModal.close();\n }\n\n buttonClicked() {\n this.onButtonClick.emit(); // Emitindo o evento\n }\n}\n","<div class=\"modal-header custom-modal-header\">\n <h4 class=\"modal-title\">{{ title }}</h4>\n <p class=\"float-right close-modal\" (click)=\"closeModal()\">X</p>\n</div>\n<div class=\"modal-body\">\n <ng-container #dynamicComponent></ng-container>\n</div>\n<div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"closeModal()\">\n {{ closeButtonLabel }}\n </button>\n <button *ngIf=\"buttonLabel\" class=\"btn btn-custom\" (click)=\"buttonClicked()\">\n {{ buttonLabel }}\n </button>\n</div>\n","import { HttpClient } from \"@angular/common/http\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Observable, of, Subject } from \"rxjs\";\nimport {\n catchError,\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap,\n tap\n} from \"rxjs/operators\";\nimport { AuthService } from \"../../service/auth-service.service\";\n\n@Component({\n selector: \"argenta-custom-multi-select\",\n templateUrl: \"./multi-select.component.html\",\n styleUrls: [\"./multi-select.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MultiSelectComponent\n implements ControlValueAccessor, OnInit, OnChanges\n{\n @HostListener(\"document:click\", [\"$event\"])\n onClickOutside(event: Event) {\n const target = event.target as HTMLElement;\n if (!target.closest(\".custom-select-container\")) {\n this.closeDropdown();\n }\n }\n\n @Input() label: string = \"Multi Select\";\n @Input() data: any[] = [];\n @Input() placeholder: string = \"\";\n @Input() selected: any;\n @Input() id: string = \"multiSelectId\";\n @Input() bindLabel: string = \"\";\n @Input() bindValue: string = \"\";\n @Input() permissions: string[] | undefined;\n @Input() closeOnSelect: boolean = false;\n @Input() searchUrl: string = \"\";\n @Input() multiple: boolean = true;\n @Input() searchParams: { [key: string]: string } = {};\n\n @Output() keyupEvent: EventEmitter<any> = new EventEmitter<any>();\n\n private lastSearchTerm: string = \"\";\n private backupData: any[] = [];\n private allItems: any[] = [];\n items: Observable<any[]> = of([]);\n filteredItems: Observable<any[]> = of([]);\n private searchTerms = new Subject<string>();\n isOpen = false;\n\n constructor(\n private authService: AuthService,\n private http: HttpClient,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.filteredItems = this.searchTerms.pipe(\n debounceTime(700), // Reduz chamadas repetitivas\n distinctUntilChanged(), // Ignora termos repetidos consecutivos\n switchMap((term) => {\n // Sempre busca no back-end\n return this.search(term).pipe(\n tap((fetchedItems) => {\n this.updateData(fetchedItems);\n }),\n map((fetchedItems) => this.filterOutSelected(fetchedItems))\n );\n })\n );\n\n this.filteredItems.subscribe({\n next: (items: any) => {},\n error: (err) => console.error(\"Erro ao buscar no back-end:\", err),\n });\n\n this.fetchInitialData().subscribe((data) => {\n this.updateData(data);\n });\n }\n\n onInputChange(event: any): void {\n const input = event.target.value.trim();\n\n this.searchTerms.next(input);\n\n if (input === \"\") {\n this.fetchInitialData().subscribe((data) => {\n this.allItems = data;\n this.filteredItems = of(this.filterOutSelected(this.allItems));\n });\n }\n }\n\n search(term: string): Observable<any[]> {\n return this.http.get<any[]>(`${this.searchUrl}`, { params: { term } }).pipe(\n map((response: any[]) => {\n const transformedItems = response.map((item: any) => ({\n [this.bindValue]: item[this.bindValue],\n [this.bindLabel]: item[this.bindLabel],\n }));\n\n this.allItems = transformedItems;\n\n this.filteredItems = of(this.filterOutSelected(this.allItems));\n this.cdr.markForCheck(); // Notifica o Angular sobre a alteração\n\n return transformedItems;\n }),\n catchError((error) => {\n console.error(\"Erro ao buscar no back-end:\", error);\n this.filteredItems = of([]);\n return of([]);\n })\n );\n }\n\n private fetchInitialData(): Observable<any[]> {\n return this.http.get<any[]>(this.searchUrl).pipe(\n map((response: any[]) => {\n const transformedItems = response.map((item: any) => ({\n [this.bindValue]: item[this.bindValue],\n [this.bindLabel]: item[this.bindLabel],\n }));\n\n this.allItems = transformedItems;\n return this.allItems;\n }),\n catchError((error: any) => {\n console.error(\"Erro ao carregar dados iniciais:\", error);\n return of([]);\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"selected\"] && !changes[\"selected\"].isFirstChange()) {\n this.addSelectedItemsToData();\n }\n }\n\n private updateData(newData: any[]): void {\n newData.forEach((item: any) => {\n const existsInList = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n if (!existsInList) {\n this.allItems = [...this.allItems, item]; // Cria uma nova referência\n }\n });\n \n this.filteredItems = of([...this.allItems]); // Garante nova referência\n this.cdr.markForCheck(); // Notifica o Angular sobre mudanças\n }\n \n\n private addSelectedItemsToData(): void {\n if (this.selected) {\n const selectedItems = this.multiple ? this.selected : [this.selected];\n selectedItems.forEach((item: any) => {\n const existsInList = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n if (!existsInList) {\n const newItem = {\n [this.bindValue]: item[this.bindValue] || item,\n [this.bindLabel]: item[this.bindLabel] || item,\n };\n this.data.push(newItem);\n this.allItems.push(newItem);\n }\n });\n\n this.items = of(this.allItems);\n }\n }\n\n private onChangeCallback: (_: any) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n isCourseEntered = false;\n\n onFocus() {\n this.isCourseEntered = true;\n }\n\n onBlur() {\n this.isCourseEntered = false;\n }\n\n onKeyUp(event: KeyboardEvent): void {\n this.keyupEvent.emit(event);\n }\n\n onSelectedChange(event: any): void {\n const previousSelected = this.selected;\n\n if (this.multiple) {\n this.selected = event;\n } else {\n this.selected = event ? event : null;\n }\n\n this.onChangeCallback(this.selected);\n\n if (previousSelected && Array.isArray(previousSelected)) {\n const removedItems = previousSelected.filter(\n (item) => !event.includes(item)\n );\n\n removedItems.forEach((item) => {\n const existsInAllItems = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n if (!existsInAllItems) {\n this.allItems.push(item);\n }\n });\n this.items = of(this.allItems);\n }\n }\n\n writeValue(value: any): void {\n if (this.multiple) {\n this.selected = value || [];\n } else {\n this.selected = value || null;\n }\n\n this.addSelectedItemsToData();\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {}\n\n compareFn = (item1: any, item2: any): boolean => {\n return item1 && item2\n ? item1[this.bindValue] === item2[this.bindValue]\n : item1 === item2;\n };\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n toggleDropdown() {\n this.isOpen = !this.isOpen;\n }\n\n closeDropdown() {\n this.isOpen = false;\n }\n\n isSelected(item: any): boolean {\n if (this.multiple) {\n return this.selected?.some((selectedItem: any) =>\n this.compareFn(selectedItem, item)\n );\n } else {\n return this.compareFn(this.selected, item);\n }\n }\n\n selectItem(item: any, event: Event): void {\n event.stopPropagation();\n\n if (!this.isSelected(item)) {\n if (this.multiple) {\n this.selected.push(item);\n } else {\n this.selected = [item];\n }\n }\n\n if (this.multiple) {\n this.allItems = this.allItems.filter(\n (listItem) => !this.compareFn(listItem, item)\n );\n }\n\n this.filteredItems = of(this.filterOutSelected(this.allItems));\n this.onSelectedChange(this.selected);\n\n if (this.closeOnSelect) {\n this.closeDropdown();\n }\n }\n\n private filterByTerm(term: string): any[] {\n return this.allItems.filter((item) =>\n item[this.bindLabel]?.toLowerCase().includes(term.toLowerCase())\n );\n }\n\n private filterOutSelected(items: any[]): any[] {\n if (!this.multiple) {\n return items;\n }\n\n return items.filter(\n (item) =>\n !this.selected.some((selectedItem: any) =>\n this.compareFn(selectedItem, item)\n )\n );\n }\n\n removeSelectedItem(item: any, event: Event): void {\n event.stopPropagation();\n\n this.selected = this.selected.filter(\n (selectedItem: any) => !this.compareFn(selectedItem, item)\n );\n\n const existsInAllItems = this.allItems.some((listItem) =>\n this.compareFn(listItem, item)\n );\n\n if (!existsInAllItems) {\n this.allItems.push(item);\n }\n\n this.filteredItems = of(this.filterByTerm(this.lastSearchTerm || \"\"));\n this.onSelectedChange(this.selected);\n }\n}\n","<div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" class=\"form-label\" style=\"margin-top: 1rem\">\n {{ label }}\n </label>\n <div class=\"custom-select-container\" tabindex=\"0\">\n <!-- Input com itens selecionados -->\n <div class=\"custom-input\">\n <span class=\"selected-item\" *ngFor=\"let item of selected\">\n {{ item[bindLabel] }}\n <button\n class=\"remove-item-btn\"\n (click)=\"removeSelectedItem(item, $event)\"\n >\n ×\n </button>\n </span>\n <input\n type=\"text\"\n class=\"input-field\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n (focus)=\"toggleDropdown()\"\n (keyup)=\"onKeyUp($event)\"\n (input)=\"onInputChange($event)\"\n />\n <!-- Ícone flutuante -->\n <lucide-icon\n [name]=\"isOpen ? 'align-justify' : 'chevron-down'\"\n class=\"dropdown-icon\"\n ></lucide-icon>\n </div>\n\n <!-- Dropdown suspenso -->\n <div *ngIf=\"isOpen\" class=\"dropdown\">\n <div\n *ngFor=\"let item of filteredItems | async\"\n class=\"dropdown-item\"\n [class.selected]=\"isSelected(item)\"\n (click)=\"selectItem(item, $event)\"\n >\n {{ item[bindLabel] }}\n </div>\n <div *ngIf=\"(filteredItems | async)?.length === 0\" class=\"empty-dropdown\">\n Nenhum item disponível\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'argenta-multi-select-category',\n templateUrl: './multi-select-category.component.html',\n styleUrls: ['./multi-select-category.component.scss']\n})\nexport class MultiSelectCategoryComponent implements OnInit {\n\n // Inputs para receber dados dinâmicos de diferentes categorias\n @Input() unidadesOrganizacionais: any[] = [];\n @Input() clientes: any[] = [];\n @Input() empresas: any[] = [];\n @Input() usuarios: any[] = [];\n\n // Inputs para permissões específicas de cada categoria\n @Input() permissoesUnidades: string[] = [];\n @Input() permissoesClientes: string[] = [];\n @Input() permissoesEmpresas: string[] = [];\n @Input() permissoesUsuarios: string[] = [];\n\n constructor() { }\n\n ngOnInit(): void { }\n}\n","<div class=\"multi-select-category\">\n <div class=\"row\">\n <!-- Primeira linha: Usuário e Cliente -->\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Usuários\"\n [data]=\"usuarios\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesUsuarios\"\n placeholder=\"Selecione Usuários\">\n </argenta-custom-multi-select>\n </div>\n\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Clientes\"\n [data]=\"clientes\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesClientes\"\n placeholder=\"Selecione Clientes\">\n </argenta-custom-multi-select>\n </div>\n </div>\n\n <div class=\"row\">\n <!-- Segunda linha: Empresa e Unidade Organizacional -->\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Empresas\"\n [data]=\"empresas\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesEmpresas\"\n placeholder=\"Selecione Empresas\">\n </argenta-custom-multi-select>\n </div>\n\n <div class=\"col\">\n <argenta-custom-multi-select\n label=\"Unidades Organizacionais\"\n [data]=\"unidadesOrganizacionais\"\n bindLabel=\"nome\"\n bindValue=\"id\"\n [permissions]=\"permissoesUnidades\"\n placeholder=\"Selecione Unidades Organizacionais\">\n </argenta-custom-multi-select>\n </div>\n </div>\n</div>\n","export function formatToBrazilianNumber(value: number): string {\n return value.toLocaleString(\"pt-BR\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n}\n","import { Component, Input } from \"@angular/core\";\nimport jsPDF from \"jspdf\";\nimport \"jspdf-autotable\";\nimport { PdfExportConfig } from \"./interface/PdfExportConfig\";\nimport { PdfTableStyles } from \"./interface/PdfTableStyles\";\nimport { parseBrazilianNumber } from \"./function/parseBrazilianNumber\";\nimport { DataRow } from \"./interface/DataRow\";\nimport { formatToBrazilianNumber } from \"./function/formatToBrazilianNumber\";\n\n@Component({\n selector: \"argenta-pdf-data-handler\",\n templateUrl: \"./argenta-pdf-data-handler.component.html\",\n styleUrls: [\"./argenta-pdf-data-handler.component.scss\"],\n})\nexport class ArgentaPdfDataHandlerComponent {\n @Input() config!: PdfExportConfig;\n @Input() data: DataRow[] = [];\n @Input() styles!: PdfTableStyles;\n\n private isNumericColumn(key: string): boolean {\n // Se 'numericColumns' estiver definido no pdfConfig, use-o como referência\n return this.config?.numericColumns?.includes(key) ?? false;\n }\n\n private processData(data: DataRow[]): DataRow[] {\n if (!data || !this.config?.tableKeys?.length) {\n console.warn(\"Dados ou chaves de tabela ausentes!\");\n return [];\n }\n\n // Identificar colunas numéricas\n const numericColumns = this.config.numericColumns || [];\n\n return data.map((item) => {\n const processedItem: any = {};\n this.config.tableKeys.forEach((key) => {\n if (numericColumns.includes(key)) {\n const value = item[key];\n if (typeof value === \"string\") {\n // Converte o valor no formato brasileiro para número\n processedItem[key] = parseFloat(\n value.replace(\".\", \"\").replace(\",\", \".\")\n );\n } else if (typeof value === \"number\") {\n processedItem[key] = value;\n } else {\n processedItem[key] = 0; // Valor padrão para entradas inválidas\n }\n } else {\n // Mantém o valor original para colunas não numéricas\n processedItem[key] = item[key];\n }\n });\n return processedItem;\n });\n }\n\n exportToPdf() {\n if (!this.config || !this.data.length) {\n console.warn(\"Configuração ou dados ausentes para exportação de PDF!\");\n return;\n }\n\n const doc = new jsPDF();\n\n // Configuração do título\n const titleStyle = this.styles?.titleStyle || {};\n doc.setFont(titleStyle.fontFamily || \"helvetica\", \"normal\");\n doc.setFontSize(titleStyle.fontSize || 14);\n doc.setTextColor(titleStyle.fontColor || \"#000\");\n doc.text(\n this.config.pdfTitle || \"Relatório\",\n titleStyle.align === \"center\" ? 105 : 10,\n 10,\n { align: titleStyle.align || \"left\" }\n );\n\n // Processar os dados\n const processedData = this.processData(this.data);\n\n // Calcular totais por linha\n const calculatedData = processedData.map((row) => {\n const newRow = { ...row };\n this.config.rowCalculations?.forEach((calc) => {\n const result = calc.formula(row);\n newRow[calc.label] = isNaN(result)\n ? \"-\"\n : formatToBrazilianNumber(result); // Formata os totais por linha\n });\n return newRow;\n });\n\n // Calcular o total geral\n let totalRow: Partial<DataRow> = {};\n if (this.config.totalizer?.include) {\n this.config.totalizer.columns.forEach((column) => {\n const values = calculatedData\n .map((item) => {\n const value = item[column.field];\n if (typeof value === \"string\") {\n return parseFloat(value.replace(\".\", \"\").replace(\",\", \".\"));\n }\n return typeof value === \"number\" ? value : 0; // Valores inválidos tratados como 0\n })\n .filter((value) => !isNaN(value)); // Filtra valores válidos\n\n const total = column.formula(values);\n totalRow[column.field] = formatToBrazilianNumber(total); // Formata o total geral\n });\n }\n\n // Preparar os dados para a tabela\n const tableHeaders = [...this.config.tableHeaders];\n const tableKeys = [...this.config.tableKeys];\n const tableData = calculatedData.map((item) =>\n tableKeys.map((key) => {\n const value = item[key];\n if (typeof value === \"number\") {\n return formatToBrazilianNumber(value); // Formata números\n }\n return value || \"-\"; // Retorna o valor original\n })\n );\n\n // Adicionar a linha totalizadora ao final da tabela\n if (this.config.totalizer?.include) {\n const totalizerRow = tableKeys.map((key, index) => {\n if (index === 0) {\n return this.config.totalizer?.columns[0].label || \"-\"; // Adiciona o label na primeira coluna\n }\n return totalRow[key] || \"-\";\n });\n tableData.push(totalizerRow);\n }\n\n // Configurar estilos e gerar a tabela\n const tableStyle = this.styles?.tableStyle || {};\n const headerStyle = this.styles?.headerStyle || {};\n const dataStyle = this.styles?.dataStyle || {};\n\n (doc as any).autoTable({\n head: [tableHeaders],\n body: tableData,\n startY: 20,\n headStyles: {\n fontSize: headerStyle.fontSize || 12,\n textColor: headerStyle.fontColor || \"#fff\",\n fillColor: headerStyle.backgroundColor || \"#007bff\",\n },\n bodyStyles: {\n fontSize: dataStyle.fontSize || 10,\n textColor: dataStyle.fontColor || \"#555\",\n },\n styles: {\n fontSize: tableStyle.fontSize || 10,\n textColor: tableStyle.fontColor || \"#000\",\n fillColor: tableStyle.backgroundColor || \"#fff\",\n },\n theme: \"grid\",\n });\n\n // Salvar o PDF\n doc.save(this.config.fileName || \"relatorio.pdf\");\n }\n}\n","<div class=\"pdf-data-handler-container\">\n <button class=\"pdf-button\" (click)=\"exportToPdf()\">\n {{ config.buttonLabel || \"Export PDF\" }}\n </button>\n</div>\n","import { Component, Input } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\n\n@Component({\n selector: \"argenta-pdf-download\",\n templateUrl: \"./argenta-pdf-download.component.html\",\n styleUrls: [\"./argenta-pdf-download.component.scss\"],\n})\nexport class ArgentaPdfDownloadComponent {\n @Input() apiEndpoint: string = \"\"; // Endpoint do back-end ou URL pública\n @Input() buttonText: string = \"Baixar PDF\"; // Texto do botão\n @Input() loadingText: string = \"Baixando...\"; // Texto durante o carregamento\n\n isLoading: boolean = false;\n\n constructor(private http: HttpClient) {}\n\n downloadPdf(): void {\n if (!this.apiEndpoint) {\n console.error(\"O endpoint da API não foi fornecido.\");\n return;\n }\n\n // Verifica se a URL é pública (HTTPS ou HTTP)\n if (\n this.apiEndpoint.startsWith(\"http://\") ||\n this.apiEndpoint.startsWith(\"https://\")\n ) {\n window.open(this.apiEndpoint, \"_blank\"); // Abre a URL diretamente\n return;\n }\n\n this.isLoading = true;\n\n // Requisição para obter o arquivo como blob\n this.http.get(this.apiEndpoint, { responseType: \"blob\" }).subscribe({\n next: (blob) => {\n const fileURL = window.URL.createObjectURL(blob);\n window.open(fileURL, \"_blank\"); // Abre o arquivo como blob\n this.isLoading = false;\n },\n error: (err) => {\n console.error(\"Erro ao baixar o PDF:\", err);\n this.isLoading = false;\n },\n });\n }\n}\n","<button (click)=\"downloadPdf()\" [disabled]=\"isLoading\">\n <span *ngIf=\"!isLoading\">{{ buttonText }}</span>\n <span *ngIf=\"isLoading\">{{ loadingText }}</span>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n forwardRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n@Component({\n selector: \"sim-app-radio\",\n templateUrl: \"./radio.component.html\",\n styleUrls: [\"./radio.component.scss\"],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioComponent implements ControlValueAccessor {\n @Input() name: string = \"defaultRadio\";\n @Input() id: string = \"radioId\";\n @Input() value: string = \"default\";\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() label: string = \"Radio label\";\n\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n\n @Output() changeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n\n private onChangeCallback: (_: any) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n handleRadioChange(event: Event) {\n const inputElement = event.target as HTMLInputElement;\n this.checked = inputElement.checked;\n this.onChangeCallback(this.checked);\n this.changeEvent.emit(event);\n }\n\n writeValue(value: any): void {\n this.checked = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div\n class=\"form-check\"\n [ngStyle]=\"{\n 'margin-top': marginTop + 'rem',\n 'margin-bottom': marginBottom + 'rem',\n 'margin-left': marginLeft + 'rem',\n 'margin-right': marginRight + 'rem'\n }\"\n>\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [name]=\"name\"\n [id]=\"id\"\n [value]=\"value\"\n [checked]=\"checked\"\n (change)=\"handleRadioChange($event)\"\n [disabled]=\"disabled\"\n />\n <label class=\"form-check-label\" [for]=\"id\">{{ label }}</label>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'argenta-search-customer',\n templateUrl: './search-customer.component.html',\n styleUrls: ['./search-customer.component.scss']\n})\nexport class SearchCustomerComponent {\n // Inputs\n @Input() placeholder: string = 'Search';\n @Input() id: string = '';\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() autofocus: boolean = false;\n\n // Output\n @Output() searchTerm = new EventEmitter<string>();\n\n onSearch(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n this.searchTerm.emit(inputElement.value);\n }\n}\n","<div class=\"search-container\">\n <span class=\"search-icon\" [ngClass]=\"'search-icon-green'\">\n <lucide-icon name=\"search\" [size]=\"16\"></lucide-icon>\n </span>\n <input\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [autofocus]=\"autofocus\"\n (input)=\"onSearch($event)\"\n class=\"search-input custom-input\"\n />\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, forwardRef } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'argenta-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SearchInputComponent),\n multi: true\n }\n ]\n})\nexport class SearchInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() id: string = '';\n @Input() label: string = 'Search';\n @Input() type: string = 'text';\n @Input() placeholder: string = 'Type to search...';\n @Input() value: string = '';\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() autofocus: boolean = false;\n @Input() maxlength: number | null = null;\n @Input() minlength: number | null = null;\n @Input() required: boolean = false;\n @Input() pattern: string | null = null;\n @Input() debounceTime: number = 700; // Valor padrão\n\n @Output() search = new EventEmitter<string>();\n @Output() inputChange = new EventEmitter<string>();\n @Output() change = new EventEmitter<Event>();\n @Output() focus = new EventEmitter<Event>();\n @Output() blur = new EventEmitter<Event>();\n @Output() keyup = new EventEmitter<KeyboardEvent>();\n @Output() keydown = new EventEmitter<KeyboardEvent>();\n @Output() keypress = new EventEmitter<KeyboardEvent>();\n\n private searchSubject: Subject<string> = new Subject<string>();\n private searchSubscription: Subscription = new Subscription();\n\n constructor() { }\n\n ngOnInit(): void {\n this.searchSubscription = this.searchSubject.pipe(\n debounceTime(this.debounceTime)\n ).subscribe((searchText) => {\n this.search.emit(searchText);\n });\n }\n\n onInput(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n const value = inputElement.value;\n this.value = value;\n this.inputChange.emit(value); // Emite o valor de input imediatamente\n this.searchSubject.next(value);\n this.onChangeFn(value); // Chame onChangeFn para notificar o Angular Forms sobre a mudança\n }\n\n onChange(event: Event): void {\n this.change.emit(event);\n }\n\n onFocus(event: Event): void {\n this.focus.emit(event);\n }\n\n onBlur(event: Event): void {\n this.blur.emit(event);\n this.onTouchedFn(); // Chame onTouchedFn para notificar o Angular Forms sobre o blur\n }\n\n onKeyup(event: KeyboardEvent): void {\n this.keyup.emit(event);\n }\n\n onKeydown(event: KeyboardEvent): void {\n this.keydown.emit(event);\n }\n\n onKeypress(event: KeyboardEvent): void {\n this.keypress.emit(event);\n }\n\n ngOnDestroy(): void {\n this.searchSubscription.unsubscribe();\n }\n\n getLabelStyles() {\n return {\n fontFamily: 'Inter',\n fontSize: '16px',\n lineHeight: '19.36px',\n };\n }\n\n // ControlValueAccessor interface implementation\n onChangeFn: (value: string) => void = () => { };\n onTouchedFn: () => void = () => { };\n\n writeValue(value: string): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"form-group\">\n <label [for]=\"id\" [ngStyle]=\"getLabelStyles()\">{{ label }}</label>\n <input [type]=\"type\"\n class=\"form-control custom-input\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onKeyup($event)\"\n (keydown)=\"onKeydown($event)\"\n (keypress)=\"onKeypress($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [attr.pattern]=\"pattern\"\n [autofocus]=\"autofocus\">\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, OnDestroy, OnChanges, SimpleChanges, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-custom-select',\n styleUrls: ['./select.component.scss'],\n template: `\n <div *ngIf=\"hasPermission()\" class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"select-container\">\n <select class=\"form-control custom-select\"\n [id]=\"id\"\n [value]=\"value\"\n (change)=\"onSelectChange($event)\"\n [disabled]=\"disabled\">\n <option *ngFor=\"let option of options\" [value]=\"option.value\">{{ option.label }}</option>\n </select>\n <lucide-icon name=\"chevron-down\" [size]=\"16\" color=\"#5E6366\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n </div>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectComponent implements ControlValueAccessor, OnDestroy, OnChanges {\n @Input() label: string = 'Default Label';\n @Input() id: string = 'selectId';\n @Input() disabled: boolean = false;\n @Input() options: { value: any, label: string }[] = [];\n @Input() permissions: string[] | undefined;\n\n @Output() changeEvent: EventEmitter<any> = new EventEmitter<any>();\n\n private onChangeCallback: (_: any) => void = () => { };\n private onTouchedCallback: () => void = () => { };\n\n value: any;\n private destroy$ = new Subject<void>();\n\n constructor(private authService: AuthService) { }\n\n onSelectChange(event: Event) {\n const selectElement = event.target as HTMLSelectElement;\n this.value = selectElement.value;\n this.onChangeCallback(this.value);\n this.changeEvent.emit(this.value);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options'] && changes['options'].currentValue !== changes['options'].previousValue) {\n this.updateOptions(changes['options'].currentValue);\n }\n }\n\n updateOptions(newOptions: { value: any, label: string }[]): void {\n this.options = newOptions;\n }\n\n hasPermission(): boolean {\n if (!this.permissions || this.permissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(this.permissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error('Permission error:', error.message);\n } else {\n console.error('Unknown error occurred during permission check');\n }\n return true;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { AuthService } from '../../service/auth-service.service';\n\n@Component({\n selector: 'argenta-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent implements OnInit, OnChanges {\n @Input() tabs: { label: string; content: TemplateRef<any>; permissions?: string[] }[] = [];\n @Input() activeTabIndex: number = 0;\n @Input() componentPermissions?: string[];\n @Output() tabChanged: EventEmitter<number> = new EventEmitter<number>();\n\n showTabs = true; // Controla a exibição do componente\n\n constructor(private authService: AuthService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.hasComponentPermission() && this.tabs.length > 0) {\n this.selectTab(this.activeTabIndex);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['tabs'] && !changes['tabs'].firstChange) {\n this.tabs = [...this.tabs]; // Gera uma nova referência\n this.activeTabIndex = 0;\n this.cdr.markForCheck(); // Força a atualização\n }\n }\n\n selectTab(index: number, event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n }\n if (this.hasPermission(this.tabs[index]?.permissions)) {\n this.activeTabIndex = index;\n this.tabChanged.emit(this.activeTabIndex);\n }\n }\n\n hasPermission(requiredPermissions?: string[]): boolean {\n if (!requiredPermissions || requiredPermissions.length === 0) {\n return true;\n }\n return this.authService.hasPermission(requiredPermissions);\n }\n\n hasComponentPermission(): boolean {\n if (!this.componentPermissions || this.componentPermissions.length === 0) {\n return true;\n }\n return this.authService.hasPermission(this.componentPermissions);\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n // 🔹 Método para reiniciar o componente\n refreshTabs(): void {\n this.showTabs = false; // Remove o componente do DOM\n setTimeout(() => {\n this.showTabs = true; // Adiciona novamente\n this.cdr.detectChanges(); // Força a atualização do template\n });\n }\n}\n","<ng-container *ngIf=\"showTabs\">\n <ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RefreshService {\n private refreshSubject = new Subject<void>();\n\n get refresh$(): Observable<void> {\n return this.refreshSubject.asObservable();\n }\n\n refresh() {\n this.refreshSubject.next();\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { ConfirmationComponent } from './confirmation.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService implements OnDestroy {\n private modalRef: NgbModalRef | null = null;\n\n constructor(private modalService: NgbModal) { }\n\n confirm(\n title: string,\n message: string,\n confirmButtonText: string = 'Sim',\n cancelButtonText: string = 'Não'\n ): Promise<boolean> {\n this.modalRef = this.modalService.open(ConfirmationComponent, { backdrop: 'static', keyboard: false });\n this.modalRef.componentInstance.title = title;\n this.modalRef.componentInstance.message = message;\n this.modalRef.componentInstance.confirmButtonText = confirmButtonText;\n this.modalRef.componentInstance.cancelButtonText = cancelButtonText;\n\n return this.modalRef.result.then((result) => {\n return result === 'confirm';\n }, () => {\n return false;\n }).finally(() => {\n this.modalRef = null; // Clear the reference after the modal is closed\n });\n }\n\n ngOnDestroy() {\n if (this.modalRef) {\n this.modalRef.dismiss();\n this.modalRef = null;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n} from \"@angular/core\"\nimport { Observable, Subject } from \"rxjs\"\nimport { takeUntil } from \"rxjs/operators\"\nimport { ButtonClasses } from \"../../enum/ButtonClassesEnum\"; // Importando o enum\nimport { AuthService } from \"../../service/auth-service.service\"\nimport { RefreshService } from \"../../service/refresh-service.service\"\nimport { ConfirmationService } from \"../confirmation/confirmation.service\"\nimport { IDataIndexPaginate, IPaginateResult } from \"./data-paginate.service\"\n\n@Component({\n selector: \"argenta-list-data-table\",\n templateUrl: \"./data-table.component.html\",\n styleUrls: [\"./data-table.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent implements OnInit, OnDestroy {\n @Input() columns: {\n label: string;\n prop: string;\n type?: \"string\" | \"image\";\n isSearchSelected?: boolean;\n }[] = [];\n @Input() hiddenColumns: string[] = [];\n @Input() defaultItemsPerPage: number = 10;\n @Input() itemsPerPageLabel: string = \"Items per page:\";\n @Input() showActionColumn: boolean = false;\n @Input() actionColumnLabel: string = \"Actions\";\n @Input() totalItems: number = 0;\n\n @Input() fetchDataFunction: (\n params: IDataIndexPaginate\n ) => Observable<IPaginateResult<any>> = () => {\n return new Observable((subscriber) =>\n subscriber.error(\n \"Implement the fetchDataFunction to fetch paginated data from the back-end.\"\n )\n );\n };\n\n @Input() editPermissions: string[] = [];\n @Input() deletePermissions: string[] = [];\n @Input() inativoPermissions: string[] = [];\n @Input() viewPermissions: string[] = [];\n @Input() inativoTexts: {\n inactivate: string;\n activate: string;\n modalTitle: string;\n modalText: string;\n } = {\n inactivate: \"Desativar\",\n activate: \"Ativar\",\n modalTitle: \"Alterar status\",\n modalText: \"Você deseja realmente alterar o status?\",\n };\n @Input() showPageInfo: boolean = true;\n @Input() pageText: string = \"Page\";\n @Input() ofText: string = \"of\";\n @Input() filterDescription: string = \"\";\n @Input() buttonLabel: string = \"\";\n @Input() pagedData: any[] = [];\n @Input() initialFilterField: string | null = null;\n @Input() buttonList?: TemplateRef<any>[] = [];\n @Input() statusField: string = 'indInativo';\n\n @Output() statusChange: EventEmitter<any> = new EventEmitter();\n @Output() sortChange: EventEmitter<any> = new EventEmitter();\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n @Output() itemsPerPageChange: EventEmitter<number> = new EventEmitter();\n @Output() onEditTable: EventEmitter<any> = new EventEmitter();\n @Output() onDeleteTable: EventEmitter<any> = new EventEmitter();\n @Output() onViewTable: EventEmitter<any> = new EventEmitter();\n @Output() onButtonClick: EventEmitter<void> = new EventEmitter();\n @Output() filterFieldChange: EventEmitter<string> = new EventEmitter();\n\n itemsPerPageOptions: number[] = [5, 10, 15, 25];\n currentPage: number = 1;\n sortColumn: string = \"\";\n sortDirection: \"asc\" | \"desc\" = \"asc\";\n selectedSearchField: string = \"\";\n isLoading = false;\n private destroy$ = new Subject<void>();\n private isInitialized = false; // Flag para evitar chamadas duplas\n ButtonClasses = ButtonClasses;\n\n labelStyle = {\n \"font-family\": \"Inter, Arial, sans-serif\",\n \"font-size\": \"14px\",\n color: \"#000\",\n };\n\n constructor(\n private cdr: ChangeDetectorRef,\n private authService: AuthService,\n private refreshService: RefreshService,\n private confirmationService: ConfirmationService\n ) {}\n\n ngOnInit() {\n if (this.initialFilterField) {\n // Se o usuário definir o initialFilterField, ele será usado como o campo inicial\n this.selectedSearchField = this.initialFilterField;\n this.sortColumn = this.initialFilterField;\n this.sortDirection = \"asc\";\n\n this.columns = this.columns.map((column) => ({\n ...column,\n isSearchSelected: column.prop === this.initialFilterField,\n }));\n } else if (this.columns.length > 0) {\n // Caso contrário, usa a primeira coluna como padrão\n this.selectedSearchField = this.columns[0].prop;\n this.sortColumn = this.columns[0].prop;\n this.sortDirection = \"asc\";\n\n this.columns = this.columns.map((column) => ({\n ...column,\n isSearchSelected: column.prop === this.selectedSearchField,\n }));\n }\n\n //this.fetchData();\n this.refreshService.refresh$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.isInitialized) {\n this.refreshData();\n }\n });\n\n this.isInitialized = true;\n }\n\n // ngOnChanges(changes: SimpleChanges) {\n // if (\n // changes[\"totalItems\"] ||\n // changes[\"defaultItemsPerPage\"] ||\n // changes[\"currentPage\"] ||\n // changes[\"fetchDataFunction\"] ||\n // changes[\"filterDescription\"]\n // ) {\n // this.fetchData();\n // }\n // }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n protected getNestedProperty(obj: any, path: string): any {\n return path.split(\".\").reduce((acc, part) => acc && acc[part], obj);\n }\n\n fetchData() {\n if (this.fetchDataFunction) {\n this.isLoading = true;\n const params: IDataIndexPaginate = {\n filterDescription: this.filterDescription,\n filterField: this.selectedSearchField,\n pageNumber: this.currentPage ?? 1,\n pageSize: this.defaultItemsPerPage ?? 10,\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n };\n\n this.fetchDataFunction(params)\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (result) => {\n this.pagedData = result.items;\n this.totalItems = result.totalItems;\n this.isLoading = false;\n this.cdr.markForCheck();\n },\n error: (error) => {\n console.error(\"Error fetching data:\", error);\n this.isLoading = false;\n },\n });\n }\n }\n\n refreshData() {\n this.fetchData();\n }\n\n onPageChange(page: number) {\n this.currentPage = page;\n this.pageChange.emit(page);\n this.fetchData();\n }\n\n onItemsPerPageChange() {\n this.currentPage = 1;\n this.itemsPerPageChange.emit(this.defaultItemsPerPage);\n this.fetchData();\n }\n\n onSelectSearchField(columnProp: string) {\n if (this.sortColumn === columnProp) {\n this.sortDirection = this.sortDirection === \"asc\" ? \"desc\" : \"asc\";\n } else {\n this.sortDirection = \"asc\";\n }\n\n this.selectedSearchField = columnProp;\n this.sortColumn = columnProp;\n\n this.columns = this.columns.map((column) => ({\n ...column,\n isSearchSelected: column.prop === columnProp,\n }));\n\n this.filterFieldChange.emit(this.selectedSearchField);\n\n if (this.fetchDataFunction) {\n this.fetchDataFunction({\n filterDescription: this.filterDescription,\n filterField: this.selectedSearchField,\n pageNumber: this.currentPage,\n pageSize: this.defaultItemsPerPage,\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n }).subscribe({\n next: (result) => {\n this.pagedData = result.items;\n this.totalItems = result.totalItems;\n this.cdr.markForCheck();\n },\n error: (error) => {\n console.error(\"Erro ao buscar dados:\", error);\n },\n });\n }\n }\n\n handleAction(action: string, item: any, index: number) {\n switch (action) {\n case \"edit\":\n if (this.hasPermission(this.editPermissions)) {\n this.onEditTable.emit({ item, index });\n }\n break;\n case \"delete\":\n if (this.hasPermission(this.deletePermissions)) {\n this.onDeleteTable.emit({ item, index });\n }\n break;\n case \"view\":\n if (this.hasPermission(this.viewPermissions)) {\n this.onViewTable.emit({ item, index });\n }\n break;\n case \"inativar\":\n if (this.hasPermission(this.inativoPermissions)) {\n this.confirmationService\n .confirm(this.inativoTexts.modalTitle, this.inativoTexts.modalText)\n .then((confirmed: boolean) => {\n if (confirmed) {\n let value = !item[this.statusField]\n item[this.statusField] = value\n this.statusChange.emit({ status: value, item: item });\n } else {\n return;\n }\n });\n }\n break;\n }\n }\n\n hasPermission(requiredPermissions: string[]): boolean {\n if (!requiredPermissions || requiredPermissions.length === 0) {\n return true;\n }\n\n try {\n return this.authService.hasPermission(requiredPermissions);\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\"Permission error:\", error.message);\n } else {\n console.error(\"Unknown error occurred during permission check\");\n }\n return true;\n }\n }\n\n isColumnHidden(columnProp: string): boolean {\n return this.hiddenColumns.includes(columnProp);\n }\n\n isBoolean(value: any): boolean {\n return typeof value === 'boolean';\n }\n\n onSearch(searchText: string) {\n this.filterDescription = searchText;\n this.currentPage = 1; // Resetar para a primeira página\n this.fetchData();\n }\n\n onNewButtonClick() {\n this.onButtonClick.emit(); // Emitindo o evento\n }\n}\n","<div class=\"data-table-header\" style=\"margin-top: 2.5rem\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{\n itemsPerPageLabel\n }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\"\n >\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"right-section\">\n <div *ngIf=\"buttonList && buttonList.length > 0\" class=\"ng-button-row\">\n <ng-container *ngFor=\"let buttonTemplate of buttonList\">\n <ng-container\n *ngTemplateOutlet=\"buttonTemplate\"\n class=\"ng-button\"\n ></ng-container>\n </ng-container>\n </div>\n <button\n *ngIf=\"buttonLabel && buttonLabel.length > 0\"\n class=\"custom-button\"\n (click)=\"onNewButtonClick()\"\n >\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input\n id=\"search\"\n label=\"\"\n placeholder=\"Buscar\"\n [(ngModel)]=\"filterDescription\"\n (search)=\"onSearch($event)\"\n ></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th\n *ngIf=\"!isColumnHidden(column.prop)\"\n (click)=\"onSelectSearchField(column.prop)\"\n >\n {{ column.label }}\n <span>\n <i-lucide\n name=\"arrow-up\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'asc'\n \"\n ></i-lucide>\n <i-lucide\n name=\"arrow-down\"\n [size]=\"14\"\n [class.selected]=\"\n column.isSearchSelected && sortDirection === 'desc'\n \"\n ></i-lucide>\n </span>\n </th>\n </ng-container>\n <th\n *ngIf=\"showActionColumn\"\n class=\"text-end\"\n style=\"padding-right: 6.3rem\"\n >\n {{ actionColumnLabel }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\" [ngSwitch]=\"column.type\">\n <!-- Default case (when type is undefined or not matched) -->\n <span *ngSwitchDefault>\n {{ getNestedProperty(item, column.prop) }}\n </span>\n\n <!-- String case -->\n <span *ngSwitchCase=\"'string'\">\n {{ getNestedProperty(item, column.prop) }}\n </span>\n\n <!-- Image case -->\n <img\n *ngSwitchCase=\"'image'\"\n [src]=\"getNestedProperty(item, column.prop)\"\n alt=\"Image\"\n width=\"50\"\n height=\"50\"\n />\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div\n *ngIf=\"\n hasPermission(editPermissions) &&\n onEditTable.observers.length > 0\n \"\n (click)=\"handleAction('edit', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"square-pen\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(inativoPermissions) &&\n statusChange.observers.length > 0 &&\n statusField.length > 0 &&\n isBoolean(item[statusField])\n \"\n (click)=\"handleAction('inativar', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <button\n [ngClass]=\"\n item[statusField]\n ? 'btn btn-success small-rounded-btn'\n : 'btn btn-danger small-rounded-btn'\n \"\n >\n {{\n item[statusField] ? inativoTexts.activate : inativoTexts.inactivate\n }}\n </button>\n </div>\n <div\n *ngIf=\"\n hasPermission(viewPermissions) &&\n onViewTable.observers.length > 0\n \"\n (click)=\"handleAction('view', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <lucide-icon\n name=\"user-round\"\n [size]=\"20\"\n color=\"#2CA58D\"\n [strokeWidth]=\"1.75\"\n ></lucide-icon>\n </div>\n <div\n *ngIf=\"\n hasPermission(deletePermissions) &&\n onDeleteTable.observers.length > 0\n \"\n (click)=\"handleAction('delete', item, i)\"\n class=\"clickable-icon\"\n style=\"margin-right: 1.5rem\"\n >\n <i-lucide\n name=\"trash-2\"\n [size]=\"20\"\n color=\"#F26E6E\"\n [strokeWidth]=\"1.75\"\n ></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\"\n >\n </custom-pagination>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'sim-app-textarea',\n template: `\n <div class=\"form-group\" [ngStyle]=\"{\n 'margin-top': marginTop + 'rem',\n 'margin-bottom': marginBottom + 'rem',\n 'margin-left': marginLeft + 'rem',\n 'margin-right': marginRight + 'rem'\n }\">\n <label [for]=\"id\" class=\"form-label\">{{ label }}</label>\n <textarea class=\"form-control custom-textarea\"\n [id]=\"id\"\n [rows]=\"rows\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onKeyup($event)\"\n (keydown)=\"onKeydown($event)\"\n (keypress)=\"onKeypress($event)\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [autofocus]=\"autofocus\"></textarea>\n </div>\n `,\n styles: [`\n .form-group {\n margin-bottom: 1rem;\n }\n .form-label {\n font-family: Arial, sans-serif;\n color: #333;\n font-size: 1rem;\n font-weight: bold;\n }\n `],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TextareaComponent implements ControlValueAccessor {\n @Input() label: string = 'Default Label';\n @Input() placeholder: string = 'Default Placeholder';\n @Input() id: string = 'textareaId';\n @Input() rows: number = 3;\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() maxlength: number | null = null;\n @Input() minlength: number | null = null;\n @Input() required: boolean = false;\n @Input() autofocus: boolean = false;\n\n @Input() marginTop: number = 0;\n @Input() marginBottom: number = 0;\n @Input() marginLeft: number = 0;\n @Input() marginRight: number = 0;\n\n @Output() inputEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() changeEvent: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output() blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n @Output() keyupEvent: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() keydownEvent: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() keypressEvent: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n private onChangeCallback: (_: any) => void = () => { };\n private onTouchedCallback: () => void = () => { };\n\n value: string = '';\n\n onInput(event: Event) {\n const inputElement = event.target as HTMLTextAreaElement;\n this.value = inputElement.value;\n this.onChangeCallback(this.value);\n this.inputEvent.emit(event);\n }\n\n onChange(event: Event) {\n this.changeEvent.emit(event);\n }\n\n onFocus(event: FocusEvent) {\n this.focusEvent.emit(event);\n }\n\n onBlur(event: FocusEvent) {\n this.onTouchedCallback();\n this.blurEvent.emit(event);\n }\n\n onKeyup(event: KeyboardEvent) {\n this.keyupEvent.emit(event);\n }\n\n onKeydown(event: KeyboardEvent) {\n this.keydownEvent.emit(event);\n }\n\n onKeypress(event: KeyboardEvent) {\n this.keypressEvent.emit(event);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ITreeNode } from './Itree-node';\n\n@Component({\n selector: 'argenta-custom-tree-node',\n templateUrl: './tree-node.component.html',\n styleUrls: ['./tree-node.component.scss']\n})\nexport class TreeNodeComponent implements OnInit {\n @Input() title: string = '';\n @Input() nodes: ITreeNode[] = [];\n @Input() isRoot: boolean = true;\n @Output() nodeSelected = new EventEmitter<ITreeNode>();\n\n ngOnInit() {\n if (this.isRoot && !this.title) {\n this.title = 'Tree Node';\n }\n }\n\n onNodeSelected(node: ITreeNode, event: any) {\n node.selected = event.target.checked;\n if (node.children) {\n this.toggleChildren(node.children, node.selected);\n }\n this.updateParentSelection(this.nodes);\n this.nodeSelected.emit(node);\n }\n\n toggleChildren(children: ITreeNode[], selected: boolean) {\n children.forEach(child => {\n child.selected = selected;\n if (child.children) {\n this.toggleChildren(child.children, selected);\n }\n });\n }\n\n onChildNodeSelected(node: ITreeNode) {\n this.updateParentSelection(this.nodes);\n this.nodeSelected.emit(node);\n }\n\n updateParentSelection(nodes: ITreeNode[]) {\n nodes.forEach(node => {\n if (node.children) {\n const anyChildSelected = node.children.some(child => child.selected);\n if (anyChildSelected) {\n node.selected = true;\n }\n // Recursive call for nested parents\n this.updateParentSelection(node.children);\n }\n });\n }\n\n toggleCollapse(node: ITreeNode) {\n node.collapsed = !node.collapsed;\n }\n}\n","<div *ngIf=\"isRoot\" class=\"tree-title\">{{ title || 'Tree Node' }}</div>\n<ul class=\"tree\">\n <li *ngFor=\"let node of nodes\">\n <div class=\"node-content\">\n <!-- Exibir a seta apenas se o nó tiver filhos não vazios -->\n <span *ngIf=\"node.children && node.children.length > 0\" class=\"toggle-icon\" (click)=\"toggleCollapse(node)\"\n [ngClass]=\"{'collapsed-icon': node.collapsed, 'expanded-icon': !node.collapsed}\">\n {{ node.collapsed ? '▶' : '▼' }}\n </span>\n <!-- Exibir a bolinha cinza se o nó não tiver filhos -->\n <span *ngIf=\"!node.children || node.children.length === 0\" class=\"dot\"></span>\n <label class=\"custom-checkbox\">\n <input type=\"checkbox\" [checked]=\"node.selected\" (change)=\"onNodeSelected(node, $event)\" />\n <span class=\"checkmark\"></span>\n </label>\n <label class=\"node-label\">{{ node.name }}</label>\n </div>\n <!-- Renderizar recursivamente apenas se o nó tiver filhos não vazios e não estiver colapsado -->\n <argenta-custom-tree-node *ngIf=\"node.children && node.children.length > 0 && !node.collapsed\" [nodes]=\"node.children\" [isRoot]=\"false\" (nodeSelected)=\"onChildNodeSelected(node)\"></argenta-custom-tree-node>\n </li>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { icons, LucideAngularModule } from 'lucide-angular';\n\n// Select some icons (use an object, not an array)\n@NgModule({\n imports: [LucideAngularModule.pick(icons)],\n exports: [LucideAngularModule],\n})\nexport class LucideIconsModule { }\n","import { CommonModule } from \"@angular/common\"\nimport { NgModule } from \"@angular/core\"\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\"\nimport { NgSelectModule } from \"@ng-select/ng-select\"\nimport { AutofocusDirective } from \"../directive/autofocus-directive/autofocus.directive\"\nimport { CepMaskDirective } from \"../directive/cep-mask.directive\"\nimport { CnpjMaskDirective } from \"../directive/cnpj-mask.directive\"\nimport { CpfMaskDirective } from \"../directive/cpf-mask.directive\"\nimport { LucideIconsModule } from \"../icons/lucide-icons.module\"\nimport { AccordionArgentaComponent } from \"./accordion/accordion.component\"\nimport { AlertComponent } from \"./alert/alert.component\"\nimport { AppBackgroundComponent } from \"./app-background/app-background.component\"\nimport { BadgeComponent } from \"./badge/badge.component\"\nimport { BasicRegistrationComponent } from \"./basic-registration/basic-registration.component\"\nimport { ButtonComponent } from \"./button/button.component\"\nimport { CalendarArgentaComponent } from \"./calendar-argenta/calendar-argenta.component\"\nimport { CardInfoComponent } from \"./card-info/card-info.component\"\nimport { CardComponent } from \"./card/card.component\"\nimport { CheckboxComponent } from \"./checkbox/checkbox.component\"\nimport { CodeHighlightComponent } from \"./code-highlight/code-highlight.component\"\nimport { ConfirmationComponent } from \"./confirmation/confirmation.component\"\nimport { CsvImporterComponent } from \"./csv-importer/csv-importer.component\"\nimport { CustomPaginationComponent } from \"./custom-pagination/custom-pagination.component\"\nimport { CustomSwitchComponent } from \"./custom-switch/custom-switch.component\"\nimport { DataExcelExporterComponent } from \"./data-excel-exporter/data-excel-exporter.component\"\nimport { DataExcelImporterComponent } from \"./data-excel-import/data-excel-importer.component\"\nimport { DragDropListComponent } from \"./drag-drop-list/drag-drop-list.component\"\nimport { DynamicModalComponent } from \"./dynamic-modal/dynamic-modal.component\"\nimport { DynamicTableComponent } from \"./dynamic-table/dynamic-table.component\"\nimport { FileUploadComponent } from \"./file-upload/file-upload.component\"\nimport { ImageUploadComponent } from \"./image-upload/image-upload.component\"\nimport { InputComponent } from \"./imput/input.component\"\nimport { JsonEditorComponent } from \"./json-editor/json-editor.component\"\nimport { JsonViewerComponent } from \"./json-viewer/json-viewer.component\"\nimport { ModalComponent } from \"./modal/modal.component\"\nimport { MultiSelectCategoryComponent } from \"./multi-select-category/multi-select-category.component\"\nimport { MultiSelectComponent } from \"./multi-select/multi-select.component\"\nimport { ArgentaPdfDataHandlerComponent } from \"./pdf-data-handler/argenta-pdf-data-handler.component\"\nimport { ArgentaPdfDownloadComponent } from \"./pdf-download/argenta-pdf-download.component\"\nimport { RadioComponent } from \"./radio/radio.component\"\nimport { SearchCustomerComponent } from \"./search-customer/search-customer.component\"\nimport { SearchInputComponent } from \"./search-input/search-input.component\"\nimport { SelectComponent } from \"./select/select.component\"\nimport { TabComponent } from \"./tab/tab.component\"\nimport { DataTableComponent } from \"./tables/data-table.component\"\nimport { TextareaComponent } from \"./textarea/textarea.component\"\nimport { TreeNodeComponent } from \"./tree-node/tree-node.component\"\n\n@NgModule({\n declarations: [\n ButtonComponent,\n CardComponent,\n InputComponent,\n CheckboxComponent,\n TextareaComponent,\n SelectComponent,\n RadioComponent,\n MultiSelectComponent,\n DataTableComponent,\n CodeHighlightComponent,\n BadgeComponent,\n AlertComponent,\n CardInfoComponent,\n ConfirmationComponent,\n AutofocusDirective,\n CepMaskDirective,\n CnpjMaskDirective,\n CpfMaskDirective,\n CustomPaginationComponent,\n TreeNodeComponent,\n SearchInputComponent,\n AppBackgroundComponent,\n BasicRegistrationComponent,\n CustomSwitchComponent,\n SearchCustomerComponent,\n TabComponent,\n FileUploadComponent,\n ImageUploadComponent,\n MultiSelectCategoryComponent,\n CalendarArgentaComponent,\n AccordionArgentaComponent,\n JsonViewerComponent,\n JsonEditorComponent,\n ModalComponent,\n DragDropListComponent,\n DynamicModalComponent,\n DynamicTableComponent,\n ArgentaPdfDataHandlerComponent,\n ArgentaPdfDownloadComponent,\n DataExcelExporterComponent,\n DataExcelImporterComponent,\n CsvImporterComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n LucideIconsModule,\n ],\n exports: [\n ButtonComponent,\n CardComponent,\n InputComponent,\n CheckboxComponent,\n TextareaComponent,\n SelectComponent,\n RadioComponent,\n MultiSelectComponent,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n DataTableComponent,\n CodeHighlightComponent,\n BadgeComponent,\n AlertComponent,\n CardInfoComponent,\n ConfirmationComponent,\n AutofocusDirective,\n CepMaskDirective,\n CnpjMaskDirective,\n CpfMaskDirective,\n CustomPaginationComponent,\n TreeNodeComponent,\n SearchInputComponent,\n LucideIconsModule,\n AppBackgroundComponent,\n BasicRegistrationComponent,\n CustomSwitchComponent,\n SearchCustomerComponent,\n TabComponent,\n FileUploadComponent,\n ImageUploadComponent,\n MultiSelectCategoryComponent,\n CalendarArgentaComponent,\n AccordionArgentaComponent,\n JsonViewerComponent,\n JsonEditorComponent,\n ModalComponent,\n DragDropListComponent,\n DynamicModalComponent,\n DynamicTableComponent,\n ArgentaPdfDataHandlerComponent,\n ArgentaPdfDownloadComponent,\n DataExcelExporterComponent,\n DataExcelImporterComponent,\n CsvImporterComponent,\n ],\n})\nexport class ComponentsModule {}\n","import { ApplicationRef, ComponentRef, createComponent, Injectable, Injector } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AlertComponent } from './alert.component';\n\nexport interface Alert {\n type: 'success' | 'info' | 'warning' | 'danger';\n title: string;\n message: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n private alertsSubject = new Subject<Alert>();\n alerts$ = this.alertsSubject.asObservable();\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector\n ) { }\n\n showAlert(type: 'success' | 'info' | 'warning' | 'danger', title: string, message: string) {\n const alert: Alert = { type, title, message };\n this.alertsSubject.next(alert);\n\n // Create the alert component dynamically\n const componentRef: ComponentRef<AlertComponent> = createComponent(AlertComponent, { environmentInjector: this.appRef.injector });\n componentRef.instance.alerts = [alert];\n\n this.appRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as any).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n \n \n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nexport interface IDataIndexPaginate {\n filterDescription?: string;\n filterField: string;\n pageNumber: number;\n pageSize: number;\n sortColumn: string;\n sortDirection: \"asc\" | \"desc\";\n}\n\nexport interface IPaginateResult<T> {\n items: T[];\n totalItems: number;\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class DataPaginateService {\n constructor(private http: HttpClient) {}\n\n fetchData<T>(\n url: string,\n params: IDataIndexPaginate\n ): Observable<IPaginateResult<T>> {\n let httpParams = new HttpParams()\n .set(\"page\", params.pageNumber.toString())\n .set(\"limit\", params.pageSize.toString())\n .set(\"sort\", params.sortColumn)\n .set(\"order\", params.sortDirection);\n\n if (params.filterDescription) {\n httpParams = httpParams.set(\"description\", params.filterDescription);\n }\n\n if (params.filterField) {\n httpParams = httpParams.set(\"filterField\", params.filterField);\n }\n\n return this.http\n .get<{ meta: { total: number }; data: T[] }>(url, { params: httpParams })\n .pipe(\n map((response) => {\n const items = response.data || [];\n const totalItems = response.meta?.total || 0;\n return {\n items,\n totalItems,\n };\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterParameterService {\n private secretKey = '9db3589f$h86115&@b457bdff422c232e0e04c!ibe14374970aef0fe0ba054618f!='\n setParameter(data: string): string {\n return CryptoJS.AES.encrypt(data, this.secretKey).toString();\n }\n\n getParameter(data: string): string {\n const bytes = CryptoJS.AES.decrypt(data, this.secretKey);\n return bytes.toString(CryptoJS.enc.Utf8);\n }\n}\n","import { NgModule } from '@angular/core'\nimport { NotificationService } from './components/alert/notification.service'\nimport { ComponentsModule } from './components/components.module'\nimport { ConfirmationService } from './components/confirmation/confirmation.service'\nimport { DataPaginateService } from './components/tables/data-paginate.service'\n// import { ExcelService } from './service/excel-service.service'\nimport { RefreshService } from './service/refresh-service.service'\nimport { RouterParameterService } from './service/route-parameter.service'\n\n@NgModule({\n imports: [\n ComponentsModule,\n \n ],\n exports: [\n ComponentsModule, \n ],\n providers: [\n NotificationService,\n ConfirmationService,\n DataPaginateService,\n RefreshService,\n RouterParameterService,\n // ExcelService,\n ],\n})\nexport class LibPortalAngularModule { }\n","import { Injectable } from '@angular/core'\nimport * as XLSX from \"xlsx\"\nimport { IExcelExportConfig } from '../components/data-excel-exporter/IExcelExportConfig'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ExcelService {\n\n constructor() { }\n\n async createExcel(data: IExcelExportConfig): Promise<void> {\n let mainSheetData: IExcelExportConfig = data\n\n const workbook = XLSX.utils.book_new()\n\n // Verifica se múltiplas planilhas estão configuradas\n if (mainSheetData.multipleSheets) {\n mainSheetData.multipleSheets.forEach((sheetConfig: any) => {\n const worksheet = XLSX.utils.aoa_to_sheet([])\n\n // Adiciona o título, se houver\n let startRow = 0\n if (sheetConfig.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[sheetConfig.title]], {\n origin: \"A1\",\n })\n\n // Define larguras personalizadas do título\n if (sheetConfig.titleWidths) {\n worksheet[\"!cols\"] = sheetConfig.titleWidths.map((width: any) => ({\n wch: width,\n }))\n }\n\n // Mescla o título\n if (sheetConfig.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || []\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: sheetConfig.tableHeaders.length - 1 },\n })\n }\n\n startRow = 1\n }\n\n // Adiciona cabeçalhos\n if (sheetConfig.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [sheetConfig.tableHeaders], {\n origin: `A${startRow + 1}`,\n })\n }\n\n // Adiciona dados\n if (sheetConfig.data) {\n XLSX.utils.sheet_add_json(worksheet, sheetConfig.data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n })\n }\n\n // Define larguras das colunas\n if (sheetConfig.columnWidths) {\n worksheet[\"!cols\"] = sheetConfig.columnWidths.map((width: any) => ({\n wch: width,\n }))\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(\n workbook,\n worksheet,\n sheetConfig.sheetName\n )\n })\n } else {\n // Caso não haja múltiplas planilhas, processa a planilha única\n const worksheet = XLSX.utils.aoa_to_sheet([])\n\n // Adiciona título, se houver\n let startRow = 0\n if (mainSheetData.title) {\n XLSX.utils.sheet_add_aoa(worksheet, [[mainSheetData.title]], {\n origin: \"A1\",\n })\n\n // Define larguras do título\n if (mainSheetData.titleWidths) {\n worksheet[\"!cols\"] = mainSheetData.titleWidths.map((width) => ({\n wch: width,\n }))\n }\n\n // Mescla o título\n if (mainSheetData.tableHeaders) {\n worksheet[\"!merges\"] = worksheet[\"!merges\"] || []\n worksheet[\"!merges\"].push({\n s: { r: 0, c: 0 },\n e: { r: 0, c: mainSheetData.tableHeaders.length - 1 },\n })\n }\n\n startRow = 1\n }\n\n // Adiciona cabeçalhos\n if (mainSheetData.tableHeaders) {\n XLSX.utils.sheet_add_aoa(worksheet, [mainSheetData.tableHeaders], {\n origin: `A${startRow + 1}`,\n })\n }\n\n // Adiciona dados\n XLSX.utils.sheet_add_json(worksheet, mainSheetData.multipleSheets![0].data, {\n origin: `A${startRow + 2}`,\n skipHeader: true,\n })\n\n // Define larguras das colunas\n if (mainSheetData.columnWidths) {\n worksheet[\"!cols\"] = mainSheetData.columnWidths.map((width) => ({\n wch: width,\n }))\n }\n\n // Adiciona a planilha ao workbook\n XLSX.utils.book_append_sheet(workbook, worksheet, mainSheetData.sheetName!)\n }\n\n // Salva o arquivo Excel\n XLSX.writeFile(workbook, mainSheetData.fileName)\n }\n}","export function convertToSnakeCase(input: string): string {\n return input.replace(/([A-Z])/g, \"_$1\").toLowerCase();\n}\n","export function setThemeColors(config: {\n primary?: string;\n secondary?: string;\n success?: string;\n danger?: string;\n warning?: string;\n info?: string;\n light?: string;\n dark?: string;\n linkBorder?: string;\n background?: string;\n text?: string;\n font?: string;\n}) {\n if (config.primary) {\n document.documentElement.style.setProperty(\n \"--primary-color\",\n config.primary\n );\n }\n if (config.secondary) {\n document.documentElement.style.setProperty(\n \"--secondary-color\",\n config.secondary\n );\n }\n if (config.success) {\n document.documentElement.style.setProperty(\n \"--success-color\",\n config.success\n );\n }\n if (config.danger) {\n document.documentElement.style.setProperty(\"--danger-color\", config.danger);\n }\n if (config.warning) {\n document.documentElement.style.setProperty(\n \"--warning-color\",\n config.warning\n );\n }\n if (config.info) {\n document.documentElement.style.setProperty(\"--info-color\", config.info);\n }\n if (config.light) {\n document.documentElement.style.setProperty(\"--light-color\", config.light);\n }\n if (config.dark) {\n document.documentElement.style.setProperty(\"--dark-color\", config.dark);\n }\n if (config.linkBorder) {\n document.documentElement.style.setProperty(\n \"--link-border-color\",\n config.linkBorder\n );\n }\n if (config.background) {\n document.documentElement.style.setProperty(\n \"--background-color\",\n config.background\n );\n }\n if (config.text) {\n document.documentElement.style.setProperty(\"--text-color\", config.text);\n }\n if (config.font) {\n document.documentElement.style.setProperty(\"--font-family\", config.font);\n }\n}\n","/*\n * Public API Surface of lib-atriun-angular\n *\n * Este arquivo exporta todos os componentes, enums e módulos necessários\n * para que os consumidores da biblioteca possam utilizá-los em suas aplicações.\n */\n\n// Componentes\nexport * from \"./lib/components/accordion/accordion.component\"\nexport * from \"./lib/components/alert/alert.component\"\nexport * from \"./lib/components/app-background/app-background.component\"\nexport * from \"./lib/components/badge/badge.component\"\nexport * from \"./lib/components/basic-registration/basic-registration.component\"\nexport * from \"./lib/components/button/button.component\"\nexport * from \"./lib/components/calendar-argenta/calendar-argenta.component\"\nexport * from \"./lib/components/card-info/card-info.component\"\nexport * from \"./lib/components/card/card.component\"\nexport * from \"./lib/components/checkbox/checkbox.component\"\nexport * from \"./lib/components/code-highlight/code-highlight.component\"\nexport * from \"./lib/components/confirmation/confirmation.component\"\nexport * from \"./lib/components/csv-importer/csv-importer.component\"\nexport * from \"./lib/components/custom-pagination/custom-pagination.component\"\nexport * from \"./lib/components/custom-switch/custom-switch.component\"\nexport * from \"./lib/components/data-excel-exporter/data-excel-exporter.component\"\nexport * from \"./lib/components/data-excel-import/data-excel-importer.component\"\nexport * from \"./lib/components/drag-drop-list/drag-drop-list.component\"\nexport * from \"./lib/components/dynamic-modal/dynamic-modal.component\"\nexport * from \"./lib/components/dynamic-table/dynamic-table.component\"\nexport * from \"./lib/components/file-upload/file-upload.component\"\nexport * from \"./lib/components/image-upload/image-upload.component\"\nexport * from \"./lib/components/imput/input.component\"\nexport * from \"./lib/components/json-editor/json-editor.component\"\nexport * from \"./lib/components/json-viewer/json-viewer.component\"\nexport * from \"./lib/components/modal/modal.component\"\nexport * from \"./lib/components/multi-select-category/multi-select-category.component\"\nexport * from \"./lib/components/multi-select/multi-select.component\"\nexport * from \"./lib/components/pdf-data-handler/argenta-pdf-data-handler.component\"\nexport * from \"./lib/components/pdf-download/argenta-pdf-download.component\"\nexport * from \"./lib/components/radio/radio.component\"\nexport * from \"./lib/components/search-customer/search-customer.component\"\nexport * from \"./lib/components/search-input/search-input.component\"\nexport * from \"./lib/components/select/select.component\"\nexport * from \"./lib/components/tab/tab.component\"\nexport * from \"./lib/components/tables/data-table.component\"\nexport * from \"./lib/components/textarea/textarea.component\"\nexport * from \"./lib/components/tree-node/tree-node.component\"\n\n// Interface\nexport * from \"./lib/components/data-excel-exporter/IExcelExportConfig\"\nexport * from \"./lib/components/dynamic-table/dynamic-table-config\"\nexport * from \"./lib/components/pdf-data-handler/interface/PdfExportConfig\"\nexport * from \"./lib/components/pdf-data-handler/interface/PdfTableStyles\"\n\n// Diretivas\nexport * from \"./lib/directive/autofocus-directive/autofocus.directive\"\nexport * from \"./lib/directive/cep-mask.directive\"\nexport * from \"./lib/directive/cnpj-mask.directive\"\nexport * from \"./lib/directive/cpf-mask.directive\"\n\n// Enums\nexport * from \"./lib/enum/ButtonClassesEnum\"\nexport * from \"./lib/enum/CardInfoClassesEnum\"\n\n// Módulos\nexport * from \"./lib/components/components.module\"\nexport * from \"./lib/icons/lucide-icons.module\"\nexport * from \"./lib/lib-portal-angular.module\"\n\n// Service\nexport * from \"./lib/components/alert/notification.service\"\nexport * from \"./lib/components/confirmation/confirmation.service\"\nexport * from \"./lib/components/tables/data-paginate.service\"\nexport * from \"./lib/service/excel-service.service\"\nexport * from \"./lib/service/refresh-service.service\"\nexport * from \"./lib/service/route-parameter.service\"\n\n// function\nexport * from \"./lib/function/ConvertToSnakeCase\"\nexport * from \"./lib/function/SetThemeColors\"\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthService","i2","i3.ButtonComponent","i1","i2.AutofocusDirective","i2.ButtonComponent","i2.CustomPaginationComponent","i3","i4.CepMaskDirective","i5.CnpjMaskDirective","i6.CpfMaskDirective","i4","i1.MultiSelectComponent","i2.RefreshService","i3.ConfirmationService","i5","i6","i7.CustomPaginationComponent","i8.SearchInputComponent"],"mappings":"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"}