@rubeusteam/rb-angular-components 0.0.2-dev.2 → 0.0.2-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/rubeusteam-rb-angular-components.mjs +143 -9
- package/fesm2022/rubeusteam-rb-angular-components.mjs.map +1 -1
- package/lib/components/rb-help-panel/rb-help-panel.component.d.ts +44 -2
- package/lib/interfaces/rb-help-panel.interface.d.ts +19 -0
- package/lib/services/rb-zendesk-help/rb-zendesk-help.service.d.ts +27 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rubeusteam-rb-angular-components.mjs","sources":["../../../projects/rb-angular-components/src/lib/pipes/rb-custom/rb-custom.pipe.ts","../../../projects/rb-angular-components/src/lib/pipes/rb-conditional-class/rb-conditional-class.pipe.ts","../../../projects/rb-angular-components/src/lib/i18n/paginator-ptbr-intl/paginator-ptbr-intl.service.ts","../../../projects/rb-angular-components/src/lib/services/filter/client-filter.service.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/helpers/resolve-actions.helper.ts","../../../projects/rb-angular-components/src/lib/services/rb-show-index-crud-service/rb-show-index-crud.service.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/rb-crud.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/rb-crud.component.html","../../../projects/rb-angular-components/src/lib/directives/rb-dynamic-button/rb-dynamic-button.directive.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component.html","../../../projects/rb-angular-components/src/lib/components/rb-content-box/rb-content-box.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-content-box/rb-content-box.component.html","../../../projects/rb-angular-components/src/lib/components/rb-dialog/rb-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-dialog/rb-dialog.component.html","../../../projects/rb-angular-components/src/lib/components/rb-filter-dropdown/rb-filter-dropdown.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-filter-dropdown/rb-filter-dropdown.component.html","../../../projects/rb-angular-components/src/lib/components/rb-filter-panel/rb-filter-panel.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-filter-panel/rb-filter-panel.component.html","../../../projects/rb-angular-components/src/lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component.html","../../../projects/rb-angular-components/src/lib/components/rb-change-log-dialog/rb-change-log-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-change-log-dialog/rb-change-log-dialog.component.html","../../../projects/rb-angular-components/src/lib/components/rb-columns-sort-setting/rb-columns-sort-setting.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-columns-sort-setting/rb-columns-sort-setting.component.html","../../../projects/rb-angular-components/src/lib/directives/rb-overflow-tooltip/rb-overflow-tooltip.directive.ts","../../../projects/rb-angular-components/src/lib/components/rb-sidebar-navigation/rb-sidebar-navigation.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-sidebar-navigation/rb-sidebar-navigation.component.html","../../../projects/rb-angular-components/src/lib/components/rb-header/rb-header.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-header/rb-header.component.html","../../../projects/rb-angular-components/src/lib/pipes/is-array.pipe.ts","../../../projects/rb-angular-components/src/lib/interfaces/rb-crud.interface.ts","../../../projects/rb-angular-components/src/lib/components/rb-help-panel/rb-help-panel.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-help-panel/rb-help-panel.component.html","../../../projects/rb-angular-components/src/public-api.ts","../../../projects/rb-angular-components/src/rubeusteam-rb-angular-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'rbCustomPipe',\n standalone: true\n})\nexport class RbCustomPipe implements PipeTransform {\n\n transform(value: any, type: string): any {\n switch (type) {\n case 'date':\n return this.dateTransform(value);\n case 'datetime':\n return this.dateTimeTransform(value);\n case 'currency':\n return this.currencyTransform(value);\n case 'cpf':\n return this.cpfTransform(value);\n case 'cnpj':\n return this.cnpjTransform(value);\n case 'phone':\n return this.phoneTransform(value);\n case 'cep':\n return this.cepTransform(value);\n case 'mask':\n return this.maskTransform(value);\n case 'relativeTime':\n return this.relativeTimeTransform(value);\n case 'lastModifiedBy':\n return this.lastModifiedTransform(value);\n default:\n return value;\n }\n }\n\n dateTransform(value: any, format?: string): any {\n if (!value || typeof value !== 'string') return '';\n const isoString = value.includes(' ')\n ? value.replace(' ', 'T')\n : `${value}T00:00:00`;\n const date = new Date(isoString);\n if (isNaN(date.getTime())) return '';\n return date.toLocaleDateString('pt-BR', {\n timeZone: 'America/Sao_Paulo'\n });\n }\n\n private dateTimeTransform(value: any): string {\n if (!value || typeof value !== 'string') return '';\n\n const isoString = value.includes(' ')\n ? value.replace(' ', 'T')\n : `${value}T00:00:00`;\n const date = new Date(isoString);\n \n if (isNaN(date.getTime())) return '';\n\n const datePart = new Intl.DateTimeFormat('pt-BR', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: 'America/Sao_Paulo'\n }).format(date);\n\n const timePart = new Intl.DateTimeFormat('pt-BR', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n timeZone: 'America/Sao_Paulo'\n }).format(date);\n\n return `${datePart} às ${timePart}`;\n }\n\n\n currencyTransform(value: any): any {\n if (!value) return '';\n return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value);\n }\n\n cpfTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{3})(\\d{3})(\\d{3})(\\d{2})/, \"$1.$2.$3-$4\");\n }\n\n cnpjTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})/, \"$1.$2.$3/$4-$5\");\n }\n\n phoneTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{2})(\\d{5})(\\d{4})/, \"($1) $2-$3\");\n }\n\n cepTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{5})(\\d{3})/, \"$1-$2\");\n }\n\n maskTransform(value: any): any {\n if (!value) return '';\n return '*'.repeat(value.toString().length);\n }\n\n relativeTimeTransform(value: any): any {\n if (!value) return '';\n const date = new Date(value);\n const now = new Date();\n const diff = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n switch (true) {\n case diff < 60:\n return `${diff} segundos atrás`;\n case diff < 3600:\n return `${Math.floor(diff / 60)} minutos atrás`;\n case diff < 86400:\n return `${Math.floor(diff / 3600)} horas atrás`;\n case diff < 2592000:\n return `${Math.floor(diff / 86400)} dias atrás`;\n case diff < 31536000:\n return `${Math.floor(diff / 2592000)} meses atrás`;\n default:\n return `${Math.floor(diff / 31536000)} anos atrás`;\n }\n }\n\n lastModifiedTransform(value: { date: string; author: string }): string {\n if (!value || !value.date) return '';\n const formattedDate = new Intl.DateTimeFormat('pt-BR', {\n dateStyle: 'short',\n // timeStyle: 'short',\n timeZone: 'America/Sao_Paulo'\n }).format(new Date(value.date));\n if(!value.author) {\n return `${formattedDate}`;\n }\n return `${formattedDate} por ${value.author}`;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ConditionalClasses, ConditionalClassesObj } from '../../interfaces/rb-conditional-class.interface';\n\n@Pipe({\n name: 'rbConditionalClass',\n standalone: true,\n pure: true\n})\nexport class RbConditionalClassPipe implements PipeTransform {\n\n transform(cellValue: any, columnKey: string, rules: ConditionalClasses[]): string {\n const config = rules.find(r => r.key === columnKey);\n if (!config || !Array.isArray(config.conditions)) return '';\n\n return config.conditions\n .filter(condition => this.evaluateCondition(cellValue, condition))\n .map(condition => condition.class)\n .join(' ');\n }\n\n private evaluateCondition(value: any, condition: ConditionalClassesObj): boolean {\n const { operator, value: expected } = condition;\n\n switch (operator) {\n case '==': return value == expected;\n case '===': return value === expected;\n case '!=': return value != expected;\n case '!==': return value !== expected;\n case '<': return value < expected;\n case '>': return value > expected;\n case '<=': return value <= expected;\n case '>=': return value >= expected;\n default:\n console.warn(`Operador '${operator}' não suportado.`);\n return false;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginatorPtbrIntlService extends MatPaginatorIntl{\n override itemsPerPageLabel = 'Itens por página:';\n override nextPageLabel = 'Próxima';\n override previousPageLabel = 'Anterior';\n override firstPageLabel = 'Primeira página';\n override lastPageLabel = 'Última página';\n\n override getRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length === 0 || pageSize === 0) {\n return `Página 0 de 0`;\n }\n\n const totalPages = Math.ceil(length / pageSize);\n const currentPage = page + 1;\n\n return `Página ${currentPage} de ${totalPages}`;\n };\n\n // override getRangeLabel = (page: number, pageSize: number, length: number) => {\n // if (length === 0 || pageSize === 0) {\n // return `Página 0 de 0`;\n // }\n\n // const totalPages = Math.ceil(length / pageSize);\n // const currentPage = page + 1;\n\n // const startIndex = page * pageSize + 1;\n // const endIndex = Math.min((page + 1) * pageSize, length);\n\n // return `Página ${currentPage} de ${totalPages} (${startIndex} a ${endIndex} de ${length})`;\n // };\n\n}\n","import { Injectable, signal, Signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClientFilterService {\n\n private searchText = signal<string>('');\n\n setSearchText(text: string): void {\n this.searchText.set(this.normalizeText(text));\n }\n\n public normalizeText(text: string): string {\n return text\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .trim();\n }\n\n getSearchText(): Signal<string> {\n return this.searchText;\n }\n}\n\n","import { ButtonSettings } from '../../../interfaces/button.interface';\n\nexport type RowWithResolvedActions<T> = T & {\n resolvedActions: ButtonSettings[];\n};\n\nexport function resolveActionsForRow<T extends Record<string, any>>(\n row: T,\n actionsMenu: ButtonSettings[]\n): RowWithResolvedActions<T> {\n const resolvedActions = actionsMenu.map(action => {\n const match = action.conditionalSettings?.find(\n s => row[s.key] === s.expectedValue\n );\n\n return {\n ...action,\n label: match?.label ?? action.label,\n icon: match?.icon ?? action.icon,\n disabled: match?.disabled ?? action.disabled,\n visible: match?.visible ?? action.visible\n };\n });\n\n return {\n ...row,\n resolvedActions\n };\n}\n\nexport function resolveActionsForData<T extends Record<string, any>>(\n data: T[],\n actionsMenu: ButtonSettings[]\n): RowWithResolvedActions<T>[] {\n return data.map(row => resolveActionsForRow(row, actionsMenu));\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RbShowIndexCrudService {\n\n showIndex = signal(false);\n\n setShowIndex(value: boolean) {\n this.showIndex.set(value);\n }\n\n toggle() {\n this.showIndex.update(value => !value);\n }\n}\n","import { Component, Input, Output, EventEmitter, AfterViewInit, OnChanges, ViewChild, effect, Signal, ElementRef, Renderer2, inject } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatPaginatorModule, MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule, MatSort } from '@angular/material/sort';\nimport { CommonModule } from '@angular/common';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RbCustomPipe } from '../../pipes/rb-custom/rb-custom.pipe';\nimport { RbConditionalClassPipe } from '../../pipes/rb-conditional-class/rb-conditional-class.pipe';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { PaginatorPtbrIntlService } from '../../i18n/paginator-ptbr-intl/paginator-ptbr-intl.service';\nimport { ClientFilterService } from '../../services/filter/client-filter.service';\nimport { CrudColumn, CrudActionEvent } from '../../interfaces/rb-crud.interface';\nimport { ConditionalClasses } from '../../interfaces/rb-conditional-class.interface';\nimport { ButtonSettings, RbEncapsulatedButton } from '../../interfaces/button.interface';\nimport { RowWithResolvedActions, resolveActionsForRow } from './helpers/resolve-actions.helper';\nimport { RbShowIndexCrudService } from '../../services/rb-show-index-crud-service/rb-show-index-crud.service';\n\n@Component({\n selector: 'rb-crud',\n templateUrl: './rb-crud.component.html',\n styleUrl: './rb-crud.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n MatTableModule,\n MatMenuModule,\n MatInputModule,\n MatPaginatorModule,\n MatSortModule,\n MatIconModule,\n MatButtonModule,\n RbCustomPipe,\n RbConditionalClassPipe,\n ],\n providers: [\n { provide: MatPaginatorIntl, useClass: PaginatorPtbrIntlService },\n ClientFilterService\n ]\n})\nexport class RbCrudComponent implements AfterViewInit, OnChanges {\n @Input() columns: CrudColumn[] = [];\n @Input() data: any[] = [];\n @Input() actionsMenu: RbEncapsulatedButton[] = [];\n @Input() conditionalClasses: ConditionalClasses[] = [];\n @Input() pagination: boolean = true;\n @Input() pageSize: number = 10;\n @Input() infiniteScroll: boolean = false;\n @Input() textLineBreakable: boolean = false;\n @Input() emptyMessageTherm: string = '';\n @Input() emptyMessageSentence: string = 'um novo cadastro';\n @Input() emptyLinkAction: string = '';\n\n private showIndexService = inject(RbShowIndexCrudService);\n showIndex = this.showIndexService.showIndex;\n\n\n @Output() actionClick = new EventEmitter<CrudActionEvent>();\n // @Output() filterChange = new EventEmitter<any>();\n @Output() pageChange = new EventEmitter<PageEvent>();\n\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n @ViewChild('rbTableContainer', { static: true }) rbTableContainer!: ElementRef;\n\n displayedColumns: string[] = [];\n dataSource!: MatTableDataSource<RowWithResolvedActions<any>>;\n filterText: Signal<string>;\n isOverflowing = false;\n displayedActionsMenu: RbEncapsulatedButton[] = [];\n selectedRow: any = null;\n\n\n renderingProgressive = false;\n private readonly THRESHOLD = 200;\n protected searchTherm: string = '';\n\n constructor(\n private clientFilterService: ClientFilterService,\n private renderer: Renderer2\n ) {\n console.time('constructor');\n this.dataSource = new MatTableDataSource(this.data);\n this.filterText = this.clientFilterService.getSearchText();\n effect(() => {\n this.applyFilter();\n });\n }\n\n ngAfterViewInit() {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n this.defineSortRule();\n this.checkOverflow();\n window.addEventListener('resize', () => this.checkOverflow());\n\n }\n\n checkOverflow() {\n const el = this.rbTableContainer.nativeElement;\n const isOverflowing = el.scrollWidth > el.clientWidth;\n this.isOverflowing = isOverflowing;\n if (isOverflowing) {\n this.renderer.addClass(el, 'is-overflowing');\n } else {\n this.renderer.removeClass(el, 'is-overflowing');\n }\n }\n\n resolvePropertyValue(fn: Function | boolean | undefined, row: any, defaultValue: boolean = true): any {\n if (fn === undefined) {\n return defaultValue;\n }\n if (typeof fn === 'function') {\n return fn(row);\n }\n return fn;\n }\n \n\n ngOnChanges(): void {\n console.time('onchanges');\n console.timeEnd('constructor');\n this.displayedColumns = this.columns.map(col => col.key);\n if (this.actionsMenu.length) {\n this.displayedColumns.push('actions');\n }\n\n // this.dataSource = new MatTableDataSource(this.data);\n\n this.dataSource.data = this.data;\n\n if (this.paginator) {\n this.dataSource.paginator = this.paginator;\n }\n if (this.sort) {\n this.dataSource.sort = this.sort;\n }\n }\n\n\n renderFirstPage(processedData: RowWithResolvedActions<any>[]): void {\n const firstPage = processedData.slice(0, this.pageSize);\n this.dataSource.data = firstPage;\n }\n\n loadFullData(processedData: RowWithResolvedActions<any>[]): void {\n this.dataSource.data = processedData;\n this.renderingProgressive = false;\n }\n\n defineSortRule() {\n this.dataSource.sortingDataAccessor = (item, property) => {\n if (item[property]?.date) {\n return new Date(item[property]?.date || 0).getTime();\n }\n return item[property];\n };\n }\n\n onActionClick(action: ButtonSettings, row: any): void {\n this.actionClick.emit({ action: action.action, row });\n }\n\n onClickCell(action: string, row: any): void {\n this.actionClick.emit({ action: action, row });\n }\n\n onClickLink() {\n this.actionClick.emit({ action: this.emptyLinkAction });\n }\n\n\n applyFilter() {\n this.dataSource.filterPredicate = (data: any, filter: string): boolean => {\n const accumulator = (currentTerm: string, key: string): string => {\n const value = data[key];\n return currentTerm + ' ' + (typeof value === 'string' ? this.clientFilterService.normalizeText(value) : '');\n };\n\n const dataStr = Object.keys(data).reduce(accumulator, '').trim();\n this.searchTherm = filter;\n return dataStr.includes(this.clientFilterService.normalizeText(filter));\n };\n\n this.dataSource.filter = this.filterText();\n }\n\n openMenu(row: any): void {\n this.selectedRow = row;\n this.displayedActionsMenu = resolveActionsForRow(row, this.actionsMenu).resolvedActions;\n }\n\n setSearchText(text: string): void {\n this.clientFilterService.setSearchText(text);\n }\n\n}\n","<div class=\"rb-crud-container\">\n <!-- @if (dataSource?.filteredData?.length) { -->\n <div #rbTableContainer class=\"rb-table-container\"\n [style.display]=\"dataSource?.filteredData?.length ? 'block' : 'none'\">\n <table mat-table [dataSource]=\"dataSource\" matSort class=\"rb-table\">\n <!-- Colunas Dinâmicas -->\n @for (column of columns; track column.key; let i = $index) {\n <ng-container [matColumnDef]=\"column.key\">\n @if(column.sortable === false) {\n <th mat-header-cell *matHeaderCellDef>\n {{ column.label }}\n </th>\n } @else {\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.label }}\n </th>\n }\n <td mat-cell *matCellDef=\"let row; let il = index\"\n [class.rb-clickable-cell]=\"column.action\"\n [class.rb-break-line-cell]=\"textLineBreakable\"\n (click)=\"column.action ? onClickCell(column.action, row) : null\"\n title=\"{{ column.pipe ? (row[column.key] | rbCustomPipe:column.pipe) : row[column.key] }}\"\n [class]=\"row[column.conditionalClassKey || column.key] | rbConditionalClass:(column.conditionalClassKey || column.key):conditionalClasses\"\n >\n <!-- Terminar de implementar quando for decidido como ficará quando a informação for em array de objetos.\n Não deixar como primeira condição, para evitar processamento desnecessário no pipe isArray\n @if (column.objCol?.label && (row[column.key] | isArray) && row[column.key].length){\n @for (item of row[column.key]; track $index) {\n <span>{{ item[column.objCol?.label || 'label'] }}</span>\n }\n } @else if -->\n @if(i===0 && showIndex()) {\n <span class=\"rb-crud-float-index\">{{il+1}}</span>\n }\n @if (column.pipe) {\n {{ row[column.key] | rbCustomPipe:column.pipe }}\n } @else {\n {{ row[column.key] }}\n }\n </td>\n </ng-container>\n }\n\n <!-- Coluna de Ações -->\n @if (actionsMenu.length) {\n <ng-container matColumnDef=\"actions\" stickyEnd class=\"sticky-column\">\n <th mat-header-cell *matHeaderCellDef> Ações </th>\n <td mat-cell *matCellDef=\"let row; let il = index\" class=\"rb-crud-actions-col\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"actionsMenuRef\"\n (menuOpened)=\"openMenu(row)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </td>\n </ng-container>\n }\n\n\n <!-- Cabeçalho e Corpo da Tabela -->\n <thead>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n </thead>\n <tbody>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </tbody>\n </table>\n\n <!-- Menu de Ações -->\n <mat-menu #actionsMenuRef=\"matMenu\" class=\"rb-menu-crud\">\n @for (action of displayedActionsMenu; track action.label) {\n @if (resolvePropertyValue(action.visible, selectedRow)) {\n @if (action.hasDivider) {\n <hr>\n }\n\n <button\n mat-menu-item\n (click)=\"onActionClick(action, selectedRow)\"\n [title]=\"action.label\"\n [attr.aria-label]=\"action.label\"\n [attr.color]=\"action.color\"\n [disabled]=\"resolvePropertyValue(action.disabled, selectedRow, false)\"\n [ngClass]=\"action.class\">\n\n @if (action.icon) {\n <mat-icon>{{ action.icon }}</mat-icon>\n }\n\n {{ action.label }}\n\n </button>\n }\n }\n </mat-menu>\n\n </div>\n <!-- } -->\n\n <!-- @if (!dataSource?.filteredData?.length) { -->\n <div class=\"empty-message\" [style.display]=\"dataSource?.filteredData?.length ? 'none' : 'block'\">\n <h2>Nenhum registro {{emptyMessageTherm ? 'de ' + emptyMessageTherm : ''}} encontrado\n @if(searchTherm.length) {\n para o termo \"{{searchTherm}}\"\n }\n </h2>\n <p>Experimente <span (click)=\"onClickLink()\">adicionar {{emptyMessageSentence}}</span>.</p>\n </div>\n <!-- } -->\n</div>\n\n<!-- Paginação -->\n<!-- @if (pagination && dataSource?.filteredData?.length) { -->\n <mat-paginator #paginator\n [style.display]=\"dataSource?.filteredData?.length ? 'block' : 'none'\"\n class=\"rb-paginator\"\n [pageSize]=\"pageSize\"\n (page)=\"pageChange.emit($event)\"\n [showFirstLastButtons]=\"true\"\n [pageSizeOptions]=\"[10,25,50,100]\"\n aria-label=\"Selecione a página\">\n </mat-paginator>\n<!-- } -->\n","import { Directive, Input, ElementRef, Renderer2, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[rbDynamicButton]'\n})\nexport class RbDynamicButtonDirective implements OnChanges {\n @Input('rbDynamicButton') set buttonType(value: string | null) {\n const validTypes = ['float', 'confirm', 'cancel', 'menuTrigger'] as const;\n this._buttonType = validTypes.includes(value as any) ? (value as any) : null;\n }\n private _buttonType: 'float' | 'confirm' | 'cancel' | 'menuTrigger' | null = null;\n\n buttonTypes: Record<string, { directive: string; classes: string[] }> = {\n float: {\n directive: 'mat-raised-button',\n classes: ['mdc-button--raised', 'mat-mdc-raised-button']\n },\n confirm: {\n directive: 'mat-flat-button',\n classes: ['mdc-button--unelevated', 'mat-mdc-unelevated-button']\n },\n cancel: {\n directive: 'mat-stroked-button',\n classes: ['mdc-button--outlined', 'mat-mdc-outlined-button']\n },\n menuTrigger: {\n directive: 'mat-icon-button',\n classes: ['mdc-icon-button', 'mat-mdc-icon-button']\n }\n };\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['buttonType']?.currentValue) {\n this.renderButtons(this._buttonType || '');\n }\n }\n\n private renderButtons(key: string) {\n if (key?.trim() && typeof this.buttonTypes[key] === 'object') {\n this.renderer.setAttribute(this.el.nativeElement, this.buttonTypes[key].directive, '');\n this.buttonTypes[key].classes.forEach(cls => this.renderer.addClass(this.el.nativeElement, cls));\n }\n }\n\n}\n\n","import { Component, Input, Output, signal, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { ButtonSettings, ButtonActionEvent, RbEncapsulatedButton } from '../../interfaces/button.interface';\nimport { RbCrudComponent } from '../rb-crud/rb-crud.component';\n\n@Component({\n selector: 'rb-crud-tool-bar',\n standalone: true,\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n RbDynamicButtonDirective,\n ],\n templateUrl: './rb-crud-tool-bar.component.html',\n styleUrl: './rb-crud-tool-bar.component.scss',\n})\nexport class RbCrudToolBarComponent {\n @Input() targetCrud?: RbCrudComponent;\n @Input() searchPlaceholder: string = 'Digite para pesquisar...';\n @Input() buttonSettings: RbEncapsulatedButton[] = [];\n @Input() iconButton: string = 'add';\n @Input() titleButton: string = 'Adicionar';\n @Input() leftButtonSettings: RbEncapsulatedButton[] = [];\n @Output() buttonClick = new EventEmitter<ButtonActionEvent>();\n\n searchText = signal<string>('');\n\n constructor() {}\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText.set(value);\n if (this.targetCrud) {\n this.targetCrud.setSearchText(value);\n }\n }\n\n onClickButton(action: ButtonSettings) {\n this.buttonClick.emit(action);\n }\n\n}\n","<div class=\"rb-crud-tool-bar-container\">\n <div class=\"rb-flex-line-space-between\">\n <div class=\"rb-flex-align-items-center\">\n @for (btn of buttonSettings; track btn.label) {\n <button mat-button\n title=\"{{btn.label}}\"\n class=\"{{btn.color}}\"\n color=\"{{btn.color}}\"\n [attr.aria-label]=\"btn.label\"\n [rbDynamicButton]=\"btn.directive || null\"\n (click)=\"onClickButton(btn)\">\n @if (btn.icon) {\n <mat-icon>{{ btn.icon }}</mat-icon>\n }\n {{ btn.label }}\n </button>\n }\n </div>\n\n <div class=\"rb-search-box rb-flex-align-items-center\">\n <mat-form-field class=\"rb-search-field\">\n <mat-label>Pesquisar</mat-label>\n <input\n matInput\n [value]=\"searchText()\"\n (input)=\"onSearchChange($event)\"\n placeholder={{searchPlaceholder}}\n />\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n @for (btn of leftButtonSettings; track btn.label) {\n <button mat-button\n title=\"{{btn.label}}\"\n class=\"{{btn.color}}\"\n color=\"{{btn.color}}\"\n [attr.aria-label]=\"btn.label\"\n [attr.id]=\"btn.selector\"\n [rbDynamicButton]=\"btn.directive || null\"\n (click)=\"onClickButton(btn)\">\n @if (btn.icon) {\n <mat-icon>{{ btn.icon }}</mat-icon>\n }\n {{ btn.label }}\n </button>\n }\n </div>\n </div>\n</div>\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rb-content-box',\n imports: [],\n templateUrl: './rb-content-box.component.html',\n styleUrl: './rb-content-box.component.scss'\n})\nexport class RbContentBoxComponent {\n\n}\n","<div class=\"rb-content-box\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbDialog } from '../../interfaces/rb-dialog.interface';\n\n@Component({\n selector: 'rb-dialog',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-dialog.component.html',\n styleUrl: './rb-dialog.component.scss'\n})\nexport class RbDialogComponent {\n readonly data = inject<RbDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbDialogComponent>);\n\n onClickButton(action: string) {\n console.log('action', action);\n this.dialogRef.close(action);\n }\n\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>{{data.title}}</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\" >\n @if (data.isMultipleContent) {\n @for (item of data.multipleContent; track $index) {\n @if (item.subtitle) {\n <h3 class=\"rb-font-heading rb-h5\">{{item.subtitle}}</h3>\n }\n @if (item.paragraph) {\n <p class=\"rb-font-body rb-large\">{{item.paragraph}}</p>\n }\n }\n } @else {\n <h3 class=\"rb-font-heading rb-h5\">{{data.subtitle}}</h3>\n <p class=\"rb-font-body rb-large\">{{data.content}}</p>\n }\n </mat-dialog-content>\n\n <!-- Ações -->\n @if (data.buttons?.length) {\n <mat-dialog-actions class=\"rb-dialog-actions\" [align]=\"data.actionsAlign || 'end'\">\n @for (button of data.buttons; track $index) {\n <button mat-button\n title=\"{{button.label}}\"\n class=\"{{button.color}}\"\n [color]=\"button.color\"\n [attr.aria-label]=\"button.label\"\n [rbDynamicButton]=\"button.directive || null\"\n (click)=\"onClickButton(button.action)\">\n @if (button.icon && button.iconPosition === 'start') {\n <mat-icon>{{button.icon}}</mat-icon>\n }\n {{button.label}}\n @if (button.icon && button.iconPosition === 'end') {\n <mat-icon>{{button.icon}}</mat-icon>\n }\n </button>\n }\n </mat-dialog-actions>\n }\n</div>\n","import { Component, TemplateRef, ViewChild, ViewContainerRef, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule, OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { ClientFilterService } from '../../services/filter/client-filter.service';\nimport { FilterOption } from '../../interfaces/rb-filter.interface';\n\n\n@Component({\n selector: 'rb-filter-dropdown',\n imports: [CommonModule, OverlayModule, PortalModule, MatIconModule, MatInputModule],\n templateUrl: './rb-filter-dropdown.component.html',\n styleUrl: './rb-filter-dropdown.component.scss',\n standalone: true,\n})\nexport class RbFilterDropdownComponent {\n @Input() parentSelectorId: string = '#parentDropdownSelector';\n @Input() options: FilterOption[] = [];\n\n @ViewChild('filterMenu') filterMenu!: TemplateRef<any>;\n private overlayRef: OverlayRef | null = null;\n trackByFn = (index: number, item: string) => index;\n\n searchText = signal<string>('');\n\n constructor(\n private overlay: Overlay,\n private clientFilterService: ClientFilterService,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText.set(value);\n this.clientFilterService.setSearchText(value);\n }\n\n public openMenu() {\n if (this.overlayRef) {\n this.closeMenu();\n return;\n }\n\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(\n document.querySelector(this.parentSelectorId || 'button')!\n )\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const portal = new TemplatePortal(this.filterMenu, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.overlayRef.backdropClick().subscribe(() => this.closeMenu());\n }\n\n closeMenu() {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n onSelectItem(item: FilterOption) {\n console.log('Selected item:', item);\n // this.filterItems = this.options.filter((item) => item.includes(this.searchText()));\n // this.clientFilterService.setFilterItems(this.filterItems);\n }\n\n}\n","<ng-template #filterMenu>\n <div class=\"rb-filter-dropdown\">\n <div class=\"rb-filter-dropdown-header\">\n <h5>Adicionar Filtro</h5>\n <button mat-icon-button aria-label=\"Fechar diálogo\" (click)=\"closeMenu()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"rb-filter-dropdown-body\">\n <div class=\"rb-filter-seach-bar\">\n <mat-form-field class=\"rb-search-field\">\n <mat-label>Pesquisar</mat-label>\n <input\n matInput\n [value]=\"searchText()\"\n (input)=\"onSearchChange($event)\"\n placeholder=\"Pesquisar\"\n />\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n </div>\n <div class=\"rb-filter-dropdown-body-items\">\n <pre>{{options | json}}</pre>\n @if (options && options.length) {\n @for (item of options; track trackByFn) {\n <div\n class=\"rb-filter-dropdown-item\"\n (click)=\"onSelectItem(item)\"\n >\n <!-- <mat-checkbox\n [checked]=\"isSelected(item)\"\n (change)=\"onSelectItem(item, $event)\"\n >\n {{ item.label }}\n </mat-checkbox> -->\n </div>\n }\n } @else {\n <div class=\"rb-filter-dropdown-item\">\n Nenhum item encontrado\n <!-- <mat-checkbox disabled>\n <span class=\"rb-filter-dropdown-item-disabled\">\n Nenhum item encontrado\n </span>\n </mat-checkbox> -->\n </div>\n }\n </div>\n\n <!-- <div class=\"rb-filter-dropdown-body-items\">\n <div\n *ngFor=\"let item of filterItems; trackBy: trackByFn\"\n class=\"rb-filter-dropdown-item\"\n (click)=\"onSelectItem(item)\"\n >\n <mat-checkbox\n [checked]=\"isSelected(item)\"\n (change)=\"onSelectItem(item, $event)\"\n >\n {{ item.label }}\n </mat-checkbox>\n </div>\n <div\n *ngIf=\"!filterItems?.length\"\n class=\"rb-filter-dropdown-item\">\n <mat-checkbox disabled>\n <span class=\"rb-filter-dropdown-item-disabled\">\n Nenhum item encontrado\n </span>\n </mat-checkbox>\n </div>\n </div> -->\n </div>\n </div>\n</ng-template>\n","import { Component, ViewChild, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbFilterDropdownComponent } from '../rb-filter-dropdown/rb-filter-dropdown.component';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { FilterPannelData } from '../../interfaces/rb-filter.interface';\n\n@Component({\n selector: 'rb-filter-panel',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbFilterDropdownComponent, RbDynamicButtonDirective],\n templateUrl: './rb-filter-panel.component.html',\n styleUrl: './rb-filter-panel.component.scss'\n})\nexport class RbFilterPanelComponent {\n @ViewChild(RbFilterDropdownComponent) dropdown!: RbFilterDropdownComponent;\n data = inject<FilterPannelData>(MAT_DIALOG_DATA);\n\n constructor() {}\n\n applyFilter() {\n console.log('applyFilter');\n }\n\n openMenu(): void {\n this.dropdown.openMenu();\n }\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>Filtro</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\" >\n <div class=\"rb-row rb-row rb-flex-row rb-align-items-start rb-justify-content-start\">\n <button mat-button id=\"parentDropdownSelector\"\n title=\"Filtrar\"\n class=\"primary\"\n aria-label=\"Filtrar\"\n [rbDynamicButton]=\"null\"\n (click)=\"openMenu()\">\n <mat-icon>add</mat-icon>\n Adicionar nova condição\n </button>\n <rb-filter-dropdown\n [parentSelectorId]=\"'#parentDropdownSelector'\"\n [options]=\"data.filterOptions\"></rb-filter-dropdown>\n\n </div>\n </mat-dialog-content>\n\n <!-- Ações -->\n <mat-dialog-actions class=\"rb-dialog-actions\" align=\"end\">\n <button mat-button\n title=\"Filtrar\"\n class=\"primary\"\n aria-label=\"Filtrar\"\n [rbDynamicButton]=\"'confirm'\"\n (click)=\"applyFilter()\">\n Filtrar\n </button>\n </mat-dialog-actions>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbDialog } from '../../interfaces/rb-dialog.interface';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\n\n@Component({\n selector: 'lib-rb-copy-confirm-dialog',\n imports: [MatDialogModule, MatButtonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-copy-confirm-dialog.component.html',\n styleUrl: './rb-copy-confirm-dialog.component.scss'\n})\nexport class RbCopyConfirmDialogComponent {\n\n readonly data = inject<RbDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbCopyConfirmDialogComponent>);\n formGroup: FormGroup;\n\n constructor(private fb: FormBuilder) {\n this.formGroup = this.fb.group({\n fieldValue: [this.data?.fieldValueDafault, Validators.required]\n });\n }\n\n confirm() {\n this.dialogRef.close(this.formGroup.value);\n }\n\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>{{data.title}}</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <form (submit)=\"confirm()\" [formGroup]=\"formGroup\">\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\">\n <mat-form-field appearance=\"fill\" class=\"rb-form-field width-100\">\n <mat-label>{{data.labelField}}</mat-label>\n <input matInput autofocus\n type=\"text\"\n [attr.aria-label]=\"data.labelField\"\n formControlName=\"fieldValue\"\n required>\n @if (formGroup.controls['fieldValue'].hasError('required')) {\n <mat-error >\n Campo obrigatório\n </mat-error>\n }\n </mat-form-field>\n\n </mat-dialog-content>\n\n <!-- Ações -->\n <mat-dialog-actions class=\"rb-dialog-actions\" [align]=\"data.actionsAlign || 'end'\">\n <button mat-button mat-dialog-close\n title=\"Cancelar\"\n aria-label=\"Cancelar\"\n class=\"secondary\"\n color=\"accent\"\n [attr.aria-label]=\"'Cancelar ação' + (data.labelConfirmButton || 'duplicar' ).toLowerCase()\"\n type=\"button\"\n [rbDynamicButton]=\"'cancel'\">\n Cancelar\n </button>\n <button mat-button\n title=\"{{data.labelConfirmButton || 'Duplicar'}}\"\n [attr.aria-label]=\"data.labelConfirmButton || 'Duplicar'\"\n class=\"primary\"\n [color]=\"'primary'\"\n [attr.aria-label]=\"(data.labelConfirmButton || 'Duplicar' ) + data.labelField\"\n [rbDynamicButton]=\"'confirm'\"\n type=\"submit\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"confirm()\">\n {{ data.labelConfirmButton || 'Duplicar' }}\n </button>\n </mat-dialog-actions>\n </form>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbChangeLogDialog } from '../../interfaces/rb-change-log-dialog.interface';\nimport { RbCrudComponent } from '../rb-crud/rb-crud.component';\n\n@Component({\n selector: 'rb-rb-change-log-dialog',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbCrudComponent],\n templateUrl: './rb-change-log-dialog.component.html',\n styleUrl: './rb-change-log-dialog.component.scss',\n})\nexport class RbChangeLogDialogComponent {\n readonly data = inject<RbChangeLogDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbChangeLogDialogComponent>);\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>Histórico de alterações</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content bg-white has-crud\" >\n <rb-crud\n [columns]=\"data.columns\"\n [data]=\"data.dataSource\"\n [pagination]=\"false\"\n [textLineBreakable]=\"true\"\n ></rb-crud>\n </mat-dialog-content>\n</div>\n\n","import { Component, TemplateRef, ViewChild, ViewContainerRef, Input, signal, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule, OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport {CdkDragDrop, CdkDrag, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\nimport { CrudColumn } from '../../interfaces/rb-crud.interface';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbShowIndexCrudService } from '../../services/rb-show-index-crud-service/rb-show-index-crud.service';\n\n@Component({\n selector: 'rb-columns-sort-setting',\n imports: [CommonModule, OverlayModule, MatIconModule, MatButtonModule, CdkDropList, CdkDrag, RbDynamicButtonDirective],\n templateUrl: './rb-columns-sort-setting.component.html',\n styleUrl: './rb-columns-sort-setting.component.scss',\n standalone: true,\n})\nexport class RbColumnsSortSettingComponent {\n @Input() parentSelectorId: string = '#parentDropdownColumnSettingsSelector';\n @Input() columns: Array<CrudColumn> = [];\n @Input() offsetX: number = 0;\n @Input() offsetY: number = 0;\n @Input() showIndex: boolean = false;\n @ViewChild('columnsSettingContainer') columnsSettingContainer!: TemplateRef<any>;\n @Output() columnsChange = new EventEmitter<any[]>();\n private showIndexService = inject(RbShowIndexCrudService);\n\n private overlayRef: OverlayRef | null = null;\n\n protected editableColumns: Array<CrudColumn> = [];\n protected backupColumns: Array<CrudColumn> = [];\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private cdr: ChangeDetectorRef\n ) {\n }\n\n public openMenu(): void {\n if (this.overlayRef) {\n this.closeMenu();\n return;\n }\n\n this.editableColumns = structuredClone(this.columns);\n this.backupColumns = structuredClone(this.columns);\n\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(\n document.querySelector(this.parentSelectorId || 'button')!\n )\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const portal = new TemplatePortal(this.columnsSettingContainer, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.overlayRef.backdropClick().subscribe(() => this.closeMenu());\n }\n\n restore(): void {\n this.editableColumns = structuredClone(this.backupColumns);\n this.cdr.detectChanges();\n }\n\n save(): void {\n this.columnsChange.emit([...this.editableColumns]);\n this.closeMenu();\n }\n\n closeMenu(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n drop(event: CdkDragDrop<string[]>): void {\n moveItemInArray(this.editableColumns, event.previousIndex, event.currentIndex);\n }\n\n showColumn(item: CrudColumn): void {\n item.hidden = item.hidden ? false : true;\n }\n\n showIndexControl(): void {\n this.showIndex = this.showIndex ? false : true;\n this.showIndexService.setShowIndex(this.showIndex);\n }\n\n}\n","<ng-template #columnsSettingContainer>\n <div class=\"rb-pannel-dropdown\">\n <div class=\"rb-pannel-dropdown-header\">\n <h5>Colunas</h5>\n <button mat-icon-button aria-label=\"Fechar diálogo\" (click)=\"closeMenu()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"rb-pannel-dropdown-body\">\n <div cdkDropList class=\"rb-pannel-drop-list\" (cdkDropListDropped)=\"drop($event)\">\n @for (item of editableColumns; track item) {\n <div class=\"rb-pannel-drop-item\" cdkDrag [cdkDragDisabled]=\"item.hidden\">\n <div class=\"rb-pannel-drop-content\" >\n <mat-icon class=\"rb-pannel-drop-item-icon\">drag_indicator</mat-icon>\n <div class=\"rb-pannel-drop-item-label\">\n {{ item.label }}\n </div>\n <button mat-icon-button aria-label=\"Exibir coluna\" (click)=\"showColumn(item)\" [disabled]=\"item.blocked\">\n <mat-icon>{{item.hidden ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"rb-pannel-dropdown-footer\">\n <button mat-button\n title=\"Índices\"\n class=\"primary\"\n aria-label=\"Índices\"\n [rbDynamicButton]=\"null\"\n (click)=\"showIndexControl()\">\n Índices\n </button>\n <div class=\"rb-pannel-dropdown-footer-right\">\n <button mat-button\n title=\"Restaurar\"\n class=\"primary\"\n aria-label=\"Restaurar\"\n [rbDynamicButton]=\"'cancel'\"\n (click)=\"restore()\">\n Restaurar\n </button>\n <button mat-button\n title=\"Aplicar\"\n class=\"primary\"\n aria-label=\"Aplicar\"\n [rbDynamicButton]=\"'confirm'\"\n (click)=\"save()\">\n Aplicar\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n","import { AfterViewInit, Directive, ElementRef, inject, Input, OnDestroy } from '@angular/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Directive({\n selector: '[rbOverflowTooltip]',\n standalone: true,\n host: {\n '(mouseenter)': 'updateTooltip()',\n '(focusin)': 'updateTooltip()'\n }\n})\nexport class RbOverflowTooltipDirective implements AfterViewInit, OnDestroy {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tooltip = inject(MatTooltip);\n private resizeObserver?: ResizeObserver;\n private mutationObserver?: MutationObserver;\n\n @Input() rbOverflowTooltip = '';\n\n ngAfterViewInit(): void {\n this.updateTooltip();\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.updateTooltip());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutationObserver = new MutationObserver(() => this.updateTooltip());\n this.mutationObserver.observe(this.elementRef.nativeElement, {\n characterData: true,\n childList: true,\n subtree: true\n });\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n }\n\n updateTooltip(): void {\n const element = this.elementRef.nativeElement;\n this.tooltip.message = element.scrollWidth > element.clientWidth\n ? this.rbOverflowTooltip\n : '';\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation, inject, OnInit, OnDestroy, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, RouterModule } from '@angular/router';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RbSidebarNavigationItem } from '../../interfaces/rb-sidebar-navigation.interface';\nimport { RbOverflowTooltipDirective } from '../../directives/rb-overflow-tooltip/rb-overflow-tooltip.directive';\n\n@Component({\n selector: 'rb-sidebar-navigation',\n standalone: true,\n imports: [CommonModule, RouterModule, MatTooltipModule, RbOverflowTooltipDirective],\n templateUrl: './rb-sidebar-navigation.component.html',\n styleUrl: './rb-sidebar-navigation.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class RbSidebarNavigationComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private elementRef = inject(ElementRef);\n\n @Input() logoUrl: string = '';\n @Input() logoTextUrl: string = '';\n @Input() logoName: string = '';\n private _items: RbSidebarNavigationItem[] = [];\n @Input()\n set items(value: RbSidebarNavigationItem[]) {\n this._items = this.sortItems(value || []);\n }\n get items(): RbSidebarNavigationItem[] {\n return this._items;\n }\n \n @Input() initiallyFixed: boolean = false;\n\n // Secondary Menu Inputs\n private _secondaryItems: RbSidebarNavigationItem[] = [];\n private selectedSecondaryItemId: string | null = null;\n @Input() secondaryTitle: string = '';\n\n @Input()\n set secondaryItems(value: RbSidebarNavigationItem[]) {\n this._secondaryItems = this.sortItems(value || []);\n this.selectedSecondaryItemId = this._secondaryItems[0]?.id ?? null;\n\n if (this._secondaryItems.length > 0) {\n this.closePrimaryForSecondaryMenu();\n }\n }\n get secondaryItems(): RbSidebarNavigationItem[] {\n return this._secondaryItems;\n }\n\n // Customization Inputs\n @Input() backgroundColor: string = '#F8F9FA';\n @Input() textColor: string = '#505353';\n @Input() activeTextColor: string = '#004F4F';\n @Input() hoverBackgroundColor: string = 'rgba(0, 0, 0, 0.05)';\n\n // Dynamic Width Customization Inputs (defaults to 320px)\n private _width: string | number = '320px';\n @Input()\n set width(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._width = value;\n }\n }\n get width(): string | number {\n return this._width;\n }\n\n @Input()\n set sidebarWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._width = value;\n }\n }\n get sidebarWidth(): string | number {\n return this._width;\n }\n\n private _secondaryWidth: string | number = '320px';\n @Input()\n set secondaryWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._secondaryWidth = value;\n }\n }\n get secondaryWidth(): string | number {\n return this._secondaryWidth;\n }\n\n @Input()\n set secondarySidebarWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._secondaryWidth = value;\n }\n }\n get secondarySidebarWidth(): string | number {\n return this._secondaryWidth;\n }\n\n private _closedWidth: string | number = '64px';\n @Input()\n set closedWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._closedWidth = value;\n }\n }\n get closedWidth(): string | number {\n return this._closedWidth;\n }\n\n private _sectionGap: string | number = '4px';\n @Input()\n set sectionGap(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._sectionGap = value;\n }\n }\n get sectionGap(): string | number {\n return this._sectionGap;\n }\n\n get formattedWidth(): string {\n return this.formatCssUnit(this.width, '320px');\n }\n\n get formattedSecondaryWidth(): string {\n return this.formatCssUnit(this.secondaryWidth, '320px');\n }\n\n get formattedClosedWidth(): string {\n return this.formatCssUnit(this.closedWidth, '64px');\n }\n\n get formattedSectionGap(): string {\n return this.formatCssUnit(this.sectionGap, '4px');\n }\n\n private formatCssUnit(val: string | number, defaultValue: string): string {\n if (val === undefined || val === null || val === '') {\n return defaultValue;\n }\n if (typeof val === 'number' || (!isNaN(Number(val)) && String(val).trim() !== '')) {\n return `${val}px`;\n }\n return String(val);\n }\n\n // Icon for bottom toggle button, can be customized\n @Input() toggleIcon: string = 'last_page';\n\n @Output() itemClick = new EventEmitter<RbSidebarNavigationItem>();\n @Output() logoClick = new EventEmitter<RbSidebarNavigationItem | void>();\n @Output() stateChange = new EventEmitter<{ isOpen: boolean; isFixed: boolean }>();\n\n isFixed: boolean = false;\n isHovered: boolean = false;\n isOverlayActive: boolean = false;\n private hoverTimeout?: ReturnType<typeof setTimeout>;\n private overlayCloseTimeout?: ReturnType<typeof setTimeout>;\n\n get hasSecondary(): boolean {\n return this.secondaryItems && this.secondaryItems.length > 0;\n }\n\n private closePrimaryForSecondaryMenu(): void {\n const wasOpen = this.isOpen;\n\n this.clearHoverTimeout();\n this.clearOverlayCloseTimeout();\n\n this.isFixed = false;\n this.isHovered = false;\n this.isOverlayActive = false;\n\n if (wasOpen) {\n this.scrollToActiveItem(true);\n this.emitStateChange();\n }\n }\n\n private emitStateChange(): void {\n this.stateChange.emit({ isOpen: this.isOpen, isFixed: this.isFixed });\n }\n\n private sortItems(items: RbSidebarNavigationItem[]): RbSidebarNavigationItem[] {\n if (!items || items.length === 0) return [];\n \n const clonedItems = [...items];\n const result: RbSidebarNavigationItem[] = [];\n let currentSection: RbSidebarNavigationItem[] = [];\n \n const sortSection = (section: RbSidebarNavigationItem[]) => {\n section.sort((a, b) => {\n const usageA = a.usageCount || 0;\n const usageB = b.usageCount || 0;\n if (usageA !== usageB) {\n return usageB - usageA;\n }\n const labelA = a.label || '';\n const labelB = b.label || '';\n return labelA.localeCompare(labelB);\n });\n \n section.forEach(item => {\n if (item.children && item.children.length > 0) {\n item.children = this.sortItems(item.children);\n }\n });\n \n return section;\n };\n\n for (const item of clonedItems) {\n if (item.isSectionTitle) {\n if (currentSection.length > 0) {\n result.push(...sortSection(currentSection));\n currentSection = [];\n }\n result.push(item);\n } else {\n currentSection.push(item);\n }\n }\n \n if (currentSection.length > 0) {\n result.push(...sortSection(currentSection));\n }\n \n return result;\n }\n\n ngOnInit() {\n // If there is a secondary menu, the primary menu cannot be \"fixed open\" by default because it would permanently cover the secondary menu.\n if (this.hasSecondary) {\n this.isFixed = false;\n } else {\n this.isFixed = this.initiallyFixed;\n }\n\n }\n\n get isOpen(): boolean {\n return this.isFixed || this.isHovered;\n }\n\n set isOpen(value: boolean) {\n const wasOpen = this.isOpen;\n this.isHovered = value && !this.isFixed;\n if (this.isHovered) {\n this.isOverlayActive = true;\n }\n if (wasOpen !== this.isOpen) {\n if (!this.isOpen) {\n this.scrollToActiveItem(true);\n }\n this.emitStateChange();\n }\n }\n\n onMouseEnter() {\n if (this.isFixed) return;\n\n this.clearHoverTimeout();\n this.clearOverlayCloseTimeout();\n\n this.hoverTimeout = setTimeout(() => {\n this.hoverTimeout = undefined;\n this.isOpen = true;\n }, 1000);\n }\n\n onMouseLeave() {\n this.clearHoverTimeout();\n\n if (this.isFixed) return;\n\n const wasHovered = this.isHovered;\n this.isHovered = false;\n if (wasHovered) {\n this.finishOverlayAfterClosingTransition();\n this.scrollToActiveItem(true);\n this.emitStateChange();\n } else {\n this.isOverlayActive = false;\n }\n }\n\n ngOnDestroy(): void {\n this.clearHoverTimeout();\n this.clearOverlayCloseTimeout();\n }\n\n toggleFixed() {\n this.clearHoverTimeout();\n const wasOpen = this.isOpen;\n\n if (wasOpen) {\n const wasOverlay = this.isHovered || this.isOverlayActive;\n this.isFixed = false;\n this.isHovered = false;\n if (wasOverlay) {\n this.finishOverlayAfterClosingTransition();\n } else {\n this.clearOverlayCloseTimeout();\n this.isOverlayActive = false;\n }\n } else {\n this.clearOverlayCloseTimeout();\n this.isFixed = true;\n this.isHovered = false;\n this.isOverlayActive = false;\n }\n\n if (wasOpen && !this.isOpen) {\n this.scrollToActiveItem(true);\n }\n\n this.emitStateChange();\n }\n\n private finishOverlayAfterClosingTransition(): void {\n this.clearOverlayCloseTimeout();\n this.overlayCloseTimeout = setTimeout(() => {\n this.isOverlayActive = false;\n this.overlayCloseTimeout = undefined;\n }, 300);\n }\n\n private clearHoverTimeout(): void {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = undefined;\n }\n }\n\n private clearOverlayCloseTimeout(): void {\n if (this.overlayCloseTimeout) {\n clearTimeout(this.overlayCloseTimeout);\n this.overlayCloseTimeout = undefined;\n }\n }\n\n onLogoClicked() {\n if (this.items && this.items.length > 0) {\n this.logoClick.emit(this.items[0]);\n } else {\n this.logoClick.emit();\n }\n }\n\n onItemClicked(item: RbSidebarNavigationItem) {\n if (this.secondaryItems.some(secondaryItem => secondaryItem.id === item.id)) {\n this.selectedSecondaryItemId = item.id;\n }\n\n if (item.action) {\n item.action();\n }\n this.itemClick.emit(item);\n }\n\n toggleItem(item: RbSidebarNavigationItem) {\n if (item.children && item.children.length > 0) {\n item.expanded = !item.expanded;\n if (!this.isOpen) {\n this.isFixed = true; // Open the sidebar to see the children\n this.isHovered = false;\n }\n } else {\n this.onItemClicked(item);\n }\n }\n\n isChildActive(item: RbSidebarNavigationItem): boolean {\n if (!item.children) return false;\n // Check if any child route is currently active\n return item.children.some(child => \n child.route && this.router.isActive(child.route, {\n paths: 'exact',\n queryParams: 'ignored', \n fragment: 'ignored', \n matrixParams: 'ignored' \n })\n );\n }\n\n isParentActive(item: RbSidebarNavigationItem): boolean {\n if (!item.children || item.children.length === 0) return false;\n // Highlight parent if the sidebar is closed OR if the submenu is closed, AND a child is active\n return (!this.isOpen || !item.expanded) && this.isChildActive(item);\n }\n\n isSecondaryItemActive(item: RbSidebarNavigationItem): boolean {\n const routeActive = this.isRouteActive(item);\n const hasActiveRoute = this.secondaryItems.some(secondaryItem => this.isRouteActive(secondaryItem));\n\n if (hasActiveRoute) {\n return routeActive;\n }\n\n return item.id === this.selectedSecondaryItemId;\n }\n\n private isRouteActive(item: RbSidebarNavigationItem): boolean {\n return !!item.route && this.router.isActive(item.route, {\n paths: 'exact',\n queryParams: 'ignored',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n }\n\n getSectionTitleLabel(item: RbSidebarNavigationItem): string {\n if (!item || !item.label) return '';\n return item.label;\n }\n\n getNavItemLabel(item: RbSidebarNavigationItem): string {\n if (!item || !item.label) return '';\n return item.label;\n }\n\n getSubmenuItemLabel(item: RbSidebarNavigationItem): string {\n if (!item || !item.label) return '';\n return item.label;\n }\n\n public scrollToActiveItem(smooth: boolean = true): void {\n setTimeout(() => {\n this.performScrollToActiveItem(smooth);\n }, 0);\n\n setTimeout(() => {\n this.performScrollToActiveItem(smooth);\n }, 150);\n\n setTimeout(() => {\n this.performScrollToActiveItem(smooth);\n }, 320);\n }\n\n private performScrollToActiveItem(smooth: boolean = true): void {\n if (!this.elementRef) return;\n const navContainer = this.elementRef.nativeElement.querySelector('.rb-sidebar__nav') as HTMLElement;\n if (!navContainer) return;\n\n const activeElement = navContainer.querySelector('.rb-sidebar__nav-link--active, .rb-sidebar__submenu-link--active') as HTMLElement;\n if (!activeElement) return;\n\n const containerRect = navContainer.getBoundingClientRect();\n const activeRect = activeElement.getBoundingClientRect();\n\n const isVisible = (\n activeRect.top >= containerRect.top &&\n activeRect.bottom <= containerRect.bottom\n );\n\n if (!isVisible) {\n const targetScrollTop = navContainer.scrollTop\n + activeRect.top\n - containerRect.top\n - ((navContainer.clientHeight - activeElement.clientHeight) / 2);\n navContainer.scrollTo({\n top: Math.max(0, targetScrollTop),\n behavior: smooth ? 'smooth' : 'auto'\n });\n }\n }\n}\n","<div class=\"rb-sidebar-wrapper\" \n [class.has-secondary]=\"hasSecondary\"\n [class.is-fixed]=\"isFixed\"\n [class.is-hovered]=\"isHovered\"\n [style.--rb-sidebar-bg]=\"backgroundColor\"\n [style.--rb-sidebar-text-color]=\"textColor\"\n [style.--rb-sidebar-active-text-color]=\"activeTextColor\"\n [style.--rb-sidebar-hover-bg]=\"hoverBackgroundColor\"\n [style.--rb-sidebar-width-open]=\"formattedWidth\"\n [style.--rb-secondary-sidebar-width]=\"formattedSecondaryWidth\"\n [style.--rb-sidebar-width-closed]=\"formattedClosedWidth\"\n [style.--rb-sidebar-section-gap]=\"formattedSectionGap\"\n>\n <aside\n class=\"rb-sidebar rb-sidebar--primary\"\n [ngClass]=\"{ \n 'rb-sidebar--open': isOpen, \n 'rb-sidebar--closed': !isOpen, \n 'rb-sidebar--fixed': isFixed,\n 'rb-sidebar--overlay': isOverlayActive\n }\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div class=\"rb-sidebar__header\" (click)=\"onLogoClicked()\" role=\"button\" tabindex=\"0\">\n @if (logoUrl) {\n <img [src]=\"logoUrl\" [alt]=\"logoName || 'Logo'\" class=\"rb-sidebar__logo-icon\" />\n }\n @if (logoTextUrl) {\n <img [src]=\"logoTextUrl\" alt=\"Rubeus\" class=\"rb-sidebar__logo-wordmark\" />\n } @else if (logoName) {\n <span class=\"rb-sidebar__logo-name\">{{ logoName }}</span>\n }\n </div>\n\n <nav class=\"rb-sidebar__nav\">\n <ul class=\"rb-sidebar__nav-list\">\n @for (item of items; track item.id) {\n <li\n class=\"rb-sidebar__nav-item\"\n [class.rb-sidebar__nav-item--section]=\"item.isSectionTitle\"\n [class.rb-sidebar__nav-item--section-without-title]=\"item.hasDivider && !item.isSectionTitle\"\n >\n @if (item.hasDivider || item.isSectionTitle) {\n <div class=\"rb-sidebar__section-divider\"></div>\n }\n @if (item.isSectionTitle) {\n @if (item.label) {\n <div class=\"rb-sidebar__section-title\">\n <span\n class=\"rb-sidebar__section-label\"\n matTooltip\n [rbOverflowTooltip]=\"item.label\"\n >{{ getSectionTitleLabel(item) }}</span>\n </div>\n }\n } @else {\n @if (item.route && (!item.children || item.children.length === 0)) {\n <a\n [routerLink]=\"item.route\"\n routerLinkActive=\"rb-sidebar__nav-link--active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"rb-sidebar__nav-link\"\n (click)=\"onItemClicked(item)\"\n >\n <i class=\"material-symbols-outlined rb-sidebar__nav-icon\">{{ item.icon }}</i>\n <span\n class=\"rb-sidebar__nav-label\"\n matTooltip\n [rbOverflowTooltip]=\"item.label\"\n >{{ getNavItemLabel(item) }}</span>\n </a>\n } @else {\n <div\n class=\"rb-sidebar__nav-link\"\n [class.rb-sidebar__nav-link--active]=\"isParentActive(item)\"\n (click)=\"toggleItem(item)\"\n role=\"button\"\n tabindex=\"0\"\n >\n <i class=\"material-symbols-outlined rb-sidebar__nav-icon\">{{ item.icon }}</i>\n <span\n class=\"rb-sidebar__nav-label\"\n matTooltip\n [rbOverflowTooltip]=\"item.label\"\n >{{ getNavItemLabel(item) }}</span>\n @if (item.children && item.children.length > 0) {\n <i class=\"material-symbols-outlined rb-sidebar__nav-caret\" [class.rotate]=\"item.expanded\">arrow_drop_down</i>\n }\n </div>\n @if (item.children && item.children.length > 0 && item.expanded && isOpen) {\n <ul class=\"rb-sidebar__submenu\">\n @for (child of item.children; track child.id) {\n <li class=\"rb-sidebar__submenu-item\">\n @if (child.route) {\n <a\n [routerLink]=\"child.route\"\n routerLinkActive=\"rb-sidebar__submenu-link--active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"rb-sidebar__submenu-link\"\n (click)=\"onItemClicked(child)\"\n >\n <span\n class=\"rb-sidebar__submenu-label\"\n matTooltip\n [rbOverflowTooltip]=\"child.label\"\n >{{ getSubmenuItemLabel(child) }}</span>\n </a>\n } @else {\n <div\n class=\"rb-sidebar__submenu-link\"\n (click)=\"onItemClicked(child)\"\n role=\"button\"\n tabindex=\"0\"\n >\n <span\n class=\"rb-sidebar__submenu-label\"\n matTooltip\n [rbOverflowTooltip]=\"child.label\"\n >{{ getSubmenuItemLabel(child) }}</span>\n </div>\n }\n </li>\n }\n </ul>\n }\n }\n }\n </li>\n }\n </ul>\n </nav>\n\n <div class=\"rb-sidebar__footer\">\n <button class=\"rb-sidebar__toggle-btn\" (click)=\"toggleFixed()\" aria-label=\"Alternar menu lateral\">\n <i class=\"material-symbols-outlined rb-sidebar__toggle-icon\">{{ toggleIcon }}</i>\n </button>\n </div>\n </aside>\n\n <!-- Secondary Sidebar -->\n @if (hasSecondary) {\n <aside class=\"rb-sidebar rb-sidebar--secondary\">\n <div class=\"rb-sidebar__header\">\n <span class=\"rb-sidebar__secondary-title\">{{ secondaryTitle }}</span>\n </div>\n <nav class=\"rb-sidebar__nav\">\n <ul class=\"rb-sidebar__nav-list\">\n @for (item of secondaryItems; track item.id) {\n <li class=\"rb-sidebar__nav-item\">\n @if (item.route) {\n <a\n [routerLink]=\"item.route\"\n routerLinkActive=\"rb-sidebar__nav-link--active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"rb-sidebar__secondary-link\"\n [class.rb-sidebar__nav-link--active]=\"isSecondaryItemActive(item)\"\n (click)=\"onItemClicked(item)\"\n >\n <span class=\"rb-sidebar__secondary-label\">{{ item.label }}</span>\n </a>\n } @else {\n <div\n class=\"rb-sidebar__secondary-link\"\n [class.rb-sidebar__nav-link--active]=\"isSecondaryItemActive(item)\"\n (click)=\"onItemClicked(item)\"\n role=\"button\"\n tabindex=\"0\"\n >\n <span class=\"rb-sidebar__secondary-label\">{{ item.label }}</span>\n </div>\n }\n </li>\n }\n </ul>\n </nav>\n </aside>\n }\n</div>\n","import { ChangeDetectorRef, Component, Input, Output, EventEmitter, ElementRef, ViewChild, DestroyRef, inject } from '@angular/core';\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { \n RbHeaderUserProfile,\n RbHeaderApp,\n RbHeaderProfileMenuItem\n} from '../../interfaces/rb-header.interface';\n\n@Component({\n selector: 'rb-header',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-header.component.html',\n styleUrl: './rb-header.component.scss'\n})\nexport class RbHeaderComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() pageTitle: string = '';\n @Input() userProfile?: RbHeaderUserProfile;\n @Input() appsList: RbHeaderApp[] = [];\n @Input() backgroundColor: string = '#F8FAF9';\n @Input() profileMenu: RbHeaderProfileMenuItem[] = [];\n @Input() showBaseSwitch: boolean = false;\n @Input() showCrmButton: boolean = false;\n @Input() showCrmApp: boolean = false;\n\n @Output() onHelpClick = new EventEmitter<void>();\n @Output() onAppsClick = new EventEmitter<void>();\n @Output() onViewAllAppsClick = new EventEmitter<void>();\n @Output() onProfileMenuItemClick = new EventEmitter<RbHeaderProfileMenuItem>();\n @Output() onLogoutClick = new EventEmitter<void>();\n @Output() onProfileMenuClick = new EventEmitter<void>();\n @Output() onSwitchBaseClick = new EventEmitter<void>();\n @Output() onGoToCrmClick = new EventEmitter<void>();\n @Output() onAccountClick = new EventEmitter<void>();\n\n isAppsMenuOpen = false;\n isProfileMenuOpen = false;\n \n @ViewChild('appsMenuRef') appsMenuRef?: ElementRef;\n @ViewChild('appsButtonRef') appsButtonRef?: ElementRef;\n @ViewChild('appsContainerRef') appsContainerRef?: ElementRef<HTMLElement>;\n @ViewChild('profileButtonRef') profileButtonRef?: ElementRef;\n @ViewChild('profileMenuRef') profileMenuRef?: ElementRef;\n\n constructor(\n private sanitizer: DomSanitizer,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.document.addEventListener('pointerdown', this.handleDocumentPointerDown, true);\n this.destroyRef.onDestroy(() => {\n this.document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);\n });\n }\n\n get rubeusApps(): RbHeaderApp[] {\n return this.appsList.filter(app => app.isRubeusApp !== false);\n }\n\n get nonRubeusApps(): RbHeaderApp[] {\n return this.appsList.filter(app => app.isRubeusApp === false);\n }\n\n getSafeSvg(svgString?: string): SafeHtml | null {\n return svgString ? this.sanitizer.bypassSecurityTrustHtml(svgString) : null;\n }\n\n\n private readonly handleDocumentPointerDown = (event: Event) => {\n const target = event.target as Node | null;\n let menuStateChanged = false;\n\n if (!target) {\n return;\n }\n\n if (this.isAppsMenuOpen) {\n const clickedInsideAppsContainer = this.appsContainerRef?.nativeElement.contains(target);\n if (!clickedInsideAppsContainer) {\n this.isAppsMenuOpen = false;\n menuStateChanged = true;\n }\n }\n if (this.isProfileMenuOpen) {\n const clickedInsideProfile = this.profileButtonRef?.nativeElement.contains(target);\n const clickedInsideProfileMenu = this.profileMenuRef?.nativeElement.contains(target);\n if (!clickedInsideProfile && !clickedInsideProfileMenu) {\n this.isProfileMenuOpen = false;\n menuStateChanged = true;\n }\n }\n\n if (menuStateChanged) {\n this.changeDetectorRef.detectChanges();\n }\n };\n\n\n\n handleAppsClick() {\n this.isAppsMenuOpen = !this.isAppsMenuOpen;\n this.onAppsClick.emit();\n }\n\n handleAppSelect(app: RbHeaderApp) {\n if (app.action) {\n app.action();\n } else if (app.url) {\n window.location.href = app.url; // Or use Router if it's an internal link\n }\n this.isAppsMenuOpen = false;\n }\n\n handleViewAllAppsClick() {\n this.onViewAllAppsClick.emit();\n this.isAppsMenuOpen = false;\n }\n\n handleCrmAppClick() {\n this.onGoToCrmClick.emit();\n this.isAppsMenuOpen = false;\n }\n\n handleHelpClick() {\n this.onHelpClick.emit();\n }\n \n handleProfileClick() {\n this.isProfileMenuOpen = !this.isProfileMenuOpen;\n this.onProfileMenuClick.emit();\n }\n\n handleProfileMenuItemClick(item: RbHeaderProfileMenuItem) {\n this.onProfileMenuItemClick.emit(item);\n this.isProfileMenuOpen = false;\n }\n\n handleLogoutClick() {\n this.onLogoutClick.emit();\n this.isProfileMenuOpen = false;\n }\n\n handleAccountClick() {\n this.onAccountClick.emit();\n this.isProfileMenuOpen = false;\n }\n\n handleBaseRowClick() {\n if (this.showBaseSwitch) {\n this.onSwitchBaseClick.emit();\n this.isProfileMenuOpen = false;\n }\n }\n\n handleGoToCrmClick(event: Event) {\n event.stopPropagation();\n this.onGoToCrmClick.emit();\n this.isProfileMenuOpen = false;\n }\n}\n","<header class=\"rb-header\" [style.--rb-header-bg]=\"backgroundColor\">\n <div class=\"rb-header__left\">\n <!-- Page Title -->\n @if (pageTitle) {\n <h1 class=\"rb-header__title\" [title]=\"pageTitle\">{{ pageTitle }}</h1>\n }\n </div>\n\n <div class=\"rb-header__right\">\n <!-- Apps Button and Menu -->\n <div class=\"rb-header__apps-container\" #appsContainerRef>\n <button mat-icon-button class=\"rb-header__apps-btn\" #appsButtonRef (click)=\"handleAppsClick()\" aria-label=\"Aplicativos\" title=\"Aplicativos\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6 20C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18C4 17.45 4.19583 16.9792 4.5875 16.5875C4.97917 16.1958 5.45 16 6 16C6.55 16 7.02083 16.1958 7.4125 16.5875C7.80417 16.9792 8 17.45 8 18C8 18.55 7.80417 19.0208 7.4125 19.4125C7.02083 19.8042 6.55 20 6 20ZM12 20C11.45 20 10.9792 19.8042 10.5875 19.4125C10.1958 19.0208 10 18.55 10 18C10 17.45 10.1958 16.9792 10.5875 16.5875C10.9792 16.1958 11.45 16 12 16C12.55 16 13.0208 16.1958 13.4125 16.5875C13.8042 16.9792 14 17.45 14 18C14 18.55 13.8042 19.0208 13.4125 19.4125C13.0208 19.8042 12.55 20 12 20ZM18 20C17.45 20 16.9792 19.8042 16.5875 19.4125C16.1958 19.0208 16 18.55 16 18C16 17.45 16.1958 16.9792 16.5875 16.5875C16.9792 16.1958 17.45 16 18 16C18.55 16 19.0208 16.1958 19.4125 16.5875C19.8042 16.9792 20 17.45 20 18C20 18.55 19.8042 19.0208 19.4125 19.4125C19.0208 19.8042 18.55 20 18 20ZM6 14C5.45 14 4.97917 13.8042 4.5875 13.4125C4.19583 13.0208 4 12.55 4 12C4 11.45 4.19583 10.9792 4.5875 10.5875C4.97917 10.1958 5.45 10 6 10C6.55 10 7.02083 10.1958 7.4125 10.5875C7.80417 10.9792 8 11.45 8 12C8 12.55 7.80417 13.0208 7.4125 13.4125C7.02083 13.8042 6.55 14 6 14ZM12 14C11.45 14 10.9792 13.8042 10.5875 13.4125C10.1958 13.0208 10 12.55 10 12C10 11.45 10.1958 10.9792 10.5875 10.5875C10.9792 10.1958 11.45 10 12 10C12.55 10 13.0208 10.1958 13.4125 10.5875C13.8042 10.9792 14 11.45 14 12C14 12.55 13.8042 13.0208 13.4125 13.4125C13.0208 13.8042 12.55 14 12 14ZM18 14C17.45 14 16.9792 13.8042 16.5875 13.4125C16.1958 13.0208 16 12.55 16 12C16 11.45 16.1958 10.9792 16.5875 10.5875C16.9792 10.1958 17.45 10 18 10C18.55 10 19.0208 10.1958 19.4125 10.5875C19.8042 10.9792 20 11.45 20 12C20 12.55 19.8042 13.0208 19.4125 13.4125C19.0208 13.8042 18.55 14 18 14ZM6 8C5.45 8 4.97917 7.80417 4.5875 7.4125C4.19583 7.02083 4 6.55 4 6C4 5.45 4.19583 4.97917 4.5875 4.5875C4.97917 4.19583 5.45 4 6 4C6.55 4 7.02083 4.19583 7.4125 4.5875C7.80417 4.97917 8 5.45 8 6C8 6.55 7.80417 7.02083 7.4125 7.4125C7.02083 7.80417 6.55 8 6 8ZM12 8C11.45 8 10.9792 7.80417 10.5875 7.4125C10.1958 7.02083 10 6.55 10 6C10 5.45 10.1958 4.97917 10.5875 4.5875C10.9792 4.19583 11.45 4 12 4C12.55 4 13.0208 4.19583 13.4125 4.5875C13.8042 4.97917 14 5.45 14 6C14 6.55 13.8042 7.02083 13.4125 7.4125C13.0208 7.80417 12.55 8 12 8ZM18 8C17.45 8 16.9792 7.80417 16.5875 7.4125C16.1958 7.02083 16 6.55 16 6C16 5.45 16.1958 4.97917 16.5875 4.5875C16.9792 4.19583 17.45 4 18 4C18.55 4 19.0208 4.19583 19.4125 4.5875C19.8042 4.97917 20 5.45 20 6C20 6.55 19.8042 7.02083 19.4125 7.4125C19.0208 7.80417 18.55 8 18 8Z\" fill=\"currentColor\"/>\n </svg>\n </button>\n\n @if (isAppsMenuOpen) {\n <div class=\"rb-header__apps-menu\" #appsMenuRef>\n \n <!-- Rubeus Apps -->\n @if (rubeusApps.length > 0 || showCrmApp) {\n <div class=\"rb-header__apps-card\">\n <div class=\"rb-header__apps-grid\">\n @if (showCrmApp) {\n <button type=\"button\" class=\"rb-header__app-item\" (click)=\"handleCrmAppClick()\">\n <div class=\"rb-header__app-item-inner\">\n <div class=\"rb-header__app-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"28\" viewBox=\"0 0 31 28\" fill=\"none\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M30.6535 12.5201L24.2317 1.38599C23.7697 0.554396 22.8458 0 21.8756 0H9.07824C8.10805 0 7.18405 0.508197 6.72206 1.38599L0.346498 12.5201C-0.115499 13.3517 -0.115499 14.3681 0.346498 15.2459L6.76826 26.38C7.23025 27.2116 8.15425 27.766 9.12444 27.766H21.9218C22.892 27.766 23.8159 27.2578 24.2779 26.38L30.6535 15.2459C31.1155 14.3681 31.1155 13.3517 30.6535 12.5201ZM27.0499 14.9225L22.1528 23.4232C21.7832 24.07 21.0902 24.4858 20.351 24.4858H10.6028C9.86364 24.4858 9.17064 24.07 8.80104 23.4232L3.95007 14.9225C3.58048 14.2757 3.58048 13.4903 3.95007 12.8435L8.80104 4.34277C9.17064 3.69598 9.86364 3.28018 10.6028 3.28018H20.351C21.0902 3.28018 21.7832 3.69598 22.1528 4.34277L27.0499 12.8435C27.4195 13.4903 27.4195 14.2757 27.0499 14.9225Z\" fill=\"#01A1A1\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M22.5779 16.1866C22.7549 15.8786 22.5326 15.4944 22.1773 15.4944H19.4585C19.2927 15.4944 19.1396 15.5832 19.0574 15.7272L18.0388 17.5097C17.9002 17.7407 17.623 17.9255 17.3458 17.9255H13.6498C13.3726 17.9255 13.0954 17.7869 12.9568 17.5097L11.9382 15.7272C11.856 15.5832 11.7029 15.4944 11.5371 15.4944H8.81829C8.46304 15.4944 8.24071 15.8786 8.41775 16.1866L10.8778 20.4665C11.155 20.9285 11.617 21.2057 12.1252 21.2057H18.8704C19.3786 21.2057 19.8406 20.9285 20.1178 20.4665L22.5779 16.1866ZM20.0716 7.29956L22.4986 11.522C22.6757 11.83 22.4533 12.2142 22.0981 12.2142H19.4257C19.2599 12.2142 19.1068 12.1254 19.0245 11.9814L18.0388 10.2563C17.9002 9.97914 17.623 9.84054 17.3458 9.84054H13.6498C13.3726 9.84054 13.0954 10.0253 12.9568 10.2563L11.9711 11.9814C11.8888 12.1254 11.7357 12.2142 11.5699 12.2142H8.85132C8.49607 12.2142 8.27374 11.83 8.45078 11.522L10.8778 7.29956C11.155 6.83756 11.617 6.56036 12.1252 6.56036H18.8242C19.3324 6.56036 19.7944 6.83756 20.0716 7.29956Z\" fill=\"#FF0031\"/>\n </svg>\n </div>\n <span class=\"rb-header__app-name\">CRM</span>\n </div>\n </button>\n }\n @for (app of rubeusApps; track app.name) {\n <button type=\"button\" class=\"rb-header__app-item\" (click)=\"handleAppSelect(app)\">\n <div class=\"rb-header__app-item-inner\">\n <div class=\"rb-header__app-icon-wrapper\">\n @if (app.iconUrl) {\n <img [src]=\"app.iconUrl\" [alt]=\"app.name\" />\n }\n @if (app.iconSvg) {\n <div [innerHTML]=\"getSafeSvg(app.iconSvg)\"></div>\n }\n @if (!app.iconUrl && !app.iconSvg) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n }\n </div>\n <span class=\"rb-header__app-name\">{{ app.name }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Non-Rubeus Apps -->\n @if (nonRubeusApps.length > 0) {\n <div class=\"rb-header__apps-card\">\n <div class=\"rb-header__apps-grid\">\n @for (app of nonRubeusApps; track app.name) {\n <button type=\"button\" class=\"rb-header__app-item\" (click)=\"handleAppSelect(app)\">\n <div class=\"rb-header__app-item-inner\">\n <div class=\"rb-header__app-icon-wrapper\">\n @if (app.iconUrl) {\n <img [src]=\"app.iconUrl\" [alt]=\"app.name\" />\n }\n @if (app.iconSvg) {\n <div [innerHTML]=\"getSafeSvg(app.iconSvg)\"></div>\n }\n @if (!app.iconUrl && !app.iconSvg) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n }\n </div>\n <span class=\"rb-header__app-name\">{{ app.name }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <div class=\"rb-header__apps-footer\">\n <button mat-button [rbDynamicButton]=\"'cancel'\" color=\"primary\" type=\"button\" class=\"rb-header__view-all-apps primary\" (click)=\"handleViewAllAppsClick()\">\n Ver todos os aplicativos\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Help Button -->\n <button mat-icon-button class=\"rb-header__icon-btn\" (click)=\"handleHelpClick()\" aria-label=\"Ajuda\" title=\"Ajuda\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M11.96 16.8C12.24 16.8 12.4767 16.7033 12.67 16.51C12.8633 16.3167 12.96 16.08 12.96 15.8C12.96 15.52 12.8633 15.2833 12.67 15.09C12.4767 14.8967 12.24 14.8 11.96 14.8C11.68 14.8 11.4433 14.8967 11.25 15.09C11.0567 15.2833 10.96 15.52 10.96 15.8C10.96 16.08 11.0567 16.3167 11.25 16.51C11.4433 16.7033 11.68 16.8 11.96 16.8ZM11.24 13.72H12.72C12.72 13.28 12.77 12.9333 12.87 12.68C12.97 12.4267 13.2533 12.08 13.72 11.64C14.0667 11.2933 14.34 10.9633 14.54 10.65C14.74 10.3367 14.84 9.96 14.84 9.52C14.84 8.77333 14.5667 8.2 14.02 7.8C13.4733 7.4 12.8267 7.2 12.08 7.2C11.32 7.2 10.7033 7.4 10.23 7.8C9.75667 8.2 9.42667 8.68 9.24 9.24L10.56 9.76C10.6267 9.52 10.7767 9.26 11.01 8.98C11.2433 8.7 11.6 8.56 12.08 8.56C12.5067 8.56 12.8267 8.67667 13.04 8.91C13.2533 9.14333 13.36 9.4 13.36 9.68C13.36 9.94667 13.28 10.1967 13.12 10.43C12.96 10.6633 12.76 10.88 12.52 11.08C11.9333 11.6 11.5733 11.9933 11.44 12.26C11.3067 12.5267 11.24 13.0133 11.24 13.72ZM12 20C10.8933 20 9.85333 19.79 8.88 19.37C7.90667 18.95 7.06 18.38 6.34 17.66C5.62 16.94 5.05 16.0933 4.63 15.12C4.21 14.1467 4 13.1067 4 12C4 10.8933 4.21 9.85333 4.63 8.88C5.05 7.90667 5.62 7.06 6.34 6.34C7.06 5.62 7.90667 5.05 8.88 4.63C9.85333 4.21 10.8933 4 12 4C13.1067 4 14.1467 4.21 15.12 4.63C16.0933 5.05 16.94 5.62 17.66 6.34C18.38 7.06 18.95 7.90667 19.37 8.88C19.79 9.85333 20 10.8933 20 12C20 13.1067 19.79 14.1467 19.37 15.12C18.95 16.0933 18.38 16.94 17.66 17.66C16.94 18.38 16.0933 18.95 15.12 19.37C14.1467 19.79 13.1067 20 12 20Z\" fill=\"#8E9191\"/>\n <path d=\"M11.9601 14.8C12.24 14.8 12.4769 14.8965 12.6702 15.0898C12.8635 15.2831 12.9601 15.52 12.9601 15.8C12.9601 16.0799 12.8635 16.3168 12.6702 16.5101C12.4769 16.7034 12.24 16.7999 11.9601 16.8C11.6801 16.8 11.4432 16.7034 11.2499 16.5101C11.0566 16.3168 10.9601 16.08 10.9601 15.8C10.9601 15.52 11.0566 15.2831 11.2499 15.0898C11.4432 14.8965 11.6801 14.8 11.9601 14.8ZM12.0796 7.19995C12.8263 7.19995 13.4735 7.39995 14.0202 7.79995C14.5667 8.19994 14.8397 8.77369 14.8397 9.52026C14.8397 9.96013 14.7397 10.3367 14.5397 10.65C14.3398 10.9632 14.0667 11.2932 13.7202 11.6398C13.2538 12.0796 12.9703 12.4263 12.8702 12.6796C12.7702 12.933 12.7202 13.2803 12.7202 13.7203H11.2397C11.2397 13.0138 11.3065 12.5268 11.4397 12.2601C11.5731 11.9934 11.9335 11.5996 12.5202 11.0796C12.7601 10.8797 12.9603 10.6629 13.1202 10.4296C13.2801 10.1964 13.3601 9.94617 13.3601 9.67964C13.36 9.39976 13.253 9.14335 13.0397 8.91011C12.8264 8.67677 12.5063 8.56011 12.0796 8.56011C11.5999 8.56017 11.2433 8.69987 11.0101 8.97964C10.7767 9.25964 10.6267 9.52011 10.5601 9.76011L9.23975 9.23979C9.42639 8.67991 9.75638 8.1999 10.2296 7.79995C10.7029 7.40001 11.3197 7.20001 12.0796 7.19995Z\" fill=\"white\"/>\n </svg>\n </button>\n\n <div class=\"rb-header__divider\"></div>\n\n <!-- Profile -->\n @if (userProfile) {\n <div class=\"rb-header__profile-wrapper\">\n <div class=\"rb-header__profile\" #profileButtonRef [class.rb-header__profile--open]=\"isProfileMenuOpen\" (click)=\"handleProfileClick()\">\n <div class=\"rb-header__profile-avatar-container\">\n @if (userProfile.avatarUrl) {\n <img [src]=\"userProfile.avatarUrl\" [alt]=\"userProfile.name\" class=\"rb-header__profile-avatar\" />\n } @else {\n <div class=\"rb-header__profile-avatar rb-header__profile-avatar--placeholder\"></div>\n }\n </div>\n <div class=\"rb-header__profile-info\">\n <span class=\"rb-header__profile-name\">{{ userProfile.name }}</span>\n <span class=\"rb-header__profile-base\">{{ userProfile.base }}</span>\n </div>\n <svg class=\"rb-header__profile-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M9 11.25L5.25 7.5H12.75L9 11.25Z\" fill=\"#505353\"/>\n </svg>\n </div>\n\n <!-- Profile Menu -->\n @if (isProfileMenuOpen) {\n <div class=\"rb-header__profile-menu\" #profileMenuRef>\n <!-- Identification (also acts as the account button) -->\n <button\n type=\"button\"\n class=\"rb-header__profile-menu-identification\"\n (click)=\"handleAccountClick()\"\n >\n <span class=\"rb-header__profile-menu-identification-name\">{{ userProfile.name }}</span>\n @if (userProfile.email) {\n <span class=\"rb-header__profile-menu-identification-email\">{{ userProfile.email }}</span>\n }\n </button>\n\n <!-- Base Switch / CRM Row -->\n @if (showBaseSwitch || showCrmButton) {\n <div\n class=\"rb-header__profile-menu-item rb-header__profile-base-row\"\n [class.rb-header__profile-menu-item--static]=\"!showBaseSwitch\"\n (click)=\"handleBaseRowClick()\"\n >\n <span class=\"rb-header__profile-menu-label\">{{ userProfile?.base }}</span>\n @if (showCrmButton) {\n <button\n type=\"button\"\n class=\"rb-header__profile-crm-btn\"\n (click)=\"handleGoToCrmClick($event)\"\n aria-label=\"Ir para o CRM\"\n title=\"Ir para o CRM\"\n >\n <mat-icon class=\"rb-header__profile-crm-icon\">swap_vert</mat-icon>\n </button>\n }\n </div>\n <div class=\"rb-header__profile-menu-divider\"></div>\n }\n\n <!-- Dynamic Items -->\n @for (item of profileMenu; track item.id || item.label) {\n <div class=\"rb-header__profile-menu-item\" (click)=\"handleProfileMenuItemClick(item)\">\n @if (item.iconSvg || item.iconUrl) {\n <div class=\"rb-header__profile-menu-icon\">\n @if (item.iconUrl) {\n <img [src]=\"item.iconUrl\" [alt]=\"item.label\" />\n }\n @if (item.iconSvg) {\n <div [innerHTML]=\"getSafeSvg(item.iconSvg)\"></div>\n }\n </div>\n }\n <span class=\"rb-header__profile-menu-label\">{{ item.label }}</span>\n </div>\n }\n\n @if (profileMenu.length > 0) {\n <div class=\"rb-header__profile-menu-divider\"></div>\n }\n\n <!-- Default Logout Item -->\n <div class=\"rb-header__profile-menu-item rb-header__profile-menu-item--logout\" (click)=\"handleLogoutClick()\">\n <div class=\"rb-header__profile-menu-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M10.09 15.59L11.5 17L16.5 12L11.5 7L10.09 8.41L12.67 11H3V13H12.67L10.09 15.59ZM19 3H5C3.89 3 3 3.9 3 5V9H5V5H19V19H5V15H3V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"rb-header__profile-menu-label\">Sair</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</header>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'isArray',\n standalone: true\n})\nexport class IsArrayPipe implements PipeTransform {\n\n transform(value: any): boolean {\n return Array.isArray(value);\n }\n\n}\n","export interface CrudColumn {\n key: string;\n label: string;\n sortable?: boolean;\n pipe?: 'date' | 'datetime' | 'currency' | 'cpf' | 'cnpj' | 'phone' | 'cep' | 'mask' | 'relativeTime' | 'lastModifiedBy';\n action?: string;\n hidden?: boolean;\n blocked?: boolean;\n conditionalClassKey?: string;\n objCol?: CrudObjColumn; //Usado quando a informação da coluna é um objeto\n}\nexport interface CrudActionEvent {\n action: string;\n row?: any;\n}\n\nexport interface CrudObjColumn {\n key: string;\n label: string;\n}\n\n// export interface CrudFilter {\n// key: string;\n// label: string;\n// type: 'text' | 'select' | 'date';\n// options?: any[]; // Para selects\n// }\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, inject, DestroyRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { RbHelpArticle, RbHelpIntegrationProvider } from '../../interfaces/rb-help-panel.interface';\n\n@Component({\n selector: 'rb-help-panel',\n standalone: true,\n imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule],\n templateUrl: './rb-help-panel.component.html',\n styleUrl: './rb-help-panel.component.scss'\n})\nexport class RbHelpPanelComponent implements OnInit, OnChanges {\n private destroyRef = inject(DestroyRef);\n\n @Input() isOpen = false;\n @Input() panelTitle = 'JivoChat';\n @Input() routeContext?: string;\n @Input() integrationProvider?: RbHelpIntegrationProvider;\n\n @Output() onClose = new EventEmitter<void>();\n @Output() onClickKnowledgeBase = new EventEmitter<void>();\n @Output() onClickCommunity = new EventEmitter<void>();\n @Output() onClickNews = new EventEmitter<void>();\n @Output() onClickMyTickets = new EventEmitter<void>();\n @Output() onClickChat = new EventEmitter<void>();\n\n searchQuery = '';\n articles: RbHelpArticle[] = [];\n isLoading = false;\n\n private searchSubject = new Subject<string>();\n\n ngOnInit(): void {\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(query => {\n this.isLoading = true;\n if (query.trim() === '') {\n return this.integrationProvider ? this.integrationProvider.fetchInitialArticles(this.routeContext) : [];\n }\n return this.integrationProvider ? this.integrationProvider.searchArticles(query) : [];\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: (results) => {\n this.articles = results;\n this.isLoading = false;\n },\n error: (err) => {\n console.error('Error fetching articles', err);\n this.isLoading = false;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isOpen']?.currentValue === true) {\n this.loadInitialArticles();\n }\n }\n\n loadInitialArticles() {\n if (this.integrationProvider) {\n this.isLoading = true;\n this.searchQuery = '';\n this.integrationProvider.fetchInitialArticles(this.routeContext).pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: (results) => {\n this.articles = results;\n this.isLoading = false;\n },\n error: (err) => {\n console.error('Error loading initial articles', err);\n this.isLoading = false;\n }\n });\n }\n }\n\n onSearchChange(query: string) {\n this.searchQuery = query;\n this.searchSubject.next(query);\n }\n\n handleClose() {\n this.isOpen = false;\n this.onClose.emit();\n }\n\n openArticle(article: RbHelpArticle) {\n if (article.url) {\n window.open(article.url, '_blank');\n }\n }\n}\n","<div class=\"rb-help-panel\" [class.rb-help-panel--open]=\"isOpen\">\n <div class=\"rb-help-panel__header\">\n <h3 class=\"rb-help-panel__title\">{{ panelTitle }}</h3>\n <button mat-icon-button class=\"rb-help-panel__close\" (click)=\"handleClose()\" aria-label=\"Fechar painel de ajuda\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"rb-help-panel__content\">\n <div class=\"rb-help-panel__search\">\n <div class=\"rb-help-panel__search-wrapper\">\n <svg class=\"rb-help-panel__search-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.9167 9.66667H10.2583L10.025 9.44167C10.8417 8.49167 11.3333 7.25833 11.3333 5.91667C11.3333 2.925 8.90833 0.5 5.91667 0.5C2.925 0.5 0.5 2.925 0.5 5.91667C0.5 8.90833 2.925 11.3333 5.91667 11.3333C7.25833 11.3333 8.49167 10.8417 9.44167 10.025L9.66667 10.2583V10.9167L13.8333 15.075L15.075 13.8333L10.9167 9.66667ZM5.91667 9.66667C3.84167 9.66667 2.16667 7.99167 2.16667 5.91667C2.16667 3.84167 3.84167 2.16667 5.91667 2.16667C7.99167 2.16667 9.66667 3.84167 9.66667 5.91667C9.66667 7.99167 7.99167 9.66667 5.91667 9.66667Z\" fill=\"#666666\"/>\n </svg>\n <input \n type=\"text\" \n placeholder=\"Pesquisar\" \n [ngModel]=\"searchQuery\" \n (ngModelChange)=\"onSearchChange($event)\"\n class=\"rb-help-panel__search-input\"\n >\n </div>\n </div>\n\n <div class=\"rb-help-panel__articles\">\n @if (isLoading) {\n <div class=\"rb-help-panel__loading\">Carregando...</div>\n }\n \n @for (article of articles; track article.id) {\n <div class=\"rb-help-panel__article-item\" (click)=\"openArticle(article)\">\n <span class=\"rb-help-panel__article-title\">{{ article.title }}</span>\n </div>\n }\n\n @if (!isLoading && articles.length === 0) {\n <div class=\"rb-help-panel__no-results\">\n Nenhum artigo encontrado.\n </div>\n }\n </div>\n </div>\n \n <div class=\"rb-help-panel__divider\"></div>\n\n <div class=\"rb-help-panel__footer\">\n <div class=\"rb-help-panel__footer-title\">Ainda com dúvidas?</div>\n \n <div class=\"rb-help-panel__quick-links\">\n <button class=\"rb-help-panel__quick-link-card\" (click)=\"onClickKnowledgeBase.emit()\">\n <div class=\"rb-help-panel__quick-link-icon\">\n <ng-container *ngTemplateOutlet=\"usersIcon\"></ng-container>\n </div>\n <div class=\"rb-help-panel__quick-link-bg\">\n <span>Base de conhecimento</span>\n </div>\n </button>\n \n <button class=\"rb-help-panel__quick-link-card\" (click)=\"onClickCommunity.emit()\">\n <div class=\"rb-help-panel__quick-link-icon\">\n <ng-container *ngTemplateOutlet=\"usersIcon\"></ng-container>\n </div>\n <div class=\"rb-help-panel__quick-link-bg\">\n <span>Comunidade</span>\n </div>\n </button>\n \n <button class=\"rb-help-panel__quick-link-card\" (click)=\"onClickNews.emit()\">\n <div class=\"rb-help-panel__quick-link-icon\">\n <ng-container *ngTemplateOutlet=\"usersIcon\"></ng-container>\n </div>\n <div class=\"rb-help-panel__quick-link-bg\">\n <span>Novidades</span>\n </div>\n </button>\n </div>\n \n <div class=\"rb-help-panel__footer-divider\"></div>\n\n <div class=\"rb-help-panel__actions\">\n <button mat-stroked-button class=\"rb-help-panel__action-btn rb-help-panel__action-btn--outline\" (click)=\"onClickMyTickets.emit()\">\n <mat-icon>person</mat-icon>\n Meus atendimentos\n </button>\n \n <button mat-flat-button class=\"rb-help-panel__action-btn rb-help-panel__action-btn--primary\" (click)=\"onClickChat.emit()\">\n <mat-icon>chat_bubble</mat-icon>\n Chat online\n </button>\n </div>\n </div>\n</div>\n\n@if (isOpen) {\n <div class=\"rb-help-panel__overlay\" (click)=\"handleClose()\"></div>\n}\n\n<ng-template #usersIcon>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- Right user -->\n <circle cx=\"18.5\" cy=\"10\" r=\"2.5\" stroke=\"#FFFFFF\" stroke-width=\"1.5\"/>\n <path d=\"M16 18c0-2.21 1.79-4 4-4h.5c2.21 0 4 1.79 4 4\" stroke=\"#FFFFFF\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <!-- Left user -->\n <circle cx=\"5.5\" cy=\"10\" r=\"2.5\" stroke=\"#FFFFFF\" stroke-width=\"1.5\"/>\n <path d=\"M8 18c0-2.21-1.79-4-4-4H3.5c-2.21 0-4 1.79-4 4\" stroke=\"#FFFFFF\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <!-- Center user -->\n <circle cx=\"12\" cy=\"7\" r=\"3\" fill=\"#3B596A\" stroke=\"#FFFFFF\" stroke-width=\"2\"/>\n <path d=\"M6 18c0-2.76 2.24-5 5-5h2c2.76 0 5 2.24 5 5v1H6v-1z\" fill=\"#3B596A\" stroke=\"#FFFFFF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n</ng-template>\n","/*\n * Public API Surface of rb-angular-components\n */\n\n/* Components */\nexport * from './lib/components/rb-crud/rb-crud.component';\nexport * from './lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component';\nexport * from './lib/components/rb-content-box/rb-content-box.component';\nexport * from './lib/components/rb-dialog/rb-dialog.component';\nexport * from './lib/components/rb-filter-panel/rb-filter-panel.component';\nexport * from './lib/components/rb-filter-dropdown/rb-filter-dropdown.component';\nexport * from './lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component';\nexport * from './lib/components/rb-change-log-dialog/rb-change-log-dialog.component';\nexport * from './lib/components/rb-columns-sort-setting/rb-columns-sort-setting.component';\nexport * from './lib/components/rb-sidebar-navigation/rb-sidebar-navigation.component';\nexport * from './lib/components/rb-header/rb-header.component';\n/* Pipes */\nexport * from './lib/pipes/rb-custom/rb-custom.pipe';\nexport * from './lib/pipes/rb-conditional-class/rb-conditional-class.pipe';\nexport * from './lib/pipes/is-array.pipe';\n\n/* Directives */\nexport * from './lib/directives/rb-dynamic-button/rb-dynamic-button.directive';\nexport * from './lib/directives/rb-overflow-tooltip/rb-overflow-tooltip.directive';\n\n\n/* Interfaces */\nexport * from './lib/interfaces/rb-crud.interface';\nexport * from './lib/interfaces/button.interface';\nexport * from './lib/interfaces/rb-dialog.interface';\nexport * from './lib/interfaces/rb-filter.interface';\nexport * from './lib/interfaces/rb-change-log-dialog.interface';\nexport * from './lib/interfaces/rb-conditional-class.interface';\nexport * from './lib/interfaces/rb-sidebar-navigation.interface';\nexport * from './lib/interfaces/rb-header.interface';\nexport * from './lib/interfaces/rb-help-panel.interface';\nexport * from './lib/components/rb-help-panel/rb-help-panel.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClientFilterService","i2","i8","i1","i3","i2.ClientFilterService","i4","i5","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rubeusteam-rb-angular-components.mjs","sources":["../../../projects/rb-angular-components/src/lib/pipes/rb-custom/rb-custom.pipe.ts","../../../projects/rb-angular-components/src/lib/pipes/rb-conditional-class/rb-conditional-class.pipe.ts","../../../projects/rb-angular-components/src/lib/i18n/paginator-ptbr-intl/paginator-ptbr-intl.service.ts","../../../projects/rb-angular-components/src/lib/services/filter/client-filter.service.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/helpers/resolve-actions.helper.ts","../../../projects/rb-angular-components/src/lib/services/rb-show-index-crud-service/rb-show-index-crud.service.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/rb-crud.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/rb-crud.component.html","../../../projects/rb-angular-components/src/lib/directives/rb-dynamic-button/rb-dynamic-button.directive.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component.html","../../../projects/rb-angular-components/src/lib/components/rb-content-box/rb-content-box.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-content-box/rb-content-box.component.html","../../../projects/rb-angular-components/src/lib/components/rb-dialog/rb-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-dialog/rb-dialog.component.html","../../../projects/rb-angular-components/src/lib/components/rb-filter-dropdown/rb-filter-dropdown.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-filter-dropdown/rb-filter-dropdown.component.html","../../../projects/rb-angular-components/src/lib/components/rb-filter-panel/rb-filter-panel.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-filter-panel/rb-filter-panel.component.html","../../../projects/rb-angular-components/src/lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component.html","../../../projects/rb-angular-components/src/lib/components/rb-change-log-dialog/rb-change-log-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-change-log-dialog/rb-change-log-dialog.component.html","../../../projects/rb-angular-components/src/lib/components/rb-columns-sort-setting/rb-columns-sort-setting.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-columns-sort-setting/rb-columns-sort-setting.component.html","../../../projects/rb-angular-components/src/lib/directives/rb-overflow-tooltip/rb-overflow-tooltip.directive.ts","../../../projects/rb-angular-components/src/lib/components/rb-sidebar-navigation/rb-sidebar-navigation.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-sidebar-navigation/rb-sidebar-navigation.component.html","../../../projects/rb-angular-components/src/lib/components/rb-header/rb-header.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-header/rb-header.component.html","../../../projects/rb-angular-components/src/lib/pipes/is-array.pipe.ts","../../../projects/rb-angular-components/src/lib/interfaces/rb-crud.interface.ts","../../../projects/rb-angular-components/src/lib/interfaces/rb-help-panel.interface.ts","../../../projects/rb-angular-components/src/lib/components/rb-help-panel/rb-help-panel.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-help-panel/rb-help-panel.component.html","../../../projects/rb-angular-components/src/lib/services/rb-zendesk-help/rb-zendesk-help.service.ts","../../../projects/rb-angular-components/src/public-api.ts","../../../projects/rb-angular-components/src/rubeusteam-rb-angular-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'rbCustomPipe',\n standalone: true\n})\nexport class RbCustomPipe implements PipeTransform {\n\n transform(value: any, type: string): any {\n switch (type) {\n case 'date':\n return this.dateTransform(value);\n case 'datetime':\n return this.dateTimeTransform(value);\n case 'currency':\n return this.currencyTransform(value);\n case 'cpf':\n return this.cpfTransform(value);\n case 'cnpj':\n return this.cnpjTransform(value);\n case 'phone':\n return this.phoneTransform(value);\n case 'cep':\n return this.cepTransform(value);\n case 'mask':\n return this.maskTransform(value);\n case 'relativeTime':\n return this.relativeTimeTransform(value);\n case 'lastModifiedBy':\n return this.lastModifiedTransform(value);\n default:\n return value;\n }\n }\n\n dateTransform(value: any, format?: string): any {\n if (!value || typeof value !== 'string') return '';\n const isoString = value.includes(' ')\n ? value.replace(' ', 'T')\n : `${value}T00:00:00`;\n const date = new Date(isoString);\n if (isNaN(date.getTime())) return '';\n return date.toLocaleDateString('pt-BR', {\n timeZone: 'America/Sao_Paulo'\n });\n }\n\n private dateTimeTransform(value: any): string {\n if (!value || typeof value !== 'string') return '';\n\n const isoString = value.includes(' ')\n ? value.replace(' ', 'T')\n : `${value}T00:00:00`;\n const date = new Date(isoString);\n \n if (isNaN(date.getTime())) return '';\n\n const datePart = new Intl.DateTimeFormat('pt-BR', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: 'America/Sao_Paulo'\n }).format(date);\n\n const timePart = new Intl.DateTimeFormat('pt-BR', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n timeZone: 'America/Sao_Paulo'\n }).format(date);\n\n return `${datePart} às ${timePart}`;\n }\n\n\n currencyTransform(value: any): any {\n if (!value) return '';\n return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value);\n }\n\n cpfTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{3})(\\d{3})(\\d{3})(\\d{2})/, \"$1.$2.$3-$4\");\n }\n\n cnpjTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})/, \"$1.$2.$3/$4-$5\");\n }\n\n phoneTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{2})(\\d{5})(\\d{4})/, \"($1) $2-$3\");\n }\n\n cepTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{5})(\\d{3})/, \"$1-$2\");\n }\n\n maskTransform(value: any): any {\n if (!value) return '';\n return '*'.repeat(value.toString().length);\n }\n\n relativeTimeTransform(value: any): any {\n if (!value) return '';\n const date = new Date(value);\n const now = new Date();\n const diff = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n switch (true) {\n case diff < 60:\n return `${diff} segundos atrás`;\n case diff < 3600:\n return `${Math.floor(diff / 60)} minutos atrás`;\n case diff < 86400:\n return `${Math.floor(diff / 3600)} horas atrás`;\n case diff < 2592000:\n return `${Math.floor(diff / 86400)} dias atrás`;\n case diff < 31536000:\n return `${Math.floor(diff / 2592000)} meses atrás`;\n default:\n return `${Math.floor(diff / 31536000)} anos atrás`;\n }\n }\n\n lastModifiedTransform(value: { date: string; author: string }): string {\n if (!value || !value.date) return '';\n const formattedDate = new Intl.DateTimeFormat('pt-BR', {\n dateStyle: 'short',\n // timeStyle: 'short',\n timeZone: 'America/Sao_Paulo'\n }).format(new Date(value.date));\n if(!value.author) {\n return `${formattedDate}`;\n }\n return `${formattedDate} por ${value.author}`;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ConditionalClasses, ConditionalClassesObj } from '../../interfaces/rb-conditional-class.interface';\n\n@Pipe({\n name: 'rbConditionalClass',\n standalone: true,\n pure: true\n})\nexport class RbConditionalClassPipe implements PipeTransform {\n\n transform(cellValue: any, columnKey: string, rules: ConditionalClasses[]): string {\n const config = rules.find(r => r.key === columnKey);\n if (!config || !Array.isArray(config.conditions)) return '';\n\n return config.conditions\n .filter(condition => this.evaluateCondition(cellValue, condition))\n .map(condition => condition.class)\n .join(' ');\n }\n\n private evaluateCondition(value: any, condition: ConditionalClassesObj): boolean {\n const { operator, value: expected } = condition;\n\n switch (operator) {\n case '==': return value == expected;\n case '===': return value === expected;\n case '!=': return value != expected;\n case '!==': return value !== expected;\n case '<': return value < expected;\n case '>': return value > expected;\n case '<=': return value <= expected;\n case '>=': return value >= expected;\n default:\n console.warn(`Operador '${operator}' não suportado.`);\n return false;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginatorPtbrIntlService extends MatPaginatorIntl{\n override itemsPerPageLabel = 'Itens por página:';\n override nextPageLabel = 'Próxima';\n override previousPageLabel = 'Anterior';\n override firstPageLabel = 'Primeira página';\n override lastPageLabel = 'Última página';\n\n override getRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length === 0 || pageSize === 0) {\n return `Página 0 de 0`;\n }\n\n const totalPages = Math.ceil(length / pageSize);\n const currentPage = page + 1;\n\n return `Página ${currentPage} de ${totalPages}`;\n };\n\n // override getRangeLabel = (page: number, pageSize: number, length: number) => {\n // if (length === 0 || pageSize === 0) {\n // return `Página 0 de 0`;\n // }\n\n // const totalPages = Math.ceil(length / pageSize);\n // const currentPage = page + 1;\n\n // const startIndex = page * pageSize + 1;\n // const endIndex = Math.min((page + 1) * pageSize, length);\n\n // return `Página ${currentPage} de ${totalPages} (${startIndex} a ${endIndex} de ${length})`;\n // };\n\n}\n","import { Injectable, signal, Signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClientFilterService {\n\n private searchText = signal<string>('');\n\n setSearchText(text: string): void {\n this.searchText.set(this.normalizeText(text));\n }\n\n public normalizeText(text: string): string {\n return text\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .trim();\n }\n\n getSearchText(): Signal<string> {\n return this.searchText;\n }\n}\n\n","import { ButtonSettings } from '../../../interfaces/button.interface';\n\nexport type RowWithResolvedActions<T> = T & {\n resolvedActions: ButtonSettings[];\n};\n\nexport function resolveActionsForRow<T extends Record<string, any>>(\n row: T,\n actionsMenu: ButtonSettings[]\n): RowWithResolvedActions<T> {\n const resolvedActions = actionsMenu.map(action => {\n const match = action.conditionalSettings?.find(\n s => row[s.key] === s.expectedValue\n );\n\n return {\n ...action,\n label: match?.label ?? action.label,\n icon: match?.icon ?? action.icon,\n disabled: match?.disabled ?? action.disabled,\n visible: match?.visible ?? action.visible\n };\n });\n\n return {\n ...row,\n resolvedActions\n };\n}\n\nexport function resolveActionsForData<T extends Record<string, any>>(\n data: T[],\n actionsMenu: ButtonSettings[]\n): RowWithResolvedActions<T>[] {\n return data.map(row => resolveActionsForRow(row, actionsMenu));\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RbShowIndexCrudService {\n\n showIndex = signal(false);\n\n setShowIndex(value: boolean) {\n this.showIndex.set(value);\n }\n\n toggle() {\n this.showIndex.update(value => !value);\n }\n}\n","import { Component, Input, Output, EventEmitter, AfterViewInit, OnChanges, ViewChild, effect, Signal, ElementRef, Renderer2, inject } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatPaginatorModule, MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule, MatSort } from '@angular/material/sort';\nimport { CommonModule } from '@angular/common';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RbCustomPipe } from '../../pipes/rb-custom/rb-custom.pipe';\nimport { RbConditionalClassPipe } from '../../pipes/rb-conditional-class/rb-conditional-class.pipe';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { PaginatorPtbrIntlService } from '../../i18n/paginator-ptbr-intl/paginator-ptbr-intl.service';\nimport { ClientFilterService } from '../../services/filter/client-filter.service';\nimport { CrudColumn, CrudActionEvent } from '../../interfaces/rb-crud.interface';\nimport { ConditionalClasses } from '../../interfaces/rb-conditional-class.interface';\nimport { ButtonSettings, RbEncapsulatedButton } from '../../interfaces/button.interface';\nimport { RowWithResolvedActions, resolveActionsForRow } from './helpers/resolve-actions.helper';\nimport { RbShowIndexCrudService } from '../../services/rb-show-index-crud-service/rb-show-index-crud.service';\n\n@Component({\n selector: 'rb-crud',\n templateUrl: './rb-crud.component.html',\n styleUrl: './rb-crud.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n MatTableModule,\n MatMenuModule,\n MatInputModule,\n MatPaginatorModule,\n MatSortModule,\n MatIconModule,\n MatButtonModule,\n RbCustomPipe,\n RbConditionalClassPipe,\n ],\n providers: [\n { provide: MatPaginatorIntl, useClass: PaginatorPtbrIntlService },\n ClientFilterService\n ]\n})\nexport class RbCrudComponent implements AfterViewInit, OnChanges {\n @Input() columns: CrudColumn[] = [];\n @Input() data: any[] = [];\n @Input() actionsMenu: RbEncapsulatedButton[] = [];\n @Input() conditionalClasses: ConditionalClasses[] = [];\n @Input() pagination: boolean = true;\n @Input() pageSize: number = 10;\n @Input() infiniteScroll: boolean = false;\n @Input() textLineBreakable: boolean = false;\n @Input() emptyMessageTherm: string = '';\n @Input() emptyMessageSentence: string = 'um novo cadastro';\n @Input() emptyLinkAction: string = '';\n\n private showIndexService = inject(RbShowIndexCrudService);\n showIndex = this.showIndexService.showIndex;\n\n\n @Output() actionClick = new EventEmitter<CrudActionEvent>();\n // @Output() filterChange = new EventEmitter<any>();\n @Output() pageChange = new EventEmitter<PageEvent>();\n\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n @ViewChild('rbTableContainer', { static: true }) rbTableContainer!: ElementRef;\n\n displayedColumns: string[] = [];\n dataSource!: MatTableDataSource<RowWithResolvedActions<any>>;\n filterText: Signal<string>;\n isOverflowing = false;\n displayedActionsMenu: RbEncapsulatedButton[] = [];\n selectedRow: any = null;\n\n\n renderingProgressive = false;\n private readonly THRESHOLD = 200;\n protected searchTherm: string = '';\n\n constructor(\n private clientFilterService: ClientFilterService,\n private renderer: Renderer2\n ) {\n console.time('constructor');\n this.dataSource = new MatTableDataSource(this.data);\n this.filterText = this.clientFilterService.getSearchText();\n effect(() => {\n this.applyFilter();\n });\n }\n\n ngAfterViewInit() {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n this.defineSortRule();\n this.checkOverflow();\n window.addEventListener('resize', () => this.checkOverflow());\n\n }\n\n checkOverflow() {\n const el = this.rbTableContainer.nativeElement;\n const isOverflowing = el.scrollWidth > el.clientWidth;\n this.isOverflowing = isOverflowing;\n if (isOverflowing) {\n this.renderer.addClass(el, 'is-overflowing');\n } else {\n this.renderer.removeClass(el, 'is-overflowing');\n }\n }\n\n resolvePropertyValue(fn: Function | boolean | undefined, row: any, defaultValue: boolean = true): any {\n if (fn === undefined) {\n return defaultValue;\n }\n if (typeof fn === 'function') {\n return fn(row);\n }\n return fn;\n }\n \n\n ngOnChanges(): void {\n console.time('onchanges');\n console.timeEnd('constructor');\n this.displayedColumns = this.columns.map(col => col.key);\n if (this.actionsMenu.length) {\n this.displayedColumns.push('actions');\n }\n\n // this.dataSource = new MatTableDataSource(this.data);\n\n this.dataSource.data = this.data;\n\n if (this.paginator) {\n this.dataSource.paginator = this.paginator;\n }\n if (this.sort) {\n this.dataSource.sort = this.sort;\n }\n }\n\n\n renderFirstPage(processedData: RowWithResolvedActions<any>[]): void {\n const firstPage = processedData.slice(0, this.pageSize);\n this.dataSource.data = firstPage;\n }\n\n loadFullData(processedData: RowWithResolvedActions<any>[]): void {\n this.dataSource.data = processedData;\n this.renderingProgressive = false;\n }\n\n defineSortRule() {\n this.dataSource.sortingDataAccessor = (item, property) => {\n if (item[property]?.date) {\n return new Date(item[property]?.date || 0).getTime();\n }\n return item[property];\n };\n }\n\n onActionClick(action: ButtonSettings, row: any): void {\n this.actionClick.emit({ action: action.action, row });\n }\n\n onClickCell(action: string, row: any): void {\n this.actionClick.emit({ action: action, row });\n }\n\n onClickLink() {\n this.actionClick.emit({ action: this.emptyLinkAction });\n }\n\n\n applyFilter() {\n this.dataSource.filterPredicate = (data: any, filter: string): boolean => {\n const accumulator = (currentTerm: string, key: string): string => {\n const value = data[key];\n return currentTerm + ' ' + (typeof value === 'string' ? this.clientFilterService.normalizeText(value) : '');\n };\n\n const dataStr = Object.keys(data).reduce(accumulator, '').trim();\n this.searchTherm = filter;\n return dataStr.includes(this.clientFilterService.normalizeText(filter));\n };\n\n this.dataSource.filter = this.filterText();\n }\n\n openMenu(row: any): void {\n this.selectedRow = row;\n this.displayedActionsMenu = resolveActionsForRow(row, this.actionsMenu).resolvedActions;\n }\n\n setSearchText(text: string): void {\n this.clientFilterService.setSearchText(text);\n }\n\n}\n","<div class=\"rb-crud-container\">\n <!-- @if (dataSource?.filteredData?.length) { -->\n <div #rbTableContainer class=\"rb-table-container\"\n [style.display]=\"dataSource?.filteredData?.length ? 'block' : 'none'\">\n <table mat-table [dataSource]=\"dataSource\" matSort class=\"rb-table\">\n <!-- Colunas Dinâmicas -->\n @for (column of columns; track column.key; let i = $index) {\n <ng-container [matColumnDef]=\"column.key\">\n @if(column.sortable === false) {\n <th mat-header-cell *matHeaderCellDef>\n {{ column.label }}\n </th>\n } @else {\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.label }}\n </th>\n }\n <td mat-cell *matCellDef=\"let row; let il = index\"\n [class.rb-clickable-cell]=\"column.action\"\n [class.rb-break-line-cell]=\"textLineBreakable\"\n (click)=\"column.action ? onClickCell(column.action, row) : null\"\n title=\"{{ column.pipe ? (row[column.key] | rbCustomPipe:column.pipe) : row[column.key] }}\"\n [class]=\"row[column.conditionalClassKey || column.key] | rbConditionalClass:(column.conditionalClassKey || column.key):conditionalClasses\"\n >\n <!-- Terminar de implementar quando for decidido como ficará quando a informação for em array de objetos.\n Não deixar como primeira condição, para evitar processamento desnecessário no pipe isArray\n @if (column.objCol?.label && (row[column.key] | isArray) && row[column.key].length){\n @for (item of row[column.key]; track $index) {\n <span>{{ item[column.objCol?.label || 'label'] }}</span>\n }\n } @else if -->\n @if(i===0 && showIndex()) {\n <span class=\"rb-crud-float-index\">{{il+1}}</span>\n }\n @if (column.pipe) {\n {{ row[column.key] | rbCustomPipe:column.pipe }}\n } @else {\n {{ row[column.key] }}\n }\n </td>\n </ng-container>\n }\n\n <!-- Coluna de Ações -->\n @if (actionsMenu.length) {\n <ng-container matColumnDef=\"actions\" stickyEnd class=\"sticky-column\">\n <th mat-header-cell *matHeaderCellDef> Ações </th>\n <td mat-cell *matCellDef=\"let row; let il = index\" class=\"rb-crud-actions-col\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"actionsMenuRef\"\n (menuOpened)=\"openMenu(row)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </td>\n </ng-container>\n }\n\n\n <!-- Cabeçalho e Corpo da Tabela -->\n <thead>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n </thead>\n <tbody>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </tbody>\n </table>\n\n <!-- Menu de Ações -->\n <mat-menu #actionsMenuRef=\"matMenu\" class=\"rb-menu-crud\">\n @for (action of displayedActionsMenu; track action.label) {\n @if (resolvePropertyValue(action.visible, selectedRow)) {\n @if (action.hasDivider) {\n <hr>\n }\n\n <button\n mat-menu-item\n (click)=\"onActionClick(action, selectedRow)\"\n [title]=\"action.label\"\n [attr.aria-label]=\"action.label\"\n [attr.color]=\"action.color\"\n [disabled]=\"resolvePropertyValue(action.disabled, selectedRow, false)\"\n [ngClass]=\"action.class\">\n\n @if (action.icon) {\n <mat-icon>{{ action.icon }}</mat-icon>\n }\n\n {{ action.label }}\n\n </button>\n }\n }\n </mat-menu>\n\n </div>\n <!-- } -->\n\n <!-- @if (!dataSource?.filteredData?.length) { -->\n <div class=\"empty-message\" [style.display]=\"dataSource?.filteredData?.length ? 'none' : 'block'\">\n <h2>Nenhum registro {{emptyMessageTherm ? 'de ' + emptyMessageTherm : ''}} encontrado\n @if(searchTherm.length) {\n para o termo \"{{searchTherm}}\"\n }\n </h2>\n <p>Experimente <span (click)=\"onClickLink()\">adicionar {{emptyMessageSentence}}</span>.</p>\n </div>\n <!-- } -->\n</div>\n\n<!-- Paginação -->\n<!-- @if (pagination && dataSource?.filteredData?.length) { -->\n <mat-paginator #paginator\n [style.display]=\"dataSource?.filteredData?.length ? 'block' : 'none'\"\n class=\"rb-paginator\"\n [pageSize]=\"pageSize\"\n (page)=\"pageChange.emit($event)\"\n [showFirstLastButtons]=\"true\"\n [pageSizeOptions]=\"[10,25,50,100]\"\n aria-label=\"Selecione a página\">\n </mat-paginator>\n<!-- } -->\n","import { Directive, Input, ElementRef, Renderer2, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[rbDynamicButton]'\n})\nexport class RbDynamicButtonDirective implements OnChanges {\n @Input('rbDynamicButton') set buttonType(value: string | null) {\n const validTypes = ['float', 'confirm', 'cancel', 'menuTrigger'] as const;\n this._buttonType = validTypes.includes(value as any) ? (value as any) : null;\n }\n private _buttonType: 'float' | 'confirm' | 'cancel' | 'menuTrigger' | null = null;\n\n buttonTypes: Record<string, { directive: string; classes: string[] }> = {\n float: {\n directive: 'mat-raised-button',\n classes: ['mdc-button--raised', 'mat-mdc-raised-button']\n },\n confirm: {\n directive: 'mat-flat-button',\n classes: ['mdc-button--unelevated', 'mat-mdc-unelevated-button']\n },\n cancel: {\n directive: 'mat-stroked-button',\n classes: ['mdc-button--outlined', 'mat-mdc-outlined-button']\n },\n menuTrigger: {\n directive: 'mat-icon-button',\n classes: ['mdc-icon-button', 'mat-mdc-icon-button']\n }\n };\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['buttonType']?.currentValue) {\n this.renderButtons(this._buttonType || '');\n }\n }\n\n private renderButtons(key: string) {\n if (key?.trim() && typeof this.buttonTypes[key] === 'object') {\n this.renderer.setAttribute(this.el.nativeElement, this.buttonTypes[key].directive, '');\n this.buttonTypes[key].classes.forEach(cls => this.renderer.addClass(this.el.nativeElement, cls));\n }\n }\n\n}\n\n","import { Component, Input, Output, signal, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { ButtonSettings, ButtonActionEvent, RbEncapsulatedButton } from '../../interfaces/button.interface';\nimport { RbCrudComponent } from '../rb-crud/rb-crud.component';\n\n@Component({\n selector: 'rb-crud-tool-bar',\n standalone: true,\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n RbDynamicButtonDirective,\n ],\n templateUrl: './rb-crud-tool-bar.component.html',\n styleUrl: './rb-crud-tool-bar.component.scss',\n})\nexport class RbCrudToolBarComponent {\n @Input() targetCrud?: RbCrudComponent;\n @Input() searchPlaceholder: string = 'Digite para pesquisar...';\n @Input() buttonSettings: RbEncapsulatedButton[] = [];\n @Input() iconButton: string = 'add';\n @Input() titleButton: string = 'Adicionar';\n @Input() leftButtonSettings: RbEncapsulatedButton[] = [];\n @Output() buttonClick = new EventEmitter<ButtonActionEvent>();\n\n searchText = signal<string>('');\n\n constructor() {}\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText.set(value);\n if (this.targetCrud) {\n this.targetCrud.setSearchText(value);\n }\n }\n\n onClickButton(action: ButtonSettings) {\n this.buttonClick.emit(action);\n }\n\n}\n","<div class=\"rb-crud-tool-bar-container\">\n <div class=\"rb-flex-line-space-between\">\n <div class=\"rb-flex-align-items-center\">\n @for (btn of buttonSettings; track btn.label) {\n <button mat-button\n title=\"{{btn.label}}\"\n class=\"{{btn.color}}\"\n color=\"{{btn.color}}\"\n [attr.aria-label]=\"btn.label\"\n [rbDynamicButton]=\"btn.directive || null\"\n (click)=\"onClickButton(btn)\">\n @if (btn.icon) {\n <mat-icon>{{ btn.icon }}</mat-icon>\n }\n {{ btn.label }}\n </button>\n }\n </div>\n\n <div class=\"rb-search-box rb-flex-align-items-center\">\n <mat-form-field class=\"rb-search-field\">\n <mat-label>Pesquisar</mat-label>\n <input\n matInput\n [value]=\"searchText()\"\n (input)=\"onSearchChange($event)\"\n placeholder={{searchPlaceholder}}\n />\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n @for (btn of leftButtonSettings; track btn.label) {\n <button mat-button\n title=\"{{btn.label}}\"\n class=\"{{btn.color}}\"\n color=\"{{btn.color}}\"\n [attr.aria-label]=\"btn.label\"\n [attr.id]=\"btn.selector\"\n [rbDynamicButton]=\"btn.directive || null\"\n (click)=\"onClickButton(btn)\">\n @if (btn.icon) {\n <mat-icon>{{ btn.icon }}</mat-icon>\n }\n {{ btn.label }}\n </button>\n }\n </div>\n </div>\n</div>\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rb-content-box',\n imports: [],\n templateUrl: './rb-content-box.component.html',\n styleUrl: './rb-content-box.component.scss'\n})\nexport class RbContentBoxComponent {\n\n}\n","<div class=\"rb-content-box\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbDialog } from '../../interfaces/rb-dialog.interface';\n\n@Component({\n selector: 'rb-dialog',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-dialog.component.html',\n styleUrl: './rb-dialog.component.scss'\n})\nexport class RbDialogComponent {\n readonly data = inject<RbDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbDialogComponent>);\n\n onClickButton(action: string) {\n console.log('action', action);\n this.dialogRef.close(action);\n }\n\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>{{data.title}}</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\" >\n @if (data.isMultipleContent) {\n @for (item of data.multipleContent; track $index) {\n @if (item.subtitle) {\n <h3 class=\"rb-font-heading rb-h5\">{{item.subtitle}}</h3>\n }\n @if (item.paragraph) {\n <p class=\"rb-font-body rb-large\">{{item.paragraph}}</p>\n }\n }\n } @else {\n <h3 class=\"rb-font-heading rb-h5\">{{data.subtitle}}</h3>\n <p class=\"rb-font-body rb-large\">{{data.content}}</p>\n }\n </mat-dialog-content>\n\n <!-- Ações -->\n @if (data.buttons?.length) {\n <mat-dialog-actions class=\"rb-dialog-actions\" [align]=\"data.actionsAlign || 'end'\">\n @for (button of data.buttons; track $index) {\n <button mat-button\n title=\"{{button.label}}\"\n class=\"{{button.color}}\"\n [color]=\"button.color\"\n [attr.aria-label]=\"button.label\"\n [rbDynamicButton]=\"button.directive || null\"\n (click)=\"onClickButton(button.action)\">\n @if (button.icon && button.iconPosition === 'start') {\n <mat-icon>{{button.icon}}</mat-icon>\n }\n {{button.label}}\n @if (button.icon && button.iconPosition === 'end') {\n <mat-icon>{{button.icon}}</mat-icon>\n }\n </button>\n }\n </mat-dialog-actions>\n }\n</div>\n","import { Component, TemplateRef, ViewChild, ViewContainerRef, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule, OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { ClientFilterService } from '../../services/filter/client-filter.service';\nimport { FilterOption } from '../../interfaces/rb-filter.interface';\n\n\n@Component({\n selector: 'rb-filter-dropdown',\n imports: [CommonModule, OverlayModule, PortalModule, MatIconModule, MatInputModule],\n templateUrl: './rb-filter-dropdown.component.html',\n styleUrl: './rb-filter-dropdown.component.scss',\n standalone: true,\n})\nexport class RbFilterDropdownComponent {\n @Input() parentSelectorId: string = '#parentDropdownSelector';\n @Input() options: FilterOption[] = [];\n\n @ViewChild('filterMenu') filterMenu!: TemplateRef<any>;\n private overlayRef: OverlayRef | null = null;\n trackByFn = (index: number, item: string) => index;\n\n searchText = signal<string>('');\n\n constructor(\n private overlay: Overlay,\n private clientFilterService: ClientFilterService,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText.set(value);\n this.clientFilterService.setSearchText(value);\n }\n\n public openMenu() {\n if (this.overlayRef) {\n this.closeMenu();\n return;\n }\n\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(\n document.querySelector(this.parentSelectorId || 'button')!\n )\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const portal = new TemplatePortal(this.filterMenu, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.overlayRef.backdropClick().subscribe(() => this.closeMenu());\n }\n\n closeMenu() {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n onSelectItem(item: FilterOption) {\n console.log('Selected item:', item);\n // this.filterItems = this.options.filter((item) => item.includes(this.searchText()));\n // this.clientFilterService.setFilterItems(this.filterItems);\n }\n\n}\n","<ng-template #filterMenu>\n <div class=\"rb-filter-dropdown\">\n <div class=\"rb-filter-dropdown-header\">\n <h5>Adicionar Filtro</h5>\n <button mat-icon-button aria-label=\"Fechar diálogo\" (click)=\"closeMenu()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"rb-filter-dropdown-body\">\n <div class=\"rb-filter-seach-bar\">\n <mat-form-field class=\"rb-search-field\">\n <mat-label>Pesquisar</mat-label>\n <input\n matInput\n [value]=\"searchText()\"\n (input)=\"onSearchChange($event)\"\n placeholder=\"Pesquisar\"\n />\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n </div>\n <div class=\"rb-filter-dropdown-body-items\">\n <pre>{{options | json}}</pre>\n @if (options && options.length) {\n @for (item of options; track trackByFn) {\n <div\n class=\"rb-filter-dropdown-item\"\n (click)=\"onSelectItem(item)\"\n >\n <!-- <mat-checkbox\n [checked]=\"isSelected(item)\"\n (change)=\"onSelectItem(item, $event)\"\n >\n {{ item.label }}\n </mat-checkbox> -->\n </div>\n }\n } @else {\n <div class=\"rb-filter-dropdown-item\">\n Nenhum item encontrado\n <!-- <mat-checkbox disabled>\n <span class=\"rb-filter-dropdown-item-disabled\">\n Nenhum item encontrado\n </span>\n </mat-checkbox> -->\n </div>\n }\n </div>\n\n <!-- <div class=\"rb-filter-dropdown-body-items\">\n <div\n *ngFor=\"let item of filterItems; trackBy: trackByFn\"\n class=\"rb-filter-dropdown-item\"\n (click)=\"onSelectItem(item)\"\n >\n <mat-checkbox\n [checked]=\"isSelected(item)\"\n (change)=\"onSelectItem(item, $event)\"\n >\n {{ item.label }}\n </mat-checkbox>\n </div>\n <div\n *ngIf=\"!filterItems?.length\"\n class=\"rb-filter-dropdown-item\">\n <mat-checkbox disabled>\n <span class=\"rb-filter-dropdown-item-disabled\">\n Nenhum item encontrado\n </span>\n </mat-checkbox>\n </div>\n </div> -->\n </div>\n </div>\n</ng-template>\n","import { Component, ViewChild, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbFilterDropdownComponent } from '../rb-filter-dropdown/rb-filter-dropdown.component';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { FilterPannelData } from '../../interfaces/rb-filter.interface';\n\n@Component({\n selector: 'rb-filter-panel',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbFilterDropdownComponent, RbDynamicButtonDirective],\n templateUrl: './rb-filter-panel.component.html',\n styleUrl: './rb-filter-panel.component.scss'\n})\nexport class RbFilterPanelComponent {\n @ViewChild(RbFilterDropdownComponent) dropdown!: RbFilterDropdownComponent;\n data = inject<FilterPannelData>(MAT_DIALOG_DATA);\n\n constructor() {}\n\n applyFilter() {\n console.log('applyFilter');\n }\n\n openMenu(): void {\n this.dropdown.openMenu();\n }\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>Filtro</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\" >\n <div class=\"rb-row rb-row rb-flex-row rb-align-items-start rb-justify-content-start\">\n <button mat-button id=\"parentDropdownSelector\"\n title=\"Filtrar\"\n class=\"primary\"\n aria-label=\"Filtrar\"\n [rbDynamicButton]=\"null\"\n (click)=\"openMenu()\">\n <mat-icon>add</mat-icon>\n Adicionar nova condição\n </button>\n <rb-filter-dropdown\n [parentSelectorId]=\"'#parentDropdownSelector'\"\n [options]=\"data.filterOptions\"></rb-filter-dropdown>\n\n </div>\n </mat-dialog-content>\n\n <!-- Ações -->\n <mat-dialog-actions class=\"rb-dialog-actions\" align=\"end\">\n <button mat-button\n title=\"Filtrar\"\n class=\"primary\"\n aria-label=\"Filtrar\"\n [rbDynamicButton]=\"'confirm'\"\n (click)=\"applyFilter()\">\n Filtrar\n </button>\n </mat-dialog-actions>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbDialog } from '../../interfaces/rb-dialog.interface';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\n\n@Component({\n selector: 'lib-rb-copy-confirm-dialog',\n imports: [MatDialogModule, MatButtonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-copy-confirm-dialog.component.html',\n styleUrl: './rb-copy-confirm-dialog.component.scss'\n})\nexport class RbCopyConfirmDialogComponent {\n\n readonly data = inject<RbDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbCopyConfirmDialogComponent>);\n formGroup: FormGroup;\n\n constructor(private fb: FormBuilder) {\n this.formGroup = this.fb.group({\n fieldValue: [this.data?.fieldValueDafault, Validators.required]\n });\n }\n\n confirm() {\n this.dialogRef.close(this.formGroup.value);\n }\n\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>{{data.title}}</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <form (submit)=\"confirm()\" [formGroup]=\"formGroup\">\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\">\n <mat-form-field appearance=\"fill\" class=\"rb-form-field width-100\">\n <mat-label>{{data.labelField}}</mat-label>\n <input matInput autofocus\n type=\"text\"\n [attr.aria-label]=\"data.labelField\"\n formControlName=\"fieldValue\"\n required>\n @if (formGroup.controls['fieldValue'].hasError('required')) {\n <mat-error >\n Campo obrigatório\n </mat-error>\n }\n </mat-form-field>\n\n </mat-dialog-content>\n\n <!-- Ações -->\n <mat-dialog-actions class=\"rb-dialog-actions\" [align]=\"data.actionsAlign || 'end'\">\n <button mat-button mat-dialog-close\n title=\"Cancelar\"\n aria-label=\"Cancelar\"\n class=\"secondary\"\n color=\"accent\"\n [attr.aria-label]=\"'Cancelar ação' + (data.labelConfirmButton || 'duplicar' ).toLowerCase()\"\n type=\"button\"\n [rbDynamicButton]=\"'cancel'\">\n Cancelar\n </button>\n <button mat-button\n title=\"{{data.labelConfirmButton || 'Duplicar'}}\"\n [attr.aria-label]=\"data.labelConfirmButton || 'Duplicar'\"\n class=\"primary\"\n [color]=\"'primary'\"\n [attr.aria-label]=\"(data.labelConfirmButton || 'Duplicar' ) + data.labelField\"\n [rbDynamicButton]=\"'confirm'\"\n type=\"submit\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"confirm()\">\n {{ data.labelConfirmButton || 'Duplicar' }}\n </button>\n </mat-dialog-actions>\n </form>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbChangeLogDialog } from '../../interfaces/rb-change-log-dialog.interface';\nimport { RbCrudComponent } from '../rb-crud/rb-crud.component';\n\n@Component({\n selector: 'rb-rb-change-log-dialog',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbCrudComponent],\n templateUrl: './rb-change-log-dialog.component.html',\n styleUrl: './rb-change-log-dialog.component.scss',\n})\nexport class RbChangeLogDialogComponent {\n readonly data = inject<RbChangeLogDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbChangeLogDialogComponent>);\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>Histórico de alterações</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content bg-white has-crud\" >\n <rb-crud\n [columns]=\"data.columns\"\n [data]=\"data.dataSource\"\n [pagination]=\"false\"\n [textLineBreakable]=\"true\"\n ></rb-crud>\n </mat-dialog-content>\n</div>\n\n","import { Component, TemplateRef, ViewChild, ViewContainerRef, Input, signal, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule, OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport {CdkDragDrop, CdkDrag, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\nimport { CrudColumn } from '../../interfaces/rb-crud.interface';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbShowIndexCrudService } from '../../services/rb-show-index-crud-service/rb-show-index-crud.service';\n\n@Component({\n selector: 'rb-columns-sort-setting',\n imports: [CommonModule, OverlayModule, MatIconModule, MatButtonModule, CdkDropList, CdkDrag, RbDynamicButtonDirective],\n templateUrl: './rb-columns-sort-setting.component.html',\n styleUrl: './rb-columns-sort-setting.component.scss',\n standalone: true,\n})\nexport class RbColumnsSortSettingComponent {\n @Input() parentSelectorId: string = '#parentDropdownColumnSettingsSelector';\n @Input() columns: Array<CrudColumn> = [];\n @Input() offsetX: number = 0;\n @Input() offsetY: number = 0;\n @Input() showIndex: boolean = false;\n @ViewChild('columnsSettingContainer') columnsSettingContainer!: TemplateRef<any>;\n @Output() columnsChange = new EventEmitter<any[]>();\n private showIndexService = inject(RbShowIndexCrudService);\n\n private overlayRef: OverlayRef | null = null;\n\n protected editableColumns: Array<CrudColumn> = [];\n protected backupColumns: Array<CrudColumn> = [];\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private cdr: ChangeDetectorRef\n ) {\n }\n\n public openMenu(): void {\n if (this.overlayRef) {\n this.closeMenu();\n return;\n }\n\n this.editableColumns = structuredClone(this.columns);\n this.backupColumns = structuredClone(this.columns);\n\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(\n document.querySelector(this.parentSelectorId || 'button')!\n )\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const portal = new TemplatePortal(this.columnsSettingContainer, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.overlayRef.backdropClick().subscribe(() => this.closeMenu());\n }\n\n restore(): void {\n this.editableColumns = structuredClone(this.backupColumns);\n this.cdr.detectChanges();\n }\n\n save(): void {\n this.columnsChange.emit([...this.editableColumns]);\n this.closeMenu();\n }\n\n closeMenu(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n drop(event: CdkDragDrop<string[]>): void {\n moveItemInArray(this.editableColumns, event.previousIndex, event.currentIndex);\n }\n\n showColumn(item: CrudColumn): void {\n item.hidden = item.hidden ? false : true;\n }\n\n showIndexControl(): void {\n this.showIndex = this.showIndex ? false : true;\n this.showIndexService.setShowIndex(this.showIndex);\n }\n\n}\n","<ng-template #columnsSettingContainer>\n <div class=\"rb-pannel-dropdown\">\n <div class=\"rb-pannel-dropdown-header\">\n <h5>Colunas</h5>\n <button mat-icon-button aria-label=\"Fechar diálogo\" (click)=\"closeMenu()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"rb-pannel-dropdown-body\">\n <div cdkDropList class=\"rb-pannel-drop-list\" (cdkDropListDropped)=\"drop($event)\">\n @for (item of editableColumns; track item) {\n <div class=\"rb-pannel-drop-item\" cdkDrag [cdkDragDisabled]=\"item.hidden\">\n <div class=\"rb-pannel-drop-content\" >\n <mat-icon class=\"rb-pannel-drop-item-icon\">drag_indicator</mat-icon>\n <div class=\"rb-pannel-drop-item-label\">\n {{ item.label }}\n </div>\n <button mat-icon-button aria-label=\"Exibir coluna\" (click)=\"showColumn(item)\" [disabled]=\"item.blocked\">\n <mat-icon>{{item.hidden ? 'visibility_off' : 'visibility'}}</mat-icon>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"rb-pannel-dropdown-footer\">\n <button mat-button\n title=\"Índices\"\n class=\"primary\"\n aria-label=\"Índices\"\n [rbDynamicButton]=\"null\"\n (click)=\"showIndexControl()\">\n Índices\n </button>\n <div class=\"rb-pannel-dropdown-footer-right\">\n <button mat-button\n title=\"Restaurar\"\n class=\"primary\"\n aria-label=\"Restaurar\"\n [rbDynamicButton]=\"'cancel'\"\n (click)=\"restore()\">\n Restaurar\n </button>\n <button mat-button\n title=\"Aplicar\"\n class=\"primary\"\n aria-label=\"Aplicar\"\n [rbDynamicButton]=\"'confirm'\"\n (click)=\"save()\">\n Aplicar\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n","import { AfterViewInit, Directive, ElementRef, inject, Input, OnDestroy } from '@angular/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Directive({\n selector: '[rbOverflowTooltip]',\n standalone: true,\n host: {\n '(mouseenter)': 'updateTooltip()',\n '(focusin)': 'updateTooltip()'\n }\n})\nexport class RbOverflowTooltipDirective implements AfterViewInit, OnDestroy {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tooltip = inject(MatTooltip);\n private resizeObserver?: ResizeObserver;\n private mutationObserver?: MutationObserver;\n\n @Input() rbOverflowTooltip = '';\n\n ngAfterViewInit(): void {\n this.updateTooltip();\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.updateTooltip());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutationObserver = new MutationObserver(() => this.updateTooltip());\n this.mutationObserver.observe(this.elementRef.nativeElement, {\n characterData: true,\n childList: true,\n subtree: true\n });\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n }\n\n updateTooltip(): void {\n const element = this.elementRef.nativeElement;\n this.tooltip.message = element.scrollWidth > element.clientWidth\n ? this.rbOverflowTooltip\n : '';\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation, inject, OnInit, OnDestroy, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, RouterModule } from '@angular/router';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RbSidebarNavigationItem } from '../../interfaces/rb-sidebar-navigation.interface';\nimport { RbOverflowTooltipDirective } from '../../directives/rb-overflow-tooltip/rb-overflow-tooltip.directive';\n\n@Component({\n selector: 'rb-sidebar-navigation',\n standalone: true,\n imports: [CommonModule, RouterModule, MatTooltipModule, RbOverflowTooltipDirective],\n templateUrl: './rb-sidebar-navigation.component.html',\n styleUrl: './rb-sidebar-navigation.component.scss',\n encapsulation: ViewEncapsulation.None\n})\nexport class RbSidebarNavigationComponent implements OnInit, OnDestroy {\n private router = inject(Router);\n private elementRef = inject(ElementRef);\n\n @Input() logoUrl: string = '';\n @Input() logoTextUrl: string = '';\n @Input() logoName: string = '';\n private _items: RbSidebarNavigationItem[] = [];\n @Input()\n set items(value: RbSidebarNavigationItem[]) {\n this._items = this.sortItems(value || []);\n }\n get items(): RbSidebarNavigationItem[] {\n return this._items;\n }\n \n @Input() initiallyFixed: boolean = false;\n\n // Secondary Menu Inputs\n private _secondaryItems: RbSidebarNavigationItem[] = [];\n private selectedSecondaryItemId: string | null = null;\n @Input() secondaryTitle: string = '';\n\n @Input()\n set secondaryItems(value: RbSidebarNavigationItem[]) {\n this._secondaryItems = this.sortItems(value || []);\n this.selectedSecondaryItemId = this._secondaryItems[0]?.id ?? null;\n\n if (this._secondaryItems.length > 0) {\n this.closePrimaryForSecondaryMenu();\n }\n }\n get secondaryItems(): RbSidebarNavigationItem[] {\n return this._secondaryItems;\n }\n\n // Customization Inputs\n @Input() backgroundColor: string = '#F8F9FA';\n @Input() textColor: string = '#505353';\n @Input() activeTextColor: string = '#004F4F';\n @Input() hoverBackgroundColor: string = 'rgba(0, 0, 0, 0.05)';\n\n // Dynamic Width Customization Inputs (defaults to 320px)\n private _width: string | number = '320px';\n @Input()\n set width(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._width = value;\n }\n }\n get width(): string | number {\n return this._width;\n }\n\n @Input()\n set sidebarWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._width = value;\n }\n }\n get sidebarWidth(): string | number {\n return this._width;\n }\n\n private _secondaryWidth: string | number = '320px';\n @Input()\n set secondaryWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._secondaryWidth = value;\n }\n }\n get secondaryWidth(): string | number {\n return this._secondaryWidth;\n }\n\n @Input()\n set secondarySidebarWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._secondaryWidth = value;\n }\n }\n get secondarySidebarWidth(): string | number {\n return this._secondaryWidth;\n }\n\n private _closedWidth: string | number = '64px';\n @Input()\n set closedWidth(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._closedWidth = value;\n }\n }\n get closedWidth(): string | number {\n return this._closedWidth;\n }\n\n private _sectionGap: string | number = '4px';\n @Input()\n set sectionGap(value: string | number) {\n if (value !== undefined && value !== null && value !== '') {\n this._sectionGap = value;\n }\n }\n get sectionGap(): string | number {\n return this._sectionGap;\n }\n\n get formattedWidth(): string {\n return this.formatCssUnit(this.width, '320px');\n }\n\n get formattedSecondaryWidth(): string {\n return this.formatCssUnit(this.secondaryWidth, '320px');\n }\n\n get formattedClosedWidth(): string {\n return this.formatCssUnit(this.closedWidth, '64px');\n }\n\n get formattedSectionGap(): string {\n return this.formatCssUnit(this.sectionGap, '4px');\n }\n\n private formatCssUnit(val: string | number, defaultValue: string): string {\n if (val === undefined || val === null || val === '') {\n return defaultValue;\n }\n if (typeof val === 'number' || (!isNaN(Number(val)) && String(val).trim() !== '')) {\n return `${val}px`;\n }\n return String(val);\n }\n\n // Icon for bottom toggle button, can be customized\n @Input() toggleIcon: string = 'last_page';\n\n @Output() itemClick = new EventEmitter<RbSidebarNavigationItem>();\n @Output() logoClick = new EventEmitter<RbSidebarNavigationItem | void>();\n @Output() stateChange = new EventEmitter<{ isOpen: boolean; isFixed: boolean }>();\n\n isFixed: boolean = false;\n isHovered: boolean = false;\n isOverlayActive: boolean = false;\n private hoverTimeout?: ReturnType<typeof setTimeout>;\n private overlayCloseTimeout?: ReturnType<typeof setTimeout>;\n\n get hasSecondary(): boolean {\n return this.secondaryItems && this.secondaryItems.length > 0;\n }\n\n private closePrimaryForSecondaryMenu(): void {\n const wasOpen = this.isOpen;\n\n this.clearHoverTimeout();\n this.clearOverlayCloseTimeout();\n\n this.isFixed = false;\n this.isHovered = false;\n this.isOverlayActive = false;\n\n if (wasOpen) {\n this.scrollToActiveItem(true);\n this.emitStateChange();\n }\n }\n\n private emitStateChange(): void {\n this.stateChange.emit({ isOpen: this.isOpen, isFixed: this.isFixed });\n }\n\n private sortItems(items: RbSidebarNavigationItem[]): RbSidebarNavigationItem[] {\n if (!items || items.length === 0) return [];\n \n const clonedItems = [...items];\n const result: RbSidebarNavigationItem[] = [];\n let currentSection: RbSidebarNavigationItem[] = [];\n \n const sortSection = (section: RbSidebarNavigationItem[]) => {\n section.sort((a, b) => {\n const usageA = a.usageCount || 0;\n const usageB = b.usageCount || 0;\n if (usageA !== usageB) {\n return usageB - usageA;\n }\n const labelA = a.label || '';\n const labelB = b.label || '';\n return labelA.localeCompare(labelB);\n });\n \n section.forEach(item => {\n if (item.children && item.children.length > 0) {\n item.children = this.sortItems(item.children);\n }\n });\n \n return section;\n };\n\n for (const item of clonedItems) {\n if (item.isSectionTitle) {\n if (currentSection.length > 0) {\n result.push(...sortSection(currentSection));\n currentSection = [];\n }\n result.push(item);\n } else {\n currentSection.push(item);\n }\n }\n \n if (currentSection.length > 0) {\n result.push(...sortSection(currentSection));\n }\n \n return result;\n }\n\n ngOnInit() {\n // If there is a secondary menu, the primary menu cannot be \"fixed open\" by default because it would permanently cover the secondary menu.\n if (this.hasSecondary) {\n this.isFixed = false;\n } else {\n this.isFixed = this.initiallyFixed;\n }\n\n }\n\n get isOpen(): boolean {\n return this.isFixed || this.isHovered;\n }\n\n set isOpen(value: boolean) {\n const wasOpen = this.isOpen;\n this.isHovered = value && !this.isFixed;\n if (this.isHovered) {\n this.isOverlayActive = true;\n }\n if (wasOpen !== this.isOpen) {\n if (!this.isOpen) {\n this.scrollToActiveItem(true);\n }\n this.emitStateChange();\n }\n }\n\n onMouseEnter() {\n if (this.isFixed) return;\n\n this.clearHoverTimeout();\n this.clearOverlayCloseTimeout();\n\n this.hoverTimeout = setTimeout(() => {\n this.hoverTimeout = undefined;\n this.isOpen = true;\n }, 1000);\n }\n\n onMouseLeave() {\n this.clearHoverTimeout();\n\n if (this.isFixed) return;\n\n const wasHovered = this.isHovered;\n this.isHovered = false;\n if (wasHovered) {\n this.finishOverlayAfterClosingTransition();\n this.scrollToActiveItem(true);\n this.emitStateChange();\n } else {\n this.isOverlayActive = false;\n }\n }\n\n ngOnDestroy(): void {\n this.clearHoverTimeout();\n this.clearOverlayCloseTimeout();\n }\n\n toggleFixed() {\n this.clearHoverTimeout();\n const wasOpen = this.isOpen;\n\n if (wasOpen) {\n const wasOverlay = this.isHovered || this.isOverlayActive;\n this.isFixed = false;\n this.isHovered = false;\n if (wasOverlay) {\n this.finishOverlayAfterClosingTransition();\n } else {\n this.clearOverlayCloseTimeout();\n this.isOverlayActive = false;\n }\n } else {\n this.clearOverlayCloseTimeout();\n this.isFixed = true;\n this.isHovered = false;\n this.isOverlayActive = false;\n }\n\n if (wasOpen && !this.isOpen) {\n this.scrollToActiveItem(true);\n }\n\n this.emitStateChange();\n }\n\n private finishOverlayAfterClosingTransition(): void {\n this.clearOverlayCloseTimeout();\n this.overlayCloseTimeout = setTimeout(() => {\n this.isOverlayActive = false;\n this.overlayCloseTimeout = undefined;\n }, 300);\n }\n\n private clearHoverTimeout(): void {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = undefined;\n }\n }\n\n private clearOverlayCloseTimeout(): void {\n if (this.overlayCloseTimeout) {\n clearTimeout(this.overlayCloseTimeout);\n this.overlayCloseTimeout = undefined;\n }\n }\n\n onLogoClicked() {\n if (this.items && this.items.length > 0) {\n this.logoClick.emit(this.items[0]);\n } else {\n this.logoClick.emit();\n }\n }\n\n onItemClicked(item: RbSidebarNavigationItem) {\n if (this.secondaryItems.some(secondaryItem => secondaryItem.id === item.id)) {\n this.selectedSecondaryItemId = item.id;\n }\n\n if (item.action) {\n item.action();\n }\n this.itemClick.emit(item);\n }\n\n toggleItem(item: RbSidebarNavigationItem) {\n if (item.children && item.children.length > 0) {\n item.expanded = !item.expanded;\n if (!this.isOpen) {\n this.isFixed = true; // Open the sidebar to see the children\n this.isHovered = false;\n }\n } else {\n this.onItemClicked(item);\n }\n }\n\n isChildActive(item: RbSidebarNavigationItem): boolean {\n if (!item.children) return false;\n // Check if any child route is currently active\n return item.children.some(child => \n child.route && this.router.isActive(child.route, {\n paths: 'exact',\n queryParams: 'ignored', \n fragment: 'ignored', \n matrixParams: 'ignored' \n })\n );\n }\n\n isParentActive(item: RbSidebarNavigationItem): boolean {\n if (!item.children || item.children.length === 0) return false;\n // Highlight parent if the sidebar is closed OR if the submenu is closed, AND a child is active\n return (!this.isOpen || !item.expanded) && this.isChildActive(item);\n }\n\n isSecondaryItemActive(item: RbSidebarNavigationItem): boolean {\n const routeActive = this.isRouteActive(item);\n const hasActiveRoute = this.secondaryItems.some(secondaryItem => this.isRouteActive(secondaryItem));\n\n if (hasActiveRoute) {\n return routeActive;\n }\n\n return item.id === this.selectedSecondaryItemId;\n }\n\n private isRouteActive(item: RbSidebarNavigationItem): boolean {\n return !!item.route && this.router.isActive(item.route, {\n paths: 'exact',\n queryParams: 'ignored',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n }\n\n getSectionTitleLabel(item: RbSidebarNavigationItem): string {\n if (!item || !item.label) return '';\n return item.label;\n }\n\n getNavItemLabel(item: RbSidebarNavigationItem): string {\n if (!item || !item.label) return '';\n return item.label;\n }\n\n getSubmenuItemLabel(item: RbSidebarNavigationItem): string {\n if (!item || !item.label) return '';\n return item.label;\n }\n\n public scrollToActiveItem(smooth: boolean = true): void {\n setTimeout(() => {\n this.performScrollToActiveItem(smooth);\n }, 0);\n\n setTimeout(() => {\n this.performScrollToActiveItem(smooth);\n }, 150);\n\n setTimeout(() => {\n this.performScrollToActiveItem(smooth);\n }, 320);\n }\n\n private performScrollToActiveItem(smooth: boolean = true): void {\n if (!this.elementRef) return;\n const navContainer = this.elementRef.nativeElement.querySelector('.rb-sidebar__nav') as HTMLElement;\n if (!navContainer) return;\n\n const activeElement = navContainer.querySelector('.rb-sidebar__nav-link--active, .rb-sidebar__submenu-link--active') as HTMLElement;\n if (!activeElement) return;\n\n const containerRect = navContainer.getBoundingClientRect();\n const activeRect = activeElement.getBoundingClientRect();\n\n const isVisible = (\n activeRect.top >= containerRect.top &&\n activeRect.bottom <= containerRect.bottom\n );\n\n if (!isVisible) {\n const targetScrollTop = navContainer.scrollTop\n + activeRect.top\n - containerRect.top\n - ((navContainer.clientHeight - activeElement.clientHeight) / 2);\n navContainer.scrollTo({\n top: Math.max(0, targetScrollTop),\n behavior: smooth ? 'smooth' : 'auto'\n });\n }\n }\n}\n","<div class=\"rb-sidebar-wrapper\" \n [class.has-secondary]=\"hasSecondary\"\n [class.is-fixed]=\"isFixed\"\n [class.is-hovered]=\"isHovered\"\n [style.--rb-sidebar-bg]=\"backgroundColor\"\n [style.--rb-sidebar-text-color]=\"textColor\"\n [style.--rb-sidebar-active-text-color]=\"activeTextColor\"\n [style.--rb-sidebar-hover-bg]=\"hoverBackgroundColor\"\n [style.--rb-sidebar-width-open]=\"formattedWidth\"\n [style.--rb-secondary-sidebar-width]=\"formattedSecondaryWidth\"\n [style.--rb-sidebar-width-closed]=\"formattedClosedWidth\"\n [style.--rb-sidebar-section-gap]=\"formattedSectionGap\"\n>\n <aside\n class=\"rb-sidebar rb-sidebar--primary\"\n [ngClass]=\"{ \n 'rb-sidebar--open': isOpen, \n 'rb-sidebar--closed': !isOpen, \n 'rb-sidebar--fixed': isFixed,\n 'rb-sidebar--overlay': isOverlayActive\n }\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div class=\"rb-sidebar__header\" (click)=\"onLogoClicked()\" role=\"button\" tabindex=\"0\">\n @if (logoUrl) {\n <img [src]=\"logoUrl\" [alt]=\"logoName || 'Logo'\" class=\"rb-sidebar__logo-icon\" />\n }\n @if (logoTextUrl) {\n <img [src]=\"logoTextUrl\" alt=\"Rubeus\" class=\"rb-sidebar__logo-wordmark\" />\n } @else if (logoName) {\n <span class=\"rb-sidebar__logo-name\">{{ logoName }}</span>\n }\n </div>\n\n <nav class=\"rb-sidebar__nav\">\n <ul class=\"rb-sidebar__nav-list\">\n @for (item of items; track item.id) {\n <li\n class=\"rb-sidebar__nav-item\"\n [class.rb-sidebar__nav-item--section]=\"item.isSectionTitle\"\n [class.rb-sidebar__nav-item--section-without-title]=\"item.hasDivider && !item.isSectionTitle\"\n >\n @if (item.hasDivider || item.isSectionTitle) {\n <div class=\"rb-sidebar__section-divider\"></div>\n }\n @if (item.isSectionTitle) {\n @if (item.label) {\n <div class=\"rb-sidebar__section-title\">\n <span\n class=\"rb-sidebar__section-label\"\n matTooltip\n [rbOverflowTooltip]=\"item.label\"\n >{{ getSectionTitleLabel(item) }}</span>\n </div>\n }\n } @else {\n @if (item.route && (!item.children || item.children.length === 0)) {\n <a\n [routerLink]=\"item.route\"\n routerLinkActive=\"rb-sidebar__nav-link--active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"rb-sidebar__nav-link\"\n (click)=\"onItemClicked(item)\"\n >\n <i class=\"material-symbols-outlined rb-sidebar__nav-icon\">{{ item.icon }}</i>\n <span\n class=\"rb-sidebar__nav-label\"\n matTooltip\n [rbOverflowTooltip]=\"item.label\"\n >{{ getNavItemLabel(item) }}</span>\n </a>\n } @else {\n <div\n class=\"rb-sidebar__nav-link\"\n [class.rb-sidebar__nav-link--active]=\"isParentActive(item)\"\n (click)=\"toggleItem(item)\"\n role=\"button\"\n tabindex=\"0\"\n >\n <i class=\"material-symbols-outlined rb-sidebar__nav-icon\">{{ item.icon }}</i>\n <span\n class=\"rb-sidebar__nav-label\"\n matTooltip\n [rbOverflowTooltip]=\"item.label\"\n >{{ getNavItemLabel(item) }}</span>\n @if (item.children && item.children.length > 0) {\n <i class=\"material-symbols-outlined rb-sidebar__nav-caret\" [class.rotate]=\"item.expanded\">arrow_drop_down</i>\n }\n </div>\n @if (item.children && item.children.length > 0 && item.expanded && isOpen) {\n <ul class=\"rb-sidebar__submenu\">\n @for (child of item.children; track child.id) {\n <li class=\"rb-sidebar__submenu-item\">\n @if (child.route) {\n <a\n [routerLink]=\"child.route\"\n routerLinkActive=\"rb-sidebar__submenu-link--active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"rb-sidebar__submenu-link\"\n (click)=\"onItemClicked(child)\"\n >\n <span\n class=\"rb-sidebar__submenu-label\"\n matTooltip\n [rbOverflowTooltip]=\"child.label\"\n >{{ getSubmenuItemLabel(child) }}</span>\n </a>\n } @else {\n <div\n class=\"rb-sidebar__submenu-link\"\n (click)=\"onItemClicked(child)\"\n role=\"button\"\n tabindex=\"0\"\n >\n <span\n class=\"rb-sidebar__submenu-label\"\n matTooltip\n [rbOverflowTooltip]=\"child.label\"\n >{{ getSubmenuItemLabel(child) }}</span>\n </div>\n }\n </li>\n }\n </ul>\n }\n }\n }\n </li>\n }\n </ul>\n </nav>\n\n <div class=\"rb-sidebar__footer\">\n <button class=\"rb-sidebar__toggle-btn\" (click)=\"toggleFixed()\" aria-label=\"Alternar menu lateral\">\n <i class=\"material-symbols-outlined rb-sidebar__toggle-icon\">{{ toggleIcon }}</i>\n </button>\n </div>\n </aside>\n\n <!-- Secondary Sidebar -->\n @if (hasSecondary) {\n <aside class=\"rb-sidebar rb-sidebar--secondary\">\n <div class=\"rb-sidebar__header\">\n <span class=\"rb-sidebar__secondary-title\">{{ secondaryTitle }}</span>\n </div>\n <nav class=\"rb-sidebar__nav\">\n <ul class=\"rb-sidebar__nav-list\">\n @for (item of secondaryItems; track item.id) {\n <li class=\"rb-sidebar__nav-item\">\n @if (item.route) {\n <a\n [routerLink]=\"item.route\"\n routerLinkActive=\"rb-sidebar__nav-link--active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"rb-sidebar__secondary-link\"\n [class.rb-sidebar__nav-link--active]=\"isSecondaryItemActive(item)\"\n (click)=\"onItemClicked(item)\"\n >\n <span class=\"rb-sidebar__secondary-label\">{{ item.label }}</span>\n </a>\n } @else {\n <div\n class=\"rb-sidebar__secondary-link\"\n [class.rb-sidebar__nav-link--active]=\"isSecondaryItemActive(item)\"\n (click)=\"onItemClicked(item)\"\n role=\"button\"\n tabindex=\"0\"\n >\n <span class=\"rb-sidebar__secondary-label\">{{ item.label }}</span>\n </div>\n }\n </li>\n }\n </ul>\n </nav>\n </aside>\n }\n</div>\n","import { ChangeDetectorRef, Component, Input, Output, EventEmitter, ElementRef, ViewChild, DestroyRef, inject } from '@angular/core';\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { \n RbHeaderUserProfile,\n RbHeaderApp,\n RbHeaderProfileMenuItem\n} from '../../interfaces/rb-header.interface';\n\n@Component({\n selector: 'rb-header',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-header.component.html',\n styleUrl: './rb-header.component.scss'\n})\nexport class RbHeaderComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() pageTitle: string = '';\n @Input() userProfile?: RbHeaderUserProfile;\n @Input() appsList: RbHeaderApp[] = [];\n @Input() backgroundColor: string = '#F8FAF9';\n @Input() profileMenu: RbHeaderProfileMenuItem[] = [];\n @Input() showBaseSwitch: boolean = false;\n @Input() showCrmButton: boolean = false;\n @Input() showCrmApp: boolean = false;\n\n @Output() onHelpClick = new EventEmitter<void>();\n @Output() onAppsClick = new EventEmitter<void>();\n @Output() onViewAllAppsClick = new EventEmitter<void>();\n @Output() onProfileMenuItemClick = new EventEmitter<RbHeaderProfileMenuItem>();\n @Output() onLogoutClick = new EventEmitter<void>();\n @Output() onProfileMenuClick = new EventEmitter<void>();\n @Output() onSwitchBaseClick = new EventEmitter<void>();\n @Output() onGoToCrmClick = new EventEmitter<void>();\n @Output() onAccountClick = new EventEmitter<void>();\n\n isAppsMenuOpen = false;\n isProfileMenuOpen = false;\n \n @ViewChild('appsMenuRef') appsMenuRef?: ElementRef;\n @ViewChild('appsButtonRef') appsButtonRef?: ElementRef;\n @ViewChild('appsContainerRef') appsContainerRef?: ElementRef<HTMLElement>;\n @ViewChild('profileButtonRef') profileButtonRef?: ElementRef;\n @ViewChild('profileMenuRef') profileMenuRef?: ElementRef;\n\n constructor(\n private sanitizer: DomSanitizer,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.document.addEventListener('pointerdown', this.handleDocumentPointerDown, true);\n this.destroyRef.onDestroy(() => {\n this.document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);\n });\n }\n\n get rubeusApps(): RbHeaderApp[] {\n return this.appsList.filter(app => app.isRubeusApp !== false);\n }\n\n get nonRubeusApps(): RbHeaderApp[] {\n return this.appsList.filter(app => app.isRubeusApp === false);\n }\n\n getSafeSvg(svgString?: string): SafeHtml | null {\n return svgString ? this.sanitizer.bypassSecurityTrustHtml(svgString) : null;\n }\n\n\n private readonly handleDocumentPointerDown = (event: Event) => {\n const target = event.target as Node | null;\n let menuStateChanged = false;\n\n if (!target) {\n return;\n }\n\n if (this.isAppsMenuOpen) {\n const clickedInsideAppsContainer = this.appsContainerRef?.nativeElement.contains(target);\n if (!clickedInsideAppsContainer) {\n this.isAppsMenuOpen = false;\n menuStateChanged = true;\n }\n }\n if (this.isProfileMenuOpen) {\n const clickedInsideProfile = this.profileButtonRef?.nativeElement.contains(target);\n const clickedInsideProfileMenu = this.profileMenuRef?.nativeElement.contains(target);\n if (!clickedInsideProfile && !clickedInsideProfileMenu) {\n this.isProfileMenuOpen = false;\n menuStateChanged = true;\n }\n }\n\n if (menuStateChanged) {\n this.changeDetectorRef.detectChanges();\n }\n };\n\n\n\n handleAppsClick() {\n this.isAppsMenuOpen = !this.isAppsMenuOpen;\n this.onAppsClick.emit();\n }\n\n handleAppSelect(app: RbHeaderApp) {\n if (app.action) {\n app.action();\n } else if (app.url) {\n window.location.href = app.url; // Or use Router if it's an internal link\n }\n this.isAppsMenuOpen = false;\n }\n\n handleViewAllAppsClick() {\n this.onViewAllAppsClick.emit();\n this.isAppsMenuOpen = false;\n }\n\n handleCrmAppClick() {\n this.onGoToCrmClick.emit();\n this.isAppsMenuOpen = false;\n }\n\n handleHelpClick() {\n this.onHelpClick.emit();\n }\n \n handleProfileClick() {\n this.isProfileMenuOpen = !this.isProfileMenuOpen;\n this.onProfileMenuClick.emit();\n }\n\n handleProfileMenuItemClick(item: RbHeaderProfileMenuItem) {\n this.onProfileMenuItemClick.emit(item);\n this.isProfileMenuOpen = false;\n }\n\n handleLogoutClick() {\n this.onLogoutClick.emit();\n this.isProfileMenuOpen = false;\n }\n\n handleAccountClick() {\n this.onAccountClick.emit();\n this.isProfileMenuOpen = false;\n }\n\n handleBaseRowClick() {\n if (this.showBaseSwitch) {\n this.onSwitchBaseClick.emit();\n this.isProfileMenuOpen = false;\n }\n }\n\n handleGoToCrmClick(event: Event) {\n event.stopPropagation();\n this.onGoToCrmClick.emit();\n this.isProfileMenuOpen = false;\n }\n}\n","<header class=\"rb-header\" [style.--rb-header-bg]=\"backgroundColor\">\n <div class=\"rb-header__left\">\n <!-- Page Title -->\n @if (pageTitle) {\n <h1 class=\"rb-header__title\" [title]=\"pageTitle\">{{ pageTitle }}</h1>\n }\n </div>\n\n <div class=\"rb-header__right\">\n <!-- Apps Button and Menu -->\n <div class=\"rb-header__apps-container\" #appsContainerRef>\n <button mat-icon-button class=\"rb-header__apps-btn\" #appsButtonRef (click)=\"handleAppsClick()\" aria-label=\"Aplicativos\" title=\"Aplicativos\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6 20C5.45 20 4.97917 19.8042 4.5875 19.4125C4.19583 19.0208 4 18.55 4 18C4 17.45 4.19583 16.9792 4.5875 16.5875C4.97917 16.1958 5.45 16 6 16C6.55 16 7.02083 16.1958 7.4125 16.5875C7.80417 16.9792 8 17.45 8 18C8 18.55 7.80417 19.0208 7.4125 19.4125C7.02083 19.8042 6.55 20 6 20ZM12 20C11.45 20 10.9792 19.8042 10.5875 19.4125C10.1958 19.0208 10 18.55 10 18C10 17.45 10.1958 16.9792 10.5875 16.5875C10.9792 16.1958 11.45 16 12 16C12.55 16 13.0208 16.1958 13.4125 16.5875C13.8042 16.9792 14 17.45 14 18C14 18.55 13.8042 19.0208 13.4125 19.4125C13.0208 19.8042 12.55 20 12 20ZM18 20C17.45 20 16.9792 19.8042 16.5875 19.4125C16.1958 19.0208 16 18.55 16 18C16 17.45 16.1958 16.9792 16.5875 16.5875C16.9792 16.1958 17.45 16 18 16C18.55 16 19.0208 16.1958 19.4125 16.5875C19.8042 16.9792 20 17.45 20 18C20 18.55 19.8042 19.0208 19.4125 19.4125C19.0208 19.8042 18.55 20 18 20ZM6 14C5.45 14 4.97917 13.8042 4.5875 13.4125C4.19583 13.0208 4 12.55 4 12C4 11.45 4.19583 10.9792 4.5875 10.5875C4.97917 10.1958 5.45 10 6 10C6.55 10 7.02083 10.1958 7.4125 10.5875C7.80417 10.9792 8 11.45 8 12C8 12.55 7.80417 13.0208 7.4125 13.4125C7.02083 13.8042 6.55 14 6 14ZM12 14C11.45 14 10.9792 13.8042 10.5875 13.4125C10.1958 13.0208 10 12.55 10 12C10 11.45 10.1958 10.9792 10.5875 10.5875C10.9792 10.1958 11.45 10 12 10C12.55 10 13.0208 10.1958 13.4125 10.5875C13.8042 10.9792 14 11.45 14 12C14 12.55 13.8042 13.0208 13.4125 13.4125C13.0208 13.8042 12.55 14 12 14ZM18 14C17.45 14 16.9792 13.8042 16.5875 13.4125C16.1958 13.0208 16 12.55 16 12C16 11.45 16.1958 10.9792 16.5875 10.5875C16.9792 10.1958 17.45 10 18 10C18.55 10 19.0208 10.1958 19.4125 10.5875C19.8042 10.9792 20 11.45 20 12C20 12.55 19.8042 13.0208 19.4125 13.4125C19.0208 13.8042 18.55 14 18 14ZM6 8C5.45 8 4.97917 7.80417 4.5875 7.4125C4.19583 7.02083 4 6.55 4 6C4 5.45 4.19583 4.97917 4.5875 4.5875C4.97917 4.19583 5.45 4 6 4C6.55 4 7.02083 4.19583 7.4125 4.5875C7.80417 4.97917 8 5.45 8 6C8 6.55 7.80417 7.02083 7.4125 7.4125C7.02083 7.80417 6.55 8 6 8ZM12 8C11.45 8 10.9792 7.80417 10.5875 7.4125C10.1958 7.02083 10 6.55 10 6C10 5.45 10.1958 4.97917 10.5875 4.5875C10.9792 4.19583 11.45 4 12 4C12.55 4 13.0208 4.19583 13.4125 4.5875C13.8042 4.97917 14 5.45 14 6C14 6.55 13.8042 7.02083 13.4125 7.4125C13.0208 7.80417 12.55 8 12 8ZM18 8C17.45 8 16.9792 7.80417 16.5875 7.4125C16.1958 7.02083 16 6.55 16 6C16 5.45 16.1958 4.97917 16.5875 4.5875C16.9792 4.19583 17.45 4 18 4C18.55 4 19.0208 4.19583 19.4125 4.5875C19.8042 4.97917 20 5.45 20 6C20 6.55 19.8042 7.02083 19.4125 7.4125C19.0208 7.80417 18.55 8 18 8Z\" fill=\"currentColor\"/>\n </svg>\n </button>\n\n @if (isAppsMenuOpen) {\n <div class=\"rb-header__apps-menu\" #appsMenuRef>\n \n <!-- Rubeus Apps -->\n @if (rubeusApps.length > 0 || showCrmApp) {\n <div class=\"rb-header__apps-card\">\n <div class=\"rb-header__apps-grid\">\n @if (showCrmApp) {\n <button type=\"button\" class=\"rb-header__app-item\" (click)=\"handleCrmAppClick()\">\n <div class=\"rb-header__app-item-inner\">\n <div class=\"rb-header__app-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"28\" viewBox=\"0 0 31 28\" fill=\"none\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M30.6535 12.5201L24.2317 1.38599C23.7697 0.554396 22.8458 0 21.8756 0H9.07824C8.10805 0 7.18405 0.508197 6.72206 1.38599L0.346498 12.5201C-0.115499 13.3517 -0.115499 14.3681 0.346498 15.2459L6.76826 26.38C7.23025 27.2116 8.15425 27.766 9.12444 27.766H21.9218C22.892 27.766 23.8159 27.2578 24.2779 26.38L30.6535 15.2459C31.1155 14.3681 31.1155 13.3517 30.6535 12.5201ZM27.0499 14.9225L22.1528 23.4232C21.7832 24.07 21.0902 24.4858 20.351 24.4858H10.6028C9.86364 24.4858 9.17064 24.07 8.80104 23.4232L3.95007 14.9225C3.58048 14.2757 3.58048 13.4903 3.95007 12.8435L8.80104 4.34277C9.17064 3.69598 9.86364 3.28018 10.6028 3.28018H20.351C21.0902 3.28018 21.7832 3.69598 22.1528 4.34277L27.0499 12.8435C27.4195 13.4903 27.4195 14.2757 27.0499 14.9225Z\" fill=\"#01A1A1\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M22.5779 16.1866C22.7549 15.8786 22.5326 15.4944 22.1773 15.4944H19.4585C19.2927 15.4944 19.1396 15.5832 19.0574 15.7272L18.0388 17.5097C17.9002 17.7407 17.623 17.9255 17.3458 17.9255H13.6498C13.3726 17.9255 13.0954 17.7869 12.9568 17.5097L11.9382 15.7272C11.856 15.5832 11.7029 15.4944 11.5371 15.4944H8.81829C8.46304 15.4944 8.24071 15.8786 8.41775 16.1866L10.8778 20.4665C11.155 20.9285 11.617 21.2057 12.1252 21.2057H18.8704C19.3786 21.2057 19.8406 20.9285 20.1178 20.4665L22.5779 16.1866ZM20.0716 7.29956L22.4986 11.522C22.6757 11.83 22.4533 12.2142 22.0981 12.2142H19.4257C19.2599 12.2142 19.1068 12.1254 19.0245 11.9814L18.0388 10.2563C17.9002 9.97914 17.623 9.84054 17.3458 9.84054H13.6498C13.3726 9.84054 13.0954 10.0253 12.9568 10.2563L11.9711 11.9814C11.8888 12.1254 11.7357 12.2142 11.5699 12.2142H8.85132C8.49607 12.2142 8.27374 11.83 8.45078 11.522L10.8778 7.29956C11.155 6.83756 11.617 6.56036 12.1252 6.56036H18.8242C19.3324 6.56036 19.7944 6.83756 20.0716 7.29956Z\" fill=\"#FF0031\"/>\n </svg>\n </div>\n <span class=\"rb-header__app-name\">Plataforma Rubeus</span>\n </div>\n </button>\n }\n @for (app of rubeusApps; track app.name) {\n <button type=\"button\" class=\"rb-header__app-item\" (click)=\"handleAppSelect(app)\">\n <div class=\"rb-header__app-item-inner\">\n <div class=\"rb-header__app-icon-wrapper\">\n @if (app.iconUrl) {\n <img [src]=\"app.iconUrl\" [alt]=\"app.name\" />\n }\n @if (app.iconSvg) {\n <div [innerHTML]=\"getSafeSvg(app.iconSvg)\"></div>\n }\n @if (!app.iconUrl && !app.iconSvg) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n }\n </div>\n <span class=\"rb-header__app-name\">{{ app.name }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Non-Rubeus Apps -->\n @if (nonRubeusApps.length > 0) {\n <div class=\"rb-header__apps-card\">\n <div class=\"rb-header__apps-grid\">\n @for (app of nonRubeusApps; track app.name) {\n <button type=\"button\" class=\"rb-header__app-item\" (click)=\"handleAppSelect(app)\">\n <div class=\"rb-header__app-item-inner\">\n <div class=\"rb-header__app-icon-wrapper\">\n @if (app.iconUrl) {\n <img [src]=\"app.iconUrl\" [alt]=\"app.name\" />\n }\n @if (app.iconSvg) {\n <div [innerHTML]=\"getSafeSvg(app.iconSvg)\"></div>\n }\n @if (!app.iconUrl && !app.iconSvg) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n }\n </div>\n <span class=\"rb-header__app-name\">{{ app.name }}</span>\n </div>\n </button>\n }\n </div>\n </div>\n }\n\n <div class=\"rb-header__apps-footer\">\n <button mat-button [rbDynamicButton]=\"'cancel'\" color=\"primary\" type=\"button\" class=\"rb-header__view-all-apps primary\" (click)=\"handleViewAllAppsClick()\">\n Ver todos os aplicativos\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Help Button -->\n <button mat-icon-button class=\"rb-header__icon-btn\" (click)=\"handleHelpClick()\" aria-label=\"Ajuda\" title=\"Ajuda\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M11.96 16.8C12.24 16.8 12.4767 16.7033 12.67 16.51C12.8633 16.3167 12.96 16.08 12.96 15.8C12.96 15.52 12.8633 15.2833 12.67 15.09C12.4767 14.8967 12.24 14.8 11.96 14.8C11.68 14.8 11.4433 14.8967 11.25 15.09C11.0567 15.2833 10.96 15.52 10.96 15.8C10.96 16.08 11.0567 16.3167 11.25 16.51C11.4433 16.7033 11.68 16.8 11.96 16.8ZM11.24 13.72H12.72C12.72 13.28 12.77 12.9333 12.87 12.68C12.97 12.4267 13.2533 12.08 13.72 11.64C14.0667 11.2933 14.34 10.9633 14.54 10.65C14.74 10.3367 14.84 9.96 14.84 9.52C14.84 8.77333 14.5667 8.2 14.02 7.8C13.4733 7.4 12.8267 7.2 12.08 7.2C11.32 7.2 10.7033 7.4 10.23 7.8C9.75667 8.2 9.42667 8.68 9.24 9.24L10.56 9.76C10.6267 9.52 10.7767 9.26 11.01 8.98C11.2433 8.7 11.6 8.56 12.08 8.56C12.5067 8.56 12.8267 8.67667 13.04 8.91C13.2533 9.14333 13.36 9.4 13.36 9.68C13.36 9.94667 13.28 10.1967 13.12 10.43C12.96 10.6633 12.76 10.88 12.52 11.08C11.9333 11.6 11.5733 11.9933 11.44 12.26C11.3067 12.5267 11.24 13.0133 11.24 13.72ZM12 20C10.8933 20 9.85333 19.79 8.88 19.37C7.90667 18.95 7.06 18.38 6.34 17.66C5.62 16.94 5.05 16.0933 4.63 15.12C4.21 14.1467 4 13.1067 4 12C4 10.8933 4.21 9.85333 4.63 8.88C5.05 7.90667 5.62 7.06 6.34 6.34C7.06 5.62 7.90667 5.05 8.88 4.63C9.85333 4.21 10.8933 4 12 4C13.1067 4 14.1467 4.21 15.12 4.63C16.0933 5.05 16.94 5.62 17.66 6.34C18.38 7.06 18.95 7.90667 19.37 8.88C19.79 9.85333 20 10.8933 20 12C20 13.1067 19.79 14.1467 19.37 15.12C18.95 16.0933 18.38 16.94 17.66 17.66C16.94 18.38 16.0933 18.95 15.12 19.37C14.1467 19.79 13.1067 20 12 20Z\" fill=\"#8E9191\"/>\n <path d=\"M11.9601 14.8C12.24 14.8 12.4769 14.8965 12.6702 15.0898C12.8635 15.2831 12.9601 15.52 12.9601 15.8C12.9601 16.0799 12.8635 16.3168 12.6702 16.5101C12.4769 16.7034 12.24 16.7999 11.9601 16.8C11.6801 16.8 11.4432 16.7034 11.2499 16.5101C11.0566 16.3168 10.9601 16.08 10.9601 15.8C10.9601 15.52 11.0566 15.2831 11.2499 15.0898C11.4432 14.8965 11.6801 14.8 11.9601 14.8ZM12.0796 7.19995C12.8263 7.19995 13.4735 7.39995 14.0202 7.79995C14.5667 8.19994 14.8397 8.77369 14.8397 9.52026C14.8397 9.96013 14.7397 10.3367 14.5397 10.65C14.3398 10.9632 14.0667 11.2932 13.7202 11.6398C13.2538 12.0796 12.9703 12.4263 12.8702 12.6796C12.7702 12.933 12.7202 13.2803 12.7202 13.7203H11.2397C11.2397 13.0138 11.3065 12.5268 11.4397 12.2601C11.5731 11.9934 11.9335 11.5996 12.5202 11.0796C12.7601 10.8797 12.9603 10.6629 13.1202 10.4296C13.2801 10.1964 13.3601 9.94617 13.3601 9.67964C13.36 9.39976 13.253 9.14335 13.0397 8.91011C12.8264 8.67677 12.5063 8.56011 12.0796 8.56011C11.5999 8.56017 11.2433 8.69987 11.0101 8.97964C10.7767 9.25964 10.6267 9.52011 10.5601 9.76011L9.23975 9.23979C9.42639 8.67991 9.75638 8.1999 10.2296 7.79995C10.7029 7.40001 11.3197 7.20001 12.0796 7.19995Z\" fill=\"white\"/>\n </svg>\n </button>\n\n <div class=\"rb-header__divider\"></div>\n\n <!-- Profile -->\n @if (userProfile) {\n <div class=\"rb-header__profile-wrapper\">\n <div class=\"rb-header__profile\" #profileButtonRef [class.rb-header__profile--open]=\"isProfileMenuOpen\" (click)=\"handleProfileClick()\">\n <div class=\"rb-header__profile-avatar-container\">\n @if (userProfile.avatarUrl) {\n <img [src]=\"userProfile.avatarUrl\" [alt]=\"userProfile.name\" class=\"rb-header__profile-avatar\" />\n } @else {\n <div class=\"rb-header__profile-avatar rb-header__profile-avatar--placeholder\"></div>\n }\n </div>\n <div class=\"rb-header__profile-info\">\n <span class=\"rb-header__profile-name\">{{ userProfile.name }}</span>\n <span class=\"rb-header__profile-base\">{{ userProfile.base }}</span>\n </div>\n <svg class=\"rb-header__profile-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M9 11.25L5.25 7.5H12.75L9 11.25Z\" fill=\"#505353\"/>\n </svg>\n </div>\n\n <!-- Profile Menu -->\n @if (isProfileMenuOpen) {\n <div class=\"rb-header__profile-menu\" #profileMenuRef>\n <!-- Identification (also acts as the account button) -->\n <button\n type=\"button\"\n class=\"rb-header__profile-menu-identification\"\n (click)=\"handleAccountClick()\"\n >\n <span class=\"rb-header__profile-menu-identification-name\">{{ userProfile.name }}</span>\n @if (userProfile.email) {\n <span class=\"rb-header__profile-menu-identification-email\">{{ userProfile.email }}</span>\n }\n </button>\n\n <!-- Base Switch / CRM Row -->\n @if (showBaseSwitch || showCrmButton) {\n <div\n class=\"rb-header__profile-menu-item rb-header__profile-base-row\"\n [class.rb-header__profile-menu-item--static]=\"!showBaseSwitch\"\n (click)=\"handleBaseRowClick()\"\n >\n <span class=\"rb-header__profile-menu-label\">{{ userProfile?.base }}</span>\n @if (showCrmButton) {\n <button\n type=\"button\"\n class=\"rb-header__profile-crm-btn\"\n (click)=\"handleGoToCrmClick($event)\"\n aria-label=\"Ir para o CRM\"\n title=\"Ir para o CRM\"\n >\n <mat-icon class=\"rb-header__profile-crm-icon\">swap_vert</mat-icon>\n </button>\n }\n </div>\n <div class=\"rb-header__profile-menu-divider\"></div>\n }\n\n <!-- Dynamic Items -->\n @for (item of profileMenu; track item.id || item.label) {\n <div class=\"rb-header__profile-menu-item\" (click)=\"handleProfileMenuItemClick(item)\">\n @if (item.iconSvg || item.iconUrl) {\n <div class=\"rb-header__profile-menu-icon\">\n @if (item.iconUrl) {\n <img [src]=\"item.iconUrl\" [alt]=\"item.label\" />\n }\n @if (item.iconSvg) {\n <div [innerHTML]=\"getSafeSvg(item.iconSvg)\"></div>\n }\n </div>\n }\n <span class=\"rb-header__profile-menu-label\">{{ item.label }}</span>\n </div>\n }\n\n @if (profileMenu.length > 0) {\n <div class=\"rb-header__profile-menu-divider\"></div>\n }\n\n <!-- Default Logout Item -->\n <div class=\"rb-header__profile-menu-item rb-header__profile-menu-item--logout\" (click)=\"handleLogoutClick()\">\n <div class=\"rb-header__profile-menu-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M10.09 15.59L11.5 17L16.5 12L11.5 7L10.09 8.41L12.67 11H3V13H12.67L10.09 15.59ZM19 3H5C3.89 3 3 3.9 3 5V9H5V5H19V19H5V15H3V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"rb-header__profile-menu-label\">Sair</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</header>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'isArray',\n standalone: true\n})\nexport class IsArrayPipe implements PipeTransform {\n\n transform(value: any): boolean {\n return Array.isArray(value);\n }\n\n}\n","export interface CrudColumn {\n key: string;\n label: string;\n sortable?: boolean;\n pipe?: 'date' | 'datetime' | 'currency' | 'cpf' | 'cnpj' | 'phone' | 'cep' | 'mask' | 'relativeTime' | 'lastModifiedBy';\n action?: string;\n hidden?: boolean;\n blocked?: boolean;\n conditionalClassKey?: string;\n objCol?: CrudObjColumn; //Usado quando a informação da coluna é um objeto\n}\nexport interface CrudActionEvent {\n action: string;\n row?: any;\n}\n\nexport interface CrudObjColumn {\n key: string;\n label: string;\n}\n\n// export interface CrudFilter {\n// key: string;\n// label: string;\n// type: 'text' | 'select' | 'date';\n// options?: any[]; // Para selects\n// }\n","import { Observable } from 'rxjs';\n\nexport interface RbHelpArticle {\n id: string | number;\n title: string;\n url?: string;\n category?: string;\n}\n\nexport interface RbHelpIntegrationProvider {\n /**\n * Método para carregar artigos da página atual ao abrir o painel\n */\n fetchInitialArticles(routeContext?: string): Observable<RbHelpArticle[]>;\n \n /**\n * Método para pesquisar artigos no zendesk\n */\n searchArticles(query: string): Observable<RbHelpArticle[]>;\n}\n\n/**\n * Destinos dos atalhos da central de atendimento.\n */\nexport interface RbHelpPanelLinks {\n knowledgeBase: string;\n community: string;\n news: string;\n myTickets: string;\n}\n\n/**\n * URLs em uso no CRM (ui/lib/BarraPrincipal). Sobrescreva pelo input `links`\n * quando a aplicação consumidora apontar para outra central.\n */\nexport const RB_HELP_PANEL_DEFAULT_LINKS: RbHelpPanelLinks = {\n knowledgeBase: 'https://crmrubeus.zendesk.com/hc/pt-br/categories/360000249231-Base-de-conhecimento',\n community: 'https://crmrubeus.zendesk.com/hc/pt-br/community/topics',\n news: 'https://crmrubeus.zendesk.com/hc/pt-br/categories/360000306971/',\n myTickets: 'https://suporte.rubeus.com.br/detalhes'\n};\n\n/**\n * Valor da permissão `fullUser` (\"Acesso ao suporte\") como o CRM a entrega:\n * a coluna `usuario.fulluser` chega serializada como string.\n */\nexport type RbHelpSupportAccess = boolean | string | number | null | undefined;\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, inject, DestroyRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport {\n RB_HELP_PANEL_DEFAULT_LINKS,\n RbHelpArticle,\n RbHelpIntegrationProvider,\n RbHelpPanelLinks,\n RbHelpSupportAccess\n} from '../../interfaces/rb-help-panel.interface';\n\n@Component({\n selector: 'rb-help-panel',\n standalone: true,\n imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule],\n templateUrl: './rb-help-panel.component.html',\n styleUrl: './rb-help-panel.component.scss'\n})\nexport class RbHelpPanelComponent implements OnInit, OnChanges {\n private destroyRef = inject(DestroyRef);\n\n @Input() isOpen = false;\n @Input() panelTitle = 'JivoChat';\n @Input() routeContext?: string;\n @Input() integrationProvider?: RbHelpIntegrationProvider;\n\n /**\n * Sobrescreve, por chave, os destinos dos atalhos da central.\n * O que não vier aqui cai em `RB_HELP_PANEL_DEFAULT_LINKS`.\n */\n @Input() links: Partial<RbHelpPanelLinks> = {};\n\n /**\n * Permissão `fullUser` (\"Acesso ao suporte\") do usuário logado.\n * Sem ela o botão de chat fica desabilitado — é a mesma regra que o CRM\n * aplica na barra de ajuda, e o backend a revalida antes de emitir o JWT\n * do widget.\n */\n @Input() hasSupportAccess: RbHelpSupportAccess = false;\n\n /** Texto do tooltip quando o chat está bloqueado por permissão. */\n @Input() chatBlockedTooltip = 'Disponível apenas para usuários com acesso ao suporte';\n\n /**\n * Controla, individualmente, quais atalhos/ações aparecem no rodapé do painel.\n * Útil para a aplicação consumidora esconder um card cujo destino ainda não\n * existe ou está defasado, sem precisar recriar o layout.\n */\n @Input() showKnowledgeBase = true;\n @Input() showCommunity = true;\n @Input() showNews = true;\n @Input() showMyTickets = true;\n @Input() showChat = true;\n\n @Output() onClose = new EventEmitter<void>();\n @Output() onClickKnowledgeBase = new EventEmitter<void>();\n @Output() onClickCommunity = new EventEmitter<void>();\n @Output() onClickNews = new EventEmitter<void>();\n @Output() onClickMyTickets = new EventEmitter<void>();\n @Output() onClickChat = new EventEmitter<void>();\n\n searchQuery = '';\n articles: RbHelpArticle[] = [];\n isLoading = false;\n\n private searchSubject = new Subject<string>();\n\n /** Destinos efetivos dos atalhos, com os defaults preenchendo o que faltar. */\n get resolvedLinks(): RbHelpPanelLinks {\n return { ...RB_HELP_PANEL_DEFAULT_LINKS, ...this.links };\n }\n\n /**\n * Libera o chat apenas com permissão afirmativa. A checagem é por valor\n * permitido — e não pela ausência de `'0'` — para que valor faltante,\n * nulo ou de usuário inativo negue o acesso em vez de liberá-lo.\n */\n get canUseChat(): boolean {\n return this.hasSupportAccess === true\n || this.hasSupportAccess === 1\n || this.hasSupportAccess === '1';\n }\n\n ngOnInit(): void {\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(query => {\n this.isLoading = true;\n if (query.trim() === '') {\n return this.integrationProvider ? this.integrationProvider.fetchInitialArticles(this.routeContext) : [];\n }\n return this.integrationProvider ? this.integrationProvider.searchArticles(query) : [];\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: (results) => {\n this.articles = results;\n this.isLoading = false;\n },\n error: (err) => {\n console.error('Error fetching articles', err);\n this.isLoading = false;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isOpen']?.currentValue === true) {\n this.loadInitialArticles();\n }\n }\n\n loadInitialArticles() {\n if (this.integrationProvider) {\n this.isLoading = true;\n this.searchQuery = '';\n this.integrationProvider.fetchInitialArticles(this.routeContext).pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: (results) => {\n this.articles = results;\n this.isLoading = false;\n },\n error: (err) => {\n console.error('Error loading initial articles', err);\n this.isLoading = false;\n }\n });\n }\n }\n\n onSearchChange(query: string) {\n this.searchQuery = query;\n this.searchSubject.next(query);\n }\n\n handleClose() {\n this.isOpen = false;\n this.onClose.emit();\n }\n\n openArticle(article: RbHelpArticle) {\n this.openLink(article.url);\n }\n\n openKnowledgeBase() {\n this.openLink(this.resolvedLinks.knowledgeBase);\n this.onClickKnowledgeBase.emit();\n }\n\n openCommunity() {\n this.openLink(this.resolvedLinks.community);\n this.onClickCommunity.emit();\n }\n\n openNews() {\n this.openLink(this.resolvedLinks.news);\n this.onClickNews.emit();\n }\n\n openMyTickets() {\n this.openLink(this.resolvedLinks.myTickets);\n this.onClickMyTickets.emit();\n }\n\n /**\n * O chat é aberto pelo SDK do provedor, que vive na aplicação consumidora —\n * aqui só aplicamos a permissão e avisamos o host.\n */\n openChat() {\n if (!this.canUseChat) {\n return;\n }\n this.onClickChat.emit();\n }\n\n private openLink(url?: string) {\n if (url) {\n window.open(url, '_blank', 'noopener');\n }\n }\n}\n","<div class=\"rb-help-panel\" [class.rb-help-panel--open]=\"isOpen\">\n <div class=\"rb-help-panel__header\">\n <h3 class=\"rb-help-panel__title\">{{ panelTitle }}</h3>\n <button mat-icon-button class=\"rb-help-panel__close\" (click)=\"handleClose()\" aria-label=\"Fechar painel de ajuda\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"rb-help-panel__content\">\n <div class=\"rb-help-panel__search\">\n <div class=\"rb-help-panel__search-wrapper\">\n <svg class=\"rb-help-panel__search-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.9167 9.66667H10.2583L10.025 9.44167C10.8417 8.49167 11.3333 7.25833 11.3333 5.91667C11.3333 2.925 8.90833 0.5 5.91667 0.5C2.925 0.5 0.5 2.925 0.5 5.91667C0.5 8.90833 2.925 11.3333 5.91667 11.3333C7.25833 11.3333 8.49167 10.8417 9.44167 10.025L9.66667 10.2583V10.9167L13.8333 15.075L15.075 13.8333L10.9167 9.66667ZM5.91667 9.66667C3.84167 9.66667 2.16667 7.99167 2.16667 5.91667C2.16667 3.84167 3.84167 2.16667 5.91667 2.16667C7.99167 2.16667 9.66667 3.84167 9.66667 5.91667C9.66667 7.99167 7.99167 9.66667 5.91667 9.66667Z\" fill=\"#666666\"/>\n </svg>\n <input \n type=\"text\" \n placeholder=\"Pesquisar\" \n [ngModel]=\"searchQuery\" \n (ngModelChange)=\"onSearchChange($event)\"\n class=\"rb-help-panel__search-input\"\n >\n </div>\n </div>\n\n <div class=\"rb-help-panel__articles\">\n @if (isLoading) {\n <div class=\"rb-help-panel__loading\">Carregando...</div>\n }\n \n @for (article of articles; track article.id) {\n <div class=\"rb-help-panel__article-item\" (click)=\"openArticle(article)\">\n <span class=\"rb-help-panel__article-title\">{{ article.title }}</span>\n </div>\n }\n\n @if (!isLoading && articles.length === 0) {\n <div class=\"rb-help-panel__no-results\">\n Nenhum artigo encontrado.\n </div>\n }\n </div>\n </div>\n \n <div class=\"rb-help-panel__divider\"></div>\n\n <div class=\"rb-help-panel__footer\">\n <div class=\"rb-help-panel__footer-title\">Ainda com dúvidas?</div>\n \n <div class=\"rb-help-panel__quick-links\">\n @if (showKnowledgeBase) {\n <button class=\"rb-help-panel__quick-link-card\" (click)=\"openKnowledgeBase()\">\n <div class=\"rb-help-panel__quick-link-icon\">\n <ng-container *ngTemplateOutlet=\"usersIcon\"></ng-container>\n </div>\n <div class=\"rb-help-panel__quick-link-bg\">\n <span>Base de conhecimento</span>\n </div>\n </button>\n }\n\n @if (showCommunity) {\n <button class=\"rb-help-panel__quick-link-card\" (click)=\"openCommunity()\">\n <div class=\"rb-help-panel__quick-link-icon\">\n <ng-container *ngTemplateOutlet=\"usersIcon\"></ng-container>\n </div>\n <div class=\"rb-help-panel__quick-link-bg\">\n <span>Comunidade</span>\n </div>\n </button>\n }\n\n @if (showNews) {\n <button class=\"rb-help-panel__quick-link-card\" (click)=\"openNews()\">\n <div class=\"rb-help-panel__quick-link-icon\">\n <ng-container *ngTemplateOutlet=\"usersIcon\"></ng-container>\n </div>\n <div class=\"rb-help-panel__quick-link-bg\">\n <span>Novidades</span>\n </div>\n </button>\n }\n </div>\n\n <div class=\"rb-help-panel__footer-divider\"></div>\n\n <div class=\"rb-help-panel__actions\">\n @if (showMyTickets) {\n <button mat-stroked-button class=\"rb-help-panel__action-btn rb-help-panel__action-btn--outline\" (click)=\"openMyTickets()\">\n <mat-icon>person</mat-icon>\n Meus atendimentos\n </button>\n }\n\n @if (showChat) {\n <button\n mat-flat-button\n class=\"rb-help-panel__action-btn rb-help-panel__action-btn--primary\"\n [disabled]=\"!canUseChat\"\n [attr.title]=\"canUseChat ? null : chatBlockedTooltip\"\n (click)=\"openChat()\">\n <mat-icon>chat_bubble</mat-icon>\n Chat online\n </button>\n }\n </div>\n </div>\n</div>\n\n@if (isOpen) {\n <div class=\"rb-help-panel__overlay\" (click)=\"handleClose()\"></div>\n}\n\n<ng-template #usersIcon>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- Right user -->\n <circle cx=\"18.5\" cy=\"10\" r=\"2.5\" stroke=\"#FFFFFF\" stroke-width=\"1.5\"/>\n <path d=\"M16 18c0-2.21 1.79-4 4-4h.5c2.21 0 4 1.79 4 4\" stroke=\"#FFFFFF\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <!-- Left user -->\n <circle cx=\"5.5\" cy=\"10\" r=\"2.5\" stroke=\"#FFFFFF\" stroke-width=\"1.5\"/>\n <path d=\"M8 18c0-2.21-1.79-4-4-4H3.5c-2.21 0-4 1.79-4 4\" stroke=\"#FFFFFF\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <!-- Center user -->\n <circle cx=\"12\" cy=\"7\" r=\"3\" fill=\"#3B596A\" stroke=\"#FFFFFF\" stroke-width=\"2\"/>\n <path d=\"M6 18c0-2.76 2.24-5 5-5h2c2.76 0 5 2.24 5 5v1H6v-1z\" fill=\"#3B596A\" stroke=\"#FFFFFF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n</ng-template>\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { RbHelpArticle, RbHelpIntegrationProvider } from '../../interfaces/rb-help-panel.interface';\n\n/**\n * Help Center consultado pelo CRM (ui/lib/BarraPrincipal/Controladores/AcoesZendesk.js).\n */\nexport const RB_ZENDESK_HELP_CENTER_URL = 'https://crmrubeus.zendesk.com';\n\ninterface ZendeskArticle {\n id: number;\n title: string;\n html_url?: string;\n}\n\n/**\n * Provedor de artigos do painel de ajuda apontando para o Help Center da Rubeus.\n *\n * Os dois endpoints são públicos e não exigem autenticação, como no CRM.\n * Em caso de falha a lista volta vazia, preservando o comportamento do\n * `errorGetArtigo` da barra atual — o painel não quebra por indisponibilidade\n * da central.\n */\n@Injectable({ providedIn: 'root' })\nexport class RbZendeskHelpService implements RbHelpIntegrationProvider {\n private http = inject(HttpClient);\n\n /**\n * @param routeContext slug da rota atual, usado como label do artigo.\n * No CRM equivale a `DGlobal.acaoCliente.nomeURL.split('/')[0]`.\n */\n fetchInitialArticles(routeContext?: string): Observable<RbHelpArticle[]> {\n return this.http.get<{ articles?: ZendeskArticle[] }>(\n `${RB_ZENDESK_HELP_CENTER_URL}/api/v2/help_center/pt-br/articles.json`,\n { params: { label_names: routeContext ?? '' } }\n ).pipe(\n map(resposta => this.paraArtigos(resposta?.articles)),\n catchError(() => of([]))\n );\n }\n\n searchArticles(query: string): Observable<RbHelpArticle[]> {\n return this.http.get<{ results?: ZendeskArticle[] }>(\n `${RB_ZENDESK_HELP_CENTER_URL}/api/v2/help_center/articles/search.json`,\n { params: { query } }\n ).pipe(\n map(resposta => this.paraArtigos(resposta?.results)),\n catchError(() => of([]))\n );\n }\n\n private paraArtigos(artigos?: ZendeskArticle[]): RbHelpArticle[] {\n return (artigos ?? []).map(artigo => ({\n id: artigo.id,\n title: artigo.title,\n url: artigo.html_url\n }));\n }\n}\n","/*\n * Public API Surface of rb-angular-components\n */\n\n/* Components */\nexport * from './lib/components/rb-crud/rb-crud.component';\nexport * from './lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component';\nexport * from './lib/components/rb-content-box/rb-content-box.component';\nexport * from './lib/components/rb-dialog/rb-dialog.component';\nexport * from './lib/components/rb-filter-panel/rb-filter-panel.component';\nexport * from './lib/components/rb-filter-dropdown/rb-filter-dropdown.component';\nexport * from './lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component';\nexport * from './lib/components/rb-change-log-dialog/rb-change-log-dialog.component';\nexport * from './lib/components/rb-columns-sort-setting/rb-columns-sort-setting.component';\nexport * from './lib/components/rb-sidebar-navigation/rb-sidebar-navigation.component';\nexport * from './lib/components/rb-header/rb-header.component';\n/* Pipes */\nexport * from './lib/pipes/rb-custom/rb-custom.pipe';\nexport * from './lib/pipes/rb-conditional-class/rb-conditional-class.pipe';\nexport * from './lib/pipes/is-array.pipe';\n\n/* Directives */\nexport * from './lib/directives/rb-dynamic-button/rb-dynamic-button.directive';\nexport * from './lib/directives/rb-overflow-tooltip/rb-overflow-tooltip.directive';\n\n\n/* Interfaces */\nexport * from './lib/interfaces/rb-crud.interface';\nexport * from './lib/interfaces/button.interface';\nexport * from './lib/interfaces/rb-dialog.interface';\nexport * from './lib/interfaces/rb-filter.interface';\nexport * from './lib/interfaces/rb-change-log-dialog.interface';\nexport * from './lib/interfaces/rb-conditional-class.interface';\nexport * from './lib/interfaces/rb-sidebar-navigation.interface';\nexport * from './lib/interfaces/rb-header.interface';\nexport * from './lib/interfaces/rb-help-panel.interface';\nexport * from './lib/components/rb-help-panel/rb-help-panel.component';\nexport * from './lib/services/rb-zendesk-help/rb-zendesk-help.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClientFilterService","i2","i8","i1","i3","i2.ClientFilterService","i4","i5","i6"],"mappings":"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"}
|