@fuentis/phoenix-ui 0.0.8 → 0.0.9
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.
|
@@ -63,7 +63,7 @@ class SidebarItemComponent {
|
|
|
63
63
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: SidebarItemComponent, isStandalone: true, selector: "pho-sidebar-item", inputs: { item: "item", classname: "classname", isOpen: "isOpen" }, ngImport: i0, template: `<li class="list-none">
|
|
64
64
|
<a
|
|
65
65
|
[routerLink]="item.disabled ? null : item.path"
|
|
66
|
-
routerLinkActive="
|
|
66
|
+
routerLinkActive="surface-section"
|
|
67
67
|
[pTooltip]="!isOpen ? item.label : ''"
|
|
68
68
|
[ngClass]="[
|
|
69
69
|
classname,
|
|
@@ -99,7 +99,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
99
99
|
], encapsulation: ViewEncapsulation.None, template: `<li class="list-none">
|
|
100
100
|
<a
|
|
101
101
|
[routerLink]="item.disabled ? null : item.path"
|
|
102
|
-
routerLinkActive="
|
|
102
|
+
routerLinkActive="surface-section"
|
|
103
103
|
[pTooltip]="!isOpen ? item.label : ''"
|
|
104
104
|
[ngClass]="[
|
|
105
105
|
classname,
|
|
@@ -425,7 +425,7 @@ class ShellComponent {
|
|
|
425
425
|
this.isSidebarOpen = !this.isSidebarOpen;
|
|
426
426
|
}
|
|
427
427
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
428
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: ShellComponent, isStandalone: true, selector: "pho-shell", inputs: { mainItems: "mainItems", footerItem: "footerItem", isSidebarOpen: "isSidebarOpen" }, ngImport: i0, template: "<!-- Sidebar Layout -->\n<section\n [style]=\"{\n 'grid-template-columns': isSidebarOpen ? '16rem 1fr' : '4rem 1fr',\n 'grid-template-rows': '3.5rem 1fr',\n }\"\n class=\"h-screen pho-grid w-full transition-all transition-duration-200\"\n>\n <!-- Top header -->\n <pho-topbar\n class=\"bg-white pho-col-span-2\"\n [user]=\"{\n email: 'john@demo.com',\n username: 'John Doe',\n imageUrl: ''\n }\"\n >\n </pho-topbar>\n <!-- Sidebar -->\n <pho-sidebar\n [mainItems]=\"mainItems\"\n [footerItem]=\"footerItem\"\n [isSidebarOpen]=\"isSidebarOpen\"\n (toggleSidebar)=\"toggleSidebar()\"\n ></pho-sidebar>\n <!-- Main content -->\n <div
|
|
428
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: ShellComponent, isStandalone: true, selector: "pho-shell", inputs: { mainItems: "mainItems", footerItem: "footerItem", isSidebarOpen: "isSidebarOpen" }, ngImport: i0, template: "<!-- Sidebar Layout -->\n<section\n [style]=\"{\n 'grid-template-columns': isSidebarOpen ? '16rem 1fr' : '4rem 1fr',\n 'grid-template-rows': '3.5rem 1fr',\n }\"\n class=\"h-screen pho-grid w-full transition-all transition-duration-200\"\n>\n <!-- Top header -->\n <pho-topbar\n class=\"bg-white pho-col-span-2\"\n [user]=\"{\n email: 'john@demo.com',\n username: 'John Doe',\n imageUrl: ''\n }\"\n >\n </pho-topbar>\n <!-- Sidebar -->\n <pho-sidebar\n [mainItems]=\"mainItems\"\n [footerItem]=\"footerItem\"\n [isSidebarOpen]=\"isSidebarOpen\"\n (toggleSidebar)=\"toggleSidebar()\"\n ></pho-sidebar>\n <!-- Main content -->\n <div class=\"bg-primary-50\">\n <!-- <pho-status-header\n class=\"mb-4\"\n [data]=\"{\n name: 'Scope 1',\n approach: 'Reactive',\n date: '21.02.2025 14:28',\n title: 'Subtitle Example',\n status: 'Active',\n entity: 'E1',\n logs: [],\n createdBy: 'John Doe',\n }\"\n /> -->\n <ng-content> </ng-content>\n </div>\n</section>\n", dependencies: [{ kind: "component", type: SidebarComponent, selector: "pho-sidebar", inputs: ["classname", "mainItems", "footerItem", "isSidebarOpen"], outputs: ["toggleSidebar"] }, { kind: "component", type: TopbarComponent, selector: "pho-topbar", inputs: ["user", "shortModuleName"] }, { kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
|
|
429
429
|
}
|
|
430
430
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: ShellComponent, decorators: [{
|
|
431
431
|
type: Component,
|
|
@@ -434,7 +434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
434
434
|
TopbarComponent,
|
|
435
435
|
CommonModule,
|
|
436
436
|
StatusHeaderComponent,
|
|
437
|
-
], encapsulation: ViewEncapsulation.None, template: "<!-- Sidebar Layout -->\n<section\n [style]=\"{\n 'grid-template-columns': isSidebarOpen ? '16rem 1fr' : '4rem 1fr',\n 'grid-template-rows': '3.5rem 1fr',\n }\"\n class=\"h-screen pho-grid w-full transition-all transition-duration-200\"\n>\n <!-- Top header -->\n <pho-topbar\n class=\"bg-white pho-col-span-2\"\n [user]=\"{\n email: 'john@demo.com',\n username: 'John Doe',\n imageUrl: ''\n }\"\n >\n </pho-topbar>\n <!-- Sidebar -->\n <pho-sidebar\n [mainItems]=\"mainItems\"\n [footerItem]=\"footerItem\"\n [isSidebarOpen]=\"isSidebarOpen\"\n (toggleSidebar)=\"toggleSidebar()\"\n ></pho-sidebar>\n <!-- Main content -->\n <div
|
|
437
|
+
], encapsulation: ViewEncapsulation.None, template: "<!-- Sidebar Layout -->\n<section\n [style]=\"{\n 'grid-template-columns': isSidebarOpen ? '16rem 1fr' : '4rem 1fr',\n 'grid-template-rows': '3.5rem 1fr',\n }\"\n class=\"h-screen pho-grid w-full transition-all transition-duration-200\"\n>\n <!-- Top header -->\n <pho-topbar\n class=\"bg-white pho-col-span-2\"\n [user]=\"{\n email: 'john@demo.com',\n username: 'John Doe',\n imageUrl: ''\n }\"\n >\n </pho-topbar>\n <!-- Sidebar -->\n <pho-sidebar\n [mainItems]=\"mainItems\"\n [footerItem]=\"footerItem\"\n [isSidebarOpen]=\"isSidebarOpen\"\n (toggleSidebar)=\"toggleSidebar()\"\n ></pho-sidebar>\n <!-- Main content -->\n <div class=\"bg-primary-50\">\n <!-- <pho-status-header\n class=\"mb-4\"\n [data]=\"{\n name: 'Scope 1',\n approach: 'Reactive',\n date: '21.02.2025 14:28',\n title: 'Subtitle Example',\n status: 'Active',\n entity: 'E1',\n logs: [],\n createdBy: 'John Doe',\n }\"\n /> -->\n <ng-content> </ng-content>\n </div>\n</section>\n" }]
|
|
438
438
|
}], propDecorators: { mainItems: [{
|
|
439
439
|
type: Input
|
|
440
440
|
}], footerItem: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuentis-phoenix-ui.mjs","sources":["../../../projects/phoenix-ui/src/lib/components/sidebar-item/sidebar-item.component.ts","../../../projects/phoenix-ui/src/lib/components/sidebar/sidebar.component.ts","../../../projects/phoenix-ui/src/lib/components/sidebar/sidebar.component.html","../../../projects/phoenix-ui/src/lib/components/search-bar/search-bar.component.ts","../../../projects/phoenix-ui/src/lib/components/search-bar/search-bar.component.html","../../../projects/phoenix-ui/src/lib/components/user/user.component.ts","../../../projects/phoenix-ui/src/lib/components/topbar/topbar.component.ts","../../../projects/phoenix-ui/src/lib/components/topbar/topbar.component.html","../../../projects/phoenix-ui/src/lib/components/status-header/status-header.component.ts","../../../projects/phoenix-ui/src/lib/components/status-header/status-header.component.html","../../../projects/phoenix-ui/src/lib/components/shell/shell.component.ts","../../../projects/phoenix-ui/src/lib/components/shell/shell.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/utils/dataTable.enum.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-action/phoenix-data-table-action.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-action/phoenix-data-table-action.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/utils/data-cell-value.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/export-type.util.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-tabs/phoenix-data-table-tabs.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-tabs/phoenix-data-table-tabs.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table/isSelected.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/remove-html-tags.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table/phoenix-data-table.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table/phoenix-data-table.component.html","../../../projects/phoenix-ui/src/public-api.ts","../../../projects/phoenix-ui/src/fuentis-phoenix-ui.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { Tooltip, TooltipModule } from 'primeng/tooltip';\nexport interface SidebarItem {\n label: string;\n path: string;\n icon?: string;\n isActive?: boolean;\n disabled?: boolean;\n}\n@Component({\n selector: 'pho-sidebar-item',\n standalone: true,\n styleUrl: '../../styles/global.css',\n imports: [\n CommonModule,\n ButtonModule,\n RouterLink,\n RouterLinkActive,\n TooltipModule,\n TranslateModule,\n ],\n encapsulation: ViewEncapsulation.None,\n template: `<li class=\"list-none\">\n <a\n [routerLink]=\"item.disabled ? null : item.path\"\n routerLinkActive=\"bg-pink-500\"\n [pTooltip]=\"!isOpen ? item.label : ''\"\n [ngClass]=\"[\n classname,\n item.disabled ? 'opacity-50 cursor-not-allowed' : ''\n ]\"\n class=\"p-button no-underline w-full pt-2 pb-2 justify-content-start hover:bg-blue-50\t border-none overflow-hidden bg-transparent\"\n [style.pointer-events]=\"item.disabled ? 'none' : 'auto'\"\n >\n <img width=\"30\" [src]=\"item.icon\" alt=\"\" />\n <span *ngIf=\"isOpen\" class=\"text-primary\">{{\n item.label | translate\n }}</span>\n </a>\n <p-button\n class=\"p-tooltip\"\n pTooltip=\"Confirm to proceed\"\n showDelay=\"1000\"\n hideDelay=\"20000\"\n label=\"Save\"\n [disabled]=\"item.disabled\"\n />\n </li>`,\n})\nexport class SidebarItemComponent {\n @Input() item!: SidebarItem;\n @Input() classname: string = '';\n @Input() isOpen: boolean = true;\n\n constructor(private router: Router) {}\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport {\n SidebarItem,\n SidebarItemComponent,\n} from '../sidebar-item/sidebar-item.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'pho-sidebar',\n standalone: true,\n imports: [CommonModule, ButtonModule, SidebarItemComponent],\n templateUrl: './sidebar.component.html',\n styleUrl: '../../styles/global.css',\n encapsulation: ViewEncapsulation.None\n})\nexport class SidebarComponent {\n @Output() toggleSidebar = new EventEmitter<void>();\n @Input() classname: string = '';\n\n @Input() mainItems: SidebarItem[][] = [];\n @Input() footerItem: SidebarItem[] = [];\n\n @Input() isSidebarOpen = true;\n}\n","<aside\n [attr.data-sidebar-state]=\"isSidebarOpen ? 'exanded' : 'collapsed'\"\n class=\"relative shadow-1 pt-2 h-full\"\n>\n <!-- <span\n (click)=\"toggleSidebar.emit()\"\n [style.transition]=\"'transform 0.3s ease-in-out'\"\n [style.transform]=\"isSidebarOpen ? 'rotate(180deg)' : ''\"\n style=\"right: -10px\"\n class=\"pi pi-angle-right absolute top-0 border-circle z-5 p-1 cursor-pointer bg-gray-200 hover:bg-white-alpha-50\"\n ></span> -->\n\n <div\n class=\"flex flex-column gap-2 h-full\"\n style=\"scroll-padding-bottom: 5rem\"\n >\n <div class=\"group\">\n <ul class=\"flex flex-column p-0 m-0\">\n <ng-container\n *ngFor=\"let itemGroup of mainItems; let groupIndex = index\"\n >\n <!-- One sidebar group -->\n <ng-container *ngFor=\"let subItem of itemGroup; let subIndex = index\">\n <div\n *ngIf=\"groupIndex !== 0 && subIndex === 0\"\n style=\"height: 2px\"\n class=\"my-2 surface-100 -full\"\n ></div>\n\n <pho-sidebar-item\n [isOpen]=\"isSidebarOpen\"\n [item]=\"subItem\"\n class=\"group-item\"\n />\n </ng-container>\n </ng-container>\n </ul>\n </div>\n\n <div\n *ngIf=\"footerItem.length\"\n class=\"absolute bottom-0 left-0 p-3 flex flex-column w-full bg-blue-900\"\n >\n <div style=\"height: 2px\" class=\"mb-2 bg-white opacity-20\"></div>\n\n <ul class=\"flex flex-column gap-3 mb-2 p-0 m-0\">\n @for (item of footerItem; track $index) {\n\n <pho-sidebar-item\n [isOpen]=\"isSidebarOpen\"\n [item]=\"{\n label: 'Settings',\n path: '/settings',\n icon: '/assets/settings.svg'\n }\"\n class=\"group-item\"\n />\n }\n </ul>\n </div>\n </div>\n</aside>\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconField } from 'primeng/iconfield';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { TabsModule } from 'primeng/tabs';\n\n@Component({\n selector: 'pho-search-bar',\n standalone: true,\n imports: [\n IconField,\n InputIcon,\n TabsModule,\n FormsModule,\n CommonModule,\n PopoverModule,\n TranslateModule,\n InputTextModule,\n OverlayPanelModule,\n ],\n styleUrls: ['./search-bar.component.css'],\n templateUrl: './search-bar.component.html',\n animations: [\n trigger('openClose', [\n state(\n 'closed',\n style({\n width: '13vw',\n opacity: 0.8,\n })\n ),\n state(\n 'open',\n style({\n width: '50vw',\n opacity: 1,\n })\n ),\n transition('closed <=> open', [animate('300ms ease-in-out')]),\n ]),\n ],\n})\nexport class SearchBarComponent {\n isExpanded = false;\n searchQuery: string = '';\n\n @ViewChild('op') op!: Popover;\n\n @Input() expandable: boolean = true;\n @Input() placeholder: string = 'Global Search...';\n @Input() message: string = 'Start typing to see data';\n\n @Output() searchQueryChange = new EventEmitter<string>();\n\n // TODO: remove this when done\n tabIndex: number = 0;\n assetActive: boolean = false;\n ismsActive: boolean = false;\n tabChange(event: any) {\n this.tabIndex = event.index;\n }\n\n members = [\n {\n name: 'Amy Elsner',\n image: 'amyelsner.png',\n email: 'amy@email.com',\n role: 'Owner',\n },\n ];\n\n toggleExpand() {\n this.isExpanded = !this.isExpanded;\n }\n\n onInputFocus(event: Event): void {\n this.isExpanded = true;\n if (this.op) {\n this.op.show(event);\n }\n }\n\n clickInside(event: Event) {\n console.log('clickInside', event);\n }\n\n onInputBlur(event: Event): void {\n if (this.op) {\n console.log(event);\n setTimeout(() => {\n this.op.hide();\n this.isExpanded = false;\n }, 200);\n }\n }\n clickOutside(event: Event) {\n console.log('clickOutside', event);\n }\n\n onSearchQueryChange() {\n this.searchQueryChange.emit(this.searchQuery);\n }\n}\n","<p-iconfield [@openClose]=\"isExpanded ? 'open' : 'closed'\" style=\"width: 100%\">\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n pInputText\n type=\"text\"\n style=\"width: 100%\"\n [ngStyle]=\"{ 'font-size': '14px' }\"\n [(ngModel)]=\"searchQuery\"\n [placeholder]=\"placeholder\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n />\n</p-iconfield>\n<p-popover\n #op\n [dismissable]=\"false\"\n [style]=\"{ width: '50vw' }\"\n (click)=\"clickInside($event)\"\n [showTransitionOptions]=\"'.2s ease-in'\"\n [hideTransitionOptions]=\"'.2s ease-in-out'\"\n>\n <div\n role=\"banner\"\n *ngIf=\"!searchQuery\"\n style=\"border-radius: 3px\"\n class=\"text-center text-blue-900 p-inline-message-text p-2 bg-pho-secondary\"\n >\n <i class=\"pi pi-info-circle mr-2\"></i>\n <p class=\"inline\">{{ message }}</p>\n </div>\n\n <ng-content></ng-content>\n\n <div\n *ngIf=\"searchQuery\"\n class=\"flex fit-content flex-wrap\"\n style=\"width: 100%\"\n >\n <div\n class=\"overflow-container\"\n style=\"\n overflow-y: auto;\n max-height: 70vh;\n width: 100%;\n word-wrap: break-word;\n \"\n >\n <p-tabs value=\"ISMS\">\n <p-tablist>\n <p-tab value=\"ISMS\">ISMS</p-tab>\n <p-tab value=\"BCMS\">BCMS</p-tab>\n </p-tablist>\n <p-tabpanels>\n <p-tabpanel value=\"ISMS\">\n <div>\n <h3>Isms</h3>\n <p>Searching for: {{ searchQuery }}</p>\n </div>\n </p-tabpanel>\n\n <p-tabpanel value=\"BCMS\">\n <div>\n <h3>People Results</h3>\n <p>People matching: {{ searchQuery }}</p>\n </div>\n </p-tabpanel>\n </p-tabpanels>\n </p-tabs>\n </div>\n </div>\n</p-popover>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Avatar } from 'primeng/avatar';\nimport { Popover } from 'primeng/popover';\n\ninterface User {\n email: string;\n imageUrl?: string;\n username: string;\n}\n\n@Component({\n selector: 'pho-user',\n imports: [Avatar, Popover, TranslateModule],\n template: `\n <a\n (click)=\"op.toggle($event)\"\n class=\"layout-topbar-action flex flex-row justify-content-center align-items-center px-2 rounded-circle\"\n pRipple\n >\n <p-avatar [label]=\"user.imageUrl\" shape=\"circle\" />\n </a>\n <p-popover #op>\n <div class=\"flex gap-2 w-20rem\">\n <p-avatar label=\"U\" size=\"large\" shape=\"circle\" />\n <div class=\"flex gap-2 flex-column\">\n <div class=\"text-sm mt-auto\">{{ user.username }}</div>\n <div class=\"text-sm\">{{ user.email }}</div>\n </div>\n </div>\n\n <div\n class=\"border-top-1 border-300 flex flex-row justify-content-between mt-2 pt-2 mx-2\"\n >\n <a\n class=\"flex flex-row align-items-center cursor-pointer\"\n (click)=\"editSettings.emit()\"\n pRipple\n >\n <i class=\"pi pi-user-edit p-2\" style=\"font-size: 1.5rem\"></i>\n <span>{{ 'ACTION.EDIT_SETTINGS' | translate }}</span>\n </a>\n\n <a\n style=\"color: red\"\n class=\"flex flex-row align-items-center cursor-pointer\"\n (click)=\"logout.emit()\"\n pRipple\n >\n <i class=\"pi pi-power-off p-2\"></i>\n <span>{{ 'ACTION.LOGOUT' | translate }}</span>\n </a>\n </div>\n </p-popover>\n `,\n})\nexport class UserComponent {\n @Input() user!: User;\n @Output() logout = new EventEmitter<void>();\n @Output() editSettings = new EventEmitter<void>();\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Drawer } from 'primeng/drawer';\nimport { SearchBarComponent } from '../search-bar/search-bar.component';\nimport { UserComponent } from '../user/user.component';\n\n@Component({\n selector: 'pho-topbar',\n standalone: true,\n imports: [\n CommonModule,\n SearchBarComponent,\n UserComponent,\n TranslateModule,\n Drawer,\n ],\n templateUrl: './topbar.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TopbarComponent {\n supportApps: any;\n coreModules: any;\n sidebarConfig = { visible: false, type: '' };\n currentYear: number = new Date().getFullYear();\n visible: boolean = false;\n\n @Input() user!: { email: string; imageUrl?: string; username: string };\n @Input() shortModuleName?: string = 'BCMS';\n\n openSidebarPanel(key: string) {\n this.sidebarConfig.visible = true;\n this.sidebarConfig.type = key;\n }\n}\n","<header\n class=\"h-full px-2 justify-content-between w-full flex items-center align-items-center shadow-1\"\n>\n <!-- Title -->\n <div class=\"flex align-items-center justify-content-center gap-1\">\n <img class=\"h-2rem\" src=\"assets/logo_rose.png\" alt=\"fuentis_logo_white\" />\n\n <span *ngIf=\"shortModuleName\" class=\"text-3xl text-400\">|</span>\n <span class=\"text-xl text-400 mt-2\">\n {{ shortModuleName }}\n </span>\n </div>\n <!-- children -->\n <ng-content></ng-content>\n\n <div class=\"flex gap-2\">\n <!-- Search Bar -->\n <pho-search-bar></pho-search-bar>\n\n <!-- Side Panel -->\n <a\n class=\"layout-topbar-action flex flex-row justify-content-center align-items-center px-2 rounded-circle\"\n (click)=\"openSidebarPanel('PANEL_MODULES')\"\n pRipple\n >\n <i\n class=\"pi pi-th-large text-color-secondary\"\n style=\"font-size: 1.1rem\"\n ></i>\n </a>\n\n <!-- User Icon -->\n <pho-user [user]=\"user\" />\n </div>\n</header>\n\n<p-drawer\n styleClass=\"w-25rem\"\n position=\"right\"\n [(visible)]=\"sidebarConfig.visible\"\n>\n <ng-container *ngIf=\"sidebarConfig.type === 'PANEL_MODULES'\">\n <div class=\"flex flex-column h-full\">\n <h5 class=\"mt-5 ml-3\">\n {{ \"MEGA_MENU.MANAGEMENT_MODULES\" | translate }}\n </h5>\n <ul class=\"list-none mt-2 p-0\">\n <li\n *ngFor=\"let item of coreModules\"\n class=\"p-3 hover:bg-blue-100 cursor-pointer\"\n [ngClass]=\"{ 'opacity-40 pointer-events-none': item.disabled }\"\n >\n <a class=\"text-primary\" [href]=\"item.url\">\n <div class=\"flex\">\n <div class=\"w-4rem\" style=\"min-width: 56px\">\n <div\n style=\"background-color: #e74360\"\n class=\"w-3rem h-3rem border-round-sm flex justify-content-center align-items-center\"\n >\n <img\n [src]=\"\n 'assets/layout/images/modules/' + item.label + '.svg'\n \"\n class=\"w-2rem\"\n />\n </div>\n </div>\n <div>\n <h5 class=\"mb-0\">{{ item.label | translate }}</h5>\n <p class=\"w-11rem text-500 line-height-1\">\n {{ item.fullName | translate }}\n </p>\n </div>\n </div>\n </a>\n </li>\n </ul>\n <div style=\"height: 1px\" class=\"surface-300 mb-2 mt-2\"></div>\n <h5 class=\"ml-3\">\n {{ \"MODULES_LAUNCHER.SUPPORT\" | translate }}\n </h5>\n <div class=\"p-0 m-0 grid\">\n <div\n *ngFor=\"let item of supportApps\"\n class=\"hover:bg-blue-100 p-3 cursor-pointer col-4\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': item.disabled }\"\n >\n <a pRipple class=\"text-primary\" [href]=\"item.url\">\n <div class=\"flex flex-column align-items-center\">\n <img\n style=\"width: 30px\"\n [src]=\"\n 'assets/layout/images/app_launcher/' + item.icon + '.svg'\n \"\n alt=\"\"\n />\n <i class=\"p-1\" [class]=\"item.icon\"></i>\n <span class=\"p-2\">{{ item.label | translate }}</span>\n </div>\n </a>\n </div>\n </div>\n <div class=\"mt-auto p-2\">\n <div style=\"height: 1px\" class=\"surface-300 mb-2 mt-2\"></div>\n <div class=\"flex justify-content-between pb-3\">\n <a\n class=\"text-primary\"\n href=\"https://fuentis.atlassian.net/wiki/spaces/FSUG/overview\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"flex align-items-center\">\n <i class=\"pi pi-info-circle p-2\"></i>\n {{ \"APP_OPTIONS.CONTENT.GUIDE\" | translate }}\n </span>\n </a>\n <a\n class=\"text-primary\"\n href=\"https://fuentis.com/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"flex align-items-center\">\n <i class=\"pi pi-globe p-2\"></i> fuentis.com</span\n >\n </a>\n </div>\n\n <div class=\"text-500 text-sm pl-2\">\n © {{ currentYear }} fuentis. All Rights Reserved.\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"sidebarConfig.type === 'PANEL_NOTIFICATIONS'\">\n <div></div>\n </ng-container>\n</p-drawer>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { Card } from 'primeng/card';\nimport { Image } from 'primeng/image';\nimport { PanelModule } from 'primeng/panel';\nimport { Popover } from 'primeng/popover';\n\ninterface StatusHeaderData {\n approach: string;\n date: string;\n\n name: string;\n title: string;\n description?: string;\n status: string;\n entity: string;\n\n logs: {\n date: string;\n description: string;\n user: string;\n }[];\n createdBy: string;\n}\n\ninterface Icon {\n url: string;\n alt?: string;\n size: {\n width: string;\n height: string;\n };\n}\n\n@Component({\n selector: 'pho-status-header',\n imports: [PanelModule, ButtonModule, CommonModule, Image, Popover],\n templateUrl: './status-header.component.html',\n styleUrl: './status-header.component.css',\n})\nexport class StatusHeaderComponent {\n isCollapsed = false;\n @Input() iconUrl: string = '';\n @Input() icon: Icon = {\n url: '',\n size: {\n width: '50px',\n height: '50px',\n },\n };\n @Input() showQuickActions = true;\n @Input() data!: StatusHeaderData;\n}\n","<!-- <p-card> -->\n<div\n class=\"overflow-hidden\"\n style=\"transition: max-height 0.2s ease-in-out\"\n [style.maxHeight]=\"isCollapsed ? '0' : '500px'\"\n>\n <div class=\"flex gap-1 align-items-center\">\n <p class=\"font-600\">{{ data.name }}</p>\n <span class=\"text-xs text-gray-500\">{{ data.title }}</span>\n </div>\n\n <div class=\"flex gap-8\">\n <div class=\"flex gap-2\">\n <p-image\n styleClass=\"rounded-fullØ\"\n [ngStyle]=\"{ background: 'var(--pho-primary)' }\"\n [src]=\"icon.url\"\n [height]=\"icon.size.height\"\n [width]=\"icon.size.width\"\n [alt]=\"icon.alt\"\n />\n\n <div class=\"flex flex-column\">\n <div class=\"text-xs\">Entity: {{ data.entity }}</div>\n <div class=\"text-xs\">Created By : {{ data.createdBy }}</div>\n </div>\n </div>\n <div class=\"flex flex-column gap-2\">\n <span>Approach:</span>\n <span style=\"color: var(--pho-accent)\">{{ data.approach }}</span>\n </div>\n\n <div class=\"flex flex-column gap-2\">\n <p class=\"p-0 m-0\">\n Changed on\n <i (click)=\"details.toggle($event)\" class=\"pi pi-info-circle\"></i>\n </p>\n <span class=\"text-sm\">\n <i class=\"pi pi-calendar\"></i>\n 21.02.2025 14:28\n\n {{ data.status }}\n </span>\n </div>\n </div>\n\n <p-popover #details>\n <ng-template pTemplate>\n <div>slhdfsdbfjsl</div>\n <!-- <ng-container *ngFor=\"let weight of item?.tooltip\">\n <div class=\"flex justify-content-between\">\n <span style=\"min-width: 100px\" class=\"m-2 text-500 font-semibold\">\n {{ weight?.prMetaDataLabelKeyVal }}:\n </span>\n <span style=\"min-width: 100px\" class=\"m-2 font-medium\">\n {{ weight?.prValueLabelKeyVal }}\n </span>\n <span style=\"min-width: 100px\" class=\"ml-1 mt-2 mb-2 mr-1\">\n <phoenix-tag\n [customColor]=\"weight?.weightColor\"\n [content]=\"weight?.weightLabelKeyVal\"\n ></phoenix-tag>\n </span>\n </div>\n </ng-container> -->\n </ng-template>\n </p-popover>\n</div>\n<div class=\"flex justify-content-center\">\n <div class=\"toggler\">\n <button (click)=\"isCollapsed = !isCollapsed\">\n <i\n class=\"pi\"\n [ngClass]=\"isCollapsed ? 'pi-angle-down' : 'pi-angle-up'\"\n ></i>\n </button>\n </div>\n</div>\n<!-- </p-card> -->\n\n<!--\n@if (true) {\n <phoenix-status-header\n [title]=\"name\"\n [subtitle]=\"title\"\n [dataActions]=\"actions\"\n [sliceName]=\"false\"\n >\n @if (bpuuid || resourceuuid) {\n <div objectSelect class=\"mr-3\">\n <span (click)=\"onToggleClick('back')\" class=\"slide cursor-pointer\">\n <i\n style=\"color: #00395b\"\n class=\"pi pi-chevron-left cursor-pointer hover:text-blue-500\"\n ></i>\n </span>\n <span (click)=\"onQuickPickClick($event)\" class=\"slide\">\n <i\n style=\"color: #00395b\"\n class=\"pi pi-table ml-3 mr-3 cursor-pointer hover:text-blue-500\"\n ></i>\n </span>\n <span (click)=\"onToggleClick('forward')\" class=\"slide\">\n <i\n style=\"color: #00395b\"\n class=\"pi pi-chevron-right cursor-pointer hover:text-blue-500\"\n ></i>\n </span>\n </div>\n }\n\n <phoenix-status-bar\n statusData\n [statusBarConfig]=\"statusBarConfig\"\n [iconStyle]=\"{ height: 30, width: 30 }\"\n ></phoenix-status-bar>\n\n @if (!statusInfo) {\n <div>\n {{ 'SC_RA_STATUS_BAR.OBJECT_PLACEHOLDER' | translate }}\n </div>\n }\n </phoenix-status-header> -->\n\n<!-- \n <p-panel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center\">\n <ng-container *ngIf=\"defaultIcon\">\n <i\n class=\"pi pi-globe text-xl mr-2\"\n style=\"color: #d75063\"\n pTooltip=\"{{ 'TOOLTIPS.DEFAULT_SCOPE' | translate }}\"\n ></i>\n </ng-container>\n \n <ng-content select=\"[objectSelect]\"></ng-content>\n \n <span\n *ngIf=\"soTypeInfo\"\n class=\"text-xl text-500 font-semibold block mr-2\"\n >\n {{ soTypeInfo + ' :' }}\n </span>\n <div>\n <i *ngIf=\"icon\" [class]=\"icon + ' ml-2'\" style=\"font-size: 1em\"></i>\n \n @if (sliceName) {\n <span\n [pTooltip]=\"title?.length > 50 ? title : ''\"\n class=\"text-xl font-medium mr-2\"\n >{{\n title?.length > 50 ? (title | slice: 0 : 47) + '...' : title\n }}</span\n >\n } @else {\n <span class=\"text-xl font-medium mr-2\">{{ title }}</span>\n }\n </div>\n \n <span\n [pTooltip]=\"subtitle?.length > 30 ? subtitle : ''\"\n class=\"text-600\"\n >{{\n subtitle?.length > 30 ? (subtitle | slice: 0 : 27) + '...' : subtitle\n }}</span\n >\n \n <i\n *ngIf=\"link\"\n (click)=\"onLinkClick.emit()\"\n class=\"ml-2 pi pi-external-link link\"\n ></i>\n </div>\n </ng-template>\n \n <ng-template pTemplate=\"icons\">\n <div class=\"flex\">\n <ng-container *ngFor=\"let button of data\">\n <ng-container [ngSwitch]=\"button.buttonType\">\n <ng-container *ngSwitchCase=\"splitButton\">\n <button\n #btn\n type=\"button\"\n pButton\n class=\"p-button-text\"\n [disabled]=\"button?.disabled\"\n (click)=\"menu.toggle($event)\"\n [style.order]=\"button.order\"\n >\n <span class=\"button-icon mr-2\">\n <i class=\"{{ button.icon }}\"></i>\n </span>\n <span class=\"button-label\">\n {{ button.label | translate }}\n </span>\n <span class=\"button-icon ml-2\">\n <i class=\"pi pi-chevron-down\" style=\"font-size: 0.9rem\"></i>\n </span>\n </button>\n <p-tieredMenu\n #menu\n [model]=\"button.splitButtonItems!\"\n [popup]=\"true\"\n ></p-tieredMenu>\n </ng-container>\n \n <ng-container *ngSwitchCase=\"regularButton\">\n <p-button\n id=\"{{ button.id }}\"\n data-cy=\"s-ab-button-cy\"\n class=\"mr-2\"\n [text]=\"true\"\n icon=\"{{ button.icon }}\"\n label=\"{{ button.label! | translate }}\"\n [pTooltip]=\"!button.tooltip ? '' : (button.tooltip | translate)\"\n tooltipPosition=\"\"\n [disabled]=\"button.disabled\"\n (click)=\"!button.disabled && button.action()\"\n [style.order]=\"button.order\"\n [severity]=\"button.severity\"\n [loading]=\"button.loading!\"\n ></p-button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n \n <ng-template pTemplate=\"content\">\n <phoenix-status-bar\n statusData\n [statusBarConfig]=\"statusBarConfig\"\n [iconStyle]=\"{ height: 30, width: 30 }\"\n ></phoenix-status-bar>\n\n @if (!statusInfo) {\n <div>\n {{ 'SC_RA_STATUS_BAR.OBJECT_PLACEHOLDER' | translate }}\n </div>\n }\n </ng-template>\n </p-panel>\n \n} -->\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SidebarItem } from '../sidebar-item/sidebar-item.component';\nimport { SidebarComponent } from '../sidebar/sidebar.component';\nimport { TopbarComponent } from '../topbar/topbar.component';\nimport { StatusHeaderComponent } from '../status-header/status-header.component';\n\n@Component({\n selector: 'pho-shell',\n imports: [\n SidebarComponent,\n TopbarComponent,\n CommonModule,\n StatusHeaderComponent,\n ],\n templateUrl: './shell.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ShellComponent {\n @Input() mainItems: SidebarItem[][] = [];\n @Input() footerItem: SidebarItem[] = [];\n @Input() isSidebarOpen = true;\n\n toggleSidebar() {\n this.isSidebarOpen = !this.isSidebarOpen;\n }\n}\n","<!-- Sidebar Layout -->\n<section\n [style]=\"{\n 'grid-template-columns': isSidebarOpen ? '16rem 1fr' : '4rem 1fr',\n 'grid-template-rows': '3.5rem 1fr',\n }\"\n class=\"h-screen pho-grid w-full transition-all transition-duration-200\"\n>\n <!-- Top header -->\n <pho-topbar\n class=\"bg-white pho-col-span-2\"\n [user]=\"{\n email: 'john@demo.com',\n username: 'John Doe',\n imageUrl: ''\n }\"\n >\n </pho-topbar>\n <!-- Sidebar -->\n <pho-sidebar\n [mainItems]=\"mainItems\"\n [footerItem]=\"footerItem\"\n [isSidebarOpen]=\"isSidebarOpen\"\n (toggleSidebar)=\"toggleSidebar()\"\n ></pho-sidebar>\n <!-- Main content -->\n <div style=\"z-index: -1\" class=\"bg-primary-50\">\n <!-- <pho-status-header\n class=\"mb-4\"\n [data]=\"{\n name: 'Scope 1',\n approach: 'Reactive',\n date: '21.02.2025 14:28',\n title: 'Subtitle Example',\n status: 'Active',\n entity: 'E1',\n logs: [],\n createdBy: 'John Doe',\n }\"\n /> -->\n <ng-content> </ng-content>\n </div>\n</section>\n","export enum tableActionType {\n CREATE = 'create',\n EDIT = 'edit',\n DELETE = 'delete',\n DETAILS = 'details',\n ASSIGN = 'assign',\n APPLY = 'apply',\n OPEN_IN_NEW_TAB = 'open_in_new_tab',\n TAB = 'tab',\n OPEN_FULL_SCREEN = 'open_full_screen',\n ADD_LINK = 'add_link',\n DISCONNECT = 'disconnect',\n REMOVE = 'remove',\n SYNC = 'sync',\n MENU = 'menu',\n DROP = 'drop',\n OVERVIEW = 'overview',\n HISTORY = 'syncHistory',\n DOWNLOAD = 'download',\n ATTACH = 'attach',\n IMPORT = 'import',\n ///multiple options\n ASSIGN_FROM_CATALOG = 'ASSIGN_FROM_CATALOG',\n ASSIGN_FROM_ITEM = 'ASSIGN_FROM_ITEM',\n ASSIGN_CONTROLS = 'ASSING_CONTROLS',\n ASSIGN_MEASURE = 'ASSGIN_MEASURE',\n CREATE_ADITIONAL_MEASURE = 'CREATE_ADITIONAL_MEASURE',\n}\n\nexport enum tableButtonFormat {\n TEXT_ICON = 'TEXT_ICON',\n TEXT = 'TEXT',\n ICON = 'ICON',\n ICON_ROUNDED = 'ICON_ROUNDED',\n}\n\nexport enum tableButtonContext {\n GLOBAL = 'GLOBAL',\n BULK = 'BULK',\n ROW = 'ROW',\n}\n\nexport enum tableColumnType {\n TEXT = 'TEXT',\n RICH_TEXT = 'RICH_TEXT',\n TEXT_AREA = 'TEXT_AREA',\n DATE = 'DATE',\n DATE_COMPLEX = 'DATE_COMPLEX', //Date and time\n TAG = 'TAG',\n NUMBER = 'NUMBER',\n PERSON = 'PERSON',\n COMPLETNESS = 'COMPLETNESS',\n BOOLEAN = 'BOOLEAN',\n LIST = 'LIST',\n CUSTOM = 'CUSTOM',\n}\n\nexport enum tableSelectionType {\n CHECKBOX = 'checkbox',\n RADIO_BTN = 'radio_btn',\n}\n\nexport enum tableFilterType {\n ///not using text, its in global srch\n // TEXT = 'text',\n DATE = 'date',\n // NUMERIC = 'numeric',\n BOOLEAN = 'boolean',\n MULTISELECT = 'multiselect',\n COMPLETNESS = 'completness',\n // ICON = 'icon',\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { tableActionType, tableButtonContext } from '../utils/dataTable.enum';\nimport { TableAction } from '../utils/dataTable.interface';\n\ninterface BtnConfig {\n text: boolean;\n label: string;\n icon: string;\n outlined: boolean;\n class?: string;\n type?: string; // default is 'button' , for multiselect button set 'multiselect'\n items?: any;\n severity?:\n | 'info'\n | 'success'\n | 'warn'\n | 'danger'\n | 'secondary'\n | 'contrast'\n | 'help'\n | 'primary';\n checkboxrelatedauth?: boolean;\n}\nenum ico {\n import = 'pi pi-file-import',\n create = 'pi pi-plus',\n open_full_screen = 'pi pi-external-link',\n edit = 'pi pi-pencil',\n delete = 'pi pi-trash',\n assign = 'pi pi-paperclip',\n apply = 'pi pi-check-square',\n open_in_new_tab = 'pi pi-external-link',\n add_link = 'pi pi-link',\n disconnect = 'pi pi-link',\n remove = 'pi pi-minus',\n sync = 'pi pi-sync',\n menu = 'pi pi-ellipsis-v',\n drop = 'pi pi-angle-down',\n overview = 'pi pi-history',\n syncHistory = 'pi pi-history',\n download = 'pi pi-download',\n attach = 'pi pi-paperclip',\n details = 'pi pi-info-circle',\n}\n\n@Component({\n selector: 'phoenix-phoenix-data-table-action',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TooltipModule,\n TranslateModule,\n OverlayPanelModule,\n ],\n templateUrl: './phoenix-data-table-action.component.html',\n styleUrls: ['./phoenix-data-table-action.component.css'],\n})\n\n/// two disble opt\n/// Read only: Default scope/enity or any other reason | referenced type etc...\n/// solved with readonly property from response and it works per row. It works independed from user. Response has to return readonly:boolean\n\n/// Authorization\n//// needs in btn configuration and its fro all buttons. all rows\nexport class PhoenixDataTableActionComponent implements OnChanges {\n @Input({ required: true }) actionConfig!: TableAction;\n @Input() rowData!: any;\n @Input() selectedData!: any;\n\n @Output() actionClick = new EventEmitter<any>();\n\n icon!: string;\n disabled!: boolean | undefined;\n btnConfig!: BtnConfig;\n\n ngOnChanges(): void {\n this.icon = ico[this.actionConfig.type as keyof typeof ico];\n\n /* console.log(this.actionConfig);\n console.log(this.actionConfig.disabled); */\n ///set standard btn configuraton\n this.btnConfig = {\n text: true,\n label: this.actionConfig.label,\n icon: 'pi pi-circle',\n class: '',\n outlined: false,\n type: this.actionConfig.buttonType,\n items: this.actionConfig.items,\n checkboxrelatedauth: this.actionConfig.checkboxrelatedauth\n ? this.actionConfig.checkboxrelatedauth\n : false,\n };\n switch (this.actionConfig.context) {\n case tableButtonContext.GLOBAL:\n ///disable by permission\n\n this.disabled = this.actionConfig.disabled;\n break;\n case tableButtonContext.BULK:\n this.btnConfig.label = '';\n this.btnConfig.outlined = true;\n this.btnConfig.class = 'ml-1';\n ///disable by permission\n this.disabled = this.actionConfig.disabled;\n ///disable bulk button if no selection\n if (this.selectedData?.length <= 0) {\n this.disabled = true;\n }\n ///configure bulk delete button\n if (this.actionConfig.type === tableActionType.DELETE) {\n this.btnConfig.text = false;\n this.btnConfig.outlined = false;\n this.btnConfig.severity = 'danger';\n }\n\n break;\n case tableButtonContext.ROW:\n this.btnConfig.label = '';\n ///Test the order of disabling\n ///disable by permission\n this.disabled = this.actionConfig.disabled;\n if (this.actionConfig?.type && !this.actionConfig?.notauthorized) {\n this.disabled =\n this.rowData[this.actionConfig.type] != undefined &&\n this.rowData[this.actionConfig.type] != null\n ? !this.rowData[this.actionConfig.type]\n : false;\n }\n /// always disable delete button if object response is readOnly:true\n if (\n this.rowData?.readOnly &&\n this.actionConfig.type === tableActionType.DELETE\n ) {\n this.disabled = true;\n }\n /// this CUSTOM condition is only for BCMS Resources. readOnly is not enough (its not appropriate for ISMS & BCMS) we should have isEditable, isDeletable ets... boolean for each action :)\n if (\n this.rowData?.typeLabelKey === 'CUSTOM' &&\n this.actionConfig.type === tableActionType.OPEN_IN_NEW_TAB\n ) {\n this.disabled = true;\n }\n\n break;\n }\n }\n\n onActionClick($event: any) {\n this.actionClick.emit($event);\n }\n}\n","<p-overlayPanel #op>\n <ul class=\"list-none p-0 m-0\">\n <ng-container *ngFor=\"let item of btnConfig.items; let last = last\">\n <li\n class=\"cursor-pointer block\"\n [ngClass]=\"{ 'mb-3': !last, disabledAction: item.disabled }\"\n (click)=\"onActionClick(item)\"\n >\n <i class=\"mr-2\" [class]=\"item.icon\"></i> {{ item.label | translate }}\n </li>\n </ng-container>\n </ul>\n</p-overlayPanel>\n\n<p-button\n [attr.data-cy]=\"'table-button-' + this.actionConfig.type\"\n [label]=\"btnConfig.label | translate\"\n [text]=\"btnConfig.text\"\n [icon]=\"icon\"\n [disabled]=\"disabled\"\n [iconPos]=\"btnConfig.type === 'multiselect' ? 'right' : 'left'\"\n (click)=\"\n btnConfig.type === 'multiselect'\n ? op.toggle($event)\n : onActionClick(actionConfig)\n \"\n [outlined]=\"btnConfig.outlined\"\n [pTooltip]=\"actionConfig.label | translate\"\n tooltipPosition=\"bottom\"\n [class]=\"btnConfig.class\"\n [severity]=\"btnConfig.severity\"\n>\n</p-button>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TableColumn } from './dataTable.interface';\nimport { DatePipe } from '@angular/common';\nimport { tableColumnType } from './dataTable.enum';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'cellValue',\n standalone: true,\n})\nexport class CellValuePipe implements PipeTransform {\n /**\n * @todo Cell limit and Rich text ??? check if this is a solution\n */\n constructor(private datePipe: DatePipe, private trnalste: TranslateService) {}\n transform(value: any, col: TableColumn) {\n if (value) {\n console.log(value);\n\n switch (col.columnType) {\n case tableColumnType.TEXT:\n /** checking if there is a object instead of string. objects goes into non-lazy tables */\n\n const textValue = value?.name ?? value;\n\n if (typeof textValue === 'string') {\n return textValue;\n }\n\n return '--';\n\n case tableColumnType.DATE:\n return this.datePipe.transform(value);\n case tableColumnType.NUMBER:\n return value;\n }\n } else return '--';\n }\n}\n","export enum ExportType {\n PDF = 'PDF',\n EXCEL = 'EXCEL',\n}\n","import {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableAction } from '../utils/dataTable.interface';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BadgeModule } from 'primeng/badge';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nenum soType {\n modules = 'COMPL_APPLIED_MODULE',\n requirements = 'COMPL_APPLIED_REQUIREMENT',\n measures = 'COMPL_APPLIED_MEASURE',\n threats = 'COMPL_APPLIED_THREAT',\n risks = 'COMPL_APPLIED_RISK',\n controls = 'COMPL_APPLIED_CONTROL',\n}\n\n@Component({\n selector: 'phoenix-data-table-tabs',\n standalone: true,\n imports: [\n CommonModule,\n SelectButtonModule,\n FormsModule,\n TranslateModule,\n BadgeModule,\n ],\n templateUrl: './phoenix-data-table-tabs.component.html',\n styleUrls: ['./phoenix-data-table-tabs.component.css'],\n})\nexport class PhoenixDataTableTabsComponent implements OnInit {\n @Input({ required: true }) actions!: TableAction[];\n @Output() actionClick = new EventEmitter<any>();\n\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private dr = inject(DestroyRef);\n value!: string | undefined;\n\n ngOnInit(): void {\n this.preselectTab();\n this.router.events.pipe(takeUntilDestroyed(this.dr)).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.preselectTab();\n }\n });\n }\n preselectTab() {\n const sotype = this.route.snapshot.paramMap.get('sotype');\n const hasSouuid = this.route.snapshot.paramMap.has('souuid');\n\n if (sotype) {\n this.value = soType[sotype as keyof typeof soType];\n }\n\n if (hasSouuid && this.actions && this.actions.length > 0) {\n this.value = this.actions[0].key;\n }\n }\n onActionClick(event: any) {\n let opt = this.actions.find((i) => i.key === event.value);\n\n this.actionClick.emit(opt);\n }\n}\n","<p-selectButton\n [options]=\"actions\"\n optionValue=\"key\"\n [(ngModel)]=\"value\"\n optionLabel=\"icon\"\n [unselectable]=\"true\"\n (onChange)=\"onActionClick($event)\"\n>\n <ng-template let-item pTemplate>\n <span>\n {{ item.label }}\n </span>\n <span>\n <p-badge\n *ngIf=\"item.badgeCount\"\n [value]=\"item.badgeCount\"\n severity=\"danger\"\n />\n </span>\n </ng-template>\n</p-selectButton>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'isSelected',\n standalone: true,\n})\nexport class IsSelectedPipe implements PipeTransform {\n transform(item: any, selectedColumns: any[]): boolean {\n return selectedColumns.some(\n selectedItem => selectedItem.field == item.field,\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeHTMLTags',\n standalone: true,\n})\nexport class RemoveHTMLTagsPipe implements PipeTransform {\n transform(text: string): string {\n return text ? String(text).replace(/<[^>]+>/gm, '') : '';\n }\n}\n\n/* \n\nDIFFERENT PIPE\n==============\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeHTMLTags',\n standalone: true,\n})\nexport class RemoveHTMLTagsPipe implements PipeTransform {\n transform(text: string, ...usefulTags: any[]): string {\n return usefulTags.length > 0\n ? text.replace(\n new RegExp(`<(?!\\/?(${usefulTags.join('|')})\\s*\\/?)[^>]+>`, 'g'),\n '',\n )\n : text.replace(/<(?:.|\\s)*?>/g, '');\n }\n} */\n","import { CommonModule, DatePipe, LowerCasePipe } from '@angular/common';\nimport {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n input,\n} from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport {\n Table,\n TableHeaderCheckboxToggleEvent,\n TableLazyLoadEvent,\n TableModule,\n} from 'primeng/table';\nimport { PhoenixDataTableActionComponent } from '../phoenix-data-table-action/phoenix-data-table-action.component';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n// import { DateFormatService } from '@phoenix/service/common'; - configuration?\n// import * as FileSaver from 'file-saver'; - what package json\n// import jsPDF from 'jspdf'; - what package json\n// import autoTable from 'jspdf-autotable'; - what package json\nimport { FilterMatchMode } from 'primeng/api';\nimport { AvatarModule } from 'primeng/avatar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { TagModule } from 'primeng/tag';\nimport { CellValuePipe } from '../utils/data-cell-value.pipe';\nimport {\n tableButtonContext,\n tableColumnType,\n tableFilterType,\n tableSelectionType,\n} from '../utils/dataTable.enum';\nimport { TableColumn, TableConfiguration } from '../utils/dataTable.interface';\nimport { ExportType } from '../utils/export-type.util';\nimport { PhoenixDataTableTabsComponent } from '../phoenix-data-table-tabs/phoenix-data-table-tabs.component';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { IsSelectedPipe } from './isSelected.pipe';\nimport { ListboxModule } from 'primeng/listbox';\nimport { RemoveHTMLTagsPipe } from '../utils/remove-html-tags.pipe';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SelectModule } from 'primeng/select';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n/**\n * Transform data for non-lazy filtering\n * 1. transform data that goes into table (string to object value/name props )\n * 2. transform data that goes into dropdown filter (string to object value/name props )\n * 3. in cell-value pipe in table check if it's non-lazy tabel, if is take object.name (add lazyTable argument to pipe)\n */\n\n/**\n * @todo Add option to pass custom color to status tag -> modify response to match columnName + Color -> sample: actualRiskColor\n * @todo Check DATE format. there is a cell-pipe for that\n * @todo Filter persistance in localstorage\n * @todo Frozen columns fix\n *\n *\n *\n * * @todo unauthorized API for population MS filters\n * - Entities\n * - Catalogs\n * - Statuses\n * - Responsibles\n * - Types\n * - CIA att\n */\n\n///transforms input into context arrays. Action positions in table\nfunction resolveActions(value: TableConfiguration): any {\n const transformed: any = {\n globalActions: [],\n rowActions: [],\n bulkActions: [],\n\n ...value,\n };\n value.actions.forEach((a) => {\n switch (a.context) {\n case tableButtonContext.GLOBAL:\n transformed.globalActions.push(a);\n break;\n case tableButtonContext.ROW:\n transformed.rowActions.push(a);\n break;\n case tableButtonContext.BULK:\n transformed.bulkActions.push(a);\n break;\n default:\n break;\n }\n });\n\n transformed.globalFilter =\n transformed.globalFilter === undefined ? true : transformed.globalFilter;\n\n return transformed;\n}\n@Component({\n selector: 'phoenix-data-table',\n standalone: true,\n imports: [\n CommonModule,\n TableModule,\n ButtonModule,\n InputTextModule,\n MultiSelectModule,\n AvatarModule,\n TagModule,\n FormsModule,\n ReactiveFormsModule,\n SkeletonModule,\n TranslateModule,\n CheckboxModule,\n SelectModule,\n IconFieldModule,\n InputIconModule,\n ///Custom components\n PhoenixDataTableActionComponent,\n PhoenixDataTableTabsComponent,\n // Pipes\n CellValuePipe,\n TooltipModule,\n OverlayPanelModule,\n ListboxModule,\n IsSelectedPipe,\n RemoveHTMLTagsPipe,\n LowerCasePipe,\n ],\n templateUrl: './phoenix-data-table.component.html',\n styleUrls: ['./phoenix-data-table.component.css'],\n ///allow semantic\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class PhoenixDataTableComponent implements OnInit, OnChanges {\n @ViewChild('btn', { static: false }) overviewBtn!: any;\n @ViewChild('dt', { static: false }) table?: Table;\n @Input({ required: true }) data: any;\n @Input({ required: false }) exportdData: any;\n @Input({ required: true }) columns!: TableColumn[];\n loading = input.required<boolean>();\n @Input() totalRecords!: number;\n @Input({ required: true, transform: resolveActions }) tableConfiguration: any;\n @Output() actionClickEmmiter = new EventEmitter<any>();\n @Output() lazyLoadDataEmmiter = new EventEmitter<any>();\n @Output() onRowClickEmmiter = new EventEmitter<any>();\n @Output() onRowCheckboxRadioClickEmmiter = new EventEmitter<any>();\n @Output() onExportClickEmmiter = new EventEmitter<ExportType>();\n @Output() onSaveColumnsClickEmmiter = new EventEmitter<string[]>();\n @Output() onHeaderCheckboxToggleEmmiter = new EventEmitter<any>();\n @Input() exportData?: {\n type: ExportType;\n data: any;\n };\n public exportType = ExportType;\n\n ///injects\n translateService = inject(TranslateService);\n fb = inject(FormBuilder);\n // dateFormatService = inject(DateFormatService);\n dr = inject(DestroyRef);\n // private datePipe = inject(DatePipe);\n ///enum\n columnTypeEnum = tableColumnType;\n tableFilterTypeEnum = tableFilterType;\n selectionTypeEnum = tableSelectionType;\n ///columns\n _selectedColumns!: TableColumn[];\n selectedData: any[] = [];\n // configuration for Date Filter\n dateFormat!: string;\n dateFilterOptions = [\n {\n label: this.translateService.instant('primeng.dateIs'),\n value: FilterMatchMode.DATE_IS,\n },\n {\n label: this.translateService.instant('primeng.dateBefore'),\n value: FilterMatchMode.DATE_BEFORE,\n },\n {\n label: this.translateService.instant('primeng.dateAfter'),\n value: FilterMatchMode.DATE_AFTER,\n },\n ];\n\n globalFilterFields!: string[];\n filtersForm = new FormGroup({});\n originalData!: any;\n ngOnInit() {\n ///convert to signal\n this.originalData = [...this.data];\n if (this.tableConfiguration.filterConfiguration) {\n this.tableConfiguration.filterConfiguration.forEach((fc: any) => {\n const fControl = new FormControl();\n this.filtersForm.addControl(fc.key, fControl);\n });\n this.filtersForm.valueChanges\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe((r) => {\n this.data = this.filterTableData(this.originalData, r);\n });\n }\n\n ////configuration?\n // this.dateFormatService.currentDateFormat$\n // .pipe(takeUntilDestroyed(this.dr))\n // .subscribe((date: string) => {\n // this.dateFormat = date;\n // });\n }\n\n // Example array of field configurations\n\n filterTableData(originalArray: any[], mapping: any) {\n return originalArray.filter((item) => {\n let matches = true;\n\n for (const key in mapping) {\n if (mapping[key] && mapping[key].key) {\n if (item[key] !== mapping[key].key) {\n matches = false;\n break;\n }\n }\n }\n\n return matches;\n });\n }\n resetFilters() {\n this.data = this.originalData;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.['data']) {\n //Reset selection when data changes\n this.selectedData = [];\n }\n\n if (this.tableConfiguration.toggleColumns) {\n this._selectedColumns =\n this.tableConfiguration.toogleColumnsData &&\n this.tableConfiguration.toogleColumnsData.length > 0\n ? this.tableConfiguration.toogleColumnsData\n : this.columns;\n } else {\n this._selectedColumns = this.columns;\n }\n\n if (this._selectedColumns) {\n this.globalFilterFields = this._selectedColumns\n .filter(\n (sc) =>\n sc.columnType === this.columnTypeEnum.TEXT &&\n sc.filter === undefined\n )\n .map((sc) => sc.field);\n }\n ///adds 5 empty rows in order to display shimering\n if (this.data?.length === 0 && this.loading()) {\n for (let i = 0; i < 5; i++) {\n this.data.push({});\n }\n return this.data;\n }\n\n // if (this.exportdData?.type) {\n // if (this.exportdData.type === this.exportType.EXCEL) {\n // this.exportExcel(this.exportdData.data);\n // } else {\n // this.exportPdf(this.exportdData.data);\n // }\n // this.exportdData = null;\n // }\n\n if (this.exportData?.type) {\n switch (this.exportData?.type) {\n case ExportType.EXCEL:\n this.exportExcel(this.exportData.data);\n break;\n\n default:\n this.exportPdf(this.exportData.data);\n break;\n }\n this.exportdData = null;\n }\n }\n\n /**\n * Emits table actions\n * table source change (SC phase), global actions (create, assing), bluk and row actions\n * @description\n */\n actionClick(action: any, data?: any) {\n this.actionClickEmmiter.emit({ action, data });\n }\n\n /**\n * Lazy load\n * Use when lazy is set to TRUE\n * @description\n */\n loadData(event: TableLazyLoadEvent) {\n const tableFilter = {\n page: event.first && event.rows ? event.first / event.rows : 0,\n size: event.rows ? event.rows : 5,\n rows: event.rows,\n sortField: event.sortField,\n sortOrder: this.convertSortOrder(event?.sortOrder),\n filters: event.filters,\n globalFilter: event.globalFilter,\n };\n if (tableFilter.filters) delete tableFilter.filters['global'];\n this.lazyLoadDataEmmiter.emit(tableFilter);\n }\n\n convertSortOrder(sortOrder: number | null | undefined): string {\n return sortOrder ? (sortOrder === 1 ? 'ASC' : 'DESC') : 'ASC';\n }\n\n /**\n * Row click\n * --\n * @description custom method added for row click\n */\n onRowClick(event: Event, row: any) {\n ///emits row data when selecting radio or checkbox selection\n this.onRowCheckboxRadioClickEmmiter.emit(row);\n if ((event.target as HTMLElement).tagName === 'TD') {\n this.onRowClickEmmiter.emit(row);\n } else {\n this.enableDisableCheckBoxRelatedGlobalActions();\n }\n }\n\n enableDisableCheckBoxRelatedGlobalActions() {\n this.tableConfiguration.globalActions\n .filter((action: any) => action.checkboxrelatedauth)\n .map(\n (action: any) =>\n (this.overviewBtn.disabled = this.selectedData\n ? this.selectedData.length === 0\n : true)\n );\n }\n\n onHeaderCheckboxToggle(event: TableHeaderCheckboxToggleEvent) {\n this.enableDisableCheckBoxRelatedGlobalActions();\n this.onHeaderCheckboxToggleEmmiter.emit(event);\n }\n\n isRowSelectable(event: any): boolean | undefined {\n return typeof event.data?.canSelect === 'boolean'\n ? event.data.canSelect\n : true;\n }\n\n exportExcel(data: any[]) {\n /// missing dependencies\n // const filteredData: any = [];\n // let newList: TableColumn[] = JSON.parse(JSON.stringify(this.columns));\n // data?.forEach((item: any) => {\n // const filteredItem: any = {};\n // newList.forEach((col) => {\n // const field = col.field;\n // let convertToString;\n // if (item[field]?.hasOwnProperty('value')) {\n // convertToString = item[field].value?.toString() || '--';\n // } else if (item[field]?.hasOwnProperty('name')) {\n // convertToString = item[field].name?.toString() || '--';\n // } else {\n // convertToString = item[field]?.toString() || '--';\n // }\n // if (\n // col.columnType === tableColumnType.DATE ||\n // col.columnType === tableColumnType.DATE_COMPLEX\n // ) {\n // if (this.isISODateString(convertToString)) {\n // convertToString = this.datePipe.transform(\n // new Date(convertToString),\n // this.dateFormat\n // );\n // }\n // }\n // if (\n // (convertToString && col?.header) ||\n // (convertToString === null && col?.header) ||\n // (convertToString === '' && col?.header) ||\n // (convertToString === undefined && col?.header)\n // ) {\n // const header = this.translateService.instant(col.header);\n // if (convertToString) {\n // filteredItem[header] =\n // this.translateService.instant(convertToString);\n // } else {\n // filteredItem[header] = convertToString;\n // }\n // }\n // });\n // filteredData.push(filteredItem);\n // });\n // import('xlsx').then((xlsx) => {\n // const worksheet = xlsx.utils.json_to_sheet(filteredData);\n // const wscols = Object.keys(filteredData[0]).map((key) => {\n // const maxLength = filteredData.reduce((max: any, item: any) => {\n // const value = item[key] || '';\n // return Math.max(max, value.length);\n // }, key.length);\n // return { width: maxLength + 2 };\n // });\n // worksheet['!cols'] = wscols;\n // const workbook = { Sheets: { data: worksheet }, SheetNames: ['data'] };\n // const excelBuffer = xlsx.write(workbook, {\n // bookType: 'xlsx',\n // type: 'array',\n // });\n // this.saveAsExcelFile(excelBuffer);\n // });\n }\n\n exportPdf(data: any[]) {\n /// missing dependencies\n // const doc = new jsPDF({\n // orientation: 'landscape',\n // });\n // doc.setFont('helvetica');\n // const colHeaders = this.columns.map((col) => {\n // if (col.header) {\n // return this.translateService.instant(col.header);\n // }\n // });\n // const rows = data.map((item: any) =>\n // this.columns.map((col) => {\n // let value;\n // if (item[col.field]?.hasOwnProperty('value')) {\n // value = item[col.field].value?.toString() || '--';\n // } else if (item[col.field]?.hasOwnProperty('name')) {\n // value = item[col.field].name?.toString() || '--';\n // } else {\n // value = item[col.field]?.toString() || '--';\n // }\n // if (\n // col.columnType === tableColumnType.DATE ||\n // col.columnType === tableColumnType.DATE_COMPLEX\n // ) {\n // if (this.isISODateString(value)) {\n // value = this.datePipe.transform(new Date(value), this.dateFormat);\n // }\n // }\n // if (value) {\n // return this.translateService.instant(value);\n // } else {\n // return value;\n // }\n // })\n // );\n // autoTable(doc, {\n // head: [colHeaders],\n // body: rows,\n // styles: {\n // font: 'helvetica', // Ovde postavite font\n // fontSize: 10, // Ako je potrebno, promenite veličinu fonta\n // },\n // });\n // doc.save(\n // 'export - ' + this.datePipe.transform(new Date(), 'short') + '.pdf'\n // );\n }\n\n isISODateString(value: string): boolean {\n // Check if the string is a valid ISO date or a valid Date string\n const isoDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$/;\n\n // Check if the value matches the ISO date format\n if (isoDateRegex.test(value)) {\n return true;\n }\n\n // Check if the string can be parsed into a valid Date object\n const date = new Date(value);\n return !isNaN(date.getTime());\n }\n\n saveAsExcelFile(buffer: any): void {\n /// missing dependencies\n // const EXCEL_TYPE =\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n // const EXCEL_EXTENSION = '.xlsx';\n // const data: Blob = new Blob([buffer], {\n // type: EXCEL_TYPE,\n // });\n // FileSaver.saveAs(\n // data,\n // 'export - ' +\n // this.datePipe.transform(new Date(), 'short') +\n // EXCEL_EXTENSION\n // );\n }\n\n saveColumns() {\n this.onSaveColumnsClickEmmiter.emit(\n this._selectedColumns.map((col) => col.field)\n );\n }\n\n resetColumns() {\n this._selectedColumns = this.columns;\n this.saveColumns();\n }\n\n get selectedColumns(): TableColumn[] {\n return this._selectedColumns;\n }\n\n set selectedColumns(val: TableColumn[]) {\n //restore original order\n this._selectedColumns = this.columns.filter((col) =>\n val.some((v) => v.field === col.field)\n );\n }\n}\n","<!-- total records lazy???? -->\n<div class=\"border-1 border-round-sm border-300 border-round-md m-2\">\n <p-table\n #dt\n [selectionMode]=\"tableConfiguration.selectionMode\"\n [dataKey]=\"tableConfiguration.key ? tableConfiguration.key : 'id'\"\n [value]=\"data\"\n [lazy]=\"tableConfiguration.lazy\"\n [rowSelectable]=\"isRowSelectable\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [globalFilterFields]=\"globalFilterFields\"\n [resizableColumns]=\"true\"\n [scrollable]=\"true\"\n [size]=\"'small'\"\n [scrollHeight]=\"tableConfiguration.scrollHeight\"\n [selectionPageOnly]=\"true\"\n [(selection)]=\"selectedData\"\n (onLazyLoad)=\"loadData($event)\"\n [rowHover]=\"true\"\n (onHeaderCheckboxToggle)=\"onHeaderCheckboxToggle($event)\"\n >\n <!-- ********** CAPTION CAPTION CAPTION *********************** -->\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between\">\n <global-table-actions>\n <ng-container\n *ngFor=\"\n let action of tableConfiguration.globalActions;\n let i = index\n \"\n >\n <phoenix-phoenix-data-table-action\n #btn\n [actionConfig]=\"action\"\n (actionClick)=\"actionClick($event)\"\n ></phoenix-phoenix-data-table-action\n ></ng-container>\n <phoenix-data-table-tabs\n [attr.data-cy]=\"\n 'table-select-button-' + tableConfiguration.tabs?.key\n \"\n [actions]=\"tableConfiguration.tabs\"\n (actionClick)=\"actionClick($event)\"\n ></phoenix-data-table-tabs>\n </global-table-actions>\n <div class=\"flex align-items-center\">\n <p-button\n icon=\"pi pi-filter\"\n [rounded]=\"true\"\n label=\"Filter\"\n [text]=\"true\"\n severity=\"primary\"\n class=\"mr-2\"\n (onClick)=\"filters.toggle($event)\"\n />\n\n <p-button\n icon=\"pi pi-sliders-v\"\n [rounded]=\"true\"\n [text]=\"true\"\n severity=\"primary\"\n label=\"Columns\"\n class=\"mr-2\"\n [attr.data-cy]=\"'table-togg-button'\"\n (onClick)=\"cols.toggle($event)\"\n />\n\n <span\n *ngIf=\"tableConfiguration.globalFilter\"\n class=\"p-input-icon-left ml-auto\"\n >\n <p-iconfield>\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n [attr.data-cy]=\"'table-global-search'\"\n type=\"text\"\n (input)=\"dt.filterGlobal($any($event.target).value, 'contains')\"\n pInputText\n placeholder=\"{{\n 'SEARCH_PLACEHOLDERS.SEARCH_KEYWORD' | translate\n }}\"\n />\n </p-iconfield>\n </span>\n <p-button\n icon=\"pi pi-ellipsis-v\"\n [rounded]=\"true\"\n [text]=\"true\"\n severity=\"primary\"\n (onClick)=\"export.toggle($event)\"\n class=\"ml-2\"\n />\n\n <bulk-table-actions>\n <ng-container *ngFor=\"let action of tableConfiguration.bulkActions\">\n <phoenix-phoenix-data-table-action\n [actionConfig]=\"action\"\n [selectedData]=\"selectedData\"\n (actionClick)=\"actionClick(action, selectedData)\"\n ></phoenix-phoenix-data-table-action\n ></ng-container>\n </bulk-table-actions>\n </div>\n </div>\n </ng-template>\n <!-- ********** HEADER HEADER HEADER *********************** -->\n <ng-template pTemplate=\"header\">\n <tr style=\"height: 40px\" class=\"dt-header\">\n <ng-container [ngSwitch]=\"tableConfiguration.selectionType\">\n <th class=\"custom-th\" *ngSwitchCase=\"selectionTypeEnum.CHECKBOX\">\n <p-tableHeaderCheckbox\n [attr.data-cy]=\"'table-header-checkbox'\"\n ></p-tableHeaderCheckbox>\n </th>\n <th\n class=\"custom-th\"\n *ngSwitchCase=\"selectionTypeEnum.RADIO_BTN\"\n ></th>\n </ng-container>\n <!-- rest of columns -->\n <ng-container *ngFor=\"let col of selectedColumns; let i = index\">\n <th\n [attr.data-cy]=\"'table-col-' + i\"\n pResizableColumn\n class=\"custom-th font-bold\"\n [pSortableColumn]=\"\n col.filter === 'multiselect' && tableConfiguration.lazy != true\n ? col.field + '.name'\n : col.field\n \"\n >\n <!-- set sort icon visible by default -->\n <p-sortIcon\n [attr.data-cy]=\"'table-sort-' + col.field\"\n *ngIf=\"col.sortable === undefined ? true : col.sortable\"\n field=\"{{ col.field }}\"\n ></p-sortIcon>\n {{ col.header | translate }}\n </th>\n </ng-container>\n\n <!-- create empty th placeholders for actions -->\n <th class=\"custom-th\"></th>\n </tr>\n </ng-template>\n <!-- ********** BODY BODY BODY *********************** -->\n <ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n <ng-template #shimmer>\n <tr [attr.data-cy]=\"'table-row-' + rowIndex\">\n <td *ngFor=\"let col of columns; let even = even\">\n <p-skeleton\n [ngStyle]=\"{\n width: '60%',\n }\"\n ></p-skeleton>\n </td>\n\n <td>\n <p-skeleton\n [ngStyle]=\"{\n width: '20%',\n }\"\n ></p-skeleton>\n </td>\n </tr>\n </ng-template>\n <tr\n *ngIf=\"!loading(); else shimmer\"\n (click)=\"onRowClick($event, rowData)\"\n [pSelectableRow]=\"rowData\"\n [attr.data-cy]=\"'table-row-' + rowIndex\"\n >\n <ng-container [ngSwitch]=\"tableConfiguration.selectionType\">\n <td class=\"w-2rem\" *ngSwitchCase=\"selectionTypeEnum.CHECKBOX\">\n <p-tableCheckbox\n [attr.data-cy]=\"'table-checkbox'\"\n [disabled]=\"\n rowData?.canSelect !== undefined ? !rowData.canSelect : false\n \"\n [value]=\"rowData\"\n ></p-tableCheckbox>\n </td>\n <td *ngSwitchCase=\"selectionTypeEnum.RADIO_BTN\">\n <p-tableRadioButton\n [value]=\"rowData\"\n [attr.data-cy]=\"'table-radio-button'\"\n ></p-tableRadioButton>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of selectedColumns; let i = index\">\n <td class=\"cursor-pointer\">\n <ng-container\n *ngTemplateOutlet=\"\n cellValueTemp;\n context: { value: { rowData, col } }\n \"\n ></ng-container>\n </td>\n </ng-container>\n\n <!-- p-0 on td because buttons already have marign. so it makes row bigger -->\n <td class=\"p-0\">\n <ng-container *ngFor=\"let action of tableConfiguration.rowActions\">\n <phoenix-phoenix-data-table-action\n *ngIf=\"\n action.notauthorized ||\n (rowData[action.type] != undefined &&\n rowData[action.type] != null)\n \"\n [actionConfig]=\"action\"\n [rowData]=\"rowData\"\n (actionClick)=\"actionClick($event, rowData)\"\n ></phoenix-phoenix-data-table-action\n ></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\" let-state>\n <!-- Total Records: {{ state.totalRecords }} -->\n <!-- <i class=\"pi pi-cog\" style=\"font-size: 1.2rem; color: grey\"></i> -->\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <td class=\"p-2\" colspan=\"100\">\n <div class=\"flex align-items-center\">\n <i class=\"pi pi-info-circle mr-2\"></i>\n {{ \"MESSAGE.NO_RESULTS_FOUND\" | translate }}\n </div>\n </td>\n </ng-template>\n </p-table>\n</div>\n\n<!-- Celll value template -->\n\n<ng-template #cellValueTemp let-val=\"value\">\n <ng-container [ngSwitch]=\"val.col.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeEnum.TAG\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <!-- checking if there is a object instead of string. objects goes into non-lazy tables -> val.rowData[val.col.field].name || val.rowData[val.col.field] -->\n <p-tag\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.TAG | lowercase)\"\n [style]=\"{ 'background-color': val.rowData[val.col.field + 'Color'] }\"\n [value]=\"\n val.rowData[val.col.field].name || val.rowData[val.col.field]\n \"\n ></p-tag>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum.PERSON\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <p-avatar\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.PERSON | lowercase)\"\n [label]=\"val.rowData[val.col.field].name.charAt(0)\"\n styleClass=\"mr-1\"\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n shape=\"circle\"\n ></p-avatar>\n {{ val.rowData[val.col.field].name }}\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum.DATE\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n {{ val.rowData[val.col.field] | date : dateFormat }}\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.DATE_COMPLEX\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n {{ val.rowData[val.col.field] | date : dateFormat + \" | HH:mm\" }}\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.LIST\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <ul\n *ngFor=\"let item of val.rowData[val.col.field]\"\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.LIST | lowercase)\"\n >\n <li>{{ item.name }}</li>\n </ul>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.RICH_TEXT\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <div\n [pTooltip]=\"val.rowData[val.col.field] | removeHTMLTags\"\n style=\"width: 200px\"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.RICH_TEXT | lowercase)\n \"\n >\n {{ val.rowData[val.col.field] | removeHTMLTags }}\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum.TEXT_AREA\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <div\n [pTooltip]=\"val.rowData[val.col.field]\"\n style=\"width: 200px\"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.TEXT_AREA | lowercase)\n \"\n >\n {{ val.rowData[val.col.field] }}\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.BOOLEAN\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <i\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.BOOLEAN | lowercase)\"\n class=\"pi\"\n [ngClass]=\"{\n 'text-green-500 pi-check-circle': val.rowData[val.col.field],\n }\"\n ></i>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.CUSTOM\">\n <span\n [innerHTML]=\"val.col.customRenderer(val.rowData)\"\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.CUSTOM | lowercase)\"\n ></span>\n </ng-container>\n\n <ng-container *ngSwitchDefault\n ><td [attr.data-cy]=\"'table-cell-text'\">\n {{ val.rowData[val.col.field] | cellValue : val.col }}\n </td>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #emptyCell> -- </ng-template>\n\n<!-- Overlays for Columns/Filters/Exports -->\n\n<p-overlayPanel #cols>\n <div class=\"flex flex-column gap-3 w-25rem\">\n <div class=\"flex justify-content-between align-items-center\">\n <div class=\"text-lg font-bold\">Columns</div>\n <div>\n <p-button\n icon=\"pi pi-save\"\n [text]=\"true\"\n [label]=\"'ACTION.SAVE' | translate\"\n class=\"mr-2\"\n (click)=\"saveColumns()\"\n [attr.data-cy]=\"'table-save-col-button'\"\n />\n <p-button\n icon=\"pi pi-undo\"\n [text]=\"true\"\n [label]=\"'ACTION.RESET_FILTERS' | translate\"\n class=\"mr-2\"\n (click)=\"resetColumns()\"\n [attr.data-cy]=\"'table-reset-col-button'\"\n />\n </div>\n </div>\n\n <p-listbox\n [options]=\"columns\"\n [(ngModel)]=\"selectedColumns\"\n [multiple]=\"true\"\n [metaKeySelection]=\"false\"\n [listStyle]=\"{ 'max-height': '420px' }\"\n [attr.data-cy]=\"'table-list-box'\"\n >\n <ng-template let-item pTemplate=\"item\">\n <i *ngIf=\"item | isSelected : selectedColumns\" class=\"pi pi-eye\"></i>\n <i\n *ngIf=\"!(item | isSelected : selectedColumns)\"\n class=\"pi pi-eye-slash\"\n ></i>\n <span class=\"ml-2\"> {{ item.header | translate }}</span>\n </ng-template>\n </p-listbox>\n </div>\n</p-overlayPanel>\n\n<p-overlayPanel #filters>\n <div class=\"flex flex-column gap-3 w-25rem\">\n <div class=\"flex justify-content-between align-items-center\">\n <div class=\"text-lg font-bold\">Filter</div>\n <div>\n <p-button\n icon=\"pi pi-save\"\n [text]=\"true\"\n [label]=\"'ACTION.SAVE' | translate\"\n class=\"mr-2\"\n [attr.data-cy]=\"'table-save-col-button'\"\n />\n <p-button\n icon=\"pi pi-times\"\n [text]=\"true\"\n [label]=\"'Clear'\"\n class=\"mr-2\"\n (click)=\"resetFilters()\"\n [attr.data-cy]=\"'table-reset-col-button'\"\n />\n </div>\n </div>\n\n <div>\n <form [formGroup]=\"filtersForm\">\n @for(control of tableConfiguration.filterConfiguration; track\n control.key ){ @switch(control.type) { @case ('checkbox') {\n <div class=\"mb-4\">\n <p-checkbox\n binary=\"true\"\n type=\"checkbox\"\n [formControlName]=\"control.key\"\n />\n <label class=\"ml-2\">{{ control.label }}</label>\n </div>\n\n } @case ('dropdown') {\n <div class=\"mb-4\">\n <label class=\"mb-2 block\">{{ control.label }}</label>\n <p-select\n class=\"w-full\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n [formControlName]=\"control.key\"\n [showClear]=\"true\"\n />\n </div>\n\n } } }\n </form>\n </div>\n </div>\n</p-overlayPanel>\n\n<p-overlayPanel #export>\n <div class=\"flex flex-column gap-1\">\n <p-button\n pRipple\n text=\"true\"\n icon=\"pi pi-file-pdf\"\n (click)=\"onExportClickEmmiter.emit(exportType.PDF)\"\n class=\"mr-2\"\n [label]=\"'ACTION.EXPORT_TO_PDF' | translate\"\n ></p-button>\n\n <p-button\n pRipple\n text=\"true\"\n icon=\"pi pi-file-excel\"\n (click)=\"onExportClickEmmiter.emit(exportType.EXCEL)\"\n class=\"mr-2\"\n [label]=\"'ACTION.EXPORT_TO_XLS' | translate\"\n ></p-button>\n </div>\n</p-overlayPanel>\n","/*\n * Public API Surface of phoenix\n */\n\nexport * from './lib/components/sidebar/sidebar.component';\nexport * from './lib/components/topbar/topbar.component';\nexport * from './lib/components/search-bar/search-bar.component';\nexport * from './lib/components/sidebar-item/sidebar-item.component';\nexport * from './lib/components/user/user.component';\nexport * from './lib/components/status-header/status-header.component';\nexport * from './lib/components/shell/shell.component';\nexport * from './lib/components/data-table/phoenix-data-table/phoenix-data-table.component';\n//data-table utils\nexport * from './lib/components/data-table/utils/dataTable.enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i5","i1","i3","i4","i10","i15"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fuentis-phoenix-ui.mjs","sources":["../../../projects/phoenix-ui/src/lib/components/sidebar-item/sidebar-item.component.ts","../../../projects/phoenix-ui/src/lib/components/sidebar/sidebar.component.ts","../../../projects/phoenix-ui/src/lib/components/sidebar/sidebar.component.html","../../../projects/phoenix-ui/src/lib/components/search-bar/search-bar.component.ts","../../../projects/phoenix-ui/src/lib/components/search-bar/search-bar.component.html","../../../projects/phoenix-ui/src/lib/components/user/user.component.ts","../../../projects/phoenix-ui/src/lib/components/topbar/topbar.component.ts","../../../projects/phoenix-ui/src/lib/components/topbar/topbar.component.html","../../../projects/phoenix-ui/src/lib/components/status-header/status-header.component.ts","../../../projects/phoenix-ui/src/lib/components/status-header/status-header.component.html","../../../projects/phoenix-ui/src/lib/components/shell/shell.component.ts","../../../projects/phoenix-ui/src/lib/components/shell/shell.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/utils/dataTable.enum.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-action/phoenix-data-table-action.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-action/phoenix-data-table-action.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/utils/data-cell-value.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/export-type.util.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-tabs/phoenix-data-table-tabs.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table-tabs/phoenix-data-table-tabs.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table/isSelected.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/remove-html-tags.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table/phoenix-data-table.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/phoenix-data-table/phoenix-data-table.component.html","../../../projects/phoenix-ui/src/public-api.ts","../../../projects/phoenix-ui/src/fuentis-phoenix-ui.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { Tooltip, TooltipModule } from 'primeng/tooltip';\nexport interface SidebarItem {\n label: string;\n path: string;\n icon?: string;\n isActive?: boolean;\n disabled?: boolean;\n}\n@Component({\n selector: 'pho-sidebar-item',\n standalone: true,\n styleUrl: '../../styles/global.css',\n imports: [\n CommonModule,\n ButtonModule,\n RouterLink,\n RouterLinkActive,\n TooltipModule,\n TranslateModule,\n ],\n encapsulation: ViewEncapsulation.None,\n template: `<li class=\"list-none\">\n <a\n [routerLink]=\"item.disabled ? null : item.path\"\n routerLinkActive=\"surface-section\"\n [pTooltip]=\"!isOpen ? item.label : ''\"\n [ngClass]=\"[\n classname,\n item.disabled ? 'opacity-50 cursor-not-allowed' : ''\n ]\"\n class=\"p-button no-underline w-full pt-2 pb-2 justify-content-start hover:bg-blue-50\t border-none overflow-hidden bg-transparent\"\n [style.pointer-events]=\"item.disabled ? 'none' : 'auto'\"\n >\n <img width=\"30\" [src]=\"item.icon\" alt=\"\" />\n <span *ngIf=\"isOpen\" class=\"text-primary\">{{\n item.label | translate\n }}</span>\n </a>\n <p-button\n class=\"p-tooltip\"\n pTooltip=\"Confirm to proceed\"\n showDelay=\"1000\"\n hideDelay=\"20000\"\n label=\"Save\"\n [disabled]=\"item.disabled\"\n />\n </li>`,\n})\nexport class SidebarItemComponent {\n @Input() item!: SidebarItem;\n @Input() classname: string = '';\n @Input() isOpen: boolean = true;\n\n constructor(private router: Router) {}\n}\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport {\n SidebarItem,\n SidebarItemComponent,\n} from '../sidebar-item/sidebar-item.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'pho-sidebar',\n standalone: true,\n imports: [CommonModule, ButtonModule, SidebarItemComponent],\n templateUrl: './sidebar.component.html',\n styleUrl: '../../styles/global.css',\n encapsulation: ViewEncapsulation.None\n})\nexport class SidebarComponent {\n @Output() toggleSidebar = new EventEmitter<void>();\n @Input() classname: string = '';\n\n @Input() mainItems: SidebarItem[][] = [];\n @Input() footerItem: SidebarItem[] = [];\n\n @Input() isSidebarOpen = true;\n}\n","<aside\n [attr.data-sidebar-state]=\"isSidebarOpen ? 'exanded' : 'collapsed'\"\n class=\"relative shadow-1 pt-2 h-full\"\n>\n <!-- <span\n (click)=\"toggleSidebar.emit()\"\n [style.transition]=\"'transform 0.3s ease-in-out'\"\n [style.transform]=\"isSidebarOpen ? 'rotate(180deg)' : ''\"\n style=\"right: -10px\"\n class=\"pi pi-angle-right absolute top-0 border-circle z-5 p-1 cursor-pointer bg-gray-200 hover:bg-white-alpha-50\"\n ></span> -->\n\n <div\n class=\"flex flex-column gap-2 h-full\"\n style=\"scroll-padding-bottom: 5rem\"\n >\n <div class=\"group\">\n <ul class=\"flex flex-column p-0 m-0\">\n <ng-container\n *ngFor=\"let itemGroup of mainItems; let groupIndex = index\"\n >\n <!-- One sidebar group -->\n <ng-container *ngFor=\"let subItem of itemGroup; let subIndex = index\">\n <div\n *ngIf=\"groupIndex !== 0 && subIndex === 0\"\n style=\"height: 2px\"\n class=\"my-2 surface-100 -full\"\n ></div>\n\n <pho-sidebar-item\n [isOpen]=\"isSidebarOpen\"\n [item]=\"subItem\"\n class=\"group-item\"\n />\n </ng-container>\n </ng-container>\n </ul>\n </div>\n\n <div\n *ngIf=\"footerItem.length\"\n class=\"absolute bottom-0 left-0 p-3 flex flex-column w-full bg-blue-900\"\n >\n <div style=\"height: 2px\" class=\"mb-2 bg-white opacity-20\"></div>\n\n <ul class=\"flex flex-column gap-3 mb-2 p-0 m-0\">\n @for (item of footerItem; track $index) {\n\n <pho-sidebar-item\n [isOpen]=\"isSidebarOpen\"\n [item]=\"{\n label: 'Settings',\n path: '/settings',\n icon: '/assets/settings.svg'\n }\"\n class=\"group-item\"\n />\n }\n </ul>\n </div>\n </div>\n</aside>\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconField } from 'primeng/iconfield';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { TabsModule } from 'primeng/tabs';\n\n@Component({\n selector: 'pho-search-bar',\n standalone: true,\n imports: [\n IconField,\n InputIcon,\n TabsModule,\n FormsModule,\n CommonModule,\n PopoverModule,\n TranslateModule,\n InputTextModule,\n OverlayPanelModule,\n ],\n styleUrls: ['./search-bar.component.css'],\n templateUrl: './search-bar.component.html',\n animations: [\n trigger('openClose', [\n state(\n 'closed',\n style({\n width: '13vw',\n opacity: 0.8,\n })\n ),\n state(\n 'open',\n style({\n width: '50vw',\n opacity: 1,\n })\n ),\n transition('closed <=> open', [animate('300ms ease-in-out')]),\n ]),\n ],\n})\nexport class SearchBarComponent {\n isExpanded = false;\n searchQuery: string = '';\n\n @ViewChild('op') op!: Popover;\n\n @Input() expandable: boolean = true;\n @Input() placeholder: string = 'Global Search...';\n @Input() message: string = 'Start typing to see data';\n\n @Output() searchQueryChange = new EventEmitter<string>();\n\n // TODO: remove this when done\n tabIndex: number = 0;\n assetActive: boolean = false;\n ismsActive: boolean = false;\n tabChange(event: any) {\n this.tabIndex = event.index;\n }\n\n members = [\n {\n name: 'Amy Elsner',\n image: 'amyelsner.png',\n email: 'amy@email.com',\n role: 'Owner',\n },\n ];\n\n toggleExpand() {\n this.isExpanded = !this.isExpanded;\n }\n\n onInputFocus(event: Event): void {\n this.isExpanded = true;\n if (this.op) {\n this.op.show(event);\n }\n }\n\n clickInside(event: Event) {\n console.log('clickInside', event);\n }\n\n onInputBlur(event: Event): void {\n if (this.op) {\n console.log(event);\n setTimeout(() => {\n this.op.hide();\n this.isExpanded = false;\n }, 200);\n }\n }\n clickOutside(event: Event) {\n console.log('clickOutside', event);\n }\n\n onSearchQueryChange() {\n this.searchQueryChange.emit(this.searchQuery);\n }\n}\n","<p-iconfield [@openClose]=\"isExpanded ? 'open' : 'closed'\" style=\"width: 100%\">\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n pInputText\n type=\"text\"\n style=\"width: 100%\"\n [ngStyle]=\"{ 'font-size': '14px' }\"\n [(ngModel)]=\"searchQuery\"\n [placeholder]=\"placeholder\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n />\n</p-iconfield>\n<p-popover\n #op\n [dismissable]=\"false\"\n [style]=\"{ width: '50vw' }\"\n (click)=\"clickInside($event)\"\n [showTransitionOptions]=\"'.2s ease-in'\"\n [hideTransitionOptions]=\"'.2s ease-in-out'\"\n>\n <div\n role=\"banner\"\n *ngIf=\"!searchQuery\"\n style=\"border-radius: 3px\"\n class=\"text-center text-blue-900 p-inline-message-text p-2 bg-pho-secondary\"\n >\n <i class=\"pi pi-info-circle mr-2\"></i>\n <p class=\"inline\">{{ message }}</p>\n </div>\n\n <ng-content></ng-content>\n\n <div\n *ngIf=\"searchQuery\"\n class=\"flex fit-content flex-wrap\"\n style=\"width: 100%\"\n >\n <div\n class=\"overflow-container\"\n style=\"\n overflow-y: auto;\n max-height: 70vh;\n width: 100%;\n word-wrap: break-word;\n \"\n >\n <p-tabs value=\"ISMS\">\n <p-tablist>\n <p-tab value=\"ISMS\">ISMS</p-tab>\n <p-tab value=\"BCMS\">BCMS</p-tab>\n </p-tablist>\n <p-tabpanels>\n <p-tabpanel value=\"ISMS\">\n <div>\n <h3>Isms</h3>\n <p>Searching for: {{ searchQuery }}</p>\n </div>\n </p-tabpanel>\n\n <p-tabpanel value=\"BCMS\">\n <div>\n <h3>People Results</h3>\n <p>People matching: {{ searchQuery }}</p>\n </div>\n </p-tabpanel>\n </p-tabpanels>\n </p-tabs>\n </div>\n </div>\n</p-popover>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Avatar } from 'primeng/avatar';\nimport { Popover } from 'primeng/popover';\n\ninterface User {\n email: string;\n imageUrl?: string;\n username: string;\n}\n\n@Component({\n selector: 'pho-user',\n imports: [Avatar, Popover, TranslateModule],\n template: `\n <a\n (click)=\"op.toggle($event)\"\n class=\"layout-topbar-action flex flex-row justify-content-center align-items-center px-2 rounded-circle\"\n pRipple\n >\n <p-avatar [label]=\"user.imageUrl\" shape=\"circle\" />\n </a>\n <p-popover #op>\n <div class=\"flex gap-2 w-20rem\">\n <p-avatar label=\"U\" size=\"large\" shape=\"circle\" />\n <div class=\"flex gap-2 flex-column\">\n <div class=\"text-sm mt-auto\">{{ user.username }}</div>\n <div class=\"text-sm\">{{ user.email }}</div>\n </div>\n </div>\n\n <div\n class=\"border-top-1 border-300 flex flex-row justify-content-between mt-2 pt-2 mx-2\"\n >\n <a\n class=\"flex flex-row align-items-center cursor-pointer\"\n (click)=\"editSettings.emit()\"\n pRipple\n >\n <i class=\"pi pi-user-edit p-2\" style=\"font-size: 1.5rem\"></i>\n <span>{{ 'ACTION.EDIT_SETTINGS' | translate }}</span>\n </a>\n\n <a\n style=\"color: red\"\n class=\"flex flex-row align-items-center cursor-pointer\"\n (click)=\"logout.emit()\"\n pRipple\n >\n <i class=\"pi pi-power-off p-2\"></i>\n <span>{{ 'ACTION.LOGOUT' | translate }}</span>\n </a>\n </div>\n </p-popover>\n `,\n})\nexport class UserComponent {\n @Input() user!: User;\n @Output() logout = new EventEmitter<void>();\n @Output() editSettings = new EventEmitter<void>();\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Drawer } from 'primeng/drawer';\nimport { SearchBarComponent } from '../search-bar/search-bar.component';\nimport { UserComponent } from '../user/user.component';\n\n@Component({\n selector: 'pho-topbar',\n standalone: true,\n imports: [\n CommonModule,\n SearchBarComponent,\n UserComponent,\n TranslateModule,\n Drawer,\n ],\n templateUrl: './topbar.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TopbarComponent {\n supportApps: any;\n coreModules: any;\n sidebarConfig = { visible: false, type: '' };\n currentYear: number = new Date().getFullYear();\n visible: boolean = false;\n\n @Input() user!: { email: string; imageUrl?: string; username: string };\n @Input() shortModuleName?: string = 'BCMS';\n\n openSidebarPanel(key: string) {\n this.sidebarConfig.visible = true;\n this.sidebarConfig.type = key;\n }\n}\n","<header\n class=\"h-full px-2 justify-content-between w-full flex items-center align-items-center shadow-1\"\n>\n <!-- Title -->\n <div class=\"flex align-items-center justify-content-center gap-1\">\n <img class=\"h-2rem\" src=\"assets/logo_rose.png\" alt=\"fuentis_logo_white\" />\n\n <span *ngIf=\"shortModuleName\" class=\"text-3xl text-400\">|</span>\n <span class=\"text-xl text-400 mt-2\">\n {{ shortModuleName }}\n </span>\n </div>\n <!-- children -->\n <ng-content></ng-content>\n\n <div class=\"flex gap-2\">\n <!-- Search Bar -->\n <pho-search-bar></pho-search-bar>\n\n <!-- Side Panel -->\n <a\n class=\"layout-topbar-action flex flex-row justify-content-center align-items-center px-2 rounded-circle\"\n (click)=\"openSidebarPanel('PANEL_MODULES')\"\n pRipple\n >\n <i\n class=\"pi pi-th-large text-color-secondary\"\n style=\"font-size: 1.1rem\"\n ></i>\n </a>\n\n <!-- User Icon -->\n <pho-user [user]=\"user\" />\n </div>\n</header>\n\n<p-drawer\n styleClass=\"w-25rem\"\n position=\"right\"\n [(visible)]=\"sidebarConfig.visible\"\n>\n <ng-container *ngIf=\"sidebarConfig.type === 'PANEL_MODULES'\">\n <div class=\"flex flex-column h-full\">\n <h5 class=\"mt-5 ml-3\">\n {{ \"MEGA_MENU.MANAGEMENT_MODULES\" | translate }}\n </h5>\n <ul class=\"list-none mt-2 p-0\">\n <li\n *ngFor=\"let item of coreModules\"\n class=\"p-3 hover:bg-blue-100 cursor-pointer\"\n [ngClass]=\"{ 'opacity-40 pointer-events-none': item.disabled }\"\n >\n <a class=\"text-primary\" [href]=\"item.url\">\n <div class=\"flex\">\n <div class=\"w-4rem\" style=\"min-width: 56px\">\n <div\n style=\"background-color: #e74360\"\n class=\"w-3rem h-3rem border-round-sm flex justify-content-center align-items-center\"\n >\n <img\n [src]=\"\n 'assets/layout/images/modules/' + item.label + '.svg'\n \"\n class=\"w-2rem\"\n />\n </div>\n </div>\n <div>\n <h5 class=\"mb-0\">{{ item.label | translate }}</h5>\n <p class=\"w-11rem text-500 line-height-1\">\n {{ item.fullName | translate }}\n </p>\n </div>\n </div>\n </a>\n </li>\n </ul>\n <div style=\"height: 1px\" class=\"surface-300 mb-2 mt-2\"></div>\n <h5 class=\"ml-3\">\n {{ \"MODULES_LAUNCHER.SUPPORT\" | translate }}\n </h5>\n <div class=\"p-0 m-0 grid\">\n <div\n *ngFor=\"let item of supportApps\"\n class=\"hover:bg-blue-100 p-3 cursor-pointer col-4\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': item.disabled }\"\n >\n <a pRipple class=\"text-primary\" [href]=\"item.url\">\n <div class=\"flex flex-column align-items-center\">\n <img\n style=\"width: 30px\"\n [src]=\"\n 'assets/layout/images/app_launcher/' + item.icon + '.svg'\n \"\n alt=\"\"\n />\n <i class=\"p-1\" [class]=\"item.icon\"></i>\n <span class=\"p-2\">{{ item.label | translate }}</span>\n </div>\n </a>\n </div>\n </div>\n <div class=\"mt-auto p-2\">\n <div style=\"height: 1px\" class=\"surface-300 mb-2 mt-2\"></div>\n <div class=\"flex justify-content-between pb-3\">\n <a\n class=\"text-primary\"\n href=\"https://fuentis.atlassian.net/wiki/spaces/FSUG/overview\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"flex align-items-center\">\n <i class=\"pi pi-info-circle p-2\"></i>\n {{ \"APP_OPTIONS.CONTENT.GUIDE\" | translate }}\n </span>\n </a>\n <a\n class=\"text-primary\"\n href=\"https://fuentis.com/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"flex align-items-center\">\n <i class=\"pi pi-globe p-2\"></i> fuentis.com</span\n >\n </a>\n </div>\n\n <div class=\"text-500 text-sm pl-2\">\n © {{ currentYear }} fuentis. All Rights Reserved.\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"sidebarConfig.type === 'PANEL_NOTIFICATIONS'\">\n <div></div>\n </ng-container>\n</p-drawer>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { Card } from 'primeng/card';\nimport { Image } from 'primeng/image';\nimport { PanelModule } from 'primeng/panel';\nimport { Popover } from 'primeng/popover';\n\ninterface StatusHeaderData {\n approach: string;\n date: string;\n\n name: string;\n title: string;\n description?: string;\n status: string;\n entity: string;\n\n logs: {\n date: string;\n description: string;\n user: string;\n }[];\n createdBy: string;\n}\n\ninterface Icon {\n url: string;\n alt?: string;\n size: {\n width: string;\n height: string;\n };\n}\n\n@Component({\n selector: 'pho-status-header',\n imports: [PanelModule, ButtonModule, CommonModule, Image, Popover],\n templateUrl: './status-header.component.html',\n styleUrl: './status-header.component.css',\n})\nexport class StatusHeaderComponent {\n isCollapsed = false;\n @Input() iconUrl: string = '';\n @Input() icon: Icon = {\n url: '',\n size: {\n width: '50px',\n height: '50px',\n },\n };\n @Input() showQuickActions = true;\n @Input() data!: StatusHeaderData;\n}\n","<!-- <p-card> -->\n<div\n class=\"overflow-hidden\"\n style=\"transition: max-height 0.2s ease-in-out\"\n [style.maxHeight]=\"isCollapsed ? '0' : '500px'\"\n>\n <div class=\"flex gap-1 align-items-center\">\n <p class=\"font-600\">{{ data.name }}</p>\n <span class=\"text-xs text-gray-500\">{{ data.title }}</span>\n </div>\n\n <div class=\"flex gap-8\">\n <div class=\"flex gap-2\">\n <p-image\n styleClass=\"rounded-fullØ\"\n [ngStyle]=\"{ background: 'var(--pho-primary)' }\"\n [src]=\"icon.url\"\n [height]=\"icon.size.height\"\n [width]=\"icon.size.width\"\n [alt]=\"icon.alt\"\n />\n\n <div class=\"flex flex-column\">\n <div class=\"text-xs\">Entity: {{ data.entity }}</div>\n <div class=\"text-xs\">Created By : {{ data.createdBy }}</div>\n </div>\n </div>\n <div class=\"flex flex-column gap-2\">\n <span>Approach:</span>\n <span style=\"color: var(--pho-accent)\">{{ data.approach }}</span>\n </div>\n\n <div class=\"flex flex-column gap-2\">\n <p class=\"p-0 m-0\">\n Changed on\n <i (click)=\"details.toggle($event)\" class=\"pi pi-info-circle\"></i>\n </p>\n <span class=\"text-sm\">\n <i class=\"pi pi-calendar\"></i>\n 21.02.2025 14:28\n\n {{ data.status }}\n </span>\n </div>\n </div>\n\n <p-popover #details>\n <ng-template pTemplate>\n <div>slhdfsdbfjsl</div>\n <!-- <ng-container *ngFor=\"let weight of item?.tooltip\">\n <div class=\"flex justify-content-between\">\n <span style=\"min-width: 100px\" class=\"m-2 text-500 font-semibold\">\n {{ weight?.prMetaDataLabelKeyVal }}:\n </span>\n <span style=\"min-width: 100px\" class=\"m-2 font-medium\">\n {{ weight?.prValueLabelKeyVal }}\n </span>\n <span style=\"min-width: 100px\" class=\"ml-1 mt-2 mb-2 mr-1\">\n <phoenix-tag\n [customColor]=\"weight?.weightColor\"\n [content]=\"weight?.weightLabelKeyVal\"\n ></phoenix-tag>\n </span>\n </div>\n </ng-container> -->\n </ng-template>\n </p-popover>\n</div>\n<div class=\"flex justify-content-center\">\n <div class=\"toggler\">\n <button (click)=\"isCollapsed = !isCollapsed\">\n <i\n class=\"pi\"\n [ngClass]=\"isCollapsed ? 'pi-angle-down' : 'pi-angle-up'\"\n ></i>\n </button>\n </div>\n</div>\n<!-- </p-card> -->\n\n<!--\n@if (true) {\n <phoenix-status-header\n [title]=\"name\"\n [subtitle]=\"title\"\n [dataActions]=\"actions\"\n [sliceName]=\"false\"\n >\n @if (bpuuid || resourceuuid) {\n <div objectSelect class=\"mr-3\">\n <span (click)=\"onToggleClick('back')\" class=\"slide cursor-pointer\">\n <i\n style=\"color: #00395b\"\n class=\"pi pi-chevron-left cursor-pointer hover:text-blue-500\"\n ></i>\n </span>\n <span (click)=\"onQuickPickClick($event)\" class=\"slide\">\n <i\n style=\"color: #00395b\"\n class=\"pi pi-table ml-3 mr-3 cursor-pointer hover:text-blue-500\"\n ></i>\n </span>\n <span (click)=\"onToggleClick('forward')\" class=\"slide\">\n <i\n style=\"color: #00395b\"\n class=\"pi pi-chevron-right cursor-pointer hover:text-blue-500\"\n ></i>\n </span>\n </div>\n }\n\n <phoenix-status-bar\n statusData\n [statusBarConfig]=\"statusBarConfig\"\n [iconStyle]=\"{ height: 30, width: 30 }\"\n ></phoenix-status-bar>\n\n @if (!statusInfo) {\n <div>\n {{ 'SC_RA_STATUS_BAR.OBJECT_PLACEHOLDER' | translate }}\n </div>\n }\n </phoenix-status-header> -->\n\n<!-- \n <p-panel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center\">\n <ng-container *ngIf=\"defaultIcon\">\n <i\n class=\"pi pi-globe text-xl mr-2\"\n style=\"color: #d75063\"\n pTooltip=\"{{ 'TOOLTIPS.DEFAULT_SCOPE' | translate }}\"\n ></i>\n </ng-container>\n \n <ng-content select=\"[objectSelect]\"></ng-content>\n \n <span\n *ngIf=\"soTypeInfo\"\n class=\"text-xl text-500 font-semibold block mr-2\"\n >\n {{ soTypeInfo + ' :' }}\n </span>\n <div>\n <i *ngIf=\"icon\" [class]=\"icon + ' ml-2'\" style=\"font-size: 1em\"></i>\n \n @if (sliceName) {\n <span\n [pTooltip]=\"title?.length > 50 ? title : ''\"\n class=\"text-xl font-medium mr-2\"\n >{{\n title?.length > 50 ? (title | slice: 0 : 47) + '...' : title\n }}</span\n >\n } @else {\n <span class=\"text-xl font-medium mr-2\">{{ title }}</span>\n }\n </div>\n \n <span\n [pTooltip]=\"subtitle?.length > 30 ? subtitle : ''\"\n class=\"text-600\"\n >{{\n subtitle?.length > 30 ? (subtitle | slice: 0 : 27) + '...' : subtitle\n }}</span\n >\n \n <i\n *ngIf=\"link\"\n (click)=\"onLinkClick.emit()\"\n class=\"ml-2 pi pi-external-link link\"\n ></i>\n </div>\n </ng-template>\n \n <ng-template pTemplate=\"icons\">\n <div class=\"flex\">\n <ng-container *ngFor=\"let button of data\">\n <ng-container [ngSwitch]=\"button.buttonType\">\n <ng-container *ngSwitchCase=\"splitButton\">\n <button\n #btn\n type=\"button\"\n pButton\n class=\"p-button-text\"\n [disabled]=\"button?.disabled\"\n (click)=\"menu.toggle($event)\"\n [style.order]=\"button.order\"\n >\n <span class=\"button-icon mr-2\">\n <i class=\"{{ button.icon }}\"></i>\n </span>\n <span class=\"button-label\">\n {{ button.label | translate }}\n </span>\n <span class=\"button-icon ml-2\">\n <i class=\"pi pi-chevron-down\" style=\"font-size: 0.9rem\"></i>\n </span>\n </button>\n <p-tieredMenu\n #menu\n [model]=\"button.splitButtonItems!\"\n [popup]=\"true\"\n ></p-tieredMenu>\n </ng-container>\n \n <ng-container *ngSwitchCase=\"regularButton\">\n <p-button\n id=\"{{ button.id }}\"\n data-cy=\"s-ab-button-cy\"\n class=\"mr-2\"\n [text]=\"true\"\n icon=\"{{ button.icon }}\"\n label=\"{{ button.label! | translate }}\"\n [pTooltip]=\"!button.tooltip ? '' : (button.tooltip | translate)\"\n tooltipPosition=\"\"\n [disabled]=\"button.disabled\"\n (click)=\"!button.disabled && button.action()\"\n [style.order]=\"button.order\"\n [severity]=\"button.severity\"\n [loading]=\"button.loading!\"\n ></p-button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n \n <ng-template pTemplate=\"content\">\n <phoenix-status-bar\n statusData\n [statusBarConfig]=\"statusBarConfig\"\n [iconStyle]=\"{ height: 30, width: 30 }\"\n ></phoenix-status-bar>\n\n @if (!statusInfo) {\n <div>\n {{ 'SC_RA_STATUS_BAR.OBJECT_PLACEHOLDER' | translate }}\n </div>\n }\n </ng-template>\n </p-panel>\n \n} -->\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SidebarItem } from '../sidebar-item/sidebar-item.component';\nimport { SidebarComponent } from '../sidebar/sidebar.component';\nimport { TopbarComponent } from '../topbar/topbar.component';\nimport { StatusHeaderComponent } from '../status-header/status-header.component';\n\n@Component({\n selector: 'pho-shell',\n imports: [\n SidebarComponent,\n TopbarComponent,\n CommonModule,\n StatusHeaderComponent,\n ],\n templateUrl: './shell.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ShellComponent {\n @Input() mainItems: SidebarItem[][] = [];\n @Input() footerItem: SidebarItem[] = [];\n @Input() isSidebarOpen = true;\n\n toggleSidebar() {\n this.isSidebarOpen = !this.isSidebarOpen;\n }\n}\n","<!-- Sidebar Layout -->\n<section\n [style]=\"{\n 'grid-template-columns': isSidebarOpen ? '16rem 1fr' : '4rem 1fr',\n 'grid-template-rows': '3.5rem 1fr',\n }\"\n class=\"h-screen pho-grid w-full transition-all transition-duration-200\"\n>\n <!-- Top header -->\n <pho-topbar\n class=\"bg-white pho-col-span-2\"\n [user]=\"{\n email: 'john@demo.com',\n username: 'John Doe',\n imageUrl: ''\n }\"\n >\n </pho-topbar>\n <!-- Sidebar -->\n <pho-sidebar\n [mainItems]=\"mainItems\"\n [footerItem]=\"footerItem\"\n [isSidebarOpen]=\"isSidebarOpen\"\n (toggleSidebar)=\"toggleSidebar()\"\n ></pho-sidebar>\n <!-- Main content -->\n <div class=\"bg-primary-50\">\n <!-- <pho-status-header\n class=\"mb-4\"\n [data]=\"{\n name: 'Scope 1',\n approach: 'Reactive',\n date: '21.02.2025 14:28',\n title: 'Subtitle Example',\n status: 'Active',\n entity: 'E1',\n logs: [],\n createdBy: 'John Doe',\n }\"\n /> -->\n <ng-content> </ng-content>\n </div>\n</section>\n","export enum tableActionType {\n CREATE = 'create',\n EDIT = 'edit',\n DELETE = 'delete',\n DETAILS = 'details',\n ASSIGN = 'assign',\n APPLY = 'apply',\n OPEN_IN_NEW_TAB = 'open_in_new_tab',\n TAB = 'tab',\n OPEN_FULL_SCREEN = 'open_full_screen',\n ADD_LINK = 'add_link',\n DISCONNECT = 'disconnect',\n REMOVE = 'remove',\n SYNC = 'sync',\n MENU = 'menu',\n DROP = 'drop',\n OVERVIEW = 'overview',\n HISTORY = 'syncHistory',\n DOWNLOAD = 'download',\n ATTACH = 'attach',\n IMPORT = 'import',\n ///multiple options\n ASSIGN_FROM_CATALOG = 'ASSIGN_FROM_CATALOG',\n ASSIGN_FROM_ITEM = 'ASSIGN_FROM_ITEM',\n ASSIGN_CONTROLS = 'ASSING_CONTROLS',\n ASSIGN_MEASURE = 'ASSGIN_MEASURE',\n CREATE_ADITIONAL_MEASURE = 'CREATE_ADITIONAL_MEASURE',\n}\n\nexport enum tableButtonFormat {\n TEXT_ICON = 'TEXT_ICON',\n TEXT = 'TEXT',\n ICON = 'ICON',\n ICON_ROUNDED = 'ICON_ROUNDED',\n}\n\nexport enum tableButtonContext {\n GLOBAL = 'GLOBAL',\n BULK = 'BULK',\n ROW = 'ROW',\n}\n\nexport enum tableColumnType {\n TEXT = 'TEXT',\n RICH_TEXT = 'RICH_TEXT',\n TEXT_AREA = 'TEXT_AREA',\n DATE = 'DATE',\n DATE_COMPLEX = 'DATE_COMPLEX', //Date and time\n TAG = 'TAG',\n NUMBER = 'NUMBER',\n PERSON = 'PERSON',\n COMPLETNESS = 'COMPLETNESS',\n BOOLEAN = 'BOOLEAN',\n LIST = 'LIST',\n CUSTOM = 'CUSTOM',\n}\n\nexport enum tableSelectionType {\n CHECKBOX = 'checkbox',\n RADIO_BTN = 'radio_btn',\n}\n\nexport enum tableFilterType {\n ///not using text, its in global srch\n // TEXT = 'text',\n DATE = 'date',\n // NUMERIC = 'numeric',\n BOOLEAN = 'boolean',\n MULTISELECT = 'multiselect',\n COMPLETNESS = 'completness',\n // ICON = 'icon',\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { tableActionType, tableButtonContext } from '../utils/dataTable.enum';\nimport { TableAction } from '../utils/dataTable.interface';\n\ninterface BtnConfig {\n text: boolean;\n label: string;\n icon: string;\n outlined: boolean;\n class?: string;\n type?: string; // default is 'button' , for multiselect button set 'multiselect'\n items?: any;\n severity?:\n | 'info'\n | 'success'\n | 'warn'\n | 'danger'\n | 'secondary'\n | 'contrast'\n | 'help'\n | 'primary';\n checkboxrelatedauth?: boolean;\n}\nenum ico {\n import = 'pi pi-file-import',\n create = 'pi pi-plus',\n open_full_screen = 'pi pi-external-link',\n edit = 'pi pi-pencil',\n delete = 'pi pi-trash',\n assign = 'pi pi-paperclip',\n apply = 'pi pi-check-square',\n open_in_new_tab = 'pi pi-external-link',\n add_link = 'pi pi-link',\n disconnect = 'pi pi-link',\n remove = 'pi pi-minus',\n sync = 'pi pi-sync',\n menu = 'pi pi-ellipsis-v',\n drop = 'pi pi-angle-down',\n overview = 'pi pi-history',\n syncHistory = 'pi pi-history',\n download = 'pi pi-download',\n attach = 'pi pi-paperclip',\n details = 'pi pi-info-circle',\n}\n\n@Component({\n selector: 'phoenix-phoenix-data-table-action',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TooltipModule,\n TranslateModule,\n OverlayPanelModule,\n ],\n templateUrl: './phoenix-data-table-action.component.html',\n styleUrls: ['./phoenix-data-table-action.component.css'],\n})\n\n/// two disble opt\n/// Read only: Default scope/enity or any other reason | referenced type etc...\n/// solved with readonly property from response and it works per row. It works independed from user. Response has to return readonly:boolean\n\n/// Authorization\n//// needs in btn configuration and its fro all buttons. all rows\nexport class PhoenixDataTableActionComponent implements OnChanges {\n @Input({ required: true }) actionConfig!: TableAction;\n @Input() rowData!: any;\n @Input() selectedData!: any;\n\n @Output() actionClick = new EventEmitter<any>();\n\n icon!: string;\n disabled!: boolean | undefined;\n btnConfig!: BtnConfig;\n\n ngOnChanges(): void {\n this.icon = ico[this.actionConfig.type as keyof typeof ico];\n\n /* console.log(this.actionConfig);\n console.log(this.actionConfig.disabled); */\n ///set standard btn configuraton\n this.btnConfig = {\n text: true,\n label: this.actionConfig.label,\n icon: 'pi pi-circle',\n class: '',\n outlined: false,\n type: this.actionConfig.buttonType,\n items: this.actionConfig.items,\n checkboxrelatedauth: this.actionConfig.checkboxrelatedauth\n ? this.actionConfig.checkboxrelatedauth\n : false,\n };\n switch (this.actionConfig.context) {\n case tableButtonContext.GLOBAL:\n ///disable by permission\n\n this.disabled = this.actionConfig.disabled;\n break;\n case tableButtonContext.BULK:\n this.btnConfig.label = '';\n this.btnConfig.outlined = true;\n this.btnConfig.class = 'ml-1';\n ///disable by permission\n this.disabled = this.actionConfig.disabled;\n ///disable bulk button if no selection\n if (this.selectedData?.length <= 0) {\n this.disabled = true;\n }\n ///configure bulk delete button\n if (this.actionConfig.type === tableActionType.DELETE) {\n this.btnConfig.text = false;\n this.btnConfig.outlined = false;\n this.btnConfig.severity = 'danger';\n }\n\n break;\n case tableButtonContext.ROW:\n this.btnConfig.label = '';\n ///Test the order of disabling\n ///disable by permission\n this.disabled = this.actionConfig.disabled;\n if (this.actionConfig?.type && !this.actionConfig?.notauthorized) {\n this.disabled =\n this.rowData[this.actionConfig.type] != undefined &&\n this.rowData[this.actionConfig.type] != null\n ? !this.rowData[this.actionConfig.type]\n : false;\n }\n /// always disable delete button if object response is readOnly:true\n if (\n this.rowData?.readOnly &&\n this.actionConfig.type === tableActionType.DELETE\n ) {\n this.disabled = true;\n }\n /// this CUSTOM condition is only for BCMS Resources. readOnly is not enough (its not appropriate for ISMS & BCMS) we should have isEditable, isDeletable ets... boolean for each action :)\n if (\n this.rowData?.typeLabelKey === 'CUSTOM' &&\n this.actionConfig.type === tableActionType.OPEN_IN_NEW_TAB\n ) {\n this.disabled = true;\n }\n\n break;\n }\n }\n\n onActionClick($event: any) {\n this.actionClick.emit($event);\n }\n}\n","<p-overlayPanel #op>\n <ul class=\"list-none p-0 m-0\">\n <ng-container *ngFor=\"let item of btnConfig.items; let last = last\">\n <li\n class=\"cursor-pointer block\"\n [ngClass]=\"{ 'mb-3': !last, disabledAction: item.disabled }\"\n (click)=\"onActionClick(item)\"\n >\n <i class=\"mr-2\" [class]=\"item.icon\"></i> {{ item.label | translate }}\n </li>\n </ng-container>\n </ul>\n</p-overlayPanel>\n\n<p-button\n [attr.data-cy]=\"'table-button-' + this.actionConfig.type\"\n [label]=\"btnConfig.label | translate\"\n [text]=\"btnConfig.text\"\n [icon]=\"icon\"\n [disabled]=\"disabled\"\n [iconPos]=\"btnConfig.type === 'multiselect' ? 'right' : 'left'\"\n (click)=\"\n btnConfig.type === 'multiselect'\n ? op.toggle($event)\n : onActionClick(actionConfig)\n \"\n [outlined]=\"btnConfig.outlined\"\n [pTooltip]=\"actionConfig.label | translate\"\n tooltipPosition=\"bottom\"\n [class]=\"btnConfig.class\"\n [severity]=\"btnConfig.severity\"\n>\n</p-button>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TableColumn } from './dataTable.interface';\nimport { DatePipe } from '@angular/common';\nimport { tableColumnType } from './dataTable.enum';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'cellValue',\n standalone: true,\n})\nexport class CellValuePipe implements PipeTransform {\n /**\n * @todo Cell limit and Rich text ??? check if this is a solution\n */\n constructor(private datePipe: DatePipe, private trnalste: TranslateService) {}\n transform(value: any, col: TableColumn) {\n if (value) {\n console.log(value);\n\n switch (col.columnType) {\n case tableColumnType.TEXT:\n /** checking if there is a object instead of string. objects goes into non-lazy tables */\n\n const textValue = value?.name ?? value;\n\n if (typeof textValue === 'string') {\n return textValue;\n }\n\n return '--';\n\n case tableColumnType.DATE:\n return this.datePipe.transform(value);\n case tableColumnType.NUMBER:\n return value;\n }\n } else return '--';\n }\n}\n","export enum ExportType {\n PDF = 'PDF',\n EXCEL = 'EXCEL',\n}\n","import {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableAction } from '../utils/dataTable.interface';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BadgeModule } from 'primeng/badge';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nenum soType {\n modules = 'COMPL_APPLIED_MODULE',\n requirements = 'COMPL_APPLIED_REQUIREMENT',\n measures = 'COMPL_APPLIED_MEASURE',\n threats = 'COMPL_APPLIED_THREAT',\n risks = 'COMPL_APPLIED_RISK',\n controls = 'COMPL_APPLIED_CONTROL',\n}\n\n@Component({\n selector: 'phoenix-data-table-tabs',\n standalone: true,\n imports: [\n CommonModule,\n SelectButtonModule,\n FormsModule,\n TranslateModule,\n BadgeModule,\n ],\n templateUrl: './phoenix-data-table-tabs.component.html',\n styleUrls: ['./phoenix-data-table-tabs.component.css'],\n})\nexport class PhoenixDataTableTabsComponent implements OnInit {\n @Input({ required: true }) actions!: TableAction[];\n @Output() actionClick = new EventEmitter<any>();\n\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private dr = inject(DestroyRef);\n value!: string | undefined;\n\n ngOnInit(): void {\n this.preselectTab();\n this.router.events.pipe(takeUntilDestroyed(this.dr)).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.preselectTab();\n }\n });\n }\n preselectTab() {\n const sotype = this.route.snapshot.paramMap.get('sotype');\n const hasSouuid = this.route.snapshot.paramMap.has('souuid');\n\n if (sotype) {\n this.value = soType[sotype as keyof typeof soType];\n }\n\n if (hasSouuid && this.actions && this.actions.length > 0) {\n this.value = this.actions[0].key;\n }\n }\n onActionClick(event: any) {\n let opt = this.actions.find((i) => i.key === event.value);\n\n this.actionClick.emit(opt);\n }\n}\n","<p-selectButton\n [options]=\"actions\"\n optionValue=\"key\"\n [(ngModel)]=\"value\"\n optionLabel=\"icon\"\n [unselectable]=\"true\"\n (onChange)=\"onActionClick($event)\"\n>\n <ng-template let-item pTemplate>\n <span>\n {{ item.label }}\n </span>\n <span>\n <p-badge\n *ngIf=\"item.badgeCount\"\n [value]=\"item.badgeCount\"\n severity=\"danger\"\n />\n </span>\n </ng-template>\n</p-selectButton>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'isSelected',\n standalone: true,\n})\nexport class IsSelectedPipe implements PipeTransform {\n transform(item: any, selectedColumns: any[]): boolean {\n return selectedColumns.some(\n selectedItem => selectedItem.field == item.field,\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeHTMLTags',\n standalone: true,\n})\nexport class RemoveHTMLTagsPipe implements PipeTransform {\n transform(text: string): string {\n return text ? String(text).replace(/<[^>]+>/gm, '') : '';\n }\n}\n\n/* \n\nDIFFERENT PIPE\n==============\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeHTMLTags',\n standalone: true,\n})\nexport class RemoveHTMLTagsPipe implements PipeTransform {\n transform(text: string, ...usefulTags: any[]): string {\n return usefulTags.length > 0\n ? text.replace(\n new RegExp(`<(?!\\/?(${usefulTags.join('|')})\\s*\\/?)[^>]+>`, 'g'),\n '',\n )\n : text.replace(/<(?:.|\\s)*?>/g, '');\n }\n} */\n","import { CommonModule, DatePipe, LowerCasePipe } from '@angular/common';\nimport {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n input,\n} from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport {\n Table,\n TableHeaderCheckboxToggleEvent,\n TableLazyLoadEvent,\n TableModule,\n} from 'primeng/table';\nimport { PhoenixDataTableActionComponent } from '../phoenix-data-table-action/phoenix-data-table-action.component';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n// import { DateFormatService } from '@phoenix/service/common'; - configuration?\n// import * as FileSaver from 'file-saver'; - what package json\n// import jsPDF from 'jspdf'; - what package json\n// import autoTable from 'jspdf-autotable'; - what package json\nimport { FilterMatchMode } from 'primeng/api';\nimport { AvatarModule } from 'primeng/avatar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { TagModule } from 'primeng/tag';\nimport { CellValuePipe } from '../utils/data-cell-value.pipe';\nimport {\n tableButtonContext,\n tableColumnType,\n tableFilterType,\n tableSelectionType,\n} from '../utils/dataTable.enum';\nimport { TableColumn, TableConfiguration } from '../utils/dataTable.interface';\nimport { ExportType } from '../utils/export-type.util';\nimport { PhoenixDataTableTabsComponent } from '../phoenix-data-table-tabs/phoenix-data-table-tabs.component';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { IsSelectedPipe } from './isSelected.pipe';\nimport { ListboxModule } from 'primeng/listbox';\nimport { RemoveHTMLTagsPipe } from '../utils/remove-html-tags.pipe';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SelectModule } from 'primeng/select';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n/**\n * Transform data for non-lazy filtering\n * 1. transform data that goes into table (string to object value/name props )\n * 2. transform data that goes into dropdown filter (string to object value/name props )\n * 3. in cell-value pipe in table check if it's non-lazy tabel, if is take object.name (add lazyTable argument to pipe)\n */\n\n/**\n * @todo Add option to pass custom color to status tag -> modify response to match columnName + Color -> sample: actualRiskColor\n * @todo Check DATE format. there is a cell-pipe for that\n * @todo Filter persistance in localstorage\n * @todo Frozen columns fix\n *\n *\n *\n * * @todo unauthorized API for population MS filters\n * - Entities\n * - Catalogs\n * - Statuses\n * - Responsibles\n * - Types\n * - CIA att\n */\n\n///transforms input into context arrays. Action positions in table\nfunction resolveActions(value: TableConfiguration): any {\n const transformed: any = {\n globalActions: [],\n rowActions: [],\n bulkActions: [],\n\n ...value,\n };\n value.actions.forEach((a) => {\n switch (a.context) {\n case tableButtonContext.GLOBAL:\n transformed.globalActions.push(a);\n break;\n case tableButtonContext.ROW:\n transformed.rowActions.push(a);\n break;\n case tableButtonContext.BULK:\n transformed.bulkActions.push(a);\n break;\n default:\n break;\n }\n });\n\n transformed.globalFilter =\n transformed.globalFilter === undefined ? true : transformed.globalFilter;\n\n return transformed;\n}\n@Component({\n selector: 'phoenix-data-table',\n standalone: true,\n imports: [\n CommonModule,\n TableModule,\n ButtonModule,\n InputTextModule,\n MultiSelectModule,\n AvatarModule,\n TagModule,\n FormsModule,\n ReactiveFormsModule,\n SkeletonModule,\n TranslateModule,\n CheckboxModule,\n SelectModule,\n IconFieldModule,\n InputIconModule,\n ///Custom components\n PhoenixDataTableActionComponent,\n PhoenixDataTableTabsComponent,\n // Pipes\n CellValuePipe,\n TooltipModule,\n OverlayPanelModule,\n ListboxModule,\n IsSelectedPipe,\n RemoveHTMLTagsPipe,\n LowerCasePipe,\n ],\n templateUrl: './phoenix-data-table.component.html',\n styleUrls: ['./phoenix-data-table.component.css'],\n ///allow semantic\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class PhoenixDataTableComponent implements OnInit, OnChanges {\n @ViewChild('btn', { static: false }) overviewBtn!: any;\n @ViewChild('dt', { static: false }) table?: Table;\n @Input({ required: true }) data: any;\n @Input({ required: false }) exportdData: any;\n @Input({ required: true }) columns!: TableColumn[];\n loading = input.required<boolean>();\n @Input() totalRecords!: number;\n @Input({ required: true, transform: resolveActions }) tableConfiguration: any;\n @Output() actionClickEmmiter = new EventEmitter<any>();\n @Output() lazyLoadDataEmmiter = new EventEmitter<any>();\n @Output() onRowClickEmmiter = new EventEmitter<any>();\n @Output() onRowCheckboxRadioClickEmmiter = new EventEmitter<any>();\n @Output() onExportClickEmmiter = new EventEmitter<ExportType>();\n @Output() onSaveColumnsClickEmmiter = new EventEmitter<string[]>();\n @Output() onHeaderCheckboxToggleEmmiter = new EventEmitter<any>();\n @Input() exportData?: {\n type: ExportType;\n data: any;\n };\n public exportType = ExportType;\n\n ///injects\n translateService = inject(TranslateService);\n fb = inject(FormBuilder);\n // dateFormatService = inject(DateFormatService);\n dr = inject(DestroyRef);\n // private datePipe = inject(DatePipe);\n ///enum\n columnTypeEnum = tableColumnType;\n tableFilterTypeEnum = tableFilterType;\n selectionTypeEnum = tableSelectionType;\n ///columns\n _selectedColumns!: TableColumn[];\n selectedData: any[] = [];\n // configuration for Date Filter\n dateFormat!: string;\n dateFilterOptions = [\n {\n label: this.translateService.instant('primeng.dateIs'),\n value: FilterMatchMode.DATE_IS,\n },\n {\n label: this.translateService.instant('primeng.dateBefore'),\n value: FilterMatchMode.DATE_BEFORE,\n },\n {\n label: this.translateService.instant('primeng.dateAfter'),\n value: FilterMatchMode.DATE_AFTER,\n },\n ];\n\n globalFilterFields!: string[];\n filtersForm = new FormGroup({});\n originalData!: any;\n ngOnInit() {\n ///convert to signal\n this.originalData = [...this.data];\n if (this.tableConfiguration.filterConfiguration) {\n this.tableConfiguration.filterConfiguration.forEach((fc: any) => {\n const fControl = new FormControl();\n this.filtersForm.addControl(fc.key, fControl);\n });\n this.filtersForm.valueChanges\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe((r) => {\n this.data = this.filterTableData(this.originalData, r);\n });\n }\n\n ////configuration?\n // this.dateFormatService.currentDateFormat$\n // .pipe(takeUntilDestroyed(this.dr))\n // .subscribe((date: string) => {\n // this.dateFormat = date;\n // });\n }\n\n // Example array of field configurations\n\n filterTableData(originalArray: any[], mapping: any) {\n return originalArray.filter((item) => {\n let matches = true;\n\n for (const key in mapping) {\n if (mapping[key] && mapping[key].key) {\n if (item[key] !== mapping[key].key) {\n matches = false;\n break;\n }\n }\n }\n\n return matches;\n });\n }\n resetFilters() {\n this.data = this.originalData;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.['data']) {\n //Reset selection when data changes\n this.selectedData = [];\n }\n\n if (this.tableConfiguration.toggleColumns) {\n this._selectedColumns =\n this.tableConfiguration.toogleColumnsData &&\n this.tableConfiguration.toogleColumnsData.length > 0\n ? this.tableConfiguration.toogleColumnsData\n : this.columns;\n } else {\n this._selectedColumns = this.columns;\n }\n\n if (this._selectedColumns) {\n this.globalFilterFields = this._selectedColumns\n .filter(\n (sc) =>\n sc.columnType === this.columnTypeEnum.TEXT &&\n sc.filter === undefined\n )\n .map((sc) => sc.field);\n }\n ///adds 5 empty rows in order to display shimering\n if (this.data?.length === 0 && this.loading()) {\n for (let i = 0; i < 5; i++) {\n this.data.push({});\n }\n return this.data;\n }\n\n // if (this.exportdData?.type) {\n // if (this.exportdData.type === this.exportType.EXCEL) {\n // this.exportExcel(this.exportdData.data);\n // } else {\n // this.exportPdf(this.exportdData.data);\n // }\n // this.exportdData = null;\n // }\n\n if (this.exportData?.type) {\n switch (this.exportData?.type) {\n case ExportType.EXCEL:\n this.exportExcel(this.exportData.data);\n break;\n\n default:\n this.exportPdf(this.exportData.data);\n break;\n }\n this.exportdData = null;\n }\n }\n\n /**\n * Emits table actions\n * table source change (SC phase), global actions (create, assing), bluk and row actions\n * @description\n */\n actionClick(action: any, data?: any) {\n this.actionClickEmmiter.emit({ action, data });\n }\n\n /**\n * Lazy load\n * Use when lazy is set to TRUE\n * @description\n */\n loadData(event: TableLazyLoadEvent) {\n const tableFilter = {\n page: event.first && event.rows ? event.first / event.rows : 0,\n size: event.rows ? event.rows : 5,\n rows: event.rows,\n sortField: event.sortField,\n sortOrder: this.convertSortOrder(event?.sortOrder),\n filters: event.filters,\n globalFilter: event.globalFilter,\n };\n if (tableFilter.filters) delete tableFilter.filters['global'];\n this.lazyLoadDataEmmiter.emit(tableFilter);\n }\n\n convertSortOrder(sortOrder: number | null | undefined): string {\n return sortOrder ? (sortOrder === 1 ? 'ASC' : 'DESC') : 'ASC';\n }\n\n /**\n * Row click\n * --\n * @description custom method added for row click\n */\n onRowClick(event: Event, row: any) {\n ///emits row data when selecting radio or checkbox selection\n this.onRowCheckboxRadioClickEmmiter.emit(row);\n if ((event.target as HTMLElement).tagName === 'TD') {\n this.onRowClickEmmiter.emit(row);\n } else {\n this.enableDisableCheckBoxRelatedGlobalActions();\n }\n }\n\n enableDisableCheckBoxRelatedGlobalActions() {\n this.tableConfiguration.globalActions\n .filter((action: any) => action.checkboxrelatedauth)\n .map(\n (action: any) =>\n (this.overviewBtn.disabled = this.selectedData\n ? this.selectedData.length === 0\n : true)\n );\n }\n\n onHeaderCheckboxToggle(event: TableHeaderCheckboxToggleEvent) {\n this.enableDisableCheckBoxRelatedGlobalActions();\n this.onHeaderCheckboxToggleEmmiter.emit(event);\n }\n\n isRowSelectable(event: any): boolean | undefined {\n return typeof event.data?.canSelect === 'boolean'\n ? event.data.canSelect\n : true;\n }\n\n exportExcel(data: any[]) {\n /// missing dependencies\n // const filteredData: any = [];\n // let newList: TableColumn[] = JSON.parse(JSON.stringify(this.columns));\n // data?.forEach((item: any) => {\n // const filteredItem: any = {};\n // newList.forEach((col) => {\n // const field = col.field;\n // let convertToString;\n // if (item[field]?.hasOwnProperty('value')) {\n // convertToString = item[field].value?.toString() || '--';\n // } else if (item[field]?.hasOwnProperty('name')) {\n // convertToString = item[field].name?.toString() || '--';\n // } else {\n // convertToString = item[field]?.toString() || '--';\n // }\n // if (\n // col.columnType === tableColumnType.DATE ||\n // col.columnType === tableColumnType.DATE_COMPLEX\n // ) {\n // if (this.isISODateString(convertToString)) {\n // convertToString = this.datePipe.transform(\n // new Date(convertToString),\n // this.dateFormat\n // );\n // }\n // }\n // if (\n // (convertToString && col?.header) ||\n // (convertToString === null && col?.header) ||\n // (convertToString === '' && col?.header) ||\n // (convertToString === undefined && col?.header)\n // ) {\n // const header = this.translateService.instant(col.header);\n // if (convertToString) {\n // filteredItem[header] =\n // this.translateService.instant(convertToString);\n // } else {\n // filteredItem[header] = convertToString;\n // }\n // }\n // });\n // filteredData.push(filteredItem);\n // });\n // import('xlsx').then((xlsx) => {\n // const worksheet = xlsx.utils.json_to_sheet(filteredData);\n // const wscols = Object.keys(filteredData[0]).map((key) => {\n // const maxLength = filteredData.reduce((max: any, item: any) => {\n // const value = item[key] || '';\n // return Math.max(max, value.length);\n // }, key.length);\n // return { width: maxLength + 2 };\n // });\n // worksheet['!cols'] = wscols;\n // const workbook = { Sheets: { data: worksheet }, SheetNames: ['data'] };\n // const excelBuffer = xlsx.write(workbook, {\n // bookType: 'xlsx',\n // type: 'array',\n // });\n // this.saveAsExcelFile(excelBuffer);\n // });\n }\n\n exportPdf(data: any[]) {\n /// missing dependencies\n // const doc = new jsPDF({\n // orientation: 'landscape',\n // });\n // doc.setFont('helvetica');\n // const colHeaders = this.columns.map((col) => {\n // if (col.header) {\n // return this.translateService.instant(col.header);\n // }\n // });\n // const rows = data.map((item: any) =>\n // this.columns.map((col) => {\n // let value;\n // if (item[col.field]?.hasOwnProperty('value')) {\n // value = item[col.field].value?.toString() || '--';\n // } else if (item[col.field]?.hasOwnProperty('name')) {\n // value = item[col.field].name?.toString() || '--';\n // } else {\n // value = item[col.field]?.toString() || '--';\n // }\n // if (\n // col.columnType === tableColumnType.DATE ||\n // col.columnType === tableColumnType.DATE_COMPLEX\n // ) {\n // if (this.isISODateString(value)) {\n // value = this.datePipe.transform(new Date(value), this.dateFormat);\n // }\n // }\n // if (value) {\n // return this.translateService.instant(value);\n // } else {\n // return value;\n // }\n // })\n // );\n // autoTable(doc, {\n // head: [colHeaders],\n // body: rows,\n // styles: {\n // font: 'helvetica', // Ovde postavite font\n // fontSize: 10, // Ako je potrebno, promenite veličinu fonta\n // },\n // });\n // doc.save(\n // 'export - ' + this.datePipe.transform(new Date(), 'short') + '.pdf'\n // );\n }\n\n isISODateString(value: string): boolean {\n // Check if the string is a valid ISO date or a valid Date string\n const isoDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$/;\n\n // Check if the value matches the ISO date format\n if (isoDateRegex.test(value)) {\n return true;\n }\n\n // Check if the string can be parsed into a valid Date object\n const date = new Date(value);\n return !isNaN(date.getTime());\n }\n\n saveAsExcelFile(buffer: any): void {\n /// missing dependencies\n // const EXCEL_TYPE =\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n // const EXCEL_EXTENSION = '.xlsx';\n // const data: Blob = new Blob([buffer], {\n // type: EXCEL_TYPE,\n // });\n // FileSaver.saveAs(\n // data,\n // 'export - ' +\n // this.datePipe.transform(new Date(), 'short') +\n // EXCEL_EXTENSION\n // );\n }\n\n saveColumns() {\n this.onSaveColumnsClickEmmiter.emit(\n this._selectedColumns.map((col) => col.field)\n );\n }\n\n resetColumns() {\n this._selectedColumns = this.columns;\n this.saveColumns();\n }\n\n get selectedColumns(): TableColumn[] {\n return this._selectedColumns;\n }\n\n set selectedColumns(val: TableColumn[]) {\n //restore original order\n this._selectedColumns = this.columns.filter((col) =>\n val.some((v) => v.field === col.field)\n );\n }\n}\n","<!-- total records lazy???? -->\n<div class=\"border-1 border-round-sm border-300 border-round-md m-2\">\n <p-table\n #dt\n [selectionMode]=\"tableConfiguration.selectionMode\"\n [dataKey]=\"tableConfiguration.key ? tableConfiguration.key : 'id'\"\n [value]=\"data\"\n [lazy]=\"tableConfiguration.lazy\"\n [rowSelectable]=\"isRowSelectable\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [globalFilterFields]=\"globalFilterFields\"\n [resizableColumns]=\"true\"\n [scrollable]=\"true\"\n [size]=\"'small'\"\n [scrollHeight]=\"tableConfiguration.scrollHeight\"\n [selectionPageOnly]=\"true\"\n [(selection)]=\"selectedData\"\n (onLazyLoad)=\"loadData($event)\"\n [rowHover]=\"true\"\n (onHeaderCheckboxToggle)=\"onHeaderCheckboxToggle($event)\"\n >\n <!-- ********** CAPTION CAPTION CAPTION *********************** -->\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between\">\n <global-table-actions>\n <ng-container\n *ngFor=\"\n let action of tableConfiguration.globalActions;\n let i = index\n \"\n >\n <phoenix-phoenix-data-table-action\n #btn\n [actionConfig]=\"action\"\n (actionClick)=\"actionClick($event)\"\n ></phoenix-phoenix-data-table-action\n ></ng-container>\n <phoenix-data-table-tabs\n [attr.data-cy]=\"\n 'table-select-button-' + tableConfiguration.tabs?.key\n \"\n [actions]=\"tableConfiguration.tabs\"\n (actionClick)=\"actionClick($event)\"\n ></phoenix-data-table-tabs>\n </global-table-actions>\n <div class=\"flex align-items-center\">\n <p-button\n icon=\"pi pi-filter\"\n [rounded]=\"true\"\n label=\"Filter\"\n [text]=\"true\"\n severity=\"primary\"\n class=\"mr-2\"\n (onClick)=\"filters.toggle($event)\"\n />\n\n <p-button\n icon=\"pi pi-sliders-v\"\n [rounded]=\"true\"\n [text]=\"true\"\n severity=\"primary\"\n label=\"Columns\"\n class=\"mr-2\"\n [attr.data-cy]=\"'table-togg-button'\"\n (onClick)=\"cols.toggle($event)\"\n />\n\n <span\n *ngIf=\"tableConfiguration.globalFilter\"\n class=\"p-input-icon-left ml-auto\"\n >\n <p-iconfield>\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n [attr.data-cy]=\"'table-global-search'\"\n type=\"text\"\n (input)=\"dt.filterGlobal($any($event.target).value, 'contains')\"\n pInputText\n placeholder=\"{{\n 'SEARCH_PLACEHOLDERS.SEARCH_KEYWORD' | translate\n }}\"\n />\n </p-iconfield>\n </span>\n <p-button\n icon=\"pi pi-ellipsis-v\"\n [rounded]=\"true\"\n [text]=\"true\"\n severity=\"primary\"\n (onClick)=\"export.toggle($event)\"\n class=\"ml-2\"\n />\n\n <bulk-table-actions>\n <ng-container *ngFor=\"let action of tableConfiguration.bulkActions\">\n <phoenix-phoenix-data-table-action\n [actionConfig]=\"action\"\n [selectedData]=\"selectedData\"\n (actionClick)=\"actionClick(action, selectedData)\"\n ></phoenix-phoenix-data-table-action\n ></ng-container>\n </bulk-table-actions>\n </div>\n </div>\n </ng-template>\n <!-- ********** HEADER HEADER HEADER *********************** -->\n <ng-template pTemplate=\"header\">\n <tr style=\"height: 40px\" class=\"dt-header\">\n <ng-container [ngSwitch]=\"tableConfiguration.selectionType\">\n <th class=\"custom-th\" *ngSwitchCase=\"selectionTypeEnum.CHECKBOX\">\n <p-tableHeaderCheckbox\n [attr.data-cy]=\"'table-header-checkbox'\"\n ></p-tableHeaderCheckbox>\n </th>\n <th\n class=\"custom-th\"\n *ngSwitchCase=\"selectionTypeEnum.RADIO_BTN\"\n ></th>\n </ng-container>\n <!-- rest of columns -->\n <ng-container *ngFor=\"let col of selectedColumns; let i = index\">\n <th\n [attr.data-cy]=\"'table-col-' + i\"\n pResizableColumn\n class=\"custom-th font-bold\"\n [pSortableColumn]=\"\n col.filter === 'multiselect' && tableConfiguration.lazy != true\n ? col.field + '.name'\n : col.field\n \"\n >\n <!-- set sort icon visible by default -->\n <p-sortIcon\n [attr.data-cy]=\"'table-sort-' + col.field\"\n *ngIf=\"col.sortable === undefined ? true : col.sortable\"\n field=\"{{ col.field }}\"\n ></p-sortIcon>\n {{ col.header | translate }}\n </th>\n </ng-container>\n\n <!-- create empty th placeholders for actions -->\n <th class=\"custom-th\"></th>\n </tr>\n </ng-template>\n <!-- ********** BODY BODY BODY *********************** -->\n <ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n <ng-template #shimmer>\n <tr [attr.data-cy]=\"'table-row-' + rowIndex\">\n <td *ngFor=\"let col of columns; let even = even\">\n <p-skeleton\n [ngStyle]=\"{\n width: '60%',\n }\"\n ></p-skeleton>\n </td>\n\n <td>\n <p-skeleton\n [ngStyle]=\"{\n width: '20%',\n }\"\n ></p-skeleton>\n </td>\n </tr>\n </ng-template>\n <tr\n *ngIf=\"!loading(); else shimmer\"\n (click)=\"onRowClick($event, rowData)\"\n [pSelectableRow]=\"rowData\"\n [attr.data-cy]=\"'table-row-' + rowIndex\"\n >\n <ng-container [ngSwitch]=\"tableConfiguration.selectionType\">\n <td class=\"w-2rem\" *ngSwitchCase=\"selectionTypeEnum.CHECKBOX\">\n <p-tableCheckbox\n [attr.data-cy]=\"'table-checkbox'\"\n [disabled]=\"\n rowData?.canSelect !== undefined ? !rowData.canSelect : false\n \"\n [value]=\"rowData\"\n ></p-tableCheckbox>\n </td>\n <td *ngSwitchCase=\"selectionTypeEnum.RADIO_BTN\">\n <p-tableRadioButton\n [value]=\"rowData\"\n [attr.data-cy]=\"'table-radio-button'\"\n ></p-tableRadioButton>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of selectedColumns; let i = index\">\n <td class=\"cursor-pointer\">\n <ng-container\n *ngTemplateOutlet=\"\n cellValueTemp;\n context: { value: { rowData, col } }\n \"\n ></ng-container>\n </td>\n </ng-container>\n\n <!-- p-0 on td because buttons already have marign. so it makes row bigger -->\n <td class=\"p-0\">\n <ng-container *ngFor=\"let action of tableConfiguration.rowActions\">\n <phoenix-phoenix-data-table-action\n *ngIf=\"\n action.notauthorized ||\n (rowData[action.type] != undefined &&\n rowData[action.type] != null)\n \"\n [actionConfig]=\"action\"\n [rowData]=\"rowData\"\n (actionClick)=\"actionClick($event, rowData)\"\n ></phoenix-phoenix-data-table-action\n ></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorright\" let-state>\n <!-- Total Records: {{ state.totalRecords }} -->\n <!-- <i class=\"pi pi-cog\" style=\"font-size: 1.2rem; color: grey\"></i> -->\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <td class=\"p-2\" colspan=\"100\">\n <div class=\"flex align-items-center\">\n <i class=\"pi pi-info-circle mr-2\"></i>\n {{ \"MESSAGE.NO_RESULTS_FOUND\" | translate }}\n </div>\n </td>\n </ng-template>\n </p-table>\n</div>\n\n<!-- Celll value template -->\n\n<ng-template #cellValueTemp let-val=\"value\">\n <ng-container [ngSwitch]=\"val.col.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeEnum.TAG\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <!-- checking if there is a object instead of string. objects goes into non-lazy tables -> val.rowData[val.col.field].name || val.rowData[val.col.field] -->\n <p-tag\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.TAG | lowercase)\"\n [style]=\"{ 'background-color': val.rowData[val.col.field + 'Color'] }\"\n [value]=\"\n val.rowData[val.col.field].name || val.rowData[val.col.field]\n \"\n ></p-tag>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum.PERSON\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <p-avatar\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.PERSON | lowercase)\"\n [label]=\"val.rowData[val.col.field].name.charAt(0)\"\n styleClass=\"mr-1\"\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n shape=\"circle\"\n ></p-avatar>\n {{ val.rowData[val.col.field].name }}\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum.DATE\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n {{ val.rowData[val.col.field] | date : dateFormat }}\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.DATE_COMPLEX\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n {{ val.rowData[val.col.field] | date : dateFormat + \" | HH:mm\" }}\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.LIST\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <ul\n *ngFor=\"let item of val.rowData[val.col.field]\"\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.LIST | lowercase)\"\n >\n <li>{{ item.name }}</li>\n </ul>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.RICH_TEXT\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <div\n [pTooltip]=\"val.rowData[val.col.field] | removeHTMLTags\"\n style=\"width: 200px\"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.RICH_TEXT | lowercase)\n \"\n >\n {{ val.rowData[val.col.field] | removeHTMLTags }}\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum.TEXT_AREA\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <div\n [pTooltip]=\"val.rowData[val.col.field]\"\n style=\"width: 200px\"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.TEXT_AREA | lowercase)\n \"\n >\n {{ val.rowData[val.col.field] }}\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.BOOLEAN\">\n <ng-container *ngIf=\"val.rowData[val.col.field]; else emptyCell\">\n <i\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.BOOLEAN | lowercase)\"\n class=\"pi\"\n [ngClass]=\"{\n 'text-green-500 pi-check-circle': val.rowData[val.col.field],\n }\"\n ></i>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.CUSTOM\">\n <span\n [innerHTML]=\"val.col.customRenderer(val.rowData)\"\n [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.CUSTOM | lowercase)\"\n ></span>\n </ng-container>\n\n <ng-container *ngSwitchDefault\n ><td [attr.data-cy]=\"'table-cell-text'\">\n {{ val.rowData[val.col.field] | cellValue : val.col }}\n </td>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #emptyCell> -- </ng-template>\n\n<!-- Overlays for Columns/Filters/Exports -->\n\n<p-overlayPanel #cols>\n <div class=\"flex flex-column gap-3 w-25rem\">\n <div class=\"flex justify-content-between align-items-center\">\n <div class=\"text-lg font-bold\">Columns</div>\n <div>\n <p-button\n icon=\"pi pi-save\"\n [text]=\"true\"\n [label]=\"'ACTION.SAVE' | translate\"\n class=\"mr-2\"\n (click)=\"saveColumns()\"\n [attr.data-cy]=\"'table-save-col-button'\"\n />\n <p-button\n icon=\"pi pi-undo\"\n [text]=\"true\"\n [label]=\"'ACTION.RESET_FILTERS' | translate\"\n class=\"mr-2\"\n (click)=\"resetColumns()\"\n [attr.data-cy]=\"'table-reset-col-button'\"\n />\n </div>\n </div>\n\n <p-listbox\n [options]=\"columns\"\n [(ngModel)]=\"selectedColumns\"\n [multiple]=\"true\"\n [metaKeySelection]=\"false\"\n [listStyle]=\"{ 'max-height': '420px' }\"\n [attr.data-cy]=\"'table-list-box'\"\n >\n <ng-template let-item pTemplate=\"item\">\n <i *ngIf=\"item | isSelected : selectedColumns\" class=\"pi pi-eye\"></i>\n <i\n *ngIf=\"!(item | isSelected : selectedColumns)\"\n class=\"pi pi-eye-slash\"\n ></i>\n <span class=\"ml-2\"> {{ item.header | translate }}</span>\n </ng-template>\n </p-listbox>\n </div>\n</p-overlayPanel>\n\n<p-overlayPanel #filters>\n <div class=\"flex flex-column gap-3 w-25rem\">\n <div class=\"flex justify-content-between align-items-center\">\n <div class=\"text-lg font-bold\">Filter</div>\n <div>\n <p-button\n icon=\"pi pi-save\"\n [text]=\"true\"\n [label]=\"'ACTION.SAVE' | translate\"\n class=\"mr-2\"\n [attr.data-cy]=\"'table-save-col-button'\"\n />\n <p-button\n icon=\"pi pi-times\"\n [text]=\"true\"\n [label]=\"'Clear'\"\n class=\"mr-2\"\n (click)=\"resetFilters()\"\n [attr.data-cy]=\"'table-reset-col-button'\"\n />\n </div>\n </div>\n\n <div>\n <form [formGroup]=\"filtersForm\">\n @for(control of tableConfiguration.filterConfiguration; track\n control.key ){ @switch(control.type) { @case ('checkbox') {\n <div class=\"mb-4\">\n <p-checkbox\n binary=\"true\"\n type=\"checkbox\"\n [formControlName]=\"control.key\"\n />\n <label class=\"ml-2\">{{ control.label }}</label>\n </div>\n\n } @case ('dropdown') {\n <div class=\"mb-4\">\n <label class=\"mb-2 block\">{{ control.label }}</label>\n <p-select\n class=\"w-full\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n [formControlName]=\"control.key\"\n [showClear]=\"true\"\n />\n </div>\n\n } } }\n </form>\n </div>\n </div>\n</p-overlayPanel>\n\n<p-overlayPanel #export>\n <div class=\"flex flex-column gap-1\">\n <p-button\n pRipple\n text=\"true\"\n icon=\"pi pi-file-pdf\"\n (click)=\"onExportClickEmmiter.emit(exportType.PDF)\"\n class=\"mr-2\"\n [label]=\"'ACTION.EXPORT_TO_PDF' | translate\"\n ></p-button>\n\n <p-button\n pRipple\n text=\"true\"\n icon=\"pi pi-file-excel\"\n (click)=\"onExportClickEmmiter.emit(exportType.EXCEL)\"\n class=\"mr-2\"\n [label]=\"'ACTION.EXPORT_TO_XLS' | translate\"\n ></p-button>\n </div>\n</p-overlayPanel>\n","/*\n * Public API Surface of phoenix\n */\n\nexport * from './lib/components/sidebar/sidebar.component';\nexport * from './lib/components/topbar/topbar.component';\nexport * from './lib/components/search-bar/search-bar.component';\nexport * from './lib/components/sidebar-item/sidebar-item.component';\nexport * from './lib/components/user/user.component';\nexport * from './lib/components/status-header/status-header.component';\nexport * from './lib/components/shell/shell.component';\nexport * from './lib/components/data-table/phoenix-data-table/phoenix-data-table.component';\n//data-table utils\nexport * from './lib/components/data-table/utils/dataTable.enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i5","i1","i3","i4","i10","i15"],"mappings":"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"}
|