@fuentis/phoenix-ui 0.0.9-alpha.481 → 0.0.9-alpha.482

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"fuentis-phoenix-ui.mjs","sources":["../../../projects/phoenix-ui/src/lib/components/inner-header/inner-header.component.ts","../../../projects/phoenix-ui/src/lib/components/inner-header/inner-header.component.html","../../../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/actions/action-state.service.ts","../../../projects/phoenix-ui/src/lib/components/actions/actions.component.ts","../../../projects/phoenix-ui/src/lib/components/actions/actions.component.html","../../../projects/phoenix-ui/src/lib/utils/actions.utils.ts","../../../projects/phoenix-ui/src/lib/components/card/card.component.ts","../../../projects/phoenix-ui/src/lib/components/card/card.component.html","../../../projects/phoenix-ui/src/lib/components/search-card/search-card.component.ts","../../../projects/phoenix-ui/src/lib/components/search-card/search-card.component.html","../../../projects/phoenix-ui/src/lib/utils/compl-types.utils.ts","../../../projects/phoenix-ui/src/lib/services/crud.service.ts","../../../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/quick-pick/quick-pick/quick-pick.component.ts","../../../projects/phoenix-ui/src/lib/components/quick-pick/quick-pick/quick-pick.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/context-object/contex-object.component.ts","../../../projects/phoenix-ui/src/lib/components/context-object/contex-object.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/lib/components/meta-form/utils/form-fields.utils.ts","../../../projects/phoenix-ui/src/lib/pipes/time-period.pipe.ts","../../../projects/phoenix-ui/src/lib/utils/initials.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table-caption/table-caption.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table-caption/table-caption.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/utils/is-boolean.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/table-cell.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/table.utils.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table/table.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table/table.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/due-date/start-due-date.validator.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/timeperiod/timeperiod.validator.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/control-type.enum.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/get-field-type.utils.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/white-space-validator.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/no-dangerous-chars/do-danerous-chars.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/services/meta-form.service.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-abstract.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/lang.utils.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/field-label.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-field-label/meta-label.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/object-item-dialog/object-item-dialog.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/object-item-dialog/object-item-dialog.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-assign-responsible/meta-assign-responsible.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/error-type.util.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-field-error/inline-field-error.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/base-meta-field.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-calendar/meta-calendar.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-checkbox-color-picker/meta-checkbox-color-picker.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-checkbox/meta-checkbox.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-color-picker/meta-color-picker.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-currency/meta-currency.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-multiple-select/meta-multiple-select.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-number-input/meta-number-input.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-password-feild/meta-password-feild.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-select-button/meta-select-button.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/translate-dropdown-data.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-single-select-object-based/meta-single-select-object_based.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-single-select/meta-single-select.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-start-due-date/meta-start-due-date.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-switch/meta-switch.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-text-area/meta-text-area.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-text-editor/meta-text-editor.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-text-input/meta-text-input.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-timeperiod/meta-timeperiod.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-upload/meta-upload.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/field-col.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/global-phase.utils.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/so-types.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/strip-html.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/read-only-input/read-only-input.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/read-only-input/read-only-input.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-assign-asset/meta-assign-asset.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-upload-dragdrop/meta-upload-dragdrop.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-buttons/meta-form-buttons.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-buttons/meta-form-buttons.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/groups-form/groups-form.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/groups-form/groups-form.component.html","../../../projects/phoenix-ui/src/lib/components/status-bar/pipes/text-length.pipe.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/enums/status-col-type.enum.ts","../../../projects/phoenix-ui/src/lib/components/tag/tag.component.ts","../../../projects/phoenix-ui/src/lib/components/tag/tag.component.html","../../../projects/phoenix-ui/src/lib/components/status-bar/models/status-attribute.model.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/status-attribute-display.component.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/status-attribute-display.component.html","../../../projects/phoenix-ui/src/lib/components/status-bar/status-bar.component.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/status-bar.component.html","../../../projects/phoenix-ui/src/lib/components/quick-pick/quick-pick-sidepanel/quick-pick-sidepanel.component.ts","../../../projects/phoenix-ui/src/lib/components/quick-pick/quick-pick-sidepanel/quick-pick-sidepanel.component.html","../../../projects/phoenix-ui/src/lib/models/status.model.ts","../../../projects/phoenix-ui/src/public-api.ts","../../../projects/phoenix-ui/src/fuentis-phoenix-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { Input } from '@angular/core';\n\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'pho-inner-header',\n standalone: true,\n imports: [CommonModule, TooltipModule],\n templateUrl: './inner-header.component.html',\n})\nexport class InnerHeaderComponent {\n @Input() title: string = '';\n @Input() tooltipContent: string = '';\n}\n","<div\n class=\"flex align-items-center justify-content-between border-bottom-1 border-300 pt-2 pb-2\"\n>\n <div class=\"flex align-items-center gap-2\">\n <span class=\"font-medium text-lg\">\n {{ title }}\n </span>\n <i [pTooltip]=\"tooltipContent\" class=\"pi pi-info-circle text-blue-500\"></i>\n </div>\n\n <div class=\"flex align-items-center gap-2\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TagModule } from 'primeng/tag';\nimport { MenuModule } from 'primeng/menu';\nimport { DividerModule } from 'primeng/divider';\n\n@Component({\n selector: 'pho-sidebar-item',\n standalone: true,\n styleUrl: '../../styles/global.css',\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n ButtonModule,\n RouterLink,\n RouterLinkActive,\n TooltipModule,\n TranslateModule,\n MenuModule,\n TagModule,\n DividerModule,\n ],\n template: `\n @if(item.path === '/dashboard'){\n <li\n class=\"list-none flex align-items-center border-bottom-1 border-200\"\n routerLinkActive=\"active-link\"\n [routerLinkActiveOptions]=\"{ exact: false }\"\n >\n <!-- Visible link: user navigation goes to item.path -->\n <a\n class=\"p-button no-underline w-full justify-content-between surface-0 hover:surface-100 border-none overflow-hidden bg-transparent sidebaritem\"\n [attr.data-cy]=\"'navigation-side-navigation-item-' + item.label\"\n [routerLink]=\"item?.disabled ? null : item.path\"\n [ngClass]=\"[\n classname,\n item?.disabled ? 'opacity-50 cursor-not-allowed' : ''\n ]\"\n [style.pointer-events]=\"item?.disabled ? 'none' : 'auto'\"\n >\n <div class=\"flex align-items-center \">\n <img class=\"mr-2\" width=\"28\" [src]=\"item.icon\" alt=\"\" />\n <span class=\"text-primary font-bold pr-3 \">{{\n item.label | translate\n }}</span>\n </div>\n\n <p-button\n icon=\"pi pi-sliders-v\"\n size=\"small\"\n [rounded]=\"true\"\n [text]=\"true\"\n (onClick)=\"onSliderClick($event, menu)\"\n [disabled]=\"item.disabledConfig\"\n />\n </a>\n\n <!-- Hidden link: used ONLY to activate based on basePath -->\n <a\n [routerLink]=\"item.basePath || item.path\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n style=\"display:none\"\n ></a>\n\n <p-menu\n styleClass=\"w-20rem\"\n appendTo=\"body\"\n #menu\n [model]=\"item.subitems\"\n [popup]=\"true\"\n >\n <ng-template #submenuheader let-item>\n <span class=\"text-400 text-sm font-semibold\">{{\n item.label | translate\n }}</span>\n </ng-template>\n <ng-template pTemplate=\"item\" let-item>\n <a\n (click)=\"onSliderItemsClick(item)\"\n [ngClass]=\"{ 'pointer-events-none': item.activated }\"\n pRipple\n class=\"flex align-items-center p-menuitem-link p-2 cursor-pointer w-full\"\n >\n <div class=\"flex justify-content-between w-full\">\n <div>\n @if(item.icon){ <i [class]=\"item.icon\"></i> }\n <span class=\"ml-2\">{{ item.title | translate }}</span>\n </div>\n @if(item.activated){ <i class=\"pi pi-check\"></i> }\n </div>\n </a>\n </ng-template>\n <ng-template #end>\n <p-divider styleClass=\"m-0\" type=\"solid\" />\n <p-button\n [label]=\"'ACTION.CREATE' | translate\"\n icon=\"pi pi-plus\"\n [text]=\"true\"\n severity=\"secondary\"\n styleClass=\"w-full p-2\"\n (click)=\"onSliderItemsClick({ type: 'CREATE' })\"\n />\n </ng-template>\n </p-menu>\n </li>\n\n } @else {\n <li\n class=\"list-none flex align-items-center\"\n [pTooltip]=\"item?.tooltip | translate\"\n routerLinkActive=\"active-link\"\n [routerLinkActiveOptions]=\"{ exact: false }\"\n >\n <!-- Visible link: user navigation goes to item.path -->\n <a\n [attr.data-cy]=\"'navigation-side-navigation-item-' + item.label\"\n [routerLink]=\"item?.disabled ? null : item.path\"\n class=\"p-button no-underline w-full justify-content-start surface-0 hover:surface-100 border-none overflow-hidden bg-transparent sidebaritem\"\n [ngClass]=\"[\n classname,\n item?.disabled ? 'opacity-50 cursor-not-allowed' : ''\n ]\"\n [style.pointer-events]=\"item?.disabled ? 'none' : 'auto'\"\n >\n <div\n class=\"flex justify-content-between w-full\"\n style=\"margin-left: 24px;\"\n >\n <span style=\"font-size:13px\" class=\"text-primary white-space-nowrap\">\n {{ item.label | translate }}\n </span>\n </div>\n </a>\n @if(item.tag){\n <p-tag\n [style]=\"{\n fontSize: '9px',\n padding: '2px 6px',\n \n }\"\n severity=\"info\"\n [value]=\"item.tag | translate\"\n />\n } @if(item.lock){\n <p-tag\n [style]=\"{ fontSize: '9px', paddingRight: '3px' }\"\n severity=\"warn\"\n icon=\"pi pi-lock\"\n />\n }\n <!-- Hidden link: used ONLY to activate based on basePath -->\n <a\n [routerLink]=\"item.basePath || item.path\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n style=\"display:none\"\n ></a>\n </li>\n }\n `,\n})\nexport class SidebarItemComponent implements OnChanges {\n @Input() item!: any;\n @Input() classname: string = '';\n @Output() sliderClick = new EventEmitter<any>();\n\n constructor(private router: Router) {}\n\n onSliderClick($event: any, menu: any): void {\n $event.stopPropagation();\n $event.preventDefault();\n menu.toggle($event);\n }\n\n onSliderItemsClick(event: any) {\n this.sliderClick.emit(event);\n }\n\n ngOnChanges(_: SimpleChanges): void {}\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { SidebarItemComponent } from '../sidebar-item/sidebar-item.component';\nimport { CommonModule } from '@angular/common';\nimport { SidebarItem } from '../../models/shell-config.model';\nimport { AccordionModule } from 'primeng/accordion';\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'pho-sidebar',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n SidebarItemComponent,\n RouterModule,\n AccordionModule,\n TranslateModule,\n TooltipModule,\n ],\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.css',\n animations: [\n trigger('hoverState', [\n state(\n 'default',\n style({\n width: '50px',\n })\n ),\n state(\n 'hovered',\n style({\n width: '190px',\n })\n ),\n transition('default <=> hovered', animate('200ms ease-in-out')),\n ]),\n ],\n})\nexport class SidebarComponent {\n @Output() toggleSidebar = new EventEmitter<boolean>();\n @Output() sliderClick = new EventEmitter<any>();\n @Input() classname: string = '';\n\n @Input() mainItems: any;\n @Input() footerItem: any;\n\n isHovered = false;\n isSlim = false;\n\n get hoverState() {\n return this.isHovered ? 'hovered' : 'default';\n }\n\n onMouseEnter() {\n this.isHovered = true;\n }\n\n onMouseLeave() {\n this.isHovered = false;\n }\n\n onToggleSidebar() {\n this.isSlim = !this.isSlim;\n this.toggleSidebar.emit(this.isSlim);\n }\n}\n","@if(isSlim){\n<div\n [@hoverState]=\"hoverState\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n class=\"relative shadow-3 h-full sidebar overflow-hidden relative\"\n>\n <div class=\"flex flex-column h-full\" style=\"scroll-padding-bottom: 5rem\">\n <div class=\"ml-1 mr-1\">\n <pho-sidebar-item\n (sliderClick)=\"sliderClick.emit($event)\"\n [item]=\"mainItems[0].items[0]\"\n />\n </div>\n\n <p-accordion [value]=\"[0, 1, 2, 3]\" [multiple]=\"true\">\n @for (itemGroup of mainItems; track $index) {\n <p-accordion-panel [value]=\"$index\">\n <p-accordion-header>\n <div class=\"flex align-items-center\">\n <img class=\"mr-2\" width=\"28\" [src]=\"itemGroup.icon\" alt=\"\" />\n <span class=\"text-primary font-bold\">{{\n itemGroup.module | translate\n }}</span>\n </div>\n\n <ng-template #toggleicon let-active=\"active\">\n @if (active) { } @else { }\n </ng-template>\n </p-accordion-header>\n\n <p-accordion-content>\n @if(isHovered){ @for (item of itemGroup.items.slice(1); track $index)\n {\n <pho-sidebar-item [item]=\"item\" class=\"group-item\" />\n\n } }\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n\n <div\n *ngIf=\"footerItem.length\"\n class=\"absolute bottom-0 left-0 flex flex-column w-full\"\n >\n <ul class=\"flex flex-column gap-3 mb-2 p-0 m-0\">\n @for (item of footerItem; track $index) {\n <pho-sidebar-item [item]=\"item\" class=\"group-item\" />\n }\n </ul>\n </div>\n </div>\n <div class=\"absolute bottom-0 left-0 flex justify-content-between w-full p-1\">\n <p-button\n icon=\"pi pi-cog\"\n [text]=\"true\"\n size=\"large\"\n [styleClass]=\"'m-1'\"\n [style.transform]=\"!isSlim ? 'rotate(180deg)' : ''\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n />\n\n <p-button\n (onClick)=\"onToggleSidebar()\"\n [text]=\"true\"\n [styleClass]=\"'m-1'\"\n [style.transform]=\"isSlim ? 'rotate(180deg)' : ''\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 17 15\"\n fill=\"none\"\n class=\"opacity-70\"\n [style.marginTop.px]=\"2\"\n [style.width.px]=\"14\"\n [style.height.px]=\"12\"\n >\n <path\n d=\"M7.071 0L8.485 1.414L3.828 6.071H13V8.071H3.828L8.485 12.728L7.071 14.142L0 7.071L7.071 0ZM15.001 14.071V0.0710001H17.001V14.071H15.001Z\"\n fill=\"black\"\n />\n </svg>\n </p-button>\n </div>\n</div>\n}@else {\n<div class=\"relative shadow-3 h-full sidebar overflow-hidden relative pr-1\">\n <div class=\"flex flex-column h-full\" style=\"scroll-padding-bottom: 5rem\">\n <div class=\"ml-1 mr-1\">\n <pho-sidebar-item\n [item]=\"mainItems[0].items[0]\"\n (sliderClick)=\"sliderClick.emit($event)\"\n />\n </div>\n\n <p-accordion [value]=\"[0, 1, 2, 3]\" [multiple]=\"true\">\n @for (itemGroup of mainItems; track $index) {\n <p-accordion-panel [value]=\"$index\">\n <p-accordion-header>\n <div class=\"flex align-items-center\">\n <img class=\"mr-2\" width=\"28\" [src]=\"itemGroup.icon\" alt=\"\" />\n <span class=\"text-primary font-bold\">{{\n itemGroup.module | translate\n }}</span>\n </div>\n\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i\n style=\"font-size: 0.7rem; padding-right: 12px\"\n class=\"pi pi-sort-up-fill opacity-70\"\n ></i>\n } @else {\n <i\n style=\"font-size: 0.7rem; padding-right: 12px\"\n class=\"pi pi-sort-down-fill opacity-70\"\n ></i>\n }\n </ng-template>\n </p-accordion-header>\n\n <p-accordion-content>\n @for (item of itemGroup.items.slice(1); track $index) {\n <pho-sidebar-item [item]=\"item\" class=\"group-item\" />\n\n }\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n </div>\n\n <div class=\"absolute bottom-0 left-0 flex w-full p-1\">\n <div\n [pTooltip]=\"footerItem?.tooltip | translate\"\n [tooltipPosition]=\"'top'\"\n class=\"w-15rem\"\n >\n <a\n [routerLink]=\"footerItem.path\"\n pButton\n icon=\"pi pi-cog\"\n [text]=\"true\"\n size=\"large\"\n class=\"m-1 no-underline w-3rem\"\n style=\"flex: 0 0 auto; min-width: fit-content\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n >\n </a>\n </div>\n\n <p-button\n (onClick)=\"onToggleSidebar()\"\n [text]=\"true\"\n [styleClass]=\"'m-1'\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 17 15\"\n fill=\"none\"\n class=\"arrow-icon\"\n [style.marginTop.px]=\"2\"\n [style.width.px]=\"14\"\n [style.height.px]=\"13\"\n >\n <path\n d=\"M7.071 0L8.485 1.414L3.828 6.071H13V8.071H3.828L8.485 12.728L7.071 14.142L0 7.071L7.071 0ZM15.001 14.071V0.0710001H17.001V14.071H15.001Z\"\n fill=\"black\"\n />\n </svg>\n </p-button>\n </div>\n</div>\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionStateService {\n private _disabledActions = signal<Set<string>>(new Set());\n\n get disabledActions() {\n return this._disabledActions.asReadonly();\n }\n\n disableAction(id: string) {\n const current = new Set(this._disabledActions());\n current.add(id);\n this._disabledActions.set(current);\n }\n\n enableAction(id: string) {\n const current = new Set(this._disabledActions());\n current.delete(id);\n this._disabledActions.set(current);\n }\n\n isDisabled(id: string): boolean {\n return this._disabledActions().has(id);\n }\n}","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule, ButtonProps } from 'primeng/button';\nimport { MenuModule } from 'primeng/menu';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActionStateService } from './action-state.service';\n\nexport enum ActionTypes {\n BASIC = 'BASIC',\n SELECT = 'SELECT',\n}\n\n// Interface for users to augment\nexport interface Actions {\n // Base actions are always available\n}\n\n// Helper type to get all registered action enums\nexport type RegisteredActionEnums = Actions[keyof Actions];\n\n// Helper type to get all possible action values\nexport type AllActionValues =\n RegisteredActionEnums[keyof RegisteredActionEnums];\n\nexport interface Action<T = AllActionValues> {\n id?: string;\n actionId: T;\n label: string;\n icon: string;\n severity: Exclude<ButtonProps['severity'], 'warning'> | 'warn';\n iconPos?: 'right' | 'left';\n type: keyof typeof ActionTypes;\n text?: boolean;\n key?: string;\n requiredPermission?: string;\n data?: any;\n disabled?: boolean;\n visible?: boolean;\n loading?: boolean;\n class?: string;\n\n items?: {\n key?: string;\n actionId?: T;\n label?: string;\n separator?: boolean;\n icon?: string;\n requiredPermission?: string;\n }[];\n}\n\n@Component({\n selector: 'pho-actions',\n imports: [\n CommonModule,\n ButtonModule,\n MenuModule,\n PopoverModule,\n TranslateModule,\n ],\n templateUrl: './actions.component.html',\n styleUrl: './actions.component.css',\n})\nexport class ActionsComponent {\n public actionStateService = inject(ActionStateService);\n\n @Input() actions!: Action[];\n @Output() actionClick = new EventEmitter<Action>();\n\n onActionClick($event: any, action: Action, menuRef?: Popover) {\n $event.stopPropagation();\n if (action.type === ActionTypes.SELECT && menuRef) {\n menuRef.toggle($event);\n } else {\n this.actionClick.emit(action);\n }\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n @for(action of actions; track action.actionId){ @switch (action.type) {\n @case(\"BASIC\"){\n <p-button\n [attr.data-cy]=\"'action-button-basic'\"\n *ngIf=\"action.visible !== false\"\n [label]=\"action.label | translate\"\n [icon]=\"action.icon || ''\"\n [styleClass]=\"action.class || ''\"\n [severity]=\"action.severity ?? 'primary'\"\n [disabled]=\"\n action.disabled || actionStateService.isDisabled(action.actionId)\n \"\n [loading]=\"action.loading || false\"\n [id]=\"action.id\"\n (onClick)=\"onActionClick($event, action)\"\n size=\"small\"\n [iconPos]=\"action.iconPos ?? 'right'\"\n ></p-button>\n } @case(\"SELECT\"){\n <p-button\n [attr.data-cy]=\"'action-button-select'\"\n *ngIf=\"action.visible !== false\"\n [label]=\"action.label | translate\"\n [icon]=\"action.icon || ''\"\n [styleClass]=\"action.class || ''\"\n [severity]=\"action.severity ?? 'primary'\"\n [disabled]=\"\n action.disabled || actionStateService.isDisabled(action.actionId)\n \"\n [loading]=\"action.loading || false\"\n [id]=\"action.id\"\n (onClick)=\"onActionClick($event, action, menuRef)\"\n size=\"small\"\n [iconPos]=\"action.iconPos ?? 'right'\"\n ></p-button>\n\n <p-popover #menuRef [dismissable]=\"true\" class=\"actions-popover\">\n <p-menu styleClass=\"border-0\" [model]=\"action.items\">\n <ng-template pTemplate=\"item\" let-item>\n <div\n [attr.data-cy]=\"'action-button-popover-item-' + item?.actionId\"\n (click)=\"onActionClick($event, item)\"\n (keydown.enter)=\"onActionClick($event, item)\"\n (keydown.space)=\"onActionClick($event, item)\"\n pRipple\n tabindex=\"0\"\n role=\"button\"\n class=\"flex items-center p-menu-item-link cursor-pointer\"\n >\n <span [class]=\"item.icon\"></span>\n <span class=\"ml-2\">{{ item.label | translate }}</span>\n </div>\n </ng-template>\n </p-menu>\n </p-popover>\n } } }\n</div>\n","export enum ActionKinds {\n CREATE = 'CREATE',\n SUBMIT = 'SUBMIT',\n ASSIGN = 'ASSIGN',\n NEW = 'NEW',\n UPDATE = 'UPDATE',\n RELOAD = 'RELOAD',\n CLOSE = 'CLOSE',\n OPEN = 'OPEN',\n EDIT = 'EDIT',\n DELETE = 'DELETE',\n EDIT_TRANSITION = 'EDIT_TRANSITION',\n ADD_TRANSITION = 'ADD_TRANSITION',\n READ = 'READ',\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { CardModule } from 'primeng/card';\nimport { DividerModule } from 'primeng/divider';\nimport { TagModule } from 'primeng/tag';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ActionKinds } from '../../utils/actions.utils';\nimport { ActionsComponent } from '../actions/actions.component';\nimport { AfterViewInit, ElementRef, ViewChild } from '@angular/core';\nexport interface cardConfig {\n name: string;\n subName: string;\n description: string;\n actions: any[];\n additional: any[];\n}\n@Component({\n selector: 'phoenix-card',\n imports: [\n CommonModule,\n TooltipModule,\n TranslateModule,\n ButtonModule,\n CardModule,\n ActionsComponent,\n TagModule,\n DividerModule,\n TooltipModule,\n ],\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n})\nexport class CardComponent<T extends Record<string, any>> {\n card = input.required<T>();\n cardEventEmmiter = output<{ data: T; action: string }>();\n actionEnum = ActionKinds;\n cardActions = input<any>();\n\n getObjectValueByKey(obj: any, key: string) {\n return obj[key];\n }\n\n @ViewChild('descEl') descEl!: ElementRef<HTMLElement>;\n showTooltip = false;\n\n ngAfterViewInit(): void {\n const el = this.descEl?.nativeElement;\n this.showTooltip = !!el && el.scrollHeight > el.clientHeight;\n }\n\n onCardClick(event: any, actionType?: string): void {\n const data = {\n id: this.card()['id'],\n };\n\n const finalEvent = {\n ...event,\n data,\n };\n\n if (actionType) {\n finalEvent.actionId = actionType;\n }\n\n this.cardEventEmmiter.emit(finalEvent);\n }\n\n shouldShowTitleTooltip(): boolean {\n const title = this.card()['title'];\n return title && title.length > 40;\n }\n}\n","<p-card\n styleClass=\"cursor-pointer pho-card hover:surface-100\"\n [style]=\"{ width: '25rem', overflow: 'hidden' }\"\n (click)=\"onCardClick(card(), 'NAVIGATE')\"\n [attr.data-cy]=\"'card-navigate-click'\"\n>\n <ng-template #header> </ng-template>\n <ng-template #title>\n <div class=\"flex justify-content-between\">\n <span\n class=\"font-semibold text-base card-title\"\n [pTooltip]=\"shouldShowTitleTooltip() ? card()['title'] : undefined\"\n tooltipStyleClass=\"phoenix-card-tooltip\"\n >\n {{ card()[\"title\"] }}</span\n >\n\n <pho-actions\n (actionClick)=\"onCardClick($event)\"\n [actions]=\"cardActions()\"\n ></pho-actions>\n </div>\n </ng-template>\n <ng-template #subtitle> </ng-template>\n <p\n #descEl\n class=\"text-500 text-sm\"\n [style]=\"{ height: '5rem', overflow: 'hidden' }\"\n [innerHTML]=\"card()['description'] || '--'\"\n [pTooltip]=\"showTooltip ? card()['description'] : undefined\"\n tooltipStyleClass=\"phoenix-card-tooltip\"\n ></p>\n <ng-content select=\"[custom]\"></ng-content>\n <ng-template #footer>\n <p-divider />\n <ng-content select=\"[footer]\"></ng-content>\n <div class=\"flex flex-wrap gap-1 justify-content-between\">\n @for(item of card()['footerData'] ; track item.key; let i = $index){\n @if(item?.value){\n <p-tag\n [icon]=\"item?.icon\"\n [severity]=\"item?.severity || 'info'\"\n [value]=\"item.value\"\n />}@else { <span>--</span> } }\n </div>\n </ng-template>\n</p-card>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxChangeEvent, CheckboxModule } from 'primeng/checkbox';\nimport { DividerModule } from 'primeng/divider';\nimport { ImageModule } from 'primeng/image';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { SearchResult } from '../../models/search-result.model';\n\ninterface types {\n title: string;\n checkboxes: any;\n}\n\n@Component({\n selector: 'pho-serach-card',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n TooltipModule,\n DividerModule,\n CheckboxModule,\n FormsModule,\n ImageModule,\n ],\n templateUrl: './search-card.component.html',\n styleUrls: ['./search-card.component.css'],\n})\nexport class SearchCardComponent {\n public translate = inject(TranslateService);\n @Input() searchData: SearchResult[] | any;\n @Input() tab?: number;\n\n @Input() mocekedFilters!: types[];\n\n @Input() checkboxes!: { [key: string]: boolean };\n @Output() onScrollEvent = new EventEmitter<Event>();\n @Output() onSelectLinkEvent = new EventEmitter<SearchResult>();\n @Output() onSelectFilterEvent = new EventEmitter<{\n value: { checked: boolean };\n name: string;\n }>();\n\n onScroll(scrollObj: Event): void {\n this.onScrollEvent.emit(scrollObj);\n }\n\n setLinkUrl(link: SearchResult): void {\n this.onSelectLinkEvent.emit(link);\n }\n\n onClick(event: CheckboxChangeEvent, name: string): void {\n event?.originalEvent?.stopPropagation();\n const data = {\n event: event,\n value: { checked: event.checked },\n name: name,\n };\n this.onSelectFilterEvent.emit(data);\n }\n}\n","<ng-container>\n <div class=\"flex h-20rem\">\n <div\n [attr.data-cy]=\"'navigation-search-bar-tab-card-' + tab\"\n class=\"overflow-y-auto\"\n [style.width.vw]=\"35\"\n (scroll)=\"onScroll($event)\"\n *ngIf=\"searchData?.length > 0; else message\"\n >\n <ng-container *ngFor=\"let link of searchData\">\n <div\n [attr.data-cy]=\"'navigation-search-bar-tab-card-link-' + tab\"\n class=\"flex cursor-pointer mb-3 hover:surface-200 border-round-md\"\n (click)=\"setLinkUrl(link)\"\n >\n <p-image\n class=\"border-round-sm p-2 mt-1\"\n [src]=\"\n 'assets/object_types/pink/full/' + link.type.labelKey + '.svg'\n \"\n height=\"24\"\n width=\"27\"\n ></p-image>\n <div class=\"flex flex-column justify-content-around ml-2\">\n <span\n [pTooltip]=\"link.name\"\n tooltipPosition=\"bottom\"\n class=\"mt-1 font-light text-lg\"\n >\n <small class=\"mr-2 font-light text-lg\"\n >{{ link.title | slice : 0 : 50\n }}{{ link.title.length > 50 ? \"...\" : \"\" }}</small\n >\n\n {{ link.name | slice : 0 : 50\n }}{{ link.name.length > 50 ? \"...\" : \"\" }}\n\n <small class=\"font-light text-base text-400\">{{\n link.type?.labelKeyVal | slice : 0 : 20\n }}</small>\n </span>\n <div class=\"flex\">\n <span class=\"mb-1 text-sm\" [pTooltip]=\"link.entity.name\"\n >{{ \"LABELS.ENTITY\" | translate }}:&nbsp;{{\n link.entity.name | slice : 0 : 50\n }}{{ link.entity.name.length > 50 ? \"...\" : \"\" }}</span\n >\n <span\n [pTooltip]=\"link.asset.name\"\n *ngIf=\"link?.asset?.name\"\n class=\"ml-2 mb-1 text-sm\"\n >{{ \"LABELS.ASSET\" | translate }}:&nbsp;{{\n link.asset.name | slice : 0 : 50\n }}{{ link.asset.name.length > 50 ? \"...\" : \"\" }}</span\n >\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <ng-container\n *ngIf=\"mocekedFilters[0].checkboxes?.length > 0 && checkboxes\"\n >\n <p-divider layout=\"vertical\"></p-divider>\n <div\n class=\"flex flex-column overflow-y-auto h-40rem pl-3 justify-content-start\"\n >\n <ng-container *ngFor=\"let item of mocekedFilters\">\n <span class=\"mt-2 mb-3 font-semibold text-sm justify-content-start\"\n >{{ item.title | translate }}\n </span>\n <div class=\"h-25rem flex flex-column justify-content-start\">\n <ng-container *ngFor=\"let checkbox of item.checkboxes\">\n <div class=\"field-checkbox\" *ngIf=\"checkbox?.name\">\n <p-checkbox\n [attr.data-cy]=\"\n 'navigation-search-filter-checkbox-' + checkbox?.labelKey\n \"\n [(ngModel)]=\"checkboxes[checkbox?.labelKey]\"\n [binary]=\"true\"\n [inputId]=\"checkbox?.name\"\n (onChange)=\"onClick($event, checkbox?.labelKey)\"\n ></p-checkbox>\n\n <label class=\"text-sm\" [for]=\"checkbox?.name\">{{\n checkbox.name | translate\n }}</label>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</ng-container>\n<ng-template #message>\n <div class=\"overflow-y-auto\" style=\"width: 35vw\">\n {{ \"NO_RESULTS_FOUND\" | translate }}\n </div>\n</ng-template>\n","export enum ComplItems {\n COMPL_APPLIED_MODULES = 'COMPL_APPLIED_MODULES',\n COMPL_APPLIED_MEASURE = 'COMPL_APPLIED_MEASURE',\n COMPL_APPLIED_REQUIREMENT = 'COMPL_APPLIED_REQUIREMENT',\n COMPL_APPLIED_THREAT = 'COMPL_APPLIED_THREAT',\n COMPL_APPLIED_CONTROL = 'COMPL_APPLIED_CONTROL',\n COMPL_SCOPE = 'COMPL_SCOPE',\n COMPL_TOT_BUILDING = 'COMPL_TOT_BUILDING',\n COMPL_TOT_DOMAIN = 'COMPL_TOT_DOMAIN',\n COMPL_TOT_INFORMATION = 'COMPL_TOT_INFORMATION',\n COMPL_TOT_BUSINESS = 'COMPL_TOT_BUSINESS_PROCESS',\n COMPL_TOT_APPLICATION = 'COMPL_TOT_APPLICATION',\n COMPL_TOT_ITSYSETEM = 'COMPL_TOT_IT_SYSTEM',\n COMPL_TOT_NETWORK = 'COMPL_TOT_NETWORK',\n COMPL_TOT_EMPLOYEE = 'COMPL_TOT_EMPLOYEE',\n COMPL_TOT_INFRASTRUCTURE = 'COMPL_TOT_INFRASTRUCTURE',\n COMPL_TOT_OUTSORCING = 'COMPL_TOT_OUTSORCING',\n COMPL_TOT_PHYSICAL_FACILITY = 'COMPL_TOT_PHYSICAL_FACILITY',\n COMPL_TOT_ROOM = 'COMPL_TOT_ROOM',\n COMPL_TOGS = 'COMPL_TOGS',\n RISK = 'RISK',\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CrudService {\n constructor(private http: HttpClient) {}\n\n getSearchData<T>(url: string, phrase: string, size: number): Observable<T[]> {\n const params = new HttpParams().set('phrase', phrase).set('size', size);\n return this.http.get<T[]>(url, { params });\n }\n}\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 effect,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n output,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IconField } from 'primeng/iconfield';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { OverlayPanel, OverlayPanelModule } from 'primeng/overlaypanel';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { TabsModule } from 'primeng/tabs';\nimport { TabViewModule } from 'primeng/tabview';\nimport { SearchCardComponent } from '../search-card/search-card.component';\nimport { SearchResult } from '../../models/search-result.model';\nimport { ComplItems } from '../../utils/compl-types.utils';\nimport {\n catchError,\n debounceTime,\n of,\n Subject,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport { TreeNode } from 'primeng/api';\nimport { SoTypes } from '../meta-form/utils/so-types';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { CrudService } from '../../services/crud.service';\nimport { SearchTabs } from '../../models/search.model';\ninterface TogTreeContext {\n tog: TreeNode;\n togType: TreeNode;\n togScope: TreeNode;\n}\ninterface types {\n title: string;\n checkboxes: any;\n}\n@Component({\n selector: 'pho-search-bar',\n standalone: true,\n imports: [\n CommonModule,\n InputTextModule,\n PopoverModule,\n TabsModule,\n MessageModule,\n TranslateModule,\n SearchCardComponent,\n IconFieldModule,\n InputIconModule,\n ],\n styleUrls: ['./search-bar.component.css'],\n templateUrl: './search-bar.component.html',\n animations: [\n trigger('openClose', [\n state(\n 'open',\n style({\n width: '50vw',\n opacity: 1,\n })\n ),\n state(\n 'closed',\n style({\n width: '13vw',\n opacity: 0.8,\n })\n ),\n transition('* <=> *', [animate('0.1s ease-in-out')]),\n ]),\n ],\n})\nexport class SearchBarComponent {\n @ViewChild('op') set nes(nes: any) {\n if (nes) {\n this.op = nes;\n }\n }\n @ViewChild('elm', { static: true }) elm!: ElementRef;\n\n op?: any;\n isOpen: boolean = false;\n valueChanges = new Subject<Event>();\n inputEvent!: Event;\n clonedData?: SearchResult[];\n searchData?: SearchResult[];\n size: number = 10;\n textValue!: string;\n checkboxes!: { [key: string]: boolean };\n\n valueSub$!: Subscription;\n\n tabIndex: number = 0;\n trigg: boolean = true;\n\n mocekedFilters: types[] = [\n {\n title: 'LABELS.FILTER_BY_TYPE',\n checkboxes: [],\n },\n ];\n crudService = inject(CrudService);\n treeCollectionMap!: Map<string, TogTreeContext>;\n reloadSubscription$!: Subscription;\n inputText?: string;\n tabs = input<SearchTabs[]>();\n\n constructor(public translate: TranslateService) {\n this.valueSub$ = this.valueChanges\n .pipe(\n debounceTime(200),\n switchMap((value) => {\n this.inputEvent = value;\n const target = value?.target as HTMLTextAreaElement;\n this.size = 10;\n this.inputText = target?.value;\n if (target?.value) {\n this.textValue = target.value;\n const url = this.tabs()?.[this.tabIndex]?.apiUrl;\n if (url) {\n return this.crudService\n .getSearchData<SearchResult>(url, target.value, this.size)\n .pipe(\n catchError((err) => {\n console.error('Error fetching data', err);\n return of(null);\n })\n );\n } else {\n return of(null);\n }\n } else {\n return of(null);\n }\n })\n )\n .subscribe((res) => {\n if (Array.isArray(res)) {\n this.searchData = [...res];\n this.clonedData = [...res];\n this.populateFilters(res);\n this.trigg = true;\n this.filterData();\n }\n });\n }\n\n populateFilters(data?: SearchResult[]): void {\n this.checkboxes = {};\n if (data !== undefined) {\n data.forEach((item) => {\n if (item?.type?.labelKey) {\n this.checkboxes[item.type.labelKey] = false;\n }\n });\n } else {\n this.checkboxes = {};\n }\n }\n\n setLinkUrl(url?: string): void {\n const baseUrl = this.tabs()?.[this.tabIndex]?.linkUrl;\n if (url && baseUrl) {\n window.open(baseUrl + url);\n }\n }\n\n onScroll(scrollObj: Event): void {\n if (\n scrollObj?.target &&\n (scrollObj.target as HTMLInputElement).offsetHeight +\n (scrollObj.target as HTMLInputElement).scrollTop >=\n (scrollObj.target as HTMLInputElement).scrollHeight\n ) {\n if (this.size <= 100) {\n this.size = this.size + 10;\n this.valueChanges.next(this.inputEvent);\n }\n }\n }\n\n onClick(data: { value: { checked: boolean }; name: string }): void {\n this.checkboxes[data.name] = data.value.checked;\n this.filterData(false);\n }\n\n filterData(makeNewFilters: boolean = true): void {\n let arr: string[] = [];\n\n for (const key in this.checkboxes) {\n if (this.checkboxes[key]) {\n arr.push(key);\n }\n if (this.checkboxes[ComplItems.COMPL_TOGS]) {\n arr = arr.concat([\n ComplItems.COMPL_TOT_BUILDING,\n ComplItems.COMPL_TOT_DOMAIN,\n ComplItems.COMPL_TOT_INFORMATION,\n ComplItems.COMPL_TOT_BUSINESS,\n ComplItems.COMPL_TOT_APPLICATION,\n ComplItems.COMPL_TOT_ITSYSETEM,\n ComplItems.COMPL_TOT_NETWORK,\n ComplItems.COMPL_TOT_EMPLOYEE,\n ComplItems.COMPL_TOT_INFRASTRUCTURE,\n ComplItems.COMPL_TOT_OUTSORCING,\n ComplItems.COMPL_TOT_PHYSICAL_FACILITY,\n ComplItems.COMPL_TOT_ROOM,\n ]);\n }\n }\n\n if (arr.length === 0) {\n this.searchData = this.clonedData;\n } else {\n this.searchData = this.clonedData?.filter((item: any) => {\n if (arr.includes(item.type.labelKey)) {\n return item;\n } else {\n return null;\n }\n });\n }\n if (makeNewFilters) {\n this.setCheckBoxes();\n }\n }\n\n expand(): void {\n this.isOpen = true;\n }\n\n onParentClick(event: Event): void {\n setTimeout(() => {\n this.op?.show(event, this.elm.nativeElement);\n }, 120);\n }\n\n onTabClick(id: any) {\n this.searchData = [];\n this.clonedData = [];\n this.filterData();\n this.tabIndex = id;\n if (this.inputEvent?.target) {\n this.valueChanges.next(this.inputEvent);\n }\n }\n\n setCheckBoxes(): void {\n if (this.trigg) {\n this.mocekedFilters[0].checkboxes = [];\n const lablesArr: string[] = [];\n this.searchData?.forEach((item: any) => {\n if (!lablesArr.includes(item.type.labelKey)) {\n this.mocekedFilters[0].checkboxes.push({\n name: item.type?.labelKeyVal,\n labelKey: item.type.labelKey,\n value: false,\n });\n lablesArr.push(item.type.labelKey);\n }\n });\n\n // this.trigg = false;\n }\n }\n\n ngOnDestroy(): void {\n if (this.valueSub$) this.valueSub$.unsubscribe();\n if (this.reloadSubscription$) this.reloadSubscription$.unsubscribe();\n }\n}\n","<div\n (click)=\"onParentClick($event)\"\n class=\"p-input-icon-left ml-1\"\n #elm\n [attr.data-cy]=\"'navigation-search-bar'\"\n>\n <p-iconfield>\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n [attr.data-cy]=\"'navigation-search-bar-input'\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n type=\"text\"\n pInputText\n placeholder=\"{{ 'SEARCH_PLACEHOLDERS.GLOBAL_SEARCH' | translate }}\"\n (input)=\"valueChanges.next($event)\"\n (focus)=\"onParentClick($event); expand()\"\n />\n </p-iconfield>\n</div>\n<p-popover\n [dismissable]=\"true\"\n [showTransitionOptions]=\"'.2s ease-out'\"\n [autoZIndex]=\"true\"\n #op\n [style]=\"{ width: '50vw', paddingLeft: '0' }\"\n styleClass=\"global-search\"\n (onHide)=\"isOpen = false\"\n>\n <div\n *ngIf=\"!inputText\"\n class=\"flex align-items-start gap-2 p-3 border-1 border-blue-300 surface-50 text-blue-700 border-round w-full\"\n >\n <i class=\"pi pi-info-circle mt-1 text-blue-500\"></i>\n <span class=\"text-sm\">{{ \"MESSAGES.START_TYPING\" | translate }}</span>\n </div>\n\n <ng-template pTemplate=\"content\">\n @if(inputText) {\n <p-tabs [value]=\"tabIndex\">\n <p-tablist>\n @for (tab of tabs(); track tab.id) {\n <p-tab\n [value]=\"tab.id\"\n (click)=\"onTabClick(tab.id)\"\n [attr.data-cy]=\"'navigation-search-bar-tab-' + tab.id\"\n >\n <span>{{ tab.header }}</span>\n </p-tab>\n }\n </p-tablist>\n <p-tabpanels>\n @for (tab of tabs(); track tab.id) {\n <p-tabpanel [value]=\"tab.id\">\n <pho-serach-card\n [tab]=\"tab.id\"\n [mocekedFilters]=\"mocekedFilters\"\n [searchData]=\"searchData\"\n [checkboxes]=\"checkboxes\"\n (onScrollEvent)=\"onScroll($event)\"\n (onSelectLinkEvent)=\"setLinkUrl($event.url)\"\n (onSelectFilterEvent)=\"onClick($event)\"\n >\n </pho-serach-card>\n </p-tabpanel>\n }\n </p-tabpanels> </p-tabs\n >}\n </ng-template>\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';\nimport { User } from '../../models/shell-config.model';\nimport { DividerModule } from 'primeng/divider';\n\n@Component({\n selector: 'pho-user',\n imports: [Avatar, Popover, TranslateModule, DividerModule],\n template: `\n <a\n data-cy=\"user-panel-togg-button\"\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 @if(user.bindImageUrl){\n <div\n [style.background-image]=\"user.bindImageUrl\"\n class=\"cover-image\"\n ></div>\n }@else {\n\n <p-avatar\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n [label]=\"\n (user.firstname?.charAt(0)?.toUpperCase() || '') +\n (user.lastname?.charAt(0)?.toUpperCase() || '')\n \"\n shape=\"circle\"\n />\n }\n </a>\n <p-popover #op>\n @if(user){\n <div class=\"p-2\">\n <div class=\"flex align-items-top\">\n @if(user.bindImageUrl){\n <div\n [style.background-image]=\"user.bindImageUrl\"\n class=\"profile-image\"\n ></div>\n }@else {\n <p-avatar\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n [label]=\"\n (user.firstname?.charAt(0)?.toUpperCase() || '') +\n (user.lastname?.charAt(0)?.toUpperCase() || '')\n \"\n shape=\"circle\"\n />\n }\n\n <div class=\"text-primary cursor-pointer ml-2\">\n <div class=\"text-xl\">{{ user.firstname }} {{ user.lastname }}</div>\n <div class=\"font-bold text-500 text-m\">{{ user.username }}</div>\n <div class=\"text-m\">{{ user.email }}</div>\n </div>\n </div>\n </div>\n <p-divider class=\"p-0 m-0\" />\n <div>\n <a\n class=\"flex flex-row align-items-center cursor-pointer ml-2 mb-2 mt-2\"\n data-cy=\"user-panel-settings-button\"\n (click)=\"actionEmmiter.emit('SETTINGS')\"\n pRipple\n >\n <i class=\"pi pi-user-edit p-2\" style=\"font-size: 1rem\"></i>\n <span>{{ 'ACTION.USER_PROFILE' | translate }}</span>\n </a>\n\n <p-divider class=\"p-0 m-0\" />\n <a\n style=\"color: red\"\n class=\"flex flex-row align-items-center cursor-pointer ml-2 mb-2 mt-2\"\n data-cy=\"user-panel-logout-button\"\n (click)=\"actionEmmiter.emit('LOGOUT')\"\n pRipple\n >\n <i class=\"pi pi-power-off p-2 \" style=\"font-size: 1rem\"></i>\n <span>{{ 'ACTION.LOGOUT' | translate }}</span>\n </a>\n </div>\n }\n <!-- <div class=\"flex gap-2 w-20rem\">\n @if(user.bindImageUrl){\n <div\n [style.background-image]=\"user.bindImageUrl\"\n class=\"profile-image\"\n ></div>\n }\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 </p-popover>\n `,\n styles: [\n `\n .profile-image {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n cursor: pointer;\n }\n .cover-image {\n width: 35px;\n height: 35px;\n border-radius: 50%;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n cursor: pointer;\n }\n `,\n ],\n})\nexport class UserComponent {\n @Input() user!: User;\n @Output() actionEmmiter = new EventEmitter<string>();\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n inject,\n input,\n Input,\n OnInit,\n output,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Drawer, DrawerModule } from 'primeng/drawer';\nimport { SearchBarComponent } from '../search-bar/search-bar.component';\nimport { UserComponent } from '../user/user.component';\nimport { RouterModule } from '@angular/router';\nimport { DividerModule } from 'primeng/divider';\nimport { ButtonModule } from 'primeng/button';\nimport { User } from '../../models/shell-config.model';\nimport { SearchResult } from '../../models/search-result.model';\nimport { SearchTabs } from '../../models/search.model';\nimport { Ripple } from 'primeng/ripple';\nimport { ImageModule } from 'primeng/image';\nimport { TagModule } from 'primeng/tag';\nimport { PopoverModule } from 'primeng/popover';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule } from 'primeng/toast';\nimport { TooltipModule } from 'primeng/tooltip';\n\nexport interface TopbarModuleItem {\n label: string;\n fullName?: string; // Opcioni, jer ne postoji kod svih modula\n icon?: string;\n url?: string;\n routerLink?: string[];\n disabled?: boolean;\n}\n\nexport interface TopbarModuleGroup {\n label: string;\n layout: 'full' | 'grid';\n showIconBackground: boolean;\n items: TopbarModuleItem[];\n}\n\nexport interface TopbarFooterConfig {\n companyName: string;\n companyUrl: string;\n guideLabel: string;\n guideUrl: string;\n copyrightText: string;\n}\n\nexport interface UrlConfig {\n url: string | null;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pho-topbar',\n standalone: true,\n imports: [\n CommonModule,\n SearchBarComponent,\n UserComponent,\n TranslateModule,\n RouterModule,\n DrawerModule,\n Drawer,\n DividerModule,\n DividerModule,\n ButtonModule,\n ImageModule,\n TagModule,\n PopoverModule,\n ToastModule,\n TooltipModule,\n ],\n templateUrl: './topbar.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [MessageService],\n})\nexport class TopbarComponent {\n sidebarConfig = { visible: false, type: '' };\n currentYear: number = new Date().getFullYear();\n isSidebarVisible: boolean = false;\n\n @Input() homeUrl: string = '/';\n @Input() user!: User;\n @Input() shortModuleName?: string = 'FLEX';\n @Input() hidelogo?: boolean = false;\n @Input() topbarModulesMenu: any[] = [];\n @Input() darkModeSelector: any;\n @Input() urlConfig?: UrlConfig;\n @Input() footerConfig: TopbarFooterConfig = {\n companyName: 'fuentis',\n companyUrl: 'https://fuentis.com/',\n guideLabel: 'Guide',\n guideUrl: 'https://fuentis.atlassian.net/wiki/spaces/FSUG/overview',\n copyrightText:\n '© ' + new Date().getFullYear() + ' fuentis. All Rights Reserved.',\n };\n\n @Output() onDarkModeSelect = new EventEmitter<void>();\n @Output() onUserPopoverAction = new EventEmitter<string>();\n closeCallback(event: any) {}\n searchConfig = input<SearchTabs[]>();\n openSidebarPanel() {\n this.isSidebarVisible = true;\n }\n private messageService = inject(MessageService);\n private translateService = inject(TranslateService);\n\n /** ✅ Zatvara sidebar */\n closeSidebar() {\n this.isSidebarVisible = false;\n }\n\n ngOnInit() {\n const items = this.topbarModulesMenu[0]?.items || [];\n }\n\n onDarkModeSelectEmit() {\n this.onDarkModeSelect.emit();\n }\n\n goToHome() {\n if (this.homeUrl) {\n window.location.href = this.homeUrl;\n }\n }\n\n goToTicketCenter() {\n window.open(\n 'https://fuentis.atlassian.net/servicedesk/customer/portal/1',\n '_blank'\n );\n }\n\n copyToClipboard($event: any, linkUrl: any) {\n $event.stopPropagation();\n $event.preventDefault();\n\n if (!linkUrl) {\n console.warn('No linkUrl for extIncidentConfig');\n return;\n }\n this.isSidebarVisible = false;\n navigator.clipboard.writeText(linkUrl);\n\n this.messageService.add({\n severity: 'success',\n summary: this.translateService.instant('TOASTER.SUCCESS'),\n detail: this.translateService.instant('TOASTER.LINK_COPIED'),\n life: 3000,\n });\n }\n\n get bindImageUrl(): string {\n return this.user?.imageUrl\n ? `url(${this.user.imageUrl})`\n : `url('assets/default-user.png')`;\n }\n}\n","<div\n class=\"h-full px-2 justify-content-between w-full flex align-items-center shadow-1 topbar\"\n>\n <!-- Title -->\n <div class=\"flex align-items-center justify-content-center mb-2 ml-2\">\n @if (!hidelogo) {\n <img class=\"h-2rem\" src=\"assets/logo_rose.png\" alt=\"fuentis_logo_white\" />\n }\n <!-- <p-tag\n [style]=\"{\n marginLeft: '5px',\n marginBottom: '8px',\n padding: '2px 6px',\n fontSize: '9px',\n border: '1px solid var(--text-color)',\n background: 'transparent',\n color: 'var(--text-color)'\n }\"\n severity=\"info\"\n [value]=\"shortModuleName\"\n /> -->\n </div>\n <!-- children -->\n <ng-content></ng-content>\n\n <div class=\"flex align-items-center gap-2\">\n <!-- Search Bar -->\n <pho-search-bar\n [pTooltip]=\"'TOPBAR_FUNCTIONS.SEARCH' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n [tabs]=\"searchConfig()\"\n ></pho-search-bar>\n\n <!-- ToggleDarkmode -->\n <p-button\n [pTooltip]=\"'TOPBAR_FUNCTIONS.THEME_SWITCH' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n data-cy=\"theme-switch-button\"\n (onClick)=\"onDarkModeSelectEmit()\"\n [icon]=\"darkModeSelector.mode === 'dark' ? 'pi pi-sun' : 'pi pi-moon'\"\n variant=\"outlined\"\n />\n\n <p-button\n data-cy=\"side-panel-togg-button\"\n data-cy=\"side-panel-togg-button\"\n (onClick)=\"op.toggle($event)\"\n icon=\"pi pi-th-large\"\n variant=\"outlined\"\n [pTooltip]=\"'TOPBAR_FUNCTIONS.APPLICATION_MENU' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n />\n <!-- Side Panel (Opens Sidebar) -->\n <p-button\n data-cy=\"side-panel-togg-button\"\n data-cy=\"side-panel-togg-button\"\n (onClick)=\"openSidebarPanel()\"\n icon=\"pi pi-question-circle\"\n variant=\"outlined\"\n [pTooltip]=\"'TOPBAR_FUNCTIONS.HELP_CENTER' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n />\n\n <!-- User Icon -->\n <pho-user\n [user]=\"user\"\n (actionEmmiter)=\"onUserPopoverAction.emit($event)\"\n [pTooltip]=\"'TOPBAR_FUNCTIONS.USER_MENU' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n />\n </div>\n</div>\n\n<!-- Sidebar Menu -->\n<p-drawer\n styleClass=\"w-25rem\"\n position=\"right\"\n [(visible)]=\"isSidebarVisible\"\n [closable]=\"false\"\n>\n <ng-template #header>\n <div class=\"flex align-items-center justify-content-between w-full\">\n <div class=\"flex\">\n <span class=\"font-bold text-xl\">\n {{ \"ACTION.HELP_CENTER\" | translate }}\n </span>\n </div>\n\n <p-button\n (onClick)=\"isSidebarVisible = false\"\n icon=\"pi pi-times\"\n [rounded]=\"true\"\n [text]=\"true\"\n />\n </div>\n </ng-template>\n <div class=\"p-1\">\n <div class=\"flex flex-wrap gap-4\">\n <!-- first -->\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-ticket text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.CREATE_TICKET\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.CREATE_TICKET_DESCRIPTION\" | translate }}\n </div>\n </div>\n <div class=\"w-full\">\n <p-button\n (onClick)=\"goToTicketCenter()\"\n [label]=\"'HELP_CENTER.CREATE_TICKET_BUTTON' | translate\"\n variant=\"outlined\"\n size=\"small\"\n />\n </div>\n </div>\n\n <!-- second -->\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-headphones text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.CALL_US\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.CALL_US_DESCRIPTION\" | translate }}\n </div>\n </div>\n <div class=\"w-full\">\n {{ \"HELP_CENTER.PHONE_NUMBER\" | translate }}\n </div>\n </div>\n\n <!-- third -->\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-envelope text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.SEND_EMAIL\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.SEND_EMAIL_DESCRIPTION\" | translate }}\n </div>\n </div>\n <div class=\"w-full\">\n <a href=\"mailto:support&#64;fuentis.com\">\n {{ \"HELP_CENTER.SUPPORT_EMAIL\" | translate }}\n </a>\n </div>\n </div>\n\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': urlConfig?.disabled }\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-file text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.REPORT_INCIDENT_TITLE\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.REPORT_INCIDENT_DESCRIPTION\" | translate }}\n </div>\n </div>\n\n <div class=\"w-full flex align-items-center gap-2\">\n <a\n class=\"no-underline\"\n [href]=\"urlConfig?.url || '#'\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <p-button\n [label]=\"'HELP_CENTER.REPORT_INCIDENT_ACTION' | translate\"\n variant=\"outlined\"\n size=\"small\"\n icon=\"pi pi-copy\"\n (onClick)=\"copyToClipboard($event, urlConfig?.url)\"\n [disabled]=\"urlConfig?.disabled || !urlConfig?.url\"\n />\n </a>\n </div>\n </div>\n </div>\n <!-- External Incident Report card -->\n\n <div class=\"mt-5 p-3\">\n <h4 class=\"\">\n {{ \"ACTION.BROWSE\" | translate }} <br />\n <a\n class=\"\"\n [href]=\"footerConfig.guideUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"flex align-items-center\">\n {{ \"ACTION.KNOWLEDGE_BASE\" | translate }}\n <span style=\"text-decoration: none\">\n <i\n style=\"font-size: 15px\"\n class=\"pi pi-graduation-cap p-2 no-underline\"\n ></i>\n </span>\n\n <!-- <i\n style=\"font-size: 11px\"\n class=\"pi pi-external-link p-2 no-underline\"\n ></i> -->\n </span>\n </a>\n </h4>\n </div>\n </div>\n <ng-template #footer>\n <div class=\"text-xs text-center text-600\">\n {{ \"HELP_CENTER.SUITE_DESCRIPTION\" | translate }}\n </div>\n </ng-template>\n</p-drawer>\n\n<!-- <p-popover #op>\n <div class=\"w-22rem\">\n <ng-container *ngFor=\"let moduleGroup of topbarModulesMenu\">\n <div class=\"grid\">\n <ng-container *ngIf=\"moduleGroup.layout === 'grid'\">\n <div\n *ngFor=\"let module of moduleGroup.items\"\n class=\"col-4 p-3 hover:surface-100 cursor-pointer p-0 m-0 sidebaritem\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': module?.disabled }\"\n >\n <a\n class=\"text-primary flex flex-column align-items-center gap-2\"\n [href]=\"module.url || '#'\"\n style=\"text-decoration: none; cursor: pointer\"\n [attr.data-cy]=\"'side-panel-menu-item-' + module.label\"\n >\n <div\n class=\"w-4rem border-round-sm flex justify-content-center align-items-center\"\n [style.backgroundColor]=\"\n moduleGroup.showIconBackground\n ? module.disabled\n ? '#ccc'\n : '#e74360'\n : 'transparent'\n \"\n >\n <img *ngIf=\"module.icon\" [src]=\"module.icon\" class=\"w-2rem\" />\n </div>\n <span class=\"text-sm text-center\">{{\n module.label | translate\n }}</span>\n </a>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</p-popover> -->\n<p-toast></p-toast>\n\n<!-- wait for restructure of the topbar modules menu -->\n<p-popover #op>\n <div class=\"w-25rem\">\n <ng-container *ngFor=\"let item of topbarModulesMenu\">\n <div\n class=\"p-0 m-0 hover:surface-100 cursor-pointer p-2\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': item?.disabled }\"\n >\n <a\n class=\"text-primary flex align-items-center\"\n [href]=\"item.url || '#'\"\n style=\"text-decoration: none; cursor: pointer\"\n [attr.data-cy]=\"'side-panel-menu-item-' + item.title\"\n >\n <div\n class=\"w-3rem h-3rem border-round-md flex justify-content-center align-items-center border-200 border-1\"\n style=\"margin-right: 10px\"\n >\n <img *ngIf=\"item.icon\" [src]=\"item.icon\" class=\"w-2rem\" />\n </div>\n <div class=\"\">\n <div class=\"font-semibold\">\n {{ item.title | translate }}\n </div>\n <div class=\"text-sm max-w-17rem text-600\">\n {{ item.description | translate }}\n </div>\n </div>\n </a>\n </div>\n </ng-container>\n </div>\n</p-popover>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'phoenix-quick-pick',\n imports: [CommonModule],\n templateUrl: './quick-pick.component.html',\n styleUrl: './quick-pick.component.css',\n})\nexport class QuickPickComponent {\n @Output() onBack = new EventEmitter<void>();\n @Output() onQuickPick = new EventEmitter<void>();\n @Output() onForward = new EventEmitter<void>();\n}\n","<div class=\"flex align-items-center gap-2\">\n <i\n class=\"pi pi-chevron-left text-blue-500 cursor-pointer hover:text-blue-700 text-sm\"\n data-cy=\"quic-pick-back-button\"\n (click)=\"onBack.emit()\"\n role=\"button\"\n tabindex=\"0\"\n ></i>\n <i\n class=\"pi pi-table text-blue-500 cursor-pointer hover:text-blue-700 text-sm\"\n data-cy=\"quic-pick-button\"\n (click)=\"onQuickPick.emit()\"\n role=\"button\"\n tabindex=\"0\"\n ></i>\n <i\n class=\"pi pi-chevron-right text-blue-500 cursor-pointer hover:text-blue-700 text-sm\"\n data-cy=\"quic-pick-forward-button\"\n (click)=\"onForward.emit()\"\n role=\"button\"\n tabindex=\"0\"\n ></i>\n</div>\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TieredMenuModule } from 'primeng/tieredmenu';\nimport { QuickPickComponent } from '../quick-pick/quick-pick/quick-pick.component';\nimport { TagModule } from 'primeng/tag';\n\n@Component({\n selector: 'phoenix-status-header',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n SplitButtonModule,\n TranslateModule,\n TooltipModule,\n TieredMenuModule,\n QuickPickComponent,\n TagModule,\n ],\n templateUrl: './status-header.component.html',\n styleUrls: ['./status-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusHeaderComponent {\n @Output() onQuickPickClickEmiter = new EventEmitter<void>();\n @Output() onToggleClickEmmiter = new EventEmitter<'forward' | 'back'>();\n @Output() onCloseEvent = new EventEmitter<void>();\n @Input() type!: any;\n @Input() items!: any;\n @Input() name: string = '';\n @Input() title: string = '';\n @Input() tag?: { icon?: string; text?: string; variant?: string };\n @Input() tags?: Array<{\n icon?: string;\n value?: string;\n variant?: string;\n color?: string;\n tooltip?: string;\n }> = [];\n @Input() enableQuickPick: boolean = false;\n @Input() actions: any[] = [];\n @Input() panelState: boolean = false;\n @Input() customClose: boolean = true;\n\n validSeverities: string[] = [\n 'success',\n 'info',\n 'warn',\n 'danger',\n 'help',\n 'primary',\n 'secondary',\n 'contrast',\n ];\n\n onToggleClick(direction: 'forward' | 'back') {\n this.onToggleClickEmmiter.emit(direction);\n }\n\n toggleSidePanel() {\n this.onQuickPickClickEmiter.emit();\n }\n\n closePanel() {\n this.onCloseEvent.emit();\n }\n}\n","<div class=\"flex justify-content-between p-3\">\n <div class=\"flex align-items-center gap-2 w-full\">\n @if (enableQuickPick) {\n <phoenix-quick-pick\n (onBack)=\"onToggleClick('back')\"\n (onQuickPick)=\"toggleSidePanel()\"\n (onForward)=\"onToggleClick('forward')\"\n >\n </phoenix-quick-pick>\n }\n\n <!-- NAME with tooltip and truncation -->\n @if (name) {\n <span\n class=\"text-xl font-semibold\"\n [pTooltip]=\"name.length > 40 ? name : undefined\"\n [ngClass]=\"{ 'ml-3': !enableQuickPick && !type }\"\n >\n {{ name.length > 60 ? (name | slice : 0 : 60) + \"…\" : name }}\n </span>\n }\n\n <!-- TITLE with tooltip and truncation -->\n @if (title) {\n <span\n class=\"text-base text-gray-500\"\n [pTooltip]=\"title.length > 20 ? title : undefined\"\n >\n {{ title.length > 20 ? (title | slice : 0 : 20) + \"…\" : title }}\n </span>\n }\n\n <!-- Type goes here -->\n <!-- @if (type.text) {\n <p-tag\n [value]=\"type?.text\"\n [style]=\"{\n border: '2px solid var(--surface-300)',\n background: 'transparent',\n color: 'var(--text-color)',\n 'font-size': '11px',\n padding: '2px 4px',\n width: 'fit-content',\n 'white-space': 'nowrap'\n }\"\n ></p-tag>\n } -->\n </div>\n\n <!-- <div class=\"flex gap-1 align-items-center\">\n @for (tag of tags; track $index) {\n <p-tag\n [pTooltip]=\"tag?.tooltip ? (tag.tooltip! | translate) : undefined\"\n [value]=\"tag?.value || '--'\"\n [severity]=\"tag.variant || 'info'\"\n [icon]=\"tag?.icon || 'pi pi-check'\"\n [style]=\"{\n 'font-size': '11px',\n padding: '3px 8px',\n width: 'fit-content',\n 'white-space': 'nowrap'\n }\"\n [ngStyle]=\"\n tag?.color\n ? {\n 'background-color': tag.color + '36',\n color: tag.color,\n }\n : null\n \"\n ></p-tag>\n }\n </div> -->\n</div>\n","import { Component, Input, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TagModule } from 'primeng/tag';\nimport { ContextObjectConfig } from './context-object.model';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'phoenix-contex-object',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n TooltipModule,\n TagModule,\n ],\n templateUrl: './contex-object.component.html',\n styleUrls: ['./contex-object.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContexObjectComponent {\n\n @Input() config?: ContextObjectConfig;\n\n router = inject(Router);\n\n validSeverities: string[] = [\n 'success',\n 'info',\n 'warn',\n 'danger',\n 'help',\n 'primary',\n 'secondary',\n 'contrast',\n ];\n\n get ctxType(): string | undefined {\n return this.config?.type ?? '';\n }\n\n get ctxName(): string {\n return this.config?.name ?? '';\n }\n\n get ctxTitle(): string {\n return this.config?.title ?? '';\n }\n\n get ctxTags(): { icon?: string; text?: string; variant?: string; color?: string }[] {\n return this.config?.tags ?? [];\n }\n\n get ctxBackRoute(): any[] | undefined {\n return this.config?.backRoute ?? [];\n }\n\n onBackClick(): void {\n const route = this.ctxBackRoute;\n if (route?.length) {\n this.router.navigate(route);\n }\n }\n}","<div class=\"flex align-items-center gap-2 w-full\">\n @if (ctxBackRoute?.length) {\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-arrow-left\"\n class=\"p-button-text ml-1\"\n (click)=\"onBackClick()\"\n ></button>\n } @if (ctxType) {\n <span class=\"text-xl font-semibold text-gray-500\"> {{ ctxType }} : </span>\n } @if (ctxName) {\n <span\n class=\"text-xl font-semibold text-primary\"\n [pTooltip]=\"ctxName.length > 40 ? ctxName : undefined\"\n >\n {{ ctxName.length > 60 ? (ctxName | slice : 0 : 60) + \"…\" : ctxName }}\n </span>\n } @if (ctxTitle) {\n <span\n class=\"text-base text-gray-500\"\n [pTooltip]=\"ctxTitle.length > 20 ? ctxTitle : undefined\"\n >\n {{ ctxTitle.length > 20 ? (ctxTitle | slice : 0 : 20) + \"…\" : ctxTitle }}\n </span>\n } @if (ctxTags?.length) {\n <div class=\"flex align-items-center gap-2 ml-3\">\n @for (tag of ctxTags; track tag.text) {\n <p-tag\n [value]=\"tag.text\"\n [severity]=\"tag.variant || 'info'\"\n [icon]=\"tag.icon\"\n [style]=\"{\n 'font-size': '11px',\n 'padding': '3px 8px',\n 'width': 'fit-content',\n }\"\n [ngStyle]=\"\n tag.color\n ? {\n 'background-color': tag.color + '36',\n color: tag.color,\n }\n : null\n \"\n ></p-tag>\n }\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SidebarComponent } from '../sidebar/sidebar.component';\nimport { TopbarComponent } from '../topbar/topbar.component';\nimport { ContexObjectComponent } from '../context-object/contex-object.component';\nimport { ContextObjectConfig } from '../context-object/context-object.model';\n\nexport interface ShellTheme {\n mode: 'light' | 'dark' | 'system';\n}\n\n@Component({\n selector: 'pho-shell',\n imports: [\n SidebarComponent,\n TopbarComponent,\n CommonModule,\n ContexObjectComponent,\n ],\n templateUrl: './shell.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ShellComponent {\n @Input() config!: {\n user: any;\n shortModuleName: string;\n hidelogo?: boolean;\n\n /** header control */\n headerContext?: ContextObjectConfig;\n\n searchConfig?: any;\n topbarModulesMenu?: any;\n urlConfig?: {\n url: string | null;\n disabled?: boolean;\n };\n mainItems?: any[];\n footerItem?: any;\n };\n\n @Input() darkModeSelector = { mode: 'dark' };\n @Input() theme: ShellTheme = { mode: 'system' };\n @Output() onDarkModeSelect = new EventEmitter<any>();\n @Output() onIsSlimSelect = new EventEmitter<any>();\n @Output() onUserAction = new EventEmitter<string>();\n @Output() sliderClick = new EventEmitter<any>();\n @Output() themeChange = new EventEmitter<ShellTheme>();\n\n isSlim!: boolean;\n\n readonly gridTemplateColumns = 'auto 1fr';\n\n /** if showHeader=true adding additional row between topbar and content */\n get gridTemplateRows(): string {\n return this.config?.headerContext?.showHeader ? '3.5rem auto 1fr' : '3.5rem 1fr';\n }\n\n toggleSidebar(isSlim: boolean) {\n this.isSlim = isSlim;\n this.onIsSlimSelect.emit(this.isSlim);\n }\n\n onThemeChange(mode: ShellTheme['mode']) {\n this.theme.mode = mode;\n this.themeChange.emit(this.theme);\n }\n\n selectDarkMode() {\n this.onDarkModeSelect.emit(this.darkModeSelector);\n }\n}\n","<!-- Sidebar Layout -->\n<div\n class=\"pho-grid w-full h-screen overflow-hidden m-0 p-0\"\n [ngStyle]=\"{\n 'grid-template-rows': gridTemplateRows,\n 'grid-template-columns': gridTemplateColumns\n }\"\n>\n <!-- Top header (uvek preko 2 kolone) -->\n <pho-topbar\n class=\"pho-col-span-2 z-1\"\n [user]=\"config.user\"\n [shortModuleName]=\"config.shortModuleName\"\n [hidelogo]=\"config.hidelogo\"\n [searchConfig]=\"config.searchConfig\"\n [topbarModulesMenu]=\"config.topbarModulesMenu\"\n [urlConfig]=\"config.urlConfig\"\n [darkModeSelector]=\"darkModeSelector\"\n (onDarkModeSelect)=\"selectDarkMode()\"\n (onUserPopoverAction)=\"onUserAction.emit($event)\"\n ></pho-topbar>\n\n <!-- Context object - full width -->\n <div class=\"pho-col-span-2\" *ngIf=\"config.headerContext && config.headerContext.showHeader\">\n <div\n class=\"flex align-items-center justify-content-between border-bottom-1 border-300 pb-2 pt-2\"\n >\n <phoenix-contex-object\n *ngIf=\"config.headerContext\"\n [config]=\"config.headerContext\"\n ></phoenix-contex-object>\n </div>\n </div>\n\n <!-- Sidebar (uvek prisutan) -->\n <div class=\"w-max\">\n <pho-sidebar\n [mainItems]=\"config.mainItems\"\n [footerItem]=\"config.footerItem\"\n (toggleSidebar)=\"toggleSidebar($event)\"\n (sliderClick)=\"sliderClick.emit($event)\"\n ></pho-sidebar>\n </div>\n\n <!-- Main content -->\n <div class=\"overflow-auto surface-50 wrap w-full\">\n <ng-content></ng-content>\n </div>\n</div>\n","export enum tableActionType {\n CREATE = 'create',\n EDIT = 'edit',\n BULK_EDIT = 'bulk_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 ROW_DELETE = 'row_delete',\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 MORE = 'MORE',\n BULK = 'BULK',\n ROW = 'ROW',\n}\n\nexport enum tableColumnType {\n TEXT = 'TEXT',\n TIMEPERIOD = 'TIMEPERIOD',\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 OBJ_TAG = 'OBJ_TAG',\n LIST_TAG = 'LIST_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 { TooltipModule } from 'primeng/tooltip';\nimport { tableActionType, tableButtonContext } from '../utils/dataTable.enum';\nimport { TableAction } from '../utils/dataTable.interface';\nimport { PopoverModule } from 'primeng/popover';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\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 bulk_edit = 'pi pi-pencil',\n edit = 'pi pi-pencil',\n delete = 'pi pi-exclamation-triangle',\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 row_delete = 'pi pi-trash',\n}\n\n@Component({\n selector: 'phoenix-data-table-action',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TooltipModule,\n TranslateModule,\n PopoverModule,\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 ///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.outlined = true;\n this.btnConfig.class = 'ml-1';\n ///disable by permission\n this.disabled = this.actionConfig.disabled;\n\n ///configure bulk delete button\n if (this.actionConfig.type === tableActionType.DELETE) {\n this.btnConfig.severity = 'warn';\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.disabled) {\n break;\n }\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(action: any) {\n this.actionClick.emit({ action, rowData: this.rowData });\n }\n}\n","<p-popover #op>\n <ul class=\"list-none p-0 m-0\" [attr.data-cy]=\"'table-button-popover'\">\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-popover>\n\n<p-button\n [attr.data-cy]=\"'table-button-' + 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\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 OnChanges,\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\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, OnChanges {\n @Input({ required: true }) actions!: TableAction[];\n @Output() actionClick = new EventEmitter<any>();\n\n private router = inject(Router);\n private dr = inject(DestroyRef);\n value!: string | undefined;\n\n private resolveTabFromRoute(): string {\n const fullPath = this.router.url;\n const pathSegments = fullPath.split('/').filter(Boolean);\n const lastSegment = pathSegments[pathSegments.length - 1];\n\n if (this.actions && this.actions.length > 0) {\n const found = this.actions.find((ac) => ac.key === lastSegment);\n return (found?.key || this.actions[0].key)!;\n }\n return '';\n }\n\n ngOnInit(): void {\n this.router.events.pipe(takeUntilDestroyed(this.dr)).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.value = this.resolveTabFromRoute();\n }\n });\n }\n\n ngOnChanges() {\n if (this.actions?.length > 0) {\n this.value = this.resolveTabFromRoute();\n }\n }\n\n onActionClick(event: any) {\n const opt = this.actions.find((i) => i.key === event.value);\n this.actionClick.emit({ action: opt });\n }\n}\n","<p-selectButton\n [attr.data-cy]=\"'table-tab-select-button'\"\n [options]=\"actions\"\n optionValue=\"key\"\n [(ngModel)]=\"value\"\n optionLabel=\"icon\"\n [unselectable]=\"true\"\n (onChange)=\"onActionClick($event)\"\n>\n <ng-template #item let-item>\n <span>\n {{ item.label | translate }}\n </span>\n <span>\n <p-badge\n *ngIf=\"item.badgeCount\"\n [value]=\"item.badgeCount\"\n severity=\"danger\"\n badgeSize=\"small\"\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, 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 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 { 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';\nimport { PopoverModule } from 'primeng/popover';\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 case tableButtonContext.MORE:\n transformed.moreActions.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 PopoverModule,\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\n filterTableData(originalArray: any[], mapping: any) {\n return originalArray.filter((item) => {\n for (const key in mapping) {\n const v = mapping[key];\n\n // preskoči prazne vrednosti\n if (v === null || v === undefined || v === '') continue;\n if (Array.isArray(v) && v.length === 0) continue;\n\n const itemVal = item[key];\n\n if (Array.isArray(v)) {\n const selectedKeys = v.map(opt =>\n typeof opt === 'object' && opt !== null && ('key' in opt) ? opt.key : opt\n );\n if (!selectedKeys.includes(itemVal)) return false;\n continue;\n }\n\n if (typeof v === 'object' && v !== null && ('key' in v)) {\n if (itemVal !== v.key) return false;\n continue;\n }\n\n if (typeof v === 'boolean') {\n if (itemVal !== v) return false;\n continue;\n }\n if (itemVal !== v) return false;\n }\n return true;\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 [rowSelectable]=\"isRowSelectable\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [globalFilterFields]=\"globalFilterFields\"\n [resizableColumns]=\"true\"\n [size]=\"'small'\"\n [scrollHeight]=\"tableConfiguration.scrollHeight\"\n [selectionPageOnly]=\"true\"\n [(selection)]=\"selectedData\"\n [scrollable]=\"true\"\n scrollHeight=\"400px\"\n [virtualScroll]=\"true\"\n [virtualScrollItemSize]=\"46\"\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-data-table-action\n #btn\n [actionConfig]=\"action\"\n (actionClick)=\"actionClick($event)\"\n ></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 [attr.data-cy]=\"'table-button-filter'\"\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 [attr.data-cy]=\"'table-button-toggle'\"\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 [attr.data-cy]=\"'table-button-export'\"\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-data-table-action\n [actionConfig]=\"action\"\n [selectedData]=\"selectedData\"\n (actionClick)=\"actionClick(action, selectedData)\"\n ></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-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-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 {{ \"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 <div [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.DATE | lowercase)\">\n {{ val.rowData[val.col.field] | date : dateFormat }}\n </div>\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 <div\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.DATE_COMPLEX | lowercase)\n \"\n >\n {{ val.rowData[val.col.field] | date : dateFormat + \" | HH:mm\" }}\n </div>\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-popover #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 [attr.data-cy]=\"'table-cell-save-columns-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 [attr.data-cy]=\"'table-cell-reset-columns-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-popover>\n\n<p-popover #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\" [attr.data-cy]=\"'table-filter-form'\">\n @for(control of tableConfiguration.filterConfiguration; track\n control.key ){ @switch(control.type) { @case ('checkbox') {\n <div class=\"mb-4\">\n <p-checkbox\n [attr.data-cy]=\"'table-filter-form-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 [attr.data-cy]=\"'table-filter-form-dropdown'\"\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-popover>\n\n<p-popover #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 [attr.data-cy]=\"'table-cell-export-pdf-button'\"\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 [attr.data-cy]=\"'table-cell-export-pdf-excel'\"\n ></p-button>\n </div>\n</p-popover>\n","export function timePeriodFromMS(milliseconds: number, lang: string = 'en'): string {\n const weeks = Math.floor(milliseconds / (7 * 24 * 60 * 60 * 1000));\n milliseconds %= 7 * 24 * 60 * 60 * 1000;\n \n const days = Math.floor(milliseconds / (24 * 60 * 60 * 1000));\n milliseconds %= 24 * 60 * 60 * 1000;\n \n const hours = Math.floor(milliseconds / (60 * 60 * 1000));\n milliseconds %= 60 * 60 * 1000;\n \n const minutes = Math.floor(milliseconds / (60 * 1000));\n \n let result = '';\n \n switch (lang) {\n case 'de':\n if (weeks > 0) result += `${weeks}w `;\n if (days > 0) result += `${days}t `;\n if (hours > 0) result += `${hours}s `;\n if (minutes > 0) result += `${minutes}m`;\n break;\n \n case 'sr':\n if (weeks > 0) result += `${weeks}n `;\n if (days > 0) result += `${days}d `;\n if (hours > 0) result += `${hours}č `;\n if (minutes > 0) result += `${minutes}m`;\n break;\n \n default: // 'en' or fallback\n if (weeks > 0) result += `${weeks}w `;\n if (days > 0) result += `${days}d `;\n if (hours > 0) result += `${hours}h `;\n if (minutes > 0) result += `${minutes}m`;\n break;\n }\n \n return result.trim();\n }","import { Pipe, PipeTransform } from '@angular/core';\nimport { timePeriodFromMS } from '../components/meta-form/utils/form-fields.utils';\n\n@Pipe({\n name: 'timePeriod'\n})\nexport class TimePeriodPipe implements PipeTransform {\n transform(value: number): string {\n return timePeriodFromMS(value);\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'initials' })\nexport class InitialsPipe implements PipeTransform {\n transform(name: string): string {\n return (\n name\n ?.split(' ')\n .map((word) => word.charAt(0).toUpperCase())\n .join('') || ''\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n OnChanges,\n inject,\n DestroyRef,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n FormBuilder,\n FormGroup,\n} from '@angular/forms';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { ButtonModule } from 'primeng/button';\nimport { SelectModule } from 'primeng/select';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { PhoenixDataTableActionComponent } from '../phoenix-data-table-action/phoenix-data-table-action.component';\nimport { PhoenixDataTableTabsComponent } from '../phoenix-data-table-tabs/phoenix-data-table-tabs.component';\nimport { ListboxModule } from 'primeng/listbox';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IsSelectedPipe } from '../phoenix-data-table/isSelected.pipe';\nimport { TableColumn } from '../utils/dataTable.interface';\nimport { tableColumnType } from '../utils/dataTable.enum';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { OverlayBadgeModule } from 'primeng/overlaybadge';\nimport { RippleModule } from 'primeng/ripple';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { debounceTime } from 'rxjs';\n\n@Component({\n selector: 'table-caption',\n standalone: true,\n imports: [\n CommonModule,\n PopoverModule,\n ButtonModule,\n SelectModule,\n InputTextModule,\n FormsModule,\n ReactiveFormsModule,\n InputIconModule,\n IconFieldModule,\n MultiSelectModule,\n PhoenixDataTableActionComponent,\n PhoenixDataTableTabsComponent,\n ListboxModule,\n TranslateModule,\n IsSelectedPipe,\n AvatarModule,\n BadgeModule,\n OverlayBadgeModule,\n RippleModule,\n FloatLabelModule,\n ],\n templateUrl: './table-caption.component.html',\n styleUrl: './table-caption.component.css',\n})\nexport class TableCaptionComponent implements OnChanges {\n @ViewChild('columnsPopover') columnsPopover?: Popover;\n\n /** Table meta-configuration (key, feature toggles, etc.) */\n @Input() tableConfiguration!: any;\n /** All available columns coming from parent */\n @Input() columns: any[] = [];\n /** Current text of the global search box (if any) */\n @Input() searchQuery: string = '';\n /** Selected rows passed down from parent (used for bulk actions) */\n @Input() selectedItems: any[] = [];\n /**\n * Filter definitions (array of filter configs).\n * Each config typically: { key, label, type: 'multiselect' | ..., options, selected? }\n */\n @Input() filters!: any;\n\n /** Emits the current filters (form value) upward to parent table */\n @Output() applyFiltersEvent = new EventEmitter<any>();\n /** Emits selected column field keys upward to parent table */\n @Output() applyColumnsEvent = new EventEmitter<any[]>();\n /** Emits global search text upward */\n @Output() searchChange = new EventEmitter<string>();\n /** Emits top-level action clicks (global / tabs) upward */\n @Output() actionClick = new EventEmitter<any>();\n\n /** Services / utilities */\n translateService = inject(TranslateService);\n dr = inject(DestroyRef);\n fb = inject(FormBuilder);\n\n /** Reactive form that holds all filter controls */\n filtersForm: FormGroup = this.fb.group({});\n /** Currently selected (visible) columns */\n _selectedColumns!: TableColumn[];\n /** Which text columns should be included in global text search (if used here) */\n globalFilterFields!: string[];\n /** LocalStorage keys for persisting filters/columns per table key */\n FILTER_KEY!: string;\n COLUMN_KEY!: string;\n\n /**\n * Called when the column selector list changes. We map the selected column\n * models back to field keys and notify parent to actually apply it.\n */\n onColumnSelectionChange(newSelection: TableColumn[]): void {\n this.selectedColumns = newSelection;\n this.applyColumns();\n }\n\n /**\n * Sync component state whenever inputs change.\n * Order matters:\n * - compute keys for persistence\n * - initialize selected columns (and restore saved column state if enabled)\n * - build filter form (with defaults)\n * - compute global filter fields\n * - restore saved filters (overrides defaults)\n */\n ngOnChanges(): void {\n if (!this.tableConfiguration || !this.columns) return;\n this.FILTER_KEY = `filters_${this.tableConfiguration.key}`;\n\n this.initializeSelectedColumns();\n\n if (this.tableConfiguration.hasColumns) {\n this.COLUMN_KEY = `columns_${this.tableConfiguration.key}`;\n this.restoreColumnState();\n }\n\n this.initializeFilterForm();\n this.initializeGlobalFilterFields();\n this.restoreFilterState();\n }\n\n /**\n * Build the reactive form from the `filters` config.\n * Supports multiselects by storing arrays of primitive values.\n * If a filter has `selected`, it will be used as the initial value.\n * Immediately emits the initial value so parent can apply defaults.\n */\n private initializeFilterForm(): void {\n this.filtersForm = this.fb.group({});\n\n if (this.filters && Array.isArray(this.filters)) {\n for (const filter of this.filters) {\n const hasSelected =\n filter.selected !== undefined &&\n filter.selected !== null &&\n (!Array.isArray(filter.selected) || filter.selected.length > 0);\n\n let defaultValue: any;\n\n if (filter.type === 'multiselect') {\n defaultValue = hasSelected\n ? Array.isArray(filter.selected)\n ? filter.selected\n : [filter.selected]\n : [];\n } else {\n defaultValue = hasSelected ? filter.selected : null;\n }\n\n this.filtersForm.addControl(filter.key, this.fb.control(defaultValue));\n }\n\n this.filtersForm.valueChanges\n .pipe(takeUntilDestroyed(this.dr), debounceTime(150))\n .subscribe((val) => {\n const sanitized = this.sanitizeByOptions(val, this.filters);\n this.applyFiltersEvent.emit(sanitized);\n this.storeTableState(sanitized, this.FILTER_KEY);\n });\n }\n }\n\n /** Default selected columns = all non-hidden columns */\n private initializeSelectedColumns(): void {\n this._selectedColumns = this.columns.filter((col) => !col.hidden);\n }\n\n /** Compute which columns should be included in global text search */\n private initializeGlobalFilterFields(): void {\n this.globalFilterFields = this._selectedColumns\n .filter(\n (col) =>\n col.columnType === tableColumnType.TEXT && col.filter === undefined\n )\n .map((col) => col.field);\n }\n\n /**\n * Restore previously saved filters from localStorage (if present).\n * Does a patchValue without triggering valueChanges (emitEvent: false),\n * then manually emits the current value once.\n */\n private restoreFilterState(): void {\n const stored = localStorage.getItem(this.FILTER_KEY);\n if (!stored) return;\n\n try {\n const parsed = JSON.parse(stored);\n\n // zadrži samo poznate ključeve\n const validKeys = this.filters.map((f: any) => f.key);\n const filteredByKey = Object.keys(parsed)\n .filter((k) => validKeys.includes(k))\n .reduce((acc: any, k) => {\n acc[k] = parsed[k];\n return acc;\n }, {});\n\n const sanitized = this.sanitizeByOptions(filteredByKey, this.filters);\n\n this.filtersForm.patchValue(sanitized, { emitEvent: false });\n this.applyFiltersEvent.emit(this.filtersForm.getRawValue());\n } catch (e) {\n console.warn('Invalid filter state in localStorage:', e);\n }\n }\n\n // helper: remove all values that do not exist in the options for the given filter.key\n private sanitizeByOptions(formValue: any, filtersCfg: any[]): any {\n const cfgMap = new Map<string, any>(filtersCfg.map((f: any) => [f.key, f]));\n const cleaned: any = {};\n\n Object.keys(formValue ?? {}).forEach((key) => {\n const cfg = cfgMap.get(key);\n if (!cfg) return;\n\n const opts = (cfg.options ?? []).map(\n (o: any) => o?.key ?? o?.value ?? o?.label ?? o\n );\n const has = new Set(opts.map((v: any) => String(v).toLowerCase()));\n\n const keep = (v: any) =>\n v !== null &&\n v !== undefined &&\n v !== '' &&\n has.has(String(v?.key ?? v).toLowerCase());\n\n const val = formValue[key];\n\n if (Array.isArray(val)) {\n const filtered = val.filter(keep);\n if (filtered.length) cleaned[key] = filtered;\n } else if (keep(val)) {\n cleaned[key] = val;\n }\n });\n\n return cleaned;\n }\n\n /**\n * Restore previously saved visible columns set.\n * If saved state is invalid or outdated, fall back to default (all non-hidden).\n */\n private restoreColumnState(): void {\n const stored = localStorage.getItem(this.COLUMN_KEY);\n\n if (stored) {\n try {\n const storedColumns = JSON.parse(stored);\n const validStoredColumns = storedColumns.filter((storedCol: any) =>\n this.columns.some((col) => col.field === storedCol.field)\n );\n\n const selectedColumnKeys = validStoredColumns.map(\n (col: any) => col.field\n );\n this.selectedColumns = validStoredColumns;\n this.applyColumnsEvent.emit(selectedColumnKeys);\n return;\n } catch (e) {\n console.warn('Invalid column state in localStorage:', e);\n }\n }\n\n // Fallback → use all non-hidden columns\n const defaultKeys = this._selectedColumns.map((col) => col.field);\n this.selectedColumns = this._selectedColumns;\n this.applyColumnsEvent.emit(defaultKeys);\n }\n\n /** Bubble up global search changes (if you wire an input to this) */\n emitSearch(query: string): void {\n this.searchChange.emit(query);\n }\n\n /** Check if the filters form currently holds any meaningful values */\n hasValues(): boolean {\n return Object.values(this.filtersForm.value).some(\n (value) => value !== null && value !== undefined && value !== ''\n );\n }\n\n /** More robust check for any non-empty form value (arrays/objects included) */\n hasFormValues(): boolean {\n return Object.values(this.filtersForm.value).some((value) => {\n if (value === null || value === undefined || value === '') return false;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') return Object.keys(value).length > 0;\n return true;\n });\n }\n\n /**\n * Emit current filter form value to parent and close the popover.\n * If the form contains values, persist to localStorage.\n */\n applyFilters(): void {\n this.applyFiltersEvent.emit(this.filtersForm.value);\n this.columnsPopover?.hide();\n\n if (this.hasValues()) {\n this.storeTableState(this.filtersForm.value, this.FILTER_KEY);\n }\n }\n\n /**\n * Clear all filters: reset form, wipe persisted state, and emit.\n */\n resetFilters(): void {\n this.filtersForm.reset();\n this.storeTableState(null, this.FILTER_KEY);\n this.applyFilters();\n }\n\n /**\n * Emit the selected column field keys to parent and persist selection.\n */\n applyColumns(): void {\n const selectedColumnKeys = this._selectedColumns.map((col) => col.field);\n this.applyColumnsEvent.emit(selectedColumnKeys);\n this.storeTableState(this.selectedColumns, this.COLUMN_KEY);\n }\n\n /** Reset visible columns to all available, then emit/persist. */\n resetColumns(): void {\n this._selectedColumns = [...this.columns];\n this.applyColumns();\n }\n\n /** Thin wrapper to persist a JSON-serializable state in localStorage */\n storeTableState(state: any, key: string): void {\n const isEmpty = (v: any) =>\n v == null ||\n (typeof v === 'object' &&\n !Array.isArray(v) &&\n Object.keys(v).length === 0) ||\n (Array.isArray(v) && v.length === 0);\n\n if (isEmpty(state)) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(state));\n }\n }\n\n /**\n * Handler for the PrimeNG MultiSelect clear button.\n * Ensures multiselect controls are set to empty arrays instead of null.\n */\n clearSelectFilter(key: any) {\n this.filtersForm.get(key)?.setValue([]);\n this.storeTableState(this.filtersForm.value, this.FILTER_KEY);\n }\n\n /** Getter/Setter that keeps selectedColumns in the original column order */\n get selectedColumns(): TableColumn[] {\n return this._selectedColumns;\n }\n set selectedColumns(val: TableColumn[]) {\n this._selectedColumns = this.columns.filter((col) =>\n val.some((v) => v.field === col.field)\n );\n }\n\n /** Bubble up action clicks with the current selected items (for bulk actions) */\n handleActionClick(action: any): void {\n this.actionClick.emit({ action, selectedItems: this.selectedItems });\n }\n}\n","<div class=\"flex justify-content-between border-bottom-1 border-300 p-2\">\n <!-- Global Actions & Tabs -->\n <div class=\"flex align-items-center gap-2\">\n <phoenix-data-table-tabs\n [attr.data-cy]=\"'table-select-button-' + tableConfiguration.tabs?.key\"\n [actions]=\"tableConfiguration.tabs\"\n (actionClick)=\"actionClick.emit($event)\"\n >\n </phoenix-data-table-tabs>\n <ng-container *ngFor=\"let action of tableConfiguration.globalActions\">\n <phoenix-data-table-action\n [actionConfig]=\"action\"\n (actionClick)=\"actionClick.emit($event)\"\n >\n </phoenix-data-table-action>\n </ng-container>\n </div>\n\n <div class=\"flex align-items-center gap-2\">\n <!-- Filter, Columns, Search, More -->\n @if(tableConfiguration.hasFilter){ @if( hasFormValues() ){\n <p-overlaybadge class=\"p-2\" severity=\"danger\">\n <span\n pRipple\n class=\"cursor-pointer\"\n (click)=\"filtersPopover.toggle($event)\"\n >\n <i class=\"pi pi-filter\"></i>\n </span>\n </p-overlaybadge>\n } @else {\n <span\n pRipple\n class=\"cursor-pointer p-2\"\n (click)=\"filtersPopover.toggle($event)\"\n >\n <i class=\"pi pi-filter\"></i>\n </span>\n } } @if(tableConfiguration.hasColumns){ @if( columns.length !=\n _selectedColumns.length ){\n <p-overlaybadge class=\"p-2\" severity=\"danger\">\n <span\n pRipple\n class=\"cursor-pointer\"\n (click)=\"columnsPopover.toggle($event)\"\n >\n <i class=\"pi pi-sliders-v\"></i>\n </span>\n </p-overlaybadge>\n } @else {\n <span\n pRipple\n class=\"cursor-pointer p-2\"\n (click)=\"columnsPopover.toggle($event)\"\n >\n <i class=\"pi pi-sliders-v\"></i>\n </span>\n\n } }\n\n <div class=\"flex\">\n @if(tableConfiguration.hasSearch){\n <p-iconfield>\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n type=\"text\"\n (input)=\"emitSearch($any($event.target).value)\"\n pInputText\n placeholder=\"{{ 'SEARCH_KEYWORD' | translate }}\"\n />\n </p-iconfield>\n } @if(tableConfiguration.hasMore){\n <phoenix-data-table-action\n *ngIf=\"tableConfiguration?.hasMore && tableConfiguration?.moreActions\"\n [actionConfig]=\"tableConfiguration.moreActions\"\n (actionClick)=\"actionClick.emit($event)\"\n ></phoenix-data-table-action>\n }\n </div>\n </div>\n</div>\n\n<!-- Popover Filters -->\n<p-popover #filtersPopover>\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\">{{ \"LABELS.FILTERS\" | translate }}</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)=\"applyFilters()\"\n /> -->\n\n <p-button\n icon=\"pi pi-refresh\n \"\n [text]=\"true\"\n label=\"{{ 'ACTION.CLEAR' | translate }}\"\n class=\"mr-2\"\n (click)=\"resetFilters()\"\n />\n </div>\n </div>\n\n <form [formGroup]=\"filtersForm\">\n @for(control of filters; track control.key ){ @switch(control.type) {\n @case ('checkbox') {\n <div class=\"mb-2\">\n <p-checkbox\n binary=\"true\"\n type=\"checkbox\"\n [formControlName]=\"control.key\"\n />\n <label class=\"ml-2\">{{ control.label | translate }}</label>\n </div>\n } @case ('dropdown') {\n <div class=\"mb-2\">\n <label class=\"mb-2 block\">{{ control.label | translate }}</label>\n <p-select\n class=\"w-full\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n [formControlName]=\"control.key\"\n [showClear]=\"true\"\n (onClear)=\"clearSelectFilter(control.key)\"\n />\n </div>\n } @case ('multiselect') {\n <div class=\"mb-2\">\n <p-floatlabel variant=\"on\">\n <p-multiselect\n class=\"w-full\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n optionValue=\"key\"\n [formControlName]=\"control.key\"\n [showClear]=\"true\"\n (onClear)=\"clearSelectFilter(control.key)\"\n />\n <label for=\"username\">{{ control.label | translate }}</label>\n </p-floatlabel>\n <!-- <label class=\"mb-2 block\">{{ control.label }}</label> -->\n </div>\n } @case ('person-dropdown'){\n <label class=\"mb-2 block\">{{ control.label | translate }}</label>\n <p-multiselect\n [options]=\"control.options\"\n optionLabel=\"label\"\n [formControlName]=\"control.key\"\n class=\"w-full\"\n [showClear]=\"true\"\n >\n <ng-template #selectedItem let-selectedOption>\n <div class=\"flex items-center gap-2\" *ngIf=\"selectedOption\">\n <p-avatar\n [label]=\"selectedOption.label.charAt(0).toUpperCase()\"\n class=\"mr-1\"\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n shape=\"circle\"\n ></p-avatar>\n <div>{{ selectedOption.label | translate }}</div>\n </div>\n </ng-template>\n <ng-template let-person #item>\n <div class=\"flex align-items-center gap-2\">\n <p-avatar\n [label]=\"person.label.charAt(0).toUpperCase()\"\n class=\"mr-1\"\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n shape=\"circle\"\n ></p-avatar>\n <div>{{ person.label | translate }}</div>\n </div>\n </ng-template>\n <ng-template #dropdownicon>\n <i class=\"pi pi-user\"></i>\n </ng-template>\n <!-- <ng-template #header>\n <div class=\"font-medium p-3\">Available Countries</div>\n </ng-template> -->\n <!-- <ng-template #footer>\n <div class=\"p-3\">\n <p-button label=\"Add New\" fluid severity=\"secondary\" text size=\"small\" icon=\"pi pi-plus\" />\n </div>\n </ng-template> -->\n </p-multiselect>\n } @default{\n <div>{{ control.type }}</div>\n }} }\n </form>\n </div>\n</p-popover>\n\n<!-- Popover Columns -->\n<p-popover #columnsPopover>\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\">{{ \"LABELS.COLUMNS\" | translate }}</div>\n <div>\n <p-button\n icon=\"pi pi-eye\"\n [text]=\"true\"\n label=\"{{ 'ACTION.SHOW_ALL' | translate }}\"\n class=\"mr-2\"\n (click)=\"resetColumns()\"\n />\n </div>\n </div>\n\n <p-listbox\n [options]=\"columns\"\n [ngModel]=\"_selectedColumns\"\n (ngModelChange)=\"onColumnSelectionChange($event)\"\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-popover>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'isBoolean',\n standalone: true,\n pure: false,\n})\nexport class IsBooleanPipe implements PipeTransform {\n transform(value: string | null | undefined): any {\n return typeof value === 'boolean';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\n@Pipe({\n name: 'cell',\n standalone: true,\n pure: false,\n})\nexport class TableCellPipe implements PipeTransform {\n constructor(private datePipe: DatePipe) {}\n\n transform(obj: any, col: any, dateFormat: string = 'dd.MM.yyyy'): any {\n const value = this.getNestedValue(obj, col.field);\n if (!value) return '--';\n\n switch (col.columnType) {\n case 'DATE':\n return this.datePipe.transform(value, dateFormat);\n\n case 'DATE_COMPLEX':\n return this.datePipe.transform(value, dateFormat + ' | HH:mm');\n\n case 'RICH_TEXT':\n return value;\n\n case 'CUSTOM':\n return col.customRenderer ? col.customRenderer(value) : value;\n\n default:\n return value?.toString();\n }\n }\n\n getNestedValue(obj: any, path: string): string {\n if (!obj || !path) return '';\n\n let value: any;\n\n if (!path.includes('.')) {\n value = obj[path];\n } else {\n value = path.split('.').reduce((acc, part) => acc?.[part], obj);\n }\n\n return value != null ? value.toString() : '';\n }\n}\n","import jsPDF from 'jspdf';\nimport autoTable from 'jspdf-autotable';\nimport * as XLSX from 'xlsx';\nimport { DatePipe } from '@angular/common';\nimport { tableButtonContext, tableColumnType } from './dataTable.enum';\nimport { TableConfiguration } from './dataTable.interface';\n\n/**\n * Splits table actions into context-specific arrays (global, row, bulk, more).\n * This controls where buttons will appear (toolbar, row menu, etc.).\n */\nexport function resolveActions(value: TableConfiguration): any {\n const transformed: any = {\n globalActions: [],\n rowActions: [],\n bulkActions: [],\n moreActions: [],\n ...value,\n };\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 case tableButtonContext.MORE:\n transformed.moreActions.push(a);\n break;\n default:\n break;\n }\n });\n\n // Enable global filter by default (unless explicitly disabled)\n transformed.globalFilter =\n transformed.globalFilter === undefined ? true : transformed.globalFilter;\n\n return transformed;\n}\n\n/**\n * Defines a column that can be exported (visible in PDF/CSV).\n */\nexport interface ExportColumn {\n field: string; // Property name in row object (supports dot notation)\n header: string; // i18n key or plain text (will be translated via t())\n columnType?: string; // Column type (DATE, BOOLEAN, etc.), optional fallback\n}\n\n/* ----------------------------- Helpers ----------------------------- */\n\n/**\n * Safely retrieves nested object property using dot notation.\n * Example: \"user.address.city\" → row.user.address.city\n */\nfunction getNestedValue(obj: any, path: string): any {\n try {\n if (obj && Object.prototype.hasOwnProperty.call(obj, path)) {\n return obj[path]?.key ?? obj[path];\n }\n const keys = path.split('.');\n let current = obj;\n for (const key of keys) {\n if (current && typeof current === 'object' && key in current) {\n current = current[key];\n } else {\n return undefined;\n }\n }\n return current?.key ?? current;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Sanitizes text:\n * - Removes HTML tags\n * - Replaces &nbsp; and non-breaking spaces\n * - Normalizes Unicode (keeps German umlauts and Serbian letters)\n */\nfunction sanitizeText(v: any): string {\n const s = (v ?? '').toString();\n const noHtml = s.replace(/<[^>]*>/g, '');\n return noHtml\n .replace(/&nbsp;/g, ' ')\n .replace(/\\u00A0/g, ' ')\n .normalize('NFKC')\n .trim();\n}\n\n/**\n * Checks if a CSV value must be quoted (contains delimiter, quotes or newlines).\n */\nfunction needsQuotesCSV(value: string, delimiter: string): boolean {\n const pattern = new RegExp(`[\\\"\\\\n${delimiter === ',' ? ',' : ';'}]`);\n return pattern.test(value);\n}\n\n/**\n * Formats a date value using Angular DatePipe and the provided locale.\n */\nfunction formatDateValue(val: any, pattern: string, locale: string): string {\n try {\n const d = new Date(val);\n if (!isNaN(d.getTime())) {\n const dp = new DatePipe(locale || 'en-US');\n return dp.transform(d, pattern) ?? '';\n }\n } catch {}\n return String(val ?? '');\n}\n\n/* ------------------------- Display resolver ------------------------ */\n\n/**\n * Converts raw row values into human-readable strings for export.\n * Handles various column types: DATE, LIST, BOOLEAN, etc.\n */\nfunction getDisplayValue(\n row: any,\n col: ExportColumn,\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t?: (k: string) => string,\n locale: string = 'en-US'\n): string {\n const field = col.field;\n const type = columnTypeMap[field] || col.columnType;\n const val = getNestedValue(row, field);\n\n if (val === null || val === undefined) return '';\n\n switch (type) {\n case columnTypeEnum.DATE:\n return formatDateValue(val, 'dd.MM.yyyy HH:mm', locale);\n\n case columnTypeEnum.DATE_WITHOUT_TIME:\n return formatDateValue(val, 'dd.MM.yyyy', locale);\n\n case columnTypeEnum.TAG:\n return (val?.name ?? val)?.toString();\n\n case columnTypeEnum.LIST_TAG:\n case columnTypeEnum.LIST:\n return Array.isArray(val)\n ? val.map((x: any) => x?.name ?? x).join(', ')\n : String(val);\n\n case columnTypeEnum.OBJ_TAG:\n return (val?.value ?? val)?.toString();\n\n case columnTypeEnum.BOOLEAN: {\n // Translate YES/NO if translation function is provided\n const yes = t ? t('ACTION.YES') : 'Yes';\n const no = t ? t('ACTION.NO') : 'No';\n return val === true || val === 'true' ? yes : no;\n }\n\n case columnTypeEnum.TEXT_AREA:\n case columnTypeEnum.TEXT:\n case columnTypeEnum.TIMEPERIOD:\n default:\n if (typeof val === 'object' && !Array.isArray(val)) {\n const prefer = val.name ?? val.label ?? val.value ?? val.key ?? '';\n return prefer ? String(prefer) : JSON.stringify(val);\n }\n return String(val);\n }\n}\n\n/* -------------------------- Export: PDF ---------------------------- */\n\nexport interface ExportOptions {\n locale?: string; // e.g. 'de-DE' for German date format\n delimiter?: ',' | ';'; // CSV delimiter (',' for EN, ';' for DE Excel)\n sheetName?: string; // Excel sheet name (default: 'Sheet1')\n autoWidth?: boolean; // Auto-adjust column widths (default: true)\n}\n\nfunction trimExcelLineBreaks(s: string): string {\n return s\n .replace(/^[\\r\\n]+/, '') // remove leading line breaks\n .replace(/[\\r\\n]+$/, '') // remove trailing line breaks\n .replace(/(\\r?\\n){2,}/g, '\\n'); // collapse multiple to a single\n}\n\nfunction collapseInlineSpaces(s: string): string {\n if (!s) return '';\n return s\n .replace(/\\u00A0/g, ' ')\n .replace(/[^\\S\\r\\n]+/g, ' ')\n .trim();\n}\n\n/**\n * Exports table rows to a PDF file.\n * - Uses jsPDF + autoTable\n * - Respects only visible columns\n * - Translates headers with provided translation function\n */\nexport function exportRowsToPdf(\n columns: ExportColumn[],\n rows: any[],\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t: (key: string) => string,\n fileName = 'table.pdf',\n options: ExportOptions = {}\n): void {\n if (!columns?.length) return;\n const locale = options.locale || 'en-US';\n\n const head = [columns.map((c) => sanitizeText(t(c.header)))];\n\n const body = (rows ?? []).map((row) =>\n columns.map((col, idx) => {\n const type = columnTypeMap[col.field] || col.columnType;\n\n if (type === columnTypeEnum.LIST || type === columnTypeEnum.LIST_TAG) {\n // make each item its own line; keep items intact (no bullets)\n const rawVal = getNestedValue(row, col.field);\n const items = Array.isArray(rawVal)\n ? rawVal.map((x: any) => x?.name ?? x)\n : String(\n getDisplayValue(\n row,\n col,\n columnTypeMap,\n columnTypeEnum,\n t,\n locale\n )\n ).split(/,\\s*/);\n\n const cleaned = items\n .map((it) => collapseInlineSpaces(String(it)))\n .filter(Boolean);\n\n return sanitizeText(cleaned.join(',\\n')); // hard break after commas\n }\n\n const raw = String(\n getDisplayValue(row, col, columnTypeMap, columnTypeEnum, t, locale)\n );\n return sanitizeText(collapseInlineSpaces(raw));\n })\n );\n\n const doc = new jsPDF({ orientation: 'landscape', unit: 'pt', format: 'A4' });\n\n // Build columnStyles dynamically: all LIST/LIST_TAG columns get min width\n const columnStyles: Record<number, any> = {};\n\n columns.forEach((col, idx) => {\n const type = columnTypeMap[col.field] || col.columnType;\n if (type === columnTypeEnum.LIST || type === columnTypeEnum.LIST_TAG) {\n columnStyles[idx] = { cellWidth: 150 }; // set your min width\n }\n });\n\n autoTable(doc, {\n head,\n body,\n styles: {\n fontSize: 9,\n cellPadding: 5,\n overflow: 'linebreak',\n valign: 'top',\n },\n columnStyles:\n Object.keys(columnStyles).length > 0 ? columnStyles : undefined,\n margin: { top: 36, right: 24, bottom: 36, left: 24 },\n });\n\n doc.save(fileName);\n}\n\n/* -------------------------- Export: Excel -------------------------- */\n\n/**\n * Exports table rows to an Excel file (.xlsx).\n * - Includes only visible columns\n * - Translates headers via provided translation function\n * - Supports auto-width columns and custom sheet names\n * - Handles various data types including dates, booleans, and lists\n */\nexport function exportRowsToExcel(\n columns: ExportColumn[],\n rows: any[],\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t: (key: string) => string,\n fileName = 'table.xlsx',\n options: ExportOptions = {}\n): void {\n if (!columns?.length) return;\n\n const locale = options.locale || 'en-US';\n const sheetName = options.sheetName || 'Sheet1';\n const autoWidth = options.autoWidth !== false; // default to true\n\n // Prepare headers\n const headers = columns.map((c) => sanitizeText(t(c.header)));\n\n // Prepare data rows\n const data = (rows ?? []).map((row) =>\n columns.map((col) => {\n const raw = getDisplayValue(\n row,\n col,\n columnTypeMap,\n columnTypeEnum,\n t,\n locale\n );\n // Convert escaped \\n to real newline characters\n let fixedText =\n typeof raw === 'string' ? raw.replace(/\\\\n/g, '\\n') : String(raw);\n\n // Preserve newlines during sanitization by temporarily replacing them\n const tempMarker = '___NEWLINE___';\n const withMarker = fixedText.replace(/\\r?\\n/g, tempMarker);\n const sanitized = sanitizeText(withMarker);\n // Restore newlines after sanitization\n fixedText = sanitized.replace(new RegExp(tempMarker, 'g'), '\\n');\n\n return fixedText;\n })\n );\n\n // Create worksheet data\n const worksheetData = [headers, ...data];\n\n // Create workbook and worksheet\n const workbook = XLSX.utils.book_new();\n const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);\n\n // --- ✅ FIX: Apply wrapText to all cells so newlines show in Excel\n for (const cellAddress in worksheet) {\n if (Object.prototype.hasOwnProperty.call(worksheet, cellAddress)) {\n if (cellAddress[0] === '!') continue; // skip metadata\n const cell = worksheet[cellAddress];\n if (!cell.s) cell.s = {};\n if (!cell.s.alignment) cell.s.alignment = {};\n cell.s.alignment.wrapText = true;\n }\n }\n\n // Auto-adjust column widths if enabled\n if (autoWidth) {\n const colWidths = columns.map((col, index) => {\n const maxLength = Math.max(\n headers[index]?.length || 0,\n ...data.map((row) => (row[index] || '').toString().length)\n );\n return { wch: Math.min(Math.max(maxLength + 2, 10), 50) }; // min 10, max 50\n });\n worksheet['!cols'] = colWidths;\n }\n\n // Add worksheet to workbook\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n\n // Generate Excel file and trigger download\n XLSX.writeFile(workbook, fileName);\n}\n\n/* -------------------------- Export: CSV ---------------------------- */\n\n/**\n * Exports table rows to a CSV file.\n * - Includes only visible columns\n * - Translates headers via provided translation function\n * - Escapes quotes and adds UTF-8 BOM (so Excel reads special chars correctly)\n */\nexport function exportRowsToCsv(\n columns: ExportColumn[],\n rows: any[],\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t: (key: string) => string,\n fileName = 'table.csv',\n options: ExportOptions = {}\n): void {\n if (!columns?.length) return;\n\n const locale = options.locale || 'en-US';\n const delimiter = options.delimiter || ',';\n\n const headers = columns.map((c) => sanitizeText(t(c.header)));\n const lines = (rows ?? []).map((row) =>\n columns\n .map((col) => {\n const raw = getDisplayValue(\n row,\n col,\n columnTypeMap,\n columnTypeEnum,\n t,\n locale\n );\n // keep multiline, but remove useless blank line at start/end\n const v = trimExcelLineBreaks(sanitizeText(raw));\n const safe = v.replace(/\"/g, '\"\"'); // escape double quotes\n return needsQuotesCSV(v, delimiter) ? `\"${safe}\"` : safe;\n })\n .join(delimiter)\n );\n\n const csv = [headers.join(delimiter), ...lines].join('\\n');\n\n // Add UTF-8 BOM → Excel correctly recognizes UTF-8 (handles č, ć, š, đ, ž, ä, ö, ü, ß, etc.)\n const BOM = '\\uFEFF';\n const blob = new Blob([BOM + csv], { type: 'text/csv;charset=utf-8;' });\n\n const a = document.createElement('a');\n const url = URL.createObjectURL(blob);\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\n/* --------------------------- File name ----------------------------- */\n\n/**\n * Builds a file name with pattern: tableKey_YYYY-MM-DD_HH-mm.ext\n * Example: risks_2025-09-10_14-32.xlsx\n */\nexport function buildFileName(baseKey: string, ext: string = 'xlsx'): string {\n const now = new Date();\n const yyyy = now.getFullYear();\n const MM = String(now.getMonth() + 1).padStart(2, '0');\n const dd = String(now.getDate()).padStart(2, '0');\n const hh = String(now.getHours()).padStart(2, '0');\n const mm = String(now.getMinutes()).padStart(2, '0');\n return `${baseKey}_${yyyy}-${MM}-${dd}_${hh}-${mm}.${ext}`;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n signal,\n} from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { ChipModule } from 'primeng/chip';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { Table, TableLazyLoadEvent, TableModule } from 'primeng/table';\nimport { TagModule } from 'primeng/tag';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TimePeriodPipe } from '../../../pipes/time-period.pipe';\nimport { InitialsPipe } from '../../../utils/initials.pipe';\nimport { PhoenixDataTableActionComponent } from '../phoenix-data-table-action/phoenix-data-table-action.component';\nimport { TableCaptionComponent } from '../table-caption/table-caption.component';\nimport {\n tableButtonContext,\n tableColumnType,\n tableSelectionType,\n} from '../utils/dataTable.enum';\nimport { IsBooleanPipe } from '../utils/is-boolean.pipe';\nimport { TableCellPipe } from '../utils/table-cell.pipe';\nimport {\n buildFileName,\n exportRowsToExcel,\n exportRowsToPdf,\n} from '../utils/table.utils';\n\nconst DEFAULT_MORE_ACTIONS = {\n context: tableButtonContext.MORE,\n type: 'menu',\n buttonType: 'multiselect',\n items: [\n { key: 'EXPORT_PDF', label: 'ACTION.EXPORT_PDF', icon: 'pi pi-file-pdf' },\n {\n key: 'EXPORT_EXCEL',\n label: 'ACTION.EXPORT_EXCEL',\n icon: 'pi pi-file-excel',\n },\n ],\n};\n\n@Component({\n selector: 'phoenix-table',\n standalone: true,\n imports: [\n CommonModule,\n TableModule,\n TableCaptionComponent,\n TranslateModule,\n PhoenixDataTableActionComponent,\n TagModule,\n AvatarModule,\n TooltipModule,\n TableCellPipe,\n SkeletonModule,\n PanelModule,\n OverlayPanelModule,\n ChipModule,\n InitialsPipe,\n TimePeriodPipe,\n IsBooleanPipe,\n BadgeModule,\n ],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n})\nexport class TableComponent implements OnChanges {\n @ViewChild('dt') dt!: Table;\n\n /** Input data for the table. Automatically updates original and derived states. */\n @Input() set data(value: any[]) {\n this.originalData = value ?? [];\n this.allData = [...value];\n this.totalRecords = this.allData.length;\n this.loadLazyData({ first: 0, rows: 100 });\n }\n\n /** Column definitions provided by the parent. */\n @Input() columns: any[] = [];\n /** Preselected columns (used to restore user preferences). */\n @Input() selectedColumnsInput: any[] = [];\n /** Table configuration (key, toggles, options). */\n @Input() tableConfiguration: any;\n /** Dynamic filters passed from parent. */\n @Input() filters: any;\n\n /** Emits when a row-level or global action is triggered. */\n @Output() actionClick = new EventEmitter<any>();\n /** Emits when a row is clicked or selected. */\n @Output() rowSelection = new EventEmitter<any>();\n /** Emits when checkbox selection changes. */\n @Output() checkBoxSelection = new EventEmitter<any>();\n /** Emits when columns are saved or changed. */\n @Output() saveColumns = new EventEmitter<string[]>();\n\n /** i18n translation service. */\n translateService = inject(TranslateService);\n /** Change detection reference for delayed updates. */\n private cdr = inject(ChangeDetectorRef);\n\n /** Full dataset after filters/search/sorting. */\n allData: any[] = [];\n /** Immutable copy of the original dataset. */\n originalData: any[] = [];\n /** Data currently bound to the UI table. */\n tableData: any[] = [];\n\n /** Current selection of rows. */\n selectedItems = signal<any[]>([]);\n /** Columns currently visible in the UI. */\n selectedColumns: any[] = [];\n\n /** Text from global search input. */\n searchQuery = '';\n /** Indicates if multiple rows are selected. */\n bulkMode = false;\n /** Number of records after filtering/search. */\n totalRecords = 0;\n /** Index of the last record loaded (for virtual scroll). */\n lastLoadedIndex = 0;\n\n /** Enum references for templates. */\n selectionTypeEnum = tableSelectionType;\n columnTypeEnum = tableColumnType;\n /** Date format string for date columns. */\n dateFormat!: string;\n /** Active filter state. */\n private currentFilters: { [key: string]: any } = {};\n /** Column field → type mapping for sorting/formatting. */\n columnTypeMap: Record<string, string> = {};\n\n /**\n * Lifecycle hook: triggered when inputs change.\n * Resets selection, maps columns, sets defaults for actions.\n */\n ngOnChanges(changes: SimpleChanges): void {\n this.selectedItems.set([]);\n\n // Map column field → type for sorting/export\n if (this.columns?.length > 0) {\n this.columnTypeMap = {};\n for (const col of this.columns) {\n this.columnTypeMap[col.field] = col.columnType;\n }\n\n const nextSelected = this.selectedColumnsInput?.length\n ? this.selectedColumnsInput\n : this.columns;\n\n // Defer update to avoid NG0100 errors\n Promise.resolve().then(() => {\n this.selectedColumns = [...nextSelected];\n this.cdr.markForCheck();\n });\n }\n\n // Provide default \"more actions\" if not defined\n if (!this.tableConfiguration?.moreActions) {\n const cfg = this.tableConfiguration;\n Promise.resolve().then(() => {\n this.tableConfiguration = { ...cfg, moreActions: DEFAULT_MORE_ACTIONS };\n this.cdr.markForCheck();\n });\n }\n }\n\n /**\n * Handles lazy loading of data (paging, sorting).\n * Supports multi-column sorting and slicing by index.\n */\n loadLazyData(event: TableLazyLoadEvent) {\n let { first = 0, rows = 100, multiSortMeta } = event;\n rows = rows ?? 100;\n\n let sortedData = [...this.allData];\n\n // Multi-column sorting\n if (multiSortMeta?.length) {\n sortedData.sort((a, b) => {\n for (const sortMeta of multiSortMeta) {\n const field = sortMeta.field!;\n const order = sortMeta.order!;\n const valueA = this.getComparableValue(\n this.getNestedValue(a, field),\n field\n );\n const valueB = this.getComparableValue(\n this.getNestedValue(b, field),\n field\n );\n if (valueA < valueB) return -1 * order;\n if (valueA > valueB) return 1 * order;\n }\n return 0;\n });\n }\n\n const paged = sortedData.slice(first, first + rows);\n this.tableData = sortedData; // Replace with `paged` to enable paging\n this.lastLoadedIndex = first + rows;\n }\n\n /**\n * Converts any value into a form usable for sorting.\n * Handles numbers, strings, dates, ranges, arrays, and objects.\n */\n private getComparableValue(val: any, field?: string): string | number {\n if (val === null || val === undefined) return '';\n\n const columnType = field ? this.columnTypeMap[field] : null;\n\n if (typeof val === 'number') return val;\n\n if (typeof val === 'string') {\n if (columnType === this.columnTypeEnum.DATE) {\n const parsedDate = Date.parse(val);\n return isNaN(parsedDate) ? val.toLowerCase() : parsedDate;\n }\n return val.toLowerCase();\n }\n\n if (val instanceof Date) return val.getTime();\n\n if (typeof val === 'object') {\n // Handle ranges\n if (val.from && val.to) {\n const from = Date.parse(val.from);\n const to = Date.parse(val.to);\n return isNaN(from) || isNaN(to) ? '' : from + to;\n }\n\n // Handle arrays\n if (Array.isArray(val) && val.length > 0) {\n return this.getComparableValue(val[0], field);\n }\n\n // Fallback: check common properties\n const priorityFields = ['name', 'value', 'label', 'key', 'date'];\n for (const key of priorityFields) {\n if (val[key] !== undefined && val[key] !== null) {\n return this.getComparableValue(val[key], field);\n }\n }\n\n // Last resort: first primitive property\n for (const v of Object.values(val)) {\n if (typeof v === 'string' || typeof v === 'number') {\n return this.getComparableValue(v, field);\n }\n }\n }\n\n return '';\n }\n\n /**\n * Executes global search across all records and fields.\n * Preserves active filters if applied.\n */\n onSearch(query: string) {\n const trimmed = (query ?? '').trim().toLowerCase();\n this.searchQuery = trimmed;\n\n const baseData =\n Object.keys(this.currentFilters).length > 0\n ? this.getFilteredData()\n : this.originalData;\n\n if (trimmed) {\n const filtered = baseData.filter((item) =>\n Object.values(item).some((value) => this.matchesQuery(value, trimmed))\n );\n this.allData = filtered;\n } else {\n this.allData = [...baseData];\n }\n\n this.totalRecords = this.allData.length;\n this.loadLazyData({ first: 0, rows: 100 });\n }\n\n /**\n * Re-applies filters on the original dataset.\n * Used internally to recompute data after filter state changes.\n */\n private getFilteredData() {\n return this.originalData.filter((item) => {\n return Object.keys(this.currentFilters).every((key) => {\n const filterValue = this.currentFilters[key];\n\n if (\n !filterValue ||\n (Array.isArray(filterValue) && filterValue.length === 0)\n ) {\n return true;\n }\n\n const itemValue = this.getNestedValue(item, key);\n\n if (Array.isArray(filterValue)) {\n return filterValue.some((option) => {\n const optionKey = option?.key || option;\n return (\n itemValue?.toString().toLowerCase() ===\n optionKey?.toString().toLowerCase()\n );\n });\n }\n\n const singleFilterValue = filterValue?.key || filterValue;\n return singleFilterValue\n ? itemValue?.toString().toLowerCase() ===\n singleFilterValue.toString().toLowerCase()\n : true;\n });\n });\n }\n\n /**\n * Applies new filter values to the dataset.\n * Handles primitives, objects, and LIST columns (arrays of values).\n */\n applyFilters(filters: Record<string, any>) {\n const isEmpty = (v: any) =>\n v === null ||\n v === undefined ||\n (typeof v === 'string' && v.trim() === '') ||\n (Array.isArray(v) && v.length === 0);\n\n const extractKey = (v: any) =>\n v && typeof v === 'object' && 'key' in v ? v.key : v;\n\n const toPrimitive = (v: any) => {\n if (typeof v === 'string') {\n const s = v.trim().toLowerCase();\n if (s === 'true') return true;\n if (s === 'false') return false;\n const n = Number(v);\n if (!Number.isNaN(n) && v !== '') return n;\n return s;\n }\n return v;\n };\n\n const eq = (a: any, b: any) => {\n const A = toPrimitive(a);\n const B = toPrimitive(b);\n if (typeof A === 'boolean' || typeof B === 'boolean') return A === B;\n if (typeof A === 'number' || typeof B === 'number')\n return Number(A) === Number(B);\n return String(A ?? '').toLowerCase() === String(B ?? '').toLowerCase();\n };\n\n // Normalize LIST values for consistent comparison\n const normalizeListValues = (arr: any[]): any[] => {\n return arr\n .map((it) => {\n if (it == null) return null;\n if (typeof it !== 'object') return it;\n return (\n it.name ??\n it.label ??\n it.value ??\n it.uuid ??\n it.id ??\n JSON.stringify(it)\n );\n })\n .filter((x) => x !== null && x !== undefined && x !== '');\n };\n\n this.currentFilters = { ...filters };\n\n this.allData = this.originalData.filter((item) =>\n Object.keys(filters).every((key) => {\n const fv = filters[key];\n if (isEmpty(fv)) return true;\n\n const itemValue = this.getNestedValue(item, key);\n\n if (Array.isArray(fv)) {\n const selected = fv.map(extractKey);\n if (Array.isArray(itemValue)) {\n const flat = normalizeListValues(itemValue);\n return selected.some((opt) => flat.some((v) => eq(v, opt)));\n }\n return selected.some((opt) => eq(itemValue, opt));\n }\n\n const single = extractKey(fv);\n if (Array.isArray(itemValue)) {\n const flat = normalizeListValues(itemValue);\n return flat.some((v) => eq(v, single));\n }\n\n return eq(itemValue, single);\n })\n );\n\n this.totalRecords = this.allData.length;\n this.lastLoadedIndex = 0;\n this.tableData = [];\n this.loadLazyData({ first: 0, rows: 100 });\n }\n\n /** Determines if a row can be selected based on `canSelect`. */\n isRowSelectable(event: any): boolean {\n return typeof event.data?.canSelect === 'boolean'\n ? event.data.canSelect\n : true;\n }\n\n /** Retrieves a nested value from an object given a dot-path. */\n private getNestedValue(obj: any, path: string): any {\n try {\n if (obj && Object.prototype.hasOwnProperty.call(obj, path)) {\n return obj[path]?.key || obj[path];\n }\n const keys = path.split('.');\n let current = obj;\n\n for (const key of keys) {\n if (current && typeof current === 'object' && key in current) {\n current = current[key];\n } else {\n return undefined;\n }\n }\n\n return current?.key || current;\n } catch {\n return undefined;\n }\n }\n\n /** Updates selected columns and triggers change detection. */\n applyColumns(selected: any[]) {\n const next = this.columns.filter((col) => selected.includes(col.field));\n Promise.resolve().then(() => {\n this.selectedColumns = next;\n this.cdr.markForCheck();\n });\n }\n\n /** Emits row selection events. */\n onRowClick(event: Event, rowData: any) {\n event.stopPropagation();\n this.rowSelection.emit(rowData);\n }\n\n /** Updates checkbox selection state and emits changes. */\n onSelectionChange(selected: any[]) {\n this.selectedItems.set(selected);\n this.bulkMode = selected.length > 0;\n this.checkBoxSelection.emit(selected);\n }\n\n /**\n * Handles table action clicks.\n * Supports PDF/CSV exports with localized labels.\n */\n handleActionClick(event: any) {\n if (event?.action?.key === 'EXPORT_PDF') {\n const file = this.tableConfiguration?.key\n ? buildFileName(this.tableConfiguration.key, 'pdf')\n : buildFileName('table', 'pdf');\n\n exportRowsToPdf(\n this.selectedColumns,\n this.tableData,\n this.columnTypeMap,\n this.columnTypeEnum,\n (k: string) => this.translateService.instant(k),\n file\n );\n return;\n }\n\n if (event?.action?.key === 'EXPORT_EXCEL') {\n const file = this.tableConfiguration?.key\n ? buildFileName(this.tableConfiguration.key, 'xlsx')\n : buildFileName('table', 'xlsx');\n\n exportRowsToExcel(\n this.selectedColumns,\n this.tableData,\n this.columnTypeMap,\n this.columnTypeEnum,\n (k: string) => this.translateService.instant(k),\n file\n );\n return;\n }\n\n this.actionClick.emit(event);\n }\n\n /** Convenience wrapper for translations in templates. */\n translateKey(key: string): string {\n return this.translateService.instant(key);\n }\n\n /** Checks if a value matches the global search query. */\n private matchesQuery(value: any, query: string): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string' || typeof value === 'number') {\n return value.toString().toLowerCase().includes(query.toLowerCase());\n }\n if (Array.isArray(value)) {\n return value.some((item) => this.matchesQuery(item, query));\n }\n if (typeof value === 'object') {\n return Object.values(value).some((val) => this.matchesQuery(val, query));\n }\n return false;\n }\n\n /** Clears all selections and disables bulk mode. */\n clearSelection() {\n this.selectedItems.set([]);\n this.bulkMode = false;\n }\n\n // Safe nested read: getNested(rowData, 'country.code') -> 'DE'\n getNested(obj: any, path?: string): any {\n if (!obj || !path) return null;\n return path.split('.').reduce((o, k) => (o != null ? o[k] : null), obj);\n }\n}\n","<div class=\"border-1 border-round-sm border-300 border-round-md m-2\">\n <ng-container *ngIf=\"selectedItems().length === 0; else selectionActions\">\n <table-caption\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n [filters]=\"filters\"\n [selectedItems]=\"selectedItems()\"\n (applyFiltersEvent)=\"applyFilters($event)\"\n (applyColumnsEvent)=\"applyColumns($event)\"\n (searchChange)=\"onSearch($event)\"\n (actionClick)=\"handleActionClick($event)\"\n >\n </table-caption>\n </ng-container>\n\n <ng-template #selectionActions>\n <div\n style=\"min-height: 40px; padding: 8px\"\n class=\"flex justify-content-between align-items-center border-bottom-1 border-300 pl-5 pr-5 text-sm text-500\"\n >\n <div>\n @if(tableConfiguration.selectionType === selectionTypeEnum.CHECKBOX){\n <span\n >{{ selectedItems().length }}\n {{\n selectedItems().length === 1\n ? (\"LABELS.ITEM_SELECTED\" | translate)\n : (\"LABELS.ITEMS_SELECTED\" | translate)\n }}</span\n >}\n </div>\n\n <div>\n <ng-container *ngFor=\"let action of tableConfiguration.bulkActions\">\n <phoenix-data-table-action\n [actionConfig]=\"action\"\n (actionClick)=\"\n handleActionClick({\n action: action,\n selectedItems: selectedItems()\n });\n clearSelection()\n \"\n ></phoenix-data-table-action>\n </ng-container>\n\n <button\n [attr.data-cy]=\"'clear-selection-button'\"\n class=\"p-button p-button-text p-button-plain\"\n (click)=\"clearSelection()\"\n aria-label=\"Clear Selection\"\n >\n <i class=\"pi pi-times\"></i>\n </button>\n </div>\n </div>\n </ng-template>\n\n <p-table\n #dt\n [columns]=\"selectedColumns\"\n [value]=\"tableData\"\n [size]=\"'small'\"\n scrollable=\"true\"\n [scrollHeight]=\"tableConfiguration.scrollHeight\"\n [virtualScroll]=\"true\"\n [virtualScrollItemSize]=\"30\"\n [rows]=\"100\"\n [lazy]=\"true\"\n [rowSelectable]=\"isRowSelectable\"\n [totalRecords]=\"totalRecords\"\n (onLazyLoad)=\"loadLazyData($event)\"\n [selection]=\"selectedItems()\"\n (selectionChange)=\"onSelectionChange($event)\"\n [sortMode]=\"'multiple'\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #header let-columns>\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\n <th\n pResizableColumn\n class=\"custom-th text-primary font-bold\"\n *ngFor=\"let col of columns\"\n [pSortableColumn]=\"col.field\"\n >\n {{ col.header | translate }}\n <p-sortIcon\n [field]=\"col.field\"\n [attr.data-cy]=\"'sort-button-' + col.header\"\n ></p-sortIcon>\n </th>\n <th class=\"custom-th\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n #body\n let-rowData\n let-columns=\"columns\"\n let-rowIndex=\"rowIndex\"\n >\n <tr>\n <ng-container [ngSwitch]=\"tableConfiguration.selectionType\">\n <td class=\"w-2rem\" *ngSwitchCase=\"selectionTypeEnum.CHECKBOX\">\n <p-tableCheckbox\n [attr.data-cy]=\"\n 'table-row-' + selectionTypeEnum.CHECKBOX + '-' + rowIndex\n \"\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]=\"\n 'table-row-' + selectionTypeEnum.RADIO_BTN + '-' + rowIndex\n \"\n ></p-tableRadioButton>\n </td>\n </ng-container>\n\n <td\n *ngFor=\"let col of columns; let i = index\"\n (click)=\"\n i < 2 && tableConfiguration.hasCellClick\n ? onRowClick($event, rowData)\n : null\n \"\n [ngClass]=\"{\n 'text-blue-500 underline cursor-pointer':\n i < 2 && tableConfiguration.hasCellClick\n }\"\n >\n <ng-container [ngSwitch]=\"col.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeEnum.TAG\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <div\n class=\"border-round-md font-semibold\"\n [style]=\"{\n 'fontSize':'12px',\n \n 'padding': '3px 8px',\n 'width':'fit-content',\n 'background-color':\n (rowData[col.field + 'Color'] || '#ccc') + '56',\n 'color': rowData[col.field + 'Color'], \n }\"\n >\n {{\n rowData[col.field]?.name || rowData[col.field] | translate\n }}\n </div>\n\n <!-- <p-tag\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TAG +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [style]=\"{\n 'background-color': rowData[col.field + 'Color'] || '#ccc',\n 'font-size': '0.9rem!important'\n }\"\n [value]=\"\n rowData[col.field]?.name || rowData[col.field] | translate\n \"\n ></p-tag> -->\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.LIST_TAG\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n @for(item of rowData[col.field]; track $index){\n <p-badge severity=\"warn\" styleClass=\"mr-1\" [value]=\"item\" />\n\n <!-- <p-tag\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.LIST_TAG +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [style]=\"{\n 'font-size': '0.9rem!important'\n }\"\n styleClass=\"mr-1\"\n [value]=\"item\"\n severity=\"info\"\n ></p-tag> -->\n }\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.OBJ_TAG\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <p-tag\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.OBJ_TAG +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [style]=\"{\n fontSize: '12px',\n padding: '3px 8px',\n width: 'fit-content',\n 'background-color':\n (rowData[col.field].color || '#ccc') + '56',\n\n color: rowData[col.field].color\n }\"\n [value]=\"rowData[col.field]?.value | translate\"\n ></p-tag>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.PERSON\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <p-avatar\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.PERSON +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [label]=\"rowData[col.field]?.name | initials\"\n class=\"cursor-pointer\"\n [style]=\"{\n 'background-color': '#9c27b0',\n color: '#ffffff',\n 'font-size': '0.8rem!important'\n }\"\n shape=\"circle\"\n (click)=\"opp.toggle($event)\"\n ></p-avatar>\n <p-overlayPanel #opp>\n <div>\n <span class=\"text-lg\">{{ rowData[col.field].name }} </span>\n <span class=\"block text-sm\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{ rowData[col.field].email ?? \" --\" }}\n </span>\n <span class=\"block text-sm\">\n <i class=\"pi pi-phone text-500\"></i\n >{{ rowData[col.field].phone ?? \" --\" }}\n </span>\n </div>\n </p-overlayPanel>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.LIST\">\n <ng-container\n *ngIf=\"rowData[col.field]?.length; else emptyCellBlock\"\n >\n @if(rowData[col.field].length > 1){\n <div\n class=\"cursor-pointer\"\n (click)=\"op.toggle($event)\"\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.LIST +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n >\n <span class=\"mr-1\">{{ rowData[col.field][0].name }} </span>\n <p-chip\n class=\"text-sm font-semibold p-1 m-0\"\n [label]=\"'+' + (rowData[col.field].length - 1)\"\n />\n </div>\n\n } @else {\n <span>{{ rowData[col.field][0].name }}</span>\n }\n </ng-container>\n <p-overlayPanel #op>\n @for(item of rowData[col.field] ; track item.name; let isFirst =\n $first ){\n <ul class=\"list-none m-0 p-0\">\n @if(!isFirst) {\n <li>{{ item.name }}</li>\n }\n </ul>\n }\n </p-overlayPanel>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.BOOLEAN\">\n <ng-container\n *ngIf=\"rowData[col.field] | isBoolean; else emptyCellBlock\"\n >\n <i\n [pTooltip]=\"rowData?.[col.field+'Tooltip']\"\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.BOOLEAN +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.BOOLEAN | lowercase)\n \"\n class=\"pi\"\n [ngClass]=\"\n rowData[col.field]\n ? 'text-green-500 pi-check-circle'\n : 'text-red-500 pi-times-circle'\n \"\n ></i>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.TEXT_AREA\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TEXT_AREA +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [pTooltip]=\"rowData[col.field]\"\n style=\"width: 200px\"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.TEXT_AREA | lowercase)\n \"\n >\n {{\n rowData[col.field].length > 50\n ? (rowData[col.field] | slice : 0 : 50) + \"...\"\n : rowData[col.field]\n }}\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.TIMEPERIOD\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TIMEPERIOD +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [pTooltip]=\"rowData[col.field] | timePeriod\"\n style=\"max-width: 200px\"\n >\n {{ rowData[col.field] | timePeriod }}\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <!-- If this column is flagged and we have a code, render flag + the usual cell HTML -->\n <ng-container\n *ngIf=\"\n col.flag && getNested(rowData, col.flagCodeField) as cc;\n else normalTextCell\n \"\n >\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TEXT +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n class=\"flex align-items-center gap-2\"\n style=\"max-width: 200px\"\n [pTooltip]=\"rowData | cell : col : dateFormat\"\n >\n <img\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + (cc || '').toString().toLowerCase()\"\n style=\"width: 22px\"\n alt=\"\"\n />\n <span [innerHTML]=\"rowData | cell : col : dateFormat\"></span>\n </div>\n </ng-container>\n\n <!-- Normal (unflagged) rendering: unchanged -->\n <ng-template #normalTextCell>\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TEXT +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [pTooltip]=\"rowData | cell : col : dateFormat\"\n style=\"max-width: 200px\"\n [innerHTML]=\"rowData | cell : col : dateFormat\"\n ></div>\n </ng-template>\n </ng-container>\n <ng-template #emptyCellBlock>\n <ng-container\n [ngTemplateOutlet]=\"emptyCell\"\n [ngTemplateOutletContext]=\"{\n dataCy:\n 'table-row-' +\n col.columnType +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n }\"\n >\n </ng-container>\n </ng-template>\n </ng-container>\n </td>\n\n <td class=\"p-0\">\n <ng-container *ngFor=\"let action of tableConfiguration.rowActions\">\n <phoenix-data-table-action\n [actionConfig]=\"action\"\n [rowData]=\"rowData\"\n (actionClick)=\"handleActionClick($event)\"\n ></phoenix-data-table-action>\n </ng-container>\n </td>\n </tr>\n </ng-template>\n\n <ng-template #emptyCell let-dataCy=\"dataCy\">\n <span [attr.data-cy]=\"dataCy\">--</span>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\" let-columns>\n <tr style=\"height: 46px\">\n <td *ngFor=\"let col of columns\">\n <p-skeleton [ngStyle]=\"{ width: '60%' }\"></p-skeleton>\n </td>\n <td>\n <p-skeleton [ngStyle]=\"{ width: '20%' }\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\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 {{ \"NO_RESULTS_FOUND\" | translate }}\n </div>\n </td>\n </ng-template>\n </p-table>\n\n <div class=\"border-top-1 border-300 pl-2 p-1 text-sm text-500\">\n {{ \"LABELS.TOTAL_RECORDS\" | translate }}: {{ totalRecords }}\n </div>\n</div>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function startDueDateValidator(\n control: AbstractControl,\n): { [key: string]: any } | null {\n const startDate = control.get('startDate')?.value;\n const dueDate = control.get('dueDate')?.value;\n\n return { invalidDate: true };\n}\n","import {\n AbstractControl,\n AsyncValidatorFn,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { debounceTime, map, of, switchMap, timer } from 'rxjs';\n\nconst regexPatternEn =\n /^(?:(\\d+(?:\\.\\d+)?)w\\s*|)(?:(\\d+(?:\\.\\d+)?)d\\s*|)(?:(\\d+(?:\\.\\d+)?)h\\s*|)(?:(\\d+(?:\\.\\d+)?)m\\s*|)$/;\nconst regexPatternDe =\n /^(?:(\\d+(?:\\.\\d+)?)w\\s*|)(?:(\\d+(?:\\.\\d+)?)t\\s*|)(?:(\\d+(?:\\.\\d+)?)s\\s*|)(?:(\\d+(?:\\.\\d+)?)m\\s*|)$/;\n\nconst regexPatternSr =\n /^(?:(\\d+(?:\\.\\d+)?)n\\s*|)(?:(\\d+(?:\\.\\d+)?)d\\s*|)(?:(\\d+(?:\\.\\d+)?)č\\s*|)(?:(\\d+(?:\\.\\d+)?)m\\s*|)$/;\n\nfunction toMS(input: string, regex: RegExp) {\n const match = input?.match(regex);\n if (!match) return 0; // or handle it differently\n\n const weeks = parseFloat(match[1]) || 0;\n const days = parseFloat(match[2]) || 0;\n const hours = parseFloat(match[3]) || 0;\n const minutes = parseFloat(match[4]) || 0;\n\n const milliseconds =\n (weeks * 7 + days) * 24 * 60 * 60 * 1000 +\n hours * 60 * 60 * 1000 +\n minutes * 60 * 1000;\n return milliseconds;\n}\n\nfunction getLangPattern(currentLang: string) {\n switch (currentLang) {\n case 'de':\n return regexPatternDe;\n case 'en':\n return regexPatternEn;\n default:\n return regexPatternSr;\n }\n}\n\nexport function timePeriod(currentLang: string, tpMin: number): ValidatorFn {\n return (control: AbstractControl) => {\n if (!control.pristine) {\n const regValidator = Validators.pattern(getLangPattern(currentLang));\n if (regValidator(control)) {\n return { timeperiod: true };\n }\n\n if (control.status === 'VALID' && control.dirty) {\n if (toMS(control.value, getLangPattern(currentLang)) > 31536000000) {\n return { timeperiod_limit_max: true };\n }\n if (\n tpMin != null &&\n toMS(control.value, getLangPattern(currentLang)) <= tpMin\n ) {\n return { timeperiod_limit_min: true };\n }\n return null;\n }\n return null;\n }\n\n return null;\n };\n}\n","export enum ControlType {\n TEXT = 'TEXT',\n NUMBER = 'NUMBER',\n MS_OPTION = 'MS_OPTION',\n SS_OPTION = 'SS_OPTION',\n TEXT_AREA = 'TEXT_AREA',\n TEXT_EDITOR = 'TEXT_EDITOR',\n DATE = 'DATE',\n START_DUE_DATE = 'START_DUE_DATE',\n CHECKBOX = 'CHECKBOX',\n CHECKBOX_COLOR = 'CHECKBOX_COLOR',\n LINKS_DATA = 'LINKS_DATA',\n PASSWORD = 'PASSWORD',\n SWITCH = 'SWITCH',\n TIMEPERIOD = 'TIMEPERIOD',\n CURRENCY = 'CURRENCY',\n ASSIGN = 'ASSIGN',\n ASSIGN_ASSET = 'ASSIGN_ASSET',\n COLOR = 'COLOR',\n SELECT_BUTTON = 'SELECT_BUTTON',\n UPLOAD = 'UPLOAD',\n UPLOAD_DRAG_DROP = 'UPLOAD_DRAG_DROP',\n SLOT = 'SLOT',\n SS_OPTION_OBJECT_BASED = 'SS_OPTION_OBJECT_BASED',\n}\n","import { ControlType } from './control-type.enum';\n\nexport function getFieldType(control: any) {\n switch (control.configuration.type) {\n case ControlType.TEXT:\n case ControlType.TEXT_AREA:\n case ControlType.TEXT_EDITOR:\n case ControlType.CHECKBOX:\n return control.dataValue;\n case ControlType.SS_OPTION:\n return control.dataOptionValue;\n case ControlType.MS_OPTION:\n return control.dataOptionValues;\n default:\n }\n}\n","import { AbstractControl, UntypedFormControl } from '@angular/forms';\n\nexport class WhiteSpaceValidator {\n static noWhiteSpaceValidator(control: AbstractControl<any, any>) {\n if (typeof control.value === 'object') {\n return { whitespace: false };\n }\n if (control.value === '') {\n return { whitespace: false };\n }\n const isWhitespace = (control.value || '').trim().length === 0;\n const isValid = !isWhitespace;\n return isValid ? null : { whitespace: true };\n }\n static noWhiteSpaceValidatorForEditor(control: UntypedFormControl) {\n const isWhitespace =\n (control.value?.replace(/(<([^>]+)>)/gi, '') || '').trim().length === 0;\n const isValid = !isWhitespace;\n return isValid ? null : { whitespace: true };\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function noDangerousCharsValidator(): ValidatorFn {\n // Blocks only specific dangerous characters: < > \" = $ /\n //[<>\"=$/]/ This was before but some catalog name or description contains \"/\"\" so when field is desibled we cannot save form\n const dangerousCharsPattern = /[<>\"=$]/;\n\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n return dangerousCharsPattern.test(String(value))\n ? { dangerousChars: true }\n : null;\n };\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MetaFormService {\n router = inject(Router);\n private formEvent = new Subject<any>();\n private formReadOnlySubject = new BehaviorSubject<boolean>(false);\n private formTabContent = new BehaviorSubject<string>('FORM');\n private formDirtyStatus = new BehaviorSubject<boolean>(false);\n private formBuildCompletedSubject = new BehaviorSubject<boolean>(false);\n\n currentFormState = this.formEvent.asObservable();\n formReadOnlyState = this.formReadOnlySubject.asObservable();\n currentFormTabContent = this.formTabContent.asObservable();\n currentFormDirtyStatus = this.formDirtyStatus.asObservable();\n\n /**\n * Notify when form is completed\n * @description Notifies you about when form bild is completed in meta-form component class. Usefull when you need to attach some listeners on form controls or any other action related to form when all controls are avaiable\n * @returns {boolean}\n */\n formBuildCompleted = this.formBuildCompletedSubject.asObservable();\n\n constructor() {}\n\n setFormEvent(event: any): void {\n this.formEvent.next(event);\n }\n\n setFormReadOnlyState(state: boolean) {\n this.formReadOnlySubject.next(state);\n // this.router.navigate([], {\n // queryParams: {\n // edit: state ? null : !state,\n // },\n // queryParamsHandling: 'merge',\n // });\n }\n\n setFormTabContent(tabContent: string) {\n this.formTabContent.next(tabContent);\n }\n\n setFormDirtyStatus(status: boolean) {\n this.formDirtyStatus.next(status);\n }\n /**\n * Sets the form build completion status to indicate when the form is created.\n *\n * @param {boolean} isCompleted - A boolean value to indicate whether the form build is completed.\n * Set to `true` when the form is fully created.\n *\n * @description This method is used to notify when the form is created and ready for use.\n */\n setFormBuildCompletition(isCompleted: boolean) {\n this.formBuildCompletedSubject.next(isCompleted);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { HttpClient } from '@angular/common/http';\n// import { EnvService } from '@phoenix/environment';\nimport { startDueDateValidator } from './meta-validators/due-date/start-due-date.validator';\n\nimport { timePeriod } from './meta-validators/timeperiod/timeperiod.validator';\n\nimport { MetaControl } from './meta-form-interface/interfaces';\nimport { MetaFormService } from './services/meta-form.service';\nimport { ControlType } from './utils/control-type.enum';\nimport { getFieldType } from './utils/get-field-type.utils';\nimport { WhiteSpaceValidator } from './meta-validators/white-space-validator';\nimport { noDangerousCharsValidator } from './meta-validators/no-dangerous-chars/do-danerous-chars';\n\n@Directive()\nexport abstract class MetaFormAbstract {\n @Input() metaForm!: FormGroup;\n @Input() metaFormValues: any;\n @Input() metaFormControls: any;\n @Input() loading: boolean = false;\n @Input() disableForm: boolean = false;\n @Input() formButtons: boolean = true;\n @Input() groupForm: boolean = false;\n @Input() formStyle: any;\n @Output() onFormSubmit = new EventEmitter();\n @Output() onFormCancel = new EventEmitter();\n\n formActive$!: Observable<boolean>;\n formSub$!: Subscription;\n\n constructor(\n private fb: FormBuilder,\n public metaService: MetaFormService,\n\n private translateService: TranslateService,\n private http: HttpClient // private env: EnvService\n ) {\n this.metaForm = this.fb.group({});\n this.formActive$ = this.metaService.formReadOnlyState;\n ///check if this has usecase\n this.formSub$ = this.metaForm.valueChanges.subscribe((ev: any) => {\n this.metaService.setFormEvent(ev);\n });\n }\n\n createForm(controls: MetaControl[] | any) {\n controls?.forEach((control: any) => {\n this.metaForm.addControl(\n control.configuration?.key,\n this.fb.control(\n getFieldType(control)\n ///updateOn: blur only for controls with async validators. If added for all each tab/step toggle removes form value. Check why\n // control.asyncValidators && { updateOn: 'blur' },\n )\n );\n //add validators\n this.addControlValidators(control);\n\n //disable non editable fields\n if (control.disable) {\n this.metaForm.get(control.configuration.key)?.disable();\n }\n });\n ///patch values in form\n if (this.metaFormValues) {\n this.metaForm.patchValue(this.metaFormValues);\n }\n\n this.metaService.setFormBuildCompletition(true);\n }\n\n activateForm() {\n throw new Error('not implemented');\n }\n\n addControlValidators(control: any) {\n const validators: any[] = [];\n const asyncValidators: any[] = [];\n\n if (control.validators) {\n control.validators.min &&\n validators.push(Validators.min(control.validators.min));\n\n control.validators.max &&\n validators.push(Validators.max(control.validators.max));\n\n control.validators.maxLenght &&\n validators.push(Validators.maxLength(control.validators.maxLenght));\n\n control.validators.minLength &&\n validators.push(Validators.minLength(control.validators.minLength));\n\n control.validators.email && validators.push(Validators.email);\n\n control.validators.regex &&\n validators.push(\n Validators.pattern(control.validators.regex?.regexType)\n );\n control.validators.phone &&\n validators.push(Validators.pattern(/^\\+?[1-9]\\d{7,14}$/));\n\n control.validators.timeperiod &&\n validators.push(\n timePeriod(\n this.translateService.currentLang,\n control.validators.tpMin\n )\n );\n\n control.validators.dueDate && validators.push(startDueDateValidator);\n }\n if (control?.mandatory) {\n validators.push(Validators.required);\n }\n\n if (control?.mandatory && control.configuration.type === ControlType.TEXT) {\n validators.push(WhiteSpaceValidator.noWhiteSpaceValidator);\n }\n\n if (\n control?.mandatory &&\n control.configuration.type === ControlType.TEXT_AREA\n ) {\n validators.push(WhiteSpaceValidator.noWhiteSpaceValidator);\n }\n\n if (\n control.configuration.type === ControlType.TEXT ||\n control.configuration.type === ControlType.TEXT_AREA\n ) {\n validators.push(noDangerousCharsValidator());\n }\n\n this.metaForm.get(control.configuration.key)?.setValidators(validators);\n }\n\n onSubmit() {\n this.onFormSubmit.emit(this.metaForm);\n }\n\n onCancel() {\n this.metaForm.reset();\n this.onFormCancel.emit();\n }\n\n /**\n * Resets form to initial state\n *\n * @description Useful when user interact with form (edit some inputs) and than clicks CANCEL. This method patch original values to FormGroup again\n *\n */\n resetToInitialValues() {\n this.metaForm.patchValue(this.metaFormValues);\n }\n\n ngOnDestroy(): void {\n if (this.formSub$) this.formSub$.unsubscribe();\n }\n}\n","export function getLanguageParam(\n obj: any,\n langType: string,\n paramName: string,\n): string {\n if (!langType) langType = 'en';\n if (langType && paramName) {\n const param: string =\n paramName + langType.charAt(0).toUpperCase() + langType.slice(1);\n const fallBackParam: string = paramName + 'En';\n if (obj?.[param]) {\n return obj[param];\n } else if (obj?.[fallBackParam]) {\n return obj[fallBackParam];\n } else {\n return param;\n }\n } else {\n return '***NO VALUE***';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getLanguageParam } from './lang.utils';\n\n@Pipe({\n name: 'fieldLabel',\n standalone: true,\n})\nexport class FieldLabelPipe implements PipeTransform {\n transform(value: any, currentLang: string): string {\n if (value.hasOwnProperty('userFriendlyMessage')) {\n return value?.userFriendlyMessage;\n }\n const metaLabel = getLanguageParam(value, currentLang, 'labelKeyVal');\n return metaLabel;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { FieldLabelPipe } from '../utils/field-label.pipe';\n\n@Component({\n selector: 'phoenix-meta-label',\n standalone: true,\n imports: [CommonModule, TranslateModule, FieldLabelPipe],\n template: `\n <label class=\"mb-1 block\" *ngIf=\"!control?.hidden\">\n {{ control | fieldLabel: currentLang | translate }}\n <span *ngIf=\"control.mandatory\" class=\"red-asterisk\">*</span>\n </label>\n `,\n styles: [],\n})\nexport class MetaLabelComponent {\n @Input() control: any;\n currentLang: string;\n constructor(private translateService: TranslateService) {\n this.currentLang = this.translateService.currentLang;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { TableModule } from 'primeng/table';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { map } from 'rxjs';\nimport {\n tableColumnType,\n tableSelectionType,\n} from '../../../data-table/utils/dataTable.enum';\nimport { TableComponent } from '../../../data-table/table/table.component';\nimport { ButtonModule } from 'primeng/button';\nimport { ActionButton } from '../../../../models/status.model';\n\n\n@Component({\n selector: 'phoenix-object-item-dialog',\n standalone: true,\n imports: [\n TranslateModule,\n TableModule,\n TooltipModule,\n CommonModule,\n TableComponent,\n ButtonModule\n ],\n templateUrl: './object-item-dialog.component.html',\n styleUrls: ['./object-item-dialog.component.scss'],\n})\nexport class ObjectItemDialogComponent implements OnInit {\n @ViewChild('table') table!: TableComponent;\n\n columns: any;\n disableButton: boolean = true;\n tableData = [];\n hasSelection = false;\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) {}\n\n ngOnInit(): void {\n this.tableData = this.config.data.tableData;\n this.columns = this.config.data.columns;\n }\n\n actions: ActionButton[] = [\n {\n id: 'assign',\n disabled: true,\n label: 'ACTION.ASSIGN',\n icon: 'pi pi-check',\n severity: 'primary',\n },\n {\n id: 'cancel',\n disabled: false,\n label: 'ACTION.CANCEL',\n severity: 'secondary',\n },\n ];\n\n onSelectionChanged(selectedItem: any) {\n this.hasSelection = !!selectedItem;\n }\n\n actionClick(key: any) {\n if (key === 'assign') {\n this.ref.close(this.table.selectedItems());\n } else {\n this.ref.close();\n }\n }\n tableConfiguration = {\n lazy: false,\n scrollHeight: '200px',\n hasSearch: true,\n hasFilter: true,\n key: 'asd',\n rows: 20,\n selectionType: tableSelectionType.RADIO_BTN,\n };\n}\n","<div style=\"overflow: hidden; padding-bottom: 50px\">\n <phoenix-table\n #table\n [data]=\"tableData\"\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n (checkBoxSelection)=\"onSelectionChanged($event)\"\n >\n </phoenix-table>\n</div>\n<div class=\"absolute bottom-0 right-0 p-4\">\n <div class=\"flex gap-2\">\n <ng-container *ngFor=\"let action of actions\">\n <p-button\n [label]=\"action.label | translate\"\n [icon]=\"action.icon || ''\"\n [severity]=\"action.severity || 'primary'\"\n [disabled]=\"action.id === 'assign' && !hasSelection\"\n [id]=\"action.id\"\n (onClick)=\"actionClick(action.id)\"\n size=\"small\"\n ></p-button>\n </ng-container>\n</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef, inject } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n// import { Assignee } from '@phoenix/model-meta';\n// import { PhoenixDialogService } from '@phoenix/service/common';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { ObjectItemDialogComponent } from '../object-item-dialog/object-item-dialog.component';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Assignee } from '../../../../models/assignee.model';\nimport { tableColumnType } from '../../../data-table/utils/dataTable.enum';\n\n@Component({\n selector: 'phoenix-meta-assign-responsible',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n MetaLabelComponent,\n TranslateModule,\n OverlayPanelModule,\n PanelModule,\n ],\n template: `\n <div [style.display]=\"control.hidden ? 'none' : 'block'\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <div\n [attr.data-cy]=\"'assign-' + control?.id\"\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n class=\"flex align-items-center\"\n >\n <div>\n <p-button\n [rounded]=\"true\"\n [text]=\"true\"\n (onClick)=\"op.toggle($event)\"\n >\n <div class=\"person-wrap\">\n <div class=\"person-avatar\">\n {{\n parentForm.controls[\n this.control.configuration.key\n ].value?.name?.charAt(0)\n }}\n </div>\n <div>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.name\n }}\n </p>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.function\n }}\n </p>\n </div>\n </div></p-button\n >\n <p-overlayPanel #op>\n <div>\n <span class=\"block mb-2\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.email ?? ' --'\n }}\n </span>\n <p>\n <i class=\"pi pi-phone mr-1 text-500\"></i\n >{{\n parentForm.controls[this.control.configuration.key].value\n ?.phone ?? ' --'\n }}\n </p>\n </div></p-overlayPanel\n >\n </div>\n\n <div style=\"paddingBottom:4px\">\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n styleClass=\"p-button-sm mt-1\"\n type=\"button\"\n [text]=\"true\"\n label=\"{{ 'ACTION.REASSIGN' | translate }}\"\n (click)=\"assignResponsible()\"\n ></p-button>\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n type=\"button\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n [text]=\"true\"\n styleClass=\"p-button-danger p-button-sm mt-1 ml-2\"\n ></p-button>\n </div>\n </div>\n <p-button\n *ngIf=\"\n !(\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n )\n \"\n type=\"button\"\n icon=\"pi pi-user-plus\"\n styleClass=\"p-button-sm mt-1\"\n label=\"{{ 'ACTION.ASSIGN' | translate }}\"\n (click)=\"assignResponsible()\"\n [text]=\"true\"\n ></p-button>\n </div>\n `,\n styles: [\n `\n .person-wrap {\n display: flex;\n align-items: center;\n\n margin-left: -6px;\n\n & p {\n margin: 0;\n }\n\n .person-avatar {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 28px;\n height: 28px;\n min-width: 28px;\n min-height: 28px;\n margin-right: 5px;\n background-color: rgb(233, 66, 96);\n color: white;\n border-radius: 50%;\n /* font-weight: 800; */\n font-size: 1rem;\n }\n .person-name :first-child {\n font-size: 1rem;\n }\n }\n\n .person-details {\n border-top: 1px solid #e0e0e0;\n padding: 5px;\n margin-left: -6px;\n width: 150px;\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n i {\n color: #e94260;\n padding-right: 5px;\n }\n\n .p-editor-container {\n padding-left: 0 !important;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaAssignResponsibleComponent),\n multi: true,\n },\n ],\n})\nexport class MetaAssignResponsibleComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n @Input() disable?: boolean;\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n public isDisabled!: boolean;\n writeValue(value: any): void {}\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean) {\n this.isDisabled = isDisabled;\n }\n // private phoenixDialog = inject(PhoenixDialogService);\n private translateService = inject(TranslateService);\n private dialogService = inject(DialogService);\n person!: any;\n\n clear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n assignResponsible() {\n const ref = this.dialogService.open(ObjectItemDialogComponent, {\n header: this.translateService.instant('LABELS.ASSIGN_RESPONSIBLE'),\n width: '700px',\n\n modal: true,\n data: {\n tableData: this.control.configuration.items,\n columns: [\n {\n field: 'name',\n header: 'LABELS.NAME',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'function',\n header: 'LABELS.FUNCTION',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'phone',\n header: 'LABELS.PHONE',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'email',\n header: 'LABELS.EMAIL',\n columnType: tableColumnType.TEXT,\n },\n ],\n },\n contentStyle: { overflow: 'auto' },\n draggable: true,\n closable: true,\n });\n\n ref.onClose.subscribe((response: Assignee) => {\n if (response) {\n this.person = response;\n this.parentForm.controls[this.control.configuration.key].setValue(\n response\n );\n }\n });\n }\n}\n","export enum ErrorType {\n REQUIRED = 'required',\n MIN_LENGTH = 'minlength',\n MAX_LENGTH = 'maxlength',\n EMAIL = 'email',\n CUSTOM = 'custom',\n PATTERN = 'pattern',\n UIQUE_ENTRY = 'uniqueEntry',\n TIMEPERIOD = 'timeperiod',\n TIMEPERIOD_LIMIT_MAX = 'timeperiod_limit_max',\n TIMEPERIOD_LIMIT_MIN = 'timeperiod_limit_min',\n DUE_DATE = 'dueDate',\n UIQUE = 'unique',\n BOTH_DATES = 'both_dates',\n MAX = 'max',\n MIN = 'min',\n DANGEROUS_CHARS = 'dangerousChars',\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, inject } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription, combineLatestWith } from 'rxjs';\nimport { MetaFormService } from '../services/meta-form.service';\nimport { ErrorType } from '../utils/error-type.util';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'phoenix-inline-field-error',\n styles: [``],\n animations: [\n trigger('slideInOut', [\n transition(':enter', [\n style({ transform: 'translateY(-60%)' }),\n animate('100ms ease-out', style({ transform: 'translateY(0%)' })),\n ]),\n transition(':leave', [\n animate(\n '50ms ease-out',\n style({ transform: 'translateY(-100%)', opacity: '0' })\n ),\n ]),\n ]),\n ],\n template: `\n <div style=\"height: 1px;\">\n <div *ngIf=\"note\" [@slideInOut] class=\"static\">\n <small class=\"text-blue-700\" *ngIf=\"note.type === 'info'; else warn\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 11px\"></i>\n {{ note.content }}\n </small>\n <ng-template #warn>\n <small class=\"p-error\">\n <i style=\"font-size: 11px\" class=\"pi pi-exclamation-circle\"></i>\n {{ note }}\n </small>\n </ng-template>\n </div>\n </div>\n `,\n})\nexport class InlineFieldError implements OnDestroy, OnChanges {\n @Input() ctrl!: AbstractControl;\n note!: any;\n constructor(private translateService: TranslateService) {}\n sub$!: Subscription;\n metaFormService = inject(MetaFormService);\n loaded: Boolean = false;\n\n ngOnChanges(): void {\n if (this.ctrl && !this.loaded) {\n if (this.ctrl?.status === 'PENDING') {\n ///this is only for async validators for name and title. Remove this one, we have this in onChange() method\n this.ctrl.updateValueAndValidity();\n }\n this.sub$ = this.ctrl?.statusChanges\n ?.pipe(combineLatestWith(this.metaFormService.formReadOnlyState))\n .subscribe((arr) => {\n if (arr[0] !== 'VALID') {\n setTimeout(() => {\n this.note = this.getErrorMessage(this.ctrl);\n });\n } else {\n setTimeout(() => {\n this.note = null;\n });\n }\n // if (arr[1]) {\n // setTimeout(() => {\n // this.note = null;\n // });\n // }\n });\n this.loaded = true;\n }\n }\n\n getErrorMessage(control: AbstractControl): any {\n if (control?.status === 'PENDING') {\n return {\n type: 'info',\n content: this.translateService.instant(\n 'VALIDATION_MESSAGE.CHECKING_ENTRY_AVAILABILITY'\n ),\n };\n }\n // if (control?.status === 'VALID') {\n // return 'ENTRY OK';\n // }\n\n if (control?.errors) {\n switch (Object.keys(control.errors)[0]) {\n case ErrorType.REQUIRED:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.THIS_FIELD_IS_REQUIRED'\n );\n case ErrorType.MIN_LENGTH:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_AT_LEAST',\n { minlength: control.errors['minlength'].requiredLength }\n );\n case ErrorType.MAX_LENGTH:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_NO_MORE',\n { maxlength: control.errors['maxlength'].requiredLength }\n );\n case ErrorType.EMAIL:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.ENTER_VALID_EMAIL'\n );\n case ErrorType.DANGEROUS_CHARS:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.NO_SPECIAL_CHARS_ALLOWED'\n );\n case ErrorType.CUSTOM:\n return this.translateService.instant(control?.errors?.['custom']);\n\n case ErrorType.UIQUE_ENTRY:\n return control.errors['uniqueEntry'];\n\n case ErrorType.TIMEPERIOD:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_MATCH_TIMEPATTERN'\n );\n\n case ErrorType.MAX:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_BE_LESS_THAN_AND_MORE_THAN',\n {\n lowerValue: control.errors['min']?.min ?? 0,\n upperValue: control.errors['max']?.max,\n }\n );\n\n case ErrorType.DUE_DATE:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.INVALID_DATE'\n );\n case ErrorType.UIQUE:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_IS_ALREADY_IN_USE'\n );\n case ErrorType.TIMEPERIOD_LIMIT_MAX:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_MATCH_TIMEPATTERN_LIMIT_MAX'\n );\n\n case ErrorType.TIMEPERIOD_LIMIT_MIN:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_MATCH_TIMEPATTERN_LIMIT_MIN'\n );\n\n case ErrorType.BOTH_DATES:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.BOTH_START_END_DATE_REQUIRED'\n );\n\n // add more cases for other validators as needed\n case ErrorType.PATTERN:\n const re = '^(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?$';\n\n if (control?.errors?.['pattern']?.requiredPattern === re)\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOUL_BE_URL'\n );\n else {\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.INVALID_VALUE'\n );\n }\n // add more cases for other validators as needed\n default:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.INVALID_VALUE'\n );\n }\n } else return '';\n }\n\n ngOnDestroy(): void {\n this.sub$?.unsubscribe();\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { ControlValueAccessor, FormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\n\n@Directive()\nexport class BaseMetaField implements ControlValueAccessor {\n @Input() disable: boolean = false;\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n fcs$!: Subscription | undefined;\n cfc$!: Subscription | undefined;\n\n public value!: any;\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n ctrl: any;\n\n protected changeSub = new Subject<boolean>();\n protected changeSubs$!: Subscription;\n\n ngOnInit() {\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n }\n\n getInputValue(event: Event | any): any {\n if (event.value) {\n return event.value;\n }\n if (event.target instanceof HTMLInputElement) {\n return event.target.value?.trim();\n }\n if (event.target instanceof HTMLTextAreaElement) {\n return event.target.value;\n }\n return '';\n }\n\n writeValue(value: string): void {\n this.value = value;\n }\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n this.changeSub.next(true);\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disable = isDisabled;\n }\n\n ngOnDestroy(): void {\n this.changeSubs$?.unsubscribe();\n this.fcs$?.unsubscribe();\n this.cfc$?.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { CalendarModule } from 'primeng/calendar';\n\n@Component({\n selector: 'phoenix-meta-calendar',\n standalone: true,\n imports: [\n CommonModule,\n CalendarModule,\n MetaLabelComponent,\n FormsModule,\n InlineFieldError,\n DatePickerModule,\n ],\n template: ` <div [hidden]=\"control?.hidden\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-datepicker\n [attr.data-cy]=\"'calendar-' + control?.id\"\n (onSelect)=\"onChanged(value)\"\n [style]=\"{ width: '100%' }\"\n [(ngModel)]=\"value\"\n [disabled]=\"disable\"\n [readonlyInput]=\"true\"\n [showButtonBar]=\"true\"\n [minDate]=\"control.configuration?.minDate\"\n [maxDate]=\"control.configuration?.maxDate\"\n [showIcon]=\"true\"\n (onClearClick)=\"onDateClear()\"\n [showTime]=\"control.configuration.showTime\"\n [hourFormat]=\"'24'\"\n [appendTo]=\"'body'\"\n ></p-datepicker>\n <phoenix-inline-field-error [ctrl]=\"ctrl\"></phoenix-inline-field-error>\n </div>`,\n styleUrls: ['./meta-calendar.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCalendarComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCalendarComponent extends BaseMetaField {\n onDateClear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-checkbox-color-picker',\n standalone: true,\n imports: [\n CommonModule,\n CheckboxModule,\n FormsModule,\n TranslateModule,\n OverlayPanelModule,\n MetaLabelComponent,\n ],\n template: `\n <p-overlayPanel #op>\n <div class=\"color-picker\">\n <ng-container\n *ngFor=\"let row of control.configuration.options; let last = last\"\n >\n <div class=\"color-row \" [ngClass]=\"{ 'mb-2': !last }\">\n <ng-container *ngFor=\"let color of row\">\n <div\n class=\"color-box\"\n [ngStyle]=\"{\n 'background-color': color,\n outline:\n focusedColor === color ? '3px solid ' + color : 'none',\n 'outline-offset': focusedColor === color ? '3px' : '0',\n }\"\n (click)=\"onChanged(color); changeColor(color)\"\n ></div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </p-overlayPanel>\n\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n <div\n class=\"selected-color \"\n [ngStyle]=\"{ 'background-color': value, marginTop: '6px' }\"\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n (click)=\"op.toggle($event)\"\n ></div>\n `,\n styles: [\n `\n ::ng-deep .p-overlaypanel .p-overlaypanel-content {\n padding: 0 !important;\n }\n .color-picker {\n display: flex;\n flex-direction: column;\n padding: 10px;\n }\n\n .color-row {\n display: flex;\n justify-content: center;\n gap: 8px;\n }\n\n .color-box {\n margin: 2px;\n width: 30px;\n height: 30px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 4px;\n }\n\n .color-box:hover {\n transform: scale(1.1);\n opacity: 0.9;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);\n }\n\n .color-box:focus {\n outline: 3px solid rgba(0, 0, 0, 0.2);\n outline-offset: 3px;\n }\n\n .selected-color {\n width: 35px;\n height: 35px;\n border: 2px solid #ccc;\n cursor: pointer;\n border-radius: 6px;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCheckboxColorPickerComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCheckboxColorPickerComponent extends BaseMetaField {\n private translateService = inject(TranslateService);\n currentLang = this.translateService.currentLang;\n focusedColor: any;\n changeColor(color: string): void {\n this.focusedColor = color;\n this.value = color;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { FieldLabelPipe } from '../../utils/field-label.pipe';\n\n@Component({\n selector: 'phoenix-meta-checkbox',\n standalone: true,\n imports: [\n CommonModule,\n CheckboxModule,\n FormsModule,\n TranslateModule,\n FieldLabelPipe,\n ],\n template: ` <div class=\"ml-3 field-checkbox\">\n <p-checkbox\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n [(ngModel)]=\"value\"\n (onChange)=\"onChanged(value)\"\n [binary]=\"true\"\n inputId=\"binary\"\n [disabled]=\"control.readOnly || disable\"\n ></p-checkbox>\n\n <label for=\"binary\">\n {{ control | fieldLabel: currentLang | translate }}\n <span *ngIf=\"control.mandatory\" class=\"red-asterisk\">*</span></label\n >\n </div>`,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCheckboxComponent extends BaseMetaField {\n private translateService = inject(TranslateService);\n currentLang = this.translateService.currentLang;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { ColorPickerModule } from 'primeng/colorpicker';\n\n@Component({\n selector: 'phoenix-meta-color-picker',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n ColorPickerModule,\n FormsModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-colorPicker\n [attr.data-cy]=\"'color-picker-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (onChange)=\"onChanged(value)\"\n [disabled]=\"disable\"\n ></p-colorPicker>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .p-inputswitch {\n margin-top: 12px;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaColorPickerComponent),\n multi: true,\n },\n ],\n})\nexport class MetaColorPickerComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-currency',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n InputTextModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n InputNumberModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-inputNumber\n [attr.data-cy]=\"'currency-' + control?.id\"\n #myInput\n [style.display]=\"control.hidden ? 'none' : 'block'\"\n mode=\"currency\"\n inputId=\"currency-germany\"\n currency=\"EUR\"\n locale=\"de-DE\"\n [min]=\"10\"\n [(ngModel)]=\"value\"\n (input)=\"input($event)\"\n (ngModelChange)=\"changeValue($event)\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n class=\"w-full\"\n [style]=\"{ width: '100%' }\"\n >\n </p-inputNumber>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host ::ng-deep p-inputnumber input {\n width: 100% !important;\n box-sizing: border-box;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCurrencyComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCurrencyComponent extends BaseMetaField {\n changeValue(data: any) {\n this.parentForm.controls[this.control?.configuration?.key].setValue(data);\n }\n input(data: any) {\n const number = this.convertCurrencyStringToNumber(data.target.value);\n this.parentForm.controls[this.control?.configuration?.key].setValue(number);\n }\n\n convertCurrencyStringToNumber(currencyString: string) {\n // Remove dots for thousands separators\n const stringWithoutDots = currencyString.replace(/\\./g, '');\n\n // Replace comma with dot for decimal separator\n const stringWithDotDecimal = stringWithoutDots.replace(',', '.');\n\n // Parse the string into a number\n const numericValue = parseFloat(stringWithDotDecimal);\n\n return numericValue;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'phoenix-meta-multiple-select',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MultiSelectModule,\n FormsModule,\n MetaLabelComponent,\n InlineFieldError,\n TranslateModule,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-multiSelect\n [attr.data-cy]=\"'multiSelect-' + control?.id\"\n [hidden]=\"control?.hidden\"\n (onChange)=\"onChanged(value)\"\n (onSelectAllChange)=\"onChanged(value)\"\n [(ngModel)]=\"value\"\n [options]=\"control.configuration.options\"\n optionLabel=\"userFriendlyMessage\"\n [filter]=\"control.configuration?.filter\"\n [style]=\"{ width: '100%' }\"\n [disabled]=\"disable\"\n appendTo=\"body\"\n [showHeader]=\"false\"\n ></p-multiSelect>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaMultipleSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MetaMultipleSelectComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { KeyFilterModule } from 'primeng/keyfilter';\n// import { LanguageParamResolverPipe, Regex } from '@phoenix/util/util-common';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'phoenix-meta-number-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputNumberModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n InputTextModule,\n // LanguageParamResolverPipe,\n ],\n template: `\n <div [hidden]=\"control?.hidden\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-inputNumber\n [attr.data-cy]=\"'input-number-' + control?.id\"\n [(ngModel)]=\"value\"\n (onInput)=\"onChanged(getInputValue($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n [useGrouping]=\"false\"\n [min]=\"1\"\n class=\"w-full\"\n [style]=\"{ width: '100%' }\"\n >\n </p-inputNumber>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [``],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaNumberComponent),\n multi: true,\n },\n ],\n})\nexport class MetaNumberComponent extends BaseMetaField {\n // public regex = Regex;\n lang = inject(TranslateService).currentLang;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { PasswordModule } from 'primeng/password';\n@Component({\n selector: 'phoenix-meta-password-feild',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n InputSwitchModule,\n FormsModule,\n PasswordModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-password\n [attr.data-cy]=\"'password-' + control?.id\"\n [disabled]=\"disable\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n [feedback]=\"false\"\n (input)=\"onChanged(getInputValue($event))\"\n class=\"ng-invalid ng-dirty\"\n ></p-password>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .p-component {\n width: 100%;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaPasswordFeildComponent),\n multi: true,\n },\n ],\n})\nexport class MetaPasswordFeildComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { SelectButtonModule } from 'primeng/selectbutton';\n\n@Component({\n selector: 'phoenix-meta-select-button',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n FormsModule,\n SelectButtonModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n <p-selectButton\n [attr.data-cy]=\"'select-button-' + control?.id\"\n [options]=\"control.configuration.options\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n [disabled]=\"disable\"\n (onChange)=\"onChanged(value)\"\n optionLabel=\"userFriendlyMessage\"\n optionValue=\"value\"\n ></p-selectButton>\n\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSelectButtonComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSelectButtonComponent extends BaseMetaField {}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'translateDropdownData',\n standalone: true,\n})\nexport class TranslateDropdownData implements PipeTransform {\n protected translateService = inject(TranslateService);\n transform(data: any, paramName: string): any {\n let arr: any = [];\n paramName\n ? data?.forEach((item: any) => {\n const obj = item;\n obj[paramName] = item[paramName]\n ? this.translateService.instant(item[paramName])\n : paramName;\n arr.push(obj);\n })\n : (arr = data);\n\n return arr;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport { DropdownModule } from 'primeng/dropdown';\n\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { ImageModule } from 'primeng/image';\nimport { debounceTime, of, switchMap } from 'rxjs';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { TranslateDropdownData } from '../../utils/translate-dropdown-data.pipe';\n\n@Component({\n selector: 'phoenix-meta-single-select-object-based',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DropdownModule,\n MetaLabelComponent,\n FormsModule,\n TranslateModule,\n TranslateDropdownData,\n ImageModule,\n InlineFieldError,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-dropdown\n [attr.data-cy]=\"'single-select-ob' + control?.id\"\n [hidden]=\"control?.hidden\"\n filterBy=\"value\"\n [optionLabel]=\"oiKey\"\n [options]=\"\n control.configuration.options | translateDropdownData : 'value'\n \"\n [showClear]=\"control.configuration?.showClear\"\n [(ngModel)]=\"value\"\n [style]=\"{ width: '100%' }\"\n [disabled]=\"disable || control?.disable\"\n [filter]=\"control.configuration?.filter\"\n [group]=\"control.configuration.group\"\n (onClear)=\"onDateClear()\"\n (onChange)=\"onChanged(value)\"\n [panelStyle]=\"{ width: '100%' }\"\n appendTo=\"body\"\n >\n <ng-template let-option pTemplate=\"group\">\n <div class=\"flex align-items-center\">\n <span class=\"font-bold ml-2\">{{ option.value }}</span>\n </div>\n </ng-template>\n\n <ng-template let-data pTemplate=\"selectedItem\">\n <div class=\"flex align-items-center gap-2\" *ngIf=\"data\">\n <div>{{ data?.[oiKey] }}</div>\n </div>\n </ng-template>\n\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex\">\n <i *ngIf=\"option.icon\" [ngClass]=\"option.icon\" class=\"mr-1\"></i>\n <div>\n {{ option?.value }}\n </div>\n </div>\n </ng-template>\n </p-dropdown>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSingleSelectObjectBasedComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSingleSelectObjectBasedComponent extends BaseMetaField {\n public oiKey: string = 'value';\n\n onDateClear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n\n constructor() {\n super();\n this.changeSubs$ = this.changeSub\n .asObservable()\n .pipe(\n debounceTime(500),\n switchMap((item) => {\n return of(item);\n })\n )\n .subscribe((trigg: boolean) => {\n if (trigg) {\n this.changes();\n }\n });\n }\n\n override ngOnInit(): void {\n this.changes();\n }\n\n changes(): void {\n let soi = this.control.configuration.options?.[0];\n\n ///set default property on options items for metaform model\n if (!this.parentForm.get(this.control.configuration.key)?.value) {\n this.control.configuration.options?.forEach((o: any, i: number) => {\n /////standardize DEFAULT VALUES for OptionItems THROGH METAFORMS. remove this conditions\n if (o.update?.default || o.default) {\n soi = this.control.configuration.options[i];\n this.parentForm.get(this.control.configuration.key)?.setValue(soi);\n }\n });\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ImageModule } from 'primeng/image';\nimport { SelectModule } from 'primeng/select';\nimport { debounceTime, of, switchMap } from 'rxjs';\n\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { TranslateDropdownData } from '../../utils/translate-dropdown-data.pipe';\n\n@Component({\n selector: 'phoenix-meta-single-select',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MetaLabelComponent,\n SelectModule,\n FormsModule,\n TranslateModule,\n TranslateDropdownData,\n ImageModule,\n InlineFieldError,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n <p-select\n [attr.data-cy]=\"'single-select-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [optionLabel]=\"flagMode ? 'viewName' : oiKey ? oiKey : 'labelKeyValEn'\"\n [optionValue]=\"flagMode ? 'original' : undefined\"\n [options]=\"\n flagMode\n ? flagOptions\n : (control.configuration.options\n | translateDropdownData : (oiKey ? oiKey : 'labelKeyValEn'))\n \"\n [dataKey]=\"flagMode ? 'key' : dataKeyProp\"\n [filter]=\"control.configuration.options.length > 15\"\n [filterFields]=\"\n flagMode\n ? [\n 'viewName',\n 'viewCode',\n 'original.userFriendlyMessage',\n 'original.key'\n ]\n : undefined\n \"\n [showClear]=\"control.configuration?.showClear\"\n [(ngModel)]=\"value\"\n [style]=\"{ width: '100%' }\"\n [disabled]=\"disable || control?.disable\"\n [group]=\"control.configuration.group\"\n (onClear)=\"onDateClear()\"\n (onChange)=\"onChanged($event.value)\"\n [panelStyle]=\"{ width: '100%' }\"\n appendTo=\"body\"\n >\n <!-- Optional group header -->\n <ng-template let-option pTemplate=\"group\">\n <div class=\"flex align-items-center\">\n <i [class]=\"option.icon\"></i>\n <span class=\"font-bold ml-2\">{{ option.label }}</span>\n </div>\n </ng-template>\n\n <!-- Selected value (in flag mode 'data' is ORIGINAL object) -->\n <ng-template let-data pTemplate=\"selectedItem\">\n <div class=\"flex align-items-center gap-2\" *ngIf=\"data\">\n <img\n *ngIf=\"flagMode && (data.key || data.code)\"\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + (data.key || data.code).toLowerCase()\"\n style=\"width:22px\"\n alt=\"\"\n />\n <img\n *ngIf=\"!flagMode && data?.image\"\n [src]=\"data.image\"\n height=\"17\"\n width=\"20\"\n alt=\"\"\n />\n <div>\n {{ flagMode\n ? (data.userFriendlyMessage || data.name || data['labelKeyValEn'])\n : (data?.[oiKey] ? data?.[oiKey] : data?.['labelKeyValEn']) }}\n </div>\n </div>\n </ng-template>\n\n <!-- Dropdown list item (in flag mode 'option' is the VIEW-MODEL) -->\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex align-items-center gap-2\">\n <img\n *ngIf=\"flagMode && option.viewCode\"\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + option.viewCode.toLowerCase()\"\n style=\"width:22px\"\n alt=\"\"\n />\n <img\n *ngIf=\"!flagMode && option?.image\"\n [src]=\"option.image\"\n height=\"20\"\n width=\"20\"\n alt=\"\"\n />\n <div>\n {{ flagMode\n ? option.viewName\n : (option?.[oiKey] ? option?.[oiKey] : option?.['labelKeyValEn']) }}\n </div>\n </div>\n </ng-template>\n </p-select>\n\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSingleSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSingleSelectComponent extends BaseMetaField {\n /** Label key used in legacy mode */\n public oiKey!: string;\n\n /** True = render flags + search; value remains original { key, userFriendlyMessage } */\n public flagMode = false;\n\n /**\n * In flag mode, we feed a VIEW list that merges the original option with view fields:\n * { ...original, viewName, viewCode, original } and select by 'original'.\n */\n public flagOptions: Array<\n { viewName: string; viewCode: string; original: any } & any\n > = [];\n\n private translateService = inject(TranslateService);\n\n onDateClear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n\n constructor() {\n super();\n this.changeSubs$ = this.changeSub\n .asObservable()\n .pipe(\n debounceTime(300),\n switchMap((x) => of(x))\n )\n .subscribe((trigg: boolean) => {\n if (trigg) this.changes();\n });\n }\n\n override ngOnInit(): void {\n this.changes();\n }\n\n /** dataKey for legacy mode; lets PrimeNG match value to option by a stable field */\n get dataKeyProp(): string | undefined {\n const opts = this.control?.configuration?.options ?? [];\n const sample = opts[0] || {};\n if ('key' in sample) return 'key';\n if ('value' in sample) return 'value';\n return undefined;\n }\n\n /** Initialize/normalize options and current value */\n changes(): void {\n this.flagMode = !!this.control?.configuration?.flagMode;\n\n if (this.flagMode) {\n const currentLang = this.translateService.currentLang || 'en';\n const source = this.control.configuration.options || [];\n\n // Merge original option + view fields; keep original shape for the model\n this.flagOptions = source\n .map((o: any) => {\n const viewName =\n o.userFriendlyMessage ?? o.name ?? o['labelKeyValEn'] ?? '';\n const viewCode = (\n o.key ??\n o.code ??\n o.iso2 ??\n o.value ??\n ''\n ).toString();\n return { ...o, viewName, viewCode, original: o };\n })\n .filter(\n (vm: { viewName: any; viewCode: any }) => vm.viewName && vm.viewCode\n )\n .sort((a: { viewName: string }, b: { viewName: any }) =>\n a.viewName.localeCompare(b.viewName, currentLang, {\n sensitivity: 'base',\n })\n );\n\n // Normalize current value so the select can display it:\n // - if backend sent 'DE' (string) → find matching option by key/code and set the ORIGINAL object\n // - if backend sent { code:'DE', name:'Germany' } → map to ORIGINAL, or minimally to {key,userFriendlyMessage}\n const v = this.value;\n if (typeof v === 'string' && v) {\n const found = this.flagOptions.find(\n (o) =>\n (o.key && o.key.toLowerCase() === v.toLowerCase()) ||\n (o.viewCode && o.viewCode.toLowerCase() === v.toLowerCase())\n );\n if (found) {\n this.value = found.original;\n this.onChanged?.(this.value);\n }\n } else if (\n v &&\n typeof v === 'object' &&\n !('key' in v) &&\n ('code' in v || 'value' in v)\n ) {\n const key = (v.key ?? v.code ?? v.value ?? '').toString();\n const found = this.flagOptions.find(\n (o) =>\n (o.key && o.key.toLowerCase() === key.toLowerCase()) ||\n (o.viewCode && o.viewCode.toLowerCase() === key.toLowerCase())\n );\n if (found) {\n this.value = found.original;\n this.onChanged?.(this.value);\n } else {\n // fallback minimal normalization\n this.value = {\n key,\n userFriendlyMessage:\n v.userFriendlyMessage ?? v.name ?? v['labelKeyValEn'] ?? '',\n };\n this.onChanged?.(this.value);\n }\n }\n return;\n }\n\n // Legacy (no flags): keep previous behavior\n this.oiKey = 'userFriendlyMessage';\n const currentLang = this.translateService.currentLang;\n let soi = this.control.configuration.options?.[0];\n\n if (\n this.control.mandatory &&\n this.control.configuration.options?.length === 1\n ) {\n this.parentForm\n .get(this.control.configuration.key)\n ?.setValue(this.control.configuration.options[0]);\n }\n\n if (!this.parentForm.get(this.control.configuration.key)?.value) {\n this.control.configuration.options?.forEach((o: any, i: number) => {\n if (o.update?.default || o.default) {\n soi = this.control.configuration.options[i];\n this.parentForm.get(this.control.configuration.key)?.setValue(soi);\n }\n });\n }\n\n if (soi?.labelKeyValEn) {\n this.oiKey =\n 'labelKeyVal' +\n currentLang.charAt(0).toUpperCase() +\n currentLang.slice(1);\n return;\n }\n if (soi?.userFriendlyMessage) {\n this.oiKey = 'userFriendlyMessage';\n return;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Input,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DatePickerModule } from 'primeng/datepicker';\n\n@Component({\n selector: 'phoenix-meta-start-due-date',\n standalone: true,\n imports: [\n DatePickerModule,\n InlineFieldError,\n ReactiveFormsModule,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n ],\n template: `\n <div [hidden]=\"control?.hidden\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <div class=\"flex\">\n <div class=\"flex-grow-1\">\n <p-datepicker\n [attr.data-cy]=\"'start-date-' + control?.id\"\n (onSelect)=\"onStartDateSelect($event)\"\n (onClearClick)=\"onStartDateClear()\"\n [style]=\"{ width: '100%' }\"\n [(ngModel)]=\"startDate\"\n [readonlyInput]=\"true\"\n [showButtonBar]=\"true\"\n [showIcon]=\"true\"\n [placeholder]=\"'LABELS.PLANNED_START' | translate\"\n appendTo=\"body\"\n ></p-datepicker>\n </div>\n <div class=\" flex align-items-center p-2 \">\n <i\n class=\"pi pi-arrow-right text-sm\"\n style=\"color: 'var(--surface-600)'\"\n ></i>\n </div>\n <div class=\"flex-grow-1\">\n <p-datepicker\n [attr.data-cy]=\"'due-date-' + control?.id\"\n (onSelect)=\"onEndDateSelect($event)\"\n (onClearClick)=\"onEndDateClear()\"\n [style]=\"{ width: '100%' }\"\n [(ngModel)]=\"endDate\"\n [readonlyInput]=\"true\"\n [showButtonBar]=\"true\"\n [showIcon]=\"true\"\n [placeholder]=\"'LABELS.PLANNED_END' | translate\"\n appendTo=\"body\"\n ></p-datepicker>\n </div>\n </div>\n <phoenix-inline-field-error [ctrl]=\"ctrl\"></phoenix-inline-field-error>\n </div>\n `,\n styles: [``],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaStartDueDateComponent),\n multi: true,\n },\n ],\n})\nexport class MetaStartDueDateComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n ctrl: any;\n private readonly dr = inject(DestroyRef);\n startDate?: any;\n endDate?: any;\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n\n constructor() {}\n\n ngOnInit() {\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n\n if (this.control.mandatory) this.ctrl.setValidators(this.ctrl.validator);\n\n this.parentForm\n .get(this.control.configuration.key)\n ?.valueChanges.pipe(takeUntilDestroyed(this.dr))\n .subscribe((r) => {\n this.validateDates();\n });\n\n this.validateDates();\n }\n\n writeValue(obj: any): void {\n if (obj) {\n this.startDate = obj.startDate;\n this.endDate = obj.endDate;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n }\n\n // Handle start date selection\n onStartDateSelect(event: any) {\n this.startDate = event;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n // Handle end date selection\n onEndDateSelect(event: any) {\n this.endDate = event;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n // Handle start date clear value\n onStartDateClear() {\n this.startDate = null;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n // Handle end date clear value\n onEndDateClear() {\n this.endDate = null;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n validateDates() {\n //Both dates are mandatory\n if (this.control.mandatory && (!this.startDate || !this.endDate)) {\n this.parentForm\n .get(this.control.configuration.key)\n ?.setErrors({ required: true });\n } else {\n this.parentForm.get(this.control.configuration.key)?.setErrors(null);\n }\n\n // End date must be after start date\n if (\n this.startDate &&\n this.endDate &&\n this.startDate.setHours(0, 0, 0, 0) > this.endDate.setHours(0, 0, 0, 0)\n ) {\n this.parentForm\n .get(this.control.configuration.key)\n ?.setErrors({ dueDate: true });\n }\n\n //TBD: Scenario if only one date is mandatory\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChanged = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-switch',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n InputSwitchModule,\n FormsModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-inputSwitch\n [attr.data-cy]=\"'switch-' + control?.id\"\n class=\"ml-1 mr-1\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (onChange)=\"onChanged(value)\"\n [disabled]=\"disable\"\n ></p-inputSwitch>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .p-inputswitch {\n margin-top: 12px;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSwitchComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSwitchComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { TextareaModule } from 'primeng/textarea';\n\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-text-area',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TextareaModule,\n MetaLabelComponent,\n TranslateModule,\n InlineFieldError,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <textarea\n [attr.data-cy]=\"'text-area-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (input)=\"onChanged(getInputValue($event))\"\n [disabled]=\"disable\"\n (blur)=\"onTouched()\"\n [rows]=\"5\"\n [cols]=\"30\"\n pTextarea\n class=\"w-full h-10rem\"\n ></textarea>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTextAreaComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTextAreaComponent extends BaseMetaField {\n lang = inject(TranslateService).currentLang;\n private stripHtmlTags(input: string): string {\n if (!input) return '';\n // Replace <br> tags (and variations) with a temporary placeholder\n const placeholder = '___BR_TAG_PLACEHOLDER___';\n const brPattern = /<br\\s*\\/?>/gi;\n let textWithPlaceholders = input.replace(brPattern, placeholder);\n\n // Replace closing block-level tags with placeholder + newline for better formatting\n const blockTags = ['p', 'div', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n blockTags.forEach((tag) => {\n const closingTagPattern = new RegExp(`</${tag}>`, 'gi');\n textWithPlaceholders = textWithPlaceholders.replace(\n closingTagPattern,\n placeholder\n );\n });\n\n // Strip all remaining HTML tags\n const textWithoutHtml = textWithPlaceholders.replace(/<\\/?[^>]+(>|$)/g, '');\n\n // Decode HTML entities\n const decodedText = this.decodeHtmlEntities(textWithoutHtml);\n\n // Replace placeholder back with newline characters for textarea\n // Clean up multiple consecutive newlines (max 2)\n return decodedText\n .replace(new RegExp(placeholder, 'g'), '\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n }\n\n private decodeHtmlEntities(text: string): string {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value;\n }\n\n override writeValue(value: string): void {\n // Clean HTML before assigning\n this.value = this.stripHtmlTags(value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport {\n NgxEditorComponent,\n NgxEditorMenuComponent,\n Editor,\n toHTML,\n toDoc,\n Toolbar,\n schema,\n} from 'ngx-editor';\nimport { ButtonModule } from 'primeng/button';\nimport { TextareaModule } from 'primeng/textarea';\nimport { Schema } from 'prosemirror-model';\n\n// Create a custom schema that extends the default ngx-editor schema\n// to support the 'type' attribute on ordered lists\nfunction createCustomSchema(): Schema {\n const baseSchema = schema;\n const customNodes = baseSchema.spec.nodes.update('ordered_list', {\n ...baseSchema.spec.nodes.get('ordered_list'),\n attrs: {\n order: { default: 1 },\n type: { default: null }, // Add support for type attribute (1, a, A, i, I)\n },\n parseDOM: [\n {\n tag: 'ol',\n getAttrs: (dom: HTMLElement | string) => {\n if (typeof dom === 'string') return null;\n return {\n order: dom.hasAttribute('start')\n ? parseInt(dom.getAttribute('start') || '1', 10)\n : 1,\n type: dom.getAttribute('type') || null,\n };\n },\n },\n ],\n toDOM: (node: any) => {\n const attrs: any = { order: node.attrs.order };\n if (node.attrs.type) {\n attrs.type = node.attrs.type;\n }\n return ['ol', attrs, 0];\n },\n });\n\n return new Schema({\n nodes: customNodes,\n marks: baseSchema.spec.marks,\n });\n}\n\n@Component({\n selector: 'phoenix-meta-text-editor',\n standalone: true,\n imports: [\n CommonModule,\n MetaLabelComponent,\n ReactiveFormsModule,\n FormsModule,\n InlineFieldError,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n ButtonModule,\n TextareaModule,\n ],\n template: `\n <div [hidden]=\"control?.hidden\">\n <!-- Preview/Display Only Mode -->\n <div *ngIf=\"previewMode\" class=\"preview-mode\">\n <phoenix-meta-label\n *ngIf=\"!hideLabel\"\n [control]=\"control\"\n ></phoenix-meta-label>\n <div class=\"html-preview-content\" [innerHTML]=\"htmlContent\"></div>\n </div>\n\n <!-- Edit Mode -->\n <div *ngIf=\"!previewMode\">\n <div class=\"mb-2\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n </div>\n <div [attr.data-cy]=\"'editor-' + control?.id\">\n <!-- Visual Editor Mode -->\n <div *ngIf=\"!isHtmlMode\">\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"toolbar\"\n ></ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [(ngModel)]=\"htmlContent\"\n [disabled]=\"disable\"\n (ngModelChange)=\"onEditorChange($event)\"\n (blur)=\"onTouched()\"\n ></ngx-editor>\n </div>\n\n <!-- HTML Source Mode -->\n <textarea\n *ngIf=\"isHtmlMode\"\n pTextarea\n [(ngModel)]=\"htmlContent\"\n [disabled]=\"disable\"\n (ngModelChange)=\"onHtmlChange($event)\"\n (blur)=\"onTouched()\"\n [rows]=\"10\"\n class=\"w-full font-monospace\"\n ></textarea>\n </div>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .NgxEditor__Wrapper {\n min-height: 120px;\n }\n .NgxEditor__Content {\n min-height: 120px;\n }\n /* remove import image if needed */\n .NgxEditor__MenuItem--IconContainer[title='Insert Image'] {\n display: none !important;\n }\n\n .font-monospace {\n font-family: 'Courier New', Courier, monospace;\n font-size: 13px;\n }\n\n .html-preview-content {\n padding: 0.75rem;\n background: var(--surface-ground);\n border: 1px solid var(--surface-border);\n border-radius: var(--border-radius);\n min-height: 50px;\n\n /* Style the rendered HTML content */\n p {\n margin: 0 0 0.5rem 0;\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n\n ul,\n ol {\n margin: 0.5rem 0;\n padding-left: 1.5rem;\n }\n\n strong {\n font-weight: bold;\n }\n\n em {\n font-style: italic;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0.5rem 0;\n }\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTextEditorComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTextEditorComponent\n extends BaseMetaField\n implements OnInit, OnDestroy\n{\n @Input() previewMode: boolean = false;\n @Input() hideLabel: boolean = false;\n\n editor!: Editor;\n isHtmlMode = false;\n htmlContent: string = '';\n\n toolbar: Toolbar = [\n ['bold', 'italic'],\n ['underline', 'strike'],\n ['code', 'blockquote'],\n ['ordered_list', 'bullet_list'],\n [{ heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }],\n ['link'],\n ['text_color', 'background_color'],\n ['align_left', 'align_center', 'align_right', 'align_justify'],\n ];\n\n override ngOnInit(): void {\n super.ngOnInit();\n // Only initialize editor if not in preview mode\n if (!this.previewMode) {\n this.editor = new Editor({\n schema: createCustomSchema(),\n keyboardShortcuts: true,\n history: true,\n inputRules: true,\n });\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n // Only destroy editor if it was initialized\n if (this.editor) {\n this.editor.destroy();\n }\n }\n\n override writeValue(value: string): void {\n this.value = value;\n this.htmlContent = this.removeLinks(value || '');\n }\n\n @HostListener('document:keydown', ['$event'])\n handleToggleShortcut(event: KeyboardEvent): void {\n // Hidden shortcut: Ctrl/Cmd + Shift + H\n const usesToggleKey =\n (event.ctrlKey || event.metaKey) &&\n event.shiftKey &&\n event.key.toLowerCase() === 'h';\n\n if (!usesToggleKey || this.previewMode || this.disable) {\n return;\n }\n\n event.preventDefault();\n this.toggleHtmlMode();\n }\n\n onEditorChange(content: any): void {\n // Convert to HTML if the editor outputs a JSON doc object\n if (content && typeof content === 'object') {\n this.htmlContent = toHTML(content);\n } else {\n this.htmlContent = content || '';\n }\n this.htmlContent = this.removeLinks(this.htmlContent);\n this.value = this.htmlContent;\n this.onChanged(this.htmlContent);\n }\n\n onHtmlChange(html: string): void {\n this.htmlContent = this.removeLinks(html);\n this.value = this.htmlContent;\n this.onChanged(this.htmlContent);\n }\n\n toggleHtmlMode(): void {\n this.isHtmlMode = !this.isHtmlMode;\n }\n\n private removeLinks(html: string): string {\n if (!html) {\n return '';\n }\n // Unwrap only anchor links (href starting with '#') while keeping their text\n return html.replace(\n /<a\\b[^>]*href\\s*=\\s*[\"']?#([^\"']*)[\"'][^>]*>(.*?)<\\/a>/gis,\n '$2'\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { InputTextModule } from 'primeng/inputtext';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-text-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <input\n [attr.data-cy]=\"'input-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (input)=\"onChanged(getInputValue($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n type=\"text\"\n pInputText\n class=\"w-full\"\n />\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [``],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTextInputComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTextInputComponent extends BaseMetaField {\n lang = inject(TranslateService).currentLang;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef, inject } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { InputTextModule } from 'primeng/inputtext';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { timePeriodFromMS } from '../../utils/form-fields.utils';\n\n@Component({\n selector: 'phoenix-meta-timeperiod',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <input\n [attr.data-cy]=\"'time-period-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [value]=\"value\"\n (input)=\"onChanged(getInputValue($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"isDisabled\"\n type=\"text\"\n pInputText\n class=\"w-full\"\n />\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTimeperiodComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTimeperiodComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n value!: string;\n ctrl: any;\n\n ngOnInit() {\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n }\n\n public onChanged!: (value: string) => void;\n public onTouched!: () => void;\n public isDisabled!: boolean;\n getInputValue(event: Event): string {\n if (event.target instanceof HTMLInputElement) {\n return event.target.value;\n }\n if (event.target instanceof HTMLTextAreaElement) {\n return event.target.value;\n }\n return '';\n }\n writeValue(value: string | number | null | undefined): void {\n if (value === null || value === undefined || value === '') {\n this.value = '';\n return;\n }\n\n this.value = typeof value === 'string' ? value : timePeriodFromMS(value);\n }\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean) {\n this.isDisabled = isDisabled;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { KeyFilterModule } from 'primeng/keyfilter';\n\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'phoenix-meta-upload',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n\n FileUploadModule,\n ButtonModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-button\n [label]=\"\n file?.name\n ? ('LABELS.SELECTED_FILE' | translate) + ': ' + file?.name\n : (control?.configuration?.label | translate)\n \"\n icon=\"pi pi-upload\"\n class=\" white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n (click)=\"triggerFileInput()\"\n [text]=\"true\"\n />\n\n <input\n [attr.data-cy]=\"'upload-' + control?.id\"\n #fileInput\n [accept]=\"control?.configuration?.accept\"\n id=\"file-upload\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (input)=\"onChanged(this.fileChange($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n [pKeyFilter]=\"\"\n type=\"file\"\n pInputText\n class=\"w-full\"\n />\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n input[type='file'] {\n display: none;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaUploadComponent),\n multi: true,\n },\n ],\n})\nexport class MetaUploadComponent extends BaseMetaField {\n @ViewChild('fileInput') fileInput!: ElementRef;\n\n lang = inject(TranslateService).currentLang;\n file: any;\n fileChange(event: any) {\n this.file = event.target.files[0];\n return this.file;\n }\n\n triggerFileInput() {\n this.fileInput.nativeElement.click();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'fieldCol',\n standalone: true,\n})\nexport class FieldColPipe implements PipeTransform {\n transform(value: any, ...args: unknown[]): string {\n if (value.style) {\n return `col-${value.style.colWidth} `;\n } else {\n return 'col-12';\n }\n }\n}\n","export enum GlobalPhase {\n SC_PHASE = 'sc',\n RA_PHASE = 'ra',\n PRA_PHASE = 'pra',\n IA_PHASE = 'ia',\n GAP_PHASE = 'gap',\n ADMINISTRATION_PHASE = 'administration',\n WF_PHASE = 'workflow',\n REPORT_PHASE = 'reporting',\n MY_TASKS = 'my-tasks',\n ALL_TASKS = 'all-tasks',\n TASKBOARD = 'taskboards',\n SPACES = 'spaces',\n CATALOG = 'catalog',\n CATEGORIES = 'categories',\n DASHBOARD = 'dashboard',\n MONITORING = 'monitoring',\n RISK_OVERVIEW = 'RISK_OVERVIEW',\n}\n","export class SoTypes {\n static readonly COMPL_APPLIED_MODULE = 'COMPL_APPLIED_MODULE';\n static readonly COMPL_APPLIED_MEASURE = 'COMPL_APPLIED_MEASURE';\n static readonly COMPL_APPLIED_REQUIREMENT = 'COMPL_APPLIED_REQUIREMENT';\n static readonly COMPL_APPLIED_THREAT = 'COMPL_APPLIED_THREAT';\n static readonly COMPL_APPLIED_RISK = 'COMPL_APPLIED_RISK';\n static readonly COMPL_APPLIED_CONTROL = 'COMPL_APPLIED_CONTROL';\n\n static resolveUrlType(typeLabelKey: SoTypes | string) {\n switch (typeLabelKey) {\n case SoTypes.COMPL_APPLIED_MODULE:\n return SoTypesString.MODULES;\n case SoTypes.COMPL_APPLIED_CONTROL:\n return SoTypesString.CONTROLS;\n case SoTypes.COMPL_APPLIED_REQUIREMENT:\n return SoTypesString.REQUIREMENTS;\n case SoTypes.COMPL_APPLIED_MEASURE:\n return SoTypesString.MEASURES;\n case SoTypes.COMPL_APPLIED_THREAT:\n return SoTypesString.THREATS;\n case SoTypes.COMPL_APPLIED_RISK:\n return SoTypesString.RISKS;\n case 'COMPL_RISK_OBJECT':\n return SoTypesString.RISKS;\n default:\n return SoTypesString.MODULES;\n }\n }\n\n static resolveUrlTypeByString(stringType: SoTypesString | string) {\n switch (stringType) {\n case SoTypesString.MODULES:\n return SoTypes.COMPL_APPLIED_MODULE;\n case SoTypesString.CONTROLS:\n return SoTypes.COMPL_APPLIED_CONTROL;\n case SoTypesString.REQUIREMENTS:\n return SoTypes.COMPL_APPLIED_REQUIREMENT;\n case SoTypesString.MEASURES:\n return SoTypes.COMPL_APPLIED_MEASURE;\n case SoTypesString.THREATS:\n return SoTypes.COMPL_APPLIED_THREAT;\n case SoTypesString.RISKS:\n return SoTypes.COMPL_APPLIED_RISK;\n default:\n return SoTypes.COMPL_APPLIED_MODULE;\n }\n }\n}\n\nexport enum SoTypesString {\n MODULES = 'modules',\n REQUIREMENTS = 'requirements',\n MEASURES = 'measures',\n THREATS = 'threats',\n RISKS = 'risks',\n VULNERABILITIES = 'vulnerabilities',\n DAMAGE_SCENARIO = 'damagescenarios',\n RISK_TREATMENT = 'risktreatments',\n CONTROLS = 'controls',\n ADDITIONAL_MEASURES = 'additionalmeasures',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'stripHtml',\n standalone: true,\n})\nexport class StripHtmlPipe implements PipeTransform {\n transform(value: string | null | undefined): string {\n if (!value) return '';\n return value.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n}","import {\n AfterViewInit,\n Component,\n DestroyRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { FormGroup, FormsModule } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { InputSwitchModule } from 'primeng/inputswitch';\n// import { SerachCardComponent } from '@phoenix/ui/ui-common';\n// import { DateFormatService } from '@phoenix/service/common';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { distinctUntilChanged } from 'rxjs';\nimport { PasswordModule } from 'primeng/password';\nimport { SelectButtonModule } from 'primeng/selectbutton';\n\n// import { SearchResult } from '@phoenix/model-meta';\n// import { EnvService } from '@phoenix/environment';\n// import { TransformAttributeTypesService } from '@phoenix/service/isms';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { ButtonModule } from 'primeng/button';\nimport { GlobalPhase } from '../../utils/global-phase.utils';\nimport { SoTypes } from '../../utils/so-types';\nimport { getLanguageParam } from '../../utils/lang.utils';\nimport { ControlType } from '../../utils/control-type.enum';\nimport { timePeriodFromMS } from '../../utils/form-fields.utils';\nimport { StripHtmlPipe } from '../../utils/strip-html.pipe';\n\n@Component({\n selector: 'phoenix-read-only-input',\n standalone: true,\n imports: [\n CommonModule,\n MetaLabelComponent,\n InputSwitchModule,\n FormsModule,\n // SerachCardComponent,\n CheckboxModule,\n PasswordModule,\n TranslateModule,\n SelectButtonModule,\n OverlayPanelModule,\n PanelModule,\n ButtonModule,\n StripHtmlPipe,\n ],\n templateUrl: './read-only-input.component.html',\n styleUrls: ['./read-only-input.component.scss'],\n})\nexport class ReadOnlyInputComponent implements OnInit, AfterViewInit {\n @Input() control: any;\n @Input() metaform!: FormGroup;\n value!: any;\n ctrlType = ControlType;\n\n constructor(\n private sanitizer: DomSanitizer,\n private translateService: TranslateService,\n private dr: DestroyRef // private envService: EnvService, // private transformAtService: TransformAttributeTypesService\n ) {}\n\n ngAfterViewInit(): void {\n this.metaform\n .get(this.control.configuration.key)\n ?.valueChanges.pipe(takeUntilDestroyed(this.dr), distinctUntilChanged())\n .subscribe(() => {\n this.setData();\n });\n }\n\n ngOnInit() {\n this.setData();\n }\n\n resolvePhase(type: string) {\n switch (type) {\n case SoTypes.COMPL_APPLIED_THREAT:\n case SoTypes.COMPL_APPLIED_MEASURE:\n case SoTypes.COMPL_APPLIED_MODULE:\n case SoTypes.COMPL_APPLIED_REQUIREMENT:\n case SoTypes.COMPL_APPLIED_CONTROL:\n return GlobalPhase.SC_PHASE;\n case SoTypes.COMPL_APPLIED_THREAT:\n case 'COMPL_RISK_OBJECT':\n return GlobalPhase.RA_PHASE;\n case 'CVE':\n return 'CVE';\n default:\n return GlobalPhase.IA_PHASE;\n }\n }\n\n setData(): void {\n switch (this.control.configuration.type) {\n case ControlType.CURRENCY:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n case ControlType.SS_OPTION:\n const data = this.metaform.get(this.control.configuration.key)?.value;\n if (!data) {\n this.value = null;\n break;\n }\n\n if (this.control.configuration.flagMode) {\n this.value = {\n key: data.key ?? data.code,\n userFriendlyMessage:\n data.userFriendlyMessage ?? data.name ?? data['labelKeyValEn'],\n };\n } else {\n const formattedLang =\n localStorage.getItem('language')!.charAt(0).toUpperCase() +\n localStorage.getItem('language')!.slice(1).toLowerCase();\n const val = data?.[`labelKeyVal${formattedLang}`];\n if (val) {\n this.value = val;\n } else {\n this.value = data?.userFriendlyMessage;\n }\n }\n break;\n case ControlType.MS_OPTION:\n const values = this.metaform.get(this.control.configuration.key)?.value;\n const maxItems = 4;\n if (values?.length) {\n this.value =\n values?.length <= maxItems\n ? values.map((v: any) => v.userFriendlyMessage).join(', ')\n : values\n .slice(0, maxItems)\n .map((v: any) => v.userFriendlyMessage)\n .join(', ') + ' ...';\n } else {\n const values = '';\n }\n\n break;\n\n case ControlType.DATE:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n case ControlType.START_DUE_DATE:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n case ControlType.LINKS_DATA:\n this.value = this.control?.data?.task?.links;\n break;\n\n case ControlType.TIMEPERIOD:\n const formValue = this.metaform.get(\n this.control.configuration.key\n )?.value;\n const convertedValue =\n typeof formValue === 'string'\n ? formValue\n : timePeriodFromMS(formValue);\n\n this.value = convertedValue;\n break;\n\n case ControlType.TEXT_AREA:\n const textAreaContent = this.metaform.get(\n this.control.configuration.key\n )?.value;\n if (textAreaContent) {\n this.value = this.stripHtmlTags(textAreaContent);\n } else {\n this.value = null;\n }\n break;\n\n // case ControlType.TEXT_EDITOR:\n // const htmlContent = this.metaform.get(\n // this.control.configuration.key\n // )?.value;\n // if (htmlContent?.replace(/<\\/?[^>]+(>|$)/g, '')) {\n // this.value = htmlContent;\n // } else {\n // this.value = null;\n // }\n // break;\n case ControlType.SWITCH:\n this.value = {\n isBoolean:\n typeof this.metaform.get(this.control.configuration.key)?.value ===\n 'boolean',\n res: this.metaform.get(this.control.configuration.key)?.value,\n };\n break;\n default:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n }\n }\n\n private stripHtmlTags(input: string): string {\n if (!input) return '';\n // Replace <br> tags (and variations) with a temporary placeholder\n const placeholder = '___BR_TAG_PLACEHOLDER___';\n const brPattern = /<br\\s*\\/?>/gi;\n let textWithPlaceholders = input.replace(brPattern, placeholder);\n\n // Replace closing block-level tags with placeholder + newline for better formatting\n const blockTags = ['p', 'div', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n blockTags.forEach((tag) => {\n const closingTagPattern = new RegExp(`</${tag}>`, 'gi');\n textWithPlaceholders = textWithPlaceholders.replace(\n closingTagPattern,\n placeholder\n );\n });\n\n // Strip all remaining HTML tags\n const textWithoutHtml = textWithPlaceholders.replace(/<\\/?[^>]+(>|$)/g, '');\n\n // Decode HTML entities\n const decodedText = this.decodeHtmlEntities(textWithoutHtml);\n\n // Replace placeholder back with newline characters\n // Clean up multiple consecutive newlines (max 2)\n return decodedText\n .replace(new RegExp(placeholder, 'g'), '\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n }\n\n private decodeHtmlEntities(text: string): string {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value;\n }\n}\n","<phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n<ng-container [ngSwitch]=\"control.configuration.type\">\n <ng-container *ngSwitchCase=\"ctrlType.TEXT_EDITOR\">\n <div\n [attr.data-cy]=\"'editor-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"read-only-editor-content\"\n [innerHTML]=\"value\"\n ></div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.TEXT_AREA\">\n <div\n class=\"w-full mt-3 mb-2 font-semibold text-500 whitespace-pre-line\"\n [attr.data-cy]=\"'textarea-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [innerText]=\"value\"\n ></div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ctrlType.SWITCH\">\n <p-inputSwitch\n [attr.data-cy]=\"'switch-' + control?.id\"\n *ngIf=\"value?.isBoolean; else fallBack\"\n styleClass=\"mt-2 ml-1 mr-1\"\n [disabled]=\"true\"\n [(ngModel)]=\"value.res\"\n ></p-inputSwitch>\n </ng-container>\n <ng-container *ngSwitchCase=\"ctrlType.DATE\">\n <div\n [attr.data-cy]=\"'date-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value | date }}\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.START_DUE_DATE\">\n <div\n [attr.data-cy]=\"'date-' + control?.id\"\n *ngIf=\"value?.startDate; else fallBack\"\n class=\"flex font-semibold text-500 mt-3 mb-2\"\n >\n <span style=\"padding-top: 3px\">{{ value.startDate | date }}</span>\n <div class=\"flex align-items-center p-2\">\n <i\n class=\"pi pi-arrow-right text-sm\"\n style=\"color: 'var(--surface-600)'\"\n ></i>\n </div>\n <span style=\"padding-top: 3px\">{{ value.endDate | date }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.CHECKBOX\">\n <p-checkbox\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n styleClass=\"mt-3\"\n [(ngModel)]=\"value\"\n [binary]=\"true\"\n inputId=\"binary\"\n [disabled]=\"true\"\n ></p-checkbox>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.LINKS_DATA\">\n <div\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2 overflow-y-auto\"\n [attr.data-cy]=\"'link-' + control?.id\"\n >\n <ng-container *ngFor=\"let item of value\">\n <span class=\"m-2 text-sm font-light\">{{ item?.relationLabel }}</span>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ctrlType.ASSIGN\">\n <div\n *ngIf=\"value?.name; else fallBack\"\n [attr.data-cy]=\"'number-' + control?.id\"\n >\n <div>\n <p-button [rounded]=\"true\" [text]=\"true\" (onClick)=\"op.toggle($event)\">\n <div class=\"person-wrap\">\n <div class=\"person-avatar\">\n {{ value?.name?.toUpperCase().charAt(0) }}\n </div>\n <div>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{ value?.name }}\n </p>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{ value?.function }}\n </p>\n </div>\n </div></p-button\n >\n <p-overlayPanel #op>\n <div>\n <span class=\"block mb-2\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{ value.email ?? \" --\" }}\n </span>\n <p>\n <i class=\"pi pi-phone mr-1 text-500\"></i\n >{{ value.phone ?? \" --\" }}\n </p>\n </div></p-overlayPanel\n >\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.CURRENCY\">\n <div\n [attr.data-cy]=\"'currency-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value }}&nbsp; &#8364;\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.PASSWORD\">\n <div\n [attr.data-cy]=\"'password-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n <p-password\n class=\"ng-invalid ng-dirty\"\n [disabled]=\"true\"\n [(ngModel)]=\"value\"\n [feedback]=\"false\"\n ></p-password>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.SS_OPTION_OBJECT_BASED\">\n <div\n [attr.data-cy]=\"'SS-OPTION-OBJECT-BASED-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value.value }}\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.MS_OPTION\">\n <div\n [attr.data-cy]=\"'MS-OPTION-OBJECT-BASED-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2 white-space-nowrap overflow-hidden\"\n >\n {{ value }}\n </div>\n </ng-container>\n\n <!-- Remove this if necessary - spaces-overview GENERAL form contol -->\n <ng-container *ngSwitchCase=\"ctrlType.SS_OPTION\">\n <!-- Flag mode -->\n <ng-container *ngIf=\"control?.configuration?.flagMode; else ssOptionLegacy\">\n <div\n [attr.data-cy]=\"'SS-OPTION-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2 flex align-items-center gap-2\"\n >\n <img\n *ngIf=\"value?.key\"\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + value.key.toLowerCase()\"\n style=\"width: 22px\"\n alt=\"\"\n />\n <span>{{ value.userFriendlyMessage }}</span>\n </div>\n </ng-container>\n\n <!-- Legacy -->\n <ng-template #ssOptionLegacy>\n <div\n [attr.data-cy]=\"'SS-OPTION-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value | translate }}\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.NUMBER\">\n <div\n [attr.data-cy]=\"'number-' + control?.id\"\n *ngIf=\"value != null; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value }}\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <div\n [attr.data-cy]=\"'test-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value | stripHtml }}\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #fallBack>\n <div\n [attr.data-cy]=\"'test-' + control?.id\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n --\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef, inject } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n// import { Assignee } from '@phoenix/model-meta';\n// import { PhoenixDialogService } from '@phoenix/service/common';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { ObjectItemDialogComponent } from '../object-item-dialog/object-item-dialog.component';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Assignee } from '../../../../models/assignee.model';\nimport { tableColumnType } from '../../../data-table/utils/dataTable.enum';\n\n@Component({\n selector: 'phoenix-meta-assign-asset',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n MetaLabelComponent,\n TranslateModule,\n OverlayPanelModule,\n PanelModule,\n ],\n template: `\n <div [style.display]=\"control.hidden ? 'none' : 'block'\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <div\n [attr.data-cy]=\"'assign-' + control?.id\"\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n class=\"flex align-items-center\"\n >\n <div>\n <p-button\n [rounded]=\"true\"\n [text]=\"true\"\n (onClick)=\"op.toggle($event)\"\n >\n <div class=\"person-wrap\">\n <div class=\"person-avatar\">\n {{\n parentForm.controls[\n this.control.configuration.key\n ].value?.name?.charAt(0)\n }}\n </div>\n <div>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.name\n }}\n </p>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.title\n }}\n </p>\n </div>\n </div></p-button\n >\n <p-overlayPanel #op>\n <div>\n <span class=\"block mb-2\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.email ?? ' --'\n }}\n </span>\n <p>\n <i class=\"pi pi-phone mr-1 text-500\"></i\n >{{\n parentForm.controls[this.control.configuration.key].value\n ?.phone ?? ' --'\n }}\n </p>\n </div></p-overlayPanel\n >\n </div>\n\n <div style=\"paddingBottom:4px\">\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n styleClass=\"p-button-sm mt-1\"\n type=\"button\"\n [text]=\"true\"\n label=\"{{ 'ACTION.REASSIGN' | translate }}\"\n (click)=\"assignAsset()\"\n ></p-button>\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n type=\"button\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n [text]=\"true\"\n styleClass=\"p-button-danger p-button-sm mt-1 ml-2\"\n ></p-button>\n </div>\n </div>\n <p-button\n *ngIf=\"\n !(\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n )\n \"\n type=\"button\"\n icon=\"pi pi-user-plus\"\n styleClass=\"p-button-sm mt-1\"\n label=\"{{ 'ACTION.ASSIGN' | translate }}\"\n (click)=\"assignAsset()\"\n [text]=\"true\"\n ></p-button>\n </div>\n `,\n styles: [\n `\n .person-wrap {\n display: flex;\n align-items: center;\n\n margin-left: -6px;\n\n & p {\n margin: 0;\n }\n\n .person-avatar {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 28px;\n height: 28px;\n min-width: 28px;\n min-height: 28px;\n margin-right: 5px;\n background-color: rgb(233, 66, 96);\n color: white;\n border-radius: 50%;\n /* font-weight: 800; */\n font-size: 1rem;\n }\n .person-name :first-child {\n font-size: 1rem;\n }\n }\n\n .person-details {\n border-top: 1px solid #e0e0e0;\n padding: 5px;\n margin-left: -6px;\n width: 150px;\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n i {\n color: #e94260;\n padding-right: 5px;\n }\n\n .p-editor-container {\n padding-left: 0 !important;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaAssignAssetComponent),\n multi: true,\n },\n ],\n})\nexport class MetaAssignAssetComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n @Input() disable?: boolean;\n\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n public isDisabled!: boolean;\n writeValue(value: any): void {}\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean) {\n this.isDisabled = isDisabled;\n }\n // private phoenixDialog = inject(PhoenixDialogService);\n private translateService = inject(TranslateService);\n private dialogService = inject(DialogService);\n person!: any;\n clear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n assignAsset() {\n const ref = this.dialogService.open(ObjectItemDialogComponent, {\n header: this.translateService.instant('LABELS.ASSIGN_ASSET_GROUP'),\n width: '700px',\n height: '400px',\n modal: true,\n data: {\n tableData: this.control.configuration.items,\n columns: [\n {\n field: 'name',\n header: 'LABELS.Name',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'title',\n header: 'LABELS.TITLE',\n columnType: tableColumnType.TEXT,\n },\n // {\n // field: 'phone',\n // header: 'Phone',\n // columnType: tableColumnType.TEXT,\n // },\n // {\n // field: 'email',\n // header: 'Email',\n // columnType: tableColumnType.TEXT,\n // },\n ],\n },\n contentStyle: { overflow: 'auto' },\n draggable: true,\n closable: true,\n });\n\n ref.onClose.subscribe((response: any) => {\n if (response) {\n this.person = response;\n this.parentForm.controls[this.control.configuration.key].setValue(\n response\n );\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { KeyFilterModule } from 'primeng/keyfilter';\n\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'phoenix-meta-upload-dragdrop',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n FileUploadModule,\n ButtonModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-fileUpload\n [attr.data-cy]=\"'upload-' + control?.id\"\n #fileInput\n [multiple]=\"false\"\n [accept]=\"control?.configuration?.accept\"\n maxFileSize=\"10485760\"\n styleClass=\"mb-3\"\n [hidden]=\"control?.hidden\"\n [showUploadButton]=\"false\"\n [showCancelButton]=\"false\"\n [disabled]=\"disable\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear()\"\n [chooseLabel]=\"'LABELS.BROWSE' | translate\"\n chooseIcon=\"pi pi-upload\"\n >\n <ng-template\n #header\n let-files\n let-chooseCallback=\"chooseCallback\"\n let-clearCallback=\"clearCallback\"\n let-uploadCallback=\"uploadCallback\"\n >\n <div class=\"flex justify-content-center w-full\">\n <p-button\n (onClick)=\"choose($event, chooseCallback)\"\n icon=\"pi pi-upload\"\n [label]=\"\n file?.name\n ? ('LABELS.SELECTED_FILE' | translate) + ': ' + file?.name\n : ('LABELS.BROWSE' | translate)\n \"\n severity=\"secondary\"\n />\n </div>\n </ng-template>\n <ng-template #empty>\n @if(ctrl.value){\n <div class=\"flex align-items-center justify-content-between\t w-full\">\n <div>\n <div>{{ ctrl.value['fileName'] }}</div>\n <div>{{ ctrl.value['size'] }} KB</div>\n </div>\n <p-button\n icon=\"pi pi-times\"\n [rounded]=\"true\"\n [text]=\"true\"\n severity=\"danger\"\n (onClick)=\"onFileRemove($event)\"\n />\n </div>\n\n } @else{\n <div class=\"text-center\">\n <div>\n <i\n style=\"font-size: 55px; opacity: 0.2\"\n class=\"pi pi-cloud-upload\"\n ></i>\n <p class=\"\">\n {{ 'PLACEHOLDERS.DRAG_AND_DROP_MESSAGE' | translate }}\n </p>\n </div>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n input[type='file'] {\n display: none;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaUploadComponentDragDrop),\n multi: true,\n },\n ],\n})\nexport class MetaUploadComponentDragDrop extends BaseMetaField {\n @ViewChild('fileInput') fileInput!: ElementRef;\n fakeFile: any;\n\n createFakeFile(\n fileName: string,\n size: number,\n type: string = 'application/pdf'\n ): File {\n const emptyBuffer = new ArrayBuffer(size);\n const blob = new Blob([emptyBuffer], { type });\n\n return new File([blob], fileName, {\n type: type,\n lastModified: Date.now(),\n });\n }\n\n choose(event: any, callback: any) {\n callback();\n }\n\n ngAfterViewInit() {\n const { fileName, size, type } = this.ctrl.value;\n\n this.fakeFile = this.createFakeFile(fileName, size, type);\n\n this.file = this.fakeFile;\n }\n\n onFileSelect(event: any) {\n const selectedFile = event.files?.[0] || event.currentFiles?.[0];\n\n if (selectedFile) {\n this.file = selectedFile;\n\n this.onChanged(selectedFile);\n this.onTouched();\n }\n }\n\n onFileRemove(event: any) {\n this.file = null;\n this.onChanged(null);\n this.onTouched();\n }\n\n onFileClear() {\n this.file = null;\n this.onChanged(null);\n this.onTouched();\n }\n\n lang = inject(TranslateService).currentLang;\n file: any;\n\n // Keep this method for consistency, though it's not directly used in drag-drop\n fileChange(event: any) {\n this.file = event.target.files[0];\n\n return this.file;\n }\n\n triggerFileInput() {\n this.fileInput.nativeElement.click();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\n///Meta Fields\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { EditorModule } from 'primeng/editor';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaFormAbstract } from './meta-form-abstract';\nimport { MetaAssignResponsibleComponent } from './meta-form-fields/meta-assign-responsible/meta-assign-responsible.component';\nimport { MetaCalendarComponent } from './meta-form-fields/meta-calendar/meta-calendar.component';\nimport { MetaCheckboxColorPickerComponent } from './meta-form-fields/meta-checkbox-color-picker/meta-checkbox-color-picker.component';\nimport { MetaCheckboxComponent } from './meta-form-fields/meta-checkbox/meta-checkbox.component';\nimport { MetaColorPickerComponent } from './meta-form-fields/meta-color-picker/meta-color-picker.component';\nimport { MetaCurrencyComponent } from './meta-form-fields/meta-currency/meta-currency.component';\nimport { MetaMultipleSelectComponent } from './meta-form-fields/meta-multiple-select/meta-multiple-select.component';\nimport { MetaNumberComponent } from './meta-form-fields/meta-number-input/meta-number-input.component';\nimport { MetaPasswordFeildComponent } from './meta-form-fields/meta-password-feild/meta-password-feild.component';\nimport { MetaSelectButtonComponent } from './meta-form-fields/meta-select-button/meta-select-button.component';\nimport { MetaSingleSelectObjectBasedComponent } from './meta-form-fields/meta-single-select-object-based/meta-single-select-object_based.component';\nimport { MetaSingleSelectComponent } from './meta-form-fields/meta-single-select/meta-single-select.component';\nimport { MetaStartDueDateComponent } from './meta-form-fields/meta-start-due-date/meta-start-due-date.component';\nimport { MetaSwitchComponent } from './meta-form-fields/meta-switch/meta-switch.component';\nimport { MetaTextAreaComponent } from './meta-form-fields/meta-text-area/meta-text-area.component';\nimport { MetaTextEditorComponent } from './meta-form-fields/meta-text-editor/meta-text-editor.component';\nimport { MetaTextInputComponent } from './meta-form-fields/meta-text-input/meta-text-input.component';\nimport { MetaTimeperiodComponent } from './meta-form-fields/meta-timeperiod/meta-timeperiod.component';\nimport { MetaUploadComponent } from './meta-form-fields/meta-upload/meta-upload.component';\n\nimport { FieldColPipe } from './utils/field-col.pipe';\nimport { MetaFormService } from './services/meta-form.service';\nimport { HttpClient } from '@angular/common/http';\nimport { ControlType } from './utils/control-type.enum';\nimport { ReadOnlyInputComponent } from './meta-form-templates/read-only-input/read-only-input.component';\nimport { MetaAssignAssetComponent } from './meta-form-fields/meta-assign-asset/meta-assign-asset.component';\nimport { MetaUploadComponentDragDrop } from './meta-form-fields/meta-upload-dragdrop/meta-upload-dragdrop.component';\n\n@Component({\n selector: 'phoenix-meta-form',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n InputTextModule,\n InputTextModule,\n CalendarModule,\n DropdownModule,\n ButtonModule,\n MultiSelectModule,\n TranslateModule,\n CheckboxModule,\n EditorModule,\n FieldColPipe,\n //metafields -> to one module and than import here\n MetaTextEditorComponent,\n MetaCheckboxComponent,\n MetaTextInputComponent,\n MetaSingleSelectComponent,\n MetaStartDueDateComponent,\n MetaTextAreaComponent,\n MetaTextEditorComponent,\n MetaMultipleSelectComponent,\n MetaCalendarComponent,\n MetaUploadComponentDragDrop,\n MetaSwitchComponent,\n MetaPasswordFeildComponent,\n MetaTimeperiodComponent,\n MetaCurrencyComponent,\n MetaNumberComponent,\n MetaAssignResponsibleComponent,\n MetaAssignAssetComponent,\n MetaColorPickerComponent,\n PanelModule,\n ReadOnlyInputComponent,\n MetaSelectButtonComponent,\n MetaUploadComponent,\n MetaSingleSelectObjectBasedComponent,\n MetaCheckboxColorPickerComponent,\n ],\n templateUrl: './meta-form.component.html',\n styleUrls: ['./meta-form.component.scss'],\n //changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MetaFormComponent extends MetaFormAbstract implements OnChanges {\n constructor(\n fb: FormBuilder,\n metaService: MetaFormService,\n\n translateService: TranslateService,\n http: HttpClient\n // env: EnvService\n ) {\n super(fb, metaService, translateService, http);\n }\n\n public ControlType = ControlType;\n optionLabel!: string;\n\n ngOnChanges(simpleChanges: SimpleChanges): void {\n ///set dirty only when metaform changes, not others from simplechanges\n ///optimize this. check what is needed for creating form\n\n if (\n simpleChanges?.['metaFormControls'] ||\n simpleChanges?.['metaFormValues'] ||\n simpleChanges?.['metaForm']\n ) {\n this.createForm(this.metaFormControls);\n this.metaService.setFormDirtyStatus(this.metaForm.dirty);\n }\n }\n}\n","<form [formGroup]=\"metaForm\" (ngSubmit)=\"onSubmit()\">\n <!-- <small>{{ metaForm.value | json }}</small> -->\n <div class=\"grid\">\n <ng-container *ngFor=\"let control of metaFormControls\">\n <ng-container [ngSwitch]=\"control.configuration.type\">\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'text-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-text-input>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.NUMBER\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'number-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-number-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-number-input>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TIMEPERIOD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'timeperiod-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-timeperiod\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-timeperiod>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CURRENCY\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'currency-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-currency\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-currency>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_AREA\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'text-area-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-area\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-area>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'ss-option-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION_OBJECT_BASED\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'ss-option-object-based-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select-object-based\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select-object-based>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.MS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'ms-option-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-multiple-select\n [attr.data-cy]=\"'multiSelect-' + control?.id\"\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-multiple-select>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.START_DUE_DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'start-due-date-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-start-due-date\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-start-due-date>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'date-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-calendar\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-calendar>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_EDITOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'text-editor-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-editor\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-editor>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CHECKBOX\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column justify-content-end\"\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-checkbox\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-checkbox>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CHECKBOX_COLOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column justify-content-end\"\n [attr.data-cy]=\"'CHECKBOX_COLOR-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-checkbox-color-picker\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-checkbox-color-picker>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SWITCH\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'switch-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-switch\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-switch>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SELECT_BUTTON\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'select-button-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-select-button\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-select-button>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-responsible\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-responsible>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN_ASSET\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-asset\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-asset>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.LINKS_DATA\"\n [ngClass]=\"control | fieldCol\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'links-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <!-- <phoenix-meta-object-links\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-object-links> -->\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.PASSWORD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'password-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-password-feild\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-password-feild>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.COLOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'color-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-color-picker\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-color-picker>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD\"\n [attr.data-cy]=\"'upload-' + control?.id\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD_DRAG_DROP\"\n [attr.data-cy]=\"'upload-' + control?.id\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload-dragdrop\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload-dragdrop>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n <ng-content\n *ngSwitchCase=\"ControlType.SLOT\"\n [select]=\"[control.configuration.key]\"\n ></ng-content>\n </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"formButtons\" class=\"flex justify-content-end\">\n <p-button\n class=\"mr-1\"\n [disabled]=\"!metaForm.valid || disableForm\"\n type=\"submit\"\n label=\"{{ 'ACTION.SAVE' | translate }}\"\n [attr.data-cy]=\"'submit-button'\"\n [loading]=\"loading\"\n ></p-button>\n <p-button\n [disabled]=\"disableForm\"\n styleClass=\"p-button-link\"\n [text]=\"true\"\n (onClick)=\"onCancel()\"\n label=\"{{ 'ACTION.CANCEL' | translate }}\"\n [attr.data-cy]=\"'cancel-button'\"\n ></p-button>\n </div>\n</form>\n","import {\n Component,\n EventEmitter,\n input,\n Input,\n model,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { Observable, combineLatest, Subscription } from 'rxjs';\nimport { MetaFormService } from '../services/meta-form.service';\n\n@Component({\n selector: 'phoenix-meta-form-buttons',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n CheckboxModule,\n FormsModule,\n ],\n templateUrl: './meta-form-buttons.component.html',\n styleUrls: ['./meta-form-buttons.component.scss'],\n providers: [],\n})\nexport class MetaFormButtonsComponent implements OnInit, OnDestroy {\n isDisabled = input<boolean>();\n isCreateAnother = input<boolean>(false);\n isLoading = input<boolean>(false);\n\n @Output() handleSave = new EventEmitter<any>();\n @Output() handleCancel = new EventEmitter<any>();\n\n display!: boolean;\n formActive$!: Observable<boolean>;\n createAnother!: boolean;\n sub$!: Subscription;\n\n constructor(private metaFormService: MetaFormService) {\n this.formActive$ = this.metaFormService.formReadOnlyState;\n }\n ngOnInit(): void {\n this.sub$ = combineLatest([\n this.metaFormService.currentFormTabContent,\n this.metaFormService.formReadOnlyState,\n ]).subscribe((r) => {\n let [formTabContent, formReadOnlyStatus] = r;\n if (formTabContent === 'FORM' && !formReadOnlyStatus) {\n this.display = true;\n } else {\n this.display = false;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.sub$?.unsubscribe();\n }\n}\n","<!-- <ng-template *ngIf=\"formActive$ | async as formState\" pTemplate=\"footer\">\n <div *ngIf=\"!formState\" class=\"flex justify-content-end p-2\"> -->\n<div *ngIf=\"display\" class=\"flex justify-content-end p-2\">\n <p-checkbox\n *ngIf=\"isCreateAnother()\"\n id=\"dialog-buttons-checkbox\"\n data-cy=\"dialog-buttons-checkbox-cy\"\n [(ngModel)]=\"createAnother\"\n [binary]=\"true\"\n inputId=\"binary\"\n class=\"mr-3\"\n ></p-checkbox>\n\n <button\n class=\"mr-2\"\n pButton\n [disabled]=\"isDisabled()\"\n [loading]=\"isLoading()\"\n (click)=\"handleSave.emit({ isAnother: createAnother })\"\n [attr.data-cy]=\"'submit-button'\"\n >\n <span class=\"mx-1\">{{ \"ACTION.SAVE\" | translate }}</span>\n </button>\n\n <p-button\n [text]=\"true\"\n (click)=\"handleCancel.emit('CANCEL')\"\n [attr.data-cy]=\"'cancel-button'\"\n >\n {{ \"ACTION.CANCEL\" | translate }}\n </p-button>\n</div>\n<!-- </div>\n</ng-template> -->\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { EditorModule } from 'primeng/editor';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessagesModule } from 'primeng/messages';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaFormAbstract } from '../../meta-form-abstract';\nimport { MetaAssignResponsibleComponent } from '../../meta-form-fields/meta-assign-responsible/meta-assign-responsible.component';\nimport { MetaCalendarComponent } from '../../meta-form-fields/meta-calendar/meta-calendar.component';\nimport { MetaCheckboxComponent } from '../../meta-form-fields/meta-checkbox/meta-checkbox.component';\nimport { MetaCurrencyComponent } from '../../meta-form-fields/meta-currency/meta-currency.component';\nimport { MetaMultipleSelectComponent } from '../../meta-form-fields/meta-multiple-select/meta-multiple-select.component';\nimport { MetaNumberComponent } from '../../meta-form-fields/meta-number-input/meta-number-input.component';\nimport { MetaPasswordFeildComponent } from '../../meta-form-fields/meta-password-feild/meta-password-feild.component';\nimport { MetaSingleSelectObjectBasedComponent } from '../../meta-form-fields/meta-single-select-object-based/meta-single-select-object_based.component';\nimport { MetaSingleSelectComponent } from '../../meta-form-fields/meta-single-select/meta-single-select.component';\nimport { MetaStartDueDateComponent } from '../../meta-form-fields/meta-start-due-date/meta-start-due-date.component';\nimport { MetaSwitchComponent } from '../../meta-form-fields/meta-switch/meta-switch.component';\nimport { MetaTextAreaComponent } from '../../meta-form-fields/meta-text-area/meta-text-area.component';\nimport { MetaTextEditorComponent } from '../../meta-form-fields/meta-text-editor/meta-text-editor.component';\nimport { MetaTextInputComponent } from '../../meta-form-fields/meta-text-input/meta-text-input.component';\nimport { MetaTimeperiodComponent } from '../../meta-form-fields/meta-timeperiod/meta-timeperiod.component';\nimport { FieldColPipe } from '../../utils/field-col.pipe';\nimport { ReadOnlyInputComponent } from '../read-only-input/read-only-input.component';\nimport { ControlType } from '../../utils/control-type.enum';\nimport { AccordionModule } from 'primeng/accordion';\nimport { MetaAssignAssetComponent } from '../../meta-form-fields/meta-assign-asset/meta-assign-asset.component';\nimport { MetaUploadComponentDragDrop } from '../../meta-form-fields/meta-upload-dragdrop/meta-upload-dragdrop.component';\nimport { MetaUploadComponent } from '../../meta-form-fields/meta-upload/meta-upload.component';\n\n@Component({\n selector: 'phoenix-groups-form',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n InputTextModule,\n // InputTextareaModule,\n CalendarModule,\n DropdownModule,\n ButtonModule,\n MultiSelectModule,\n TranslateModule,\n CheckboxModule,\n EditorModule,\n FieldColPipe,\n MetaTextEditorComponent,\n MetaCheckboxComponent,\n MetaTextInputComponent,\n MetaSingleSelectComponent,\n MetaStartDueDateComponent,\n MetaTextAreaComponent,\n MetaTextEditorComponent,\n MetaMultipleSelectComponent,\n MetaCalendarComponent,\n MetaUploadComponentDragDrop,\n AccordionModule,\n // MetaObjectLinksComponent,\n MetaSwitchComponent,\n MetaPasswordFeildComponent,\n MetaTimeperiodComponent,\n MetaCurrencyComponent,\n MetaNumberComponent,\n MetaAssignResponsibleComponent,\n MetaAssignAssetComponent,\n PanelModule,\n ReadOnlyInputComponent,\n MessagesModule,\n MetaSingleSelectObjectBasedComponent,\n MetaUploadComponent,\n ],\n templateUrl: './groups-form.component.html',\n styleUrls: ['./groups-form.component.css'],\n})\nexport class GroupsFormComponent extends MetaFormAbstract implements OnChanges {\n @Input() activePanelsIndex: number[] = [0, 1, 2, 3];\n public ControlType = ControlType;\n optionLabel!: string;\n notiffication?: any;\n private trans = inject(TranslateService);\n\n ngOnChanges(simpleChanges?: SimpleChanges): void {\n if (\n simpleChanges?.['metaFormControls'] ||\n simpleChanges?.['metaFormValues'] ||\n simpleChanges?.['metaForm']\n ) {\n const mergedArr = this.metaFormControls.flatMap((ob: any) => ob.ctrl);\n this.createForm(mergedArr);\n this.metaService.setFormDirtyStatus(this.metaForm.dirty);\n }\n }\n}\n","<p-accordion [multiple]=\"true\" [(value)]=\"activePanelsIndex\">\n <form *ngIf=\"metaFormControls\" [formGroup]=\"metaForm\" (ngSubmit)=\"onSubmit()\">\n @for ( group of metaFormControls; track group.groupName; let idx = $index){\n <div [style]=\"{ order: group.order }\" class=\"w-full\">\n <p-accordion-panel\n [value]=\"idx\"\n [attr.data-cy]=\"'table-accordion-header-' + group.groupName\"\n >\n <p-accordion-header>\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i class=\"pi pi-minus-circle\"></i>\n } @else {\n <i class=\"pi pi-plus-circle\"></i>\n\n }\n </ng-template>\n {{ group.groupName | translate }}\n </p-accordion-header>\n <p-accordion-content>\n <div [style]=\"formStyle\" class=\"grid align-items-end\">\n <ng-container *ngFor=\"let control of group.ctrl\">\n <ng-container [ngSwitch]=\"control.configuration.type\">\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-text-input>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.NUMBER\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-number-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-number-input>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TIMEPERIOD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-timeperiod\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-timeperiod>\n </ng-template>\n </div>\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CURRENCY\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-currency\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-currency>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_AREA\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-area\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-area>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION_OBJECT_BASED\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select-object-based\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select-object-based>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.MS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-multiple-select\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-multiple-select>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.START_DUE_DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-start-due-date\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-start-due-date>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-calendar\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-calendar>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_EDITOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-editor\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-editor>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CHECKBOX\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <phoenix-meta-checkbox\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-checkbox>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SWITCH\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-switch\n [disable]=\"true\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-switch>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-responsible\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-responsible>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN_ASSET\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-asset\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-asset>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD\"\n [attr.data-cy]=\"'upload-' + control?.id\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD_DRAG_DROP\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload-dragdrop\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload-dragdrop>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.LINKS_DATA\"\n [ngClass]=\"control | fieldCol\"\n class=\"flex flex-column\"\n >\n <!-- <phoenix-meta-object-links\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-object-links> -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.PASSWORD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <phoenix-meta-password-feild\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-password-feild>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </p-accordion-content>\n </p-accordion-panel>\n </div>\n }\n </form>\n</p-accordion>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'textLength',\n standalone: true,\n})\nexport class TextLength implements PipeTransform {\n /**\n * Transforms the specified text value\n * If the size of the string is greater than the limit, it returns a substring of the desired size, and adds ellipsis \"...\"\n * If the size of the string is less than the limit, it returns the original string\n * @param value\n * @param limit\n */\n\n transform(value: string, limit: number) {\n if (value?.length > limit) {\n return value.substring(0, limit) + ' ...';\n }\n return value;\n }\n}\n","// export type StatusColType = \"LIST\" | \"TAG\" | \"DATE_LIST\" | \"DATE\" | \"STRING\" | \"ACTION\" | \"OWNER\" | \"PERSON\";\n\nexport enum StatusColType {\n TAG = 'TAG',\n STRING = 'STRING',\n PERSON = 'PERSON',\n LINK = 'LINK',\n DATE = 'DATE',\n LIST = 'LIST',\n COUNTRY = 'COUNTRY',\n}","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'phoenix-tag',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n})\nexport class TagComponent implements OnChanges {\n @Input() key!: string;\n @Input() content!: string;\n @Input() customColor!: string;\n\n color: string | undefined;\n customStyle!: {\n 'background-color': string;\n border: string;\n color: string;\n };\n\n ngOnChanges(): void {\n if (this.customColor) {\n this.customStyle = {\n 'background-color': this.customColor,\n border: this.invertHex(this.customColor),\n color: 'white',\n //color: this.invertHex(this.customColor),\n };\n }\n }\n\n invertHex(hex: string) {\n if (hex.indexOf('#') === 0) {\n hex = hex.slice(1);\n }\n\n if (hex.length != 6) {\n console.warn('Hex color must be six hex numbers in length.');\n return '#' + hex;\n }\n\n hex = hex.toUpperCase();\n const splitNum: any = hex.split('');\n let resultNum = '';\n const simpleNum = 'FEDCBA9876'.split('');\n const complexNum: any = {\n A: '5',\n B: '4',\n C: '3',\n D: '2',\n E: '1',\n F: '0',\n };\n\n for (let i = 0; i < 6; i++) {\n if (!isNaN(Number(splitNum[i]))) {\n resultNum += simpleNum[splitNum[i]];\n } else if (complexNum[splitNum[i]]) {\n resultNum += complexNum[splitNum[i]];\n } else {\n console.warn('Hex colors must only include hex numbers 0-9, and A-F');\n return '#' + hex;\n }\n }\n\n return '#' + resultNum;\n }\n}\n","<ng-container>\n <span [class]=\"'phoenix-tag '\" [ngStyle]=\"customStyle\" [attr.data-cy]=\"'tag'\">\n {{ content | translate }}\n </span>\n</ng-container>\n\n<!-- class=\"text-800\" style color depends on theme -->\n","import { StatusColType } from '../enums/status-col-type.enum';\n\nexport enum StatusTooltipType {\n TAG = 'TAG',\n STRING = 'STRING',\n PERSON = 'PERSON',\n LINK = 'LINK',\n DATE = 'DATE',\n DATE_PERSON = 'DATE_PERSON',\n}\n\nexport interface StatusTooltipItem {\n label: string;\n value: string | null;\n type: StatusTooltipType;\n value1?: string;\n value2?: string;\n}\n\nexport interface StatusAttribute {\n type: StatusColType;\n label: string;\n value: any;\n dateFormat?: string;\n // Specific to TAG\n key?: string;\n color?: string;\n\n //Specific to url with icon\n icon?: string;\n // Specific to PERSON\n value1?: string;\n\n tooltip?: StatusTooltipItem[];\n\n url?: string;\n\n // Specific to LIST\n item?:\n | {\n name: string;\n url?: string;\n disabled?: boolean;\n }[]\n | string\n | null;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AvatarModule } from 'primeng/avatar';\nimport { PopoverModule } from 'primeng/popover';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TagComponent } from '../tag/tag.component';\nimport {\n StatusAttribute,\n StatusTooltipType,\n} from './models/status-attribute.model';\nimport { TextLength } from './pipes/text-length.pipe';\n\n@Component({\n selector: 'phoenix-status-attribute-display',\n standalone: true,\n templateUrl: './status-attribute-display.component.html',\n styleUrls: ['./status-bar.component.scss'],\n imports: [\n CommonModule,\n TooltipModule,\n PopoverModule,\n TagComponent,\n TranslateModule,\n AvatarModule,\n TextLength,\n ],\n})\nexport class StatusAttributeDisplayComponent {\n @Input() attr!: StatusAttribute;\n @Input() dateFormat = 'dd.MM.yyyy | HH:mm';\n\n @Output() listItemClick = new EventEmitter<any>();\n\n statusTooltipType = StatusTooltipType;\n\n getFullUrl(path: string): string {\n if (path.startsWith('http')) return path;\n return '/' + path.replace(/^\\/+/, '');\n }\n\n isMultiWordLabel(label: string | undefined | null): boolean {\n return label ? label.trim().split(/\\s+/).length > 2 : false;\n }\n\n getPersonName(attr: any): string {\n const first = (attr?.value || '').trim();\n const last = (attr?.value1 || '').trim();\n return [first, last].filter(Boolean).join(' ');\n }\n\n getPersonTooltip(attr: any): string | undefined {\n const fullName = this.getPersonName(attr);\n return fullName.length > 20 ? fullName : undefined;\n }\n\n getPersonDisplayName(attr: any): string {\n const fullName = (attr?.value || '').trim();\n return fullName.length > 20 ? fullName.slice(0, 20) + '…' : fullName;\n }\n\n getPersonInitial(attr: any): string {\n return (attr?.value?.charAt(0) || '-').toUpperCase();\n }\n}\n","<div class=\"attribute flex justify-content-start align-items-start\">\n <div class=\"flex flex-column\">\n <!-- LABEL + ICON -->\n <div class=\"flex align-items-start gap-1\">\n <label\n class=\"font-semibold text-500\"\n [ngClass]=\"{\n 'wrap-label': isMultiWordLabel(attr.label | translate),\n 'nowrap-label': !isMultiWordLabel(attr.label | translate)\n }\"\n >\n {{ attr.label | translate }}\n </label>\n <i\n [attr.data-cy]=\"'status-togg-button-item'\"\n *ngIf=\"attr?.tooltip?.length\"\n class=\"pi pi-info-circle text-blue-500 cursor-pointer\"\n style=\"font-size: 0.875rem; line-height: 1\"\n (mouseenter)=\"popover.toggle($event)\"\n (mouseleave)=\"popover.toggle($event)\"\n >\n </i>\n </div>\n\n <!-- VALUE -->\n <div\n *ngIf=\"attr?.value; else empty\"\n [ngSwitch]=\"attr.type\"\n style=\"white-space: nowrap\"\n >\n <!-- STRING -->\n <ng-container *ngSwitchCase=\"'STRING'\">\n <!-- If URL exist, render as link -->\n <a\n *ngIf=\"attr.url; else plainText\"\n [href]=\"attr.url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-blue-500 underline\"\n [pTooltip]=\"attr.value?.length > 20 ? attr.value : null\"\n >\n {{ attr.value | textLength : 20 }}\n <i class=\"ml-1\" [class]=\"attr.icon\"></i>\n </a>\n <!-- Pnly text if url doesn't exist -->\n <ng-template #plainText>\n <span [pTooltip]=\"attr.value?.length > 20 ? attr.value : null\">\n {{ attr.value | textLength : 20 }}\n </span>\n </ng-template>\n </ng-container>\n\n <!-- DATE -->\n <span *ngSwitchCase=\"'DATE'\">\n <i class=\"pi pi-calendar text-blue-900\"></i>\n {{\n attr.value\n ? (attr.value | date : attr.dateFormat ?? dateFormat)\n : \"--\"\n }}\n </span>\n\n <!-- LINK -->\n\n <a\n *ngSwitchCase=\"'LINK'\"\n [href]=\"attr.url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-blue-500 underline\"\n >\n {{ attr.value || \"--\" }} <i class=\"ml-1\" [class]=\"attr.icon\"></i>\n </a>\n\n <!-- PERSON -->\n <div\n class=\"person-wrap flex align-items-center gap-2\"\n *ngSwitchCase=\"'PERSON'\"\n >\n <div class=\"person-avatar\">\n {{ getPersonInitial(attr) }}\n </div>\n\n <div\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n [pTooltip]=\"getPersonTooltip(attr)\"\n >\n {{ getPersonDisplayName(attr) }}\n </div>\n </div>\n\n <!-- COUNTRY -->\n <span *ngSwitchCase=\"'COUNTRY'\">\n <span class=\"flex align-items-center gap-2\">\n <img\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + attr.value?.code.toLowerCase()\"\n style=\"width: 22px\"\n />\n <span\n [pTooltip]=\"attr.value?.name?.length > 20 ? attr.value?.name : null\"\n >\n {{ attr.value?.name || attr.value?.code || \"--\" }}\n </span>\n </span>\n </span>\n\n <!-- LIST -->\n <ul\n *ngSwitchCase=\"'LIST'\"\n class=\"list overflow-x-hidden\"\n style=\"margin-top: 0.25rem\"\n >\n <li\n *ngFor=\"let item of attr.value\"\n [ngClass]=\"item?.disabled ? 'disableLinks' : ''\"\n class=\"white-space-nowrap mb-1 cursor-pointer\"\n (click)=\"!item?.disabled ? listItemClick.emit(item) : null\"\n >\n <span [pTooltip]=\"item?.name?.length > 20 ? item.name : null\">\n {{ item.name | textLength : 20 }}\n </span>\n <i class=\"pi pi-link ml-1 text-sm\"></i>\n </li>\n </ul>\n\n <!-- DEFAULT -->\n <span *ngSwitchDefault [style.color]=\"attr.color\" class=\"text-xl\">\n {{ attr.value || \"--\" }}\n </span>\n </div>\n\n <ng-template #empty>\n <span>--</span>\n </ng-template>\n </div>\n</div>\n\n<p-popover #popover [style]=\"{ maxWidth: '400px' }\">\n <!-- GRID layout for all tooltip items except DATE_PERSON -->\n <div\n style=\"\n display: grid;\n grid-template-columns: max-content 1fr;\n column-gap: 1rem;\n row-gap: 0.5rem;\n align-items: start;\n width: 100%;\n \"\n >\n <ng-container *ngFor=\"let item of attr?.tooltip\">\n <ng-container *ngIf=\"item.type !== statusTooltipType.DATE_PERSON\">\n <!-- Tooltip label -->\n <div class=\"text-sm text-600 text-left\">{{ item.label }}:</div>\n\n <!-- Tooltip value rendering -->\n <div class=\"text-sm text-left break-words\">\n <ng-container [ngSwitch]=\"item?.type || statusTooltipType.TAG\">\n <!-- LINK type: renders as a clickable hyperlink if value exists -->\n <ng-container *ngSwitchCase=\"'LINK'\">\n <a\n *ngIf=\"item.value; else empty\"\n [href]=\"getFullUrl(item.value)\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-blue-500 underline\"\n >\n {{ item.label || \"Open\" }}\n </a>\n </ng-container>\n\n <!-- STRING type: renders text with truncation and tooltip if too long -->\n <ng-container *ngSwitchCase=\"statusTooltipType.STRING\">\n <div\n *ngIf=\"item.value; else empty\"\n class=\"text-sm\"\n style=\"\n white-space: normal;\n word-break: break-word;\n overflow-wrap: break-word;\n \"\n >\n {{ item.value }}\n </div>\n </ng-container>\n\n <!-- DATE type: formatted date or fallback -->\n <ng-container *ngSwitchCase=\"statusTooltipType.DATE\">\n <span *ngIf=\"item.value; else empty\">\n {{ item.value | date : dateFormat }}\n </span>\n </ng-container>\n\n <!-- PERSON type: shows initial avatar and name if value exists -->\n <ng-container *ngSwitchCase=\"statusTooltipType.PERSON\">\n <ng-container *ngIf=\"item.value; else empty\">\n <span class=\"person-wrap flex items-center gap-1 truncate\">\n <div\n class=\"person-avatar small\"\n style=\"font-size: 0.875rem; line-height: 1\"\n >\n {{ item?.value?.charAt(0)?.toUpperCase() }}\n </div>\n <span class=\"truncate\">\n {{ item.value }} {{ item.value1 }}\n </span>\n </span>\n </ng-container>\n </ng-container>\n\n <!-- TAG or unknown type: uses phoenix-tag if value exists -->\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"item.value; else empty\">\n <div class=\"flex gap-2\">\n <span> {{ item.value }} </span>\n <phoenix-tag\n [customColor]=\"item.value2 || ''\"\n [content]=\"item.value1 || ''\"\n >\n </phoenix-tag>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n <!-- Separate layout for DATE_PERSON entries (includes avatar and date) -->\n <ng-container *ngFor=\"let item of attr?.tooltip\">\n <ng-container *ngIf=\"item.type === statusTooltipType.DATE_PERSON\">\n <ng-container *ngIf=\"item.value; else emptyDatePerson\">\n <div>\n <!-- Label -->\n <div\n class=\"font-sm text-600 truncate mb-1\"\n [pTooltip]=\"item.label.length > 20 ? item.label : undefined\"\n >\n {{ item.label }}\n </div>\n <!-- Avatar and person name/date -->\n <div class=\"flex items-center gap-2 person-wrap\">\n <div class=\"person-avatar\">\n {{ item?.value?.charAt(0)?.toUpperCase() }}\n </div>\n <div>\n <div\n class=\"text-blue-800 font-sm\"\n style=\"\n word-break: break-word;\n white-space: normal;\n overflow-wrap: break-word;\n \"\n >\n {{ item.value }}\n </div>\n <div class=\"text-sm\">{{ item.value1 | date : dateFormat }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <!-- Fallback for empty DATE_PERSON -->\n <ng-template #emptyDatePerson>\n <div class=\"text-sm\">--</div>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Shared fallback for missing or empty values -->\n <ng-template #empty>\n <span>--</span>\n </ng-template>\n</p-popover>\n\n<ng-template #empty><span>--</span></ng-template>\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ImageModule } from 'primeng/image';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TextLength } from './pipes/text-length.pipe';\nimport { FirstLetterPipe } from './pipes/first-letter.pipe';\nimport { AvatarModule } from 'primeng/avatar';\nimport { PopoverModule } from 'primeng/popover';\nimport { TagComponent } from '../tag/tag.component';\nimport { StatusBarConfig } from './models/status-bar-configuration.model';\nimport { StatusColType } from './enums/status-col-type.enum';\nimport { ButtonModule } from 'primeng/button';\nimport { StatusAttributeDisplayComponent } from './status-attribute-display.component';\n\n@Component({\n selector: 'phoenix-status-bar',\n standalone: true,\n templateUrl: './status-bar.component.html',\n styleUrls: ['./status-bar.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TooltipModule,\n ImageModule,\n AvatarModule,\n PopoverModule,\n TextLength,\n ButtonModule,\n StatusAttributeDisplayComponent,\n ],\n})\nexport class StatusBarComponent {\n @Input() statusBarConfig!: StatusBarConfig;\n @Input() iconEnable = true;\n @Input() enableClosing = true;\n @Input() description = true;\n @Input() dateFormat = 'dd.MM.yyyy | HH:mm';\n\n @Output() onListItemClick = new EventEmitter<any>();\n\n isCollapsed = false;\n\n StatusColType = StatusColType;\n\n iconStyle = {\n height: 40,\n width: 40,\n };\n}\n","<!-- status-bar.component.html -->\n<div class=\"surface-ground p-2 pt-0\">\n <div\n *ngIf=\"statusBarConfig\"\n class=\"status-bar-wrapper flex flex-nowrap overflow-x-auto gap-2\"\n [ngClass]=\"{ collapsed: isCollapsed }\"\n >\n <div class=\"description flex\" *ngIf=\"description\">\n @if (statusBarConfig.icon) {\n <div\n class=\"type-icon flex justify-content-center align-items-center mr-3\"\n [style.height]=\"iconStyle.height + 20 + 'px'\"\n [style.width]=\"iconStyle.width + 20 + 'px'\"\n >\n <p-image\n [src]=\"\n 'assets/object_types/white/' +\n (statusBarConfig.icon || 'UNDEFINED') +\n '.svg'\n \"\n [height]=\"iconStyle.height.toString()\"\n [width]=\"iconStyle.width.toString()\"\n ></p-image>\n </div>\n }\n\n <ul>\n <li\n class=\"text-sm flex mb-1\"\n *ngFor=\"let attr of statusBarConfig.description\"\n >\n <span class=\"mr-1 text-600 font-semibold\"\n >{{ attr.label | translate }}:</span\n >\n <span *ngIf=\"attr.value; else empty\">\n <i\n *ngIf=\"attr.icon\"\n class=\"{{ attr.icon }} mr-1\"\n style=\"font-size: 0.8em\"\n ></i>\n <ng-container [ngSwitch]=\"attr.type\">\n <span *ngSwitchCase=\"'DATE'\">{{\n attr.value | date : dateFormat\n }}</span>\n <span\n *ngSwitchDefault\n pTooltip=\"{{ attr?.value?.length > 20 ? attr.value : '' }}\"\n >\n {{ attr.value | textLength : 20 }}\n </span>\n </ng-container>\n </span>\n </li>\n </ul>\n </div>\n <div class=\"w-full flex justify-content-between\">\n <phoenix-status-attribute-display\n *ngFor=\"let attr of statusBarConfig.attributes\"\n [attr]=\"attr\"\n [dateFormat]=\"dateFormat\"\n (listItemClick)=\"onListItemClick.emit($event)\"\n ></phoenix-status-attribute-display>\n </div>\n </div>\n\n <div class=\"flex justify-content-center\" *ngIf=\"enableClosing\">\n <div class=\"toggler\">\n <p-button\n [icon]=\"isCollapsed ? 'pi pi-angle-down' : 'pi pi-angle-up'\"\n size=\"small\"\n variant=\"outlined\"\n (click)=\"isCollapsed = !isCollapsed\"\n />\n </div>\n </div>\n</div>\n\n<ng-template #empty>\n <span>--</span>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n computed,\n signal,\n} from '@angular/core';\nimport { DrawerModule, Drawer } from 'primeng/drawer';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { TableComponent } from '../../data-table/table/table.component';\n\n@Component({\n selector: 'phoenix-quick-pick-sidepanel',\n standalone: true,\n imports: [\n CommonModule,\n DrawerModule,\n TableComponent,\n TranslateModule,\n ButtonModule,\n ],\n templateUrl: './quick-pick-sidepanel.component.html',\n styleUrl: './quick-pick-sidepanel.component.css',\n})\nexport class QuickPickSidePanelComponent {\n @ViewChild('drawer') drawer!: Drawer;\n\n @Input() title: string = 'Default Title';\n @Input() data: any[] = [];\n @Input() columns: any[] = [];\n @Input() tableConfiguration: any = {};\n @Input() widthClass: string = 'w-6';\n @Input() isFullScreen: boolean = false;\n\n private _panelVisible = signal(false);\n @Input()\n set panelState(value: boolean) {\n this._panelVisible.set(value);\n }\n @Output() panelStateChange = new EventEmitter<boolean>();\n\n @Output() onRowClick = new EventEmitter<any>();\n @Output() lazyLoadData = new EventEmitter<void>();\n @Output() handlePanelFullScreen = new EventEmitter<void>();\n\n drawerVisible = computed(() => this._panelVisible());\n\n visibleChange(newVal: boolean) {\n this._panelVisible.set(newVal);\n this.panelStateChange.emit(newVal);\n \n if (newVal) {\n this.onDrawerShow(); \n }\n }\n\n onDrawerShow(): void {\n this.lazyLoadData.emit();\n }\n\n onTableRowClick(row: any): void {\n this.onRowClick.emit(row);\n }\n}\n","<p-drawer\n #drawer\n [visible]=\"drawerVisible()\"\n (visibleChange)=\"visibleChange($event)\"\n [header]=\"title | translate\"\n appendTo=\"body\"\n position=\"right\"\n [styleClass]=\"widthClass\"\n>\n <!-- Content -->\n <ng-container *ngIf=\"tableConfiguration\">\n <div class=\"px-2\">\n <phoenix-table\n [data]=\"data\"\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n (rowSelection)=\"onTableRowClick($event)\"\n ></phoenix-table>\n </div>\n </ng-container>\n</p-drawer>","export enum SimpleButtonType {\n REGULAR = 'regular',\n SPLIT = 'split'\n}\n\nexport type Severity =\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'help'\n | 'primary'\n | 'secondary'\n | 'contrast'\n | null\n | undefined;\n\nexport interface ActionButton {\n id?: number | string;\n label: string;\n icon?: string;\n disabled?: boolean;\n type?: SimpleButtonType;\n severity?: Severity;\n tooltip?: string;\n action?: () => void;\n splitItems?: { label: string; icon?: string; command: () => void }[];\n}","/** Public API Surface of phoenix */\nexport * from './lib/components/inner-header/inner-header.component';\nexport * from './lib/components/sidebar/sidebar.component';\nexport * from './lib/components/actions/actions.component';\nexport * from './lib/components/card/card.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/context-object/contex-object.component';\nexport * from './lib/components/shell/shell.component';\nexport * from './lib/components/data-table/phoenix-data-table/phoenix-data-table.component';\nexport * from './lib/components/data-table/table/table.component';\nexport * from './lib/components/meta-form/meta-form.component';\nexport * from './lib/components/meta-form/meta-form-buttons/meta-form-buttons.component';\nexport * from './lib/components/meta-form/meta-form-templates/groups-form/groups-form.component';\nexport * from './lib/components/meta-form/services/meta-form.service';\nexport * from './lib/components/meta-form/meta-form-fields/object-item-dialog/object-item-dialog.component';\n//Status bar\nexport * from './lib/components/quick-pick/quick-pick/quick-pick.component';\nexport * from './lib/components/status-bar/status-bar.component';\nexport * from './lib/components/quick-pick/quick-pick-sidepanel/quick-pick-sidepanel.component';\nexport * from './lib/components/status-bar/models/status-attribute.model';\nexport * from './lib/components/status-bar/enums/status-col-type.enum';\nexport * from './lib/components/status-bar/models/status-bar-configuration.model';\n//model topbar\nexport * from './lib/models/shell-config.model';\nexport * from './lib/models/status.model';\n//data-table utils\nexport * from './lib/components/data-table/utils/dataTable.enum';\nexport * from './lib/components/data-table/utils/dataTable.interface';\n//Context object model\nexport * from './lib/components/context-object/context-object.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5","i6","i9","i7","i8","resolveActions","i10","i11","i14","i15","i12","i2.MetaFormService","i1.MetaFormService"],"mappings":"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"}
1
+ {"version":3,"file":"fuentis-phoenix-ui.mjs","sources":["../../../projects/phoenix-ui/src/lib/components/inner-header/inner-header.component.ts","../../../projects/phoenix-ui/src/lib/components/inner-header/inner-header.component.html","../../../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/actions/action-state.service.ts","../../../projects/phoenix-ui/src/lib/components/actions/actions.component.ts","../../../projects/phoenix-ui/src/lib/components/actions/actions.component.html","../../../projects/phoenix-ui/src/lib/utils/actions.utils.ts","../../../projects/phoenix-ui/src/lib/components/card/card.component.ts","../../../projects/phoenix-ui/src/lib/components/card/card.component.html","../../../projects/phoenix-ui/src/lib/components/search-card/search-card.component.ts","../../../projects/phoenix-ui/src/lib/components/search-card/search-card.component.html","../../../projects/phoenix-ui/src/lib/utils/compl-types.utils.ts","../../../projects/phoenix-ui/src/lib/services/crud.service.ts","../../../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/quick-pick/quick-pick/quick-pick.component.ts","../../../projects/phoenix-ui/src/lib/components/quick-pick/quick-pick/quick-pick.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/context-object/contex-object.component.ts","../../../projects/phoenix-ui/src/lib/components/context-object/contex-object.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/lib/components/meta-form/utils/form-fields.utils.ts","../../../projects/phoenix-ui/src/lib/pipes/time-period.pipe.ts","../../../projects/phoenix-ui/src/lib/utils/initials.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table-caption/table-caption.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table-caption/table-caption.component.html","../../../projects/phoenix-ui/src/lib/components/data-table/utils/is-boolean.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/table-cell.pipe.ts","../../../projects/phoenix-ui/src/lib/components/data-table/utils/table.utils.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table/table.component.ts","../../../projects/phoenix-ui/src/lib/components/data-table/table/table.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/due-date/start-due-date.validator.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/timeperiod/timeperiod.validator.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/control-type.enum.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/get-field-type.utils.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/white-space-validator.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-validators/no-dangerous-chars/do-danerous-chars.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/services/meta-form.service.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-abstract.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/lang.utils.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/field-label.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-field-label/meta-label.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/object-item-dialog/object-item-dialog.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/object-item-dialog/object-item-dialog.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-assign-responsible/meta-assign-responsible.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/error-type.util.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-field-error/inline-field-error.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/base-meta-field.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-calendar/meta-calendar.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-checkbox-color-picker/meta-checkbox-color-picker.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-checkbox/meta-checkbox.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-color-picker/meta-color-picker.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-currency/meta-currency.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-multiple-select/meta-multiple-select.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-number-input/meta-number-input.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-password-feild/meta-password-feild.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-select-button/meta-select-button.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/translate-dropdown-data.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-single-select-object-based/meta-single-select-object_based.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-single-select/meta-single-select.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-start-due-date/meta-start-due-date.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-switch/meta-switch.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-text-area/meta-text-area.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-text-editor/meta-text-editor.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-text-input/meta-text-input.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-timeperiod/meta-timeperiod.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-upload/meta-upload.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/field-col.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/global-phase.utils.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/so-types.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/utils/strip-html.pipe.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/read-only-input/read-only-input.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/read-only-input/read-only-input.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-assign-asset/meta-assign-asset.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-fields/meta-upload-dragdrop/meta-upload-dragdrop.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-buttons/meta-form-buttons.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-buttons/meta-form-buttons.component.html","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/groups-form/groups-form.component.ts","../../../projects/phoenix-ui/src/lib/components/meta-form/meta-form-templates/groups-form/groups-form.component.html","../../../projects/phoenix-ui/src/lib/components/status-bar/pipes/text-length.pipe.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/enums/status-col-type.enum.ts","../../../projects/phoenix-ui/src/lib/components/tag/tag.component.ts","../../../projects/phoenix-ui/src/lib/components/tag/tag.component.html","../../../projects/phoenix-ui/src/lib/components/status-bar/models/status-attribute.model.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/status-attribute-display.component.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/status-attribute-display.component.html","../../../projects/phoenix-ui/src/lib/components/status-bar/status-bar.component.ts","../../../projects/phoenix-ui/src/lib/components/status-bar/status-bar.component.html","../../../projects/phoenix-ui/src/lib/components/quick-pick/quick-pick-sidepanel/quick-pick-sidepanel.component.ts","../../../projects/phoenix-ui/src/lib/components/quick-pick/quick-pick-sidepanel/quick-pick-sidepanel.component.html","../../../projects/phoenix-ui/src/lib/models/status.model.ts","../../../projects/phoenix-ui/src/public-api.ts","../../../projects/phoenix-ui/src/fuentis-phoenix-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { Input } from '@angular/core';\n\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'pho-inner-header',\n standalone: true,\n imports: [CommonModule, TooltipModule],\n templateUrl: './inner-header.component.html',\n})\nexport class InnerHeaderComponent {\n @Input() title: string = '';\n @Input() tooltipContent: string = '';\n}\n","<div\n class=\"flex align-items-center justify-content-between border-bottom-1 border-300 pt-2 pb-2\"\n>\n <div class=\"flex align-items-center gap-2\">\n <span class=\"font-medium text-lg\">\n {{ title }}\n </span>\n <i [pTooltip]=\"tooltipContent\" class=\"pi pi-info-circle text-blue-500\"></i>\n </div>\n\n <div class=\"flex align-items-center gap-2\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TagModule } from 'primeng/tag';\nimport { MenuModule } from 'primeng/menu';\nimport { DividerModule } from 'primeng/divider';\n\n@Component({\n selector: 'pho-sidebar-item',\n standalone: true,\n styleUrl: '../../styles/global.css',\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n ButtonModule,\n RouterLink,\n RouterLinkActive,\n TooltipModule,\n TranslateModule,\n MenuModule,\n TagModule,\n DividerModule,\n ],\n template: `\n @if(item.path === '/dashboard'){\n <li\n class=\"list-none flex align-items-center border-bottom-1 border-200\"\n routerLinkActive=\"active-link\"\n [routerLinkActiveOptions]=\"{ exact: false }\"\n >\n <!-- Visible link: user navigation goes to item.path -->\n <a\n class=\"p-button no-underline w-full justify-content-between surface-0 hover:surface-100 border-none overflow-hidden bg-transparent sidebaritem\"\n [attr.data-cy]=\"'navigation-side-navigation-item-' + item.label\"\n [routerLink]=\"item?.disabled ? null : item.path\"\n [ngClass]=\"[\n classname,\n item?.disabled ? 'opacity-50 cursor-not-allowed' : ''\n ]\"\n [style.pointer-events]=\"item?.disabled ? 'none' : 'auto'\"\n >\n <div class=\"flex align-items-center \">\n <img class=\"mr-2\" width=\"28\" [src]=\"item.icon\" alt=\"\" />\n <span class=\"text-primary font-bold pr-3 \">{{\n item.label | translate\n }}</span>\n </div>\n\n <p-button\n icon=\"pi pi-sliders-v\"\n size=\"small\"\n [rounded]=\"true\"\n [text]=\"true\"\n (onClick)=\"onSliderClick($event, menu)\"\n [disabled]=\"item.disabledConfig\"\n />\n </a>\n\n <!-- Hidden link: used ONLY to activate based on basePath -->\n <a\n [routerLink]=\"item.basePath || item.path\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n style=\"display:none\"\n ></a>\n\n <p-menu\n styleClass=\"w-20rem\"\n appendTo=\"body\"\n #menu\n [model]=\"item.subitems\"\n [popup]=\"true\"\n >\n <ng-template #submenuheader let-item>\n <span class=\"text-400 text-sm font-semibold\">{{\n item.label | translate\n }}</span>\n </ng-template>\n <ng-template pTemplate=\"item\" let-item>\n <a\n (click)=\"onSliderItemsClick(item)\"\n [ngClass]=\"{ 'pointer-events-none': item.activated }\"\n pRipple\n class=\"flex align-items-center p-menuitem-link p-2 cursor-pointer w-full\"\n >\n <div class=\"flex justify-content-between w-full\">\n <div>\n @if(item.icon){ <i [class]=\"item.icon\"></i> }\n <span class=\"ml-2\">{{ item.title | translate }}</span>\n </div>\n @if(item.activated){ <i class=\"pi pi-check\"></i> }\n </div>\n </a>\n </ng-template>\n <ng-template #end>\n <p-divider styleClass=\"m-0\" type=\"solid\" />\n <p-button\n [label]=\"'ACTION.CREATE' | translate\"\n icon=\"pi pi-plus\"\n [text]=\"true\"\n severity=\"secondary\"\n styleClass=\"w-full p-2\"\n (click)=\"onSliderItemsClick({ type: 'CREATE' })\"\n />\n </ng-template>\n </p-menu>\n </li>\n\n } @else {\n <li\n class=\"list-none flex align-items-center\"\n [pTooltip]=\"item?.tooltip | translate\"\n routerLinkActive=\"active-link\"\n [routerLinkActiveOptions]=\"{ exact: false }\"\n >\n <!-- Visible link: user navigation goes to item.path -->\n <a\n [attr.data-cy]=\"'navigation-side-navigation-item-' + item.label\"\n [routerLink]=\"item?.disabled ? null : item.path\"\n class=\"p-button no-underline w-full justify-content-start surface-0 hover:surface-100 border-none overflow-hidden bg-transparent sidebaritem\"\n [ngClass]=\"[\n classname,\n item?.disabled ? 'opacity-50 cursor-not-allowed' : ''\n ]\"\n [style.pointer-events]=\"item?.disabled ? 'none' : 'auto'\"\n >\n <div\n class=\"flex justify-content-between w-full\"\n style=\"margin-left: 24px;\"\n >\n <span style=\"font-size:13px\" class=\"text-primary white-space-nowrap\">\n {{ item.label | translate }}\n </span>\n </div>\n </a>\n @if(item.tag){\n <p-tag\n [style]=\"{\n fontSize: '9px',\n padding: '2px 6px',\n \n }\"\n severity=\"info\"\n [value]=\"item.tag | translate\"\n />\n } @if(item.lock){\n <p-tag\n [style]=\"{ fontSize: '9px', paddingRight: '3px' }\"\n severity=\"warn\"\n icon=\"pi pi-lock\"\n />\n }\n <!-- Hidden link: used ONLY to activate based on basePath -->\n <a\n [routerLink]=\"item.basePath || item.path\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n style=\"display:none\"\n ></a>\n </li>\n }\n `,\n})\nexport class SidebarItemComponent implements OnChanges {\n @Input() item!: any;\n @Input() classname: string = '';\n @Output() sliderClick = new EventEmitter<any>();\n\n constructor(private router: Router) {}\n\n onSliderClick($event: any, menu: any): void {\n $event.stopPropagation();\n $event.preventDefault();\n menu.toggle($event);\n }\n\n onSliderItemsClick(event: any) {\n this.sliderClick.emit(event);\n }\n\n ngOnChanges(_: SimpleChanges): void {}\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { SidebarItemComponent } from '../sidebar-item/sidebar-item.component';\nimport { CommonModule } from '@angular/common';\nimport { SidebarItem } from '../../models/shell-config.model';\nimport { AccordionModule } from 'primeng/accordion';\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'pho-sidebar',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n SidebarItemComponent,\n RouterModule,\n AccordionModule,\n TranslateModule,\n TooltipModule,\n ],\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.css',\n animations: [\n trigger('hoverState', [\n state(\n 'default',\n style({\n width: '50px',\n })\n ),\n state(\n 'hovered',\n style({\n width: '190px',\n })\n ),\n transition('default <=> hovered', animate('200ms ease-in-out')),\n ]),\n ],\n})\nexport class SidebarComponent {\n @Output() toggleSidebar = new EventEmitter<boolean>();\n @Output() sliderClick = new EventEmitter<any>();\n @Input() classname: string = '';\n\n @Input() mainItems: any;\n @Input() footerItem: any;\n\n isHovered = false;\n isSlim = false;\n\n get hoverState() {\n return this.isHovered ? 'hovered' : 'default';\n }\n\n onMouseEnter() {\n this.isHovered = true;\n }\n\n onMouseLeave() {\n this.isHovered = false;\n }\n\n onToggleSidebar() {\n this.isSlim = !this.isSlim;\n this.toggleSidebar.emit(this.isSlim);\n }\n}\n","@if(isSlim){\n<div\n [@hoverState]=\"hoverState\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n class=\"relative shadow-3 h-full sidebar overflow-hidden relative\"\n>\n <div class=\"flex flex-column h-full\" style=\"scroll-padding-bottom: 5rem\">\n <div class=\"ml-1 mr-1\">\n <pho-sidebar-item\n (sliderClick)=\"sliderClick.emit($event)\"\n [item]=\"mainItems[0].items[0]\"\n />\n </div>\n\n <p-accordion [value]=\"[0, 1, 2, 3]\" [multiple]=\"true\">\n @for (itemGroup of mainItems; track $index) {\n <p-accordion-panel [value]=\"$index\">\n <p-accordion-header>\n <div class=\"flex align-items-center\">\n <img class=\"mr-2\" width=\"28\" [src]=\"itemGroup.icon\" alt=\"\" />\n <span class=\"text-primary font-bold\">{{\n itemGroup.module | translate\n }}</span>\n </div>\n\n <ng-template #toggleicon let-active=\"active\">\n @if (active) { } @else { }\n </ng-template>\n </p-accordion-header>\n\n <p-accordion-content>\n @if(isHovered){ @for (item of itemGroup.items.slice(1); track $index)\n {\n <pho-sidebar-item [item]=\"item\" class=\"group-item\" />\n\n } }\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n\n <div\n *ngIf=\"footerItem.length\"\n class=\"absolute bottom-0 left-0 flex flex-column w-full\"\n >\n <ul class=\"flex flex-column gap-3 mb-2 p-0 m-0\">\n @for (item of footerItem; track $index) {\n <pho-sidebar-item [item]=\"item\" class=\"group-item\" />\n }\n </ul>\n </div>\n </div>\n <div class=\"absolute bottom-0 left-0 flex justify-content-between w-full p-1\">\n <p-button\n icon=\"pi pi-cog\"\n [text]=\"true\"\n size=\"large\"\n [styleClass]=\"'m-1'\"\n [style.transform]=\"!isSlim ? 'rotate(180deg)' : ''\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n />\n\n <p-button\n (onClick)=\"onToggleSidebar()\"\n [text]=\"true\"\n [styleClass]=\"'m-1'\"\n [style.transform]=\"isSlim ? 'rotate(180deg)' : ''\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 17 15\"\n fill=\"none\"\n class=\"opacity-70\"\n [style.marginTop.px]=\"2\"\n [style.width.px]=\"14\"\n [style.height.px]=\"12\"\n >\n <path\n d=\"M7.071 0L8.485 1.414L3.828 6.071H13V8.071H3.828L8.485 12.728L7.071 14.142L0 7.071L7.071 0ZM15.001 14.071V0.0710001H17.001V14.071H15.001Z\"\n fill=\"black\"\n />\n </svg>\n </p-button>\n </div>\n</div>\n}@else {\n<div class=\"relative shadow-3 h-full sidebar overflow-hidden relative pr-1\">\n <div class=\"flex flex-column h-full\" style=\"scroll-padding-bottom: 5rem\">\n <div class=\"ml-1 mr-1\">\n <pho-sidebar-item\n [item]=\"mainItems[0].items[0]\"\n (sliderClick)=\"sliderClick.emit($event)\"\n />\n </div>\n\n <p-accordion [value]=\"[0, 1, 2, 3]\" [multiple]=\"true\">\n @for (itemGroup of mainItems; track $index) {\n <p-accordion-panel [value]=\"$index\">\n <p-accordion-header>\n <div class=\"flex align-items-center\">\n <img class=\"mr-2\" width=\"28\" [src]=\"itemGroup.icon\" alt=\"\" />\n <span class=\"text-primary font-bold\">{{\n itemGroup.module | translate\n }}</span>\n </div>\n\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i\n style=\"font-size: 0.7rem; padding-right: 12px\"\n class=\"pi pi-sort-up-fill opacity-70\"\n ></i>\n } @else {\n <i\n style=\"font-size: 0.7rem; padding-right: 12px\"\n class=\"pi pi-sort-down-fill opacity-70\"\n ></i>\n }\n </ng-template>\n </p-accordion-header>\n\n <p-accordion-content>\n @for (item of itemGroup.items.slice(1); track $index) {\n <pho-sidebar-item [item]=\"item\" class=\"group-item\" />\n\n }\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n </div>\n\n <div class=\"absolute bottom-0 left-0 flex w-full p-1\">\n <div\n [pTooltip]=\"footerItem?.tooltip | translate\"\n [tooltipPosition]=\"'top'\"\n class=\"w-15rem\"\n >\n <a\n [routerLink]=\"footerItem.path\"\n pButton\n icon=\"pi pi-cog\"\n [text]=\"true\"\n size=\"large\"\n class=\"m-1 no-underline w-3rem\"\n style=\"flex: 0 0 auto; min-width: fit-content\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n >\n </a>\n </div>\n\n <p-button\n (onClick)=\"onToggleSidebar()\"\n [text]=\"true\"\n [styleClass]=\"'m-1'\"\n [attr.data-cy]=\"'navigation-togg-button'\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 17 15\"\n fill=\"none\"\n class=\"arrow-icon\"\n [style.marginTop.px]=\"2\"\n [style.width.px]=\"14\"\n [style.height.px]=\"13\"\n >\n <path\n d=\"M7.071 0L8.485 1.414L3.828 6.071H13V8.071H3.828L8.485 12.728L7.071 14.142L0 7.071L7.071 0ZM15.001 14.071V0.0710001H17.001V14.071H15.001Z\"\n fill=\"black\"\n />\n </svg>\n </p-button>\n </div>\n</div>\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionStateService {\n private _disabledActions = signal<Set<string>>(new Set());\n\n get disabledActions() {\n return this._disabledActions.asReadonly();\n }\n\n disableAction(id: string) {\n const current = new Set(this._disabledActions());\n current.add(id);\n this._disabledActions.set(current);\n }\n\n enableAction(id: string) {\n const current = new Set(this._disabledActions());\n current.delete(id);\n this._disabledActions.set(current);\n }\n\n isDisabled(id: string): boolean {\n return this._disabledActions().has(id);\n }\n}","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule, ButtonProps } from 'primeng/button';\nimport { MenuModule } from 'primeng/menu';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActionStateService } from './action-state.service';\n\nexport enum ActionTypes {\n BASIC = 'BASIC',\n SELECT = 'SELECT',\n}\n\n// Interface for users to augment\nexport interface Actions {\n // Base actions are always available\n}\n\n// Helper type to get all registered action enums\nexport type RegisteredActionEnums = Actions[keyof Actions];\n\n// Helper type to get all possible action values\nexport type AllActionValues =\n RegisteredActionEnums[keyof RegisteredActionEnums];\n\nexport interface Action<T = AllActionValues> {\n id?: string;\n actionId: T;\n label: string;\n icon: string;\n severity: Exclude<ButtonProps['severity'], 'warning'> | 'warn';\n iconPos?: 'right' | 'left';\n type: keyof typeof ActionTypes;\n text?: boolean;\n key?: string;\n requiredPermission?: string;\n data?: any;\n disabled?: boolean;\n visible?: boolean;\n loading?: boolean;\n class?: string;\n\n items?: {\n key?: string;\n actionId?: T;\n label?: string;\n separator?: boolean;\n icon?: string;\n requiredPermission?: string;\n }[];\n}\n\n@Component({\n selector: 'pho-actions',\n imports: [\n CommonModule,\n ButtonModule,\n MenuModule,\n PopoverModule,\n TranslateModule,\n ],\n templateUrl: './actions.component.html',\n styleUrl: './actions.component.css',\n})\nexport class ActionsComponent {\n public actionStateService = inject(ActionStateService);\n\n @Input() actions!: Action[];\n @Output() actionClick = new EventEmitter<Action>();\n\n onActionClick($event: any, action: Action, menuRef?: Popover) {\n $event.stopPropagation();\n if (action.type === ActionTypes.SELECT && menuRef) {\n menuRef.toggle($event);\n } else {\n this.actionClick.emit(action);\n }\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n @for(action of actions; track action.actionId){ @switch (action.type) {\n @case(\"BASIC\"){\n <p-button\n [attr.data-cy]=\"'action-button-basic'\"\n *ngIf=\"action.visible !== false\"\n [label]=\"action.label | translate\"\n [icon]=\"action.icon || ''\"\n [styleClass]=\"action.class || ''\"\n [severity]=\"action.severity ?? 'primary'\"\n [disabled]=\"\n action.disabled || actionStateService.isDisabled(action.actionId)\n \"\n [loading]=\"action.loading || false\"\n [id]=\"action.id\"\n (onClick)=\"onActionClick($event, action)\"\n size=\"small\"\n [iconPos]=\"action.iconPos ?? 'right'\"\n ></p-button>\n } @case(\"SELECT\"){\n <p-button\n [attr.data-cy]=\"'action-button-select'\"\n *ngIf=\"action.visible !== false\"\n [label]=\"action.label | translate\"\n [icon]=\"action.icon || ''\"\n [styleClass]=\"action.class || ''\"\n [severity]=\"action.severity ?? 'primary'\"\n [disabled]=\"\n action.disabled || actionStateService.isDisabled(action.actionId)\n \"\n [loading]=\"action.loading || false\"\n [id]=\"action.id\"\n (onClick)=\"onActionClick($event, action, menuRef)\"\n size=\"small\"\n [iconPos]=\"action.iconPos ?? 'right'\"\n ></p-button>\n\n <p-popover #menuRef [dismissable]=\"true\" class=\"actions-popover\">\n <p-menu styleClass=\"border-0\" [model]=\"action.items\">\n <ng-template pTemplate=\"item\" let-item>\n <div\n [attr.data-cy]=\"'action-button-popover-item-' + item?.actionId\"\n (click)=\"onActionClick($event, item)\"\n (keydown.enter)=\"onActionClick($event, item)\"\n (keydown.space)=\"onActionClick($event, item)\"\n pRipple\n tabindex=\"0\"\n role=\"button\"\n class=\"flex items-center p-menu-item-link cursor-pointer\"\n >\n <span [class]=\"item.icon\"></span>\n <span class=\"ml-2\">{{ item.label | translate }}</span>\n </div>\n </ng-template>\n </p-menu>\n </p-popover>\n } } }\n</div>\n","export enum ActionKinds {\n CREATE = 'CREATE',\n SUBMIT = 'SUBMIT',\n ASSIGN = 'ASSIGN',\n NEW = 'NEW',\n UPDATE = 'UPDATE',\n RELOAD = 'RELOAD',\n CLOSE = 'CLOSE',\n OPEN = 'OPEN',\n EDIT = 'EDIT',\n DELETE = 'DELETE',\n EDIT_TRANSITION = 'EDIT_TRANSITION',\n ADD_TRANSITION = 'ADD_TRANSITION',\n READ = 'READ',\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { CardModule } from 'primeng/card';\nimport { DividerModule } from 'primeng/divider';\nimport { TagModule } from 'primeng/tag';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ActionKinds } from '../../utils/actions.utils';\nimport { ActionsComponent } from '../actions/actions.component';\nimport { AfterViewInit, ElementRef, ViewChild } from '@angular/core';\nexport interface cardConfig {\n name: string;\n subName: string;\n description: string;\n actions: any[];\n additional: any[];\n}\n@Component({\n selector: 'phoenix-card',\n imports: [\n CommonModule,\n TooltipModule,\n TranslateModule,\n ButtonModule,\n CardModule,\n ActionsComponent,\n TagModule,\n DividerModule,\n TooltipModule,\n ],\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n})\nexport class CardComponent<T extends Record<string, any>> {\n card = input.required<T>();\n cardEventEmmiter = output<{ data: T; action: string }>();\n actionEnum = ActionKinds;\n cardActions = input<any>();\n\n getObjectValueByKey(obj: any, key: string) {\n return obj[key];\n }\n\n @ViewChild('descEl') descEl!: ElementRef<HTMLElement>;\n showTooltip = false;\n\n ngAfterViewInit(): void {\n const el = this.descEl?.nativeElement;\n this.showTooltip = !!el && el.scrollHeight > el.clientHeight;\n }\n\n onCardClick(event: any, actionType?: string): void {\n const data = {\n id: this.card()['id'],\n };\n\n const finalEvent = {\n ...event,\n data,\n };\n\n if (actionType) {\n finalEvent.actionId = actionType;\n }\n\n this.cardEventEmmiter.emit(finalEvent);\n }\n\n shouldShowTitleTooltip(): boolean {\n const title = this.card()['title'];\n return title && title.length > 40;\n }\n}\n","<p-card\n styleClass=\"cursor-pointer pho-card hover:surface-100\"\n [style]=\"{ width: '25rem', overflow: 'hidden' }\"\n (click)=\"onCardClick(card(), 'NAVIGATE')\"\n [attr.data-cy]=\"'card-navigate-click'\"\n>\n <ng-template #header> </ng-template>\n <ng-template #title>\n <div class=\"flex justify-content-between\">\n <span\n class=\"font-semibold text-base card-title\"\n [pTooltip]=\"shouldShowTitleTooltip() ? card()['title'] : undefined\"\n tooltipStyleClass=\"phoenix-card-tooltip\"\n >\n {{ card()[\"title\"] }}</span\n >\n\n <pho-actions\n (actionClick)=\"onCardClick($event)\"\n [actions]=\"cardActions()\"\n ></pho-actions>\n </div>\n </ng-template>\n <ng-template #subtitle> </ng-template>\n <p\n #descEl\n class=\"text-500 text-sm\"\n [style]=\"{ height: '5rem', overflow: 'hidden' }\"\n [innerHTML]=\"card()['description'] || '--'\"\n [pTooltip]=\"showTooltip ? card()['description'] : undefined\"\n tooltipStyleClass=\"phoenix-card-tooltip\"\n ></p>\n <ng-content select=\"[custom]\"></ng-content>\n <ng-template #footer>\n <p-divider />\n <ng-content select=\"[footer]\"></ng-content>\n <div class=\"flex flex-wrap gap-1 justify-content-between\">\n @for(item of card()['footerData'] ; track item.key; let i = $index){\n @if(item?.value){\n <p-tag\n [icon]=\"item?.icon\"\n [severity]=\"item?.severity || 'info'\"\n [value]=\"item.value\"\n />}@else { <span>--</span> } }\n </div>\n </ng-template>\n</p-card>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxChangeEvent, CheckboxModule } from 'primeng/checkbox';\nimport { DividerModule } from 'primeng/divider';\nimport { ImageModule } from 'primeng/image';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { SearchResult } from '../../models/search-result.model';\n\ninterface types {\n title: string;\n checkboxes: any;\n}\n\n@Component({\n selector: 'pho-serach-card',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n TooltipModule,\n DividerModule,\n CheckboxModule,\n FormsModule,\n ImageModule,\n ],\n templateUrl: './search-card.component.html',\n styleUrls: ['./search-card.component.css'],\n})\nexport class SearchCardComponent {\n public translate = inject(TranslateService);\n @Input() searchData: SearchResult[] | any;\n @Input() tab?: number;\n\n @Input() mocekedFilters!: types[];\n\n @Input() checkboxes!: { [key: string]: boolean };\n @Output() onScrollEvent = new EventEmitter<Event>();\n @Output() onSelectLinkEvent = new EventEmitter<SearchResult>();\n @Output() onSelectFilterEvent = new EventEmitter<{\n value: { checked: boolean };\n name: string;\n }>();\n\n onScroll(scrollObj: Event): void {\n this.onScrollEvent.emit(scrollObj);\n }\n\n setLinkUrl(link: SearchResult): void {\n this.onSelectLinkEvent.emit(link);\n }\n\n onClick(event: CheckboxChangeEvent, name: string): void {\n event?.originalEvent?.stopPropagation();\n const data = {\n event: event,\n value: { checked: event.checked },\n name: name,\n };\n this.onSelectFilterEvent.emit(data);\n }\n}\n","<ng-container>\n <div class=\"flex h-20rem\">\n <div\n [attr.data-cy]=\"'navigation-search-bar-tab-card-' + tab\"\n class=\"overflow-y-auto\"\n [style.width.vw]=\"35\"\n (scroll)=\"onScroll($event)\"\n *ngIf=\"searchData?.length > 0; else message\"\n >\n <ng-container *ngFor=\"let link of searchData\">\n <div\n [attr.data-cy]=\"'navigation-search-bar-tab-card-link-' + tab\"\n class=\"flex cursor-pointer mb-3 hover:surface-200 border-round-md\"\n (click)=\"setLinkUrl(link)\"\n >\n <p-image\n class=\"border-round-sm p-2 mt-1\"\n [src]=\"\n 'assets/object_types/pink/full/' + link.type.labelKey + '.svg'\n \"\n height=\"24\"\n width=\"27\"\n ></p-image>\n <div class=\"flex flex-column justify-content-around ml-2\">\n <span\n [pTooltip]=\"link.name\"\n tooltipPosition=\"bottom\"\n class=\"mt-1 font-light text-lg\"\n >\n <small class=\"mr-2 font-light text-lg\"\n >{{ link.title | slice : 0 : 50\n }}{{ link.title.length > 50 ? \"...\" : \"\" }}</small\n >\n\n {{ link.name | slice : 0 : 50\n }}{{ link.name.length > 50 ? \"...\" : \"\" }}\n\n <small class=\"font-light text-base text-400\">{{\n link.type?.labelKeyVal | slice : 0 : 20\n }}</small>\n </span>\n <div class=\"flex\">\n <span class=\"mb-1 text-sm\" [pTooltip]=\"link.entity.name\"\n >{{ \"LABELS.ENTITY\" | translate }}:&nbsp;{{\n link.entity.name | slice : 0 : 50\n }}{{ link.entity.name.length > 50 ? \"...\" : \"\" }}</span\n >\n <span\n [pTooltip]=\"link.asset.name\"\n *ngIf=\"link?.asset?.name\"\n class=\"ml-2 mb-1 text-sm\"\n >{{ \"LABELS.ASSET\" | translate }}:&nbsp;{{\n link.asset.name | slice : 0 : 50\n }}{{ link.asset.name.length > 50 ? \"...\" : \"\" }}</span\n >\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <ng-container\n *ngIf=\"mocekedFilters[0].checkboxes?.length > 0 && checkboxes\"\n >\n <p-divider layout=\"vertical\"></p-divider>\n <div\n class=\"flex flex-column overflow-y-auto h-40rem pl-3 justify-content-start\"\n >\n <ng-container *ngFor=\"let item of mocekedFilters\">\n <span class=\"mt-2 mb-3 font-semibold text-sm justify-content-start\"\n >{{ item.title | translate }}\n </span>\n <div class=\"h-25rem flex flex-column justify-content-start\">\n <ng-container *ngFor=\"let checkbox of item.checkboxes\">\n <div class=\"field-checkbox\" *ngIf=\"checkbox?.name\">\n <p-checkbox\n [attr.data-cy]=\"\n 'navigation-search-filter-checkbox-' + checkbox?.labelKey\n \"\n [(ngModel)]=\"checkboxes[checkbox?.labelKey]\"\n [binary]=\"true\"\n [inputId]=\"checkbox?.name\"\n (onChange)=\"onClick($event, checkbox?.labelKey)\"\n ></p-checkbox>\n\n <label class=\"text-sm\" [for]=\"checkbox?.name\">{{\n checkbox.name | translate\n }}</label>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</ng-container>\n<ng-template #message>\n <div class=\"overflow-y-auto\" style=\"width: 35vw\">\n {{ \"NO_RESULTS_FOUND\" | translate }}\n </div>\n</ng-template>\n","export enum ComplItems {\n COMPL_APPLIED_MODULES = 'COMPL_APPLIED_MODULES',\n COMPL_APPLIED_MEASURE = 'COMPL_APPLIED_MEASURE',\n COMPL_APPLIED_REQUIREMENT = 'COMPL_APPLIED_REQUIREMENT',\n COMPL_APPLIED_THREAT = 'COMPL_APPLIED_THREAT',\n COMPL_APPLIED_CONTROL = 'COMPL_APPLIED_CONTROL',\n COMPL_SCOPE = 'COMPL_SCOPE',\n COMPL_TOT_BUILDING = 'COMPL_TOT_BUILDING',\n COMPL_TOT_DOMAIN = 'COMPL_TOT_DOMAIN',\n COMPL_TOT_INFORMATION = 'COMPL_TOT_INFORMATION',\n COMPL_TOT_BUSINESS = 'COMPL_TOT_BUSINESS_PROCESS',\n COMPL_TOT_APPLICATION = 'COMPL_TOT_APPLICATION',\n COMPL_TOT_ITSYSETEM = 'COMPL_TOT_IT_SYSTEM',\n COMPL_TOT_NETWORK = 'COMPL_TOT_NETWORK',\n COMPL_TOT_EMPLOYEE = 'COMPL_TOT_EMPLOYEE',\n COMPL_TOT_INFRASTRUCTURE = 'COMPL_TOT_INFRASTRUCTURE',\n COMPL_TOT_OUTSORCING = 'COMPL_TOT_OUTSORCING',\n COMPL_TOT_PHYSICAL_FACILITY = 'COMPL_TOT_PHYSICAL_FACILITY',\n COMPL_TOT_ROOM = 'COMPL_TOT_ROOM',\n COMPL_TOGS = 'COMPL_TOGS',\n RISK = 'RISK',\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CrudService {\n constructor(private http: HttpClient) {}\n\n getSearchData<T>(url: string, phrase: string, size: number): Observable<T[]> {\n const params = new HttpParams().set('phrase', phrase).set('size', size);\n return this.http.get<T[]>(url, { params });\n }\n}\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 effect,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n output,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IconField } from 'primeng/iconfield';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { OverlayPanel, OverlayPanelModule } from 'primeng/overlaypanel';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { TabsModule } from 'primeng/tabs';\nimport { TabViewModule } from 'primeng/tabview';\nimport { SearchCardComponent } from '../search-card/search-card.component';\nimport { SearchResult } from '../../models/search-result.model';\nimport { ComplItems } from '../../utils/compl-types.utils';\nimport {\n catchError,\n debounceTime,\n of,\n Subject,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport { TreeNode } from 'primeng/api';\nimport { SoTypes } from '../meta-form/utils/so-types';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { CrudService } from '../../services/crud.service';\nimport { SearchTabs } from '../../models/search.model';\ninterface TogTreeContext {\n tog: TreeNode;\n togType: TreeNode;\n togScope: TreeNode;\n}\ninterface types {\n title: string;\n checkboxes: any;\n}\n@Component({\n selector: 'pho-search-bar',\n standalone: true,\n imports: [\n CommonModule,\n InputTextModule,\n PopoverModule,\n TabsModule,\n MessageModule,\n TranslateModule,\n SearchCardComponent,\n IconFieldModule,\n InputIconModule,\n ],\n styleUrls: ['./search-bar.component.css'],\n templateUrl: './search-bar.component.html',\n animations: [\n trigger('openClose', [\n state(\n 'open',\n style({\n width: '50vw',\n opacity: 1,\n })\n ),\n state(\n 'closed',\n style({\n width: '13vw',\n opacity: 0.8,\n })\n ),\n transition('* <=> *', [animate('0.1s ease-in-out')]),\n ]),\n ],\n})\nexport class SearchBarComponent {\n @ViewChild('op') set nes(nes: any) {\n if (nes) {\n this.op = nes;\n }\n }\n @ViewChild('elm', { static: true }) elm!: ElementRef;\n\n op?: any;\n isOpen: boolean = false;\n valueChanges = new Subject<Event>();\n inputEvent!: Event;\n clonedData?: SearchResult[];\n searchData?: SearchResult[];\n size: number = 10;\n textValue!: string;\n checkboxes!: { [key: string]: boolean };\n\n valueSub$!: Subscription;\n\n tabIndex: number = 0;\n trigg: boolean = true;\n\n mocekedFilters: types[] = [\n {\n title: 'LABELS.FILTER_BY_TYPE',\n checkboxes: [],\n },\n ];\n crudService = inject(CrudService);\n treeCollectionMap!: Map<string, TogTreeContext>;\n reloadSubscription$!: Subscription;\n inputText?: string;\n tabs = input<SearchTabs[]>();\n\n constructor(public translate: TranslateService) {\n this.valueSub$ = this.valueChanges\n .pipe(\n debounceTime(200),\n switchMap((value) => {\n this.inputEvent = value;\n const target = value?.target as HTMLTextAreaElement;\n this.size = 10;\n this.inputText = target?.value;\n if (target?.value) {\n this.textValue = target.value;\n const url = this.tabs()?.[this.tabIndex]?.apiUrl;\n if (url) {\n return this.crudService\n .getSearchData<SearchResult>(url, target.value, this.size)\n .pipe(\n catchError((err) => {\n console.error('Error fetching data', err);\n return of(null);\n })\n );\n } else {\n return of(null);\n }\n } else {\n return of(null);\n }\n })\n )\n .subscribe((res) => {\n if (Array.isArray(res)) {\n this.searchData = [...res];\n this.clonedData = [...res];\n this.populateFilters(res);\n this.trigg = true;\n this.filterData();\n }\n });\n }\n\n populateFilters(data?: SearchResult[]): void {\n this.checkboxes = {};\n if (data !== undefined) {\n data.forEach((item) => {\n if (item?.type?.labelKey) {\n this.checkboxes[item.type.labelKey] = false;\n }\n });\n } else {\n this.checkboxes = {};\n }\n }\n\n setLinkUrl(url?: string): void {\n const baseUrl = this.tabs()?.[this.tabIndex]?.linkUrl;\n if (url && baseUrl) {\n window.open(baseUrl + url);\n }\n }\n\n onScroll(scrollObj: Event): void {\n if (\n scrollObj?.target &&\n (scrollObj.target as HTMLInputElement).offsetHeight +\n (scrollObj.target as HTMLInputElement).scrollTop >=\n (scrollObj.target as HTMLInputElement).scrollHeight\n ) {\n if (this.size <= 100) {\n this.size = this.size + 10;\n this.valueChanges.next(this.inputEvent);\n }\n }\n }\n\n onClick(data: { value: { checked: boolean }; name: string }): void {\n this.checkboxes[data.name] = data.value.checked;\n this.filterData(false);\n }\n\n filterData(makeNewFilters: boolean = true): void {\n let arr: string[] = [];\n\n for (const key in this.checkboxes) {\n if (this.checkboxes[key]) {\n arr.push(key);\n }\n if (this.checkboxes[ComplItems.COMPL_TOGS]) {\n arr = arr.concat([\n ComplItems.COMPL_TOT_BUILDING,\n ComplItems.COMPL_TOT_DOMAIN,\n ComplItems.COMPL_TOT_INFORMATION,\n ComplItems.COMPL_TOT_BUSINESS,\n ComplItems.COMPL_TOT_APPLICATION,\n ComplItems.COMPL_TOT_ITSYSETEM,\n ComplItems.COMPL_TOT_NETWORK,\n ComplItems.COMPL_TOT_EMPLOYEE,\n ComplItems.COMPL_TOT_INFRASTRUCTURE,\n ComplItems.COMPL_TOT_OUTSORCING,\n ComplItems.COMPL_TOT_PHYSICAL_FACILITY,\n ComplItems.COMPL_TOT_ROOM,\n ]);\n }\n }\n\n if (arr.length === 0) {\n this.searchData = this.clonedData;\n } else {\n this.searchData = this.clonedData?.filter((item: any) => {\n if (arr.includes(item.type.labelKey)) {\n return item;\n } else {\n return null;\n }\n });\n }\n if (makeNewFilters) {\n this.setCheckBoxes();\n }\n }\n\n expand(): void {\n this.isOpen = true;\n }\n\n onParentClick(event: Event): void {\n setTimeout(() => {\n this.op?.show(event, this.elm.nativeElement);\n }, 120);\n }\n\n onTabClick(id: any) {\n this.searchData = [];\n this.clonedData = [];\n this.filterData();\n this.tabIndex = id;\n if (this.inputEvent?.target) {\n this.valueChanges.next(this.inputEvent);\n }\n }\n\n setCheckBoxes(): void {\n if (this.trigg) {\n this.mocekedFilters[0].checkboxes = [];\n const lablesArr: string[] = [];\n this.searchData?.forEach((item: any) => {\n if (!lablesArr.includes(item.type.labelKey)) {\n this.mocekedFilters[0].checkboxes.push({\n name: item.type?.labelKeyVal,\n labelKey: item.type.labelKey,\n value: false,\n });\n lablesArr.push(item.type.labelKey);\n }\n });\n\n // this.trigg = false;\n }\n }\n\n ngOnDestroy(): void {\n if (this.valueSub$) this.valueSub$.unsubscribe();\n if (this.reloadSubscription$) this.reloadSubscription$.unsubscribe();\n }\n}\n","<div\n (click)=\"onParentClick($event)\"\n class=\"p-input-icon-left ml-1\"\n #elm\n [attr.data-cy]=\"'navigation-search-bar'\"\n>\n <p-iconfield>\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n [attr.data-cy]=\"'navigation-search-bar-input'\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n type=\"text\"\n pInputText\n placeholder=\"{{ 'SEARCH_PLACEHOLDERS.GLOBAL_SEARCH' | translate }}\"\n (input)=\"valueChanges.next($event)\"\n (focus)=\"onParentClick($event); expand()\"\n />\n </p-iconfield>\n</div>\n<p-popover\n [dismissable]=\"true\"\n [showTransitionOptions]=\"'.2s ease-out'\"\n [autoZIndex]=\"true\"\n #op\n [style]=\"{ width: '50vw', paddingLeft: '0' }\"\n styleClass=\"global-search\"\n (onHide)=\"isOpen = false\"\n>\n <div\n *ngIf=\"!inputText\"\n class=\"flex align-items-start gap-2 p-3 border-1 border-blue-300 surface-50 text-blue-700 border-round w-full\"\n >\n <i class=\"pi pi-info-circle mt-1 text-blue-500\"></i>\n <span class=\"text-sm\">{{ \"MESSAGES.START_TYPING\" | translate }}</span>\n </div>\n\n <ng-template pTemplate=\"content\">\n @if(inputText) {\n <p-tabs [value]=\"tabIndex\">\n <p-tablist>\n @for (tab of tabs(); track tab.id) {\n <p-tab\n [value]=\"tab.id\"\n (click)=\"onTabClick(tab.id)\"\n [attr.data-cy]=\"'navigation-search-bar-tab-' + tab.id\"\n >\n <span>{{ tab.header }}</span>\n </p-tab>\n }\n </p-tablist>\n <p-tabpanels>\n @for (tab of tabs(); track tab.id) {\n <p-tabpanel [value]=\"tab.id\">\n <pho-serach-card\n [tab]=\"tab.id\"\n [mocekedFilters]=\"mocekedFilters\"\n [searchData]=\"searchData\"\n [checkboxes]=\"checkboxes\"\n (onScrollEvent)=\"onScroll($event)\"\n (onSelectLinkEvent)=\"setLinkUrl($event.url)\"\n (onSelectFilterEvent)=\"onClick($event)\"\n >\n </pho-serach-card>\n </p-tabpanel>\n }\n </p-tabpanels> </p-tabs\n >}\n </ng-template>\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';\nimport { User } from '../../models/shell-config.model';\nimport { DividerModule } from 'primeng/divider';\n\n@Component({\n selector: 'pho-user',\n imports: [Avatar, Popover, TranslateModule, DividerModule],\n template: `\n <a\n data-cy=\"user-panel-togg-button\"\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 @if(user.bindImageUrl){\n <div\n [style.background-image]=\"user.bindImageUrl\"\n class=\"cover-image\"\n ></div>\n }@else {\n\n <p-avatar\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n [label]=\"\n (user.firstname?.charAt(0)?.toUpperCase() || '') +\n (user.lastname?.charAt(0)?.toUpperCase() || '')\n \"\n shape=\"circle\"\n />\n }\n </a>\n <p-popover #op>\n @if(user){\n <div class=\"p-2\">\n <div class=\"flex align-items-top\">\n @if(user.bindImageUrl){\n <div\n [style.background-image]=\"user.bindImageUrl\"\n class=\"profile-image\"\n ></div>\n }@else {\n <p-avatar\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n [label]=\"\n (user.firstname?.charAt(0)?.toUpperCase() || '') +\n (user.lastname?.charAt(0)?.toUpperCase() || '')\n \"\n shape=\"circle\"\n />\n }\n\n <div class=\"text-primary cursor-pointer ml-2\">\n <div class=\"text-xl\">{{ user.firstname }} {{ user.lastname }}</div>\n <div class=\"font-bold text-500 text-m\">{{ user.username }}</div>\n <div class=\"text-m\">{{ user.email }}</div>\n </div>\n </div>\n </div>\n <p-divider class=\"p-0 m-0\" />\n <div>\n <a\n class=\"flex flex-row align-items-center cursor-pointer ml-2 mb-2 mt-2\"\n data-cy=\"user-panel-settings-button\"\n (click)=\"actionEmmiter.emit('SETTINGS')\"\n pRipple\n >\n <i class=\"pi pi-user-edit p-2\" style=\"font-size: 1rem\"></i>\n <span>{{ 'ACTION.USER_PROFILE' | translate }}</span>\n </a>\n\n <p-divider class=\"p-0 m-0\" />\n <a\n style=\"color: red\"\n class=\"flex flex-row align-items-center cursor-pointer ml-2 mb-2 mt-2\"\n data-cy=\"user-panel-logout-button\"\n (click)=\"actionEmmiter.emit('LOGOUT')\"\n pRipple\n >\n <i class=\"pi pi-power-off p-2 \" style=\"font-size: 1rem\"></i>\n <span>{{ 'ACTION.LOGOUT' | translate }}</span>\n </a>\n </div>\n }\n <!-- <div class=\"flex gap-2 w-20rem\">\n @if(user.bindImageUrl){\n <div\n [style.background-image]=\"user.bindImageUrl\"\n class=\"profile-image\"\n ></div>\n }\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 </p-popover>\n `,\n styles: [\n `\n .profile-image {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n cursor: pointer;\n }\n .cover-image {\n width: 35px;\n height: 35px;\n border-radius: 50%;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n cursor: pointer;\n }\n `,\n ],\n})\nexport class UserComponent {\n @Input() user!: User;\n @Output() actionEmmiter = new EventEmitter<string>();\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n inject,\n input,\n Input,\n OnInit,\n output,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Drawer, DrawerModule } from 'primeng/drawer';\nimport { SearchBarComponent } from '../search-bar/search-bar.component';\nimport { UserComponent } from '../user/user.component';\nimport { RouterModule } from '@angular/router';\nimport { DividerModule } from 'primeng/divider';\nimport { ButtonModule } from 'primeng/button';\nimport { User } from '../../models/shell-config.model';\nimport { SearchResult } from '../../models/search-result.model';\nimport { SearchTabs } from '../../models/search.model';\nimport { Ripple } from 'primeng/ripple';\nimport { ImageModule } from 'primeng/image';\nimport { TagModule } from 'primeng/tag';\nimport { PopoverModule } from 'primeng/popover';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule } from 'primeng/toast';\nimport { TooltipModule } from 'primeng/tooltip';\n\nexport interface TopbarModuleItem {\n label: string;\n fullName?: string; // Opcioni, jer ne postoji kod svih modula\n icon?: string;\n url?: string;\n routerLink?: string[];\n disabled?: boolean;\n}\n\nexport interface TopbarModuleGroup {\n label: string;\n layout: 'full' | 'grid';\n showIconBackground: boolean;\n items: TopbarModuleItem[];\n}\n\nexport interface TopbarFooterConfig {\n companyName: string;\n companyUrl: string;\n guideLabel: string;\n guideUrl: string;\n copyrightText: string;\n}\n\nexport interface UrlConfig {\n url: string | null;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pho-topbar',\n standalone: true,\n imports: [\n CommonModule,\n SearchBarComponent,\n UserComponent,\n TranslateModule,\n RouterModule,\n DrawerModule,\n Drawer,\n DividerModule,\n DividerModule,\n ButtonModule,\n ImageModule,\n TagModule,\n PopoverModule,\n ToastModule,\n TooltipModule,\n ],\n templateUrl: './topbar.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [MessageService],\n})\nexport class TopbarComponent {\n sidebarConfig = { visible: false, type: '' };\n currentYear: number = new Date().getFullYear();\n isSidebarVisible: boolean = false;\n\n @Input() homeUrl: string = '/';\n @Input() user!: User;\n @Input() shortModuleName?: string = 'FLEX';\n @Input() hidelogo?: boolean = false;\n @Input() topbarModulesMenu: any[] = [];\n @Input() darkModeSelector: any;\n @Input() urlConfig?: UrlConfig;\n @Input() footerConfig: TopbarFooterConfig = {\n companyName: 'fuentis',\n companyUrl: 'https://fuentis.com/',\n guideLabel: 'Guide',\n guideUrl: 'https://fuentis.atlassian.net/wiki/spaces/FSUG/overview',\n copyrightText:\n '© ' + new Date().getFullYear() + ' fuentis. All Rights Reserved.',\n };\n\n @Output() onDarkModeSelect = new EventEmitter<void>();\n @Output() onUserPopoverAction = new EventEmitter<string>();\n closeCallback(event: any) {}\n searchConfig = input<SearchTabs[]>();\n openSidebarPanel() {\n this.isSidebarVisible = true;\n }\n private messageService = inject(MessageService);\n private translateService = inject(TranslateService);\n\n /** ✅ Zatvara sidebar */\n closeSidebar() {\n this.isSidebarVisible = false;\n }\n\n ngOnInit() {\n const items = this.topbarModulesMenu[0]?.items || [];\n }\n\n onDarkModeSelectEmit() {\n this.onDarkModeSelect.emit();\n }\n\n goToHome() {\n if (this.homeUrl) {\n window.location.href = this.homeUrl;\n }\n }\n\n goToTicketCenter() {\n window.open(\n 'https://fuentis.atlassian.net/servicedesk/customer/portal/1',\n '_blank'\n );\n }\n\n copyToClipboard($event: any, linkUrl: any) {\n $event.stopPropagation();\n $event.preventDefault();\n\n if (!linkUrl) {\n console.warn('No linkUrl for extIncidentConfig');\n return;\n }\n this.isSidebarVisible = false;\n navigator.clipboard.writeText(linkUrl);\n\n this.messageService.add({\n severity: 'success',\n summary: this.translateService.instant('TOASTER.SUCCESS'),\n detail: this.translateService.instant('TOASTER.LINK_COPIED'),\n life: 3000,\n });\n }\n\n get bindImageUrl(): string {\n return this.user?.imageUrl\n ? `url(${this.user.imageUrl})`\n : `url('assets/default-user.png')`;\n }\n}\n","<div\n class=\"h-full px-2 justify-content-between w-full flex align-items-center shadow-1 topbar\"\n>\n <!-- Title -->\n <div class=\"flex align-items-center justify-content-center mb-2 ml-2\">\n @if (!hidelogo) {\n <img class=\"h-2rem\" src=\"assets/logo_rose.png\" alt=\"fuentis_logo_white\" />\n }\n <!-- <p-tag\n [style]=\"{\n marginLeft: '5px',\n marginBottom: '8px',\n padding: '2px 6px',\n fontSize: '9px',\n border: '1px solid var(--text-color)',\n background: 'transparent',\n color: 'var(--text-color)'\n }\"\n severity=\"info\"\n [value]=\"shortModuleName\"\n /> -->\n </div>\n <!-- children -->\n <ng-content></ng-content>\n\n <div class=\"flex align-items-center gap-2\">\n <!-- Search Bar -->\n <pho-search-bar\n [pTooltip]=\"'TOPBAR_FUNCTIONS.SEARCH' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n [tabs]=\"searchConfig()\"\n ></pho-search-bar>\n\n <!-- ToggleDarkmode -->\n <p-button\n [pTooltip]=\"'TOPBAR_FUNCTIONS.THEME_SWITCH' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n data-cy=\"theme-switch-button\"\n (onClick)=\"onDarkModeSelectEmit()\"\n [icon]=\"darkModeSelector.mode === 'dark' ? 'pi pi-sun' : 'pi pi-moon'\"\n variant=\"outlined\"\n />\n\n <p-button\n data-cy=\"side-panel-togg-button\"\n data-cy=\"side-panel-togg-button\"\n (onClick)=\"op.toggle($event)\"\n icon=\"pi pi-th-large\"\n variant=\"outlined\"\n [pTooltip]=\"'TOPBAR_FUNCTIONS.APPLICATION_MENU' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n />\n <!-- Side Panel (Opens Sidebar) -->\n <p-button\n data-cy=\"side-panel-togg-button\"\n data-cy=\"side-panel-togg-button\"\n (onClick)=\"openSidebarPanel()\"\n icon=\"pi pi-question-circle\"\n variant=\"outlined\"\n [pTooltip]=\"'TOPBAR_FUNCTIONS.HELP_CENTER' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n />\n\n <!-- User Icon -->\n <pho-user\n [user]=\"user\"\n (actionEmmiter)=\"onUserPopoverAction.emit($event)\"\n [pTooltip]=\"'TOPBAR_FUNCTIONS.USER_MENU' | translate\"\n tooltipPosition=\"bottom\"\n showDelay=\"500\"\n />\n </div>\n</div>\n\n<!-- Sidebar Menu -->\n<p-drawer\n styleClass=\"w-25rem\"\n position=\"right\"\n [(visible)]=\"isSidebarVisible\"\n [closable]=\"false\"\n>\n <ng-template #header>\n <div class=\"flex align-items-center justify-content-between w-full\">\n <div class=\"flex\">\n <span class=\"font-bold text-xl\">\n {{ \"ACTION.HELP_CENTER\" | translate }}\n </span>\n </div>\n\n <p-button\n (onClick)=\"isSidebarVisible = false\"\n icon=\"pi pi-times\"\n [rounded]=\"true\"\n [text]=\"true\"\n />\n </div>\n </ng-template>\n <div class=\"p-1\">\n <div class=\"flex flex-wrap gap-4\">\n <!-- first -->\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-ticket text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.CREATE_TICKET\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.CREATE_TICKET_DESCRIPTION\" | translate }}\n </div>\n </div>\n <div class=\"w-full\">\n <p-button\n (onClick)=\"goToTicketCenter()\"\n [label]=\"'HELP_CENTER.CREATE_TICKET_BUTTON' | translate\"\n variant=\"outlined\"\n size=\"small\"\n />\n </div>\n </div>\n\n <!-- second -->\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-headphones text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.CALL_US\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.CALL_US_DESCRIPTION\" | translate }}\n </div>\n </div>\n <div class=\"w-full\">\n {{ \"HELP_CENTER.PHONE_NUMBER\" | translate }}\n </div>\n </div>\n\n <!-- third -->\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-envelope text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.SEND_EMAIL\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.SEND_EMAIL_DESCRIPTION\" | translate }}\n </div>\n </div>\n <div class=\"w-full\">\n <a href=\"mailto:support&#64;fuentis.com\">\n {{ \"HELP_CENTER.SUPPORT_EMAIL\" | translate }}\n </a>\n </div>\n </div>\n\n <div\n class=\"w-22rem border-round-md border-300 surface-100 pho-reverse p-3\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': urlConfig?.disabled }\"\n >\n <div\n style=\"width: 30px; height: 30px\"\n class=\"m-2 border-round-md bg-primary font-bold flex align-items-center justify-content-center\"\n >\n <i class=\"pi pi-file text-white\" style=\"font-size: 1.2rem\"></i>\n </div>\n\n <div>\n <div class=\"text-xl font-semibold mb-1\">\n {{ \"HELP_CENTER.REPORT_INCIDENT_TITLE\" | translate }}\n </div>\n <div class=\"text-sm mb-2\">\n {{ \"HELP_CENTER.REPORT_INCIDENT_DESCRIPTION\" | translate }}\n </div>\n </div>\n\n <div class=\"w-full flex align-items-center gap-2\">\n <a\n class=\"no-underline\"\n [href]=\"urlConfig?.url || '#'\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <p-button\n [label]=\"'HELP_CENTER.REPORT_INCIDENT_ACTION' | translate\"\n variant=\"outlined\"\n size=\"small\"\n icon=\"pi pi-copy\"\n (onClick)=\"copyToClipboard($event, urlConfig?.url)\"\n [disabled]=\"urlConfig?.disabled || !urlConfig?.url\"\n />\n </a>\n </div>\n </div>\n </div>\n <!-- External Incident Report card -->\n\n <div class=\"mt-5 p-3\">\n <h4 class=\"\">\n {{ \"ACTION.BROWSE\" | translate }} <br />\n <a\n class=\"\"\n [href]=\"footerConfig.guideUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"flex align-items-center\">\n {{ \"ACTION.KNOWLEDGE_BASE\" | translate }}\n <span style=\"text-decoration: none\">\n <i\n style=\"font-size: 15px\"\n class=\"pi pi-graduation-cap p-2 no-underline\"\n ></i>\n </span>\n\n <!-- <i\n style=\"font-size: 11px\"\n class=\"pi pi-external-link p-2 no-underline\"\n ></i> -->\n </span>\n </a>\n </h4>\n </div>\n </div>\n <ng-template #footer>\n <div class=\"text-xs text-center text-600\">\n {{ \"HELP_CENTER.SUITE_DESCRIPTION\" | translate }}\n </div>\n </ng-template>\n</p-drawer>\n\n<!-- <p-popover #op>\n <div class=\"w-22rem\">\n <ng-container *ngFor=\"let moduleGroup of topbarModulesMenu\">\n <div class=\"grid\">\n <ng-container *ngIf=\"moduleGroup.layout === 'grid'\">\n <div\n *ngFor=\"let module of moduleGroup.items\"\n class=\"col-4 p-3 hover:surface-100 cursor-pointer p-0 m-0 sidebaritem\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': module?.disabled }\"\n >\n <a\n class=\"text-primary flex flex-column align-items-center gap-2\"\n [href]=\"module.url || '#'\"\n style=\"text-decoration: none; cursor: pointer\"\n [attr.data-cy]=\"'side-panel-menu-item-' + module.label\"\n >\n <div\n class=\"w-4rem border-round-sm flex justify-content-center align-items-center\"\n [style.backgroundColor]=\"\n moduleGroup.showIconBackground\n ? module.disabled\n ? '#ccc'\n : '#e74360'\n : 'transparent'\n \"\n >\n <img *ngIf=\"module.icon\" [src]=\"module.icon\" class=\"w-2rem\" />\n </div>\n <span class=\"text-sm text-center\">{{\n module.label | translate\n }}</span>\n </a>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</p-popover> -->\n<p-toast></p-toast>\n\n<!-- wait for restructure of the topbar modules menu -->\n<p-popover #op>\n <div class=\"w-25rem\">\n <ng-container *ngFor=\"let item of topbarModulesMenu\">\n <div\n class=\"p-0 m-0 hover:surface-100 cursor-pointer p-2\"\n [ngClass]=\"{ 'opacity-30 pointer-events-none': item?.disabled }\"\n >\n <a\n class=\"text-primary flex align-items-center\"\n [href]=\"item.url || '#'\"\n style=\"text-decoration: none; cursor: pointer\"\n [attr.data-cy]=\"'side-panel-menu-item-' + item.title\"\n >\n <div\n class=\"w-3rem h-3rem border-round-md flex justify-content-center align-items-center border-200 border-1\"\n style=\"margin-right: 10px\"\n >\n <img *ngIf=\"item.icon\" [src]=\"item.icon\" class=\"w-2rem\" />\n </div>\n <div class=\"\">\n <div class=\"font-semibold\">\n {{ item.title | translate }}\n </div>\n <div class=\"text-sm max-w-17rem text-600\">\n {{ item.description | translate }}\n </div>\n </div>\n </a>\n </div>\n </ng-container>\n </div>\n</p-popover>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'phoenix-quick-pick',\n imports: [CommonModule],\n templateUrl: './quick-pick.component.html',\n styleUrl: './quick-pick.component.css',\n})\nexport class QuickPickComponent {\n @Output() onBack = new EventEmitter<void>();\n @Output() onQuickPick = new EventEmitter<void>();\n @Output() onForward = new EventEmitter<void>();\n}\n","<div class=\"flex align-items-center gap-2\">\n <i\n class=\"pi pi-chevron-left text-blue-500 cursor-pointer hover:text-blue-700 text-sm\"\n data-cy=\"quic-pick-back-button\"\n (click)=\"onBack.emit()\"\n role=\"button\"\n tabindex=\"0\"\n ></i>\n <i\n class=\"pi pi-table text-blue-500 cursor-pointer hover:text-blue-700 text-sm\"\n data-cy=\"quic-pick-button\"\n (click)=\"onQuickPick.emit()\"\n role=\"button\"\n tabindex=\"0\"\n ></i>\n <i\n class=\"pi pi-chevron-right text-blue-500 cursor-pointer hover:text-blue-700 text-sm\"\n data-cy=\"quic-pick-forward-button\"\n (click)=\"onForward.emit()\"\n role=\"button\"\n tabindex=\"0\"\n ></i>\n</div>\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TieredMenuModule } from 'primeng/tieredmenu';\nimport { QuickPickComponent } from '../quick-pick/quick-pick/quick-pick.component';\nimport { TagModule } from 'primeng/tag';\n\n@Component({\n selector: 'phoenix-status-header',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n SplitButtonModule,\n TranslateModule,\n TooltipModule,\n TieredMenuModule,\n QuickPickComponent,\n TagModule,\n ],\n templateUrl: './status-header.component.html',\n styleUrls: ['./status-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusHeaderComponent {\n @Output() onQuickPickClickEmiter = new EventEmitter<void>();\n @Output() onToggleClickEmmiter = new EventEmitter<'forward' | 'back'>();\n @Output() onCloseEvent = new EventEmitter<void>();\n @Input() type!: any;\n @Input() items!: any;\n @Input() name: string = '';\n @Input() title: string = '';\n @Input() tag?: { icon?: string; text?: string; variant?: string };\n @Input() tags?: Array<{\n icon?: string;\n value?: string;\n variant?: string;\n color?: string;\n tooltip?: string;\n }> = [];\n @Input() enableQuickPick: boolean = false;\n @Input() actions: any[] = [];\n @Input() panelState: boolean = false;\n @Input() customClose: boolean = true;\n\n validSeverities: string[] = [\n 'success',\n 'info',\n 'warn',\n 'danger',\n 'help',\n 'primary',\n 'secondary',\n 'contrast',\n ];\n\n onToggleClick(direction: 'forward' | 'back') {\n this.onToggleClickEmmiter.emit(direction);\n }\n\n toggleSidePanel() {\n this.onQuickPickClickEmiter.emit();\n }\n\n closePanel() {\n this.onCloseEvent.emit();\n }\n}\n","<div class=\"flex justify-content-between p-3\">\n <div class=\"flex align-items-center gap-2 w-full\">\n @if (enableQuickPick) {\n <phoenix-quick-pick\n (onBack)=\"onToggleClick('back')\"\n (onQuickPick)=\"toggleSidePanel()\"\n (onForward)=\"onToggleClick('forward')\"\n >\n </phoenix-quick-pick>\n }\n\n <!-- NAME with tooltip and truncation -->\n @if (name) {\n <span\n class=\"text-xl font-semibold\"\n [pTooltip]=\"name.length > 40 ? name : undefined\"\n [ngClass]=\"{ 'ml-3': !enableQuickPick && !type }\"\n >\n {{ name.length > 60 ? (name | slice : 0 : 60) + \"…\" : name }}\n </span>\n }\n\n <!-- TITLE with tooltip and truncation -->\n @if (title) {\n <span\n class=\"text-base text-gray-500\"\n [pTooltip]=\"title.length > 20 ? title : undefined\"\n >\n {{ title.length > 20 ? (title | slice : 0 : 20) + \"…\" : title }}\n </span>\n }\n\n <!-- Type goes here -->\n <!-- @if (type.text) {\n <p-tag\n [value]=\"type?.text\"\n [style]=\"{\n border: '2px solid var(--surface-300)',\n background: 'transparent',\n color: 'var(--text-color)',\n 'font-size': '11px',\n padding: '2px 4px',\n width: 'fit-content',\n 'white-space': 'nowrap'\n }\"\n ></p-tag>\n } -->\n </div>\n\n <!-- <div class=\"flex gap-1 align-items-center\">\n @for (tag of tags; track $index) {\n <p-tag\n [pTooltip]=\"tag?.tooltip ? (tag.tooltip! | translate) : undefined\"\n [value]=\"tag?.value || '--'\"\n [severity]=\"tag.variant || 'info'\"\n [icon]=\"tag?.icon || 'pi pi-check'\"\n [style]=\"{\n 'font-size': '11px',\n padding: '3px 8px',\n width: 'fit-content',\n 'white-space': 'nowrap'\n }\"\n [ngStyle]=\"\n tag?.color\n ? {\n 'background-color': tag.color + '36',\n color: tag.color,\n }\n : null\n \"\n ></p-tag>\n }\n </div> -->\n</div>\n","import { Component, Input, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TagModule } from 'primeng/tag';\nimport { ContextObjectConfig } from './context-object.model';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'phoenix-contex-object',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n TooltipModule,\n TagModule,\n ],\n templateUrl: './contex-object.component.html',\n styleUrls: ['./contex-object.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContexObjectComponent {\n\n @Input() config?: ContextObjectConfig;\n\n router = inject(Router);\n\n validSeverities: string[] = [\n 'success',\n 'info',\n 'warn',\n 'danger',\n 'help',\n 'primary',\n 'secondary',\n 'contrast',\n ];\n\n get ctxType(): string | undefined {\n return this.config?.type ?? '';\n }\n\n get ctxName(): string {\n return this.config?.name ?? '';\n }\n\n get ctxTitle(): string {\n return this.config?.title ?? '';\n }\n\n get ctxTags(): { icon?: string; text?: string; variant?: string; color?: string }[] {\n return this.config?.tags ?? [];\n }\n\n get ctxBackRoute(): any[] | undefined {\n return this.config?.backRoute ?? [];\n }\n\n onBackClick(): void {\n const route = this.ctxBackRoute;\n if (route?.length) {\n this.router.navigate(route);\n }\n }\n}","<div class=\"flex align-items-center gap-2 w-full\">\n @if (ctxBackRoute?.length) {\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-arrow-left\"\n class=\"p-button-text ml-1\"\n (click)=\"onBackClick()\"\n ></button>\n } @if (ctxType) {\n <span class=\"text-xl font-semibold text-gray-500\"> {{ ctxType }} : </span>\n } @if (ctxName) {\n <span\n class=\"text-xl font-semibold text-primary\"\n [pTooltip]=\"ctxName.length > 40 ? ctxName : undefined\"\n >\n {{ ctxName.length > 60 ? (ctxName | slice : 0 : 60) + \"…\" : ctxName }}\n </span>\n } @if (ctxTitle) {\n <span\n class=\"text-base text-gray-500\"\n [pTooltip]=\"ctxTitle.length > 20 ? ctxTitle : undefined\"\n >\n {{ ctxTitle.length > 20 ? (ctxTitle | slice : 0 : 20) + \"…\" : ctxTitle }}\n </span>\n } @if (ctxTags?.length) {\n <div class=\"flex align-items-center gap-2 ml-3\">\n @for (tag of ctxTags; track tag.text) {\n <p-tag\n [value]=\"tag.text\"\n [severity]=\"tag.variant || 'info'\"\n [icon]=\"tag.icon\"\n [style]=\"{\n 'font-size': '11px',\n 'padding': '3px 8px',\n 'width': 'fit-content',\n }\"\n [ngStyle]=\"\n tag.color\n ? {\n 'background-color': tag.color + '36',\n color: tag.color,\n }\n : null\n \"\n ></p-tag>\n }\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SidebarComponent } from '../sidebar/sidebar.component';\nimport { TopbarComponent } from '../topbar/topbar.component';\nimport { ContexObjectComponent } from '../context-object/contex-object.component';\nimport { ContextObjectConfig } from '../context-object/context-object.model';\n\nexport interface ShellTheme {\n mode: 'light' | 'dark' | 'system';\n}\n\n@Component({\n selector: 'pho-shell',\n imports: [\n SidebarComponent,\n TopbarComponent,\n CommonModule,\n ContexObjectComponent,\n ],\n templateUrl: './shell.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ShellComponent {\n @Input() config!: {\n user: any;\n shortModuleName: string;\n hidelogo?: boolean;\n\n /** header control */\n headerContext?: ContextObjectConfig;\n\n searchConfig?: any;\n topbarModulesMenu?: any;\n urlConfig?: {\n url: string | null;\n disabled?: boolean;\n };\n mainItems?: any[];\n footerItem?: any;\n };\n\n @Input() darkModeSelector = { mode: 'dark' };\n @Input() theme: ShellTheme = { mode: 'system' };\n @Output() onDarkModeSelect = new EventEmitter<any>();\n @Output() onIsSlimSelect = new EventEmitter<any>();\n @Output() onUserAction = new EventEmitter<string>();\n @Output() sliderClick = new EventEmitter<any>();\n @Output() themeChange = new EventEmitter<ShellTheme>();\n\n isSlim!: boolean;\n\n readonly gridTemplateColumns = 'auto 1fr';\n\n /** if showHeader=true adding additional row between topbar and content */\n get gridTemplateRows(): string {\n return this.config?.headerContext?.showHeader ? '3.5rem auto 1fr' : '3.5rem 1fr';\n }\n\n toggleSidebar(isSlim: boolean) {\n this.isSlim = isSlim;\n this.onIsSlimSelect.emit(this.isSlim);\n }\n\n onThemeChange(mode: ShellTheme['mode']) {\n this.theme.mode = mode;\n this.themeChange.emit(this.theme);\n }\n\n selectDarkMode() {\n this.onDarkModeSelect.emit(this.darkModeSelector);\n }\n}\n","<!-- Sidebar Layout -->\n<div\n class=\"pho-grid w-full h-screen overflow-hidden m-0 p-0\"\n [ngStyle]=\"{\n 'grid-template-rows': gridTemplateRows,\n 'grid-template-columns': gridTemplateColumns\n }\"\n>\n <!-- Top header (uvek preko 2 kolone) -->\n <pho-topbar\n class=\"pho-col-span-2 z-1\"\n [user]=\"config.user\"\n [shortModuleName]=\"config.shortModuleName\"\n [hidelogo]=\"config.hidelogo\"\n [searchConfig]=\"config.searchConfig\"\n [topbarModulesMenu]=\"config.topbarModulesMenu\"\n [urlConfig]=\"config.urlConfig\"\n [darkModeSelector]=\"darkModeSelector\"\n (onDarkModeSelect)=\"selectDarkMode()\"\n (onUserPopoverAction)=\"onUserAction.emit($event)\"\n ></pho-topbar>\n\n <!-- Context object - full width -->\n <div class=\"pho-col-span-2\" *ngIf=\"config.headerContext && config.headerContext.showHeader\">\n <div\n class=\"flex align-items-center justify-content-between border-bottom-1 border-300 pb-2 pt-2\"\n >\n <phoenix-contex-object\n *ngIf=\"config.headerContext\"\n [config]=\"config.headerContext\"\n ></phoenix-contex-object>\n </div>\n </div>\n\n <!-- Sidebar (uvek prisutan) -->\n <div class=\"w-max\">\n <pho-sidebar\n [mainItems]=\"config.mainItems\"\n [footerItem]=\"config.footerItem\"\n (toggleSidebar)=\"toggleSidebar($event)\"\n (sliderClick)=\"sliderClick.emit($event)\"\n ></pho-sidebar>\n </div>\n\n <!-- Main content -->\n <div class=\"overflow-auto surface-50 wrap w-full\">\n <ng-content></ng-content>\n </div>\n</div>\n","export enum tableActionType {\n CREATE = 'create',\n EDIT = 'edit',\n BULK_EDIT = 'bulk_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 ROW_DELETE = 'row_delete',\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 MORE = 'MORE',\n BULK = 'BULK',\n ROW = 'ROW',\n}\n\nexport enum tableColumnType {\n TEXT = 'TEXT',\n TIMEPERIOD = 'TIMEPERIOD',\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 OBJ_TAG = 'OBJ_TAG',\n LIST_TAG = 'LIST_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 { TooltipModule } from 'primeng/tooltip';\nimport { tableActionType, tableButtonContext } from '../utils/dataTable.enum';\nimport { TableAction } from '../utils/dataTable.interface';\nimport { PopoverModule } from 'primeng/popover';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\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 bulk_edit = 'pi pi-pencil',\n edit = 'pi pi-pencil',\n delete = 'pi pi-exclamation-triangle',\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 row_delete = 'pi pi-trash',\n}\n\n@Component({\n selector: 'phoenix-data-table-action',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TooltipModule,\n TranslateModule,\n PopoverModule,\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 ///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.outlined = true;\n this.btnConfig.class = 'ml-1';\n ///disable by permission\n this.disabled = this.actionConfig.disabled;\n\n ///configure bulk delete button\n if (this.actionConfig.type === tableActionType.DELETE) {\n this.btnConfig.severity = 'warn';\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.disabled) {\n break;\n }\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(action: any) {\n this.actionClick.emit({ action, rowData: this.rowData });\n }\n}\n","<p-popover #op>\n <ul class=\"list-none p-0 m-0\" [attr.data-cy]=\"'table-button-popover'\">\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-popover>\n\n<p-button\n [attr.data-cy]=\"'table-button-' + 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\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 OnChanges,\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\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, OnChanges {\n @Input({ required: true }) actions!: TableAction[];\n @Output() actionClick = new EventEmitter<any>();\n\n private router = inject(Router);\n private dr = inject(DestroyRef);\n value!: string | undefined;\n\n private resolveTabFromRoute(): string {\n const fullPath = this.router.url;\n const pathSegments = fullPath.split('/').filter(Boolean);\n const lastSegment = pathSegments[pathSegments.length - 1];\n\n if (this.actions && this.actions.length > 0) {\n const found = this.actions.find((ac) => ac.key === lastSegment);\n return (found?.key || this.actions[0].key)!;\n }\n return '';\n }\n\n ngOnInit(): void {\n this.router.events.pipe(takeUntilDestroyed(this.dr)).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.value = this.resolveTabFromRoute();\n }\n });\n }\n\n ngOnChanges() {\n if (this.actions?.length > 0) {\n this.value = this.resolveTabFromRoute();\n }\n }\n\n onActionClick(event: any) {\n const opt = this.actions.find((i) => i.key === event.value);\n this.actionClick.emit({ action: opt });\n }\n}\n","<p-selectButton\n [attr.data-cy]=\"'table-tab-select-button'\"\n [options]=\"actions\"\n optionValue=\"key\"\n [(ngModel)]=\"value\"\n optionLabel=\"icon\"\n [unselectable]=\"true\"\n (onChange)=\"onActionClick($event)\"\n>\n <ng-template #item let-item>\n <span>\n {{ item.label | translate }}\n </span>\n <span>\n <p-badge\n *ngIf=\"item.badgeCount\"\n [value]=\"item.badgeCount\"\n severity=\"danger\"\n badgeSize=\"small\"\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, 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 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 { 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';\nimport { PopoverModule } from 'primeng/popover';\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 case tableButtonContext.MORE:\n transformed.moreActions.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 PopoverModule,\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\n filterTableData(originalArray: any[], mapping: any) {\n return originalArray.filter((item) => {\n for (const key in mapping) {\n const v = mapping[key];\n\n // preskoči prazne vrednosti\n if (v === null || v === undefined || v === '') continue;\n if (Array.isArray(v) && v.length === 0) continue;\n\n const itemVal = item[key];\n\n if (Array.isArray(v)) {\n const selectedKeys = v.map(opt =>\n typeof opt === 'object' && opt !== null && ('key' in opt) ? opt.key : opt\n );\n if (!selectedKeys.includes(itemVal)) return false;\n continue;\n }\n\n if (typeof v === 'object' && v !== null && ('key' in v)) {\n if (itemVal !== v.key) return false;\n continue;\n }\n\n if (typeof v === 'boolean') {\n if (itemVal !== v) return false;\n continue;\n }\n if (itemVal !== v) return false;\n }\n return true;\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 [rowSelectable]=\"isRowSelectable\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n [globalFilterFields]=\"globalFilterFields\"\n [resizableColumns]=\"true\"\n [size]=\"'small'\"\n [scrollHeight]=\"tableConfiguration.scrollHeight\"\n [selectionPageOnly]=\"true\"\n [(selection)]=\"selectedData\"\n [scrollable]=\"true\"\n scrollHeight=\"400px\"\n [virtualScroll]=\"true\"\n [virtualScrollItemSize]=\"46\"\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-data-table-action\n #btn\n [actionConfig]=\"action\"\n (actionClick)=\"actionClick($event)\"\n ></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 [attr.data-cy]=\"'table-button-filter'\"\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 [attr.data-cy]=\"'table-button-toggle'\"\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 [attr.data-cy]=\"'table-button-export'\"\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-data-table-action\n [actionConfig]=\"action\"\n [selectedData]=\"selectedData\"\n (actionClick)=\"actionClick(action, selectedData)\"\n ></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-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-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 {{ \"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 <div [attr.data-cy]=\"'table-cell-' + (columnTypeEnum.DATE | lowercase)\">\n {{ val.rowData[val.col.field] | date : dateFormat }}\n </div>\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 <div\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.DATE_COMPLEX | lowercase)\n \"\n >\n {{ val.rowData[val.col.field] | date : dateFormat + \" | HH:mm\" }}\n </div>\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-popover #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 [attr.data-cy]=\"'table-cell-save-columns-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 [attr.data-cy]=\"'table-cell-reset-columns-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-popover>\n\n<p-popover #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\" [attr.data-cy]=\"'table-filter-form'\">\n @for(control of tableConfiguration.filterConfiguration; track\n control.key ){ @switch(control.type) { @case ('checkbox') {\n <div class=\"mb-4\">\n <p-checkbox\n [attr.data-cy]=\"'table-filter-form-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 [attr.data-cy]=\"'table-filter-form-dropdown'\"\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-popover>\n\n<p-popover #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 [attr.data-cy]=\"'table-cell-export-pdf-button'\"\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 [attr.data-cy]=\"'table-cell-export-pdf-excel'\"\n ></p-button>\n </div>\n</p-popover>\n","export function timePeriodFromMS(milliseconds: number, lang: string = 'en'): string {\n const weeks = Math.floor(milliseconds / (7 * 24 * 60 * 60 * 1000));\n milliseconds %= 7 * 24 * 60 * 60 * 1000;\n \n const days = Math.floor(milliseconds / (24 * 60 * 60 * 1000));\n milliseconds %= 24 * 60 * 60 * 1000;\n \n const hours = Math.floor(milliseconds / (60 * 60 * 1000));\n milliseconds %= 60 * 60 * 1000;\n \n const minutes = Math.floor(milliseconds / (60 * 1000));\n \n let result = '';\n \n switch (lang) {\n case 'de':\n if (weeks > 0) result += `${weeks}w `;\n if (days > 0) result += `${days}t `;\n if (hours > 0) result += `${hours}s `;\n if (minutes > 0) result += `${minutes}m`;\n break;\n \n case 'sr':\n if (weeks > 0) result += `${weeks}n `;\n if (days > 0) result += `${days}d `;\n if (hours > 0) result += `${hours}č `;\n if (minutes > 0) result += `${minutes}m`;\n break;\n \n default: // 'en' or fallback\n if (weeks > 0) result += `${weeks}w `;\n if (days > 0) result += `${days}d `;\n if (hours > 0) result += `${hours}h `;\n if (minutes > 0) result += `${minutes}m`;\n break;\n }\n \n return result.trim();\n }","import { Pipe, PipeTransform } from '@angular/core';\nimport { timePeriodFromMS } from '../components/meta-form/utils/form-fields.utils';\n\n@Pipe({\n name: 'timePeriod'\n})\nexport class TimePeriodPipe implements PipeTransform {\n transform(value: number): string {\n return timePeriodFromMS(value);\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'initials' })\nexport class InitialsPipe implements PipeTransform {\n transform(name: string): string {\n return (\n name\n ?.split(' ')\n .map((word) => word.charAt(0).toUpperCase())\n .join('') || ''\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n OnChanges,\n inject,\n DestroyRef,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n FormBuilder,\n FormGroup,\n} from '@angular/forms';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { ButtonModule } from 'primeng/button';\nimport { SelectModule } from 'primeng/select';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { PhoenixDataTableActionComponent } from '../phoenix-data-table-action/phoenix-data-table-action.component';\nimport { PhoenixDataTableTabsComponent } from '../phoenix-data-table-tabs/phoenix-data-table-tabs.component';\nimport { ListboxModule } from 'primeng/listbox';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IsSelectedPipe } from '../phoenix-data-table/isSelected.pipe';\nimport { TableColumn } from '../utils/dataTable.interface';\nimport { tableColumnType } from '../utils/dataTable.enum';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { OverlayBadgeModule } from 'primeng/overlaybadge';\nimport { RippleModule } from 'primeng/ripple';\nimport { FloatLabelModule } from 'primeng/floatlabel';\nimport { debounceTime } from 'rxjs';\n\n@Component({\n selector: 'table-caption',\n standalone: true,\n imports: [\n CommonModule,\n PopoverModule,\n ButtonModule,\n SelectModule,\n InputTextModule,\n FormsModule,\n ReactiveFormsModule,\n InputIconModule,\n IconFieldModule,\n MultiSelectModule,\n PhoenixDataTableActionComponent,\n PhoenixDataTableTabsComponent,\n ListboxModule,\n TranslateModule,\n IsSelectedPipe,\n AvatarModule,\n BadgeModule,\n OverlayBadgeModule,\n RippleModule,\n FloatLabelModule,\n ],\n templateUrl: './table-caption.component.html',\n styleUrl: './table-caption.component.css',\n})\nexport class TableCaptionComponent implements OnChanges {\n @ViewChild('columnsPopover') columnsPopover?: Popover;\n\n /** Table meta-configuration (key, feature toggles, etc.) */\n @Input() tableConfiguration!: any;\n /** All available columns coming from parent */\n @Input() columns: any[] = [];\n /** Current text of the global search box (if any) */\n @Input() searchQuery: string = '';\n /** Selected rows passed down from parent (used for bulk actions) */\n @Input() selectedItems: any[] = [];\n /**\n * Filter definitions (array of filter configs).\n * Each config typically: { key, label, type: 'multiselect' | ..., options, selected? }\n */\n @Input() filters!: any;\n\n /** Emits the current filters (form value) upward to parent table */\n @Output() applyFiltersEvent = new EventEmitter<any>();\n /** Emits selected column field keys upward to parent table */\n @Output() applyColumnsEvent = new EventEmitter<any[]>();\n /** Emits global search text upward */\n @Output() searchChange = new EventEmitter<string>();\n /** Emits top-level action clicks (global / tabs) upward */\n @Output() actionClick = new EventEmitter<any>();\n\n /** Services / utilities */\n translateService = inject(TranslateService);\n dr = inject(DestroyRef);\n fb = inject(FormBuilder);\n\n /** Reactive form that holds all filter controls */\n filtersForm: FormGroup = this.fb.group({});\n /** Currently selected (visible) columns */\n _selectedColumns!: TableColumn[];\n /** Which text columns should be included in global text search (if used here) */\n globalFilterFields!: string[];\n /** LocalStorage keys for persisting filters/columns per table key */\n FILTER_KEY!: string;\n COLUMN_KEY!: string;\n\n /**\n * Called when the column selector list changes. We map the selected column\n * models back to field keys and notify parent to actually apply it.\n */\n onColumnSelectionChange(newSelection: TableColumn[]): void {\n this.selectedColumns = newSelection;\n this.applyColumns();\n }\n\n /**\n * Sync component state whenever inputs change.\n * Order matters:\n * - compute keys for persistence\n * - initialize selected columns (and restore saved column state if enabled)\n * - build filter form (with defaults)\n * - compute global filter fields\n * - restore saved filters (overrides defaults)\n */\n ngOnChanges(): void {\n if (!this.tableConfiguration || !this.columns) return;\n this.FILTER_KEY = `filters_${this.tableConfiguration.key}`;\n\n this.initializeSelectedColumns();\n\n if (this.tableConfiguration.hasColumns) {\n this.COLUMN_KEY = `columns_${this.tableConfiguration.key}`;\n this.restoreColumnState();\n }\n\n this.initializeFilterForm();\n this.initializeGlobalFilterFields();\n this.restoreFilterState();\n }\n\n /**\n * Build the reactive form from the `filters` config.\n * Supports multiselects by storing arrays of primitive values.\n * If a filter has `selected`, it will be used as the initial value.\n * Immediately emits the initial value so parent can apply defaults.\n */\n private initializeFilterForm(): void {\n this.filtersForm = this.fb.group({});\n\n if (this.filters && Array.isArray(this.filters)) {\n for (const filter of this.filters) {\n const hasSelected =\n filter.selected !== undefined &&\n filter.selected !== null &&\n (!Array.isArray(filter.selected) || filter.selected.length > 0);\n\n let defaultValue: any;\n\n if (filter.type === 'multiselect') {\n defaultValue = hasSelected\n ? Array.isArray(filter.selected)\n ? filter.selected\n : [filter.selected]\n : [];\n } else {\n defaultValue = hasSelected ? filter.selected : null;\n }\n\n this.filtersForm.addControl(filter.key, this.fb.control(defaultValue));\n }\n\n this.filtersForm.valueChanges\n .pipe(takeUntilDestroyed(this.dr), debounceTime(150))\n .subscribe((val) => {\n const sanitized = this.sanitizeByOptions(val, this.filters);\n this.applyFiltersEvent.emit(sanitized);\n this.storeTableState(sanitized, this.FILTER_KEY);\n });\n }\n }\n\n /** Default selected columns = all non-hidden columns */\n private initializeSelectedColumns(): void {\n this._selectedColumns = this.columns.filter((col) => !col.hidden);\n }\n\n /** Compute which columns should be included in global text search */\n private initializeGlobalFilterFields(): void {\n this.globalFilterFields = this._selectedColumns\n .filter(\n (col) =>\n col.columnType === tableColumnType.TEXT && col.filter === undefined\n )\n .map((col) => col.field);\n }\n\n /**\n * Restore previously saved filters from localStorage (if present).\n * Does a patchValue without triggering valueChanges (emitEvent: false),\n * then manually emits the current value once.\n */\n private restoreFilterState(): void {\n const stored = localStorage.getItem(this.FILTER_KEY);\n if (!stored) return;\n\n try {\n const parsed = JSON.parse(stored);\n\n // zadrži samo poznate ključeve\n const validKeys = this.filters.map((f: any) => f.key);\n const filteredByKey = Object.keys(parsed)\n .filter((k) => validKeys.includes(k))\n .reduce((acc: any, k) => {\n acc[k] = parsed[k];\n return acc;\n }, {});\n\n const sanitized = this.sanitizeByOptions(filteredByKey, this.filters);\n\n this.filtersForm.patchValue(sanitized, { emitEvent: false });\n this.applyFiltersEvent.emit(this.filtersForm.getRawValue());\n } catch (e) {\n console.warn('Invalid filter state in localStorage:', e);\n }\n }\n\n // helper: remove all values that do not exist in the options for the given filter.key\n private sanitizeByOptions(formValue: any, filtersCfg: any[]): any {\n const cfgMap = new Map<string, any>(filtersCfg.map((f: any) => [f.key, f]));\n const cleaned: any = {};\n\n Object.keys(formValue ?? {}).forEach((key) => {\n const cfg = cfgMap.get(key);\n if (!cfg) return;\n\n const opts = (cfg.options ?? []).map(\n (o: any) => o?.key ?? o?.value ?? o?.label ?? o\n );\n const has = new Set(opts.map((v: any) => String(v).toLowerCase()));\n\n const keep = (v: any) =>\n v !== null &&\n v !== undefined &&\n v !== '' &&\n has.has(String(v?.key ?? v).toLowerCase());\n\n const val = formValue[key];\n\n if (Array.isArray(val)) {\n const filtered = val.filter(keep);\n if (filtered.length) cleaned[key] = filtered;\n } else if (keep(val)) {\n cleaned[key] = val;\n }\n });\n\n return cleaned;\n }\n\n /**\n * Restore previously saved visible columns set.\n * If saved state is invalid or outdated, fall back to default (all non-hidden).\n */\n private restoreColumnState(): void {\n const stored = localStorage.getItem(this.COLUMN_KEY);\n\n if (stored) {\n try {\n const storedColumns = JSON.parse(stored);\n const validStoredColumns = storedColumns.filter((storedCol: any) =>\n this.columns.some((col) => col.field === storedCol.field)\n );\n\n const selectedColumnKeys = validStoredColumns.map(\n (col: any) => col.field\n );\n this.selectedColumns = validStoredColumns;\n this.applyColumnsEvent.emit(selectedColumnKeys);\n return;\n } catch (e) {\n console.warn('Invalid column state in localStorage:', e);\n }\n }\n\n // Fallback → use all non-hidden columns\n const defaultKeys = this._selectedColumns.map((col) => col.field);\n this.selectedColumns = this._selectedColumns;\n this.applyColumnsEvent.emit(defaultKeys);\n }\n\n /** Bubble up global search changes (if you wire an input to this) */\n emitSearch(query: string): void {\n this.searchChange.emit(query);\n }\n\n /** Check if the filters form currently holds any meaningful values */\n hasValues(): boolean {\n return Object.values(this.filtersForm.value).some(\n (value) => value !== null && value !== undefined && value !== ''\n );\n }\n\n /** More robust check for any non-empty form value (arrays/objects included) */\n hasFormValues(): boolean {\n return Object.values(this.filtersForm.value).some((value) => {\n if (value === null || value === undefined || value === '') return false;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') return Object.keys(value).length > 0;\n return true;\n });\n }\n\n /**\n * Emit current filter form value to parent and close the popover.\n * If the form contains values, persist to localStorage.\n */\n applyFilters(): void {\n this.applyFiltersEvent.emit(this.filtersForm.value);\n this.columnsPopover?.hide();\n\n if (this.hasValues()) {\n this.storeTableState(this.filtersForm.value, this.FILTER_KEY);\n }\n }\n\n /**\n * Clear all filters: reset form, wipe persisted state, and emit.\n */\n resetFilters(): void {\n this.filtersForm.reset();\n this.storeTableState(null, this.FILTER_KEY);\n this.applyFilters();\n }\n\n /**\n * Emit the selected column field keys to parent and persist selection.\n */\n applyColumns(): void {\n const selectedColumnKeys = this._selectedColumns.map((col) => col.field);\n this.applyColumnsEvent.emit(selectedColumnKeys);\n this.storeTableState(this.selectedColumns, this.COLUMN_KEY);\n }\n\n /** Reset visible columns to all available, then emit/persist. */\n resetColumns(): void {\n this._selectedColumns = [...this.columns];\n this.applyColumns();\n }\n\n /** Thin wrapper to persist a JSON-serializable state in localStorage */\n storeTableState(state: any, key: string): void {\n const isEmpty = (v: any) =>\n v == null ||\n (typeof v === 'object' &&\n !Array.isArray(v) &&\n Object.keys(v).length === 0) ||\n (Array.isArray(v) && v.length === 0);\n\n if (isEmpty(state)) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(state));\n }\n }\n\n /**\n * Handler for the PrimeNG MultiSelect clear button.\n * Ensures multiselect controls are set to empty arrays instead of null.\n */\n clearSelectFilter(key: any) {\n this.filtersForm.get(key)?.setValue([]);\n this.storeTableState(this.filtersForm.value, this.FILTER_KEY);\n }\n\n /** Getter/Setter that keeps selectedColumns in the original column order */\n get selectedColumns(): TableColumn[] {\n return this._selectedColumns;\n }\n set selectedColumns(val: TableColumn[]) {\n this._selectedColumns = this.columns.filter((col) =>\n val.some((v) => v.field === col.field)\n );\n }\n\n /** Bubble up action clicks with the current selected items (for bulk actions) */\n handleActionClick(action: any): void {\n this.actionClick.emit({ action, selectedItems: this.selectedItems });\n }\n}\n","<div class=\"flex justify-content-between border-bottom-1 border-300 p-2\">\n <!-- Global Actions & Tabs -->\n <div class=\"flex align-items-center gap-2\">\n <phoenix-data-table-tabs\n [attr.data-cy]=\"'table-select-button-' + tableConfiguration.tabs?.key\"\n [actions]=\"tableConfiguration.tabs\"\n (actionClick)=\"actionClick.emit($event)\"\n >\n </phoenix-data-table-tabs>\n <ng-container *ngFor=\"let action of tableConfiguration.globalActions\">\n <phoenix-data-table-action\n [actionConfig]=\"action\"\n (actionClick)=\"actionClick.emit($event)\"\n >\n </phoenix-data-table-action>\n </ng-container>\n </div>\n\n <div class=\"flex align-items-center gap-2\">\n <!-- Caption Filters (shown outside popover) -->\n @for(control of filters; track control.key) { @if(control.isInCaption) {\n @switch(control.type) { @case ('dropdown') {\n <p-select\n class=\"w-12rem\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n [formControl]=\"$any(filtersForm.get(control.key))\"\n [showClear]=\"true\"\n placeholder=\"{{ control.label | translate }}\"\n (onClear)=\"clearSelectFilter(control.key)\"\n />\n } @case ('multiselect') {\n <p-multiselect\n class=\"w-12rem\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n optionValue=\"key\"\n [formControl]=\"$any(filtersForm.get(control.key))\"\n [showClear]=\"true\"\n placeholder=\"{{ control.label | translate }}\"\n (onClear)=\"clearSelectFilter(control.key)\"\n />\n } } } }\n <!-- Filter, Columns, Search, More -->\n @if(tableConfiguration.hasFilter){ @if( hasFormValues() ){\n <p-overlaybadge class=\"p-2\" severity=\"danger\">\n <span\n pRipple\n class=\"cursor-pointer\"\n (click)=\"filtersPopover.toggle($event)\"\n >\n <i class=\"pi pi-filter\"></i>\n </span>\n </p-overlaybadge>\n } @else {\n <span\n pRipple\n class=\"cursor-pointer p-2\"\n (click)=\"filtersPopover.toggle($event)\"\n >\n <i class=\"pi pi-filter\"></i>\n </span>\n } } @if(tableConfiguration.hasColumns){ @if( columns.length !=\n _selectedColumns.length ){\n <p-overlaybadge class=\"p-2\" severity=\"danger\">\n <span\n pRipple\n class=\"cursor-pointer\"\n (click)=\"columnsPopover.toggle($event)\"\n >\n <i class=\"pi pi-sliders-v\"></i>\n </span>\n </p-overlaybadge>\n } @else {\n <span\n pRipple\n class=\"cursor-pointer p-2\"\n (click)=\"columnsPopover.toggle($event)\"\n >\n <i class=\"pi pi-sliders-v\"></i>\n </span>\n\n } }\n\n <div class=\"flex\">\n @if(tableConfiguration.hasSearch){\n <p-iconfield>\n <p-inputicon styleClass=\"pi pi-search\" />\n <input\n type=\"text\"\n (input)=\"emitSearch($any($event.target).value)\"\n pInputText\n placeholder=\"{{ 'SEARCH_KEYWORD' | translate }}\"\n />\n </p-iconfield>\n } @if(tableConfiguration.hasMore){\n <phoenix-data-table-action\n *ngIf=\"tableConfiguration?.hasMore && tableConfiguration?.moreActions\"\n [actionConfig]=\"tableConfiguration.moreActions\"\n (actionClick)=\"actionClick.emit($event)\"\n ></phoenix-data-table-action>\n }\n </div>\n </div>\n</div>\n\n<!-- Popover Filters -->\n<p-popover #filtersPopover>\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\">{{ \"LABELS.FILTERS\" | translate }}</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)=\"applyFilters()\"\n /> -->\n\n <p-button\n icon=\"pi pi-refresh\n \"\n [text]=\"true\"\n label=\"{{ 'ACTION.CLEAR' | translate }}\"\n class=\"mr-2\"\n (click)=\"resetFilters()\"\n />\n </div>\n </div>\n\n <form [formGroup]=\"filtersForm\">\n @for(control of filters; track control.key) { @if(!control.isInCaption) {\n @switch(control.type) { @case ('checkbox') {\n <div class=\"mb-2\">\n <p-checkbox\n binary=\"true\"\n type=\"checkbox\"\n [formControlName]=\"control.key\"\n />\n <label class=\"ml-2\">{{ control.label | translate }}</label>\n </div>\n } @case ('dropdown') {\n <div class=\"mb-2\">\n <label class=\"mb-2 block\">{{ control.label | translate }}</label>\n <p-select\n class=\"w-full\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n [formControlName]=\"control.key\"\n [showClear]=\"true\"\n (onClear)=\"clearSelectFilter(control.key)\"\n />\n </div>\n } @case ('multiselect') {\n <div class=\"mb-2\">\n <p-floatlabel variant=\"on\">\n <p-multiselect\n class=\"w-full\"\n [options]=\"control.options\"\n optionLabel=\"label\"\n optionValue=\"key\"\n [formControlName]=\"control.key\"\n [showClear]=\"true\"\n (onClear)=\"clearSelectFilter(control.key)\"\n />\n <label for=\"username\">{{ control.label | translate }}</label>\n </p-floatlabel>\n <!-- <label class=\"mb-2 block\">{{ control.label }}</label> -->\n </div>\n } @case ('person-dropdown'){\n <label class=\"mb-2 block\">{{ control.label | translate }}</label>\n <p-multiselect\n [options]=\"control.options\"\n optionLabel=\"label\"\n [formControlName]=\"control.key\"\n class=\"w-full\"\n [showClear]=\"true\"\n >\n <ng-template #selectedItem let-selectedOption>\n <div class=\"flex items-center gap-2\" *ngIf=\"selectedOption\">\n <p-avatar\n [label]=\"selectedOption.label.charAt(0).toUpperCase()\"\n class=\"mr-1\"\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n shape=\"circle\"\n ></p-avatar>\n <div>{{ selectedOption.label | translate }}</div>\n </div>\n </ng-template>\n <ng-template let-person #item>\n <div class=\"flex align-items-center gap-2\">\n <p-avatar\n [label]=\"person.label.charAt(0).toUpperCase()\"\n class=\"mr-1\"\n [style]=\"{ 'background-color': '#9c27b0', color: '#ffffff' }\"\n shape=\"circle\"\n ></p-avatar>\n <div>{{ person.label | translate }}</div>\n </div>\n </ng-template>\n <ng-template #dropdownicon>\n <i class=\"pi pi-user\"></i>\n </ng-template>\n <!-- <ng-template #header>\n <div class=\"font-medium p-3\">Available Countries</div>\n </ng-template> -->\n <!-- <ng-template #footer>\n <div class=\"p-3\">\n <p-button label=\"Add New\" fluid severity=\"secondary\" text size=\"small\" icon=\"pi pi-plus\" />\n </div>\n </ng-template> -->\n </p-multiselect>\n } @default{\n <div>{{ control.type }}</div>\n } } } }\n </form>\n </div>\n</p-popover>\n\n<!-- Popover Columns -->\n<p-popover #columnsPopover>\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\">{{ \"LABELS.COLUMNS\" | translate }}</div>\n <div>\n <p-button\n icon=\"pi pi-eye\"\n [text]=\"true\"\n label=\"{{ 'ACTION.SHOW_ALL' | translate }}\"\n class=\"mr-2\"\n (click)=\"resetColumns()\"\n />\n </div>\n </div>\n\n <p-listbox\n [options]=\"columns\"\n [ngModel]=\"_selectedColumns\"\n (ngModelChange)=\"onColumnSelectionChange($event)\"\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-popover>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'isBoolean',\n standalone: true,\n pure: false,\n})\nexport class IsBooleanPipe implements PipeTransform {\n transform(value: string | null | undefined): any {\n return typeof value === 'boolean';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\n@Pipe({\n name: 'cell',\n standalone: true,\n pure: false,\n})\nexport class TableCellPipe implements PipeTransform {\n constructor(private datePipe: DatePipe) {}\n\n transform(obj: any, col: any, dateFormat: string = 'dd.MM.yyyy'): any {\n const value = this.getNestedValue(obj, col.field);\n if (!value) return '--';\n\n switch (col.columnType) {\n case 'DATE':\n return this.datePipe.transform(value, dateFormat);\n\n case 'DATE_COMPLEX':\n return this.datePipe.transform(value, dateFormat + ' | HH:mm');\n\n case 'RICH_TEXT':\n return value;\n\n case 'CUSTOM':\n return col.customRenderer ? col.customRenderer(value) : value;\n\n default:\n return value?.toString();\n }\n }\n\n getNestedValue(obj: any, path: string): string {\n if (!obj || !path) return '';\n\n let value: any;\n\n if (!path.includes('.')) {\n value = obj[path];\n } else {\n value = path.split('.').reduce((acc, part) => acc?.[part], obj);\n }\n\n return value != null ? value.toString() : '';\n }\n}\n","import jsPDF from 'jspdf';\nimport autoTable from 'jspdf-autotable';\nimport * as XLSX from 'xlsx';\nimport { DatePipe } from '@angular/common';\nimport { tableButtonContext, tableColumnType } from './dataTable.enum';\nimport { TableConfiguration } from './dataTable.interface';\n\n/**\n * Splits table actions into context-specific arrays (global, row, bulk, more).\n * This controls where buttons will appear (toolbar, row menu, etc.).\n */\nexport function resolveActions(value: TableConfiguration): any {\n const transformed: any = {\n globalActions: [],\n rowActions: [],\n bulkActions: [],\n moreActions: [],\n ...value,\n };\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 case tableButtonContext.MORE:\n transformed.moreActions.push(a);\n break;\n default:\n break;\n }\n });\n\n // Enable global filter by default (unless explicitly disabled)\n transformed.globalFilter =\n transformed.globalFilter === undefined ? true : transformed.globalFilter;\n\n return transformed;\n}\n\n/**\n * Defines a column that can be exported (visible in PDF/CSV).\n */\nexport interface ExportColumn {\n field: string; // Property name in row object (supports dot notation)\n header: string; // i18n key or plain text (will be translated via t())\n columnType?: string; // Column type (DATE, BOOLEAN, etc.), optional fallback\n}\n\n/* ----------------------------- Helpers ----------------------------- */\n\n/**\n * Safely retrieves nested object property using dot notation.\n * Example: \"user.address.city\" → row.user.address.city\n */\nfunction getNestedValue(obj: any, path: string): any {\n try {\n if (obj && Object.prototype.hasOwnProperty.call(obj, path)) {\n return obj[path]?.key ?? obj[path];\n }\n const keys = path.split('.');\n let current = obj;\n for (const key of keys) {\n if (current && typeof current === 'object' && key in current) {\n current = current[key];\n } else {\n return undefined;\n }\n }\n return current?.key ?? current;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Sanitizes text:\n * - Removes HTML tags\n * - Replaces &nbsp; and non-breaking spaces\n * - Normalizes Unicode (keeps German umlauts and Serbian letters)\n */\nfunction sanitizeText(v: any): string {\n const s = (v ?? '').toString();\n const noHtml = s.replace(/<[^>]*>/g, '');\n return noHtml\n .replace(/&nbsp;/g, ' ')\n .replace(/\\u00A0/g, ' ')\n .normalize('NFKC')\n .trim();\n}\n\n/**\n * Checks if a CSV value must be quoted (contains delimiter, quotes or newlines).\n */\nfunction needsQuotesCSV(value: string, delimiter: string): boolean {\n const pattern = new RegExp(`[\\\"\\\\n${delimiter === ',' ? ',' : ';'}]`);\n return pattern.test(value);\n}\n\n/**\n * Formats a date value using Angular DatePipe and the provided locale.\n */\nfunction formatDateValue(val: any, pattern: string, locale: string): string {\n try {\n const d = new Date(val);\n if (!isNaN(d.getTime())) {\n const dp = new DatePipe(locale || 'en-US');\n return dp.transform(d, pattern) ?? '';\n }\n } catch {}\n return String(val ?? '');\n}\n\n/* ------------------------- Display resolver ------------------------ */\n\n/**\n * Converts raw row values into human-readable strings for export.\n * Handles various column types: DATE, LIST, BOOLEAN, etc.\n */\nfunction getDisplayValue(\n row: any,\n col: ExportColumn,\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t?: (k: string) => string,\n locale: string = 'en-US'\n): string {\n const field = col.field;\n const type = columnTypeMap[field] || col.columnType;\n const val = getNestedValue(row, field);\n\n if (val === null || val === undefined) return '';\n\n switch (type) {\n case columnTypeEnum.DATE:\n return formatDateValue(val, 'dd.MM.yyyy HH:mm', locale);\n\n case columnTypeEnum.DATE_WITHOUT_TIME:\n return formatDateValue(val, 'dd.MM.yyyy', locale);\n\n case columnTypeEnum.TAG:\n return (val?.name ?? val)?.toString();\n\n case columnTypeEnum.LIST_TAG:\n case columnTypeEnum.LIST:\n return Array.isArray(val)\n ? val.map((x: any) => x?.name ?? x).join(', ')\n : String(val);\n\n case columnTypeEnum.OBJ_TAG:\n return (val?.value ?? val)?.toString();\n\n case columnTypeEnum.BOOLEAN: {\n // Translate YES/NO if translation function is provided\n const yes = t ? t('ACTION.YES') : 'Yes';\n const no = t ? t('ACTION.NO') : 'No';\n return val === true || val === 'true' ? yes : no;\n }\n\n case columnTypeEnum.TEXT_AREA:\n case columnTypeEnum.TEXT:\n case columnTypeEnum.TIMEPERIOD:\n default:\n if (typeof val === 'object' && !Array.isArray(val)) {\n const prefer = val.name ?? val.label ?? val.value ?? val.key ?? '';\n return prefer ? String(prefer) : JSON.stringify(val);\n }\n return String(val);\n }\n}\n\n/* -------------------------- Export: PDF ---------------------------- */\n\nexport interface ExportOptions {\n locale?: string; // e.g. 'de-DE' for German date format\n delimiter?: ',' | ';'; // CSV delimiter (',' for EN, ';' for DE Excel)\n sheetName?: string; // Excel sheet name (default: 'Sheet1')\n autoWidth?: boolean; // Auto-adjust column widths (default: true)\n}\n\nfunction trimExcelLineBreaks(s: string): string {\n return s\n .replace(/^[\\r\\n]+/, '') // remove leading line breaks\n .replace(/[\\r\\n]+$/, '') // remove trailing line breaks\n .replace(/(\\r?\\n){2,}/g, '\\n'); // collapse multiple to a single\n}\n\nfunction collapseInlineSpaces(s: string): string {\n if (!s) return '';\n return s\n .replace(/\\u00A0/g, ' ')\n .replace(/[^\\S\\r\\n]+/g, ' ')\n .trim();\n}\n\n/**\n * Exports table rows to a PDF file.\n * - Uses jsPDF + autoTable\n * - Respects only visible columns\n * - Translates headers with provided translation function\n */\nexport function exportRowsToPdf(\n columns: ExportColumn[],\n rows: any[],\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t: (key: string) => string,\n fileName = 'table.pdf',\n options: ExportOptions = {}\n): void {\n if (!columns?.length) return;\n const locale = options.locale || 'en-US';\n\n const head = [columns.map((c) => sanitizeText(t(c.header)))];\n\n const body = (rows ?? []).map((row) =>\n columns.map((col, idx) => {\n const type = columnTypeMap[col.field] || col.columnType;\n\n if (type === columnTypeEnum.LIST || type === columnTypeEnum.LIST_TAG) {\n // make each item its own line; keep items intact (no bullets)\n const rawVal = getNestedValue(row, col.field);\n const items = Array.isArray(rawVal)\n ? rawVal.map((x: any) => x?.name ?? x)\n : String(\n getDisplayValue(\n row,\n col,\n columnTypeMap,\n columnTypeEnum,\n t,\n locale\n )\n ).split(/,\\s*/);\n\n const cleaned = items\n .map((it) => collapseInlineSpaces(String(it)))\n .filter(Boolean);\n\n return sanitizeText(cleaned.join(',\\n')); // hard break after commas\n }\n\n const raw = String(\n getDisplayValue(row, col, columnTypeMap, columnTypeEnum, t, locale)\n );\n return sanitizeText(collapseInlineSpaces(raw));\n })\n );\n\n const doc = new jsPDF({ orientation: 'landscape', unit: 'pt', format: 'A4' });\n\n // Build columnStyles dynamically: all LIST/LIST_TAG columns get min width\n const columnStyles: Record<number, any> = {};\n\n columns.forEach((col, idx) => {\n const type = columnTypeMap[col.field] || col.columnType;\n if (type === columnTypeEnum.LIST || type === columnTypeEnum.LIST_TAG) {\n columnStyles[idx] = { cellWidth: 150 }; // set your min width\n }\n });\n\n autoTable(doc, {\n head,\n body,\n styles: {\n fontSize: 9,\n cellPadding: 5,\n overflow: 'linebreak',\n valign: 'top',\n },\n columnStyles:\n Object.keys(columnStyles).length > 0 ? columnStyles : undefined,\n margin: { top: 36, right: 24, bottom: 36, left: 24 },\n });\n\n doc.save(fileName);\n}\n\n/* -------------------------- Export: Excel -------------------------- */\n\n/**\n * Exports table rows to an Excel file (.xlsx).\n * - Includes only visible columns\n * - Translates headers via provided translation function\n * - Supports auto-width columns and custom sheet names\n * - Handles various data types including dates, booleans, and lists\n */\nexport function exportRowsToExcel(\n columns: ExportColumn[],\n rows: any[],\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t: (key: string) => string,\n fileName = 'table.xlsx',\n options: ExportOptions = {}\n): void {\n if (!columns?.length) return;\n\n const locale = options.locale || 'en-US';\n const sheetName = options.sheetName || 'Sheet1';\n const autoWidth = options.autoWidth !== false; // default to true\n\n // Prepare headers\n const headers = columns.map((c) => sanitizeText(t(c.header)));\n\n // Prepare data rows\n const data = (rows ?? []).map((row) =>\n columns.map((col) => {\n const raw = getDisplayValue(\n row,\n col,\n columnTypeMap,\n columnTypeEnum,\n t,\n locale\n );\n // Convert escaped \\n to real newline characters\n let fixedText =\n typeof raw === 'string' ? raw.replace(/\\\\n/g, '\\n') : String(raw);\n\n // Preserve newlines during sanitization by temporarily replacing them\n const tempMarker = '___NEWLINE___';\n const withMarker = fixedText.replace(/\\r?\\n/g, tempMarker);\n const sanitized = sanitizeText(withMarker);\n // Restore newlines after sanitization\n fixedText = sanitized.replace(new RegExp(tempMarker, 'g'), '\\n');\n\n return fixedText;\n })\n );\n\n // Create worksheet data\n const worksheetData = [headers, ...data];\n\n // Create workbook and worksheet\n const workbook = XLSX.utils.book_new();\n const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);\n\n // --- ✅ FIX: Apply wrapText to all cells so newlines show in Excel\n for (const cellAddress in worksheet) {\n if (Object.prototype.hasOwnProperty.call(worksheet, cellAddress)) {\n if (cellAddress[0] === '!') continue; // skip metadata\n const cell = worksheet[cellAddress];\n if (!cell.s) cell.s = {};\n if (!cell.s.alignment) cell.s.alignment = {};\n cell.s.alignment.wrapText = true;\n }\n }\n\n // Auto-adjust column widths if enabled\n if (autoWidth) {\n const colWidths = columns.map((col, index) => {\n const maxLength = Math.max(\n headers[index]?.length || 0,\n ...data.map((row) => (row[index] || '').toString().length)\n );\n return { wch: Math.min(Math.max(maxLength + 2, 10), 50) }; // min 10, max 50\n });\n worksheet['!cols'] = colWidths;\n }\n\n // Add worksheet to workbook\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n\n // Generate Excel file and trigger download\n XLSX.writeFile(workbook, fileName);\n}\n\n/* -------------------------- Export: CSV ---------------------------- */\n\n/**\n * Exports table rows to a CSV file.\n * - Includes only visible columns\n * - Translates headers via provided translation function\n * - Escapes quotes and adds UTF-8 BOM (so Excel reads special chars correctly)\n */\nexport function exportRowsToCsv(\n columns: ExportColumn[],\n rows: any[],\n columnTypeMap: Record<string, string>,\n columnTypeEnum: any,\n t: (key: string) => string,\n fileName = 'table.csv',\n options: ExportOptions = {}\n): void {\n if (!columns?.length) return;\n\n const locale = options.locale || 'en-US';\n const delimiter = options.delimiter || ',';\n\n const headers = columns.map((c) => sanitizeText(t(c.header)));\n const lines = (rows ?? []).map((row) =>\n columns\n .map((col) => {\n const raw = getDisplayValue(\n row,\n col,\n columnTypeMap,\n columnTypeEnum,\n t,\n locale\n );\n // keep multiline, but remove useless blank line at start/end\n const v = trimExcelLineBreaks(sanitizeText(raw));\n const safe = v.replace(/\"/g, '\"\"'); // escape double quotes\n return needsQuotesCSV(v, delimiter) ? `\"${safe}\"` : safe;\n })\n .join(delimiter)\n );\n\n const csv = [headers.join(delimiter), ...lines].join('\\n');\n\n // Add UTF-8 BOM → Excel correctly recognizes UTF-8 (handles č, ć, š, đ, ž, ä, ö, ü, ß, etc.)\n const BOM = '\\uFEFF';\n const blob = new Blob([BOM + csv], { type: 'text/csv;charset=utf-8;' });\n\n const a = document.createElement('a');\n const url = URL.createObjectURL(blob);\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\n/* --------------------------- File name ----------------------------- */\n\n/**\n * Builds a file name with pattern: tableKey_YYYY-MM-DD_HH-mm.ext\n * Example: risks_2025-09-10_14-32.xlsx\n */\nexport function buildFileName(baseKey: string, ext: string = 'xlsx'): string {\n const now = new Date();\n const yyyy = now.getFullYear();\n const MM = String(now.getMonth() + 1).padStart(2, '0');\n const dd = String(now.getDate()).padStart(2, '0');\n const hh = String(now.getHours()).padStart(2, '0');\n const mm = String(now.getMinutes()).padStart(2, '0');\n return `${baseKey}_${yyyy}-${MM}-${dd}_${hh}-${mm}.${ext}`;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n signal,\n} from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { ChipModule } from 'primeng/chip';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { Table, TableLazyLoadEvent, TableModule } from 'primeng/table';\nimport { TagModule } from 'primeng/tag';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TimePeriodPipe } from '../../../pipes/time-period.pipe';\nimport { InitialsPipe } from '../../../utils/initials.pipe';\nimport { PhoenixDataTableActionComponent } from '../phoenix-data-table-action/phoenix-data-table-action.component';\nimport { TableCaptionComponent } from '../table-caption/table-caption.component';\nimport {\n tableButtonContext,\n tableColumnType,\n tableSelectionType,\n} from '../utils/dataTable.enum';\nimport { IsBooleanPipe } from '../utils/is-boolean.pipe';\nimport { TableCellPipe } from '../utils/table-cell.pipe';\nimport {\n buildFileName,\n exportRowsToExcel,\n exportRowsToPdf,\n} from '../utils/table.utils';\n\nconst DEFAULT_MORE_ACTIONS = {\n context: tableButtonContext.MORE,\n type: 'menu',\n buttonType: 'multiselect',\n items: [\n { key: 'EXPORT_PDF', label: 'ACTION.EXPORT_PDF', icon: 'pi pi-file-pdf' },\n {\n key: 'EXPORT_EXCEL',\n label: 'ACTION.EXPORT_EXCEL',\n icon: 'pi pi-file-excel',\n },\n ],\n};\n\n@Component({\n selector: 'phoenix-table',\n standalone: true,\n imports: [\n CommonModule,\n TableModule,\n TableCaptionComponent,\n TranslateModule,\n PhoenixDataTableActionComponent,\n TagModule,\n AvatarModule,\n TooltipModule,\n TableCellPipe,\n SkeletonModule,\n PanelModule,\n OverlayPanelModule,\n ChipModule,\n InitialsPipe,\n TimePeriodPipe,\n IsBooleanPipe,\n BadgeModule,\n ],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n})\nexport class TableComponent implements OnChanges {\n @ViewChild('dt') dt!: Table;\n\n /** Input data for the table. Automatically updates original and derived states. */\n @Input() set data(value: any[]) {\n this.originalData = value ?? [];\n this.allData = [...value];\n this.totalRecords = this.allData.length;\n this.loadLazyData({ first: 0, rows: 100 });\n }\n\n /** Column definitions provided by the parent. */\n @Input() columns: any[] = [];\n /** Preselected columns (used to restore user preferences). */\n @Input() selectedColumnsInput: any[] = [];\n /** Table configuration (key, toggles, options). */\n @Input() tableConfiguration: any;\n /** Dynamic filters passed from parent. */\n @Input() filters: any;\n\n /** Emits when a row-level or global action is triggered. */\n @Output() actionClick = new EventEmitter<any>();\n /** Emits when a row is clicked or selected. */\n @Output() rowSelection = new EventEmitter<any>();\n /** Emits when checkbox selection changes. */\n @Output() checkBoxSelection = new EventEmitter<any>();\n /** Emits when columns are saved or changed. */\n @Output() saveColumns = new EventEmitter<string[]>();\n\n /** i18n translation service. */\n translateService = inject(TranslateService);\n /** Change detection reference for delayed updates. */\n private cdr = inject(ChangeDetectorRef);\n\n /** Full dataset after filters/search/sorting. */\n allData: any[] = [];\n /** Immutable copy of the original dataset. */\n originalData: any[] = [];\n /** Data currently bound to the UI table. */\n tableData: any[] = [];\n\n /** Current selection of rows. */\n selectedItems = signal<any[]>([]);\n /** Columns currently visible in the UI. */\n selectedColumns: any[] = [];\n\n /** Text from global search input. */\n searchQuery = '';\n /** Indicates if multiple rows are selected. */\n bulkMode = false;\n /** Number of records after filtering/search. */\n totalRecords = 0;\n /** Index of the last record loaded (for virtual scroll). */\n lastLoadedIndex = 0;\n\n /** Enum references for templates. */\n selectionTypeEnum = tableSelectionType;\n columnTypeEnum = tableColumnType;\n /** Date format string for date columns. */\n dateFormat!: string;\n /** Active filter state. */\n private currentFilters: { [key: string]: any } = {};\n /** Column field → type mapping for sorting/formatting. */\n columnTypeMap: Record<string, string> = {};\n\n /**\n * Lifecycle hook: triggered when inputs change.\n * Resets selection, maps columns, sets defaults for actions.\n */\n ngOnChanges(changes: SimpleChanges): void {\n this.selectedItems.set([]);\n\n // Map column field → type for sorting/export\n if (this.columns?.length > 0) {\n this.columnTypeMap = {};\n for (const col of this.columns) {\n this.columnTypeMap[col.field] = col.columnType;\n }\n\n const nextSelected = this.selectedColumnsInput?.length\n ? this.selectedColumnsInput\n : this.columns;\n\n // Defer update to avoid NG0100 errors\n Promise.resolve().then(() => {\n this.selectedColumns = [...nextSelected];\n this.cdr.markForCheck();\n });\n }\n\n // Provide default \"more actions\" if not defined\n if (!this.tableConfiguration?.moreActions) {\n const cfg = this.tableConfiguration;\n Promise.resolve().then(() => {\n this.tableConfiguration = { ...cfg, moreActions: DEFAULT_MORE_ACTIONS };\n this.cdr.markForCheck();\n });\n }\n }\n\n /**\n * Handles lazy loading of data (paging, sorting).\n * Supports multi-column sorting and slicing by index.\n */\n loadLazyData(event: TableLazyLoadEvent) {\n let { first = 0, rows = 100, multiSortMeta } = event;\n rows = rows ?? 100;\n\n let sortedData = [...this.allData];\n\n // Multi-column sorting\n if (multiSortMeta?.length) {\n sortedData.sort((a, b) => {\n for (const sortMeta of multiSortMeta) {\n const field = sortMeta.field!;\n const order = sortMeta.order!;\n const valueA = this.getComparableValue(\n this.getNestedValue(a, field),\n field\n );\n const valueB = this.getComparableValue(\n this.getNestedValue(b, field),\n field\n );\n if (valueA < valueB) return -1 * order;\n if (valueA > valueB) return 1 * order;\n }\n return 0;\n });\n }\n\n const paged = sortedData.slice(first, first + rows);\n this.tableData = sortedData; // Replace with `paged` to enable paging\n this.lastLoadedIndex = first + rows;\n }\n\n /**\n * Converts any value into a form usable for sorting.\n * Handles numbers, strings, dates, ranges, arrays, and objects.\n */\n private getComparableValue(val: any, field?: string): string | number {\n if (val === null || val === undefined) return '';\n\n const columnType = field ? this.columnTypeMap[field] : null;\n\n if (typeof val === 'number') return val;\n\n if (typeof val === 'string') {\n if (columnType === this.columnTypeEnum.DATE) {\n const parsedDate = Date.parse(val);\n return isNaN(parsedDate) ? val.toLowerCase() : parsedDate;\n }\n return val.toLowerCase();\n }\n\n if (val instanceof Date) return val.getTime();\n\n if (typeof val === 'object') {\n // Handle ranges\n if (val.from && val.to) {\n const from = Date.parse(val.from);\n const to = Date.parse(val.to);\n return isNaN(from) || isNaN(to) ? '' : from + to;\n }\n\n // Handle arrays\n if (Array.isArray(val) && val.length > 0) {\n return this.getComparableValue(val[0], field);\n }\n\n // Fallback: check common properties\n const priorityFields = ['name', 'value', 'label', 'key', 'date'];\n for (const key of priorityFields) {\n if (val[key] !== undefined && val[key] !== null) {\n return this.getComparableValue(val[key], field);\n }\n }\n\n // Last resort: first primitive property\n for (const v of Object.values(val)) {\n if (typeof v === 'string' || typeof v === 'number') {\n return this.getComparableValue(v, field);\n }\n }\n }\n\n return '';\n }\n\n /**\n * Executes global search across all records and fields.\n * Preserves active filters if applied.\n */\n onSearch(query: string) {\n const trimmed = (query ?? '').trim().toLowerCase();\n this.searchQuery = trimmed;\n\n const baseData =\n Object.keys(this.currentFilters).length > 0\n ? this.getFilteredData()\n : this.originalData;\n\n if (trimmed) {\n const filtered = baseData.filter((item) =>\n Object.values(item).some((value) => this.matchesQuery(value, trimmed))\n );\n this.allData = filtered;\n } else {\n this.allData = [...baseData];\n }\n\n this.totalRecords = this.allData.length;\n this.loadLazyData({ first: 0, rows: 100 });\n }\n\n /**\n * Re-applies filters on the original dataset.\n * Used internally to recompute data after filter state changes.\n */\n private getFilteredData() {\n return this.originalData.filter((item) => {\n return Object.keys(this.currentFilters).every((key) => {\n const filterValue = this.currentFilters[key];\n\n if (\n !filterValue ||\n (Array.isArray(filterValue) && filterValue.length === 0)\n ) {\n return true;\n }\n\n const itemValue = this.getNestedValue(item, key);\n\n if (Array.isArray(filterValue)) {\n return filterValue.some((option) => {\n const optionKey = option?.key || option;\n return (\n itemValue?.toString().toLowerCase() ===\n optionKey?.toString().toLowerCase()\n );\n });\n }\n\n const singleFilterValue = filterValue?.key || filterValue;\n return singleFilterValue\n ? itemValue?.toString().toLowerCase() ===\n singleFilterValue.toString().toLowerCase()\n : true;\n });\n });\n }\n\n /**\n * Applies new filter values to the dataset.\n * Handles primitives, objects, and LIST columns (arrays of values).\n */\n applyFilters(filters: Record<string, any>) {\n const isEmpty = (v: any) =>\n v === null ||\n v === undefined ||\n (typeof v === 'string' && v.trim() === '') ||\n (Array.isArray(v) && v.length === 0);\n\n const extractKey = (v: any) =>\n v && typeof v === 'object' && 'key' in v ? v.key : v;\n\n const toPrimitive = (v: any) => {\n if (typeof v === 'string') {\n const s = v.trim().toLowerCase();\n if (s === 'true') return true;\n if (s === 'false') return false;\n const n = Number(v);\n if (!Number.isNaN(n) && v !== '') return n;\n return s;\n }\n return v;\n };\n\n const eq = (a: any, b: any) => {\n const A = toPrimitive(a);\n const B = toPrimitive(b);\n if (typeof A === 'boolean' || typeof B === 'boolean') return A === B;\n if (typeof A === 'number' || typeof B === 'number')\n return Number(A) === Number(B);\n return String(A ?? '').toLowerCase() === String(B ?? '').toLowerCase();\n };\n\n // Normalize LIST values for consistent comparison\n const normalizeListValues = (arr: any[]): any[] => {\n return arr\n .map((it) => {\n if (it == null) return null;\n if (typeof it !== 'object') return it;\n return (\n it.name ??\n it.label ??\n it.value ??\n it.uuid ??\n it.id ??\n JSON.stringify(it)\n );\n })\n .filter((x) => x !== null && x !== undefined && x !== '');\n };\n\n this.currentFilters = { ...filters };\n\n this.allData = this.originalData.filter((item) =>\n Object.keys(filters).every((key) => {\n const fv = filters[key];\n if (isEmpty(fv)) return true;\n\n const itemValue = this.getNestedValue(item, key);\n\n if (Array.isArray(fv)) {\n const selected = fv.map(extractKey);\n if (Array.isArray(itemValue)) {\n const flat = normalizeListValues(itemValue);\n return selected.some((opt) => flat.some((v) => eq(v, opt)));\n }\n return selected.some((opt) => eq(itemValue, opt));\n }\n\n const single = extractKey(fv);\n if (Array.isArray(itemValue)) {\n const flat = normalizeListValues(itemValue);\n return flat.some((v) => eq(v, single));\n }\n\n return eq(itemValue, single);\n })\n );\n\n this.totalRecords = this.allData.length;\n this.lastLoadedIndex = 0;\n this.tableData = [];\n this.loadLazyData({ first: 0, rows: 100 });\n }\n\n /** Determines if a row can be selected based on `canSelect`. */\n isRowSelectable(event: any): boolean {\n return typeof event.data?.canSelect === 'boolean'\n ? event.data.canSelect\n : true;\n }\n\n /** Retrieves a nested value from an object given a dot-path. */\n private getNestedValue(obj: any, path: string): any {\n try {\n if (obj && Object.prototype.hasOwnProperty.call(obj, path)) {\n return obj[path]?.key || obj[path];\n }\n const keys = path.split('.');\n let current = obj;\n\n for (const key of keys) {\n if (current && typeof current === 'object' && key in current) {\n current = current[key];\n } else {\n return undefined;\n }\n }\n\n return current?.key || current;\n } catch {\n return undefined;\n }\n }\n\n /** Updates selected columns and triggers change detection. */\n applyColumns(selected: any[]) {\n const next = this.columns.filter((col) => selected.includes(col.field));\n Promise.resolve().then(() => {\n this.selectedColumns = next;\n this.cdr.markForCheck();\n });\n }\n\n /** Emits row selection events. */\n onRowClick(event: Event, rowData: any) {\n event.stopPropagation();\n this.rowSelection.emit(rowData);\n }\n\n /** Updates checkbox selection state and emits changes. */\n onSelectionChange(selected: any[]) {\n this.selectedItems.set(selected);\n this.bulkMode = selected.length > 0;\n this.checkBoxSelection.emit(selected);\n }\n\n /**\n * Handles table action clicks.\n * Supports PDF/CSV exports with localized labels.\n */\n handleActionClick(event: any) {\n if (event?.action?.key === 'EXPORT_PDF') {\n const file = this.tableConfiguration?.key\n ? buildFileName(this.tableConfiguration.key, 'pdf')\n : buildFileName('table', 'pdf');\n\n exportRowsToPdf(\n this.selectedColumns,\n this.tableData,\n this.columnTypeMap,\n this.columnTypeEnum,\n (k: string) => this.translateService.instant(k),\n file\n );\n return;\n }\n\n if (event?.action?.key === 'EXPORT_EXCEL') {\n const file = this.tableConfiguration?.key\n ? buildFileName(this.tableConfiguration.key, 'xlsx')\n : buildFileName('table', 'xlsx');\n\n exportRowsToExcel(\n this.selectedColumns,\n this.tableData,\n this.columnTypeMap,\n this.columnTypeEnum,\n (k: string) => this.translateService.instant(k),\n file\n );\n return;\n }\n\n this.actionClick.emit(event);\n }\n\n /** Convenience wrapper for translations in templates. */\n translateKey(key: string): string {\n return this.translateService.instant(key);\n }\n\n /** Checks if a value matches the global search query. */\n private matchesQuery(value: any, query: string): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string' || typeof value === 'number') {\n return value.toString().toLowerCase().includes(query.toLowerCase());\n }\n if (Array.isArray(value)) {\n return value.some((item) => this.matchesQuery(item, query));\n }\n if (typeof value === 'object') {\n return Object.values(value).some((val) => this.matchesQuery(val, query));\n }\n return false;\n }\n\n /** Clears all selections and disables bulk mode. */\n clearSelection() {\n this.selectedItems.set([]);\n this.bulkMode = false;\n }\n\n // Safe nested read: getNested(rowData, 'country.code') -> 'DE'\n getNested(obj: any, path?: string): any {\n if (!obj || !path) return null;\n return path.split('.').reduce((o, k) => (o != null ? o[k] : null), obj);\n }\n}\n","<div class=\"border-1 border-round-sm border-300 border-round-md m-2\">\n <ng-container *ngIf=\"selectedItems().length === 0; else selectionActions\">\n <table-caption\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n [filters]=\"filters\"\n [selectedItems]=\"selectedItems()\"\n (applyFiltersEvent)=\"applyFilters($event)\"\n (applyColumnsEvent)=\"applyColumns($event)\"\n (searchChange)=\"onSearch($event)\"\n (actionClick)=\"handleActionClick($event)\"\n >\n </table-caption>\n </ng-container>\n\n <ng-template #selectionActions>\n <div\n style=\"min-height: 40px; padding: 8px\"\n class=\"flex justify-content-between align-items-center border-bottom-1 border-300 pl-5 pr-5 text-sm text-500\"\n >\n <div>\n @if(tableConfiguration.selectionType === selectionTypeEnum.CHECKBOX){\n <span\n >{{ selectedItems().length }}\n {{\n selectedItems().length === 1\n ? (\"LABELS.ITEM_SELECTED\" | translate)\n : (\"LABELS.ITEMS_SELECTED\" | translate)\n }}</span\n >}\n </div>\n\n <div>\n <ng-container *ngFor=\"let action of tableConfiguration.bulkActions\">\n <phoenix-data-table-action\n [actionConfig]=\"action\"\n (actionClick)=\"\n handleActionClick({\n action: action,\n selectedItems: selectedItems()\n });\n clearSelection()\n \"\n ></phoenix-data-table-action>\n </ng-container>\n\n <button\n [attr.data-cy]=\"'clear-selection-button'\"\n class=\"p-button p-button-text p-button-plain\"\n (click)=\"clearSelection()\"\n aria-label=\"Clear Selection\"\n >\n <i class=\"pi pi-times\"></i>\n </button>\n </div>\n </div>\n </ng-template>\n\n <p-table\n #dt\n [columns]=\"selectedColumns\"\n [value]=\"tableData\"\n [size]=\"'small'\"\n scrollable=\"true\"\n [scrollHeight]=\"tableConfiguration.scrollHeight\"\n [virtualScroll]=\"true\"\n [virtualScrollItemSize]=\"30\"\n [rows]=\"100\"\n [lazy]=\"true\"\n [rowSelectable]=\"isRowSelectable\"\n [totalRecords]=\"totalRecords\"\n (onLazyLoad)=\"loadLazyData($event)\"\n [selection]=\"selectedItems()\"\n (selectionChange)=\"onSelectionChange($event)\"\n [sortMode]=\"'multiple'\"\n [resizableColumns]=\"true\"\n columnResizeMode=\"expand\"\n >\n <ng-template #header let-columns>\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\n <th\n pResizableColumn\n class=\"custom-th text-primary font-bold\"\n *ngFor=\"let col of columns\"\n [pSortableColumn]=\"col.field\"\n >\n {{ col.header | translate }}\n <p-sortIcon\n [field]=\"col.field\"\n [attr.data-cy]=\"'sort-button-' + col.header\"\n ></p-sortIcon>\n </th>\n <th class=\"custom-th\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n #body\n let-rowData\n let-columns=\"columns\"\n let-rowIndex=\"rowIndex\"\n >\n <tr>\n <ng-container [ngSwitch]=\"tableConfiguration.selectionType\">\n <td class=\"w-2rem\" *ngSwitchCase=\"selectionTypeEnum.CHECKBOX\">\n <p-tableCheckbox\n [attr.data-cy]=\"\n 'table-row-' + selectionTypeEnum.CHECKBOX + '-' + rowIndex\n \"\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]=\"\n 'table-row-' + selectionTypeEnum.RADIO_BTN + '-' + rowIndex\n \"\n ></p-tableRadioButton>\n </td>\n </ng-container>\n\n <td\n *ngFor=\"let col of columns; let i = index\"\n (click)=\"\n i < 2 && tableConfiguration.hasCellClick\n ? onRowClick($event, rowData)\n : null\n \"\n [ngClass]=\"{\n 'text-blue-500 underline cursor-pointer':\n i < 2 && tableConfiguration.hasCellClick\n }\"\n >\n <ng-container [ngSwitch]=\"col.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeEnum.TAG\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <div\n class=\"border-round-md font-semibold\"\n [style]=\"{\n 'fontSize':'12px',\n \n 'padding': '3px 8px',\n 'width':'fit-content',\n 'background-color':\n (rowData[col.field + 'Color'] || '#ccc') + '56',\n 'color': rowData[col.field + 'Color'], \n }\"\n >\n {{\n rowData[col.field]?.name || rowData[col.field] | translate\n }}\n </div>\n\n <!-- <p-tag\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TAG +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [style]=\"{\n 'background-color': rowData[col.field + 'Color'] || '#ccc',\n 'font-size': '0.9rem!important'\n }\"\n [value]=\"\n rowData[col.field]?.name || rowData[col.field] | translate\n \"\n ></p-tag> -->\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.LIST_TAG\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n @for(item of rowData[col.field]; track $index){\n <p-badge severity=\"warn\" styleClass=\"mr-1\" [value]=\"item\" />\n\n <!-- <p-tag\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.LIST_TAG +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [style]=\"{\n 'font-size': '0.9rem!important'\n }\"\n styleClass=\"mr-1\"\n [value]=\"item\"\n severity=\"info\"\n ></p-tag> -->\n }\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.OBJ_TAG\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <p-tag\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.OBJ_TAG +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [style]=\"{\n fontSize: '12px',\n padding: '3px 8px',\n width: 'fit-content',\n 'background-color':\n (rowData[col.field].color || '#ccc') + '56',\n\n color: rowData[col.field].color\n }\"\n [value]=\"rowData[col.field]?.value | translate\"\n ></p-tag>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.PERSON\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <p-avatar\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.PERSON +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [label]=\"rowData[col.field]?.name | initials\"\n class=\"cursor-pointer\"\n [style]=\"{\n 'background-color': '#9c27b0',\n color: '#ffffff',\n 'font-size': '0.8rem!important'\n }\"\n shape=\"circle\"\n (click)=\"opp.toggle($event)\"\n ></p-avatar>\n <p-overlayPanel #opp>\n <div>\n <span class=\"text-lg\">{{ rowData[col.field].name }} </span>\n <span class=\"block text-sm\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{ rowData[col.field].email ?? \" --\" }}\n </span>\n <span class=\"block text-sm\">\n <i class=\"pi pi-phone text-500\"></i\n >{{ rowData[col.field].phone ?? \" --\" }}\n </span>\n </div>\n </p-overlayPanel>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.LIST\">\n <ng-container\n *ngIf=\"rowData[col.field]?.length; else emptyCellBlock\"\n >\n @if(rowData[col.field].length > 1){\n <div\n class=\"cursor-pointer\"\n (click)=\"op.toggle($event)\"\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.LIST +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n >\n <span class=\"mr-1\">{{ rowData[col.field][0].name }} </span>\n <p-chip\n class=\"text-sm font-semibold p-1 m-0\"\n [label]=\"'+' + (rowData[col.field].length - 1)\"\n />\n </div>\n\n } @else {\n <span>{{ rowData[col.field][0].name }}</span>\n }\n </ng-container>\n <p-overlayPanel #op>\n @for(item of rowData[col.field] ; track item.name; let isFirst =\n $first ){\n <ul class=\"list-none m-0 p-0\">\n @if(!isFirst) {\n <li>{{ item.name }}</li>\n }\n </ul>\n }\n </p-overlayPanel>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.BOOLEAN\">\n <ng-container\n *ngIf=\"rowData[col.field] | isBoolean; else emptyCellBlock\"\n >\n <i\n [pTooltip]=\"rowData?.[col.field+'Tooltip']\"\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.BOOLEAN +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.BOOLEAN | lowercase)\n \"\n class=\"pi\"\n [ngClass]=\"\n rowData[col.field]\n ? 'text-green-500 pi-check-circle'\n : 'text-red-500 pi-times-circle'\n \"\n ></i>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.TEXT_AREA\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TEXT_AREA +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [pTooltip]=\"rowData[col.field]\"\n style=\"width: 200px\"\n [attr.data-cy]=\"\n 'table-cell-' + (columnTypeEnum.TEXT_AREA | lowercase)\n \"\n >\n {{\n rowData[col.field].length > 50\n ? (rowData[col.field] | slice : 0 : 50) + \"...\"\n : rowData[col.field]\n }}\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"columnTypeEnum.TIMEPERIOD\">\n <ng-container *ngIf=\"rowData[col.field]; else emptyCellBlock\">\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TIMEPERIOD +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [pTooltip]=\"rowData[col.field] | timePeriod\"\n style=\"max-width: 200px\"\n >\n {{ rowData[col.field] | timePeriod }}\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <!-- If this column is flagged and we have a code, render flag + the usual cell HTML -->\n <ng-container\n *ngIf=\"\n col.flag && getNested(rowData, col.flagCodeField) as cc;\n else normalTextCell\n \"\n >\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TEXT +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n class=\"flex align-items-center gap-2\"\n style=\"max-width: 200px\"\n [pTooltip]=\"rowData | cell : col : dateFormat\"\n >\n <img\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + (cc || '').toString().toLowerCase()\"\n style=\"width: 22px\"\n alt=\"\"\n />\n <span [innerHTML]=\"rowData | cell : col : dateFormat\"></span>\n </div>\n </ng-container>\n\n <!-- Normal (unflagged) rendering: unchanged -->\n <ng-template #normalTextCell>\n <div\n [attr.data-cy]=\"\n 'table-row-' +\n columnTypeEnum.TEXT +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n \"\n [pTooltip]=\"rowData | cell : col : dateFormat\"\n style=\"max-width: 200px\"\n [innerHTML]=\"rowData | cell : col : dateFormat\"\n ></div>\n </ng-template>\n </ng-container>\n <ng-template #emptyCellBlock>\n <ng-container\n [ngTemplateOutlet]=\"emptyCell\"\n [ngTemplateOutletContext]=\"{\n dataCy:\n 'table-row-' +\n col.columnType +\n '-row-index-' +\n rowIndex +\n '-col-index-' +\n i\n }\"\n >\n </ng-container>\n </ng-template>\n </ng-container>\n </td>\n\n <td class=\"p-0\">\n <ng-container *ngFor=\"let action of tableConfiguration.rowActions\">\n <phoenix-data-table-action\n [actionConfig]=\"action\"\n [rowData]=\"rowData\"\n (actionClick)=\"handleActionClick($event)\"\n ></phoenix-data-table-action>\n </ng-container>\n </td>\n </tr>\n </ng-template>\n\n <ng-template #emptyCell let-dataCy=\"dataCy\">\n <span [attr.data-cy]=\"dataCy\">--</span>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\" let-columns>\n <tr style=\"height: 46px\">\n <td *ngFor=\"let col of columns\">\n <p-skeleton [ngStyle]=\"{ width: '60%' }\"></p-skeleton>\n </td>\n <td>\n <p-skeleton [ngStyle]=\"{ width: '20%' }\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\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 {{ \"NO_RESULTS_FOUND\" | translate }}\n </div>\n </td>\n </ng-template>\n </p-table>\n\n <div class=\"border-top-1 border-300 pl-2 p-1 text-sm text-500\">\n {{ \"LABELS.TOTAL_RECORDS\" | translate }}: {{ totalRecords }}\n </div>\n</div>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function startDueDateValidator(\n control: AbstractControl,\n): { [key: string]: any } | null {\n const startDate = control.get('startDate')?.value;\n const dueDate = control.get('dueDate')?.value;\n\n return { invalidDate: true };\n}\n","import {\n AbstractControl,\n AsyncValidatorFn,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { debounceTime, map, of, switchMap, timer } from 'rxjs';\n\nconst regexPatternEn =\n /^(?:(\\d+(?:\\.\\d+)?)w\\s*|)(?:(\\d+(?:\\.\\d+)?)d\\s*|)(?:(\\d+(?:\\.\\d+)?)h\\s*|)(?:(\\d+(?:\\.\\d+)?)m\\s*|)$/;\nconst regexPatternDe =\n /^(?:(\\d+(?:\\.\\d+)?)w\\s*|)(?:(\\d+(?:\\.\\d+)?)t\\s*|)(?:(\\d+(?:\\.\\d+)?)s\\s*|)(?:(\\d+(?:\\.\\d+)?)m\\s*|)$/;\n\nconst regexPatternSr =\n /^(?:(\\d+(?:\\.\\d+)?)n\\s*|)(?:(\\d+(?:\\.\\d+)?)d\\s*|)(?:(\\d+(?:\\.\\d+)?)č\\s*|)(?:(\\d+(?:\\.\\d+)?)m\\s*|)$/;\n\nfunction toMS(input: string, regex: RegExp) {\n const match = input?.match(regex);\n if (!match) return 0; // or handle it differently\n\n const weeks = parseFloat(match[1]) || 0;\n const days = parseFloat(match[2]) || 0;\n const hours = parseFloat(match[3]) || 0;\n const minutes = parseFloat(match[4]) || 0;\n\n const milliseconds =\n (weeks * 7 + days) * 24 * 60 * 60 * 1000 +\n hours * 60 * 60 * 1000 +\n minutes * 60 * 1000;\n return milliseconds;\n}\n\nfunction getLangPattern(currentLang: string) {\n switch (currentLang) {\n case 'de':\n return regexPatternDe;\n case 'en':\n return regexPatternEn;\n default:\n return regexPatternSr;\n }\n}\n\nexport function timePeriod(currentLang: string, tpMin: number): ValidatorFn {\n return (control: AbstractControl) => {\n if (!control.pristine) {\n const regValidator = Validators.pattern(getLangPattern(currentLang));\n if (regValidator(control)) {\n return { timeperiod: true };\n }\n\n if (control.status === 'VALID' && control.dirty) {\n if (toMS(control.value, getLangPattern(currentLang)) > 31536000000) {\n return { timeperiod_limit_max: true };\n }\n if (\n tpMin != null &&\n toMS(control.value, getLangPattern(currentLang)) <= tpMin\n ) {\n return { timeperiod_limit_min: true };\n }\n return null;\n }\n return null;\n }\n\n return null;\n };\n}\n","export enum ControlType {\n TEXT = 'TEXT',\n NUMBER = 'NUMBER',\n MS_OPTION = 'MS_OPTION',\n SS_OPTION = 'SS_OPTION',\n TEXT_AREA = 'TEXT_AREA',\n TEXT_EDITOR = 'TEXT_EDITOR',\n DATE = 'DATE',\n START_DUE_DATE = 'START_DUE_DATE',\n CHECKBOX = 'CHECKBOX',\n CHECKBOX_COLOR = 'CHECKBOX_COLOR',\n LINKS_DATA = 'LINKS_DATA',\n PASSWORD = 'PASSWORD',\n SWITCH = 'SWITCH',\n TIMEPERIOD = 'TIMEPERIOD',\n CURRENCY = 'CURRENCY',\n ASSIGN = 'ASSIGN',\n ASSIGN_ASSET = 'ASSIGN_ASSET',\n COLOR = 'COLOR',\n SELECT_BUTTON = 'SELECT_BUTTON',\n UPLOAD = 'UPLOAD',\n UPLOAD_DRAG_DROP = 'UPLOAD_DRAG_DROP',\n SLOT = 'SLOT',\n SS_OPTION_OBJECT_BASED = 'SS_OPTION_OBJECT_BASED',\n}\n","import { ControlType } from './control-type.enum';\n\nexport function getFieldType(control: any) {\n switch (control.configuration.type) {\n case ControlType.TEXT:\n case ControlType.TEXT_AREA:\n case ControlType.TEXT_EDITOR:\n case ControlType.CHECKBOX:\n return control.dataValue;\n case ControlType.SS_OPTION:\n return control.dataOptionValue;\n case ControlType.MS_OPTION:\n return control.dataOptionValues;\n default:\n }\n}\n","import { AbstractControl, UntypedFormControl } from '@angular/forms';\n\nexport class WhiteSpaceValidator {\n static noWhiteSpaceValidator(control: AbstractControl<any, any>) {\n if (typeof control.value === 'object') {\n return { whitespace: false };\n }\n if (control.value === '') {\n return { whitespace: false };\n }\n const isWhitespace = (control.value || '').trim().length === 0;\n const isValid = !isWhitespace;\n return isValid ? null : { whitespace: true };\n }\n static noWhiteSpaceValidatorForEditor(control: UntypedFormControl) {\n const isWhitespace =\n (control.value?.replace(/(<([^>]+)>)/gi, '') || '').trim().length === 0;\n const isValid = !isWhitespace;\n return isValid ? null : { whitespace: true };\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function noDangerousCharsValidator(): ValidatorFn {\n // Blocks only specific dangerous characters: < > \" = $ /\n //[<>\"=$/]/ This was before but some catalog name or description contains \"/\"\" so when field is desibled we cannot save form\n const dangerousCharsPattern = /[<>\"=$]/;\n\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) return null;\n\n return dangerousCharsPattern.test(String(value))\n ? { dangerousChars: true }\n : null;\n };\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MetaFormService {\n router = inject(Router);\n private formEvent = new Subject<any>();\n private formReadOnlySubject = new BehaviorSubject<boolean>(false);\n private formTabContent = new BehaviorSubject<string>('FORM');\n private formDirtyStatus = new BehaviorSubject<boolean>(false);\n private formBuildCompletedSubject = new BehaviorSubject<boolean>(false);\n\n currentFormState = this.formEvent.asObservable();\n formReadOnlyState = this.formReadOnlySubject.asObservable();\n currentFormTabContent = this.formTabContent.asObservable();\n currentFormDirtyStatus = this.formDirtyStatus.asObservable();\n\n /**\n * Notify when form is completed\n * @description Notifies you about when form bild is completed in meta-form component class. Usefull when you need to attach some listeners on form controls or any other action related to form when all controls are avaiable\n * @returns {boolean}\n */\n formBuildCompleted = this.formBuildCompletedSubject.asObservable();\n\n constructor() {}\n\n setFormEvent(event: any): void {\n this.formEvent.next(event);\n }\n\n setFormReadOnlyState(state: boolean) {\n this.formReadOnlySubject.next(state);\n // this.router.navigate([], {\n // queryParams: {\n // edit: state ? null : !state,\n // },\n // queryParamsHandling: 'merge',\n // });\n }\n\n setFormTabContent(tabContent: string) {\n this.formTabContent.next(tabContent);\n }\n\n setFormDirtyStatus(status: boolean) {\n this.formDirtyStatus.next(status);\n }\n /**\n * Sets the form build completion status to indicate when the form is created.\n *\n * @param {boolean} isCompleted - A boolean value to indicate whether the form build is completed.\n * Set to `true` when the form is fully created.\n *\n * @description This method is used to notify when the form is created and ready for use.\n */\n setFormBuildCompletition(isCompleted: boolean) {\n this.formBuildCompletedSubject.next(isCompleted);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { HttpClient } from '@angular/common/http';\n// import { EnvService } from '@phoenix/environment';\nimport { startDueDateValidator } from './meta-validators/due-date/start-due-date.validator';\n\nimport { timePeriod } from './meta-validators/timeperiod/timeperiod.validator';\n\nimport { MetaControl } from './meta-form-interface/interfaces';\nimport { MetaFormService } from './services/meta-form.service';\nimport { ControlType } from './utils/control-type.enum';\nimport { getFieldType } from './utils/get-field-type.utils';\nimport { WhiteSpaceValidator } from './meta-validators/white-space-validator';\nimport { noDangerousCharsValidator } from './meta-validators/no-dangerous-chars/do-danerous-chars';\n\n@Directive()\nexport abstract class MetaFormAbstract {\n @Input() metaForm!: FormGroup;\n @Input() metaFormValues: any;\n @Input() metaFormControls: any;\n @Input() loading: boolean = false;\n @Input() disableForm: boolean = false;\n @Input() formButtons: boolean = true;\n @Input() groupForm: boolean = false;\n @Input() formStyle: any;\n @Output() onFormSubmit = new EventEmitter();\n @Output() onFormCancel = new EventEmitter();\n\n formActive$!: Observable<boolean>;\n formSub$!: Subscription;\n\n constructor(\n private fb: FormBuilder,\n public metaService: MetaFormService,\n\n private translateService: TranslateService,\n private http: HttpClient // private env: EnvService\n ) {\n this.metaForm = this.fb.group({});\n this.formActive$ = this.metaService.formReadOnlyState;\n ///check if this has usecase\n this.formSub$ = this.metaForm.valueChanges.subscribe((ev: any) => {\n this.metaService.setFormEvent(ev);\n });\n }\n\n createForm(controls: MetaControl[] | any) {\n controls?.forEach((control: any) => {\n this.metaForm.addControl(\n control.configuration?.key,\n this.fb.control(\n getFieldType(control)\n ///updateOn: blur only for controls with async validators. If added for all each tab/step toggle removes form value. Check why\n // control.asyncValidators && { updateOn: 'blur' },\n )\n );\n //add validators\n this.addControlValidators(control);\n\n //disable non editable fields\n if (control.disable) {\n this.metaForm.get(control.configuration.key)?.disable();\n }\n });\n ///patch values in form\n if (this.metaFormValues) {\n this.metaForm.patchValue(this.metaFormValues);\n }\n\n this.metaService.setFormBuildCompletition(true);\n }\n\n activateForm() {\n throw new Error('not implemented');\n }\n\n addControlValidators(control: any) {\n const validators: any[] = [];\n const asyncValidators: any[] = [];\n\n if (control.validators) {\n control.validators.min &&\n validators.push(Validators.min(control.validators.min));\n\n control.validators.max &&\n validators.push(Validators.max(control.validators.max));\n\n control.validators.maxLenght &&\n validators.push(Validators.maxLength(control.validators.maxLenght));\n\n control.validators.minLength &&\n validators.push(Validators.minLength(control.validators.minLength));\n\n control.validators.email && validators.push(Validators.email);\n\n control.validators.regex &&\n validators.push(\n Validators.pattern(control.validators.regex?.regexType)\n );\n control.validators.phone &&\n validators.push(Validators.pattern(/^\\+?[1-9]\\d{7,14}$/));\n\n control.validators.timeperiod &&\n validators.push(\n timePeriod(\n this.translateService.currentLang,\n control.validators.tpMin\n )\n );\n\n control.validators.dueDate && validators.push(startDueDateValidator);\n }\n if (control?.mandatory) {\n validators.push(Validators.required);\n }\n\n if (control?.mandatory && control.configuration.type === ControlType.TEXT) {\n validators.push(WhiteSpaceValidator.noWhiteSpaceValidator);\n }\n\n if (\n control?.mandatory &&\n control.configuration.type === ControlType.TEXT_AREA\n ) {\n validators.push(WhiteSpaceValidator.noWhiteSpaceValidator);\n }\n\n if (\n control.configuration.type === ControlType.TEXT ||\n control.configuration.type === ControlType.TEXT_AREA\n ) {\n validators.push(noDangerousCharsValidator());\n }\n\n this.metaForm.get(control.configuration.key)?.setValidators(validators);\n }\n\n onSubmit() {\n this.onFormSubmit.emit(this.metaForm);\n }\n\n onCancel() {\n this.metaForm.reset();\n this.onFormCancel.emit();\n }\n\n /**\n * Resets form to initial state\n *\n * @description Useful when user interact with form (edit some inputs) and than clicks CANCEL. This method patch original values to FormGroup again\n *\n */\n resetToInitialValues() {\n this.metaForm.patchValue(this.metaFormValues);\n }\n\n ngOnDestroy(): void {\n if (this.formSub$) this.formSub$.unsubscribe();\n }\n}\n","export function getLanguageParam(\n obj: any,\n langType: string,\n paramName: string,\n): string {\n if (!langType) langType = 'en';\n if (langType && paramName) {\n const param: string =\n paramName + langType.charAt(0).toUpperCase() + langType.slice(1);\n const fallBackParam: string = paramName + 'En';\n if (obj?.[param]) {\n return obj[param];\n } else if (obj?.[fallBackParam]) {\n return obj[fallBackParam];\n } else {\n return param;\n }\n } else {\n return '***NO VALUE***';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getLanguageParam } from './lang.utils';\n\n@Pipe({\n name: 'fieldLabel',\n standalone: true,\n})\nexport class FieldLabelPipe implements PipeTransform {\n transform(value: any, currentLang: string): string {\n if (value.hasOwnProperty('userFriendlyMessage')) {\n return value?.userFriendlyMessage;\n }\n const metaLabel = getLanguageParam(value, currentLang, 'labelKeyVal');\n return metaLabel;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { FieldLabelPipe } from '../utils/field-label.pipe';\n\n@Component({\n selector: 'phoenix-meta-label',\n standalone: true,\n imports: [CommonModule, TranslateModule, FieldLabelPipe],\n template: `\n <label class=\"mb-1 block\" *ngIf=\"!control?.hidden\">\n {{ control | fieldLabel: currentLang | translate }}\n <span *ngIf=\"control.mandatory\" class=\"red-asterisk\">*</span>\n </label>\n `,\n styles: [],\n})\nexport class MetaLabelComponent {\n @Input() control: any;\n currentLang: string;\n constructor(private translateService: TranslateService) {\n this.currentLang = this.translateService.currentLang;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { TableModule } from 'primeng/table';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { map } from 'rxjs';\nimport {\n tableColumnType,\n tableSelectionType,\n} from '../../../data-table/utils/dataTable.enum';\nimport { TableComponent } from '../../../data-table/table/table.component';\nimport { ButtonModule } from 'primeng/button';\nimport { ActionButton } from '../../../../models/status.model';\n\n\n@Component({\n selector: 'phoenix-object-item-dialog',\n standalone: true,\n imports: [\n TranslateModule,\n TableModule,\n TooltipModule,\n CommonModule,\n TableComponent,\n ButtonModule\n ],\n templateUrl: './object-item-dialog.component.html',\n styleUrls: ['./object-item-dialog.component.scss'],\n})\nexport class ObjectItemDialogComponent implements OnInit {\n @ViewChild('table') table!: TableComponent;\n\n columns: any;\n disableButton: boolean = true;\n tableData = [];\n hasSelection = false;\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) {}\n\n ngOnInit(): void {\n this.tableData = this.config.data.tableData;\n this.columns = this.config.data.columns;\n }\n\n actions: ActionButton[] = [\n {\n id: 'assign',\n disabled: true,\n label: 'ACTION.ASSIGN',\n icon: 'pi pi-check',\n severity: 'primary',\n },\n {\n id: 'cancel',\n disabled: false,\n label: 'ACTION.CANCEL',\n severity: 'secondary',\n },\n ];\n\n onSelectionChanged(selectedItem: any) {\n this.hasSelection = !!selectedItem;\n }\n\n actionClick(key: any) {\n if (key === 'assign') {\n this.ref.close(this.table.selectedItems());\n } else {\n this.ref.close();\n }\n }\n tableConfiguration = {\n lazy: false,\n scrollHeight: '200px',\n hasSearch: true,\n hasFilter: true,\n key: 'asd',\n rows: 20,\n selectionType: tableSelectionType.RADIO_BTN,\n };\n}\n","<div style=\"overflow: hidden; padding-bottom: 50px\">\n <phoenix-table\n #table\n [data]=\"tableData\"\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n (checkBoxSelection)=\"onSelectionChanged($event)\"\n >\n </phoenix-table>\n</div>\n<div class=\"absolute bottom-0 right-0 p-4\">\n <div class=\"flex gap-2\">\n <ng-container *ngFor=\"let action of actions\">\n <p-button\n [label]=\"action.label | translate\"\n [icon]=\"action.icon || ''\"\n [severity]=\"action.severity || 'primary'\"\n [disabled]=\"action.id === 'assign' && !hasSelection\"\n [id]=\"action.id\"\n (onClick)=\"actionClick(action.id)\"\n size=\"small\"\n ></p-button>\n </ng-container>\n</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef, inject } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n// import { Assignee } from '@phoenix/model-meta';\n// import { PhoenixDialogService } from '@phoenix/service/common';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { ObjectItemDialogComponent } from '../object-item-dialog/object-item-dialog.component';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Assignee } from '../../../../models/assignee.model';\nimport { tableColumnType } from '../../../data-table/utils/dataTable.enum';\n\n@Component({\n selector: 'phoenix-meta-assign-responsible',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n MetaLabelComponent,\n TranslateModule,\n OverlayPanelModule,\n PanelModule,\n ],\n template: `\n <div [style.display]=\"control.hidden ? 'none' : 'block'\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <div\n [attr.data-cy]=\"'assign-' + control?.id\"\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n class=\"flex align-items-center\"\n >\n <div>\n <p-button\n [rounded]=\"true\"\n [text]=\"true\"\n (onClick)=\"op.toggle($event)\"\n >\n <div class=\"person-wrap\">\n <div class=\"person-avatar\">\n {{\n parentForm.controls[\n this.control.configuration.key\n ].value?.name?.charAt(0)\n }}\n </div>\n <div>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.name\n }}\n </p>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.function\n }}\n </p>\n </div>\n </div></p-button\n >\n <p-overlayPanel #op>\n <div>\n <span class=\"block mb-2\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.email ?? ' --'\n }}\n </span>\n <p>\n <i class=\"pi pi-phone mr-1 text-500\"></i\n >{{\n parentForm.controls[this.control.configuration.key].value\n ?.phone ?? ' --'\n }}\n </p>\n </div></p-overlayPanel\n >\n </div>\n\n <div style=\"paddingBottom:4px\">\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n styleClass=\"p-button-sm mt-1\"\n type=\"button\"\n [text]=\"true\"\n label=\"{{ 'ACTION.REASSIGN' | translate }}\"\n (click)=\"assignResponsible()\"\n ></p-button>\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n type=\"button\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n [text]=\"true\"\n styleClass=\"p-button-danger p-button-sm mt-1 ml-2\"\n ></p-button>\n </div>\n </div>\n <p-button\n *ngIf=\"\n !(\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n )\n \"\n type=\"button\"\n icon=\"pi pi-user-plus\"\n styleClass=\"p-button-sm mt-1\"\n label=\"{{ 'ACTION.ASSIGN' | translate }}\"\n (click)=\"assignResponsible()\"\n [text]=\"true\"\n ></p-button>\n </div>\n `,\n styles: [\n `\n .person-wrap {\n display: flex;\n align-items: center;\n\n margin-left: -6px;\n\n & p {\n margin: 0;\n }\n\n .person-avatar {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 28px;\n height: 28px;\n min-width: 28px;\n min-height: 28px;\n margin-right: 5px;\n background-color: rgb(233, 66, 96);\n color: white;\n border-radius: 50%;\n /* font-weight: 800; */\n font-size: 1rem;\n }\n .person-name :first-child {\n font-size: 1rem;\n }\n }\n\n .person-details {\n border-top: 1px solid #e0e0e0;\n padding: 5px;\n margin-left: -6px;\n width: 150px;\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n i {\n color: #e94260;\n padding-right: 5px;\n }\n\n .p-editor-container {\n padding-left: 0 !important;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaAssignResponsibleComponent),\n multi: true,\n },\n ],\n})\nexport class MetaAssignResponsibleComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n @Input() disable?: boolean;\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n public isDisabled!: boolean;\n writeValue(value: any): void {}\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean) {\n this.isDisabled = isDisabled;\n }\n // private phoenixDialog = inject(PhoenixDialogService);\n private translateService = inject(TranslateService);\n private dialogService = inject(DialogService);\n person!: any;\n\n clear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n assignResponsible() {\n const ref = this.dialogService.open(ObjectItemDialogComponent, {\n header: this.translateService.instant('LABELS.ASSIGN_RESPONSIBLE'),\n width: '700px',\n\n modal: true,\n data: {\n tableData: this.control.configuration.items,\n columns: [\n {\n field: 'name',\n header: 'LABELS.NAME',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'function',\n header: 'LABELS.FUNCTION',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'phone',\n header: 'LABELS.PHONE',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'email',\n header: 'LABELS.EMAIL',\n columnType: tableColumnType.TEXT,\n },\n ],\n },\n contentStyle: { overflow: 'auto' },\n draggable: true,\n closable: true,\n });\n\n ref.onClose.subscribe((response: Assignee) => {\n if (response) {\n this.person = response;\n this.parentForm.controls[this.control.configuration.key].setValue(\n response\n );\n }\n });\n }\n}\n","export enum ErrorType {\n REQUIRED = 'required',\n MIN_LENGTH = 'minlength',\n MAX_LENGTH = 'maxlength',\n EMAIL = 'email',\n CUSTOM = 'custom',\n PATTERN = 'pattern',\n UIQUE_ENTRY = 'uniqueEntry',\n TIMEPERIOD = 'timeperiod',\n TIMEPERIOD_LIMIT_MAX = 'timeperiod_limit_max',\n TIMEPERIOD_LIMIT_MIN = 'timeperiod_limit_min',\n DUE_DATE = 'dueDate',\n UIQUE = 'unique',\n BOTH_DATES = 'both_dates',\n MAX = 'max',\n MIN = 'min',\n DANGEROUS_CHARS = 'dangerousChars',\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, inject } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription, combineLatestWith } from 'rxjs';\nimport { MetaFormService } from '../services/meta-form.service';\nimport { ErrorType } from '../utils/error-type.util';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'phoenix-inline-field-error',\n styles: [``],\n animations: [\n trigger('slideInOut', [\n transition(':enter', [\n style({ transform: 'translateY(-60%)' }),\n animate('100ms ease-out', style({ transform: 'translateY(0%)' })),\n ]),\n transition(':leave', [\n animate(\n '50ms ease-out',\n style({ transform: 'translateY(-100%)', opacity: '0' })\n ),\n ]),\n ]),\n ],\n template: `\n <div style=\"height: 1px;\">\n <div *ngIf=\"note\" [@slideInOut] class=\"static\">\n <small class=\"text-blue-700\" *ngIf=\"note.type === 'info'; else warn\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 11px\"></i>\n {{ note.content }}\n </small>\n <ng-template #warn>\n <small class=\"p-error\">\n <i style=\"font-size: 11px\" class=\"pi pi-exclamation-circle\"></i>\n {{ note }}\n </small>\n </ng-template>\n </div>\n </div>\n `,\n})\nexport class InlineFieldError implements OnDestroy, OnChanges {\n @Input() ctrl!: AbstractControl;\n note!: any;\n constructor(private translateService: TranslateService) {}\n sub$!: Subscription;\n metaFormService = inject(MetaFormService);\n loaded: Boolean = false;\n\n ngOnChanges(): void {\n if (this.ctrl && !this.loaded) {\n if (this.ctrl?.status === 'PENDING') {\n ///this is only for async validators for name and title. Remove this one, we have this in onChange() method\n this.ctrl.updateValueAndValidity();\n }\n this.sub$ = this.ctrl?.statusChanges\n ?.pipe(combineLatestWith(this.metaFormService.formReadOnlyState))\n .subscribe((arr) => {\n if (arr[0] !== 'VALID') {\n setTimeout(() => {\n this.note = this.getErrorMessage(this.ctrl);\n });\n } else {\n setTimeout(() => {\n this.note = null;\n });\n }\n // if (arr[1]) {\n // setTimeout(() => {\n // this.note = null;\n // });\n // }\n });\n this.loaded = true;\n }\n }\n\n getErrorMessage(control: AbstractControl): any {\n if (control?.status === 'PENDING') {\n return {\n type: 'info',\n content: this.translateService.instant(\n 'VALIDATION_MESSAGE.CHECKING_ENTRY_AVAILABILITY'\n ),\n };\n }\n // if (control?.status === 'VALID') {\n // return 'ENTRY OK';\n // }\n\n if (control?.errors) {\n switch (Object.keys(control.errors)[0]) {\n case ErrorType.REQUIRED:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.THIS_FIELD_IS_REQUIRED'\n );\n case ErrorType.MIN_LENGTH:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_AT_LEAST',\n { minlength: control.errors['minlength'].requiredLength }\n );\n case ErrorType.MAX_LENGTH:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_NO_MORE',\n { maxlength: control.errors['maxlength'].requiredLength }\n );\n case ErrorType.EMAIL:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.ENTER_VALID_EMAIL'\n );\n case ErrorType.DANGEROUS_CHARS:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.NO_SPECIAL_CHARS_ALLOWED'\n );\n case ErrorType.CUSTOM:\n return this.translateService.instant(control?.errors?.['custom']);\n\n case ErrorType.UIQUE_ENTRY:\n return control.errors['uniqueEntry'];\n\n case ErrorType.TIMEPERIOD:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_MATCH_TIMEPATTERN'\n );\n\n case ErrorType.MAX:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_BE_LESS_THAN_AND_MORE_THAN',\n {\n lowerValue: control.errors['min']?.min ?? 0,\n upperValue: control.errors['max']?.max,\n }\n );\n\n case ErrorType.DUE_DATE:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.INVALID_DATE'\n );\n case ErrorType.UIQUE:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_IS_ALREADY_IN_USE'\n );\n case ErrorType.TIMEPERIOD_LIMIT_MAX:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_MATCH_TIMEPATTERN_LIMIT_MAX'\n );\n\n case ErrorType.TIMEPERIOD_LIMIT_MIN:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOULD_MATCH_TIMEPATTERN_LIMIT_MIN'\n );\n\n case ErrorType.BOTH_DATES:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.BOTH_START_END_DATE_REQUIRED'\n );\n\n // add more cases for other validators as needed\n case ErrorType.PATTERN:\n const re = '^(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?$';\n\n if (control?.errors?.['pattern']?.requiredPattern === re)\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.VALUE_SHOUL_BE_URL'\n );\n else {\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.INVALID_VALUE'\n );\n }\n // add more cases for other validators as needed\n default:\n return this.translateService.instant(\n 'VALIDATION_MESSAGE.INVALID_VALUE'\n );\n }\n } else return '';\n }\n\n ngOnDestroy(): void {\n this.sub$?.unsubscribe();\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { ControlValueAccessor, FormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\n\n@Directive()\nexport class BaseMetaField implements ControlValueAccessor {\n @Input() disable: boolean = false;\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n fcs$!: Subscription | undefined;\n cfc$!: Subscription | undefined;\n\n public value!: any;\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n ctrl: any;\n\n protected changeSub = new Subject<boolean>();\n protected changeSubs$!: Subscription;\n\n ngOnInit() {\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n }\n\n getInputValue(event: Event | any): any {\n if (event.value) {\n return event.value;\n }\n if (event.target instanceof HTMLInputElement) {\n return event.target.value?.trim();\n }\n if (event.target instanceof HTMLTextAreaElement) {\n return event.target.value;\n }\n return '';\n }\n\n writeValue(value: string): void {\n this.value = value;\n }\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n this.changeSub.next(true);\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disable = isDisabled;\n }\n\n ngOnDestroy(): void {\n this.changeSubs$?.unsubscribe();\n this.fcs$?.unsubscribe();\n this.cfc$?.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { CalendarModule } from 'primeng/calendar';\n\n@Component({\n selector: 'phoenix-meta-calendar',\n standalone: true,\n imports: [\n CommonModule,\n CalendarModule,\n MetaLabelComponent,\n FormsModule,\n InlineFieldError,\n DatePickerModule,\n ],\n template: ` <div [hidden]=\"control?.hidden\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-datepicker\n [attr.data-cy]=\"'calendar-' + control?.id\"\n (onSelect)=\"onChanged(value)\"\n [style]=\"{ width: '100%' }\"\n [(ngModel)]=\"value\"\n [disabled]=\"disable\"\n [readonlyInput]=\"true\"\n [showButtonBar]=\"true\"\n [minDate]=\"control.configuration?.minDate\"\n [maxDate]=\"control.configuration?.maxDate\"\n [showIcon]=\"true\"\n (onClearClick)=\"onDateClear()\"\n [showTime]=\"control.configuration.showTime\"\n [hourFormat]=\"'24'\"\n [appendTo]=\"'body'\"\n ></p-datepicker>\n <phoenix-inline-field-error [ctrl]=\"ctrl\"></phoenix-inline-field-error>\n </div>`,\n styleUrls: ['./meta-calendar.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCalendarComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCalendarComponent extends BaseMetaField {\n onDateClear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-checkbox-color-picker',\n standalone: true,\n imports: [\n CommonModule,\n CheckboxModule,\n FormsModule,\n TranslateModule,\n OverlayPanelModule,\n MetaLabelComponent,\n ],\n template: `\n <p-overlayPanel #op>\n <div class=\"color-picker\">\n <ng-container\n *ngFor=\"let row of control.configuration.options; let last = last\"\n >\n <div class=\"color-row \" [ngClass]=\"{ 'mb-2': !last }\">\n <ng-container *ngFor=\"let color of row\">\n <div\n class=\"color-box\"\n [ngStyle]=\"{\n 'background-color': color,\n outline:\n focusedColor === color ? '3px solid ' + color : 'none',\n 'outline-offset': focusedColor === color ? '3px' : '0',\n }\"\n (click)=\"onChanged(color); changeColor(color)\"\n ></div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </p-overlayPanel>\n\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n <div\n class=\"selected-color \"\n [ngStyle]=\"{ 'background-color': value, marginTop: '6px' }\"\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n (click)=\"op.toggle($event)\"\n ></div>\n `,\n styles: [\n `\n ::ng-deep .p-overlaypanel .p-overlaypanel-content {\n padding: 0 !important;\n }\n .color-picker {\n display: flex;\n flex-direction: column;\n padding: 10px;\n }\n\n .color-row {\n display: flex;\n justify-content: center;\n gap: 8px;\n }\n\n .color-box {\n margin: 2px;\n width: 30px;\n height: 30px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 4px;\n }\n\n .color-box:hover {\n transform: scale(1.1);\n opacity: 0.9;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);\n }\n\n .color-box:focus {\n outline: 3px solid rgba(0, 0, 0, 0.2);\n outline-offset: 3px;\n }\n\n .selected-color {\n width: 35px;\n height: 35px;\n border: 2px solid #ccc;\n cursor: pointer;\n border-radius: 6px;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCheckboxColorPickerComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCheckboxColorPickerComponent extends BaseMetaField {\n private translateService = inject(TranslateService);\n currentLang = this.translateService.currentLang;\n focusedColor: any;\n changeColor(color: string): void {\n this.focusedColor = color;\n this.value = color;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { FieldLabelPipe } from '../../utils/field-label.pipe';\n\n@Component({\n selector: 'phoenix-meta-checkbox',\n standalone: true,\n imports: [\n CommonModule,\n CheckboxModule,\n FormsModule,\n TranslateModule,\n FieldLabelPipe,\n ],\n template: ` <div class=\"ml-3 field-checkbox\">\n <p-checkbox\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n [(ngModel)]=\"value\"\n (onChange)=\"onChanged(value)\"\n [binary]=\"true\"\n inputId=\"binary\"\n [disabled]=\"control.readOnly || disable\"\n ></p-checkbox>\n\n <label for=\"binary\">\n {{ control | fieldLabel: currentLang | translate }}\n <span *ngIf=\"control.mandatory\" class=\"red-asterisk\">*</span></label\n >\n </div>`,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCheckboxComponent extends BaseMetaField {\n private translateService = inject(TranslateService);\n currentLang = this.translateService.currentLang;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { ColorPickerModule } from 'primeng/colorpicker';\n\n@Component({\n selector: 'phoenix-meta-color-picker',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n ColorPickerModule,\n FormsModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-colorPicker\n [attr.data-cy]=\"'color-picker-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (onChange)=\"onChanged(value)\"\n [disabled]=\"disable\"\n ></p-colorPicker>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .p-inputswitch {\n margin-top: 12px;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaColorPickerComponent),\n multi: true,\n },\n ],\n})\nexport class MetaColorPickerComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-currency',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n InputTextModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n InputNumberModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-inputNumber\n [attr.data-cy]=\"'currency-' + control?.id\"\n #myInput\n [style.display]=\"control.hidden ? 'none' : 'block'\"\n mode=\"currency\"\n inputId=\"currency-germany\"\n currency=\"EUR\"\n locale=\"de-DE\"\n [min]=\"10\"\n [(ngModel)]=\"value\"\n (input)=\"input($event)\"\n (ngModelChange)=\"changeValue($event)\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n class=\"w-full\"\n [style]=\"{ width: '100%' }\"\n >\n </p-inputNumber>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host ::ng-deep p-inputnumber input {\n width: 100% !important;\n box-sizing: border-box;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaCurrencyComponent),\n multi: true,\n },\n ],\n})\nexport class MetaCurrencyComponent extends BaseMetaField {\n changeValue(data: any) {\n this.parentForm.controls[this.control?.configuration?.key].setValue(data);\n }\n input(data: any) {\n const number = this.convertCurrencyStringToNumber(data.target.value);\n this.parentForm.controls[this.control?.configuration?.key].setValue(number);\n }\n\n convertCurrencyStringToNumber(currencyString: string) {\n // Remove dots for thousands separators\n const stringWithoutDots = currencyString.replace(/\\./g, '');\n\n // Replace comma with dot for decimal separator\n const stringWithDotDecimal = stringWithoutDots.replace(',', '.');\n\n // Parse the string into a number\n const numericValue = parseFloat(stringWithDotDecimal);\n\n return numericValue;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'phoenix-meta-multiple-select',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MultiSelectModule,\n FormsModule,\n MetaLabelComponent,\n InlineFieldError,\n TranslateModule,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-multiSelect\n [attr.data-cy]=\"'multiSelect-' + control?.id\"\n [hidden]=\"control?.hidden\"\n (onChange)=\"onChanged(value)\"\n (onSelectAllChange)=\"onChanged(value)\"\n [(ngModel)]=\"value\"\n [options]=\"control.configuration.options\"\n optionLabel=\"userFriendlyMessage\"\n [filter]=\"control.configuration?.filter\"\n [style]=\"{ width: '100%' }\"\n [disabled]=\"disable\"\n appendTo=\"body\"\n [showHeader]=\"false\"\n ></p-multiSelect>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaMultipleSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MetaMultipleSelectComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { KeyFilterModule } from 'primeng/keyfilter';\n// import { LanguageParamResolverPipe, Regex } from '@phoenix/util/util-common';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'phoenix-meta-number-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputNumberModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n InputTextModule,\n // LanguageParamResolverPipe,\n ],\n template: `\n <div [hidden]=\"control?.hidden\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-inputNumber\n [attr.data-cy]=\"'input-number-' + control?.id\"\n [(ngModel)]=\"value\"\n (onInput)=\"onChanged(getInputValue($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n [useGrouping]=\"false\"\n [min]=\"1\"\n class=\"w-full\"\n [style]=\"{ width: '100%' }\"\n >\n </p-inputNumber>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [``],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaNumberComponent),\n multi: true,\n },\n ],\n})\nexport class MetaNumberComponent extends BaseMetaField {\n // public regex = Regex;\n lang = inject(TranslateService).currentLang;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { PasswordModule } from 'primeng/password';\n@Component({\n selector: 'phoenix-meta-password-feild',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n InputSwitchModule,\n FormsModule,\n PasswordModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-password\n [attr.data-cy]=\"'password-' + control?.id\"\n [disabled]=\"disable\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n [feedback]=\"false\"\n (input)=\"onChanged(getInputValue($event))\"\n class=\"ng-invalid ng-dirty\"\n ></p-password>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .p-component {\n width: 100%;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaPasswordFeildComponent),\n multi: true,\n },\n ],\n})\nexport class MetaPasswordFeildComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { SelectButtonModule } from 'primeng/selectbutton';\n\n@Component({\n selector: 'phoenix-meta-select-button',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n FormsModule,\n SelectButtonModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n <p-selectButton\n [attr.data-cy]=\"'select-button-' + control?.id\"\n [options]=\"control.configuration.options\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n [disabled]=\"disable\"\n (onChange)=\"onChanged(value)\"\n optionLabel=\"userFriendlyMessage\"\n optionValue=\"value\"\n ></p-selectButton>\n\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSelectButtonComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSelectButtonComponent extends BaseMetaField {}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'translateDropdownData',\n standalone: true,\n})\nexport class TranslateDropdownData implements PipeTransform {\n protected translateService = inject(TranslateService);\n transform(data: any, paramName: string): any {\n let arr: any = [];\n paramName\n ? data?.forEach((item: any) => {\n const obj = item;\n obj[paramName] = item[paramName]\n ? this.translateService.instant(item[paramName])\n : paramName;\n arr.push(obj);\n })\n : (arr = data);\n\n return arr;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport { DropdownModule } from 'primeng/dropdown';\n\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { ImageModule } from 'primeng/image';\nimport { debounceTime, of, switchMap } from 'rxjs';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { TranslateDropdownData } from '../../utils/translate-dropdown-data.pipe';\n\n@Component({\n selector: 'phoenix-meta-single-select-object-based',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DropdownModule,\n MetaLabelComponent,\n FormsModule,\n TranslateModule,\n TranslateDropdownData,\n ImageModule,\n InlineFieldError,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-dropdown\n [attr.data-cy]=\"'single-select-ob' + control?.id\"\n [hidden]=\"control?.hidden\"\n filterBy=\"value\"\n [optionLabel]=\"oiKey\"\n [options]=\"\n control.configuration.options | translateDropdownData : 'value'\n \"\n [showClear]=\"control.configuration?.showClear\"\n [(ngModel)]=\"value\"\n [style]=\"{ width: '100%' }\"\n [disabled]=\"disable || control?.disable\"\n [filter]=\"control.configuration?.filter\"\n [group]=\"control.configuration.group\"\n (onClear)=\"onDateClear()\"\n (onChange)=\"onChanged(value)\"\n [panelStyle]=\"{ width: '100%' }\"\n appendTo=\"body\"\n >\n <ng-template let-option pTemplate=\"group\">\n <div class=\"flex align-items-center\">\n <span class=\"font-bold ml-2\">{{ option.value }}</span>\n </div>\n </ng-template>\n\n <ng-template let-data pTemplate=\"selectedItem\">\n <div class=\"flex align-items-center gap-2\" *ngIf=\"data\">\n <div>{{ data?.[oiKey] }}</div>\n </div>\n </ng-template>\n\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex\">\n <i *ngIf=\"option.icon\" [ngClass]=\"option.icon\" class=\"mr-1\"></i>\n <div>\n {{ option?.value }}\n </div>\n </div>\n </ng-template>\n </p-dropdown>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSingleSelectObjectBasedComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSingleSelectObjectBasedComponent extends BaseMetaField {\n public oiKey: string = 'value';\n\n onDateClear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n\n constructor() {\n super();\n this.changeSubs$ = this.changeSub\n .asObservable()\n .pipe(\n debounceTime(500),\n switchMap((item) => {\n return of(item);\n })\n )\n .subscribe((trigg: boolean) => {\n if (trigg) {\n this.changes();\n }\n });\n }\n\n override ngOnInit(): void {\n this.changes();\n }\n\n changes(): void {\n let soi = this.control.configuration.options?.[0];\n\n ///set default property on options items for metaform model\n if (!this.parentForm.get(this.control.configuration.key)?.value) {\n this.control.configuration.options?.forEach((o: any, i: number) => {\n /////standardize DEFAULT VALUES for OptionItems THROGH METAFORMS. remove this conditions\n if (o.update?.default || o.default) {\n soi = this.control.configuration.options[i];\n this.parentForm.get(this.control.configuration.key)?.setValue(soi);\n }\n });\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ImageModule } from 'primeng/image';\nimport { SelectModule } from 'primeng/select';\nimport { debounceTime, of, switchMap } from 'rxjs';\n\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { TranslateDropdownData } from '../../utils/translate-dropdown-data.pipe';\n\n@Component({\n selector: 'phoenix-meta-single-select',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MetaLabelComponent,\n SelectModule,\n FormsModule,\n TranslateModule,\n TranslateDropdownData,\n ImageModule,\n InlineFieldError,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n <p-select\n [attr.data-cy]=\"'single-select-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [optionLabel]=\"flagMode ? 'viewName' : oiKey ? oiKey : 'labelKeyValEn'\"\n [optionValue]=\"flagMode ? 'original' : undefined\"\n [options]=\"\n flagMode\n ? flagOptions\n : (control.configuration.options\n | translateDropdownData : (oiKey ? oiKey : 'labelKeyValEn'))\n \"\n [dataKey]=\"flagMode ? 'key' : dataKeyProp\"\n [filter]=\"control.configuration.options.length > 15\"\n [filterFields]=\"\n flagMode\n ? [\n 'viewName',\n 'viewCode',\n 'original.userFriendlyMessage',\n 'original.key'\n ]\n : undefined\n \"\n [showClear]=\"control.configuration?.showClear\"\n [(ngModel)]=\"value\"\n [style]=\"{ width: '100%' }\"\n [disabled]=\"disable || control?.disable\"\n [group]=\"control.configuration.group\"\n (onClear)=\"onDateClear()\"\n (onChange)=\"onChanged($event.value)\"\n [panelStyle]=\"{ width: '100%' }\"\n appendTo=\"body\"\n >\n <!-- Optional group header -->\n <ng-template let-option pTemplate=\"group\">\n <div class=\"flex align-items-center\">\n <i [class]=\"option.icon\"></i>\n <span class=\"font-bold ml-2\">{{ option.label }}</span>\n </div>\n </ng-template>\n\n <!-- Selected value (in flag mode 'data' is ORIGINAL object) -->\n <ng-template let-data pTemplate=\"selectedItem\">\n <div class=\"flex align-items-center gap-2\" *ngIf=\"data\">\n <img\n *ngIf=\"flagMode && (data.key || data.code)\"\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + (data.key || data.code).toLowerCase()\"\n style=\"width:22px\"\n alt=\"\"\n />\n <img\n *ngIf=\"!flagMode && data?.image\"\n [src]=\"data.image\"\n height=\"17\"\n width=\"20\"\n alt=\"\"\n />\n <div>\n {{ flagMode\n ? (data.userFriendlyMessage || data.name || data['labelKeyValEn'])\n : (data?.[oiKey] ? data?.[oiKey] : data?.['labelKeyValEn']) }}\n </div>\n </div>\n </ng-template>\n\n <!-- Dropdown list item (in flag mode 'option' is the VIEW-MODEL) -->\n <ng-template let-option pTemplate=\"item\">\n <div class=\"flex align-items-center gap-2\">\n <img\n *ngIf=\"flagMode && option.viewCode\"\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + option.viewCode.toLowerCase()\"\n style=\"width:22px\"\n alt=\"\"\n />\n <img\n *ngIf=\"!flagMode && option?.image\"\n [src]=\"option.image\"\n height=\"20\"\n width=\"20\"\n alt=\"\"\n />\n <div>\n {{ flagMode\n ? option.viewName\n : (option?.[oiKey] ? option?.[oiKey] : option?.['labelKeyValEn']) }}\n </div>\n </div>\n </ng-template>\n </p-select>\n\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSingleSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSingleSelectComponent extends BaseMetaField {\n /** Label key used in legacy mode */\n public oiKey!: string;\n\n /** True = render flags + search; value remains original { key, userFriendlyMessage } */\n public flagMode = false;\n\n /**\n * In flag mode, we feed a VIEW list that merges the original option with view fields:\n * { ...original, viewName, viewCode, original } and select by 'original'.\n */\n public flagOptions: Array<\n { viewName: string; viewCode: string; original: any } & any\n > = [];\n\n private translateService = inject(TranslateService);\n\n onDateClear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n\n constructor() {\n super();\n this.changeSubs$ = this.changeSub\n .asObservable()\n .pipe(\n debounceTime(300),\n switchMap((x) => of(x))\n )\n .subscribe((trigg: boolean) => {\n if (trigg) this.changes();\n });\n }\n\n override ngOnInit(): void {\n this.changes();\n }\n\n /** dataKey for legacy mode; lets PrimeNG match value to option by a stable field */\n get dataKeyProp(): string | undefined {\n const opts = this.control?.configuration?.options ?? [];\n const sample = opts[0] || {};\n if ('key' in sample) return 'key';\n if ('value' in sample) return 'value';\n return undefined;\n }\n\n /** Initialize/normalize options and current value */\n changes(): void {\n this.flagMode = !!this.control?.configuration?.flagMode;\n\n if (this.flagMode) {\n const currentLang = this.translateService.currentLang || 'en';\n const source = this.control.configuration.options || [];\n\n // Merge original option + view fields; keep original shape for the model\n this.flagOptions = source\n .map((o: any) => {\n const viewName =\n o.userFriendlyMessage ?? o.name ?? o['labelKeyValEn'] ?? '';\n const viewCode = (\n o.key ??\n o.code ??\n o.iso2 ??\n o.value ??\n ''\n ).toString();\n return { ...o, viewName, viewCode, original: o };\n })\n .filter(\n (vm: { viewName: any; viewCode: any }) => vm.viewName && vm.viewCode\n )\n .sort((a: { viewName: string }, b: { viewName: any }) =>\n a.viewName.localeCompare(b.viewName, currentLang, {\n sensitivity: 'base',\n })\n );\n\n // Normalize current value so the select can display it:\n // - if backend sent 'DE' (string) → find matching option by key/code and set the ORIGINAL object\n // - if backend sent { code:'DE', name:'Germany' } → map to ORIGINAL, or minimally to {key,userFriendlyMessage}\n const v = this.value;\n if (typeof v === 'string' && v) {\n const found = this.flagOptions.find(\n (o) =>\n (o.key && o.key.toLowerCase() === v.toLowerCase()) ||\n (o.viewCode && o.viewCode.toLowerCase() === v.toLowerCase())\n );\n if (found) {\n this.value = found.original;\n this.onChanged?.(this.value);\n }\n } else if (\n v &&\n typeof v === 'object' &&\n !('key' in v) &&\n ('code' in v || 'value' in v)\n ) {\n const key = (v.key ?? v.code ?? v.value ?? '').toString();\n const found = this.flagOptions.find(\n (o) =>\n (o.key && o.key.toLowerCase() === key.toLowerCase()) ||\n (o.viewCode && o.viewCode.toLowerCase() === key.toLowerCase())\n );\n if (found) {\n this.value = found.original;\n this.onChanged?.(this.value);\n } else {\n // fallback minimal normalization\n this.value = {\n key,\n userFriendlyMessage:\n v.userFriendlyMessage ?? v.name ?? v['labelKeyValEn'] ?? '',\n };\n this.onChanged?.(this.value);\n }\n }\n return;\n }\n\n // Legacy (no flags): keep previous behavior\n this.oiKey = 'userFriendlyMessage';\n const currentLang = this.translateService.currentLang;\n let soi = this.control.configuration.options?.[0];\n\n if (\n this.control.mandatory &&\n this.control.configuration.options?.length === 1\n ) {\n this.parentForm\n .get(this.control.configuration.key)\n ?.setValue(this.control.configuration.options[0]);\n }\n\n if (!this.parentForm.get(this.control.configuration.key)?.value) {\n this.control.configuration.options?.forEach((o: any, i: number) => {\n if (o.update?.default || o.default) {\n soi = this.control.configuration.options[i];\n this.parentForm.get(this.control.configuration.key)?.setValue(soi);\n }\n });\n }\n\n if (soi?.labelKeyValEn) {\n this.oiKey =\n 'labelKeyVal' +\n currentLang.charAt(0).toUpperCase() +\n currentLang.slice(1);\n return;\n }\n if (soi?.userFriendlyMessage) {\n this.oiKey = 'userFriendlyMessage';\n return;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Input,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DatePickerModule } from 'primeng/datepicker';\n\n@Component({\n selector: 'phoenix-meta-start-due-date',\n standalone: true,\n imports: [\n DatePickerModule,\n InlineFieldError,\n ReactiveFormsModule,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n ],\n template: `\n <div [hidden]=\"control?.hidden\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <div class=\"flex\">\n <div class=\"flex-grow-1\">\n <p-datepicker\n [attr.data-cy]=\"'start-date-' + control?.id\"\n (onSelect)=\"onStartDateSelect($event)\"\n (onClearClick)=\"onStartDateClear()\"\n [style]=\"{ width: '100%' }\"\n [(ngModel)]=\"startDate\"\n [readonlyInput]=\"true\"\n [showButtonBar]=\"true\"\n [showIcon]=\"true\"\n [placeholder]=\"'LABELS.PLANNED_START' | translate\"\n appendTo=\"body\"\n ></p-datepicker>\n </div>\n <div class=\" flex align-items-center p-2 \">\n <i\n class=\"pi pi-arrow-right text-sm\"\n style=\"color: 'var(--surface-600)'\"\n ></i>\n </div>\n <div class=\"flex-grow-1\">\n <p-datepicker\n [attr.data-cy]=\"'due-date-' + control?.id\"\n (onSelect)=\"onEndDateSelect($event)\"\n (onClearClick)=\"onEndDateClear()\"\n [style]=\"{ width: '100%' }\"\n [(ngModel)]=\"endDate\"\n [readonlyInput]=\"true\"\n [showButtonBar]=\"true\"\n [showIcon]=\"true\"\n [placeholder]=\"'LABELS.PLANNED_END' | translate\"\n appendTo=\"body\"\n ></p-datepicker>\n </div>\n </div>\n <phoenix-inline-field-error [ctrl]=\"ctrl\"></phoenix-inline-field-error>\n </div>\n `,\n styles: [``],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaStartDueDateComponent),\n multi: true,\n },\n ],\n})\nexport class MetaStartDueDateComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n ctrl: any;\n private readonly dr = inject(DestroyRef);\n startDate?: any;\n endDate?: any;\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n\n constructor() {}\n\n ngOnInit() {\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n\n if (this.control.mandatory) this.ctrl.setValidators(this.ctrl.validator);\n\n this.parentForm\n .get(this.control.configuration.key)\n ?.valueChanges.pipe(takeUntilDestroyed(this.dr))\n .subscribe((r) => {\n this.validateDates();\n });\n\n this.validateDates();\n }\n\n writeValue(obj: any): void {\n if (obj) {\n this.startDate = obj.startDate;\n this.endDate = obj.endDate;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n }\n\n // Handle start date selection\n onStartDateSelect(event: any) {\n this.startDate = event;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n // Handle end date selection\n onEndDateSelect(event: any) {\n this.endDate = event;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n // Handle start date clear value\n onStartDateClear() {\n this.startDate = null;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n // Handle end date clear value\n onEndDateClear() {\n this.endDate = null;\n this.onChanged({ startDate: this.startDate, endDate: this.endDate });\n this.validateDates();\n }\n\n validateDates() {\n //Both dates are mandatory\n if (this.control.mandatory && (!this.startDate || !this.endDate)) {\n this.parentForm\n .get(this.control.configuration.key)\n ?.setErrors({ required: true });\n } else {\n this.parentForm.get(this.control.configuration.key)?.setErrors(null);\n }\n\n // End date must be after start date\n if (\n this.startDate &&\n this.endDate &&\n this.startDate.setHours(0, 0, 0, 0) > this.endDate.setHours(0, 0, 0, 0)\n ) {\n this.parentForm\n .get(this.control.configuration.key)\n ?.setErrors({ dueDate: true });\n }\n\n //TBD: Scenario if only one date is mandatory\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChanged = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-switch',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n InputSwitchModule,\n FormsModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-inputSwitch\n [attr.data-cy]=\"'switch-' + control?.id\"\n class=\"ml-1 mr-1\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (onChange)=\"onChanged(value)\"\n [disabled]=\"disable\"\n ></p-inputSwitch>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .p-inputswitch {\n margin-top: 12px;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaSwitchComponent),\n multi: true,\n },\n ],\n})\nexport class MetaSwitchComponent extends BaseMetaField {}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { TextareaModule } from 'primeng/textarea';\n\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-text-area',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TextareaModule,\n MetaLabelComponent,\n TranslateModule,\n InlineFieldError,\n ],\n template: `\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <textarea\n [attr.data-cy]=\"'text-area-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (input)=\"onChanged(getInputValue($event))\"\n [disabled]=\"disable\"\n (blur)=\"onTouched()\"\n [rows]=\"5\"\n [cols]=\"30\"\n pTextarea\n class=\"w-full h-10rem\"\n ></textarea>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTextAreaComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTextAreaComponent extends BaseMetaField {\n lang = inject(TranslateService).currentLang;\n private stripHtmlTags(input: string): string {\n if (!input) return '';\n // Replace <br> tags (and variations) with a temporary placeholder\n const placeholder = '___BR_TAG_PLACEHOLDER___';\n const brPattern = /<br\\s*\\/?>/gi;\n let textWithPlaceholders = input.replace(brPattern, placeholder);\n\n // Replace closing block-level tags with placeholder + newline for better formatting\n const blockTags = ['p', 'div', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n blockTags.forEach((tag) => {\n const closingTagPattern = new RegExp(`</${tag}>`, 'gi');\n textWithPlaceholders = textWithPlaceholders.replace(\n closingTagPattern,\n placeholder\n );\n });\n\n // Strip all remaining HTML tags\n const textWithoutHtml = textWithPlaceholders.replace(/<\\/?[^>]+(>|$)/g, '');\n\n // Decode HTML entities\n const decodedText = this.decodeHtmlEntities(textWithoutHtml);\n\n // Replace placeholder back with newline characters for textarea\n // Clean up multiple consecutive newlines (max 2)\n return decodedText\n .replace(new RegExp(placeholder, 'g'), '\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n }\n\n private decodeHtmlEntities(text: string): string {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value;\n }\n\n override writeValue(value: string): void {\n // Clean HTML before assigning\n this.value = this.stripHtmlTags(value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport {\n NgxEditorComponent,\n NgxEditorMenuComponent,\n Editor,\n toHTML,\n toDoc,\n Toolbar,\n schema,\n} from 'ngx-editor';\nimport { ButtonModule } from 'primeng/button';\nimport { TextareaModule } from 'primeng/textarea';\nimport { Schema } from 'prosemirror-model';\n\n// Create a custom schema that extends the default ngx-editor schema\n// to support the 'type' attribute on ordered lists\nfunction createCustomSchema(): Schema {\n const baseSchema = schema;\n const customNodes = baseSchema.spec.nodes.update('ordered_list', {\n ...baseSchema.spec.nodes.get('ordered_list'),\n attrs: {\n order: { default: 1 },\n type: { default: null }, // Add support for type attribute (1, a, A, i, I)\n },\n parseDOM: [\n {\n tag: 'ol',\n getAttrs: (dom: HTMLElement | string) => {\n if (typeof dom === 'string') return null;\n return {\n order: dom.hasAttribute('start')\n ? parseInt(dom.getAttribute('start') || '1', 10)\n : 1,\n type: dom.getAttribute('type') || null,\n };\n },\n },\n ],\n toDOM: (node: any) => {\n const attrs: any = { order: node.attrs.order };\n if (node.attrs.type) {\n attrs.type = node.attrs.type;\n }\n return ['ol', attrs, 0];\n },\n });\n\n return new Schema({\n nodes: customNodes,\n marks: baseSchema.spec.marks,\n });\n}\n\n@Component({\n selector: 'phoenix-meta-text-editor',\n standalone: true,\n imports: [\n CommonModule,\n MetaLabelComponent,\n ReactiveFormsModule,\n FormsModule,\n InlineFieldError,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n ButtonModule,\n TextareaModule,\n ],\n template: `\n <div [hidden]=\"control?.hidden\">\n <!-- Preview/Display Only Mode -->\n <div *ngIf=\"previewMode\" class=\"preview-mode\">\n <phoenix-meta-label\n *ngIf=\"!hideLabel\"\n [control]=\"control\"\n ></phoenix-meta-label>\n <div class=\"html-preview-content\" [innerHTML]=\"htmlContent\"></div>\n </div>\n\n <!-- Edit Mode -->\n <div *ngIf=\"!previewMode\">\n <div class=\"mb-2\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n </div>\n <div [attr.data-cy]=\"'editor-' + control?.id\">\n <!-- Visual Editor Mode -->\n <div *ngIf=\"!isHtmlMode\">\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"toolbar\"\n ></ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [(ngModel)]=\"htmlContent\"\n [disabled]=\"disable\"\n (ngModelChange)=\"onEditorChange($event)\"\n (blur)=\"onTouched()\"\n ></ngx-editor>\n </div>\n\n <!-- HTML Source Mode -->\n <textarea\n *ngIf=\"isHtmlMode\"\n pTextarea\n [(ngModel)]=\"htmlContent\"\n [disabled]=\"disable\"\n (ngModelChange)=\"onHtmlChange($event)\"\n (blur)=\"onTouched()\"\n [rows]=\"10\"\n class=\"w-full font-monospace\"\n ></textarea>\n </div>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n </div>\n `,\n styles: [\n `\n :host::ng-deep {\n .NgxEditor__Wrapper {\n min-height: 120px;\n }\n .NgxEditor__Content {\n min-height: 120px;\n }\n /* remove import image if needed */\n .NgxEditor__MenuItem--IconContainer[title='Insert Image'] {\n display: none !important;\n }\n\n .font-monospace {\n font-family: 'Courier New', Courier, monospace;\n font-size: 13px;\n }\n\n .html-preview-content {\n padding: 0.75rem;\n background: var(--surface-ground);\n border: 1px solid var(--surface-border);\n border-radius: var(--border-radius);\n min-height: 50px;\n\n /* Style the rendered HTML content */\n p {\n margin: 0 0 0.5rem 0;\n }\n\n p:last-child {\n margin-bottom: 0;\n }\n\n ul,\n ol {\n margin: 0.5rem 0;\n padding-left: 1.5rem;\n }\n\n strong {\n font-weight: bold;\n }\n\n em {\n font-style: italic;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0.5rem 0;\n }\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTextEditorComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTextEditorComponent\n extends BaseMetaField\n implements OnInit, OnDestroy\n{\n @Input() previewMode: boolean = false;\n @Input() hideLabel: boolean = false;\n\n editor!: Editor;\n isHtmlMode = false;\n htmlContent: string = '';\n\n toolbar: Toolbar = [\n ['bold', 'italic'],\n ['underline', 'strike'],\n ['code', 'blockquote'],\n ['ordered_list', 'bullet_list'],\n [{ heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }],\n ['link'],\n ['text_color', 'background_color'],\n ['align_left', 'align_center', 'align_right', 'align_justify'],\n ];\n\n override ngOnInit(): void {\n super.ngOnInit();\n // Only initialize editor if not in preview mode\n if (!this.previewMode) {\n this.editor = new Editor({\n schema: createCustomSchema(),\n keyboardShortcuts: true,\n history: true,\n inputRules: true,\n });\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n // Only destroy editor if it was initialized\n if (this.editor) {\n this.editor.destroy();\n }\n }\n\n override writeValue(value: string): void {\n this.value = value;\n this.htmlContent = this.removeLinks(value || '');\n }\n\n @HostListener('document:keydown', ['$event'])\n handleToggleShortcut(event: KeyboardEvent): void {\n // Hidden shortcut: Ctrl/Cmd + Shift + H\n const usesToggleKey =\n (event.ctrlKey || event.metaKey) &&\n event.shiftKey &&\n event.key.toLowerCase() === 'h';\n\n if (!usesToggleKey || this.previewMode || this.disable) {\n return;\n }\n\n event.preventDefault();\n this.toggleHtmlMode();\n }\n\n onEditorChange(content: any): void {\n // Convert to HTML if the editor outputs a JSON doc object\n if (content && typeof content === 'object') {\n this.htmlContent = toHTML(content);\n } else {\n this.htmlContent = content || '';\n }\n this.htmlContent = this.removeLinks(this.htmlContent);\n this.value = this.htmlContent;\n this.onChanged(this.htmlContent);\n }\n\n onHtmlChange(html: string): void {\n this.htmlContent = this.removeLinks(html);\n this.value = this.htmlContent;\n this.onChanged(this.htmlContent);\n }\n\n toggleHtmlMode(): void {\n this.isHtmlMode = !this.isHtmlMode;\n }\n\n private removeLinks(html: string): string {\n if (!html) {\n return '';\n }\n // Unwrap only anchor links (href starting with '#') while keeping their text\n return html.replace(\n /<a\\b[^>]*href\\s*=\\s*[\"']?#([^\"']*)[\"'][^>]*>(.*?)<\\/a>/gis,\n '$2'\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { InputTextModule } from 'primeng/inputtext';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\n\n@Component({\n selector: 'phoenix-meta-text-input',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <input\n [attr.data-cy]=\"'input-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (input)=\"onChanged(getInputValue($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n type=\"text\"\n pInputText\n class=\"w-full\"\n />\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [``],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTextInputComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTextInputComponent extends BaseMetaField {\n lang = inject(TranslateService).currentLang;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef, inject } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { InputTextModule } from 'primeng/inputtext';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { timePeriodFromMS } from '../../utils/form-fields.utils';\n\n@Component({\n selector: 'phoenix-meta-timeperiod',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <input\n [attr.data-cy]=\"'time-period-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [value]=\"value\"\n (input)=\"onChanged(getInputValue($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"isDisabled\"\n type=\"text\"\n pInputText\n class=\"w-full\"\n />\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaTimeperiodComponent),\n multi: true,\n },\n ],\n})\nexport class MetaTimeperiodComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n value!: string;\n ctrl: any;\n\n ngOnInit() {\n this.ctrl = this.parentForm.get(this.control.configuration.key);\n }\n\n public onChanged!: (value: string) => void;\n public onTouched!: () => void;\n public isDisabled!: boolean;\n getInputValue(event: Event): string {\n if (event.target instanceof HTMLInputElement) {\n return event.target.value;\n }\n if (event.target instanceof HTMLTextAreaElement) {\n return event.target.value;\n }\n return '';\n }\n writeValue(value: string | number | null | undefined): void {\n if (value === null || value === undefined || value === '') {\n this.value = '';\n return;\n }\n\n this.value = typeof value === 'string' ? value : timePeriodFromMS(value);\n }\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean) {\n this.isDisabled = isDisabled;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { KeyFilterModule } from 'primeng/keyfilter';\n\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'phoenix-meta-upload',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n\n FileUploadModule,\n ButtonModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-button\n [label]=\"\n file?.name\n ? ('LABELS.SELECTED_FILE' | translate) + ': ' + file?.name\n : (control?.configuration?.label | translate)\n \"\n icon=\"pi pi-upload\"\n class=\" white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n (click)=\"triggerFileInput()\"\n [text]=\"true\"\n />\n\n <input\n [attr.data-cy]=\"'upload-' + control?.id\"\n #fileInput\n [accept]=\"control?.configuration?.accept\"\n id=\"file-upload\"\n [hidden]=\"control?.hidden\"\n [(ngModel)]=\"value\"\n (input)=\"onChanged(this.fileChange($event))\"\n (blur)=\"onTouched()\"\n [disabled]=\"disable\"\n [pKeyFilter]=\"\"\n type=\"file\"\n pInputText\n class=\"w-full\"\n />\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n input[type='file'] {\n display: none;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaUploadComponent),\n multi: true,\n },\n ],\n})\nexport class MetaUploadComponent extends BaseMetaField {\n @ViewChild('fileInput') fileInput!: ElementRef;\n\n lang = inject(TranslateService).currentLang;\n file: any;\n fileChange(event: any) {\n this.file = event.target.files[0];\n return this.file;\n }\n\n triggerFileInput() {\n this.fileInput.nativeElement.click();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'fieldCol',\n standalone: true,\n})\nexport class FieldColPipe implements PipeTransform {\n transform(value: any, ...args: unknown[]): string {\n if (value.style) {\n return `col-${value.style.colWidth} `;\n } else {\n return 'col-12';\n }\n }\n}\n","export enum GlobalPhase {\n SC_PHASE = 'sc',\n RA_PHASE = 'ra',\n PRA_PHASE = 'pra',\n IA_PHASE = 'ia',\n GAP_PHASE = 'gap',\n ADMINISTRATION_PHASE = 'administration',\n WF_PHASE = 'workflow',\n REPORT_PHASE = 'reporting',\n MY_TASKS = 'my-tasks',\n ALL_TASKS = 'all-tasks',\n TASKBOARD = 'taskboards',\n SPACES = 'spaces',\n CATALOG = 'catalog',\n CATEGORIES = 'categories',\n DASHBOARD = 'dashboard',\n MONITORING = 'monitoring',\n RISK_OVERVIEW = 'RISK_OVERVIEW',\n}\n","export class SoTypes {\n static readonly COMPL_APPLIED_MODULE = 'COMPL_APPLIED_MODULE';\n static readonly COMPL_APPLIED_MEASURE = 'COMPL_APPLIED_MEASURE';\n static readonly COMPL_APPLIED_REQUIREMENT = 'COMPL_APPLIED_REQUIREMENT';\n static readonly COMPL_APPLIED_THREAT = 'COMPL_APPLIED_THREAT';\n static readonly COMPL_APPLIED_RISK = 'COMPL_APPLIED_RISK';\n static readonly COMPL_APPLIED_CONTROL = 'COMPL_APPLIED_CONTROL';\n\n static resolveUrlType(typeLabelKey: SoTypes | string) {\n switch (typeLabelKey) {\n case SoTypes.COMPL_APPLIED_MODULE:\n return SoTypesString.MODULES;\n case SoTypes.COMPL_APPLIED_CONTROL:\n return SoTypesString.CONTROLS;\n case SoTypes.COMPL_APPLIED_REQUIREMENT:\n return SoTypesString.REQUIREMENTS;\n case SoTypes.COMPL_APPLIED_MEASURE:\n return SoTypesString.MEASURES;\n case SoTypes.COMPL_APPLIED_THREAT:\n return SoTypesString.THREATS;\n case SoTypes.COMPL_APPLIED_RISK:\n return SoTypesString.RISKS;\n case 'COMPL_RISK_OBJECT':\n return SoTypesString.RISKS;\n default:\n return SoTypesString.MODULES;\n }\n }\n\n static resolveUrlTypeByString(stringType: SoTypesString | string) {\n switch (stringType) {\n case SoTypesString.MODULES:\n return SoTypes.COMPL_APPLIED_MODULE;\n case SoTypesString.CONTROLS:\n return SoTypes.COMPL_APPLIED_CONTROL;\n case SoTypesString.REQUIREMENTS:\n return SoTypes.COMPL_APPLIED_REQUIREMENT;\n case SoTypesString.MEASURES:\n return SoTypes.COMPL_APPLIED_MEASURE;\n case SoTypesString.THREATS:\n return SoTypes.COMPL_APPLIED_THREAT;\n case SoTypesString.RISKS:\n return SoTypes.COMPL_APPLIED_RISK;\n default:\n return SoTypes.COMPL_APPLIED_MODULE;\n }\n }\n}\n\nexport enum SoTypesString {\n MODULES = 'modules',\n REQUIREMENTS = 'requirements',\n MEASURES = 'measures',\n THREATS = 'threats',\n RISKS = 'risks',\n VULNERABILITIES = 'vulnerabilities',\n DAMAGE_SCENARIO = 'damagescenarios',\n RISK_TREATMENT = 'risktreatments',\n CONTROLS = 'controls',\n ADDITIONAL_MEASURES = 'additionalmeasures',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'stripHtml',\n standalone: true,\n})\nexport class StripHtmlPipe implements PipeTransform {\n transform(value: string | null | undefined): string {\n if (!value) return '';\n return value.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n}","import {\n AfterViewInit,\n Component,\n DestroyRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { FormGroup, FormsModule } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { InputSwitchModule } from 'primeng/inputswitch';\n// import { SerachCardComponent } from '@phoenix/ui/ui-common';\n// import { DateFormatService } from '@phoenix/service/common';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { distinctUntilChanged } from 'rxjs';\nimport { PasswordModule } from 'primeng/password';\nimport { SelectButtonModule } from 'primeng/selectbutton';\n\n// import { SearchResult } from '@phoenix/model-meta';\n// import { EnvService } from '@phoenix/environment';\n// import { TransformAttributeTypesService } from '@phoenix/service/isms';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { ButtonModule } from 'primeng/button';\nimport { GlobalPhase } from '../../utils/global-phase.utils';\nimport { SoTypes } from '../../utils/so-types';\nimport { getLanguageParam } from '../../utils/lang.utils';\nimport { ControlType } from '../../utils/control-type.enum';\nimport { timePeriodFromMS } from '../../utils/form-fields.utils';\nimport { StripHtmlPipe } from '../../utils/strip-html.pipe';\n\n@Component({\n selector: 'phoenix-read-only-input',\n standalone: true,\n imports: [\n CommonModule,\n MetaLabelComponent,\n InputSwitchModule,\n FormsModule,\n // SerachCardComponent,\n CheckboxModule,\n PasswordModule,\n TranslateModule,\n SelectButtonModule,\n OverlayPanelModule,\n PanelModule,\n ButtonModule,\n StripHtmlPipe,\n ],\n templateUrl: './read-only-input.component.html',\n styleUrls: ['./read-only-input.component.scss'],\n})\nexport class ReadOnlyInputComponent implements OnInit, AfterViewInit {\n @Input() control: any;\n @Input() metaform!: FormGroup;\n value!: any;\n ctrlType = ControlType;\n\n constructor(\n private sanitizer: DomSanitizer,\n private translateService: TranslateService,\n private dr: DestroyRef // private envService: EnvService, // private transformAtService: TransformAttributeTypesService\n ) {}\n\n ngAfterViewInit(): void {\n this.metaform\n .get(this.control.configuration.key)\n ?.valueChanges.pipe(takeUntilDestroyed(this.dr), distinctUntilChanged())\n .subscribe(() => {\n this.setData();\n });\n }\n\n ngOnInit() {\n this.setData();\n }\n\n resolvePhase(type: string) {\n switch (type) {\n case SoTypes.COMPL_APPLIED_THREAT:\n case SoTypes.COMPL_APPLIED_MEASURE:\n case SoTypes.COMPL_APPLIED_MODULE:\n case SoTypes.COMPL_APPLIED_REQUIREMENT:\n case SoTypes.COMPL_APPLIED_CONTROL:\n return GlobalPhase.SC_PHASE;\n case SoTypes.COMPL_APPLIED_THREAT:\n case 'COMPL_RISK_OBJECT':\n return GlobalPhase.RA_PHASE;\n case 'CVE':\n return 'CVE';\n default:\n return GlobalPhase.IA_PHASE;\n }\n }\n\n setData(): void {\n switch (this.control.configuration.type) {\n case ControlType.CURRENCY:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n case ControlType.SS_OPTION:\n const data = this.metaform.get(this.control.configuration.key)?.value;\n if (!data) {\n this.value = null;\n break;\n }\n\n if (this.control.configuration.flagMode) {\n this.value = {\n key: data.key ?? data.code,\n userFriendlyMessage:\n data.userFriendlyMessage ?? data.name ?? data['labelKeyValEn'],\n };\n } else {\n const formattedLang =\n localStorage.getItem('language')!.charAt(0).toUpperCase() +\n localStorage.getItem('language')!.slice(1).toLowerCase();\n const val = data?.[`labelKeyVal${formattedLang}`];\n if (val) {\n this.value = val;\n } else {\n this.value = data?.userFriendlyMessage;\n }\n }\n break;\n case ControlType.MS_OPTION:\n const values = this.metaform.get(this.control.configuration.key)?.value;\n const maxItems = 4;\n if (values?.length) {\n this.value =\n values?.length <= maxItems\n ? values.map((v: any) => v.userFriendlyMessage).join(', ')\n : values\n .slice(0, maxItems)\n .map((v: any) => v.userFriendlyMessage)\n .join(', ') + ' ...';\n } else {\n const values = '';\n }\n\n break;\n\n case ControlType.DATE:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n case ControlType.START_DUE_DATE:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n case ControlType.LINKS_DATA:\n this.value = this.control?.data?.task?.links;\n break;\n\n case ControlType.TIMEPERIOD:\n const formValue = this.metaform.get(\n this.control.configuration.key\n )?.value;\n const convertedValue =\n typeof formValue === 'string'\n ? formValue\n : timePeriodFromMS(formValue);\n\n this.value = convertedValue;\n break;\n\n case ControlType.TEXT_AREA:\n const textAreaContent = this.metaform.get(\n this.control.configuration.key\n )?.value;\n if (textAreaContent) {\n this.value = this.stripHtmlTags(textAreaContent);\n } else {\n this.value = null;\n }\n break;\n\n // case ControlType.TEXT_EDITOR:\n // const htmlContent = this.metaform.get(\n // this.control.configuration.key\n // )?.value;\n // if (htmlContent?.replace(/<\\/?[^>]+(>|$)/g, '')) {\n // this.value = htmlContent;\n // } else {\n // this.value = null;\n // }\n // break;\n case ControlType.SWITCH:\n this.value = {\n isBoolean:\n typeof this.metaform.get(this.control.configuration.key)?.value ===\n 'boolean',\n res: this.metaform.get(this.control.configuration.key)?.value,\n };\n break;\n default:\n this.value = this.metaform.get(this.control.configuration.key)?.value;\n break;\n }\n }\n\n private stripHtmlTags(input: string): string {\n if (!input) return '';\n // Replace <br> tags (and variations) with a temporary placeholder\n const placeholder = '___BR_TAG_PLACEHOLDER___';\n const brPattern = /<br\\s*\\/?>/gi;\n let textWithPlaceholders = input.replace(brPattern, placeholder);\n\n // Replace closing block-level tags with placeholder + newline for better formatting\n const blockTags = ['p', 'div', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n blockTags.forEach((tag) => {\n const closingTagPattern = new RegExp(`</${tag}>`, 'gi');\n textWithPlaceholders = textWithPlaceholders.replace(\n closingTagPattern,\n placeholder\n );\n });\n\n // Strip all remaining HTML tags\n const textWithoutHtml = textWithPlaceholders.replace(/<\\/?[^>]+(>|$)/g, '');\n\n // Decode HTML entities\n const decodedText = this.decodeHtmlEntities(textWithoutHtml);\n\n // Replace placeholder back with newline characters\n // Clean up multiple consecutive newlines (max 2)\n return decodedText\n .replace(new RegExp(placeholder, 'g'), '\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n }\n\n private decodeHtmlEntities(text: string): string {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value;\n }\n}\n","<phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n\n<ng-container [ngSwitch]=\"control.configuration.type\">\n <ng-container *ngSwitchCase=\"ctrlType.TEXT_EDITOR\">\n <div\n [attr.data-cy]=\"'editor-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"read-only-editor-content\"\n [innerHTML]=\"value\"\n ></div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.TEXT_AREA\">\n <div\n class=\"w-full mt-3 mb-2 font-semibold text-500 whitespace-pre-line\"\n [attr.data-cy]=\"'textarea-' + control?.id\"\n [hidden]=\"control?.hidden\"\n [innerText]=\"value\"\n ></div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ctrlType.SWITCH\">\n <p-inputSwitch\n [attr.data-cy]=\"'switch-' + control?.id\"\n *ngIf=\"value?.isBoolean; else fallBack\"\n styleClass=\"mt-2 ml-1 mr-1\"\n [disabled]=\"true\"\n [(ngModel)]=\"value.res\"\n ></p-inputSwitch>\n </ng-container>\n <ng-container *ngSwitchCase=\"ctrlType.DATE\">\n <div\n [attr.data-cy]=\"'date-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value | date }}\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.START_DUE_DATE\">\n <div\n [attr.data-cy]=\"'date-' + control?.id\"\n *ngIf=\"value?.startDate; else fallBack\"\n class=\"flex font-semibold text-500 mt-3 mb-2\"\n >\n <span style=\"padding-top: 3px\">{{ value.startDate | date }}</span>\n <div class=\"flex align-items-center p-2\">\n <i\n class=\"pi pi-arrow-right text-sm\"\n style=\"color: 'var(--surface-600)'\"\n ></i>\n </div>\n <span style=\"padding-top: 3px\">{{ value.endDate | date }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.CHECKBOX\">\n <p-checkbox\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n styleClass=\"mt-3\"\n [(ngModel)]=\"value\"\n [binary]=\"true\"\n inputId=\"binary\"\n [disabled]=\"true\"\n ></p-checkbox>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.LINKS_DATA\">\n <div\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2 overflow-y-auto\"\n [attr.data-cy]=\"'link-' + control?.id\"\n >\n <ng-container *ngFor=\"let item of value\">\n <span class=\"m-2 text-sm font-light\">{{ item?.relationLabel }}</span>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ctrlType.ASSIGN\">\n <div\n *ngIf=\"value?.name; else fallBack\"\n [attr.data-cy]=\"'number-' + control?.id\"\n >\n <div>\n <p-button [rounded]=\"true\" [text]=\"true\" (onClick)=\"op.toggle($event)\">\n <div class=\"person-wrap\">\n <div class=\"person-avatar\">\n {{ value?.name?.toUpperCase().charAt(0) }}\n </div>\n <div>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{ value?.name }}\n </p>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{ value?.function }}\n </p>\n </div>\n </div></p-button\n >\n <p-overlayPanel #op>\n <div>\n <span class=\"block mb-2\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{ value.email ?? \" --\" }}\n </span>\n <p>\n <i class=\"pi pi-phone mr-1 text-500\"></i\n >{{ value.phone ?? \" --\" }}\n </p>\n </div></p-overlayPanel\n >\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.CURRENCY\">\n <div\n [attr.data-cy]=\"'currency-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value }}&nbsp; &#8364;\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.PASSWORD\">\n <div\n [attr.data-cy]=\"'password-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n <p-password\n class=\"ng-invalid ng-dirty\"\n [disabled]=\"true\"\n [(ngModel)]=\"value\"\n [feedback]=\"false\"\n ></p-password>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.SS_OPTION_OBJECT_BASED\">\n <div\n [attr.data-cy]=\"'SS-OPTION-OBJECT-BASED-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value.value }}\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.MS_OPTION\">\n <div\n [attr.data-cy]=\"'MS-OPTION-OBJECT-BASED-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2 white-space-nowrap overflow-hidden\"\n >\n {{ value }}\n </div>\n </ng-container>\n\n <!-- Remove this if necessary - spaces-overview GENERAL form contol -->\n <ng-container *ngSwitchCase=\"ctrlType.SS_OPTION\">\n <!-- Flag mode -->\n <ng-container *ngIf=\"control?.configuration?.flagMode; else ssOptionLegacy\">\n <div\n [attr.data-cy]=\"'SS-OPTION-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2 flex align-items-center gap-2\"\n >\n <img\n *ngIf=\"value?.key\"\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + value.key.toLowerCase()\"\n style=\"width: 22px\"\n alt=\"\"\n />\n <span>{{ value.userFriendlyMessage }}</span>\n </div>\n </ng-container>\n\n <!-- Legacy -->\n <ng-template #ssOptionLegacy>\n <div\n [attr.data-cy]=\"'SS-OPTION-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value | translate }}\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"ctrlType.NUMBER\">\n <div\n [attr.data-cy]=\"'number-' + control?.id\"\n *ngIf=\"value != null; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value }}\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <div\n [attr.data-cy]=\"'test-' + control?.id\"\n *ngIf=\"value; else fallBack\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n {{ value | stripHtml }}\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #fallBack>\n <div\n [attr.data-cy]=\"'test-' + control?.id\"\n class=\"font-semibold text-500 mt-3 mb-2\"\n >\n --\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef, inject } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroup,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n// import { Assignee } from '@phoenix/model-meta';\n// import { PhoenixDialogService } from '@phoenix/service/common';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { ObjectItemDialogComponent } from '../object-item-dialog/object-item-dialog.component';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Assignee } from '../../../../models/assignee.model';\nimport { tableColumnType } from '../../../data-table/utils/dataTable.enum';\n\n@Component({\n selector: 'phoenix-meta-assign-asset',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n MetaLabelComponent,\n TranslateModule,\n OverlayPanelModule,\n PanelModule,\n ],\n template: `\n <div [style.display]=\"control.hidden ? 'none' : 'block'\">\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <div\n [attr.data-cy]=\"'assign-' + control?.id\"\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n class=\"flex align-items-center\"\n >\n <div>\n <p-button\n [rounded]=\"true\"\n [text]=\"true\"\n (onClick)=\"op.toggle($event)\"\n >\n <div class=\"person-wrap\">\n <div class=\"person-avatar\">\n {{\n parentForm.controls[\n this.control.configuration.key\n ].value?.name?.charAt(0)\n }}\n </div>\n <div>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.name\n }}\n </p>\n <p\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n >\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.title\n }}\n </p>\n </div>\n </div></p-button\n >\n <p-overlayPanel #op>\n <div>\n <span class=\"block mb-2\">\n <i class=\"pi pi-envelope mr-1 text-500\"></i>\n\n {{\n parentForm.controls[this.control.configuration.key].value\n ?.email ?? ' --'\n }}\n </span>\n <p>\n <i class=\"pi pi-phone mr-1 text-500\"></i\n >{{\n parentForm.controls[this.control.configuration.key].value\n ?.phone ?? ' --'\n }}\n </p>\n </div></p-overlayPanel\n >\n </div>\n\n <div style=\"paddingBottom:4px\">\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n styleClass=\"p-button-sm mt-1\"\n type=\"button\"\n [text]=\"true\"\n label=\"{{ 'ACTION.REASSIGN' | translate }}\"\n (click)=\"assignAsset()\"\n ></p-button>\n <p-button\n *ngIf=\"\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n \"\n type=\"button\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n [text]=\"true\"\n styleClass=\"p-button-danger p-button-sm mt-1 ml-2\"\n ></p-button>\n </div>\n </div>\n <p-button\n *ngIf=\"\n !(\n parentForm.controls[this.control.configuration.key].value &&\n parentForm.controls[this.control.configuration.key].value.uuid\n )\n \"\n type=\"button\"\n icon=\"pi pi-user-plus\"\n styleClass=\"p-button-sm mt-1\"\n label=\"{{ 'ACTION.ASSIGN' | translate }}\"\n (click)=\"assignAsset()\"\n [text]=\"true\"\n ></p-button>\n </div>\n `,\n styles: [\n `\n .person-wrap {\n display: flex;\n align-items: center;\n\n margin-left: -6px;\n\n & p {\n margin: 0;\n }\n\n .person-avatar {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 28px;\n height: 28px;\n min-width: 28px;\n min-height: 28px;\n margin-right: 5px;\n background-color: rgb(233, 66, 96);\n color: white;\n border-radius: 50%;\n /* font-weight: 800; */\n font-size: 1rem;\n }\n .person-name :first-child {\n font-size: 1rem;\n }\n }\n\n .person-details {\n border-top: 1px solid #e0e0e0;\n padding: 5px;\n margin-left: -6px;\n width: 150px;\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n i {\n color: #e94260;\n padding-right: 5px;\n }\n\n .p-editor-container {\n padding-left: 0 !important;\n }\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaAssignAssetComponent),\n multi: true,\n },\n ],\n})\nexport class MetaAssignAssetComponent implements ControlValueAccessor {\n @Input() control: any;\n @Input() parentForm!: FormGroup;\n @Input() disable?: boolean;\n\n public onChanged!: (value: any) => void;\n public onTouched!: () => void;\n public isDisabled!: boolean;\n writeValue(value: any): void {}\n registerOnChange(fn: any): void {\n this.onChanged = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean) {\n this.isDisabled = isDisabled;\n }\n // private phoenixDialog = inject(PhoenixDialogService);\n private translateService = inject(TranslateService);\n private dialogService = inject(DialogService);\n person!: any;\n clear() {\n this.parentForm.controls[this.control.configuration.key].setValue(null);\n }\n assignAsset() {\n const ref = this.dialogService.open(ObjectItemDialogComponent, {\n header: this.translateService.instant('LABELS.ASSIGN_ASSET_GROUP'),\n width: '700px',\n height: '400px',\n modal: true,\n data: {\n tableData: this.control.configuration.items,\n columns: [\n {\n field: 'name',\n header: 'LABELS.Name',\n columnType: tableColumnType.TEXT,\n },\n {\n field: 'title',\n header: 'LABELS.TITLE',\n columnType: tableColumnType.TEXT,\n },\n // {\n // field: 'phone',\n // header: 'Phone',\n // columnType: tableColumnType.TEXT,\n // },\n // {\n // field: 'email',\n // header: 'Email',\n // columnType: tableColumnType.TEXT,\n // },\n ],\n },\n contentStyle: { overflow: 'auto' },\n draggable: true,\n closable: true,\n });\n\n ref.onClose.subscribe((response: any) => {\n if (response) {\n this.person = response;\n this.parentForm.controls[this.control.configuration.key].setValue(\n response\n );\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InlineFieldError } from '../../meta-field-error/inline-field-error.component';\nimport { MetaLabelComponent } from '../../meta-field-label/meta-label.component';\nimport { BaseMetaField } from '../../utils/base-meta-field';\nimport { KeyFilterModule } from 'primeng/keyfilter';\n\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'phoenix-meta-upload-dragdrop',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n InlineFieldError,\n FormsModule,\n MetaLabelComponent,\n TranslateModule,\n KeyFilterModule,\n FileUploadModule,\n ButtonModule,\n ],\n template: `\n <div>\n <phoenix-meta-label [control]=\"control\"></phoenix-meta-label>\n <p-fileUpload\n [attr.data-cy]=\"'upload-' + control?.id\"\n #fileInput\n [multiple]=\"false\"\n [accept]=\"control?.configuration?.accept\"\n maxFileSize=\"10485760\"\n styleClass=\"mb-3\"\n [hidden]=\"control?.hidden\"\n [showUploadButton]=\"false\"\n [showCancelButton]=\"false\"\n [disabled]=\"disable\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear()\"\n [chooseLabel]=\"'LABELS.BROWSE' | translate\"\n chooseIcon=\"pi pi-upload\"\n >\n <ng-template\n #header\n let-files\n let-chooseCallback=\"chooseCallback\"\n let-clearCallback=\"clearCallback\"\n let-uploadCallback=\"uploadCallback\"\n >\n <div class=\"flex justify-content-center w-full\">\n <p-button\n (onClick)=\"choose($event, chooseCallback)\"\n icon=\"pi pi-upload\"\n [label]=\"\n file?.name\n ? ('LABELS.SELECTED_FILE' | translate) + ': ' + file?.name\n : ('LABELS.BROWSE' | translate)\n \"\n severity=\"secondary\"\n />\n </div>\n </ng-template>\n <ng-template #empty>\n @if(ctrl.value){\n <div class=\"flex align-items-center justify-content-between\t w-full\">\n <div>\n <div>{{ ctrl.value['fileName'] }}</div>\n <div>{{ ctrl.value['size'] }} KB</div>\n </div>\n <p-button\n icon=\"pi pi-times\"\n [rounded]=\"true\"\n [text]=\"true\"\n severity=\"danger\"\n (onClick)=\"onFileRemove($event)\"\n />\n </div>\n\n } @else{\n <div class=\"text-center\">\n <div>\n <i\n style=\"font-size: 55px; opacity: 0.2\"\n class=\"pi pi-cloud-upload\"\n ></i>\n <p class=\"\">\n {{ 'PLACEHOLDERS.DRAG_AND_DROP_MESSAGE' | translate }}\n </p>\n </div>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n <phoenix-inline-field-error\n *ngIf=\"!control?.hidden\"\n [ctrl]=\"ctrl\"\n ></phoenix-inline-field-error>\n </div>\n `,\n styles: [\n `\n input[type='file'] {\n display: none;\n }\n `,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MetaUploadComponentDragDrop),\n multi: true,\n },\n ],\n})\nexport class MetaUploadComponentDragDrop extends BaseMetaField {\n @ViewChild('fileInput') fileInput!: ElementRef;\n fakeFile: any;\n\n createFakeFile(\n fileName: string,\n size: number,\n type: string = 'application/pdf'\n ): File {\n const emptyBuffer = new ArrayBuffer(size);\n const blob = new Blob([emptyBuffer], { type });\n\n return new File([blob], fileName, {\n type: type,\n lastModified: Date.now(),\n });\n }\n\n choose(event: any, callback: any) {\n callback();\n }\n\n ngAfterViewInit() {\n const { fileName, size, type } = this.ctrl.value;\n\n this.fakeFile = this.createFakeFile(fileName, size, type);\n\n this.file = this.fakeFile;\n }\n\n onFileSelect(event: any) {\n const selectedFile = event.files?.[0] || event.currentFiles?.[0];\n\n if (selectedFile) {\n this.file = selectedFile;\n\n this.onChanged(selectedFile);\n this.onTouched();\n }\n }\n\n onFileRemove(event: any) {\n this.file = null;\n this.onChanged(null);\n this.onTouched();\n }\n\n onFileClear() {\n this.file = null;\n this.onChanged(null);\n this.onTouched();\n }\n\n lang = inject(TranslateService).currentLang;\n file: any;\n\n // Keep this method for consistency, though it's not directly used in drag-drop\n fileChange(event: any) {\n this.file = event.target.files[0];\n\n return this.file;\n }\n\n triggerFileInput() {\n this.fileInput.nativeElement.click();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\n///Meta Fields\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { EditorModule } from 'primeng/editor';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaFormAbstract } from './meta-form-abstract';\nimport { MetaAssignResponsibleComponent } from './meta-form-fields/meta-assign-responsible/meta-assign-responsible.component';\nimport { MetaCalendarComponent } from './meta-form-fields/meta-calendar/meta-calendar.component';\nimport { MetaCheckboxColorPickerComponent } from './meta-form-fields/meta-checkbox-color-picker/meta-checkbox-color-picker.component';\nimport { MetaCheckboxComponent } from './meta-form-fields/meta-checkbox/meta-checkbox.component';\nimport { MetaColorPickerComponent } from './meta-form-fields/meta-color-picker/meta-color-picker.component';\nimport { MetaCurrencyComponent } from './meta-form-fields/meta-currency/meta-currency.component';\nimport { MetaMultipleSelectComponent } from './meta-form-fields/meta-multiple-select/meta-multiple-select.component';\nimport { MetaNumberComponent } from './meta-form-fields/meta-number-input/meta-number-input.component';\nimport { MetaPasswordFeildComponent } from './meta-form-fields/meta-password-feild/meta-password-feild.component';\nimport { MetaSelectButtonComponent } from './meta-form-fields/meta-select-button/meta-select-button.component';\nimport { MetaSingleSelectObjectBasedComponent } from './meta-form-fields/meta-single-select-object-based/meta-single-select-object_based.component';\nimport { MetaSingleSelectComponent } from './meta-form-fields/meta-single-select/meta-single-select.component';\nimport { MetaStartDueDateComponent } from './meta-form-fields/meta-start-due-date/meta-start-due-date.component';\nimport { MetaSwitchComponent } from './meta-form-fields/meta-switch/meta-switch.component';\nimport { MetaTextAreaComponent } from './meta-form-fields/meta-text-area/meta-text-area.component';\nimport { MetaTextEditorComponent } from './meta-form-fields/meta-text-editor/meta-text-editor.component';\nimport { MetaTextInputComponent } from './meta-form-fields/meta-text-input/meta-text-input.component';\nimport { MetaTimeperiodComponent } from './meta-form-fields/meta-timeperiod/meta-timeperiod.component';\nimport { MetaUploadComponent } from './meta-form-fields/meta-upload/meta-upload.component';\n\nimport { FieldColPipe } from './utils/field-col.pipe';\nimport { MetaFormService } from './services/meta-form.service';\nimport { HttpClient } from '@angular/common/http';\nimport { ControlType } from './utils/control-type.enum';\nimport { ReadOnlyInputComponent } from './meta-form-templates/read-only-input/read-only-input.component';\nimport { MetaAssignAssetComponent } from './meta-form-fields/meta-assign-asset/meta-assign-asset.component';\nimport { MetaUploadComponentDragDrop } from './meta-form-fields/meta-upload-dragdrop/meta-upload-dragdrop.component';\n\n@Component({\n selector: 'phoenix-meta-form',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n InputTextModule,\n InputTextModule,\n CalendarModule,\n DropdownModule,\n ButtonModule,\n MultiSelectModule,\n TranslateModule,\n CheckboxModule,\n EditorModule,\n FieldColPipe,\n //metafields -> to one module and than import here\n MetaTextEditorComponent,\n MetaCheckboxComponent,\n MetaTextInputComponent,\n MetaSingleSelectComponent,\n MetaStartDueDateComponent,\n MetaTextAreaComponent,\n MetaTextEditorComponent,\n MetaMultipleSelectComponent,\n MetaCalendarComponent,\n MetaUploadComponentDragDrop,\n MetaSwitchComponent,\n MetaPasswordFeildComponent,\n MetaTimeperiodComponent,\n MetaCurrencyComponent,\n MetaNumberComponent,\n MetaAssignResponsibleComponent,\n MetaAssignAssetComponent,\n MetaColorPickerComponent,\n PanelModule,\n ReadOnlyInputComponent,\n MetaSelectButtonComponent,\n MetaUploadComponent,\n MetaSingleSelectObjectBasedComponent,\n MetaCheckboxColorPickerComponent,\n ],\n templateUrl: './meta-form.component.html',\n styleUrls: ['./meta-form.component.scss'],\n //changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MetaFormComponent extends MetaFormAbstract implements OnChanges {\n constructor(\n fb: FormBuilder,\n metaService: MetaFormService,\n\n translateService: TranslateService,\n http: HttpClient\n // env: EnvService\n ) {\n super(fb, metaService, translateService, http);\n }\n\n public ControlType = ControlType;\n optionLabel!: string;\n\n ngOnChanges(simpleChanges: SimpleChanges): void {\n ///set dirty only when metaform changes, not others from simplechanges\n ///optimize this. check what is needed for creating form\n\n if (\n simpleChanges?.['metaFormControls'] ||\n simpleChanges?.['metaFormValues'] ||\n simpleChanges?.['metaForm']\n ) {\n this.createForm(this.metaFormControls);\n this.metaService.setFormDirtyStatus(this.metaForm.dirty);\n }\n }\n}\n","<form [formGroup]=\"metaForm\" (ngSubmit)=\"onSubmit()\">\n <!-- <small>{{ metaForm.value | json }}</small> -->\n <div class=\"grid\">\n <ng-container *ngFor=\"let control of metaFormControls\">\n <ng-container [ngSwitch]=\"control.configuration.type\">\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'text-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-text-input>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.NUMBER\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'number-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-number-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-number-input>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TIMEPERIOD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'timeperiod-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-timeperiod\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-timeperiod>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CURRENCY\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'currency-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-currency\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-currency>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_AREA\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'text-area-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-area\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-area>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'ss-option-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION_OBJECT_BASED\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'ss-option-object-based-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select-object-based\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select-object-based>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.MS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'ms-option-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-multiple-select\n [attr.data-cy]=\"'multiSelect-' + control?.id\"\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-multiple-select>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.START_DUE_DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'start-due-date-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-start-due-date\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-start-due-date>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'date-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-calendar\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-calendar>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_EDITOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'text-editor-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-editor\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-editor>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CHECKBOX\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column justify-content-end\"\n [attr.data-cy]=\"'checkbox-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-checkbox\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-checkbox>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CHECKBOX_COLOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column justify-content-end\"\n [attr.data-cy]=\"'CHECKBOX_COLOR-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-checkbox-color-picker\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-checkbox-color-picker>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SWITCH\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'switch-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-switch\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-switch>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SELECT_BUTTON\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'select-button-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-select-button\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-select-button>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-responsible\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-responsible>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN_ASSET\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-asset\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-asset>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.LINKS_DATA\"\n [ngClass]=\"control | fieldCol\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'links-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <!-- <phoenix-meta-object-links\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-object-links> -->\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.PASSWORD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'password-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-password-feild\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-password-feild>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.COLOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'color-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-color-picker\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-color-picker>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD\"\n [attr.data-cy]=\"'upload-' + control?.id\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD_DRAG_DROP\"\n [attr.data-cy]=\"'upload-' + control?.id\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload-dragdrop\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload-dragdrop>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n <ng-content\n *ngSwitchCase=\"ControlType.SLOT\"\n [select]=\"[control.configuration.key]\"\n ></ng-content>\n </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"formButtons\" class=\"flex justify-content-end\">\n <p-button\n class=\"mr-1\"\n [disabled]=\"!metaForm.valid || disableForm\"\n type=\"submit\"\n label=\"{{ 'ACTION.SAVE' | translate }}\"\n [attr.data-cy]=\"'submit-button'\"\n [loading]=\"loading\"\n ></p-button>\n <p-button\n [disabled]=\"disableForm\"\n styleClass=\"p-button-link\"\n [text]=\"true\"\n (onClick)=\"onCancel()\"\n label=\"{{ 'ACTION.CANCEL' | translate }}\"\n [attr.data-cy]=\"'cancel-button'\"\n ></p-button>\n </div>\n</form>\n","import {\n Component,\n EventEmitter,\n input,\n Input,\n model,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { Observable, combineLatest, Subscription } from 'rxjs';\nimport { MetaFormService } from '../services/meta-form.service';\n\n@Component({\n selector: 'phoenix-meta-form-buttons',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n TranslateModule,\n CheckboxModule,\n FormsModule,\n ],\n templateUrl: './meta-form-buttons.component.html',\n styleUrls: ['./meta-form-buttons.component.scss'],\n providers: [],\n})\nexport class MetaFormButtonsComponent implements OnInit, OnDestroy {\n isDisabled = input<boolean>();\n isCreateAnother = input<boolean>(false);\n isLoading = input<boolean>(false);\n\n @Output() handleSave = new EventEmitter<any>();\n @Output() handleCancel = new EventEmitter<any>();\n\n display!: boolean;\n formActive$!: Observable<boolean>;\n createAnother!: boolean;\n sub$!: Subscription;\n\n constructor(private metaFormService: MetaFormService) {\n this.formActive$ = this.metaFormService.formReadOnlyState;\n }\n ngOnInit(): void {\n this.sub$ = combineLatest([\n this.metaFormService.currentFormTabContent,\n this.metaFormService.formReadOnlyState,\n ]).subscribe((r) => {\n let [formTabContent, formReadOnlyStatus] = r;\n if (formTabContent === 'FORM' && !formReadOnlyStatus) {\n this.display = true;\n } else {\n this.display = false;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.sub$?.unsubscribe();\n }\n}\n","<!-- <ng-template *ngIf=\"formActive$ | async as formState\" pTemplate=\"footer\">\n <div *ngIf=\"!formState\" class=\"flex justify-content-end p-2\"> -->\n<div *ngIf=\"display\" class=\"flex justify-content-end p-2\">\n <p-checkbox\n *ngIf=\"isCreateAnother()\"\n id=\"dialog-buttons-checkbox\"\n data-cy=\"dialog-buttons-checkbox-cy\"\n [(ngModel)]=\"createAnother\"\n [binary]=\"true\"\n inputId=\"binary\"\n class=\"mr-3\"\n ></p-checkbox>\n\n <button\n class=\"mr-2\"\n pButton\n [disabled]=\"isDisabled()\"\n [loading]=\"isLoading()\"\n (click)=\"handleSave.emit({ isAnother: createAnother })\"\n [attr.data-cy]=\"'submit-button'\"\n >\n <span class=\"mx-1\">{{ \"ACTION.SAVE\" | translate }}</span>\n </button>\n\n <p-button\n [text]=\"true\"\n (click)=\"handleCancel.emit('CANCEL')\"\n [attr.data-cy]=\"'cancel-button'\"\n >\n {{ \"ACTION.CANCEL\" | translate }}\n </p-button>\n</div>\n<!-- </div>\n</ng-template> -->\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { EditorModule } from 'primeng/editor';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessagesModule } from 'primeng/messages';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { PanelModule } from 'primeng/panel';\nimport { MetaFormAbstract } from '../../meta-form-abstract';\nimport { MetaAssignResponsibleComponent } from '../../meta-form-fields/meta-assign-responsible/meta-assign-responsible.component';\nimport { MetaCalendarComponent } from '../../meta-form-fields/meta-calendar/meta-calendar.component';\nimport { MetaCheckboxComponent } from '../../meta-form-fields/meta-checkbox/meta-checkbox.component';\nimport { MetaCurrencyComponent } from '../../meta-form-fields/meta-currency/meta-currency.component';\nimport { MetaMultipleSelectComponent } from '../../meta-form-fields/meta-multiple-select/meta-multiple-select.component';\nimport { MetaNumberComponent } from '../../meta-form-fields/meta-number-input/meta-number-input.component';\nimport { MetaPasswordFeildComponent } from '../../meta-form-fields/meta-password-feild/meta-password-feild.component';\nimport { MetaSingleSelectObjectBasedComponent } from '../../meta-form-fields/meta-single-select-object-based/meta-single-select-object_based.component';\nimport { MetaSingleSelectComponent } from '../../meta-form-fields/meta-single-select/meta-single-select.component';\nimport { MetaStartDueDateComponent } from '../../meta-form-fields/meta-start-due-date/meta-start-due-date.component';\nimport { MetaSwitchComponent } from '../../meta-form-fields/meta-switch/meta-switch.component';\nimport { MetaTextAreaComponent } from '../../meta-form-fields/meta-text-area/meta-text-area.component';\nimport { MetaTextEditorComponent } from '../../meta-form-fields/meta-text-editor/meta-text-editor.component';\nimport { MetaTextInputComponent } from '../../meta-form-fields/meta-text-input/meta-text-input.component';\nimport { MetaTimeperiodComponent } from '../../meta-form-fields/meta-timeperiod/meta-timeperiod.component';\nimport { FieldColPipe } from '../../utils/field-col.pipe';\nimport { ReadOnlyInputComponent } from '../read-only-input/read-only-input.component';\nimport { ControlType } from '../../utils/control-type.enum';\nimport { AccordionModule } from 'primeng/accordion';\nimport { MetaAssignAssetComponent } from '../../meta-form-fields/meta-assign-asset/meta-assign-asset.component';\nimport { MetaUploadComponentDragDrop } from '../../meta-form-fields/meta-upload-dragdrop/meta-upload-dragdrop.component';\nimport { MetaUploadComponent } from '../../meta-form-fields/meta-upload/meta-upload.component';\n\n@Component({\n selector: 'phoenix-groups-form',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n InputTextModule,\n // InputTextareaModule,\n CalendarModule,\n DropdownModule,\n ButtonModule,\n MultiSelectModule,\n TranslateModule,\n CheckboxModule,\n EditorModule,\n FieldColPipe,\n MetaTextEditorComponent,\n MetaCheckboxComponent,\n MetaTextInputComponent,\n MetaSingleSelectComponent,\n MetaStartDueDateComponent,\n MetaTextAreaComponent,\n MetaTextEditorComponent,\n MetaMultipleSelectComponent,\n MetaCalendarComponent,\n MetaUploadComponentDragDrop,\n AccordionModule,\n // MetaObjectLinksComponent,\n MetaSwitchComponent,\n MetaPasswordFeildComponent,\n MetaTimeperiodComponent,\n MetaCurrencyComponent,\n MetaNumberComponent,\n MetaAssignResponsibleComponent,\n MetaAssignAssetComponent,\n PanelModule,\n ReadOnlyInputComponent,\n MessagesModule,\n MetaSingleSelectObjectBasedComponent,\n MetaUploadComponent,\n ],\n templateUrl: './groups-form.component.html',\n styleUrls: ['./groups-form.component.css'],\n})\nexport class GroupsFormComponent extends MetaFormAbstract implements OnChanges {\n @Input() activePanelsIndex: number[] = [0, 1, 2, 3];\n public ControlType = ControlType;\n optionLabel!: string;\n notiffication?: any;\n private trans = inject(TranslateService);\n\n ngOnChanges(simpleChanges?: SimpleChanges): void {\n if (\n simpleChanges?.['metaFormControls'] ||\n simpleChanges?.['metaFormValues'] ||\n simpleChanges?.['metaForm']\n ) {\n const mergedArr = this.metaFormControls.flatMap((ob: any) => ob.ctrl);\n this.createForm(mergedArr);\n this.metaService.setFormDirtyStatus(this.metaForm.dirty);\n }\n }\n}\n","<p-accordion [multiple]=\"true\" [(value)]=\"activePanelsIndex\">\n <form *ngIf=\"metaFormControls\" [formGroup]=\"metaForm\" (ngSubmit)=\"onSubmit()\">\n @for ( group of metaFormControls; track group.groupName; let idx = $index){\n <div [style]=\"{ order: group.order }\" class=\"w-full\">\n <p-accordion-panel\n [value]=\"idx\"\n [attr.data-cy]=\"'table-accordion-header-' + group.groupName\"\n >\n <p-accordion-header>\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i class=\"pi pi-minus-circle\"></i>\n } @else {\n <i class=\"pi pi-plus-circle\"></i>\n\n }\n </ng-template>\n {{ group.groupName | translate }}\n </p-accordion-header>\n <p-accordion-content>\n <div [style]=\"formStyle\" class=\"grid align-items-end\">\n <ng-container *ngFor=\"let control of group.ctrl\">\n <ng-container [ngSwitch]=\"control.configuration.type\">\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-text-input>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.NUMBER\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-number-input\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-number-input>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TIMEPERIOD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-timeperiod\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-timeperiod>\n </ng-template>\n </div>\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CURRENCY\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-currency\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-currency>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_AREA\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-area\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-area>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SS_OPTION_OBJECT_BASED\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-single-select-object-based\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-single-select-object-based>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.MS_OPTION\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-multiple-select\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-multiple-select>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.START_DUE_DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-start-due-date\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-start-due-date>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.DATE\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-calendar\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-calendar>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.TEXT_EDITOR\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-text-editor\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-text-editor>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.CHECKBOX\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <phoenix-meta-checkbox\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-checkbox>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.SWITCH\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-switch\n [disable]=\"true\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-switch>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-responsible\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-responsible>\n </ng-template>\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.ASSIGN_ASSET\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-assign-asset\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-assign-asset>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD\"\n [attr.data-cy]=\"'upload-' + control?.id\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.UPLOAD_DRAG_DROP\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n [attr.data-cy]=\"'assign-' + control?.id\"\n >\n <!-- edit field & redonly field content -->\n <ng-container *ngIf=\"control.readOnly; else readOnly\">\n <phoenix-read-only-input\n *ngIf=\"!control?.hidden\"\n [control]=\"control\"\n [metaform]=\"metaForm\"\n ></phoenix-read-only-input>\n </ng-container>\n <ng-template #readOnly>\n <phoenix-meta-upload-dragdrop\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n >\n </phoenix-meta-upload-dragdrop>\n </ng-template>\n <!-- edit field & redonly field content end -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.LINKS_DATA\"\n [ngClass]=\"control | fieldCol\"\n class=\"flex flex-column\"\n >\n <!-- <phoenix-meta-object-links\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-object-links> -->\n </div>\n\n <div\n [style]=\"{ order: control.order }\"\n *ngSwitchCase=\"ControlType.PASSWORD\"\n [ngClass]=\"control?.hidden ? 'p-0' : (control | fieldCol)\"\n class=\"flex flex-column\"\n >\n <phoenix-meta-password-feild\n [disable]=\"disableForm\"\n [formControlName]=\"control.configuration.key\"\n [control]=\"control\"\n [parentForm]=\"metaForm\"\n ></phoenix-meta-password-feild>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </p-accordion-content>\n </p-accordion-panel>\n </div>\n }\n </form>\n</p-accordion>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'textLength',\n standalone: true,\n})\nexport class TextLength implements PipeTransform {\n /**\n * Transforms the specified text value\n * If the size of the string is greater than the limit, it returns a substring of the desired size, and adds ellipsis \"...\"\n * If the size of the string is less than the limit, it returns the original string\n * @param value\n * @param limit\n */\n\n transform(value: string, limit: number) {\n if (value?.length > limit) {\n return value.substring(0, limit) + ' ...';\n }\n return value;\n }\n}\n","// export type StatusColType = \"LIST\" | \"TAG\" | \"DATE_LIST\" | \"DATE\" | \"STRING\" | \"ACTION\" | \"OWNER\" | \"PERSON\";\n\nexport enum StatusColType {\n TAG = 'TAG',\n STRING = 'STRING',\n PERSON = 'PERSON',\n LINK = 'LINK',\n DATE = 'DATE',\n LIST = 'LIST',\n COUNTRY = 'COUNTRY',\n}","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'phoenix-tag',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n})\nexport class TagComponent implements OnChanges {\n @Input() key!: string;\n @Input() content!: string;\n @Input() customColor!: string;\n\n color: string | undefined;\n customStyle!: {\n 'background-color': string;\n border: string;\n color: string;\n };\n\n ngOnChanges(): void {\n if (this.customColor) {\n this.customStyle = {\n 'background-color': this.customColor,\n border: this.invertHex(this.customColor),\n color: 'white',\n //color: this.invertHex(this.customColor),\n };\n }\n }\n\n invertHex(hex: string) {\n if (hex.indexOf('#') === 0) {\n hex = hex.slice(1);\n }\n\n if (hex.length != 6) {\n console.warn('Hex color must be six hex numbers in length.');\n return '#' + hex;\n }\n\n hex = hex.toUpperCase();\n const splitNum: any = hex.split('');\n let resultNum = '';\n const simpleNum = 'FEDCBA9876'.split('');\n const complexNum: any = {\n A: '5',\n B: '4',\n C: '3',\n D: '2',\n E: '1',\n F: '0',\n };\n\n for (let i = 0; i < 6; i++) {\n if (!isNaN(Number(splitNum[i]))) {\n resultNum += simpleNum[splitNum[i]];\n } else if (complexNum[splitNum[i]]) {\n resultNum += complexNum[splitNum[i]];\n } else {\n console.warn('Hex colors must only include hex numbers 0-9, and A-F');\n return '#' + hex;\n }\n }\n\n return '#' + resultNum;\n }\n}\n","<ng-container>\n <span [class]=\"'phoenix-tag '\" [ngStyle]=\"customStyle\" [attr.data-cy]=\"'tag'\">\n {{ content | translate }}\n </span>\n</ng-container>\n\n<!-- class=\"text-800\" style color depends on theme -->\n","import { StatusColType } from '../enums/status-col-type.enum';\n\nexport enum StatusTooltipType {\n TAG = 'TAG',\n STRING = 'STRING',\n PERSON = 'PERSON',\n LINK = 'LINK',\n DATE = 'DATE',\n DATE_PERSON = 'DATE_PERSON',\n}\n\nexport interface StatusTooltipItem {\n label: string;\n value: string | null;\n type: StatusTooltipType;\n value1?: string;\n value2?: string;\n}\n\nexport interface StatusAttribute {\n type: StatusColType;\n label: string;\n value: any;\n dateFormat?: string;\n // Specific to TAG\n key?: string;\n color?: string;\n\n //Specific to url with icon\n icon?: string;\n // Specific to PERSON\n value1?: string;\n\n tooltip?: StatusTooltipItem[];\n\n url?: string;\n\n // Specific to LIST\n item?:\n | {\n name: string;\n url?: string;\n disabled?: boolean;\n }[]\n | string\n | null;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AvatarModule } from 'primeng/avatar';\nimport { PopoverModule } from 'primeng/popover';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TagComponent } from '../tag/tag.component';\nimport {\n StatusAttribute,\n StatusTooltipType,\n} from './models/status-attribute.model';\nimport { TextLength } from './pipes/text-length.pipe';\n\n@Component({\n selector: 'phoenix-status-attribute-display',\n standalone: true,\n templateUrl: './status-attribute-display.component.html',\n styleUrls: ['./status-bar.component.scss'],\n imports: [\n CommonModule,\n TooltipModule,\n PopoverModule,\n TagComponent,\n TranslateModule,\n AvatarModule,\n TextLength,\n ],\n})\nexport class StatusAttributeDisplayComponent {\n @Input() attr!: StatusAttribute;\n @Input() dateFormat = 'dd.MM.yyyy | HH:mm';\n\n @Output() listItemClick = new EventEmitter<any>();\n\n statusTooltipType = StatusTooltipType;\n\n getFullUrl(path: string): string {\n if (path.startsWith('http')) return path;\n return '/' + path.replace(/^\\/+/, '');\n }\n\n isMultiWordLabel(label: string | undefined | null): boolean {\n return label ? label.trim().split(/\\s+/).length > 2 : false;\n }\n\n getPersonName(attr: any): string {\n const first = (attr?.value || '').trim();\n const last = (attr?.value1 || '').trim();\n return [first, last].filter(Boolean).join(' ');\n }\n\n getPersonTooltip(attr: any): string | undefined {\n const fullName = this.getPersonName(attr);\n return fullName.length > 20 ? fullName : undefined;\n }\n\n getPersonDisplayName(attr: any): string {\n const fullName = (attr?.value || '').trim();\n return fullName.length > 20 ? fullName.slice(0, 20) + '…' : fullName;\n }\n\n getPersonInitial(attr: any): string {\n return (attr?.value?.charAt(0) || '-').toUpperCase();\n }\n}\n","<div class=\"attribute flex justify-content-start align-items-start\">\n <div class=\"flex flex-column\">\n <!-- LABEL + ICON -->\n <div class=\"flex align-items-start gap-1\">\n <label\n class=\"font-semibold text-500\"\n [ngClass]=\"{\n 'wrap-label': isMultiWordLabel(attr.label | translate),\n 'nowrap-label': !isMultiWordLabel(attr.label | translate)\n }\"\n >\n {{ attr.label | translate }}\n </label>\n <i\n [attr.data-cy]=\"'status-togg-button-item'\"\n *ngIf=\"attr?.tooltip?.length\"\n class=\"pi pi-info-circle text-blue-500 cursor-pointer\"\n style=\"font-size: 0.875rem; line-height: 1\"\n (mouseenter)=\"popover.toggle($event)\"\n (mouseleave)=\"popover.toggle($event)\"\n >\n </i>\n </div>\n\n <!-- VALUE -->\n <div\n *ngIf=\"attr?.value; else empty\"\n [ngSwitch]=\"attr.type\"\n style=\"white-space: nowrap\"\n >\n <!-- STRING -->\n <ng-container *ngSwitchCase=\"'STRING'\">\n <!-- If URL exist, render as link -->\n <a\n *ngIf=\"attr.url; else plainText\"\n [href]=\"attr.url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-blue-500 underline\"\n [pTooltip]=\"attr.value?.length > 20 ? attr.value : null\"\n >\n {{ attr.value | textLength : 20 }}\n <i class=\"ml-1\" [class]=\"attr.icon\"></i>\n </a>\n <!-- Pnly text if url doesn't exist -->\n <ng-template #plainText>\n <span [pTooltip]=\"attr.value?.length > 20 ? attr.value : null\">\n {{ attr.value | textLength : 20 }}\n </span>\n </ng-template>\n </ng-container>\n\n <!-- DATE -->\n <span *ngSwitchCase=\"'DATE'\">\n <i class=\"pi pi-calendar text-blue-900\"></i>\n {{\n attr.value\n ? (attr.value | date : attr.dateFormat ?? dateFormat)\n : \"--\"\n }}\n </span>\n\n <!-- LINK -->\n\n <a\n *ngSwitchCase=\"'LINK'\"\n [href]=\"attr.url\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-blue-500 underline\"\n >\n {{ attr.value || \"--\" }} <i class=\"ml-1\" [class]=\"attr.icon\"></i>\n </a>\n\n <!-- PERSON -->\n <div\n class=\"person-wrap flex align-items-center gap-2\"\n *ngSwitchCase=\"'PERSON'\"\n >\n <div class=\"person-avatar\">\n {{ getPersonInitial(attr) }}\n </div>\n\n <div\n class=\"white-space-nowrap overflow-hidden text-overflow-ellipsis\"\n [pTooltip]=\"getPersonTooltip(attr)\"\n >\n {{ getPersonDisplayName(attr) }}\n </div>\n </div>\n\n <!-- COUNTRY -->\n <span *ngSwitchCase=\"'COUNTRY'\">\n <span class=\"flex align-items-center gap-2\">\n <img\n src=\"https://primefaces.org/cdn/primeng/images/demo/flag/flag_placeholder.png\"\n [class]=\"'flag flag-' + attr.value?.code.toLowerCase()\"\n style=\"width: 22px\"\n />\n <span\n [pTooltip]=\"attr.value?.name?.length > 20 ? attr.value?.name : null\"\n >\n {{ attr.value?.name || attr.value?.code || \"--\" }}\n </span>\n </span>\n </span>\n\n <!-- LIST -->\n <ul\n *ngSwitchCase=\"'LIST'\"\n class=\"list overflow-x-hidden\"\n style=\"margin-top: 0.25rem\"\n >\n <li\n *ngFor=\"let item of attr.value\"\n [ngClass]=\"item?.disabled ? 'disableLinks' : ''\"\n class=\"white-space-nowrap mb-1 cursor-pointer\"\n (click)=\"!item?.disabled ? listItemClick.emit(item) : null\"\n >\n <span [pTooltip]=\"item?.name?.length > 20 ? item.name : null\">\n {{ item.name | textLength : 20 }}\n </span>\n <i class=\"pi pi-link ml-1 text-sm\"></i>\n </li>\n </ul>\n\n <!-- DEFAULT -->\n <span *ngSwitchDefault [style.color]=\"attr.color\" class=\"text-xl\">\n {{ attr.value || \"--\" }}\n </span>\n </div>\n\n <ng-template #empty>\n <span>--</span>\n </ng-template>\n </div>\n</div>\n\n<p-popover #popover [style]=\"{ maxWidth: '400px' }\">\n <!-- GRID layout for all tooltip items except DATE_PERSON -->\n <div\n style=\"\n display: grid;\n grid-template-columns: max-content 1fr;\n column-gap: 1rem;\n row-gap: 0.5rem;\n align-items: start;\n width: 100%;\n \"\n >\n <ng-container *ngFor=\"let item of attr?.tooltip\">\n <ng-container *ngIf=\"item.type !== statusTooltipType.DATE_PERSON\">\n <!-- Tooltip label -->\n <div class=\"text-sm text-600 text-left\">{{ item.label }}:</div>\n\n <!-- Tooltip value rendering -->\n <div class=\"text-sm text-left break-words\">\n <ng-container [ngSwitch]=\"item?.type || statusTooltipType.TAG\">\n <!-- LINK type: renders as a clickable hyperlink if value exists -->\n <ng-container *ngSwitchCase=\"'LINK'\">\n <a\n *ngIf=\"item.value; else empty\"\n [href]=\"getFullUrl(item.value)\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-blue-500 underline\"\n >\n {{ item.label || \"Open\" }}\n </a>\n </ng-container>\n\n <!-- STRING type: renders text with truncation and tooltip if too long -->\n <ng-container *ngSwitchCase=\"statusTooltipType.STRING\">\n <div\n *ngIf=\"item.value; else empty\"\n class=\"text-sm\"\n style=\"\n white-space: normal;\n word-break: break-word;\n overflow-wrap: break-word;\n \"\n >\n {{ item.value }}\n </div>\n </ng-container>\n\n <!-- DATE type: formatted date or fallback -->\n <ng-container *ngSwitchCase=\"statusTooltipType.DATE\">\n <span *ngIf=\"item.value; else empty\">\n {{ item.value | date : dateFormat }}\n </span>\n </ng-container>\n\n <!-- PERSON type: shows initial avatar and name if value exists -->\n <ng-container *ngSwitchCase=\"statusTooltipType.PERSON\">\n <ng-container *ngIf=\"item.value; else empty\">\n <span class=\"person-wrap flex items-center gap-1 truncate\">\n <div\n class=\"person-avatar small\"\n style=\"font-size: 0.875rem; line-height: 1\"\n >\n {{ item?.value?.charAt(0)?.toUpperCase() }}\n </div>\n <span class=\"truncate\">\n {{ item.value }} {{ item.value1 }}\n </span>\n </span>\n </ng-container>\n </ng-container>\n\n <!-- TAG or unknown type: uses phoenix-tag if value exists -->\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"item.value; else empty\">\n <div class=\"flex gap-2\">\n <span> {{ item.value }} </span>\n <phoenix-tag\n [customColor]=\"item.value2 || ''\"\n [content]=\"item.value1 || ''\"\n >\n </phoenix-tag>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n <!-- Separate layout for DATE_PERSON entries (includes avatar and date) -->\n <ng-container *ngFor=\"let item of attr?.tooltip\">\n <ng-container *ngIf=\"item.type === statusTooltipType.DATE_PERSON\">\n <ng-container *ngIf=\"item.value; else emptyDatePerson\">\n <div>\n <!-- Label -->\n <div\n class=\"font-sm text-600 truncate mb-1\"\n [pTooltip]=\"item.label.length > 20 ? item.label : undefined\"\n >\n {{ item.label }}\n </div>\n <!-- Avatar and person name/date -->\n <div class=\"flex items-center gap-2 person-wrap\">\n <div class=\"person-avatar\">\n {{ item?.value?.charAt(0)?.toUpperCase() }}\n </div>\n <div>\n <div\n class=\"text-blue-800 font-sm\"\n style=\"\n word-break: break-word;\n white-space: normal;\n overflow-wrap: break-word;\n \"\n >\n {{ item.value }}\n </div>\n <div class=\"text-sm\">{{ item.value1 | date : dateFormat }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <!-- Fallback for empty DATE_PERSON -->\n <ng-template #emptyDatePerson>\n <div class=\"text-sm\">--</div>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Shared fallback for missing or empty values -->\n <ng-template #empty>\n <span>--</span>\n </ng-template>\n</p-popover>\n\n<ng-template #empty><span>--</span></ng-template>\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ImageModule } from 'primeng/image';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TextLength } from './pipes/text-length.pipe';\nimport { FirstLetterPipe } from './pipes/first-letter.pipe';\nimport { AvatarModule } from 'primeng/avatar';\nimport { PopoverModule } from 'primeng/popover';\nimport { TagComponent } from '../tag/tag.component';\nimport { StatusBarConfig } from './models/status-bar-configuration.model';\nimport { StatusColType } from './enums/status-col-type.enum';\nimport { ButtonModule } from 'primeng/button';\nimport { StatusAttributeDisplayComponent } from './status-attribute-display.component';\n\n@Component({\n selector: 'phoenix-status-bar',\n standalone: true,\n templateUrl: './status-bar.component.html',\n styleUrls: ['./status-bar.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TooltipModule,\n ImageModule,\n AvatarModule,\n PopoverModule,\n TextLength,\n ButtonModule,\n StatusAttributeDisplayComponent,\n ],\n})\nexport class StatusBarComponent {\n @Input() statusBarConfig!: StatusBarConfig;\n @Input() iconEnable = true;\n @Input() enableClosing = true;\n @Input() description = true;\n @Input() dateFormat = 'dd.MM.yyyy | HH:mm';\n\n @Output() onListItemClick = new EventEmitter<any>();\n\n isCollapsed = false;\n\n StatusColType = StatusColType;\n\n iconStyle = {\n height: 40,\n width: 40,\n };\n}\n","<!-- status-bar.component.html -->\n<div class=\"surface-ground p-2 pt-0\">\n <div\n *ngIf=\"statusBarConfig\"\n class=\"status-bar-wrapper flex flex-nowrap overflow-x-auto gap-2\"\n [ngClass]=\"{ collapsed: isCollapsed }\"\n >\n <div class=\"description flex\" *ngIf=\"description\">\n @if (statusBarConfig.icon) {\n <div\n class=\"type-icon flex justify-content-center align-items-center mr-3\"\n [style.height]=\"iconStyle.height + 20 + 'px'\"\n [style.width]=\"iconStyle.width + 20 + 'px'\"\n >\n <p-image\n [src]=\"\n 'assets/object_types/white/' +\n (statusBarConfig.icon || 'UNDEFINED') +\n '.svg'\n \"\n [height]=\"iconStyle.height.toString()\"\n [width]=\"iconStyle.width.toString()\"\n ></p-image>\n </div>\n }\n\n <ul>\n <li\n class=\"text-sm flex mb-1\"\n *ngFor=\"let attr of statusBarConfig.description\"\n >\n <span class=\"mr-1 text-600 font-semibold\"\n >{{ attr.label | translate }}:</span\n >\n <span *ngIf=\"attr.value; else empty\">\n <i\n *ngIf=\"attr.icon\"\n class=\"{{ attr.icon }} mr-1\"\n style=\"font-size: 0.8em\"\n ></i>\n <ng-container [ngSwitch]=\"attr.type\">\n <span *ngSwitchCase=\"'DATE'\">{{\n attr.value | date : dateFormat\n }}</span>\n <span\n *ngSwitchDefault\n pTooltip=\"{{ attr?.value?.length > 20 ? attr.value : '' }}\"\n >\n {{ attr.value | textLength : 20 }}\n </span>\n </ng-container>\n </span>\n </li>\n </ul>\n </div>\n <div class=\"w-full flex justify-content-between\">\n <phoenix-status-attribute-display\n *ngFor=\"let attr of statusBarConfig.attributes\"\n [attr]=\"attr\"\n [dateFormat]=\"dateFormat\"\n (listItemClick)=\"onListItemClick.emit($event)\"\n ></phoenix-status-attribute-display>\n </div>\n </div>\n\n <div class=\"flex justify-content-center\" *ngIf=\"enableClosing\">\n <div class=\"toggler\">\n <p-button\n [icon]=\"isCollapsed ? 'pi pi-angle-down' : 'pi pi-angle-up'\"\n size=\"small\"\n variant=\"outlined\"\n (click)=\"isCollapsed = !isCollapsed\"\n />\n </div>\n </div>\n</div>\n\n<ng-template #empty>\n <span>--</span>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n computed,\n signal,\n} from '@angular/core';\nimport { DrawerModule, Drawer } from 'primeng/drawer';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { TableComponent } from '../../data-table/table/table.component';\n\n@Component({\n selector: 'phoenix-quick-pick-sidepanel',\n standalone: true,\n imports: [\n CommonModule,\n DrawerModule,\n TableComponent,\n TranslateModule,\n ButtonModule,\n ],\n templateUrl: './quick-pick-sidepanel.component.html',\n styleUrl: './quick-pick-sidepanel.component.css',\n})\nexport class QuickPickSidePanelComponent {\n @ViewChild('drawer') drawer!: Drawer;\n\n @Input() title: string = 'Default Title';\n @Input() data: any[] = [];\n @Input() columns: any[] = [];\n @Input() tableConfiguration: any = {};\n @Input() widthClass: string = 'w-6';\n @Input() isFullScreen: boolean = false;\n\n private _panelVisible = signal(false);\n @Input()\n set panelState(value: boolean) {\n this._panelVisible.set(value);\n }\n @Output() panelStateChange = new EventEmitter<boolean>();\n\n @Output() onRowClick = new EventEmitter<any>();\n @Output() lazyLoadData = new EventEmitter<void>();\n @Output() handlePanelFullScreen = new EventEmitter<void>();\n\n drawerVisible = computed(() => this._panelVisible());\n\n visibleChange(newVal: boolean) {\n this._panelVisible.set(newVal);\n this.panelStateChange.emit(newVal);\n \n if (newVal) {\n this.onDrawerShow(); \n }\n }\n\n onDrawerShow(): void {\n this.lazyLoadData.emit();\n }\n\n onTableRowClick(row: any): void {\n this.onRowClick.emit(row);\n }\n}\n","<p-drawer\n #drawer\n [visible]=\"drawerVisible()\"\n (visibleChange)=\"visibleChange($event)\"\n [header]=\"title | translate\"\n appendTo=\"body\"\n position=\"right\"\n [styleClass]=\"widthClass\"\n>\n <!-- Content -->\n <ng-container *ngIf=\"tableConfiguration\">\n <div class=\"px-2\">\n <phoenix-table\n [data]=\"data\"\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n (rowSelection)=\"onTableRowClick($event)\"\n ></phoenix-table>\n </div>\n </ng-container>\n</p-drawer>","export enum SimpleButtonType {\n REGULAR = 'regular',\n SPLIT = 'split'\n}\n\nexport type Severity =\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'help'\n | 'primary'\n | 'secondary'\n | 'contrast'\n | null\n | undefined;\n\nexport interface ActionButton {\n id?: number | string;\n label: string;\n icon?: string;\n disabled?: boolean;\n type?: SimpleButtonType;\n severity?: Severity;\n tooltip?: string;\n action?: () => void;\n splitItems?: { label: string; icon?: string; command: () => void }[];\n}","/** Public API Surface of phoenix */\nexport * from './lib/components/inner-header/inner-header.component';\nexport * from './lib/components/sidebar/sidebar.component';\nexport * from './lib/components/actions/actions.component';\nexport * from './lib/components/card/card.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/context-object/contex-object.component';\nexport * from './lib/components/shell/shell.component';\nexport * from './lib/components/data-table/phoenix-data-table/phoenix-data-table.component';\nexport * from './lib/components/data-table/table/table.component';\nexport * from './lib/components/meta-form/meta-form.component';\nexport * from './lib/components/meta-form/meta-form-buttons/meta-form-buttons.component';\nexport * from './lib/components/meta-form/meta-form-templates/groups-form/groups-form.component';\nexport * from './lib/components/meta-form/services/meta-form.service';\nexport * from './lib/components/meta-form/meta-form-fields/object-item-dialog/object-item-dialog.component';\n//Status bar\nexport * from './lib/components/quick-pick/quick-pick/quick-pick.component';\nexport * from './lib/components/status-bar/status-bar.component';\nexport * from './lib/components/quick-pick/quick-pick-sidepanel/quick-pick-sidepanel.component';\nexport * from './lib/components/status-bar/models/status-attribute.model';\nexport * from './lib/components/status-bar/enums/status-col-type.enum';\nexport * from './lib/components/status-bar/models/status-bar-configuration.model';\n//model topbar\nexport * from './lib/models/shell-config.model';\nexport * from './lib/models/status.model';\n//data-table utils\nexport * from './lib/components/data-table/utils/dataTable.enum';\nexport * from './lib/components/data-table/utils/dataTable.interface';\n//Context object model\nexport * from './lib/components/context-object/context-object.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5","i6","i9","i7","i8","resolveActions","i10","i11","i14","i15","i12","i2.MetaFormService","i1.MetaFormService"],"mappings":"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"}