@onecx/angular-accelerator 6.11.0 → 6.12.0

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":"onecx-angular-accelerator.mjs","sources":["../../../../libs/angular-accelerator/src/lib/directives/content-container.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/content.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/if-permission.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/if-breakpoint.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/src.directive.ts","../../../../libs/angular-accelerator/src/lib/services/breadcrumb.service.ts","../../../../libs/angular-accelerator/src/lib/pipes/dynamic.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.html","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.html","../../../../libs/angular-accelerator/src/lib/directives/advanced.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/tooltipOnOverflow.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/template.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/basic.directive.ts","../../../../libs/angular-accelerator/src/lib/components/loading-indicator/loading-indicator.component.ts","../../../../libs/angular-accelerator/src/lib/components/loading-indicator/loading-indicator.component.html","../../../../libs/angular-accelerator/src/lib/directives/loading-indicator.directive.ts","../../../../libs/angular-accelerator/src/lib/components/column-group-selection/column-group-selection.component.ts","../../../../libs/angular-accelerator/src/lib/components/column-group-selection/column-group-selection.component.html","../../../../libs/angular-accelerator/src/lib/components/content/content.component.ts","../../../../libs/angular-accelerator/src/lib/components/content/content.component.html","../../../../libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts","../../../../libs/angular-accelerator/src/lib/components/content-container/content-container.component.html","../../../../libs/angular-accelerator/src/lib/components/custom-group-column-selector/custom-group-column-selector.component.ts","../../../../libs/angular-accelerator/src/lib/components/custom-group-column-selector/custom-group-column-selector.component.html","../../../../libs/angular-accelerator/src/lib/components/data-layout-selection/data-layout-selection.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-layout-selection/data-layout-selection.component.html","../../../../libs/angular-accelerator/src/lib/model/column-type.model.ts","../../../../libs/angular-accelerator/src/lib/utils/objectutils.ts","../../../../libs/angular-accelerator/src/lib/functions/flatten-object.ts","../../../../libs/angular-accelerator/src/lib/model/filter.model.ts","../../../../libs/angular-accelerator/src/lib/components/data-sort-base/data-sort-base.ts","../../../../libs/angular-accelerator/src/lib/pipes/ocxtimeago.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid/data-list-grid.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid/data-list-grid.component.html","../../../../libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html","../../../../libs/angular-accelerator/src/lib/utils/template.utils.ts","../../../../libs/angular-accelerator/src/lib/components/data-table/data-table.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-table/data-table.component.html","../../../../libs/angular-accelerator/src/lib/utils/rxjs-utils.ts","../../../../libs/angular-accelerator/src/lib/components/data-view/data-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-view/data-view.component.html","../../../../libs/angular-accelerator/src/lib/utils/colorutils.ts","../../../../libs/angular-accelerator/src/lib/components/diagram/diagram.component.ts","../../../../libs/angular-accelerator/src/lib/components/diagram/diagram.component.html","../../../../libs/angular-accelerator/src/lib/utils/filter.utils.ts","../../../../libs/angular-accelerator/src/lib/components/filter-view/filter-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/filter-view/filter-view.component.html","../../../../libs/angular-accelerator/src/lib/components/group-by-count-diagram/group-by-count-diagram.component.ts","../../../../libs/angular-accelerator/src/lib/components/group-by-count-diagram/group-by-count-diagram.component.html","../../../../libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html","../../../../libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.ts","../../../../libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-message-content/dialog-message-content.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-message-content/dialog-message-content.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-content/dialog-content.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-content/dialog-content.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-footer/dialog-footer.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-footer/dialog-footer.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-inline/dialog-inline.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-inline/dialog-inline.component.html","../../../../libs/angular-accelerator/src/lib/components/error-component/global-error.component.ts","../../../../libs/angular-accelerator/src/lib/components/error-component/global-error.component.html","../../../../libs/angular-accelerator/src/lib/services/portal-dialog.service.ts","../../../../libs/angular-accelerator/src/lib/utils/dateutils.ts","../../../../libs/angular-accelerator/src/lib/services/export-data.service.ts","../../../../libs/angular-accelerator/src/lib/pipes/relative-date.pipe.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator-primeng.module.ts","../../../../libs/angular-accelerator/src/lib/utils/dynamic-locale-id.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator.module.ts","../../../../libs/angular-accelerator/src/lib/functions/at-least-one-field-filled-validator.ts","../../../../libs/angular-accelerator/src/lib/utils/data-operation-strategy.ts","../../../../libs/angular-accelerator/src/lib/utils/enum-to-dropdown-options.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/criteria.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/string-and-array-helper-functions.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/image-logo-url.utils.ts","../../../../libs/angular-accelerator/src/index.ts","../../../../libs/angular-accelerator/src/onecx-angular-accelerator.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxContentContainer]', standalone: false })\nexport class OcxContentContainerDirective implements OnInit, OnChanges {\n private el = inject(ElementRef)\n\n /**\n * Used for passing the direction, in which the content inside the container should be rendered.\n * Default: horizontal\n * @example [ocxContentContainer]=\"horizontal\"\n * @example [ocxContentContainer]=\"vertical\"\n */\n @Input() layout: 'horizontal' | 'vertical' = 'horizontal'\n\n /**\n * Used for passing in the breakpoint below which a horizontal layout should switch to a vertical layout.\n * Only necessary if horizontal layout is used\n * Default: md\n */\n @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n ngOnInit() {\n this.el.nativeElement.classList.add('flex', 'gap-3', 'flex-column', 'md:flex-row')\n this.addContainerStyles()\n }\n\n ngOnChanges() {\n this.addContainerStyles()\n }\n\n private addContainerStyles() {\n const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes)\n const removeClasses = (classes: string[]) => this.el.nativeElement.classList.remove(...classes)\n // We need to ensure that all breakpoint dependent flex-row classes are removed from the element\n // This way we can avoid multiple contradictory layout classes and unexpected effects\n const removeResponsiveLayoutClasses = () => {\n const classesToRemove: string[] = []\n const regexPattern = /\\w+:flex-row$/\n this.el.nativeElement.classList.forEach((className: string) => {\n if (regexPattern.test(className)) {\n classesToRemove.push(className)\n }\n })\n removeClasses(classesToRemove)\n }\n const addSharedClasses = () => {\n let styleClasses = Array.from(this.el.nativeElement.classList as string[])\n const defaultClasses = ['gap-3', 'flex-column', 'md:flex-row']\n removeClasses(defaultClasses)\n if (styleClasses.some((cls) => cls.startsWith('gap-') && cls !== 'gap-3')) {\n styleClasses = styleClasses.filter((cls) => !cls.startsWith('gap-3'))\n }\n const flexClasses = ['flex-row', 'flex-row-reverse', 'flex-column-reverse']\n if (styleClasses.some((cls) => flexClasses.includes(cls))) {\n styleClasses = styleClasses.filter((cls) => cls !== 'flex-column')\n }\n if (this.layout != 'vertical') {\n const responsiveLayoutClass = `${this.breakpoint || 'md'}:flex-row`\n styleClasses.push(responsiveLayoutClass)\n }\n addClasses(styleClasses)\n }\n\n removeResponsiveLayoutClasses()\n addSharedClasses()\n }\n}","import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxContent]', standalone: false })\nexport class OcxContentDirective implements OnInit, OnChanges {\n private el = inject(ElementRef)\n\n /**\n * Used for passing a title text which should be rendered in the upper left corner of the content area.\n * @example [ocxContent]=\"My Cool Title\"\n */\n @Input() ocxContent = ''\n\n private baseId = 'ocx_content_title_element'\n private titleElementId: string | undefined\n\n ngOnInit() {\n this.titleElementId = this.getUniqueTitleID(this.baseId)\n this.init()\n }\n\n ngOnChanges() {\n this.init()\n }\n\n private init() {\n this.addContentStyles()\n if (this.ocxContent) {\n this.prependTitle()\n } else {\n this.removeTitle()\n }\n }\n\n private addContentStyles() {\n const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes)\n addClasses(['card'])\n }\n\n private prependTitle() {\n if (this.titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${this.titleElementId}`)\n if (titleElement) {\n titleElement.textContent = this.ocxContent\n } else {\n const title = document.createElement('p')\n title.classList.add('font-medium')\n title.classList.add('text-lg')\n title.id = this.titleElementId\n title.textContent = this.ocxContent\n this.el.nativeElement.prepend(title)\n }\n }\n }\n\n private getUniqueTitleID(baseId: string) {\n let counter = 0\n let generatedID = baseId\n\n while (document.getElementById(generatedID)) {\n generatedID = baseId + counter\n counter++\n }\n\n return generatedID\n }\n\n private removeTitle() {\n if (this.titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${this.titleElementId}`)\n if (titleElement) {\n titleElement.remove()\n }\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Input,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\nimport { BehaviorSubject, from, Observable, of, switchMap } from 'rxjs'\n\n@Directive({ selector: '[ocxIfPermission], [ocxIfNotPermission]', standalone: false })\nexport class IfPermissionDirective implements OnInit {\n private renderer = inject(Renderer2)\n private el = inject(ElementRef)\n private viewContainer = inject(ViewContainerRef)\n private hasPermissionChecker = inject<HasPermissionChecker>(HAS_PERMISSION_CHECKER, { optional: true })\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private userService = inject(UserService, { optional: true })\n\n @Input('ocxIfPermission') set permission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n }\n @Input('ocxIfNotPermission') set notPermission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n this.negate = true\n }\n\n @Input() ocxIfPermissionOnMissingPermission: 'hide' | 'disable' = 'hide'\n @Input() set ocxIfNotPermissionOnMissingPermission(value: 'hide' | 'disable') {\n this.ocxIfPermissionOnMissingPermission = value\n }\n @Input() onMissingPermission: 'hide' | 'disable' = 'hide'\n\n @Input() ocxIfPermissionPermissions: string[] | undefined\n @Input()\n set ocxIfNotPermissionPermissions(value: string[] | undefined) {\n this.ocxIfPermissionPermissions = value\n }\n\n @Input()\n ocxIfPermissionElseTemplate: TemplateRef<any> | undefined\n @Input()\n set ocxIfNotPermissionElseTemplate(value: TemplateRef<any> | undefined) {\n this.ocxIfPermissionElseTemplate = value\n }\n\n private permissionChecker: HasPermissionChecker\n private permissionSubject$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n private isDisabled = false\n private directiveContentRef: EmbeddedViewRef<any> | undefined\n negate = false\n\n constructor() {\n const validChecker = this.hasPermissionChecker || this.userService\n if (!validChecker) {\n throw 'IfPermission requires UserService or HasPermissionChecker to be provided!'\n }\n\n this.permissionChecker = validChecker\n }\n\n ngOnInit() {\n this.permissionSubject$\n .pipe(\n switchMap((permission) => {\n if (!permission) {\n return of(false)\n }\n const permissionsArray = Array.isArray(permission) ? permission : [permission]\n return this.hasPermission(permissionsArray)\n })\n )\n .subscribe((hasPermission) => {\n const shouldShowTemplate = this.negate ? !hasPermission : hasPermission\n if (shouldShowTemplate) {\n return this.showTemplateOrClear()\n }\n\n return this.showElseTemplateOrDefaultView()\n })\n }\n\n private hasPermission(permission: string[]): Observable<boolean> {\n if (this.ocxIfPermissionPermissions) {\n const result = permission.every((p) => this.ocxIfPermissionPermissions?.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission in overwrites for: `', permission)\n }\n return of(result)\n }\n\n if (this.permissionChecker.getPermissions) {\n return this.permissionChecker.getPermissions().pipe(\n switchMap((permissions) => {\n const result = permission.every((p) => permissions.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission from permission checker for: `', permission)\n }\n return of(result)\n })\n )\n }\n\n return from(this.permissionChecker.hasPermission(permission))\n }\n\n private showTemplateOrClear() {\n this.resetView()\n\n if (this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n }\n }\n\n private showElseTemplateOrDefaultView() {\n this.resetView()\n if (this.ocxIfPermissionElseTemplate) {\n this.viewContainer.createEmbeddedView(this.ocxIfPermissionElseTemplate)\n return\n }\n\n if (this.ocxIfPermissionOnMissingPermission === 'disable' && this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n\n const el = this.getElement()\n el && this.renderer.setAttribute(el, 'disabled', 'disabled')\n this.isDisabled = true\n }\n }\n\n private resetView() {\n this.viewContainer.clear()\n if (this.isDisabled) {\n this.isDisabled = false\n const el = this.getElement()\n el && this.renderer.removeAttribute(el, 'disabled')\n }\n }\n\n private getElement(): Node | undefined {\n return this.directiveContentRef?.rootNodes[0]\n }\n}\n","import { Directive, HostListener, Input, OnInit, TemplateRef, ViewContainerRef, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxIfBreakpoint]', standalone: false })\nexport class IfBreakpointDirective implements OnInit {\n private viewContainer = inject(ViewContainerRef)\n private templateRef = inject<TemplateRef<unknown>>(TemplateRef, { optional: true })\n\n @Input('ocxIfBreakpoint') breakpoint: 'mobile' | 'desktop' | undefined\n\n @Input()\n ocxIfBreakpointElseTemplate: TemplateRef<any> | undefined\n\n state: 'mobile' | 'desktop' | undefined\n\n ngOnInit() {\n this.onResize()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n const isDesktop = !isMobile\n const newState = isMobile ? 'mobile' : 'desktop'\n if ((this.breakpoint === 'mobile' && isMobile) || (this.breakpoint === 'desktop' && isDesktop)) {\n if (this.templateRef && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n if (this.ocxIfBreakpointElseTemplate && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.ocxIfBreakpointElseTemplate)\n }\n }\n this.state = newState\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http'\nimport { Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxSrc]', standalone: false })\nexport class SrcDirective {\n private el = inject(ElementRef)\n private httpClient = inject(HttpClient)\n\n private _src: string | undefined\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() error = new EventEmitter<void>()\n\n @Input()\n get ocxSrc(): string | undefined {\n return this._src\n }\n set ocxSrc(value: string | undefined) {\n if (value && this._src !== value && window.location.hostname) {\n try {\n if (new URL(value, window.location.origin).hostname === window.location.hostname) {\n this.httpClient.get(value, { observe: 'response', responseType: 'blob' }).subscribe(\n (response: HttpResponse<Blob>) => {\n // ok with content\n if (response?.status === 200) {\n const url = URL.createObjectURL(response.body as Blob)\n this.el.nativeElement.addEventListener('load', () => {\n URL.revokeObjectURL(url)\n })\n this.el.nativeElement.src = url\n }\n // no content\n if (response?.status === 204) {\n this.error.emit()\n }\n },\n () => {\n // on error\n this.error.emit()\n },\n () => {\n // on complete\n this.el.nativeElement.style.visibility = 'initial'\n }\n )\n } else {\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n } catch (error) {\n console.error('Cannot parse URL ', value, error)\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n this._src = value\n }\n }\n\n constructor() {\n this.el.nativeElement.style.visibility = 'hidden'\n }\n}\n","import { Injectable, inject } from '@angular/core'\nimport { ActivatedRoute, ActivatedRouteSnapshot, Data, NavigationEnd, ParamMap, Router } from '@angular/router'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport { TranslateService } from '@ngx-translate/core'\nimport { Topic } from '@onecx/accelerator'\nimport { MenuItem } from 'primeng/api'\nimport { BehaviorSubject, filter, map } from 'rxjs'\nimport { BreadCrumbMenuItem } from '../model/breadcrumb-menu-item.model'\n\ninterface ManualBreadcrumbs {\n menuItems: MenuItem[]\n}\n\n// This topic is defined here and not in integration-interface, because\n// it is not used as framework independent integration but for improving\n// angular specific things\nclass ManualBreadcrumbsTopic extends Topic<ManualBreadcrumbs> {\n constructor() {\n super('manualBreadcrumbs', 1)\n }\n}\n\n@Injectable({ providedIn: 'any' })\n@UntilDestroy()\nexport class BreadcrumbService {\n private readonly router = inject(Router)\n private readonly activeRoute = inject(ActivatedRoute)\n private readonly translateService = inject(TranslateService)\n\n private readonly itemsSource$ = new ManualBreadcrumbsTopic()\n generatedItemsSource = new BehaviorSubject<MenuItem[]>([])\n\n itemsHandler = this.itemsSource$.pipe(map((manualBreadcrumbs) => manualBreadcrumbs.menuItems))\n\n constructor() {\n this.generateBreadcrumbs(this.activeRoute.snapshot)\n this.router.events\n .pipe(\n untilDestroyed(this),\n filter((e) => e instanceof NavigationEnd)\n )\n .subscribe(() => {\n const root = this.router.routerState.snapshot.root\n this.generateBreadcrumbs(root)\n })\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null) {\n if (route?.data['mfeInfo']) {\n const breadcrumbs: MenuItem[] = [\n {\n label: route.data['mfeInfo'].productName,\n routerLink: route.data['mfeInfo'].baseHref,\n },\n ]\n const baseUrl: string[] = (route.data['mfeInfo'].baseHref as string).split('/').filter((value) => value)\n const parentUrl: string[] = route.url.map((url) => url.path)\n const isUsingMatcher = !parentUrl.every((item) => baseUrl.includes(item))\n if (isUsingMatcher) {\n this.createBreadcrumb(route, parentUrl, breadcrumbs)\n }\n this.addBreadcrumb(route.firstChild, parentUrl, breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route?.data['breadcrumb']) {\n const breadcrumbs: MenuItem[] = []\n this.addBreadcrumb(route, [], breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route) {\n this.generateBreadcrumbs(route.firstChild)\n }\n }\n\n private addBreadcrumb(route: ActivatedRouteSnapshot | null, parentUrl: string[], breadcrumbs: MenuItem[]) {\n if (route?.url) {\n const routeUrl = parentUrl.concat(route.url.map((url) => url.path))\n if (route.routeConfig?.path) {\n this.createBreadcrumb(route, routeUrl, breadcrumbs)\n }\n\n this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs)\n }\n }\n\n private createBreadcrumb(route: ActivatedRouteSnapshot, routeUrl: string[], breadcrumbs: MenuItem[]) {\n if (route.data['breadcrumb']) {\n const breadcrumb: MenuItem = {\n label: this.getLabel(route.data, route.paramMap),\n routerLink: '/' + routeUrl.join('/'),\n }\n breadcrumbs.push(breadcrumb)\n } else {\n const breadcrumb: MenuItem = {\n label: 'NA',\n routerLink: '/' + routeUrl.join('/'),\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n private getLabel(data: Data, params: ParamMap) {\n if (typeof data['breadcrumbFn'] === 'function') {\n return data['breadcrumbFn'](data, params)\n }\n return data['breadcrumb']\n }\n\n setItems(items: BreadCrumbMenuItem[]) {\n const translationKeys = [\n ...items.map((i) => i.labelKey ?? '').filter((l) => !!l),\n ...items.map((i) => i.titleKey ?? '').filter((l) => !!l),\n ]\n if (translationKeys.length) {\n this.translateService.get(translationKeys).subscribe((translations: any) => {\n this.itemsSource$.publish({\n menuItems: items.map((i) => ({\n ...i,\n label: translations[i.labelKey ?? ''],\n title: translations[i.titleKey ?? ''],\n })),\n })\n })\n } else {\n this.itemsSource$.publish({\n menuItems: items,\n })\n }\n }\n}\n","import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common'\nimport { Injector, LOCALE_ID, Pipe, PipeTransform, Type, inject } from '@angular/core'\n\n@Pipe({\n name: 'dynamicPipe',\n standalone: false,\n})\nexport class DynamicPipe implements PipeTransform {\n private injector = inject(Injector)\n\n knownPipes: { [name: string]: PipeTransform } = {}\n\n public constructor() {\n const locale = inject(LOCALE_ID)\n\n this.knownPipes = {\n currency: new CurrencyPipe(locale),\n decimal: new DecimalPipe(locale),\n date: new DatePipe(locale),\n }\n }\n\n transform(value: any, requiredPipe?: Type<any>, pipeArgs?: any): any {\n if (!requiredPipe) {\n return value\n }\n\n const injector = Injector.create({\n name: 'DynamicPipe',\n parent: this.injector,\n providers: [{ provide: requiredPipe }],\n })\n const pipe = injector.get(requiredPipe)\n return pipe.transform(value, pipeArgs)\n }\n\n transform2(value: any, pipeToken: any, ...pipeArgs: any[]): any {\n if (!pipeToken) {\n return value\n } else {\n // eslint-disable-next-line no-prototype-builtins\n if (pipeToken && this.knownPipes.hasOwnProperty(pipeToken)) {\n const pipe = this.knownPipes[pipeToken]\n if (Array.isArray(pipeArgs)) {\n return pipe.transform(value, ...pipeArgs)\n } else {\n return pipe.transform(value, pipeArgs)\n }\n } else {\n return value\n }\n }\n }\n}\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n inject,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { AppStateService, UserService } from '@onecx/angular-integration-interface'\nimport { MenuItem, PrimeIcons } from 'primeng/api'\nimport { BehaviorSubject, Observable, concat, map, of, switchMap } from 'rxjs'\nimport { BreadcrumbService } from '../../services/breadcrumb.service'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\n\n/**\n * Action definition.\n */\nexport interface Action {\n id?: string\n label?: string\n labelKey?: string\n icon?: string\n iconPos?: 'left' | 'right' | 'top' | 'bottom'\n /**\n * Permission for this action. If the current user does not have this permission, the action will not be shown.\n */\n permission?: string\n title?: string\n titleKey?: string\n ariaLabel?: string\n ariaLabelKey?: string\n btnClass?: string\n actionCallback(): void\n disabled?: boolean\n disabledTooltip?: string\n disabledTooltipKey?: string\n show?: 'always' | 'asOverflow'\n conditional?: boolean\n // Note: This currently doesn't work with dynamic values, since a passed in Action is just a copy of the original object.\n // As a workaround, you can manually update/replace the passed in Action if you wish to update a showCondition\n showCondition?: boolean\n}\n\nexport interface ObjectDetailItem {\n label: string\n value?: string\n labelTooltip?: string\n valueTooltip?: string\n icon?: PrimeIcon\n iconStyleClass?: string\n labelPipe?: Type<any>\n valuePipe?: Type<any>\n valuePipeArgs?: string\n valueCssClass?: string\n actionItemIcon?: PrimeIcon\n actionItemCallback?: () => void\n actionItemTooltip?: string\n actionItemAriaLabelKey?: string\n actionItemAriaLabel?: string\n}\n\nexport interface HomeItem {\n menuItem: MenuItem\n page?: string\n}\n\nexport type GridColumnOptions = 1 | 2 | 3 | 4 | 6 | 12\n\n@Component({\n standalone: false,\n selector: 'ocx-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageHeaderComponent implements OnInit {\n private translateService = inject(TranslateService)\n private appStateService = inject(AppStateService)\n private userService = inject(UserService)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n\n @Input()\n public header: string | undefined\n\n @Input()\n loading = false\n\n @Input()\n figureBackground = true\n\n @Input()\n showFigure = true\n\n //image fot preview in top-header left side\n @Input()\n figureImage: string | undefined\n\n @Input()\n disableDefaultActions = false\n\n @Input()\n subheader: string | undefined\n\n _actions = new BehaviorSubject<Action[]>([])\n @Input()\n get actions() {\n return this._actions.getValue()\n }\n set actions(value) {\n this._actions.next(value)\n }\n\n @Input()\n objectDetails: ObjectDetailItem[] | undefined\n\n @Input()\n showBreadcrumbs = true\n\n @Input()\n manualBreadcrumbs = false\n\n @Input()\n enableGridView: undefined | boolean\n\n @Input()\n gridLayoutDesktopColumns: undefined | GridColumnOptions\n\n @Output()\n save = new EventEmitter()\n\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n overflowActions$ = new BehaviorSubject<MenuItem[]>([])\n inlineActions$ = new BehaviorSubject<Action[]>([])\n dd = new Date()\n breadcrumbs$!: Observable<MenuItem[]>\n\n home$!: Observable<HomeItem>\n\n figureImageLoadError = false\n\n objectPanelGridLayoutClasses = 'grid row-gap-2 m-0'\n objectPanelColumnLayoutClasses = 'flex flex-row justify-content-between overflow-x-auto'\n\n objectPanelDefaultLayoutClasses = 'flex flex-column row-gap-2 md:flex-row md:justify-content-between'\n\n objectInfoGridLayoutClasses = 'col-12 flex gap-4 md:col-6 align-items-center p-0'\n objectInfoColumnLayoutClasses = 'flex flex-column align-items-center gap-2 min-w-120'\n\n objectInfoDefaultLayoutClasses = 'flex flex-row md:flex-column md:align-items-center md:gap-2'\n\n protected breadcrumbs: BreadcrumbService\n\n constructor() {\n const breadcrumbs = inject(BreadcrumbService)\n\n this.breadcrumbs = breadcrumbs\n this.home$ = concat(\n of({ menuItem: { icon: PrimeIcons.HOME, routerLink: '/' } }),\n this.appStateService.currentWorkspace$.pipe(\n map((workspace) => ({\n menuItem: {\n icon: PrimeIcons.HOME,\n routerLink: workspace.baseUrl,\n },\n page: workspace.workspaceName,\n }))\n )\n )\n this._actions\n .pipe(\n map(this.filterInlineActions),\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions))\n )\n .subscribe(this.inlineActions$)\n\n this._actions\n .pipe(\n map(this.filterOverflowActions),\n switchMap((actions) => {\n return this.getActionTranslationKeys(actions).pipe(map((translations) => ({ actions, translations })))\n }),\n switchMap(({ actions, translations }) => {\n return this.filterActionsBasedOnPermissions(actions).pipe(\n map((filteredActions) => ({ filteredActions, translations }))\n )\n }),\n map(({ filteredActions, translations }) => this.mapOverflowActionsToMenuItems(filteredActions, translations))\n )\n .subscribe(this.overflowActions$)\n }\n\n ngOnInit(): void {\n if (!this.manualBreadcrumbs) {\n this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource\n } else {\n this.breadcrumbs$ = this.breadcrumbs.itemsHandler\n }\n }\n\n onAction(action: string) {\n switch (action) {\n case 'save':\n this.save.emit()\n break\n default:\n break\n }\n }\n\n handleImageError() {\n this.figureImageLoadError = true\n }\n\n public generateItemStyle(item: ObjectDetailItem): string {\n let style = ''\n if (item.icon) style = style.concat(style, ' ', 'gap-1 align-items-center')\n if (item.valueCssClass) style = style.concat(style, ' ', item.valueCssClass)\n return style\n }\n\n public getObjectPanelLayoutClasses() {\n if (this.enableGridView) {\n return this.objectPanelGridLayoutClasses\n }\n if (this.enableGridView === false) {\n return this.objectPanelColumnLayoutClasses\n }\n return this.objectPanelDefaultLayoutClasses\n }\n\n public getObjectInfoLayoutClasses() {\n if (this.enableGridView) {\n return `${this.objectInfoGridLayoutClasses} lg:col-${\n this.gridLayoutDesktopColumns ? 12 / this.gridLayoutDesktopColumns : 4\n }`\n }\n if (this.enableGridView === false) {\n return this.objectInfoColumnLayoutClasses\n }\n return this.objectInfoDefaultLayoutClasses\n }\n\n private filterInlineActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'always')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterOverflowActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'asOverflow')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterActionsBasedOnPermissions(actions: Action[]): Observable<Action[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n if (action.permission) {\n return permissions.includes(action.permission!)\n }\n return true\n })\n })\n )\n }\n\n private getActionTranslationKeys(actions: Action[]): Observable<{ [key: string]: string }> {\n const translationKeys = [\n ...actions.map((a) => a.labelKey || '').filter((a) => !!a),\n ...actions.map((a) => a.titleKey || '').filter((a) => !!a),\n ]\n return translationKeys.length ? this.translateService.get(translationKeys) : of({})\n }\n\n private mapOverflowActionsToMenuItems(actions: Action[], translations: { [key: string]: string }): MenuItem[] {\n return actions.map<MenuItem>((a) => ({\n id: a.id,\n label: a.labelKey ? translations[a.labelKey] : a.label,\n icon: a.icon,\n tooltipOptions: {\n tooltipLabel: a.titleKey ? translations[a.titleKey] : a.title,\n tooltipEvent: 'hover',\n tooltipPosition: 'top',\n },\n command: a.actionCallback,\n disabled: a.disabled,\n }))\n }\n}\n","<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n @if (showBreadcrumbs) { @if (breadcrumbs$ | async ; as items) {\n <p-breadcrumb\n [model]=\"items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n } }\n <div class=\"title-bar flex flex-row md:justify-content-between align-items-center p-3\">\n <div class=\"title-wrap\">\n @if (showFigure) {\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n @if (figureImage && !figureImageLoadError) {\n <img [ocxSrc]=\"figureImage\" alt=\"Figure Image\" class=\"w-full border-round-sm\" (error)=\"handleImageError()\" />\n }\n </div>\n @if (previewImage.children.length === 0 || figureImageLoadError) {\n <div class=\"colorblob flex-1 border-round\"></div>\n }\n </div>\n } @if (!loading) {\n <div class=\"header\">\n @if (!!header) {\n <h1 id=\"page-header\">{{ header }}</h1>\n } @if (!!subheader) {\n <div id=\"page-subheader\" role=\"note\" [attr.aria-label]=\"'OCX_PAGE_HEADER.SUBHEADER' | translate\">\n {{ subheader }}\n </div>\n }\n </div>\n } @else {\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n }\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n @if (additionalToolbarContentLeft) {\n <ng-container [ngTemplateOutlet]=\"additionalToolbarContentLeft\"> </ng-container>\n } @if (!loading) { @if( inlineActions$ | async; as inlineActions) { @if (inlineActions && inlineActions.length >\n 0) {\n <div class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n @for (action of inlineActions; track action) {\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n [id]=\"action.id\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n }\n </div>\n } }\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n @if(overflowActions$ | async; as overflowActions) {@if (overflowActions.length !== 0) {\n <div>\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n } }\n </ng-container>\n } @else {\n <div class=\"flex\">\n <p-skeleton shape=\"circle\" size=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton shape=\"circle\" size=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n } @if (additionalToolbarContent) {\n <ng-container [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n }\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n @if (objectDetails) { @for (item of objectDetails; track item) {\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n {{ item.label | dynamicPipe:item.labelPipe }}\n </span>\n @if (item.icon || item.value) {\n <span class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n @if (item.icon) {\n <i [class]=\"item.icon + ' ' + (item.iconStyleClass ?? '')\" name=\"object-detail-icon\"></i>\n } {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n @if (item.actionItemIcon && item.actionItemCallback) {\n <p-button\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n }\n </span>\n </span>\n }\n </div>\n } }\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core'\nimport { FormControlName, FormGroup, FormGroupDirective } from '@angular/forms'\nimport { Observable, combineLatest, debounceTime, from, map, of, startWith } from 'rxjs'\nimport { getLocation } from '@onecx/accelerator'\nimport { CONFIG_KEY, ConfigurationService } from '@onecx/angular-integration-interface'\nimport { Action } from '../page-header/page-header.component'\n\nexport interface SearchHeaderComponentState {\n activeViewMode?: 'basic' | 'advanced'\n selectedSearchConfig?: string | null\n}\n\nexport interface SearchConfigData {\n name: string | undefined\n fieldValues: { [key: string]: string }\n displayedColumnsIds: string[]\n viewMode: 'basic' | 'advanced'\n}\n\n/**\n * To trigger the search when Enter key is pressed inside a search parameter field,\n * an EventListener for keyup enter event is added for HTML elements which have an input.\n * Please add the EventListener yourself manually, if you want to have that functionality for some other elements\n * which do not have an input element.\n */\n@Component({\n standalone: false,\n selector: 'ocx-search-header',\n templateUrl: './search-header.component.html',\n providers: [],\n})\nexport class SearchHeaderComponent implements AfterContentInit, AfterViewInit {\n @Input() header = ''\n @Input() subheader: string | undefined\n _viewMode: 'basic' | 'advanced' = 'basic'\n @Input()\n get viewMode(): 'basic' | 'advanced' {\n return this._viewMode\n }\n set viewMode(viewMode: 'basic' | 'advanced') {\n if (this.viewMode !== viewMode) {\n this._viewMode = viewMode\n this.viewModeChanged?.emit(this.viewMode)\n this.componentStateChanged.emit({\n activeViewMode: this.viewMode,\n })\n this.updateHeaderActions()\n setTimeout(() => this.addKeyUpEventListener())\n }\n }\n @Input() manualBreadcrumbs = false\n _actions: Action[] = []\n @Input()\n get actions() {\n return this._actions\n }\n set actions(value) {\n this._actions = value\n this.updateHeaderActions()\n }\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() searchButtonDisabled = false\n @Input() resetButtonDisabled = false\n @Input() pageName: string | undefined = getLocation().applicationPath\n\n @Output() searched: EventEmitter<any> = new EventEmitter()\n @Output() resetted: EventEmitter<any> = new EventEmitter()\n @Output() selectedSearchConfigChanged: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n @Output() viewModeChanged: EventEmitter<'basic' | 'advanced'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<SearchHeaderComponentState> = new EventEmitter()\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n get _additionalToolbarContent(): TemplateRef<any> | undefined {\n return this.additionalToolbarContent\n }\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n get _additionalToolbarContentLeft(): TemplateRef<any> | undefined {\n return this.additionalToolbarContentLeft\n }\n\n get searchConfigChangeObserved(): boolean {\n return this.selectedSearchConfigChanged.observed\n }\n\n @ContentChild(FormGroupDirective) formGroup: FormGroup | undefined\n @ContentChildren(FormControlName, { descendants: true }) visibleFormControls!: QueryList<FormControlName>\n\n @ViewChild('searchParameterFields') searchParameterFields: ElementRef | undefined\n\n hasAdvanced = false\n\n simpleAdvancedAction: Action = {\n id: 'simpleAdvancedButton',\n actionCallback: () => this.toggleViewMode(),\n show: 'always',\n }\n headerActions: Action[] = []\n searchButtonsReversed$ = of(false)\n fieldValues$: Observable<{ [key: string]: unknown }> | undefined = of({})\n searchConfigChangedSlotEmitter: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n\n constructor() {\n const configurationService = inject(ConfigurationService)\n\n this.searchConfigChangedSlotEmitter.subscribe((config) => {\n this.componentStateChanged.emit({\n selectedSearchConfig: config?.name ?? null,\n })\n this.selectedSearchConfigChanged.emit(config)\n })\n this.searchButtonsReversed$ = from(\n configurationService.getProperty(CONFIG_KEY.ONECX_PORTAL_SEARCH_BUTTONS_REVERSED)\n ).pipe(map((config) => config === 'true'))\n }\n\n ngAfterContentInit(): void {\n if (this.formGroup) {\n this.fieldValues$ = combineLatest([\n this.formGroup.valueChanges.pipe(startWith({})),\n this.visibleFormControls.changes.pipe(startWith(null)),\n ]).pipe(\n debounceTime(100),\n map(([values, _]) =>\n Object.entries(values ?? {}).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: this.isVisible(key) ? value || undefined : undefined,\n }),\n {}\n )\n )\n )\n }\n }\n\n ngAfterViewInit(): void {\n this.addKeyUpEventListener()\n }\n\n toggleViewMode() {\n this.viewMode = this.viewMode === 'basic' ? 'advanced' : 'basic'\n }\n\n onResetClicked() {\n this.resetted.emit()\n }\n\n onSearchClicked() {\n this.searched.emit()\n }\n\n updateHeaderActions() {\n const headerActions: Action[] = []\n if (this.hasAdvanced) {\n ;(this.simpleAdvancedAction.labelKey =\n this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT'),\n (this.simpleAdvancedAction.titleKey =\n this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL'),\n headerActions.push(this.simpleAdvancedAction)\n }\n this.headerActions = headerActions.concat(this.actions)\n }\n\n addKeyUpEventListener() {\n const inputElements = this.searchParameterFields?.nativeElement.querySelectorAll('input')\n inputElements.forEach((inputElement: any) => {\n if (!inputElement.listenerAdded) {\n inputElement.addEventListener('keyup', (event: any) => this.onSearchKeyup(event))\n inputElement.listenerAdded = true\n }\n })\n }\n\n onSearchKeyup(event: any) {\n if (event.code === 'Enter') {\n this.onSearchClicked()\n }\n }\n\n private isVisible(control: string) {\n return this.visibleFormControls.some(\n (formControl) => formControl.name !== null && String(formControl.name) === control\n )\n }\n}\n","<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n @if (searchConfigChangeObserved && pageName) {\n <ocx-slot\n *ocxIfPermission=\"searchConfigPermission\"\n name=\"onecx-search-config\"\n [inputs]=\"{ pageName: pageName, currentFieldValues: fieldValues$ | async, viewMode: viewMode }\"\n [outputs]=\"{ searchConfigSelected: searchConfigChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n } @if (_additionalToolbarContentLeft) {\n <ng-container [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"></ng-container>\n }\n </ng-template>\n <ng-template #additionalToolbarContent>\n @if (_additionalToolbarContent) {\n <ng-container [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n }\n </ng-template>\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <section #searchParameterFields [attr.aria-label]=\"'Search Criteria'\">\n <ng-content></ng-content>\n </section>\n <section\n class=\"flex flex-wrap gap-2\"\n [ngClass]=\"(searchButtonsReversed$ | async) ? 'flex-row-reverse' : 'flex-row'\"\n [attr.aria-label]=\"'Search Controls'\"\n >\n @if (resetted.observed) {\n <p-button\n id=\"resetButton\"\n icon=\"pi pi-eraser\"\n (onClick)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n }\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n </section>\n </div>\n</ocx-page-header>\n","import { Directive, DoCheck, TemplateRef, ViewContainerRef, inject } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxAdvanced]', standalone: false })\nexport class AdvancedDirective implements DoCheck {\n private viewContainer = inject(ViewContainerRef)\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw 'Advanced directive can only be used inside search header component'\n }\n searchHeader.hasAdvanced = true\n }\n ngDoCheck(): void {\n if (this.searchHeader?.viewMode === 'advanced') {\n if (this.templateRef && !this.viewContainer.length) {\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n this.viewContainer.clear()\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n Input,\n NgZone,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { Tooltip, TooltipStyle } from 'primeng/tooltip'\n\n@Directive({ selector: '[ocxTooltipOnOverflow]', standalone: false, providers: [TooltipStyle] })\nexport class TooltipOnOverflowDirective extends Tooltip implements OnDestroy, AfterViewInit {\n mutationObserver = new MutationObserver(() => {\n this.zone.run(() => {\n this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n this.setOption({ disabled: this.disabled })\n }, this)\n })\n\n @Input()\n get ocxTooltipOnOverflow(): string | TemplateRef<HTMLElement> | undefined {\n return this.content\n }\n set ocxTooltipOnOverflow(value: string | TemplateRef<HTMLElement> | undefined) {\n this.content = value\n this.setOption({ tooltipLabel: value })\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy()\n this.mutationObserver.disconnect()\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit()\n setTimeout(() => {\n // Needed to ensure change detection picks up the correct state of 'disabled'\n // Without this the tooltip for some elements won't update properly\n this.zone.run(() => {\n this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n this.setOption({ disabled: this.disabled })\n }, this)\n this.mutationObserver.observe(this.el.nativeElement, { subtree: true, characterData: true, childList: true })\n }, 0)\n }\n constructor() {\n const zone = inject(NgZone)\n const renderer = inject(Renderer2)\n const viewContainer = inject(ViewContainerRef)\n\n super(zone, viewContainer)\n renderer.setStyle(this.el.nativeElement, 'text-overflow', 'ellipsis')\n renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden')\n renderer.setStyle(this.el.nativeElement, 'white-space', 'nowrap')\n this.disabled = true\n this.setOption({ disabled: this.disabled })\n }\n}\n","import { Directive, Input, TemplateRef, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxTemplate]', standalone: false })\nexport class TemplateDirective {\n template = inject<TemplateRef<any>>(TemplateRef)\n\n @Input({\n required: true,\n alias: 'ocxTemplate',\n })\n name = ''\n\n getType(): string {\n return this.name\n }\n}\n","import { Directive, DoCheck, TemplateRef, ViewContainerRef, inject } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxBasic]', standalone: false })\nexport class BasicDirective implements DoCheck {\n private viewContainer = inject(ViewContainerRef)\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw 'Basic directive can only be used inside search header component'\n }\n }\n ngDoCheck(): void {\n if (this.searchHeader?.viewMode === 'basic') {\n if (this.templateRef && !this.viewContainer.length) {\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n this.viewContainer.clear()\n }\n }\n}\n","import { Component } from '@angular/core'\n\n@Component({\n standalone: false,\n selector: 'ocx-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {}\n","<div class=\"full-overlay\">\n <div class=\"overlay\">\n <span class=\"loader\"></span>\n </div>\n</div>","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { LoadingIndicatorComponent } from '../components/loading-indicator/loading-indicator.component'\n\n\n@Directive({\n selector: '[ocxLoadingIndicator]',\n standalone: false,\n})\nexport class LoadingIndicatorDirective implements OnChanges {\n private viewContainerRef = inject(ViewContainerRef)\n private el = inject(ElementRef)\n private renderer = inject(Renderer2)\n\n @Input() ocxLoadingIndicator = false\n @Input() overlayFullPage = false\n @Input() isLoaderSmall? = false\n\n private componentRef: ComponentRef<LoadingIndicatorComponent> | undefined\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['ocxLoadingIndicator'] || changes['overlayFullPage']) {\n this.toggleLoadingIndicator()\n }\n }\n\n private elementLoader() {\n this.renderer.addClass(this.el.nativeElement, 'element-overlay')\n const loaderElement = document.createElement('div')\n loaderElement.className = 'loader'\n if (this.isLoaderSmall) {\n loaderElement.className = 'loader loader-small'\n }\n this.renderer.appendChild(this.el.nativeElement, loaderElement)\n }\n\n private toggleLoadingIndicator() {\n if (this.ocxLoadingIndicator) {\n if (this.overlayFullPage == false) {\n this.elementLoader()\n } else {\n this.componentRef = this.viewContainerRef.createComponent(LoadingIndicatorComponent)\n }\n } else {\n this.viewContainerRef.clear()\n if (this.componentRef) {\n this.componentRef.destroy()\n }\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type GroupSelectionChangedEvent = { activeColumns: DataTableColumn[]; groupKey: string }\nexport interface ColumnGroupSelectionComponentState {\n activeColumnGroupKey?: string\n displayedColumns?: DataTableColumn[]\n}\n@Component({\n standalone: false,\n templateUrl: './column-group-selection.component.html',\n selector: 'ocx-column-group-selection',\n styleUrls: ['./column-group-selection.component.scss'],\n})\nexport class ColumnGroupSelectionComponent implements OnInit {\n selectedGroupKey$ = new BehaviorSubject<string>('')\n @Input()\n get selectedGroupKey(): string {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string) {\n this.selectedGroupKey$.next(value)\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: value,\n })\n }\n }\n\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n }\n @Input() placeholderKey = ''\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = ''\n\n @Output() groupSelectionChanged: EventEmitter<GroupSelectionChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<ColumnGroupSelectionComponentState> = new EventEmitter()\n\n allGroupKeys$: Observable<string[]> | undefined\n\n ngOnInit() {\n this.allGroupKeys$ = combineLatest([this.columns$, this.selectedGroupKey$]).pipe(\n map(([columns, selectedGroupKey]) =>\n columns\n .map((keys) => keys.predefinedGroupKeys || [])\n .flat()\n .concat([this.defaultGroupKey])\n .concat([selectedGroupKey])\n .filter((value) => !!value)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n )\n )\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n })\n } else {\n const activeColumns = this.columns.filter((c) =>\n c.predefinedGroupKeys?.includes(this.selectedGroupKey$.getValue() ?? this.defaultGroupKey)\n )\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: activeColumns,\n })\n }\n }\n\n changeGroupSelection(event: { value: string }) {\n if (event.value === this.customGroupKey) {\n return\n }\n const activeColumns = this.columns.filter((c) => c.predefinedGroupKeys?.includes(event.value))\n this.groupSelectionChanged.emit({ activeColumns, groupKey: event.value })\n this.componentStateChanged.emit({\n activeColumnGroupKey: event.value,\n displayedColumns: activeColumns,\n })\n }\n}\n","<p-floatlabel variant=\"on\">\n @if ((allGroupKeys$ | async)?.length) {\n <p-select\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item #item> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item #selectedItem> {{ item ? (item | translate) : ''}} </ng-template>\n </p-select>\n }\n @if ((allGroupKeys$ | async)?.length) {\n <label for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n }\n </p-floatlabel>\n","import { Component, Input } from '@angular/core'\n\n@Component({\n standalone: false,\n selector: 'ocx-content',\n templateUrl: './content.component.html',\n})\nexport class OcxContentComponent {\n /**\n * Optionally allows specifying a title for the content card\n */\n @Input() title = ''\n\n /**\n * Optionally allows specifying styles for the content card\n */\n @Input() styleClass: string | undefined\n}\n","<div [ocxContent]=\"title\" [ngClass]=\"styleClass\">\n <ng-content></ng-content>\n</div>","import { Component, Input } from '@angular/core'\n\n@Component({\n standalone: false,\n selector: 'ocx-content-container',\n templateUrl: './content-container.component.html',\n})\nexport class OcxContentContainerComponent {\n /**\n * Allows specifying the layout direction of the container\n */\n @Input() layout: 'vertical' | 'horizontal' = 'horizontal'\n\n /**\n * Allows specifying the breakpoint below which a horizontal layout switches to a vertical layout.\n * Only necessary if horizontal layout is used\n * Default: md\n */\n @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n /**\n * Optionally allows specifying styles for the container\n */\n @Input() styleClass: string | undefined\n}\n","<div ocxContentContainer [layout]=\"layout\" [breakpoint]=\"breakpoint\" [ngClass]=\"styleClass\">\n <ng-content></ng-content>\n</div>","import { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type ColumnSelectionChangedEvent = { activeColumns: DataTableColumn[] }\nexport type ActionColumnChangedEvent = {\n frozenActionColumn: boolean\n actionColumnPosition: 'left' | 'right'\n}\n\nexport interface CustomGroupColumnSelectorComponentState {\n actionColumnConfig?: {\n frozen: boolean\n position: 'left' | 'right'\n }\n displayedColumns?: DataTableColumn[]\n activeColumnGroupKey?: string\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-custom-group-column-selector',\n templateUrl: './custom-group-column-selector.component.html',\n styleUrls: ['./custom-group-column-selector.component.scss'],\n})\nexport class CustomGroupColumnSelectorComponent implements OnInit {\n private translate = inject(TranslateService)\n\n @Input() columns: DataTableColumn[] = []\n private _displayedColumns: DataTableColumn[] = []\n @Input()\n get displayedColumns() {\n return this._displayedColumns\n }\n set displayedColumns(value: DataTableColumn[]) {\n this._displayedColumns = value\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this._displayedColumns,\n })\n }\n @Input() customGroupKey = ''\n @Input() dialogTitle = ''\n @Input() dialogTitleKey = ''\n @Input() openButtonTitle = ''\n @Input() openButtonTitleKey = ''\n @Input() openButtonAriaLabel = ''\n @Input() openButtonAriaLabelKey = ''\n @Input() saveButtonLabel = ''\n @Input() saveButtonLabelKey = ''\n @Input() saveButtonAriaLabel = ''\n @Input() saveButtonAriaLabelKey = ''\n @Input() cancelButtonLabel = ''\n @Input() cancelButtonLabelKey = ''\n @Input() cancelButtonAriaLabel = ''\n @Input() cancelButtonAriaLabelKey = ''\n @Input() activeColumnsLabel = ''\n @Input() activeColumnsLabelKey = ''\n @Input() inactiveColumnsLabel = ''\n @Input() inactiveColumnsLabelKey = ''\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() columnSelectionChanged: EventEmitter<ColumnSelectionChangedEvent> = new EventEmitter()\n @Output() actionColumnConfigChanged: EventEmitter<ActionColumnChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<CustomGroupColumnSelectorComponentState> = new EventEmitter()\n\n hiddenColumnsModel: DataTableColumn[] = []\n displayedColumnsModel: DataTableColumn[] = []\n frozenActionColumnModel = false\n actionColumnPositionModel: 'left' | 'right' = 'right'\n visible = false\n alignmentOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.LEFT',\n value: 'left',\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.RIGHT',\n value: 'right',\n },\n ]\n\n frozenOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.YES',\n value: true,\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.NO',\n value: false,\n },\n ]\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this.displayedColumns,\n })\n }\n\n onOpenCustomGroupColumnSelectionDialogClick() {\n this.displayedColumnsModel = [...this.displayedColumns]\n this.hiddenColumnsModel = this.columns.filter(\n (column) => !this.displayedColumnsModel.map((c) => c.id).includes(column.id)\n )\n this.frozenActionColumnModel = this.frozenActionColumn\n this.actionColumnPositionModel = this.actionColumnPosition\n this.visible = true\n }\n\n onSaveClick() {\n this.visible = false\n const colIdsBefore = this.displayedColumns.map((column) => column.id)\n const colIdsAfter = this.displayedColumnsModel.map((column) => column.id)\n\n if (!colIdsAfter.every((colId, i) => colId === colIdsBefore[i]) || colIdsAfter.length != colIdsBefore.length) {\n this.columnSelectionChanged.emit({ activeColumns: [...this.displayedColumnsModel] })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n })\n }\n\n if (\n this.frozenActionColumn != this.frozenActionColumnModel ||\n this.actionColumnPosition != this.actionColumnPositionModel\n ) {\n this.actionColumnConfigChanged.emit({\n frozenActionColumn: this.frozenActionColumnModel,\n actionColumnPosition: this.actionColumnPositionModel,\n })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n actionColumnConfig: {\n frozen: this.frozenActionColumnModel,\n position: this.actionColumnPositionModel,\n },\n activeColumnGroupKey: this.customGroupKey,\n })\n }\n }\n\n onCancelClick() {\n this.visible = false\n }\n}\n","<p-button\n id=\"customGroupColumnSelectorButton\"\n type=\"button\"\n (onClick)=\"onOpenCustomGroupColumnSelectionDialogClick()\"\n [pTooltip]=\"openButtonTitle || (openButtonTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n tooltipPosition=\"top\"\n icon=\"pi pi-cog\"\n styleClass=\"p-button\"\n [ariaLabel]=\"(openButtonAriaLabelKey ? (openButtonAriaLabelKey | translate) : openButtonAriaLabel) || openButtonTitle || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n [attr.aria-controls]=\"visible ? 'customGroupColumnSelectorDialog' : null\"\n [attr.aria-expanded]=\"visible ? true : false\"\n></p-button>\n\n<p-dialog\n #dialog\n id=\"customGroupColumnSelectorDialog\"\n [(visible)]=\"visible\"\n [style]=\"{ width: '70%' }\"\n [modal]=\"true\"\n [closeAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.CLOSE' | translate)\"\n>\n <ng-template pTemplate=\"header\">\n <span [id]=\"dialog.ariaLabelledBy\" class=\"text-xl font-bold\"\n >{{ dialogTitle || (dialogTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DIALOG_TITLE' | translate)\n }}</span\n >\n </ng-template>\n\n <p-pickList\n [source]=\"displayedColumnsModel\"\n [target]=\"hiddenColumnsModel\"\n [sourceHeader]=\"activeColumnsLabel || (activeColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ACTIVE_COLUMNS_LABEL' | translate)\"\n [targetHeader]=\"inactiveColumnsLabel || (inactiveColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.INACTIVE_COLUMNS_LABEL' | translate)\"\n [dragdrop]=\"true\"\n [responsive]=\"false\"\n [sourceStyle]=\"{ height: '300px' }\"\n [targetStyle]=\"{ height: '300px' }\"\n [upButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.UP' | translate)\"\n [topButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.TOP' | translate)\"\n [downButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.DOWN' | translate)\"\n [bottomButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.BOTTOM' | translate)\"\n [rightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.RIGHT' | translate)\"\n [allRightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_RIGHT' | translate)\"\n [leftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.LEFT' | translate)\"\n [allLeftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_LEFT' | translate)\"\n >\n <ng-template let-item #item>\n <div>{{ item.nameKey | translate }}</div>\n </ng-template>\n </p-pickList>\n\n <div class=\"pt-4\">\n <p class=\"text-xl font-bold\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.TITLE' | translate}}</p>\n <div class=\"flex gap-6 px-3\">\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.FREEZE' | translate}}</p>\n <p-selectbutton\n [options]=\"frozenOptions\"\n [(ngModel)]=\"frozenActionColumnModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"frozenActionColumn\"\n name=\"frozen-action-column-select-button\"\n [allowEmpty]=\"false\"\n >\n <ng-template #item let-option> {{option.label | translate}} </ng-template>\n </p-selectbutton>\n </div>\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.POSITION' | translate}}</p>\n <p-selectbutton\n [options]=\"alignmentOptions\"\n [(ngModel)]=\"actionColumnPositionModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"actionColumnPosition\"\n name=\"action-column-position-select-button\"\n [allowEmpty]=\"false\"\n >\n <ng-template #item let-option> {{option.label | translate}} </ng-template>\n </p-selectbutton>\n </div>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <p-button\n id=\"cancelButton\"\n (onClick)=\"onCancelClick()\"\n [label]=\"cancelButtonLabel || (cancelButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_LABEL' | translate)\"\n styleClass=\"p-button\"\n [ariaLabel]=\"cancelButtonLabel || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n <p-button\n id=\"saveButton\"\n (onClick)=\"onSaveClick()\"\n [label]=\"saveButtonLabel || (saveButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_LABEL' | translate)\"\n [ariaLabel]=\"saveButtonAriaLabelKey || (saveButtonAriaLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n </ng-template>\n</p-dialog>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { PrimeIcons } from 'primeng/api'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\ninterface ViewingLayouts {\n id: string\n icon: PrimeIcon\n layout: 'grid' | 'list' | 'table'\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nconst ALL_VIEW_LAYOUTS: ViewingLayouts[] = [\n {\n id: 'ocx-data-layout-selection-list',\n icon: PrimeIcons.LIST,\n layout: 'list',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n },\n {\n id: 'ocx-data-layout-selection-grid',\n icon: PrimeIcons.TH_LARGE,\n layout: 'grid',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n },\n {\n id: 'ocx-data-layout-selection-table',\n icon: PrimeIcons.TABLE,\n layout: 'table',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n },\n]\n\nexport interface DataLayoutSelectionComponentState {\n layout?: 'grid' | 'list' | 'table'\n}\n@Component({\n standalone: false,\n selector: 'ocx-data-layout-selection',\n templateUrl: './data-layout-selection.component.html',\n styleUrls: ['./data-layout-selection.component.scss'],\n})\nexport class DataLayoutSelectionComponent implements OnInit {\n @Input() supportedViewLayouts: Array<string> = []\n @Input()\n set layout(value: 'grid' | 'list' | 'table') {\n this.selectedViewLayout = ALL_VIEW_LAYOUTS.find((v) => v.layout === value)\n }\n get layout(): 'grid' | 'list' | 'table' {\n return this.selectedViewLayout?.layout || 'table'\n }\n\n @Output() dataViewLayoutChange: EventEmitter<'grid' | 'list' | 'table'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataLayoutSelectionComponentState> = new EventEmitter()\n\n viewingLayouts: ViewingLayouts[] = []\n selectedViewLayout: ViewingLayouts | undefined\n\n ngOnInit(): void {\n this.viewingLayouts = ALL_VIEW_LAYOUTS.filter((vl) => this.supportedViewLayouts.includes(vl.layout))\n this.componentStateChanged.emit({\n layout: this.layout,\n })\n }\n\n onDataViewLayoutChange(event: { icon: PrimeIcon; layout: 'grid' | 'list' | 'table' }): void {\n this.dataViewLayoutChange.emit(event.layout)\n this.componentStateChanged.emit({\n layout: event.layout,\n })\n }\n}\n","<div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n @if (viewingLayouts.length > 1) {\n <p-selectbutton\n [options]=\"viewingLayouts\"\n [(ngModel)]=\"selectedViewLayout\"\n optionLabel=\"id\"\n (onChange)=\"onDataViewLayoutChange($event.value)\"\n >\n <ng-template #item let-item>\n <i [class]=\"item.icon\" [pTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\"></i>\n <label style=\"display: none\" id=\"{{item.id}}\">{{item.labelKey | translate}}</label>\n </ng-template>\n </p-selectbutton>\n }\n</div>\n","export enum ColumnType {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n DATE = 'DATE',\n RELATIVE_DATE = 'RELATIVE_DATE',\n TRANSLATION_KEY = 'TRANSLATION_KEY',\n}\n","export class ObjectUtils {\n public static resolveFieldData(data: any, field: any): any {\n if (data && field) {\n if (this.isFunction(field)) {\n return field(data)\n } else if (field.indexOf('.') == -1) {\n return data[field]\n } else {\n const fields: string[] = field.split('.')\n let value = data\n for (let i = 0, len = fields.length; i < len; ++i) {\n if (value == null) {\n return null\n }\n value = value[fields[i]]\n }\n return value\n }\n } else {\n return null\n }\n }\n\n public static isFunction(obj: any) {\n return !!(obj && obj.constructor && obj.call && obj.apply)\n }\n}\n","type Extend<TObj extends Record<string, unknown>, K extends string> = {\n [TKey in keyof TObj & string as `${K}${TKey}`]: TObj[TKey] extends Record<string, unknown>\n ? Extend<TObj[TKey], `${K}${TKey}.`>\n : TObj[TKey]\n}\n\ntype NonObjectKeysOf<T> = {\n [K in keyof T]: T[K] extends Array<any> ? K : T[K] extends object ? (T[K] extends Date ? K : never) : K\n}[keyof T]\n\ntype ObjectKeysOf<T> = {\n [K in keyof T]: T[K] extends Array<any> ? never : T[K] extends object ? K : never\n}[keyof T]\n\ntype Filter<TObj extends object, TKey = keyof TObj> = TKey extends keyof TObj\n ? TObj[TKey] extends Array<any>\n ? TObj\n : TObj[TKey] extends object\n ? Filter<TObj[TKey]>\n : Pick<TObj, NonObjectKeysOf<TObj>> | Filter<Pick<TObj, ObjectKeysOf<TObj>>>\n : never\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never\n\nexport type Result<TObj extends Record<string, unknown>> = UnionToIntersection<Filter<Extend<TObj, ''>>>\n\nexport function flattenObject<O extends Record<string, unknown>>(ob: O): Result<O> {\n const toReturn: Record<string, unknown> = {}\n\n for (const i in ob) {\n if (!Object.prototype.hasOwnProperty.call(ob, i)) continue\n\n if (!!ob[i] && typeof ob[i] == 'object' && !(ob[i] instanceof Date) && !Array.isArray(ob[i])) {\n const flatObject = flattenObject(ob[i] as Record<string, unknown>)\n for (const x in flatObject) {\n if (!Object.prototype.hasOwnProperty.call(flatObject, x)) continue\n\n toReturn[i + '.' + x] = (flatObject as any)[x]\n }\n } else {\n toReturn[i] = ob[i]\n }\n }\n return toReturn as Result<O>\n}\n","export interface ColumnFilterDataSelectOptions {\n reverse: boolean\n}\n\nexport type FilterObject = { columnId: string; filterType?: FilterType }\n\nexport type Filter = FilterObject & { value: unknown }\n\nexport enum FilterType {\n ENDS_WITH = 'endsWith',\n STARTS_WITH = 'startsWith',\n CONTAINS = 'contains',\n NOT_CONTAINS = 'notContains',\n EQUALS = 'equals',\n NOT_EQUALS = 'notEquals',\n LESS_THAN = 'lessThan',\n GREATER_THAN = 'greaterThan',\n LESS_THAN_OR_EQUAL = 'lessThanOrEqual',\n GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual',\n IS_EMPTY = 'isEmpty',\n IS_NOT_EMPTY = 'isNotEmpty',\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map, of } from 'rxjs'\nimport { flattenObject } from '../../functions/flatten-object'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { ListGridData } from '../../components/data-list-grid/data-list-grid.component'\nimport { Row } from '../../components/data-table/data-table.component'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { Filter, FilterType } from '../../model/filter.model'\n\ntype RowListGridData = ListGridData | Row\n\nexport class DataSortBase {\n constructor(\n protected locale: string,\n protected translateService: TranslateService\n ) {}\n\n translateItems(\n [items, filters, sortColumn, sortDirection]: [RowListGridData[], Filter[], string, DataSortDirection],\n columns: DataTableColumn[],\n clientSideFiltering: boolean,\n clientSideSorting: boolean\n ): Observable<[RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>]> {\n if (clientSideFiltering || clientSideSorting) {\n let translationKeys: string[] = []\n const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n translatedColumns.forEach((c) => {\n translationKeys = [\n ...translationKeys,\n ...items.map((i) => ObjectUtils.resolveFieldData(i, c.id)?.toString()).filter((v) => !!v),\n ]\n })\n if (translationKeys.length) {\n return this.translateService.get(translationKeys).pipe(\n map((translatedValues: Record<string, string>) => {\n const translations: Record<string, Record<string, string>> = {}\n translatedColumns.forEach((c) => {\n translations[c.id] = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, c.id)?.toString() || '',\n translatedValues[ObjectUtils.resolveFieldData(i, c.id)?.toString()],\n ])\n )\n })\n return [items, filters, sortColumn, sortDirection, translations]\n })\n )\n }\n }\n return of([items, filters, sortColumn, sortDirection, {}])\n }\n\n filterItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n clientSideFiltering: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideFiltering) {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n return [\n items.filter((item) =>\n filters\n .map((filter) => filter.columnId)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n .every((filterColumnId) =>\n filters\n .filter((filter) => filter.columnId === filterColumnId)\n .some((filter) => {\n const value = (\n translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId)?.toString()] ||\n ObjectUtils.resolveFieldData(item, filter.columnId)\n )?.toString()\n switch (filter.filterType) {\n case undefined:\n case FilterType.EQUALS:\n return value === String(filter.value)\n case FilterType.IS_NOT_EMPTY: {\n return filter.value ? !!value : !value\n }\n default:\n return true\n }\n })\n )\n ),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n sortItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n columns: DataTableColumn[],\n clientSideSorting: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideSorting || sortColumn === '') {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n const column = columns.find((h) => h.id === sortColumn)\n let colValues: Record<string, string>\n if (column?.columnType === ColumnType.DATE || column?.columnType === ColumnType.RELATIVE_DATE) {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ])\n )\n } else {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ])\n )\n }\n if (column?.columnType === ColumnType.TRANSLATION_KEY) {\n colValues = translations[sortColumn]\n }\n return [\n [...items].sort(this.createCompareFunction(colValues, sortColumn, sortDirection)),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n flattenItems(items: RowListGridData[]) {\n return items.map((i) => flattenObject(i))\n }\n\n createCompareFunction(\n translatedColValues: Record<string, string>,\n sortColumn: string,\n sortDirection: DataSortDirection\n ): (a: Record<string, any>, b: Record<string, any>) => number {\n let direction = 0\n if (sortDirection === DataSortDirection.ASCENDING) {\n direction = 1\n } else if (sortDirection === DataSortDirection.DESCENDING) {\n direction = -1\n }\n return (data1, data2) => {\n if (direction === 0) {\n return 0\n }\n let result\n const value1 = translatedColValues[ObjectUtils.resolveFieldData(data1, sortColumn)]\n const value2 = translatedColValues[ObjectUtils.resolveFieldData(data2, sortColumn)]\n\n if (value1 == null && value2 != null) result = -1\n else if (value1 != null && value2 == null) result = 1\n else if (value1 == null && value2 == null) result = 0\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, [this.locale, 'en', 'de'], { numeric: true })\n else {\n if (value1 < value2) {\n result = -1\n } else if (value1 > value2) {\n result = 1\n } else {\n result = 0\n }\n }\n return direction * result\n }\n }\n}\n","import { ChangeDetectorRef, NgZone, OnDestroy, Pipe, PipeTransform, inject } from '@angular/core'\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core'\n\n@Pipe({\n name: 'timeago',\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class OcxTimeAgoPipe extends TranslatePipe implements OnDestroy, PipeTransform {\n private changeDetectorRef: ChangeDetectorRef\n private ngZone = inject(NgZone)\n private translateService: TranslateService\n\n private timer: number | undefined | null\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef)\n const translateService = inject(TranslateService)\n\n super(translateService, changeDetectorRef)\n\n this.changeDetectorRef = changeDetectorRef\n this.translateService = translateService\n }\n override transform(value: string) {\n this.removeTimer()\n const d = new Date(value)\n const now = new Date()\n const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000))\n const timeToUpdate = Number.isNaN(seconds) ? 1000 : this.getSecondsUntilUpdate(seconds) * 1000\n this.timer = this.ngZone.runOutsideAngular(() => {\n if (typeof window !== 'undefined') {\n return window.setTimeout(() => {\n this.ngZone.run(() => this.changeDetectorRef.markForCheck())\n }, timeToUpdate)\n }\n return null\n })\n const minutes = Math.round(Math.abs(seconds / 60))\n const hours = Math.round(Math.abs(minutes / 60))\n const days = Math.round(Math.abs(hours / 24))\n const months = Math.round(Math.abs(days / 30.416))\n const years = Math.round(Math.abs(days / 365))\n let translationKey = 'UNKNOWN'\n if (Number.isNaN(seconds)) {\n translationKey = 'NAN'\n } else if (seconds <= 45) {\n translationKey = 'A_FEW_SECONDS_AGO'\n } else if (seconds <= 90) {\n translationKey = 'A_MINUTE_AGO'\n } else if (minutes <= 45) {\n translationKey = 'MINUTES_AGO'\n } else if (minutes <= 90) {\n translationKey = 'AN_HOUR_AGO'\n } else if (hours <= 22) {\n translationKey = 'HOURS_AGO'\n } else if (hours <= 36) {\n translationKey = 'A_DAY_AGO'\n } else if (days <= 25) {\n translationKey = 'DAYS_AGO'\n } else if (days <= 45) {\n translationKey = 'A_MONTH_AGO'\n } else if (days <= 345) {\n translationKey = 'MONTHS_AGO'\n } else if (days <= 545) {\n translationKey = 'A_YEAR_AGO'\n } else {\n translationKey = 'YEARS_AGO'\n }\n return super.transform('OCX_TIMEAGO.' + translationKey, { minutes, hours, days, months, years })\n }\n override ngOnDestroy(): void {\n this.removeTimer()\n super.ngOnDestroy()\n }\n private removeTimer() {\n if (this.timer) {\n window.clearTimeout(this.timer)\n this.timer = null\n }\n }\n private getSecondsUntilUpdate(seconds: number) {\n const min = 60\n const hr = min * 60\n const day = hr * 24\n if (seconds < min) {\n return 2\n } else if (seconds < hr) {\n return 30\n } else if (seconds < day) {\n return 300\n } else {\n return 3600\n }\n }\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n inject,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { AppStateService, UserService } from '@onecx/angular-integration-interface'\nimport { MfeInfo } from '@onecx/integration-interface'\nimport { MenuItem, PrimeIcons, PrimeTemplate } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { BehaviorSubject, Observable, combineLatest, debounceTime, first, map, mergeMap, of, switchMap } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { Row } from '../data-table/data-table.component'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\n\nexport type ListGridData = {\n id: string | number\n imagePath: string | number\n [columnId: string]: unknown\n}\n\ntype RowListGridData = ListGridData & Row\n\nexport interface ListGridDataMenuItem extends MenuItem {\n permission: string\n}\n\nexport interface DataListGridComponentState {\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-data-list-grid',\n templateUrl: './data-list-grid.component.html',\n styleUrls: ['./data-list-grid.component.scss'],\n})\nexport class DataListGridComponent extends DataSortBase implements OnInit, DoCheck, AfterContentInit {\n private userService = inject(UserService)\n private router = inject(Router)\n private injector = inject(Injector)\n private appStateService = inject(AppStateService)\n private hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() sortStates: DataSortDirection[] = []\n\n _pageSizes$ = new BehaviorSubject<number[]>([10, 25, 50])\n @Input()\n get pageSizes(): number[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: number[]) {\n this._pageSizes$.next(value)\n }\n\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() fallbackImage = 'placeholder.png'\n @Input() layout: 'grid' | 'list' = 'grid'\n _viewPermission$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n @Input()\n get viewPermission(): string | string[] | undefined {\n return this._viewPermission$.getValue()\n }\n set viewPermission(value: string | string[] | undefined) {\n this._viewPermission$.next(value)\n }\n @Input() editPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() viewMenuItemKey: string | undefined\n @Input() editMenuItemKey: string | undefined\n @Input() deleteMenuItemKey: string | undefined\n @Input() paginator = true\n @Input() page = 0\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n }\n @Input() name = ''\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n _data$ = new BehaviorSubject<RowListGridData[]>([])\n @Input()\n get data(): RowListGridData[] {\n return this._data$.getValue()\n }\n set data(value: RowListGridData[]) {\n if (this._data$.getValue().length) this.resetPage()\n this._originalData = [...value]\n this._data$.next([...value])\n }\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n if (this._filters$.getValue().length) this.resetPage()\n this._filters$.next(value)\n }\n _originalData: RowListGridData[] = []\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n if (value === DataSortDirection.NONE) {\n this._data$.next([...this._originalData])\n }\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n\n inlineListActions$: Observable<DataAction[]>\n overflowListActions$: Observable<DataAction[]>\n overflowListMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n\n @Output() viewItem = new EventEmitter<ListGridData>()\n @Output() editItem = new EventEmitter<ListGridData>()\n @Output() deleteItem = new EventEmitter<ListGridData>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataListGridComponentState>()\n\n get viewItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteItem.observed\n }\n\n get sortDirectionNumber(): number {\n if (this.sortDirection === DataSortDirection.ASCENDING) return 1\n if (this.sortDirection === DataSortDirection.DESCENDING) return -1\n return 0\n }\n\n gridMenuItems$: Observable<MenuItem[]>\n _selectedItem$ = new BehaviorSubject<ListGridData | undefined>(undefined)\n observedOutputs$ = new BehaviorSubject<number>(0)\n\n displayedItems$: Observable<unknown[]> | undefined\n fallbackImagePath$!: Observable<string>\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n columnType = ColumnType\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n hasViewPermission$: Observable<boolean>\n\n private cachedOverflowMenuItemsVisibility$: Observable<boolean> | undefined\n\n constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.fallbackImagePath$ = this.appStateService.currentMfe$.pipe(\n map((currentMfe) => this.getFallbackImagePath(currentMfe))\n )\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.inlineListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.overflowListMenuItems$ = combineLatest([this.overflowListActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n this.hasViewPermission$ = this._viewPermission$.pipe(\n map((permission) => {\n if (!permission) return []\n return Array.isArray(permission) ? permission : [permission]\n }),\n switchMap((permissionArray) => {\n if (permissionArray.length === 0) {\n return of(true)\n }\n return this.getPermissions().pipe(map((permissions) => permissionArray.every((p) => permissions.includes(p))))\n })\n )\n this.gridMenuItems$ = combineLatest([\n this.getPermissions(),\n this._additionalActions$.asObservable(),\n this._selectedItem$.asObservable(),\n this.observedOutputs$.asObservable(),\n ]).pipe(\n switchMap(([permissions, additionalActions, selectedItem, _observedOutputs]) =>\n this.filterActionsBasedOnPermissions(additionalActions, permissions).pipe(\n map((permittedActions) => ({ permissions, additionalActions: permittedActions, selectedItem }))\n )\n ),\n switchMap(({ permissions, additionalActions, selectedItem }) => {\n return this.getGridActionsTranslations(additionalActions, permissions).pipe(\n map((translations) => ({ permissions, additionalActions, selectedItem, translations }))\n )\n }),\n map(({ permissions, additionalActions, selectedItem, translations }) =>\n this.mapGridMenuItems(permissions, additionalActions, selectedItem, translations)\n )\n )\n }\n\n ngDoCheck(): void {\n const observedOutputs = <any>this.viewItem.observed + <any>this.deleteItem.observed + <any>this.editItem.observed\n if (this.observedOutputs$.getValue() !== observedOutputs) {\n this.observedOutputs$.next(observedOutputs)\n }\n }\n\n ngOnInit(): void {\n this.displayedItems$ = combineLatest([this._data$, this._filters$, this._sortField$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([items]) => items)\n )\n\n this.emitComponentStateChanged()\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n }\n })\n }\n\n onDeleteRow(element: ListGridData) {\n this.deleteItem.emit(element)\n }\n\n onViewRow(element: ListGridData) {\n this.viewItem.emit(element)\n }\n\n onEditRow(element: ListGridData) {\n this.editItem.emit(element)\n }\n\n imgError(item: ListGridData) {\n item.imagePath = ''\n }\n\n getFallbackImagePath(mfeInfo: MfeInfo) {\n return mfeInfo?.remoteBaseUrl\n ? `${mfeInfo.remoteBaseUrl}/onecx-portal-lib/assets/images/${this.fallbackImage}`\n : `./onecx-portal-lib/assets/images/${this.fallbackImage}`\n }\n\n setSelectedItem(item: ListGridData) {\n this._selectedItem$.next(item)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n emitComponentStateChanged(state: DataListGridComponentState = {}) {\n this.displayedPageSize$.pipe(first()).subscribe((pageSize) => {\n this.componentStateChanged.emit({\n pageSize,\n activePage: this.page,\n ...state,\n })\n })\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!this.resolveFieldData(object, key)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowListActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n getFilteredColumns() {\n let ids: string[] = [...(this.subtitleLineIds ?? [])]\n if (this.titleLineId) {\n ids = [this.titleLineId, ...(this.subtitleLineIds ?? [])]\n }\n return this.columns.filter((c) => !ids.includes(c.id))\n }\n\n findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n }\n\n getTemplate(column: DataTableColumn): Observable<TemplateRef<any> | null> {\n if (!this.templatesObservables[column.id]) {\n this.templatesObservables[column.id] = combineLatest([\n this.templates$,\n this.viewTemplates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, vt, pt]) => {\n const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n const columnTemplate = templates.find((template) => template.name === column.id + 'IdListValue')?.template\n if (columnTemplate) {\n return columnTemplate\n }\n switch (column.columnType) {\n case ColumnType.DATE:\n return (\n this._dateListValue ??\n this.findTemplate(templates, ['dateListValue', 'defaultDateListValue'])?.template ??\n null\n )\n case ColumnType.NUMBER:\n return (\n this._numberListValue ??\n this.findTemplate(templates, ['numberListValue', 'defaultNumberListValue'])?.template ??\n null\n )\n case ColumnType.RELATIVE_DATE:\n return (\n this._relativeDateListValue ??\n this.findTemplate(templates, ['relativeDateListValue', 'defaultRelativeDateListValue'])?.template ??\n null\n )\n case ColumnType.TRANSLATION_KEY:\n return (\n this._translationKeyListValue ??\n this.findTemplate(templates, ['translationKeyListValue', 'defaultTranslationKeyListValue'])?.template ??\n null\n )\n default:\n return (\n this._stringListValue ??\n this.findTemplate(templates, ['stringListValue', 'defaultStringListValue'])?.template ??\n null\n )\n }\n })\n )\n }\n return this.templatesObservables[column.id]\n }\n\n private mapGridMenuItems(\n permissions: string[],\n additionalActions: DataAction[],\n selectedItem: ListGridData | undefined,\n translations: Record<string, string>\n ): MenuItem[] {\n let deleteDisabled = false\n let editDisabled = false\n let viewDisabled = false\n\n let deleteVisible = true\n let editVisible = true\n let viewVisible = true\n\n if (selectedItem) {\n viewDisabled = !!this.viewActionEnabledField && !this.fieldIsTruthy(selectedItem, this.viewActionEnabledField)\n editDisabled = !!this.editActionEnabledField && !this.fieldIsTruthy(selectedItem, this.editActionEnabledField)\n deleteDisabled =\n !!this.deleteActionEnabledField && !this.fieldIsTruthy(selectedItem, this.deleteActionEnabledField)\n\n viewVisible = !this.viewActionVisibleField || this.fieldIsTruthy(selectedItem, this.viewActionVisibleField)\n editVisible = !this.editActionVisibleField || this.fieldIsTruthy(selectedItem, this.editActionVisibleField)\n deleteVisible = !this.deleteActionVisibleField || this.fieldIsTruthy(selectedItem, this.deleteActionVisibleField)\n }\n\n const menuItems: MenuItem[] = []\n const automationId = 'data-grid-action-button'\n const automationIdHidden = 'data-grid-action-button-hidden'\n if (this.shouldDisplayAction(this.viewPermission, this.viewItem, permissions)) {\n menuItems.push({\n label: translations[this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW'],\n icon: PrimeIcons.EYE,\n command: () => this.viewItem.emit(selectedItem),\n disabled: viewDisabled,\n visible: viewVisible,\n automationId: viewVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.editPermission, this.editItem, permissions)) {\n menuItems.push({\n label: translations[this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT'],\n icon: PrimeIcons.PENCIL,\n command: () => this.editItem.emit(selectedItem),\n disabled: editDisabled,\n visible: editVisible,\n automationId: editVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.deletePermission, this.deleteItem, permissions)) {\n menuItems.push({\n label: translations[this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE'],\n icon: PrimeIcons.TRASH,\n command: () => this.deleteItem.emit(selectedItem),\n disabled: deleteDisabled,\n visible: deleteVisible,\n automationId: deleteVisible ? automationId : automationIdHidden,\n })\n }\n const val = menuItems.concat(\n additionalActions.map((a) => {\n const isVisible = !a.actionVisibleField || this.fieldIsTruthy(selectedItem, a.actionVisibleField)\n return {\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(selectedItem, a.actionEnabledField)),\n visible: isVisible,\n command: () => a.callback(selectedItem),\n automationId: isVisible ? automationId : automationIdHidden,\n }\n })\n )\n return val\n }\n\n private getGridActionsTranslations(\n additionalActions: DataAction[],\n permissions: string[]\n ): Observable<Record<string, string>> {\n return this.translateService.get([\n this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW',\n this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT',\n this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE',\n ...additionalActions\n .filter((action) => {\n const permissionsArray = Array.isArray(action.permission) ? action.permission : [action.permission]\n return permissionsArray.every((p) => permissions.includes(p))\n })\n .map((a) => a.labelKey || ''),\n ])\n }\n\n private shouldDisplayAction(\n permission: string | string[] | undefined,\n emitter: EventEmitter<any>,\n userPermissions: string[]\n ): boolean {\n const permissions = Array.isArray(permission) ? permission : permission ? [permission] : []\n return emitter.observed && permissions.every((p) => userPermissions.includes(p))\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[], permissions?: string[]): Observable<DataAction[]> {\n const permissions$ = permissions ? of(permissions) : this.getPermissions()\n return permissions$.pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n\n private getPermissions(): Observable<string[]> {\n if (this.hasPermissionChecker?.getPermissions) {\n return this.hasPermissionChecker.getPermissions()\n }\n\n return this.userService.getPermissions()\n }\n}\n","@if ((displayedPageSize$ | async); as displayedPageSize) { @if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n<p-dataView\n [value]=\"(displayedItems$ | async) ?? []\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [layout]=\"layout\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"this.pageSizes ?? []\"\n id=\"dataListGrid_{{name}}\"\n paginatorDropdownAppendTo=\"body\"\n>\n <ng-template #grid let-rows>\n <div class=\"grid grid-cols-12 gap-4\">\n @for (item of rows; track item) {\n <ng-container\n [ngTemplateOutlet]=\"_gridItem ? _gridItem : defaultGridItem\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #list let-rows>\n <div class=\"p-grid p-nogutter grid grid-nogutter\">\n @for (item of rows; track item; let first = $first) { @defer (on viewport; on idle){\n <ng-container\n [ngTemplateOutlet]=\"_listItem ? _listItem : defaultListItem\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n item:item,\n first:first,\n columnTemplates: columnTemplates\n }\"\n ></ng-container>\n } @placeholder {\n <div style=\"width: 100%; height: 80px\"></div>\n } }\n </div>\n </ng-template>\n <ng-template pTemplate=\"empty\">\n <span>{{ emptyResultsMessage || (\"OCX_DATA_LIST_GRID.EMPTY_RESULT\" | translate) }}</span>\n </ng-template>\n</p-dataView>\n} }\n\n<ng-template #defaultGridItem let-item>\n <div class=\"col-12 lg:col-6 xl:col-4 p-1 flex justify-content-center grid-border-divider\">\n <div class=\"data-grid-item card flex flex-column justify-content-between w-12 lg:w-11 mb-4 mt-4 align-self-stretch\">\n <div class=\"flex justify-content-center mb-3\">\n <img\n class=\"image\"\n src=\"{{ item.imagePath || (fallbackImagePath$ | async) }}\"\n (error)=\"imgError(item)\"\n alt=\"{{resolveFieldData(item, titleLineId)|| ''}}\"\n />\n </div>\n <div class=\"flex flex-row justify-content-between align-items-center\">\n <div class=\"data-grid-items flex-row\">\n <div class=\"item-name font-medium mr-3 text-2xl\">\n <ng-container *ngIf=\"hasViewPermission$ | async as hasViewPermission; else noViewPermission\">\n <a [routerLink]=\"\" (click)=\"onViewRow(item)\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-container>\n <ng-template #noViewPermission>\n <a [routerLink]=\"\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-template>\n </div>\n <ng-container\n [ngTemplateOutlet]=\"_gridItemSubtitleLines ? _gridItemSubtitleLines : defaultGridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div *ngIf=\"(gridMenuItems$ | async) as gridMenuItems\">\n <p-menu #menu [model]=\"gridMenuItems\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n (click)=\"setSelectedItem(item); menu.toggle($event)\"\n icon=\"pi pi-ellipsis-v\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n class=\"more-actions-menu-button menu-btn\"\n [attr.name]=\"'data-grid-item-menu-button'\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n ></button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultGridItemSubtitleLines let-item>\n @for (subtitleLineId of subtitleLineIds; track subtitleLineId) {\n <div class=\"subtitleLine edit-time text-xl my-3\">{{ resolveFieldData(item, subtitleLineId) }}</div>\n }\n</ng-template>\n<ng-template #defaultListItem let-item=\"item\" let-first=\"first\" let-columnTemplates=\"columnTemplates\">\n @if (columnTemplates) {\n <div class=\"col-12\">\n <div class=\"data-list-items p-1\" [ngClass]=\"{ 'list-border-divider': !first }\">\n <div class=\"item-name-row flex flex-row justify-content-between\">\n <div class=\"item-name mr-3 text-2xl font-medium align-content-center\">\n @if (titleLineId) {\n <span>{{ resolveFieldData(item, titleLineId) || '' }}</span>\n }\n </div>\n <div class=\"flex flex-row\">\n @if (viewItemObserved && (!viewActionVisibleField || fieldIsTruthy(item, viewActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-viewButton\"\n type=\"button\"\n icon=\"pi pi-eye\"\n pButton\n class=\"p-button-rounded p-button-text mb-1 mr-2 viewListItemButton\"\n [pTooltip]=\"(viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: !!viewActionEnabledField && !fieldIsTruthy(item, viewActionEnabledField)\n }\"\n [attr.aria-label]=\"(viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n (click)=\"onViewRow(item)\"\n *ocxIfPermission=\"viewPermission\"\n [disabled]=\"!!viewActionEnabledField && !fieldIsTruthy(item, viewActionEnabledField)\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } @if (editItemObserved && (!editActionVisibleField || fieldIsTruthy(item, editActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-editButton\"\n type=\"button\"\n class=\"p-button-rounded p-button-text mb-1 mr-2 editListItemButton\"\n icon=\"pi pi-pencil\"\n pButton\n [pTooltip]=\"(editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: !!editActionEnabledField && !fieldIsTruthy(item, editActionEnabledField)\n }\"\n [attr.aria-label]=\"(editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n (click)=\"onEditRow(item)\"\n *ocxIfPermission=\"editPermission\"\n [disabled]=\"!!editActionEnabledField && !fieldIsTruthy(item, editActionEnabledField)\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } @if (deleteItemObserved && (!deleteActionVisibleField || fieldIsTruthy(item, deleteActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-deleteButton\"\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-text p-button-danger mb-1 mr-2 deleteListItemButton\"\n pButton\n [pTooltip]=\"(deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: !!deleteActionEnabledField && !fieldIsTruthy(item, deleteActionEnabledField)\n }\"\n [attr.aria-label]=\"(deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n (click)=\"onDeleteRow(item)\"\n *ocxIfPermission=\"deletePermission\"\n [disabled]=\"!!deleteActionEnabledField && !fieldIsTruthy(item, deleteActionEnabledField)\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } @for (action of inlineListActions$ | async; track action) { @if ((!action.actionVisibleField ||\n fieldIsTruthy(item, action.actionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(item)\"\n [pTooltip]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(item, action.actionEnabledField))\n }\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(item, action.actionEnabledField))\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } } @if (hasVisibleOverflowMenuItems(item) | async) {\n <p-menu #menu [model]=\"(overflowListMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n class=\"p-button-rounded p-button-text\"\n [icon]=\"'pi pi-ellipsis-v'\"\n (click)=\"toggleOverflowMenu($event, menu, item)\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n [attr.name]=\"'data-list-overflow-item-menu-button'\"\n ></button>\n }\n </div>\n </div>\n <div class=\"text-base font-light my-1\">\n <ng-container\n [ngTemplateOutlet]=\"_listItemSubtitleLines ? _listItemSubtitleLines : defaultListItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div class=\"flex flex-wrap\">\n @for (col of getFilteredColumns(); track col) {\n <div class=\"w-12rem my-2 mr-2\">\n <div class=\"font-bold\" [ocxTooltipOnOverflow]=\"col.nameKey | translate\" tooltipPosition=\"top\">\n {{ col.nameKey | translate }}\n </div>\n <div\n [ocxTooltipOnOverflow]=\"col.columnType === columnType.TRANSLATION_KEY ? (resolveFieldData(item,col.id) | translate) : resolveFieldData(item, col.id)\"\n tooltipPosition=\"top\"\n >\n @defer(on viewport;){\n <ng-container\n [ngTemplateOutlet]=\"_listValue ? _listValue: defaultListValue\"\n [ngTemplateOutletContext]=\"{\n rowObject: item,\n column: col,\n columnTemplates: columnTemplates\n }\"\n >\n </ng-container>\n } @placeholder {\n <p-skeleton width=\"5rem\" />\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n</ng-template>\n<ng-template #defaultListItemSubtitleLines let-item=\"$implicit\">\n @for (subtitleLineId of subtitleLineIds; track subtitleLineId) {\n <div class=\"subtitleLine text-xl my-3\">{{ resolveFieldData(item, subtitleLineId) }}</div>\n }\n</ng-template>\n\n<ng-template #defaultListValue let-rowObject=\"rowObject\" let-column=\"column\" let-columnTemplates=\"columnTemplates\">\n @if (columnTemplates[column.id]) {\n <ng-container\n [ngTemplateOutlet]=\"columnTemplates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column\n }\"\n >\n </ng-container>\n }\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataColumnNameId } from '../../model/data-column-name-id.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { SelectChangeEvent } from 'primeng/select'\n\nexport type ListGridSort = { sortColumn: string; sortDirection: DataSortDirection }\nexport interface DataListGridSortingComponentState {\n sorting?: ListGridSort\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-data-list-grid-sorting',\n templateUrl: './data-list-grid-sorting.component.html',\n styleUrls: ['./data-list-grid-sorting.component.scss'],\n})\nexport class DataListGridSortingComponent implements OnInit {\n @Input() columns: DataTableColumn[] = []\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Output() sortChange: EventEmitter<string> = new EventEmitter()\n @Output() sortDirectionChange: EventEmitter<DataSortDirection> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataListGridSortingComponentState> = new EventEmitter()\n @Output() columnsChange: EventEmitter<string[]> = new EventEmitter()\n selectedSortingOption: DataColumnNameId | undefined\n dropdownOptions: DataColumnNameId[] = []\n\n ngOnInit(): void {\n this.columns.forEach((element) => this.dropdownOptions.push({ columnId: element.id, columnName: element.nameKey }))\n this.selectedSortingOption = this.dropdownOptions.find((e) => e.columnId === this?.sortField)\n this.emitComponentStateChange()\n }\n\n selectSorting(event: SelectChangeEvent): void {\n this._sortField$.next(event.value.columnId)\n this.sortChange.emit(event.value.columnId)\n this.emitComponentStateChange()\n }\n sortDirectionChanged(): void {\n const newSortDirection = this.nextSortDirection()\n this._sortDirection$.next(newSortDirection)\n this.sortDirectionChange.emit(newSortDirection)\n this.emitComponentStateChange()\n }\n\n nextSortDirection() {\n return this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n emitComponentStateChange() {\n this.componentStateChanged.emit({\n sorting: {\n sortColumn: this.sortField,\n sortDirection: this.sortDirection,\n },\n })\n }\n\n sortIcon() {\n switch (this.sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'pi-sort-amount-up'\n case DataSortDirection.DESCENDING:\n return 'pi-sort-amount-down'\n default:\n return 'pi-sort-alt'\n }\n }\n\n sortIconTitle() {\n return this.sortDirectionToTitle(this.sortDirection)\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.ASCENDING_TOOLTIP'\n case DataSortDirection.DESCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DESCENDING_TOOLTIP'\n default:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DEFAULT_TOOLTIP'\n }\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n <p-floatLabel variant=\"on\">\n <p-select\n id=\"dataListGridSortingDropdown\"\n inputId=\"dataListGridSortingDropdownInput\"\n [(ngModel)]=\"selectedSortingOption\"\n [options]=\"dropdownOptions\"\n (onChange)=\"selectSorting($event)\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.DROPDOWN.ARIA_LABEL' | translate)\"\n >\n <ng-template let-item #item> {{ item?.columnName ? (item.columnName | translate) : ''}} </ng-template>\n <ng-template let-item #selectedItem>\n {{ item?.columnName ? (item.columnName | translate) : ''}}\n </ng-template></p-select\n >\n <label for=\"dataListGridSortingDropdownInput\">{{ (\"OCX_LIST_GRID_SORT.DROPDOWN.LABEL\" | translate) }}</label>\n </p-floatLabel>\n <p-button\n id=\"dataListGridSortingButton\"\n type=\"button\"\n icon=\"pi {{sortIcon()}}\"\n styleClass=\"p-button-outlined\"\n (onClick)=\"sortDirectionChanged()\"\n [pTooltip]=\"(sortIconTitle() | translate)\"\n tooltipPosition=\"top\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.SORTING_BUTTON_ARIA_LABEL' | translate:{direction: (sortDirectionToTitle(nextSortDirection())) | translate})\"\n ></p-button>\n</div>\n","import { PrimeTemplate } from 'primeng/api'\n\nexport function findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n}\n","import { formatDate } from '@angular/common'\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n inject,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { isValidDate } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { MenuItem, PrimeTemplate, SelectItem } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { MultiSelectItem } from 'primeng/multiselect'\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n debounceTime,\n filter,\n first,\n map,\n mergeMap,\n of,\n shareReplay,\n switchMap,\n withLatestFrom,\n} from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { findTemplate } from '../../utils/template.utils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\n\nexport type Primitive = number | string | boolean | bigint | Date\nexport type Row = {\n id: string | number\n [columnId: string]: unknown\n}\n\nexport enum TemplateType {\n CELL = 'CELL',\n FILTERCELL = 'FILTERCELL',\n}\n\ninterface TemplatesData {\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>>\n idSuffix: Array<string>\n templateNames: Record<ColumnType, Array<string>>\n}\n\nexport type Sort = { sortColumn: string; sortDirection: DataSortDirection }\n\nexport interface DataTableComponentState {\n filters?: Filter[]\n sorting?: Sort\n selectedRows?: Row[]\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent extends DataSortBase implements OnInit, AfterContentInit {\n private readonly router = inject(Router)\n private readonly injector = inject(Injector)\n private readonly userService = inject(UserService)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n\n FilterType = FilterType\n TemplateType = TemplateType\n checked = true\n _rows$ = new BehaviorSubject<Row[]>([])\n @Input()\n get rows(): Row[] {\n return this._rows$.getValue()\n }\n set rows(value: Row[]) {\n !this._rows$.getValue().length\n this._rows$.next(value)\n }\n _selectionIds$ = new BehaviorSubject<(string | number)[]>([])\n @Input()\n set selectedRows(value: Row[] | string[] | number[]) {\n this._selectionIds$.next(\n value.map((row) => {\n if (typeof row === 'object') {\n return row.id\n }\n return row\n })\n )\n }\n\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n !this._filters$.getValue().length\n this._filters$.next(value)\n }\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortColumn$ = new BehaviorSubject<string>('')\n @Input()\n get sortColumn(): string {\n return this?._sortColumn$.getValue()\n }\n set sortColumn(value: string) {\n this?._sortColumn$.next(value)\n }\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columnFilterTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c, TemplateType.CELL))\n const filterObs = value.map((c) => this.getTemplate(c, TemplateType.FILTERCELL))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n this.columnFilterTemplates$ = combineLatest(filterObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n }\n @Input() clientSideFiltering = true\n @Input() clientSideSorting = true\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n\n _pageSizes$ = new BehaviorSubject<number[]>([10, 25, 50])\n @Input()\n get pageSizes(): number[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: number[]) {\n this._pageSizes$.next(value)\n }\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() name = ''\n @Input() deletePermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() selectionEnabledField: string | undefined\n @Input() allowSelectAll = true\n @Input() paginator = true\n\n _page$ = new BehaviorSubject<number>(0)\n @Input()\n get page(): number {\n return this._page$.getValue()\n }\n set page(value: number) {\n this._page$.next(value)\n }\n\n @Input() tableStyle: { [klass: string]: any } | undefined\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n @Input() stringCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringCell') stringCellChildTemplate: TemplateRef<any> | undefined\n get _stringCell(): TemplateRef<any> | undefined {\n return this.stringCellTemplate || this.stringCellChildTemplate\n }\n\n @Input() numberCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberCell') numberCellChildTemplate: TemplateRef<any> | undefined\n get _numberCell(): TemplateRef<any> | undefined {\n return this.numberCellTemplate || this.numberCellChildTemplate\n }\n\n @Input() dateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateCell') dateCellChildTemplate: TemplateRef<any> | undefined\n get _dateCell(): TemplateRef<any> | undefined {\n return this.dateCellTemplate || this.dateCellChildTemplate\n }\n\n @Input() relativeDateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateCell') relativeDateCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateCell(): TemplateRef<any> | undefined {\n return this.relativeDateCellTemplate || this.relativeDateCellChildTemplate\n }\n\n @Input() cellTemplate: TemplateRef<any> | undefined\n @ContentChild('cell') cellChildTemplate: TemplateRef<any> | undefined\n get _cell(): TemplateRef<any> | undefined {\n return this.cellTemplate || this.cellChildTemplate\n }\n @Input() translationKeyCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyCell') translationKeyCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyCell(): TemplateRef<any> | undefined {\n return this.translationKeyCellTemplate || this.translationKeyCellChildTemplate\n }\n @Input() stringFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringFilterCell') stringFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringFilterCell(): TemplateRef<any> | undefined {\n return this.stringFilterCellTemplate || this.stringFilterCellChildTemplate\n }\n @Input() numberFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberFilterCell') numberFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberFilterCell(): TemplateRef<any> | undefined {\n return this.numberFilterCellTemplate || this.numberFilterCellChildTemplate\n }\n @Input() dateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateFilterCell(): TemplateRef<any> | undefined {\n return this.dateFilterCellTemplate || this.dateFilterCellChildTemplate\n }\n @Input() relativeDateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateFilterCell') relativeDateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateFilterCellTemplate || this.relativeDateFilterCellChildTemplate\n }\n @Input() filterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('filterCell') filterCellChildTemplate: TemplateRef<any> | undefined\n get _filterCell(): TemplateRef<any> | undefined {\n return this.filterCellTemplate || this.filterCellChildTemplate\n }\n @Input() translationKeyFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyFilterCell') translationKeyFilterCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyFilterCellTemplate || this.translationKeyFilterCellChildTemplate\n }\n\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() viewTableRow = new EventEmitter<Row>()\n @Output() editTableRow = new EventEmitter<Row>()\n @Output() deleteTableRow = new EventEmitter<Row>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataTableComponentState>()\n\n displayedRows$: Observable<unknown[]> | undefined\n selectedRows$: Observable<unknown[]> | undefined\n\n currentFilterColumn$ = new BehaviorSubject<DataTableColumn | null>(null)\n currentEqualFilterOptions$: Observable<{ options: SelectItem[]; column: DataTableColumn | undefined }> | undefined\n currentEqualSelectedFilters$: Observable<unknown[]> | undefined\n truthyFilterOptions = [\n {\n key: 'OCX_DATA_TABLE.FILTER_YES',\n value: true,\n },\n {\n key: 'OCX_DATA_TABLE.FILTER_NO',\n value: false,\n },\n ]\n currentTruthySelectedFilters$: Observable<unknown[]> | undefined\n filterAmounts$: Observable<Record<string, number>> | undefined\n\n overflowActions$: Observable<DataAction[]>\n inlineActions$: Observable<DataAction[]>\n overflowMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n get viewTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewTableRow.observed\n }\n get editTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editTableRow.observed\n }\n get deleteTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteTableRow.observed\n }\n get anyRowActionObserved(): boolean {\n return this.viewTableRowObserved || this.editTableRowObserved || this.deleteTableRowObserved\n }\n\n get selectionChangedObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.selectionChangedObserved || dv?.selectionChanged.observed || this.selectionChanged.observed\n }\n\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n private cachedOverflowActions$: Observable<DataAction[]>\n private cachedOverflowMenuItemsVisibility$: Observable<boolean> | undefined\n\n constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.overflowActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.inlineActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowMenuItems$ = combineLatest([this.overflowActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n\n this.rowSelectable = this.rowSelectable.bind(this)\n\n this.cachedOverflowActions$ = this.overflowActions$.pipe(\n shareReplay(1) // Cache the last emitted value\n )\n }\n\n ngOnInit(): void {\n this.displayedRows$ = combineLatest([this._rows$, this._filters$, this._sortColumn$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([rows]) => this.flattenItems(rows))\n )\n this.currentTruthySelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id && currentFilterColumn.filterType === FilterType.IS_NOT_EMPTY\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualSelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUALS)\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualFilterOptions$ = combineLatest([this._rows$, this.currentFilterColumn$, this._filters$]).pipe(\n filter(\n ([_, currentFilterColumn, __]) =>\n !currentFilterColumn?.filterType || currentFilterColumn.filterType === FilterType.EQUALS\n ),\n mergeMap(([rows, currentFilterColumn, filters]) => {\n if (!currentFilterColumn?.id) {\n return of({ options: [], column: undefined })\n }\n\n const currentFilters = filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUALS)\n )\n .map((filter) => filter.value)\n\n const columnValues = rows\n .map((row) => row[currentFilterColumn?.id])\n .filter((value) => value !== null && value !== undefined && value !== '')\n\n if (currentFilterColumn.columnType === ColumnType.DATE) {\n return of({\n options: columnValues.map(\n (c) =>\n ({\n label: c,\n value: c,\n toFilterBy: formatDate(`${c}`, currentFilterColumn.dateFormat ?? 'medium', this.locale),\n }) as SelectItem\n ),\n column: currentFilterColumn,\n })\n }\n\n const translateObservable =\n this.columns.find((c) => c.id === currentFilterColumn?.id)?.columnType === ColumnType.TRANSLATION_KEY\n ? this.translateColumnValues(columnValues as string[])\n : of(Object.fromEntries(columnValues.map((cv) => [cv, cv])))\n return translateObservable.pipe(\n map((translatedValues) => {\n return Object.values(translatedValues)\n .concat(currentFilters)\n .filter((value, index, self) => self.indexOf(value) === index && value !== null && value !== '')\n .map(\n (filterOption) =>\n ({\n label: filterOption,\n value: filterOption,\n toFilterBy: filterOption,\n }) as SelectItem\n )\n }),\n map((options) => {\n return {\n options: options,\n column: currentFilterColumn,\n }\n })\n )\n })\n )\n this.filterAmounts$ = this._filters$.pipe(\n map((filters) =>\n filters\n .map((filter) => filter.columnId)\n .map((columnId) => [columnId, filters.filter((filter) => filter.columnId === columnId).length])\n ),\n map((amounts) => Object.fromEntries(amounts))\n )\n this.mapSelectionToRows()\n this.emitComponentStateChanged()\n }\n\n translateColumnValues(columnValues: string[]): Observable<any> {\n return columnValues.length ? this.translateService.get(columnValues as string[]) : of({})\n }\n\n emitComponentStateChanged(state: DataTableComponentState = {}) {\n this.displayedPageSize$\n .pipe(withLatestFrom(this._selectionIds$, this._rows$), first())\n .subscribe(([pageSize, selectedIds, rows]) => {\n this.componentStateChanged.emit({\n filters: this.filters,\n sorting: {\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n },\n pageSize,\n activePage: this.page,\n selectedRows: rows.filter((row) => selectedIds.includes(row.id)),\n ...state,\n })\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringCell':\n this.stringCellChildTemplate = item.template\n break\n case 'numberCell':\n this.numberCellChildTemplate = item.template\n break\n case 'dateCell':\n this.dateCellChildTemplate = item.template\n break\n case 'relativeDateCell':\n this.relativeDateCellChildTemplate = item.template\n break\n case 'cellTemplate':\n this.cellChildTemplate = item.template\n break\n case 'translationKeyCell':\n this.translationKeyCellChildTemplate = item.template\n break\n case 'stringFilterCell':\n this.stringFilterCellChildTemplate = item.template\n break\n case 'numberFilterCell':\n this.numberFilterCellChildTemplate = item.template\n break\n case 'dateFilterCell':\n this.dateFilterCellChildTemplate = item.template\n break\n case 'relativeDateFilterCell':\n this.relativeDateFilterCellChildTemplate = item.template\n break\n case 'filterCellTemplate':\n this.filterCellChildTemplate = item.template\n break\n case 'translationKeyFilterCell':\n this.translationKeyFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n onSortColumnClick(sortColumn: string) {\n const newSortDirection = this.columnNextSortDirection(sortColumn)\n\n this._sortColumn$.next(sortColumn)\n this._sortDirection$.next(newSortDirection)\n\n this.sorted.emit({ sortColumn: sortColumn, sortDirection: newSortDirection })\n this.emitComponentStateChanged({\n sorting: {\n sortColumn: sortColumn,\n sortDirection: newSortDirection,\n },\n })\n }\n\n columnNextSortDirection(sortColumn: string) {\n return sortColumn !== this.sortColumn\n ? this.sortStates[0]\n : this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n onDeleteRow(selectedTableRow: Row) {\n this.deleteTableRow.emit(selectedTableRow)\n }\n\n onViewRow(selectedTableRow: Row) {\n this.viewTableRow.emit(selectedTableRow)\n }\n\n onEditRow(selectedTableRow: Row) {\n this.editTableRow.emit(selectedTableRow)\n }\n\n onFilterChosen(column: DataTableColumn) {\n this.currentFilterColumn$.next(column)\n }\n\n onMultiselectFilterChange(column: DataTableColumn, event: any) {\n const filters = this.filters\n .filter((filter) => filter.columnId !== column.id)\n .concat(\n event.value.map((value: Primitive) => ({\n columnId: column.id,\n value,\n filterType: column.filterType,\n }))\n )\n if (this.clientSideFiltering) {\n this.filters = filters\n }\n this.filtered.emit(filters)\n this.emitComponentStateChanged({\n filters,\n })\n this.resetPage()\n }\n\n getSelectedFilters(columnId: string): unknown[] | undefined {\n return this.filters.filter((filter) => filter.columnId === columnId).map((filter) => filter.value)\n }\n\n sortIconTitle(sortColumn: string) {\n return this.sortDirectionToTitle(\n sortColumn !== this.sortDirection\n ? DataSortDirection.NONE\n : this.sortStates[this.sortStates.indexOf(this.sortDirection) % this.sortStates.length]\n )\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.ASCENDING_TITLE'\n case DataSortDirection.DESCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DESCENDING_TITLE'\n default:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DEFAULT_TITLE'\n }\n }\n\n mapSelectionToRows() {\n // Include _page$ to force fresh array references on page navigation\n // to satisfy PrimeNG DataTable selection tracking, because it needs new object references to detect changes\n this.selectedRows$ = combineLatest([this._selectionIds$, this._rows$, this._page$]).pipe(\n map(([selectedRowIds, rows, _]) => {\n return selectedRowIds\n .map((rowId) => rows.find((r) => r.id === rowId))\n .filter((row): row is Row => row !== undefined)\n })\n )\n }\n\n isRowSelectionDisabled(rowObject: Row) {\n return !!this.selectionEnabledField && !this.fieldIsTruthy(rowObject, this.selectionEnabledField)\n }\n\n rowSelectable(event: any) {\n return !this.isRowSelectionDisabled(event.data)\n }\n\n onSelectionChange(selection: Row[]) {\n let newSelectionIds = selection.map((row) => row.id)\n const rows = this._rows$.getValue()\n\n if (this.selectionEnabledField) {\n const disabledRowIds = rows.filter((r) => !this.fieldIsTruthy(r, this.selectionEnabledField)).map((row) => row.id)\n if (disabledRowIds.length > 0) {\n newSelectionIds = this.mergeWithDisabledKeys(newSelectionIds, disabledRowIds)\n }\n }\n\n this._selectionIds$.next(newSelectionIds)\n this.emitSelectionChanged()\n this.emitComponentStateChanged()\n }\n\n emitSelectionChanged() {\n this.selectionChanged.emit(this._rows$.getValue().filter((row) => this._selectionIds$.getValue().includes(row.id)))\n }\n\n mergeWithDisabledKeys(newSelectionIds: (string | number)[], disabledRowIds: (string | number)[]) {\n const previousSelectionIds = this._selectionIds$.getValue()\n const previouslySelectedAndDisabled = previousSelectionIds.filter((id) => disabledRowIds.includes(id))\n const disabledAndPreviouslyDeselected = disabledRowIds.filter((id) => !previousSelectionIds.includes(id))\n const updatedSelection = [...newSelectionIds]\n\n previouslySelectedAndDisabled.forEach((id) => {\n if (!updatedSelection.includes(id)) {\n updatedSelection.push(id)\n }\n })\n\n disabledAndPreviouslyDeselected.forEach((id) => {\n const index = updatedSelection.indexOf(id)\n if (index > -1) {\n updatedSelection.splice(index, 1)\n }\n })\n\n return updatedSelection\n }\n\n isSelected(row: Row) {\n return this._selectionIds$.getValue().includes(row.id)\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!ObjectUtils.resolveFieldData(object, key)\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n isDate(value: Date | string | number) {\n if (value instanceof Date) {\n return true\n }\n const d = new Date(value)\n return isValidDate(d)\n }\n\n cellTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: ['numberCell', 'numberTableCell', 'defaultNumberCell'],\n [ColumnType.RELATIVE_DATE]: ['relativeDateCell', 'relativeDateTableCell', 'defaultRelativeDateCell'],\n [ColumnType.TRANSLATION_KEY]: ['translationKeyCell', 'translationKeyTableCell', 'defaultTranslationKeyCell'],\n [ColumnType.STRING]: ['stringCell', 'stringTableCell', 'defaultStringCell'],\n },\n }\n\n filterTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableFilterCell', 'IdFilterCell', 'IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateFilterCell', 'dateTableFilterCell', 'dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: [\n 'numberFilterCell',\n 'numberTableFilterCell',\n 'numberCell',\n 'numberTableCell',\n 'defaultNumberCell',\n ],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterCell',\n 'relativeDateTableFilterCell',\n 'relativeDateCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateCell',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterCell',\n 'translationKeyTableFilterCell',\n 'defaultTranslationKeyCell',\n 'translationKeyCell',\n 'translationKeyTableCell',\n ],\n [ColumnType.STRING]: [\n 'stringFilterCell',\n 'stringTableFilterCell',\n 'stringCell',\n 'stringTableCell',\n 'defaultStringCell',\n ],\n },\n }\n\n templatesDataMap: Record<TemplateType, TemplatesData> = {\n [TemplateType.CELL]: this.cellTemplatesData,\n [TemplateType.FILTERCELL]: this.filterTemplatesData,\n }\n\n getColumnTypeTemplate(templates: PrimeTemplate[], columnType: ColumnType, templateType: TemplateType) {\n let template: TemplateRef<any> | undefined\n\n switch (templateType) {\n case TemplateType.CELL:\n switch (columnType) {\n case ColumnType.DATE:\n template = this._dateCell\n break\n case ColumnType.NUMBER:\n template = this._numberCell\n break\n case ColumnType.RELATIVE_DATE:\n template = this._relativeDateCell\n break\n case ColumnType.TRANSLATION_KEY:\n template = this._translationKeyCell\n break\n default:\n template = this._stringCell\n }\n break\n case TemplateType.FILTERCELL:\n switch (columnType) {\n case ColumnType.DATE:\n template = this._dateFilterCell\n break\n case ColumnType.NUMBER:\n template = this._numberFilterCell\n break\n case ColumnType.RELATIVE_DATE:\n template = this._relativeDateFilterCell\n break\n case ColumnType.TRANSLATION_KEY:\n template = this._translationKeyFilterCell\n break\n default:\n template = this._stringFilterCell\n }\n break\n }\n\n return (\n template ??\n findTemplate(templates, this.templatesDataMap[templateType].templateNames[columnType])?.template ??\n null\n )\n }\n\n getTemplate(column: DataTableColumn, templateType: TemplateType): Observable<TemplateRef<any> | null> {\n const templatesData = this.templatesDataMap[templateType]\n\n if (!templatesData.templatesObservables[column.id]) {\n templatesData.templatesObservables[column.id] = combineLatest([\n this.templates$,\n this.viewTemplates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, vt, pt]) => {\n const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n const columnTemplate = findTemplate(\n templates,\n templatesData.idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return this.getColumnTypeTemplate(templates, column.columnType, templateType)\n })\n )\n }\n return templatesData.templatesObservables[column.id]\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n getRowObjectFromMultiselectItem(value: MultiSelectItem, column: DataTableColumn): Record<string, string | undefined> {\n return {\n [column.id]: value.label,\n }\n }\n\n rowTrackByFunction = (item: any) => {\n return item.id\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[]): Observable<DataAction[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n}\n","<ng-template #actionColumn let-rowObject=\"localRowObject\">\n @if (anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0)\n {\n <td\n class=\"actions\"\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-left' : 'action-column-right'\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n >\n <div class=\"icon-button-row-wrapper\">\n @if (viewTableRowObserved && (!viewActionVisibleField || fieldIsTruthy(rowObject, viewActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-viewButton\"\n *ocxIfPermission=\"viewPermission\"\n [disabled]=\"!!viewActionEnabledField && !fieldIsTruthy(rowObject, viewActionEnabledField)\"\n pButton\n class=\"p-button-rounded p-button-text viewTableRowButton\"\n title=\"{{ 'OCX_DATA_TABLE.ACTIONS.VIEW' | translate }}\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.VIEW' | translate\"\n icon=\"pi pi-eye\"\n (click)=\"onViewRow(rowObject)\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } @if (editTableRowObserved && (!editActionVisibleField || fieldIsTruthy(rowObject, editActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-editButton\"\n *ocxIfPermission=\"editPermission\"\n [disabled]=\"!!editActionEnabledField && !fieldIsTruthy(rowObject, editActionEnabledField)\"\n pButton\n class=\"p-button-rounded p-button-text editTableRowButton\"\n title=\"{{ 'OCX_DATA_TABLE.ACTIONS.EDIT' | translate }}\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.EDIT' | translate\"\n icon=\"pi pi-pencil\"\n (click)=\"onEditRow(rowObject)\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } @if (deleteTableRowObserved && (!deleteActionVisibleField || fieldIsTruthy(rowObject,\n deleteActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-deleteButton\"\n *ocxIfPermission=\"deletePermission\"\n [disabled]=\"!!deleteActionEnabledField && !fieldIsTruthy(rowObject, deleteActionEnabledField)\"\n pButton\n class=\"p-button-rounded p-button-text p-button-danger deleteTableRowButton\"\n title=\"{{ 'OCX_DATA_TABLE.ACTIONS.DELETE' | translate }}\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.DELETE' | translate\"\n icon=\"pi pi-trash\"\n (click)=\"onDeleteRow(rowObject)\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } @for (action of inlineActions$ | async; track action) { @if ((!action.actionVisibleField ||\n fieldIsTruthy(rowObject, action.actionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(rowObject)\"\n [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField))\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } } @if (hasVisibleOverflowMenuItems(rowObject) | async) {\n <p-menu #menu [model]=\"(overflowMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n class=\"p-button-rounded p-button-text\"\n [icon]=\"'pi pi-ellipsis-v'\"\n (click)=\"toggleOverflowMenu($event, menu, rowObject)\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.MORE_ACTIONS' | translate\"\n [title]=\"'OCX_DATA_TABLE.MORE_ACTIONS' | translate\"\n [name]=\"'data-table-overflow-action-button'\"\n ></button>\n }\n </div>\n </td>\n }\n</ng-template>\n\n<ng-template #actionColumnHeader>\n @if (anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0)\n {\n <th\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-header-left' : 'action-column-header-right'\"\n >\n {{ 'OCX_DATA_TABLE.ACTIONS_COLUMN_NAME' | translate }}\n </th>\n }\n</ng-template>\n\n@if ((displayedPageSize$ | async); as displayedPageSize) { @if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n<p-table\n [value]=\"(displayedRows$ | async) ?? []\"\n responsiveLayout=\"scroll\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"this.pageSizes ?? []\"\n id=\"dataTable_{{name}}\"\n (selectionChange)=\"onSelectionChange($event)\"\n dataKey=\"id\"\n [rowTrackBy]=\"rowTrackByFunction\"\n [selection]=\"(selectedRows$ | async) ?? []\"\n [scrollable]=\"true\"\n scrollHeight=\"flex\"\n [style]=\"tableStyle\"\n paginatorDropdownAppendTo=\"body\"\n [rowSelectable]=\"rowSelectable\"\n tableStyleClass=\"h-full\"\n>\n <ng-template #header>\n <tr style=\"vertical-align: top\">\n @if (selectionChangedObserved) {\n <th style=\"width: 4rem\" scope=\"col\">\n @if (allowSelectAll) {\n <p-tableHeaderCheckbox\n pTooltip=\"{{'OCX_DATA_TABLE.SELECT_ALL_TOOLTIP' | translate}}\"\n ariaLabel=\"{{'OCX_DATA_TABLE.SELECT_ALL_ARIA_LABEL' | translate}}\"\n ></p-tableHeaderCheckbox>\n }\n </th>\n } @if (actionColumnPosition === 'left';) {\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n } @for (column of columns; track column) { @if (column.sortable || column.filterable) {\n <th scope=\"col\">\n <div\n class=\"table-header-wrapper flex flex-column justify-content-between align-items-start\"\n style=\"height: 100%\"\n >\n <span class=\"flex\" id=\"{{column.id}}-header-name\">{{ column.nameKey | translate }}</span>\n <span class=\"flex icon-button-header-wrapper\">\n @if (column.sortable) {\n <button\n class=\"pi sortButton pl-0\"\n [class.pi-sort-alt]=\"(column?.id === sortColumn && sortDirection === 'NONE') || column?.id !== sortColumn\"\n [class.pi-sort-amount-up]=\"column?.id === sortColumn && sortDirection === 'ASCENDING'\"\n [class.pi-sort-amount-down]=\"column?.id === sortColumn && sortDirection === 'DESCENDING'\"\n (click)=\"onSortColumnClick(column.id)\"\n [title]=\"(sortIconTitle(column.id) | translate)\"\n [attr.aria-label]=\"('OCX_DATA_TABLE.TOGGLE_BUTTON.ARIA_LABEL' | translate: { column: (column.nameKey | translate), direction: (sortDirectionToTitle(columnNextSortDirection(column.id)) | translate)})\"\n ></button>\n } @if (currentEqualFilterOptions$ | async; as equalFilterOptions) { @if (columnFilterTemplates$ | async; as\n columnFilterTemplates) { @if (column.filterable && (!column.filterType || column.filterType ===\n FilterType.EQUALS)) {\n <p-multiselect\n class=\"filterMultiSelect\"\n [options]=\"equalFilterOptions.column?.id === column.id ? equalFilterOptions.options : []\"\n [ngModel]=\"(currentEqualSelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\" \"\n appendTo=\"body\"\n filterBy=\"toFilterBy\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template #item let-value>\n @if (columnFilterTemplates[column.id]; as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromMultiselectItem(value, column),\n column: column\n }\"\n >\n </ng-container>\n }\n </ng-template>\n </p-multiselect>\n } } } @if (column.filterable && column.filterType === FilterType.IS_NOT_EMPTY) {\n <p-multiselect\n class=\"filterMultiSelect\"\n [options]=\"truthyFilterOptions\"\n [ngModel]=\"(currentTruthySelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\" \"\n appendTo=\"body\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template #item let-value> {{value.key | translate}} </ng-template>\n </p-multiselect>\n }\n </span>\n </div>\n </th>\n } @else {\n <th scope=\"col\">{{ column.nameKey | translate }}</th>\n } } @if (actionColumnPosition === 'right';) {\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n }\n </tr>\n </ng-template>\n <ng-template #body let-rowObject>\n @if (columnTemplates) {\n <tr>\n @if (selectionChangedObserved) {\n <td>\n @if (isRowSelectionDisabled(rowObject) && isSelected(rowObject)) {\n <p-checkbox\n [(ngModel)]=\"checked\"\n [binary]=\"true\"\n [disabled]=\"true\"\n [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate: { key: rowObject.id}\"\n ></p-checkbox>\n } @else {\n <p-tableCheckbox\n [value]=\"rowObject\"\n [disabled]=\"isRowSelectionDisabled(rowObject)\"\n [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate: { key: rowObject.id}\"\n ></p-tableCheckbox>\n }\n </td>\n } @if (actionColumnPosition === 'left';) {\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n } @for (column of columns; track column) {\n <td>\n @defer(on viewport){ @if (columnTemplates[column.id]) {\n <ng-container\n [ngTemplateOutlet]=\"\n _cell ? _cell: columnTemplates[column.id]\n \"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n } } @placeholder {\n <p-skeleton width=\"3rem\" />\n }\n </td>\n } @if (actionColumnPosition === 'right';) {\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <!-- If allowSelectAll is set to true, an additional column for checkbox selection is added and\n the colSpan needs to be increased by one so that the row is rendered the whole width of the table. -->\n <td\n [colSpan]=\"columns.length + ((anyRowActionObserved || this.additionalActions.length > 0) ? 1 : 0) +\n (allowSelectAll ? 1 : 0)\"\n >\n {{ emptyResultsMessage || (\"OCX_DATA_TABLE.EMPTY_RESULT\" | translate) }}\n </td>\n </tr>\n </ng-template>\n</p-table>\n} }\n\n<ng-template pTemplate=\"defaultStringCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id)}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Timestamp } from 'rxjs'\n\nexport function orderValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n return valuesWithTimestamp.sort((a, b) => b.timestamp - a.timestamp).map((obj) => obj.value)\n}\n\nfunction mergeValues(values: any[]) {\n return values.reduce((acc, curr) => {\n return { ...acc, ...curr }\n })\n}\n\nexport function orderAndMergeValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n const sortedValues = valuesWithTimestamp.sort((a, b) => a.timestamp - b.timestamp).map((obj) => obj.value)\n return mergeValues(sortedValues)\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core'\nimport { PrimeTemplate } from 'primeng/api'\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, map, startWith, timestamp } from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n DataListGridComponent,\n DataListGridComponentState,\n ListGridData,\n} from '../data-list-grid/data-list-grid.component'\nimport { DataTableComponent, DataTableComponentState, Row, Sort } from '../data-table/data-table.component'\n\nexport type RowListGridData = ListGridData & Row\n\nexport type DataViewComponentState = DataListGridComponentState & DataTableComponentState\n\n@Component({\n standalone: false,\n selector: 'ocx-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }],\n})\nexport class DataViewComponent implements DoCheck, OnInit, AfterContentInit {\n private readonly injector = inject(Injector)\n\n _dataListGridComponent: DataListGridComponent | undefined\n @ViewChild(DataListGridComponent) set listGrid(ref: DataListGridComponent | undefined) {\n this._dataListGridComponent = ref\n this.registerEventListenerForListGrid()\n }\n get listGrid(): DataListGridComponent | undefined {\n return this._dataListGridComponent\n }\n\n _dataTableComponent: DataTableComponent | undefined\n @ViewChild(DataTableComponent) set dataTable(ref: DataTableComponent | undefined) {\n this._dataTableComponent = ref\n this.registerEventListenerForDataTable()\n }\n get dataTable(): DataTableComponent | undefined {\n return this._dataTableComponent\n }\n\n dataTableComponentState$ = new ReplaySubject<DataTableComponentState>(1)\n dataListGridComponentState$ = new ReplaySubject<DataListGridComponentState>(1)\n\n @Input() deletePermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() data: RowListGridData[] = []\n @Input() name = 'Data table'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() layout: any = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortField: any = ''\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() page = 0\n @Input() totalRecordsOnServer: number | undefined\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() selectedRows: Row[] = []\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n\n @Input() stringTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableCell') stringTableCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCellTemplate || this.stringTableCellChildTemplate\n }\n\n @Input() numberTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCellTemplate || this.numberTableCellChildTemplate\n }\n\n @Input() dateTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate || this.dateTableCellChildTemplate\n }\n\n @Input() tableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableCell') tableCellChildTemplate: TemplateRef<any> | undefined\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCellTemplate || this.tableCellChildTemplate\n }\n\n @Input() translationKeyTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableCell') translationKeyTableCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCellTemplate || this.translationKeyTableCellChildTemplate\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() relativeDateTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableCell') relativeDateTableCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCellTemplate || this.relativeDateTableCellChildTemplate\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n @Input() tableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCellTemplate || this.tableFilterCellChildTemplate\n }\n @Input() dateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCellTemplate || this.dateTableFilterCellChildTemplate\n }\n @Input() relativeDateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCellTemplate || this.relativeDateTableFilterCellChildTemplate\n }\n @Input() translationKeyTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCellChildTemplate:\n | TemplateRef<any>\n | undefined\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCellTemplate || this.translationKeyTableFilterCellChildTemplate\n }\n @Input() stringTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCellTemplate || this.stringTableFilterCellChildTemplate\n }\n @Input() numberTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCellTemplate || this.numberTableFilterCellChildTemplate\n }\n\n @Input() additionalActions: DataAction[] = []\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataViewComponentState>()\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n IsEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n templatesForChildren$: Observable<QueryList<PrimeTemplate> | undefined> = combineLatest([\n this.templates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, pt]) => {\n const ql = new QueryList<PrimeTemplate>()\n ql.reset([...(t?.toArray() ?? []), ...(pt?.toArray() ?? [])])\n return ql\n })\n )\n\n get viewItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.deleteItem.observed || this.deleteItem.observed\n }\n get selectionChangedObserved(): boolean {\n return (\n this.injector.get('InteractiveDataViewComponent', null)?.selectionChanged.observed ||\n this.selectionChanged.observed\n )\n }\n\n ngOnInit(): void {\n this.firstColumnId = this.columns[0]?.id\n\n let dataTableComponentState$: Observable<DataTableComponentState | Record<string, never>> =\n this.dataTableComponentState$\n let dataListGridComponentState$: Observable<DataListGridComponentState | Record<string, never>> =\n this.dataListGridComponentState$\n if (this.layout === 'table') {\n dataListGridComponentState$ = dataListGridComponentState$.pipe(startWith({}))\n } else {\n dataTableComponentState$ = dataTableComponentState$.pipe(startWith({}))\n }\n\n combineLatest([dataTableComponentState$.pipe(timestamp()), dataListGridComponentState$.pipe(timestamp())])\n .pipe(\n map((componentStates) => {\n return orderAndMergeValuesByTimestamp(componentStates)\n })\n )\n .subscribe((val) => {\n this.componentStateChanged.emit(val)\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringTableCell':\n this.stringTableCellChildTemplate = item.template\n break\n case 'numberTableCell':\n this.numberTableCellChildTemplate = item.template\n break\n case 'dateTableCell':\n this.dateTableCellChildTemplate = item.template\n break\n case 'tableCell':\n this.tableCellChildTemplate = item.template\n break\n case 'translationKeyTableCell':\n this.translationKeyTableCellChildTemplate = item.template\n break\n case 'gridItemSubtitleLines':\n this.gridItemSubtitleLinesChildTemplate = item.template\n break\n case 'listItemSubtitleLines':\n this.listItemSubtitleLinesChildTemplate = item.template\n break\n case 'gridItem':\n this.gridItemChildTemplate = item.template\n break\n case 'listItem':\n this.listItemChildTemplate = item.template\n break\n case 'relativeDateTableCell':\n this.relativeDateTableCellChildTemplate = item.template\n break\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n case 'tableFilterCell':\n this.tableFilterCellChildTemplate = item.template\n break\n case 'dateTableFilterCell':\n this.dateTableFilterCellChildTemplate = item.template\n break\n case 'relativeDateTableFilterCell':\n this.relativeDateTableFilterCellChildTemplate = item.template\n break\n case 'translationKeyTableFilterCell':\n this.translationKeyTableFilterCellChildTemplate = item.template\n break\n case 'stringTableFilterCell':\n this.stringTableFilterCellChildTemplate = item.template\n break\n case 'numberTableFilterCell':\n this.numberTableFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n ngDoCheck(): void {\n this.registerEventListenerForDataTable()\n this.registerEventListenerForListGrid()\n }\n\n registerEventListenerForListGrid() {\n if (this.layout !== 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataListGridComponent?.deleteItem.observed) {\n this._dataListGridComponent?.deleteItem.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataListGridComponent?.viewItem.observed) {\n this._dataListGridComponent?.viewItem.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataListGridComponent?.editItem.observed) {\n this._dataListGridComponent?.editItem.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n }\n }\n\n registerEventListenerForDataTable() {\n if (this.layout === 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataTableComponent?.deleteTableRow.observed) {\n this._dataTableComponent?.deleteTableRow.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataTableComponent?.viewTableRow.observed) {\n this._dataTableComponent?.viewTableRow.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataTableComponent?.editTableRow.observed) {\n this._dataTableComponent?.editTableRow.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n if (this.selectionChangedObserved) {\n if (!this._dataTableComponent?.selectionChanged.observed) {\n this._dataTableComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n deletingElement(event: any) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(event)\n }\n }\n\n viewingElement(event: any) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(event)\n }\n }\n editingElement(event: any) {\n if (this.IsEditItemObserved) {\n this.editItem.emit(event)\n }\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChangedObserved) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n}\n","@if (layout !== 'table') {\n<div>\n <ocx-data-list-grid\n #ocxdatalistgrid\n [name]=\"name\"\n [data]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"true\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataListGridComponentState$.next($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n @if (_listItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_listItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItemSubtitleLines let-item>\n @if (_gridItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_gridItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItem let-item>\n @if (_gridItem) {\n <ng-container [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listItem let-item>\n @if (_listItem) {\n <ng-container [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_listValue) {\n <ng-container [ngTemplateOutlet]=\"_listValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateListValue) {\n <ng-container [ngTemplateOutlet]=\"_dateListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n</div>\n} @if (layout === 'table') {\n<div>\n <ocx-data-table\n #ocxdatatable\n [rows]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortColumn]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataTableComponentState$.next($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [dateCellTemplate]=\"_dateTableCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_relativeDateTableCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_translationKeyTableCell ? translationKeyCell : undefined\"\n [filterCellTemplate]=\"_tableFilterCell ? filterCell : undefined\"\n [dateFilterCellTemplate]=\"_dateTableFilterCell ? dateFilterCell : undefined\"\n [numberFilterCellTemplate]=\"_numberTableFilterCell ? numberFilterCell : undefined\"\n [stringFilterCellTemplate]=\"_stringTableFilterCell ? stringFilterCell : undefined\"\n [relativeDateFilterCellTemplate]=\"_relativeDateTableFilterCell ? relativeDateFilterCell : undefined\"\n [translationKeyFilterCellTemplate]=\"_translationKeyTableFilterCell ? translationKeyFilterCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n [allowSelectAll]=\"tableAllowSelectAll\"\n [selectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableCell) {\n <ng-container [ngTemplateOutlet]=\"_dateTableCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_tableCell) {\n <ng-container [ngTemplateOutlet]=\"_tableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #stringFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #filterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_tableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_tableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #dateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #numberFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #relativeDateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #translationKeyFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n</div>\n}\n","export class ColorUtils {\n public static calculatePoint(\n i: number,\n intervalSize: number,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd, useEndAsStart } = colorRangeInfo\n return useEndAsStart ? colorEnd - i * intervalSize : colorStart + i * intervalSize\n }\n\n public static interpolateColors(\n dataLength: number,\n colorScale: (arg0: any) => any,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd } = colorRangeInfo\n const colorRange = colorEnd - colorStart\n const intervalSize = colorRange / dataLength\n let i, colorPoint\n const colorArray = []\n\n for (i = 0; i < dataLength; i++) {\n colorPoint = this.calculatePoint(i, intervalSize, colorRangeInfo)\n colorArray.push(colorScale(colorPoint))\n }\n\n return colorArray\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { ChartData, ChartOptions } from 'chart.js'\nimport * as d3 from 'd3-scale-chromatic'\nimport { PrimeIcons } from 'primeng/api'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ColorUtils } from '../../utils/colorutils'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\nexport interface DiagramLayouts {\n id: string\n icon: PrimeIcon\n layout: DiagramType\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nexport interface DiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\nconst allDiagramTypes: DiagramLayouts[] = [\n {\n id: 'diagram-pie',\n icon: PrimeIcons.CHART_PIE,\n layout: DiagramType.PIE,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n },\n {\n id: 'diagram-horizontal-bar',\n icon: PrimeIcons.BARS,\n layout: DiagramType.HORIZONTAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n },\n {\n id: 'diagram-vertical-bar',\n icon: PrimeIcons.CHART_BAR,\n layout: DiagramType.VERTICAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n },\n]\n\n@Component({\n standalone: false,\n selector: 'ocx-diagram',\n templateUrl: './diagram.component.html',\n styleUrls: ['./diagram.component.scss'],\n})\nexport class DiagramComponent implements OnInit, OnChanges {\n private translateService = inject(TranslateService)\n\n @Input() data: DiagramData[] | undefined\n @Input() sumKey = 'OCX_DIAGRAM.SUM'\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n private _diagramType: DiagramType = DiagramType.PIE\n selectedDiagramType: DiagramLayouts | undefined\n public chartType: 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' = 'pie'\n @Input()\n get diagramType(): DiagramType {\n return this._diagramType\n }\n set diagramType(value: DiagramType) {\n this._diagramType = value\n this.selectedDiagramType = allDiagramTypes.find((v) => v.layout === value)\n this.chartType = this.diagramTypeToChartType(value)\n }\n private _supportedDiagramTypes: DiagramType[] = []\n @Input()\n get supportedDiagramTypes(): DiagramType[] {\n return this._supportedDiagramTypes\n }\n set supportedDiagramTypes(value: DiagramType[]) {\n this._supportedDiagramTypes = value\n this.shownDiagramTypes = allDiagramTypes.filter((vl) => this.supportedDiagramTypes.includes(vl.layout))\n }\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DiagramComponentState> = new EventEmitter()\n chartOptions: ChartOptions | undefined\n chartData: ChartData | undefined\n amountOfData: number | undefined | null\n shownDiagramTypes: DiagramLayouts[] = []\n // Changing the colorRangeInfo, will change the range of the color palette of the diagram.\n private colorRangeInfo = {\n colorStart: 0,\n colorEnd: 1,\n useEndAsStart: false,\n }\n // Changing the colorScale, will change the thematic color appearance of the diagram.\n private colorScale = d3.interpolateCool\n\n ngOnChanges(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n ngOnInit(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n\n public generateChart(colorScale: any, colorRangeInfo: any) {\n if (this.data) {\n const inputData = this.data.map((diagramData) => diagramData.value)\n\n this.amountOfData = this.data.reduce((acc, current) => acc + current.value, 0)\n const COLORS = this.generateColors(this.data, colorScale, colorRangeInfo)\n this.chartData = {\n labels: this.data.map((data) => data.label),\n datasets: [\n {\n data: inputData,\n backgroundColor: COLORS,\n },\n ],\n }\n }\n\n this.chartOptions = {\n plugins: {\n legend: {\n position: 'bottom',\n },\n },\n maintainAspectRatio: false,\n ...(this._diagramType === DiagramType.VERTICAL_BAR && {\n plugins: { legend: { display: false } },\n scales: { y: { ticks: { precision: 0 } } },\n }),\n ...(this._diagramType === DiagramType.HORIZONTAL_BAR && {\n indexAxis: 'y',\n plugins: { legend: { display: false } },\n scales: { x: { ticks: { precision: 0 } } },\n }),\n }\n }\n\n generateColors(data: DiagramData[], colorScale: any, colorRangeInfo: any) {\n const dataColors = data.map((diagramData) => diagramData.backgroundColor)\n if (dataColors.filter((v) => v !== undefined).length === data.length) {\n return dataColors\n } else if (this.fillMissingColors) {\n // it is intended to generate more colors than needed, so interval for generated colors is same as amount of items on the diagram\n const interpolatedColors = interpolateColors(dataColors.length, colorScale, colorRangeInfo)\n let interpolatedIndex = 0\n return dataColors.map((color) => (color === undefined ? interpolatedColors[interpolatedIndex++] : color))\n } else {\n return interpolateColors(data.length, colorScale, colorRangeInfo)\n }\n }\n\n generateTotal(data: DiagramData[]): number {\n return data.reduce((acc, current) => acc + current.value, 0)\n }\n\n generateDiagramValueString(data: DiagramData[]): string {\n return data.map((item) => `${item.label}:${item.value}`).join(', ')\n }\n\n private diagramTypeToChartType(\n value: DiagramType\n ): 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' {\n if (value === DiagramType.PIE) return 'pie'\n else if (value === DiagramType.HORIZONTAL_BAR || value === DiagramType.VERTICAL_BAR) return 'bar'\n return 'pie'\n }\n\n dataClicked(event: []) {\n this.dataSelected.emit(event.length)\n }\n\n onDiagramTypeChanged(event: any) {\n this.diagramType = event.value.layout\n this.generateChart(this.colorScale, this.colorRangeInfo)\n this.diagramTypeChanged.emit(event.value.layout)\n this.componentStateChanged.emit({\n activeDiagramType: event.value.layout,\n })\n }\n}\nfunction interpolateColors(amountOfData: number, colorScale: any, colorRangeInfo: any) {\n return ColorUtils.interpolateColors(amountOfData, colorScale, colorRangeInfo)\n}\n","@if (this.data) {\n @if (shownDiagramTypes.length > 1) {\n <div class=\"flex justify-content-center pb-2\">\n <p-selectbutton\n [options]=\"shownDiagramTypes\"\n [(ngModel)]=\"selectedDiagramType\"\n optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\"\n name=\"diagram-type-select-button\"\n [allowEmpty]=\"false\"\n >\n <ng-template #item let-item>\n <i\n [class]=\"item.icon\"\n [pTooltip]=\"item.tooltipKey | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></i>\n <label style=\"display: none\" id=\"{{item.id}}\"> {{item.label ? item.label : item.labelKey | translate}} </label>\n </ng-template>\n </p-selectbutton>\n </div>\n }\n <div class=\"w-full flex justify-content-center\">\n <p-chart\n id=\"diagram\"\n [type]=\"chartType\"\n [data]=\"chartData\"\n [responsive]=\"false\"\n [options]=\"chartOptions\"\n (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data), valueString: generateDiagramValueString(data)}\"\n ></p-chart>\n </div>\n <div class=\"w-full flex justify-content-center mt-2 sumKey\">\n <p class=\"text-md font-medium text-700\">\n <span name=\"sumLabel\"> {{ sumKey | translate }}</span> : <span name=\"amountOfData\">{{ amountOfData}}</span>\n </p>\n </div>\n}\n\n@if (!this.data) {\n <div class=\"w-full flex justify-content-center\">\n <p-message severity=\"info\" text=\"{{ 'OCX_DIAGRAM.NO_DATA' | translate }}\"></p-message>\n </div>\n}\n","import { ColumnFilterDataSelectOptions, Filter } from '../model/filter.model'\n\nexport function limit(columnFilterData: Filter[], amount: number, options: ColumnFilterDataSelectOptions): Filter[] {\n return options.reverse\n ? columnFilterData.slice(-amount, columnFilterData.length).reverse()\n : columnFilterData.slice(0, amount)\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { BehaviorSubject, Observable, combineLatest, debounceTime, map } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { PrimeTemplate } from 'primeng/api'\nimport { findTemplate } from '../../utils/template.utils'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { limit } from '../../utils/filter.utils'\nimport { Popover } from 'primeng/popover'\nimport { Row } from '../data-table/data-table.component'\nimport { Button } from 'primeng/button'\n\nexport type FilterViewDisplayMode = 'chips' | 'button'\nexport type FilterViewRowDisplayData = {\n id: string\n column: string\n value: unknown\n}\nexport type FilterViewRowDetailData = FilterViewRowDisplayData & {\n valueColumnId: string\n}\n\nexport interface FilterViewComponentState {\n filters?: Filter[]\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-filter-view',\n templateUrl: './filter-view.component.html',\n styleUrls: ['./filter-view.component.scss'],\n})\nexport class FilterViewComponent implements OnInit {\n ColumnType = ColumnType\n FilterType = FilterType\n filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this.filters$.getValue()\n }\n set filters(value: Filter[]) {\n this.filters$.next(value)\n }\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n const chipObs = value.map((c) => this.getTemplate(c, this.chipTemplateNames, this.chipTemplates, this.chipIdSuffix))\n this.chipTemplates$ = combineLatest(chipObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n\n const tableTemplateColumns = value.concat(this.columnFilterTableColumns)\n this.tableTemplates$ = combineLatest(\n tableTemplateColumns.map((c) =>\n this.getTemplate(c, this.tableTemplateNames, this.tableTemplates, this.tableIdSuffix)\n )\n ).pipe(map((values) => Object.fromEntries(tableTemplateColumns.map((c, i) => [c.id, values[i]]))))\n }\n\n columnFilterDataRows$: Observable<FilterViewRowDisplayData[]> | undefined\n\n @Input() displayMode: FilterViewDisplayMode = 'button'\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() chipStyleClass = ''\n @Input() tableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() panelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n\n @Output() filtered: EventEmitter<Filter[]> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<FilterViewComponentState> = new EventEmitter()\n\n columnFilterTableColumns: DataTableColumn[] = [\n {\n id: 'column',\n columnType: ColumnType.TRANSLATION_KEY,\n nameKey: 'OCX_FILTER_VIEW.TABLE.COLUMN_NAME',\n },\n { id: 'value', columnType: ColumnType.STRING, nameKey: 'OCX_FILTER_VIEW.TABLE.VALUE' },\n {\n id: 'actions',\n columnType: ColumnType.STRING,\n nameKey: 'OCX_FILTER_VIEW.TABLE.ACTIONS',\n },\n ]\n\n ngOnInit(): void {\n this.columnFilterDataRows$ = combineLatest([this.filters$, this.columns$]).pipe(\n map(([filters, columns]) => {\n const columnIds = columns.map((c) => c.id)\n return filters\n .map((f) => {\n const filterColumn = this.getColumnForFilter(f, columns)\n if (!filterColumn) return undefined\n return {\n id: `${f.columnId}-${f.value}`,\n column: filterColumn.nameKey,\n value: f.value,\n valueColumnId: filterColumn.id,\n } satisfies FilterViewRowDetailData\n })\n .filter((v): v is FilterViewRowDetailData => v !== undefined)\n .slice()\n .sort((a, b) => columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId))\n })\n )\n this.componentStateChanged.emit({\n filters: this.filters,\n })\n }\n\n @ViewChild(Popover) panel!: Popover\n @ViewChild('manageButton') manageButton!: Button\n trigger: HTMLElement | undefined\n\n fitlerViewNoSelection: TemplateRef<any> | undefined\n get _fitlerViewNoSelection(): TemplateRef<any> | undefined {\n return this.fitlerViewNoSelection\n }\n\n filterViewChipContent: TemplateRef<any> | undefined\n get _filterViewChipContent(): TemplateRef<any> | undefined {\n return this.filterViewChipContent\n }\n\n filterViewShowMoreChip: TemplateRef<any> | undefined\n get _filterViewShowMoreChip(): TemplateRef<any> | undefined {\n return this.filterViewShowMoreChip\n }\n\n defaultTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set defaultTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.defaultTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set templates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n value?.forEach((item) => {\n switch (item.getType()) {\n case 'fitlerViewNoSelection':\n this.fitlerViewNoSelection = item.template\n break\n case 'filterViewChipContent':\n this.filterViewChipContent = item.template\n break\n case 'filterViewShowMoreChip':\n this.filterViewShowMoreChip = item.template\n break\n }\n })\n }\n\n chipTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n tableTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n\n chipIdSuffix: Array<string> = ['IdFilterChip', 'IdTableFilterCell', 'IdTableCell']\n chipTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterChipValue', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterChipValue', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterChipValue',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterChipValue',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.STRING]: ['stringFilterChipValue', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n chipTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n tableIdSuffix: Array<string> = ['IdFilterViewCell', 'IdTableFilterCell', 'IdTableCell']\n tableTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterViewCell', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterViewCell', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterViewCell',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKey',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.STRING]: ['stringFilterViewCell', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n tableTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n getTemplate(\n column: DataTableColumn,\n templateNames: Record<ColumnType, Array<string>>,\n templates: Record<string, Observable<TemplateRef<any> | null>>,\n idSuffix: Array<string>\n ): Observable<TemplateRef<any> | null> {\n if (!templates[column.id]) {\n templates[column.id] = combineLatest([this.defaultTemplates$, this.parentTemplates$]).pipe(\n map(([dt, t]) => {\n const templates = [...(dt ?? []), ...(t ?? [])]\n const columnTemplate = findTemplate(\n templates,\n idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return findTemplate(templates, templateNames[column.columnType])?.template ?? null\n }),\n debounceTime(50)\n )\n }\n return templates[column.id]\n }\n\n onResetFilersClick() {\n this.filters = []\n this.filtered.emit([])\n this.componentStateChanged.emit({\n filters: [],\n })\n }\n\n onChipRemove(filter: Filter) {\n const filters = this.filters.filter((f) => f.value !== filter.value)\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n onFilterDelete(row: Row) {\n const filters = this.filters.filter((f) => !(f.columnId === row['valueColumnId'] && f.value === row['value']))\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n focusTrigger() {\n if (this.trigger?.id === 'ocxFilterViewShowMore') {\n this.trigger?.focus()\n } else {\n this.manageButton.el.nativeElement.firstChild.focus()\n }\n }\n\n showPanel(event: any) {\n this.trigger = event.srcElement\n this.panel.toggle(event)\n }\n\n getColumnForFilter(filter: Filter, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === filter.columnId)\n }\n\n getColumn(colId: string, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === colId)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n getRowObjectFromFiterData(filter: Filter): Record<string, unknown> {\n return {\n [filter.columnId]: filter.value,\n }\n }\n\n getRowForValueColumn(row: Row): Row {\n return {\n id: row.id,\n [row['valueColumnId'] as string]: row['value'],\n }\n }\n}\n","@if (columns$ | async; as columns) { @if (filters$ | async; as filters) {\n<div class=\"flex flex-wrap align-items-center gap-2\">\n @if (displayMode === 'chips') {\n <ng-container *ocxIfBreakpoint=\"'desktop'; elseTemplate: noChipsContent\">\n @if (selectDisplayedChips(filters, columns); as selectedFilters) {\n <p-button\n #chipFilterResetButton\n id=\"ocxFilterViewReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n @if (filters.length <= 0) { @if (_fitlerViewNoSelection) {\n <ng-container [ngTemplateOutlet]=\"_fitlerViewNoSelection\"> </ng-container>\n } @else {\n <span id=\"ocxFilterViewNoFilters\">{{ 'OCX_FILTER_VIEW.NO_FILTERS' | translate }}</span>\n } } @if ((chipTemplates$ | async) ?? {}; as templates) { @for (filter of selectedFilters; track filter) { @if\n (getColumnForFilter(filter, columns); as column) {\n <p-chip [removable]=\"true\" (onRemove)=\"onChipRemove(filter)\" [styleClass]=\"chipStyleClass\">\n @if (_filterViewChipContent) {\n <ng-container\n [ngTemplateOutlet]=\"_filterViewChipContent\"\n [ngTemplateOutletContext]=\"{\n filter: filter,\n column: column,\n filterValueTemplates: templates,\n truthyTemplate: truthyTemplate,\n filterValueTemplate: chipTemplate\n }\"\n >\n </ng-container>\n } @else { @if (columns$ | async; as columns) {\n <span style=\"white-space: nowrap\" class=\"p-chip-text flex flex-nowrap\"\n >{{column?.nameKey ?? '' | translate }}:@if (filter.filterType === FilterType.EQUALS || !filter.filterType) {\n <ng-container\n [ngTemplateOutlet]=\"chipTemplate\"\n [ngTemplateOutletContext]=\"{\n templates: templates,\n filter: filter,\n column: column\n }\"\n ></ng-container>\n } @if (filter.filterType === FilterType.IS_NOT_EMPTY) {\n <ng-container\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: filter.value\n }\"\n ></ng-container>\n }\n </span>\n } }\n </p-chip>\n } } @if (selectedFilters.length < filters.length) {\n <p-chip\n #showMoreChip\n id=\"ocxFilterViewShowMore\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"showPanel($event)\"\n class=\"cursor-pointer filter-view-focusable\"\n (keydown.enter)=\"showPanel($event)\"\n (keydown.space)=\"showPanel($event)\"\n >\n @if (_filterViewShowMoreChip) {\n <ng-container\n [ngTemplateOutlet]=\"_filterViewShowMoreChip\"\n [ngTemplateOutletContext]=\"{\n $implicit: filters.length - selectedFilters.length\n }\"\n >\n </ng-container>\n } @else {\n <span class=\"p-chip-text flex flex-nowrap\"> +{{filters.length - selectedFilters.length}} </span>\n }\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </p-chip>\n } } }\n </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"noChipsContent\"></ng-container>\n }\n <ng-template #noChipsContent>\n <p-button\n #manageButton\n id=\"ocxFilterViewManage\"\n (onClick)=\"showPanel($event)\"\n icon=\"pi pi-sliders-h\"\n label=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.LABEL' | translate }}\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [badge]=\"filters.length.toString()\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </ng-template>\n <ng-template #filterTablePanel>\n @if (tableTemplates$ | async; as templates) {\n <p-popover #op [style]=\"panelStyle\" (onHide)=\"focusTrigger()\">\n <ng-template pTemplate=\"content\">\n <div pFocusTrap>\n <div class=\"flex justify-content-between align-items-center mb-2\">\n <span class=\"text-2xl font-medium\">{{'OCX_FILTER_VIEW.PANEL_TITLE' | translate}}</span>\n <div>\n <p-button\n pAutoFocus\n [autofocus]=\"true\"\n id=\"ocxFilterViewOverlayReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n </div>\n </div>\n <ocx-data-table\n id=\"ocxFilterViewDataTable\"\n [rows]=\"(columnFilterDataRows$ | async) ?? []\"\n [columns]=\"columnFilterTableColumns\"\n [emptyResultsMessage]=\"'OCX_FILTER_VIEW.NO_FILTERS' | translate\"\n [paginator]=\"false\"\n [tableStyle]=\"tableStyle\"\n >\n <ng-template pTemplate=\"columnIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n [ngTemplateOutlet]=\"templates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n </ng-template>\n <ng-template pTemplate=\"valueIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n @if (getColumn(rowObject['valueColumnId'], columns); as valueColumn) { @if (!valueColumn.filterType ||\n valueColumn.filterType === FilterType.EQUALS) {\n <ng-container\n [ngTemplateOutlet]=\"templates[valueColumn.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowForValueColumn(rowObject),\n column: valueColumn\n }\"\n >\n </ng-container>\n } @if (valueColumn.filterType === FilterType.IS_NOT_EMPTY) {\n <ng-container\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: resolveFieldData(rowObject, column.id)\n }\"\n >\n </ng-container>\n } }\n </ng-template>\n <ng-template pTemplate=\"actionsIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <div>\n <button\n pButton\n class=\"p-button-rounded p-button-danger p-button-text\"\n title=\"{{ 'OCX_FILTER_VIEW.TABLE.REMOVE_FILTER_TITLE' | translate }}\"\n [attr.aria-label]=\"'OCX_FILTER_VIEW.TABLE.REMOVE_FILTER_ARIA_LABEL' | translate\"\n icon=\"pi pi-trash\"\n (click)=\"onFilterDelete(rowObject)\"\n ></button>\n </div>\n </ng-template>\n </ocx-data-table>\n </div>\n </ng-template>\n </p-popover>\n }\n </ng-template>\n</div>\n} }\n\n<ng-template #chipTemplate let-templates=\"templates\" let-filter=\"filter\" let-column=\"column\">\n @if (templates[column.id]; as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromFiterData(filter),\n column: column\n }\"\n >\n </ng-container>\n }\n</ng-template>\n\n<ng-template #truthyTemplate let-value=\"value\">\n @if (value) { {{'OCX_FILTER_VIEW.FILTER_YES' | translate}} } @if (!value) { {{'OCX_FILTER_VIEW.FILTER_NO' |\n translate}} }\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id)}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultCustomValue\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }}</ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { BehaviorSubject, Observable, combineLatest, map, mergeMap, of } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DiagramColumn } from '../../model/diagram-column'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ObjectUtils } from '../../utils/objectutils'\n\nexport interface GroupByCountDiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-group-by-count-diagram',\n templateUrl: './group-by-count-diagram.component.html',\n})\nexport class GroupByCountDiagramComponent implements OnInit {\n private translateService = inject(TranslateService)\n\n @Input() sumKey = 'SEARCH.SUMMARY_TITLE'\n @Input() diagramType = DiagramType.PIE\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n @Input() supportedDiagramTypes: DiagramType[] = []\n private _data$ = new BehaviorSubject<unknown[]>([])\n @Input()\n get data(): unknown[] {\n return this._data$.getValue()\n }\n set data(value: unknown[]) {\n this._data$.next(value)\n }\n diagramData$: Observable<DiagramData[]> | undefined\n\n private _columnType$ = new BehaviorSubject<ColumnType>(ColumnType.STRING)\n @Input()\n get columnType(): ColumnType {\n return this._columnType$.getValue()\n }\n set columnType(value: ColumnType) {\n this._columnType$.next(value)\n }\n\n private _columnField$ = new BehaviorSubject<string>('')\n @Input()\n get columnField(): string {\n return this._columnField$.getValue()\n }\n set columnField(value: string) {\n this._columnField$.next(value)\n }\n\n @Input()\n get column(): DiagramColumn {\n return { columnType: this.columnType, id: this.columnField }\n }\n set column(value: DiagramColumn) {\n this.columnType = value.columnType\n this.columnField = value.id\n }\n\n private _colors$ = new BehaviorSubject<Record<string, string>>({})\n @Input()\n get colors(): Record<string, string> {\n return this._colors$.getValue()\n }\n set colors(value: Record<string, string>) {\n this._colors$.next(value)\n }\n\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<GroupByCountDiagramComponentState> = new EventEmitter()\n\n ngOnInit(): void {\n this.diagramData$ = combineLatest([this._data$, this._columnField$, this._columnType$, this._colors$]).pipe(\n mergeMap(([data, columnField, columnType, colors]) => {\n const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField))\n const occurrences = columnData.reduce((acc, current) => {\n return acc.some((e: { label: any }) => e.label === current)\n ? (acc.find((e: { label: any }) => e.label === current).value++, acc)\n : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }]\n }, [])\n if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {\n return this.translateService.get(occurrences.map((o: { label: any }) => o.label)).pipe(\n map((translations: { [x: string]: any }) =>\n occurrences.map((o: { label: string; value: any; backgroundColor: string | undefined }) => ({\n label: translations[o.label],\n value: o.value,\n backgroundColor: o.backgroundColor,\n }))\n )\n )\n } else {\n return of(occurrences)\n }\n })\n )\n }\n\n dataClicked(event: any) {\n this.dataSelected.emit(event)\n }\n\n onDiagramTypeChanged(newDiagramType: DiagramType) {\n this.diagramType = newDiagramType\n this.diagramTypeChanged.emit(newDiagramType)\n this.componentStateChanged.emit({\n activeDiagramType: newDiagramType,\n })\n }\n}\n","<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [fillMissingColors]=\"fillMissingColors\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core'\nimport { SlotService } from '@onecx/angular-remote-components'\nimport { PrimeTemplate } from 'primeng/api'\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n combineLatest,\n distinctUntilChanged,\n map,\n startWith,\n timestamp,\n withLatestFrom,\n} from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { limit } from '../../utils/filter.utils'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n ColumnGroupSelectionComponentState,\n GroupSelectionChangedEvent,\n} from '../column-group-selection/column-group-selection.component'\nimport {\n ActionColumnChangedEvent,\n ColumnSelectionChangedEvent,\n CustomGroupColumnSelectorComponentState,\n} from '../custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponentState } from '../data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponentState } from '../data-list-grid-sorting/data-list-grid-sorting.component'\nimport { Row, Sort } from '../data-table/data-table.component'\nimport { DataViewComponent, DataViewComponentState, RowListGridData } from '../data-view/data-view.component'\nimport { FilterViewComponentState, FilterViewDisplayMode } from '../filter-view/filter-view.component'\n\nexport type InteractiveDataViewComponentState = ColumnGroupSelectionComponentState &\n CustomGroupColumnSelectorComponentState &\n DataLayoutSelectionComponentState &\n DataListGridSortingComponentState &\n DataViewComponentState &\n FilterViewComponentState\n\nexport interface ColumnGroupData {\n activeColumns: DataTableColumn[]\n groupKey: string\n}\n@Component({\n standalone: false,\n selector: 'ocx-interactive-data-view',\n templateUrl: './interactive-data-view.component.html',\n styleUrls: ['./interactive-data-view.component.css'],\n providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }],\n})\nexport class InteractiveDataViewComponent implements OnInit, AfterContentInit {\n private readonly slotService = inject(SlotService)\n\n _dataViewComponent: DataViewComponent | undefined\n @ViewChild(DataViewComponent) set dataView(ref: DataViewComponent | undefined) {\n this._dataViewComponent = ref\n this.registerEventListenerForDataView()\n }\n get dataView(): DataViewComponent | undefined {\n return this._dataViewComponent\n }\n\n columnGroupSelectionComponentState$ = new ReplaySubject<ColumnGroupSelectionComponentState>(1)\n customGroupColumnSelectorComponentState$ = new ReplaySubject<CustomGroupColumnSelectorComponentState>(1)\n dataLayoutComponentState$ = new ReplaySubject<DataLayoutSelectionComponentState>(1)\n dataListGridSortingComponentState$ = new ReplaySubject<DataListGridSortingComponentState>(1)\n dataViewComponentState$ = new ReplaySubject<DataViewComponentState>(1)\n filterViewComponentState$ = new ReplaySubject<FilterViewComponentState>(1)\n\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() name = 'Data'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() supportedViewLayouts: ('grid' | 'list' | 'table')[] = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() sortField: any = ''\n @Input() sortStates: DataSortDirection[] = [\n DataSortDirection.ASCENDING,\n DataSortDirection.DESCENDING,\n DataSortDirection.NONE,\n ]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n @Input() totalRecordsOnServer: number | undefined\n @Input() layout: 'grid' | 'list' | 'table' = 'table'\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = 'OCX_INTERACTIVE_DATA_VIEW.CUSTOM_GROUP'\n @Input() groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() additionalActions: DataAction[] = []\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() disableFilterView = true\n @Input() filterViewDisplayMode: FilterViewDisplayMode = 'button'\n @Input() filterViewChipStyleClass = ''\n @Input() filterViewTableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() filterViewPanelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() page = 0\n @Input() selectedRows: Row[] = []\n displayedColumnKeys$ = new BehaviorSubject<string[]>([])\n displayedColumns$: Observable<DataTableColumn[]> | undefined\n @Input()\n get displayedColumnKeys(): string[] {\n return this.displayedColumnKeys$.getValue()\n }\n set displayedColumnKeys(value: string[]) {\n this.displayedColumnKeys$.next(value)\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n @Input() headerStyleClass: string | undefined\n @Input() contentStyleClass: string | undefined\n @ContentChild('tableCell') tableCell: TemplateRef<any> | undefined\n primeNgTableCell: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCell: TemplateRef<any> | undefined\n primeNgDateTableCell: TemplateRef<any> | undefined\n\n @ContentChild('relativeDateTableCell') relativeDateTableCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableCell: TemplateRef<any> | undefined\n\n @ContentChild('translationKeyTableCell') translationKeyTableCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableCell: TemplateRef<any> | undefined\n\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLines: TemplateRef<any> | undefined\n primeNgGridItemSubtitleLines: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLines: TemplateRef<any> | undefined\n primeNgListItemSubtitleLines: TemplateRef<any> | undefined\n // TODO: Implement same fix for other templates and child components\n @ContentChild('stringTableCell') stringTableCell: TemplateRef<any> | undefined\n primeNgStringTableCell: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCell: TemplateRef<any> | undefined\n primeNgNumberTableCell: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItem: TemplateRef<any> | undefined\n primeNgGridItem: TemplateRef<any> | undefined\n @ContentChild('listItem') listItem: TemplateRef<any> | undefined\n primeNgListItem: TemplateRef<any> | undefined\n @ContentChild('topCenter') topCenter: TemplateRef<any> | undefined\n primeNgTopCenter: TemplateRef<any> | undefined\n @ContentChild('listValue') listValue: TemplateRef<any> | undefined\n primeNgListValue: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValue: TemplateRef<any> | undefined\n primeNgTranslationKeyListValue: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValue: TemplateRef<any> | undefined\n primeNgNumberListValue: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValue: TemplateRef<any> | undefined\n primeNgRelativeDateListValue: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValue: TemplateRef<any> | undefined\n primeNgStringListValue: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValue: TemplateRef<any> | undefined\n primeNgDateListValue: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCell: TemplateRef<any> | undefined\n primeNgTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('dateTableFilterCell') dateTableFilterCell: TemplateRef<any> | undefined\n primeNgDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCell: TemplateRef<any> | undefined\n primeNgStringTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCell: TemplateRef<any> | undefined\n primeNgNumberTableFilterCell: TemplateRef<any> | undefined\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() dataViewLayoutChange = new EventEmitter<'grid' | 'list' | 'table'>()\n @Output() displayedColumnKeysChange = new EventEmitter<string[]>()\n @Output() selectionChanged: EventEmitter<Row[]> = new EventEmitter()\n\n @Output() pageChanged: EventEmitter<number> = new EventEmitter()\n @Output() pageSizeChanged = new EventEmitter<number>()\n\n @Output() componentStateChanged = new EventEmitter<InteractiveDataViewComponentState>()\n\n selectedGroupKey$ = new BehaviorSubject<string | undefined>('')\n get selectedGroupKey(): string | undefined {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string | undefined) {\n this.selectedGroupKey$.next(value)\n }\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n isEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLines\n }\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLines\n }\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCell\n }\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCell\n }\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCell\n }\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCell\n }\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCell\n }\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCell\n }\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItem\n }\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItem\n }\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValue\n }\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValue\n }\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValue\n }\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValue\n }\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValue\n }\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValue\n }\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCell\n }\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCell\n }\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCell\n }\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCell\n }\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCell\n }\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCell\n }\n\n _data: RowListGridData[] = []\n @Input()\n get data(): RowListGridData[] {\n return this._data\n }\n set data(value: RowListGridData[]) {\n this._data = value\n }\n\n columnGroupSlotName = 'onecx-column-group-selection'\n isColumnGroupSelectionComponentDefined$: Observable<boolean>\n groupSelectionChangedSlotEmitter = new EventEmitter<ColumnGroupData | undefined>()\n\n constructor() {\n this.isColumnGroupSelectionComponentDefined$ = this.slotService\n .isSomeComponentDefinedForSlot(this.columnGroupSlotName)\n .pipe(startWith(true))\n\n this.groupSelectionChangedSlotEmitter.subscribe((event: ColumnGroupData | undefined) => {\n event ??= {\n activeColumns: this.getDisplayedColumns(),\n groupKey: this.selectedGroupKey ?? this.defaultGroupKey,\n }\n this.displayedColumnKeys$.next(event.activeColumns.map((col) => col.id))\n this.selectedGroupKey$.next(event.groupKey)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n this.columnGroupSelectionComponentState$.next({\n activeColumnGroupKey: event.groupKey,\n displayedColumns: event.activeColumns,\n })\n })\n\n this.dataViewLayoutChange\n .pipe(withLatestFrom(this.isColumnGroupSelectionComponentDefined$))\n .subscribe(([_, columnGroupComponentDefined]) => {\n if (columnGroupComponentDefined) {\n if (\n !(\n this.columns.find((c) => c.nameKey === this.selectedGroupKey) ||\n this.selectedGroupKey === this.customGroupKey\n )\n ) {\n this.selectedGroupKey$.next(undefined)\n }\n }\n })\n }\n\n ngOnInit(): void {\n this.selectedGroupKey = this.defaultGroupKey\n if (this.defaultGroupKey && this.defaultGroupKey !== this.customGroupKey) {\n this.displayedColumnKeys = this.columns\n .filter((column) => column.predefinedGroupKeys?.includes(this.defaultGroupKey))\n .map((column) => column.id)\n }\n this.displayedColumns$ = this.displayedColumnKeys$.pipe(\n distinctUntilChanged((prev, curr) => prev.length === curr.length && prev.every((v, i) => curr[i] === v)),\n map(\n (columnKeys) =>\n (columnKeys.map((key) => this.columns.find((col) => col.id === key)).filter((d) => d) as DataTableColumn[]) ??\n []\n )\n )\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n if (!this.groupSelectionNoGroupSelectedKey) {\n this.groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n }\n this.firstColumnId = this.columns[0]?.id\n\n let dataListGridSortingComponentState$: Observable<DataListGridSortingComponentState | Record<string, never>> =\n this.dataListGridSortingComponentState$\n let columnGroupSelectionComponentState$: Observable<ColumnGroupSelectionComponentState | Record<string, never>> =\n this.columnGroupSelectionComponentState$\n let customGroupColumnSelectorComponentState$: Observable<\n CustomGroupColumnSelectorComponentState | Record<string, never>\n > = this.customGroupColumnSelectorComponentState$\n\n if (this.layout === 'table') {\n dataListGridSortingComponentState$ = dataListGridSortingComponentState$.pipe(startWith({}))\n } else {\n columnGroupSelectionComponentState$ = columnGroupSelectionComponentState$.pipe(\n startWith({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: this.getDisplayedColumns(),\n })\n )\n customGroupColumnSelectorComponentState$ = customGroupColumnSelectorComponentState$.pipe(\n startWith({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this.getDisplayedColumns(),\n activeColumnGroupKey: this.selectedGroupKey,\n })\n )\n }\n\n let filterViewComponentState$: Observable<FilterViewComponentState | Record<string, never>> =\n this.filterViewComponentState$\n if (this.disableFilterView) {\n filterViewComponentState$ = filterViewComponentState$.pipe(\n startWith({\n filters: this.filters,\n })\n )\n }\n\n combineLatest([\n columnGroupSelectionComponentState$.pipe(timestamp()),\n customGroupColumnSelectorComponentState$.pipe(timestamp()),\n this.dataLayoutComponentState$.pipe(timestamp()),\n dataListGridSortingComponentState$.pipe(timestamp()),\n this.dataViewComponentState$.pipe(timestamp()),\n filterViewComponentState$.pipe(timestamp()),\n ])\n .pipe(\n map((componentStates) => {\n return orderAndMergeValuesByTimestamp(componentStates)\n })\n )\n .subscribe((val) => {\n this.componentStateChanged.emit(val)\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'tableCell':\n this.primeNgTableCell = item.template\n break\n case 'dateTableCell':\n this.primeNgDateTableCell = item.template\n break\n case 'relativeDateTableCell':\n this.primeNgRelativeDateTableCell = item.template\n break\n case 'translationKeyTableCell':\n this.primeNgTranslationKeyTableCell = item.template\n break\n case 'gridItemSubtitleLines':\n this.primeNgGridItemSubtitleLines = item.template\n break\n case 'listItemSubtitleLines':\n this.primeNgListItemSubtitleLines = item.template\n break\n case 'stringTableCell':\n this.primeNgStringTableCell = item.template\n break\n case 'numberTableCell':\n this.primeNgNumberTableCell = item.template\n break\n case 'gridItem':\n this.primeNgGridItem = item.template\n break\n case 'listItem':\n this.primeNgListItem = item.template\n break\n case 'topCenter':\n this.primeNgTopCenter = item.template\n break\n case 'listValue':\n this.primeNgListValue = item.template\n break\n case 'translationKeyListValue':\n this.primeNgTranslationKeyListValue = item.template\n break\n case 'numberListValue':\n this.primeNgNumberListValue = item.template\n break\n case 'relativeDateListValue':\n this.primeNgRelativeDateListValue = item.template\n break\n case 'stringListValue':\n this.primeNgStringListValue = item.template\n break\n case 'dateListValue':\n this.primeNgDateListValue = item.template\n break\n case 'tableFilterCell':\n this.primeNgTableFilterCell = item.template\n break\n case 'dateTableFilterCell':\n this.primeNgDateTableFilterCell = item.template\n break\n case 'relativeDateTableFilterCell':\n this.primeNgRelativeDateTableFilterCell = item.template\n break\n case 'translationKeyTableFilterCell':\n this.primeNgTranslationKeyTableFilterCell = item.template\n break\n case 'stringTableFilterCell':\n this.primeNgStringTableFilterCell = item.template\n break\n case 'numberTableFilterCell':\n this.primeNgNumberTableFilterCell = item.template\n break\n }\n })\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n onDeleteElement(element: RowListGridData) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(element)\n }\n }\n\n onViewElement(element: RowListGridData) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(element)\n }\n }\n\n onEditElement(element: RowListGridData) {\n if (this.isEditItemObserved) {\n this.editItem.emit(element)\n }\n }\n\n onDataViewLayoutChange(layout: 'grid' | 'list' | 'table') {\n this.layout = layout\n this.dataViewLayoutChange.emit(layout)\n }\n\n onSortChange($event: any) {\n this.sortField = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onSortDirectionChange($event: any) {\n this.sortDirection = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onColumnGroupSelectionChange(event: GroupSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = event.groupKey\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n registerEventListenerForDataView() {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataViewComponent?.deleteItem.observed) {\n this._dataViewComponent?.deleteItem.subscribe((event) => {\n this.onDeleteElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataViewComponent?.viewItem.observed) {\n this._dataViewComponent?.viewItem.subscribe((event) => {\n this.onViewElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.isEditItemObserved = true\n if (!this._dataViewComponent?.editItem.observed) {\n this._dataViewComponent?.editItem.subscribe((event) => {\n this.onEditElement(event)\n })\n }\n }\n if (this.selectionChanged.observed) {\n if (!this._dataViewComponent?.selectionChanged.observed) {\n this._dataViewComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n\n onColumnSelectionChange(event: ColumnSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = this.customGroupKey\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n onActionColumnConfigChange(event: ActionColumnChangedEvent) {\n this.frozenActionColumn = event.frozenActionColumn\n this.actionColumnPosition = event.actionColumnPosition\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChanged.observed) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n\n getDisplayedColumns(): DataTableColumn[] {\n return (\n (this.displayedColumnKeys\n .map((key) => this.columns.find((c) => c.id === key))\n .filter((d) => d) as DataTableColumn[]) ?? []\n )\n }\n}\n","<div class=\"p-3 border-bottom-1 surface-border\" [ngClass]=\"headerStyleClass\" id=\"interactiveDataViewHeader\">\n <div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <div class=\"flex flex-wrap justify-content-start align-items-center gap-2\">\n <ocx-data-layout-selection\n [supportedViewLayouts]=\"supportedViewLayouts\"\n [layout]=\"layout\"\n (dataViewLayoutChange)=\"onDataViewLayoutChange($event)\"\n (componentStateChanged)=\"dataLayoutComponentState$.next($event)\"\n ></ocx-data-layout-selection>\n @if (!disableFilterView) {\n <ocx-filter-view\n [filters]=\"filters\"\n [columns]=\"columns\"\n [templates]=\"templates$ | async\"\n [displayMode]=\"filterViewDisplayMode\"\n [selectDisplayedChips]=\"selectDisplayedChips\"\n [chipStyleClass]=\"filterViewChipStyleClass\"\n [tableStyle]=\"filterViewTableStyle\"\n (filtered)=\"filtering($event)\"\n (componentStateChanged)=\"filterViewComponentState$.next($event)\"\n ></ocx-filter-view>\n }\n </div>\n\n @if (topCenter) {\n <div>\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n } @if (layout !== 'table') {\n <div class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n (componentStateChanged)=\"dataListGridSortingComponentState$.next($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n }\n\n <div\n [ngStyle]=\"layout !== 'table' ? {\n 'position': 'absolute'\n } : {}\"\n class=\"flex flex-wrap justify-content-between align-items-center gap-2\"\n >\n @if (isColumnGroupSelectionComponentDefined$ | async) { @if (displayedColumnKeys$ | async; as displayedColumnKeys)\n {\n <ocx-slot\n [ngStyle]=\"layout !== 'table' ? {'display' : 'none'} : {}\"\n *ocxIfPermission=\"searchConfigPermission; elseTemplate: defaultColumnGroupSelectionComponent\"\n name=\"{{columnGroupSlotName}}\"\n [inputs]=\"{ placeholderKey: groupSelectionNoGroupSelectedKey, defaultGroupKey: defaultGroupKey, customGroupKey: customGroupKey, columns: columns, selectedGroupKey: selectedGroupKey, layout: layout, displayedColumnsIds: displayedColumnKeys }\"\n [outputs]=\"{ groupSelectionChanged: groupSelectionChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n } } @else {\n <ng-container [ngTemplateOutlet]=\"defaultColumnGroupSelectionComponent\"></ng-container>\n } @if (layout === 'table') {\n <ocx-custom-group-column-selector\n [columns]=\"columns\"\n [displayedColumns]=\"(displayedColumns$ | async) ?? []\"\n [customGroupKey]=\"customGroupKey\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n (componentStateChanged)=\"customGroupColumnSelectorComponentState$.next($event)\"\n ></ocx-custom-group-column-selector>\n }\n </div>\n </div>\n</div>\n<div class=\"p-3\" [ngClass]=\"contentStyleClass\" id=\"interactiveDataViewContent\">\n <ocx-data-view\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"primeNgStringTableCell ?? _stringTableCell\"\n [numberTableCellTemplate]=\"primeNgNumberTableCell ?? _numberTableCell\"\n [dateTableCellTemplate]=\"primeNgDateTableCell ?? _dateTableCell\"\n [relativeDateTableCellTemplate]=\"primeNgRelativeDateTableCell ?? _relativeDateTableCell\"\n [tableCellTemplate]=\"primeNgTableCell ?? _tableCell\"\n [translationKeyTableCellTemplate]=\"primeNgTranslationKeyTableCell ?? _translationKeyTableCell\"\n [gridItemSubtitleLinesTemplate]=\"primeNgGridItemSubtitleLines ?? _gridItemSubtitleLines\"\n [listItemSubtitleLinesTemplate]=\"primeNgListItemSubtitleLines ?? _listItemSubtitleLines\"\n [listItemTemplate]=\"primeNgListItem ?? _listItem\"\n [listValueTemplate]=\"primeNgListValue ?? _listValue\"\n [translationKeyListValueTemplate]=\"primeNgTranslationKeyListValue ?? _translationKeyListValue\"\n [numberListValueTemplate]=\"primeNgNumberListValue ?? _numberListValue\"\n [relativeDateListValueTemplate]=\"primeNgRelativeDateListValue ?? _relativeDateListValue\"\n [stringListValueTemplate]=\"primeNgStringListValue ?? _stringListValue\"\n [dateListValueTemplate]=\"primeNgDateListValue ?? _dateListValue\"\n [gridItemTemplate]=\"primeNgGridItem ?? _gridItem\"\n [tableFilterCellTemplate]=\"primeNgTableFilterCell ?? _tableFilterCell\"\n [dateTableFilterCellTemplate]=\"primeNgDateTableFilterCell ?? _dateTableFilterCell\"\n [numberTableFilterCellTemplate]=\"primeNgNumberTableFilterCell ?? _numberTableFilterCell\"\n [stringTableFilterCellTemplate]=\"primeNgStringTableFilterCell ?? _stringTableFilterCell\"\n [relativeDateTableFilterCellTemplate]=\"primeNgRelativeDateTableFilterCell ?? _relativeDateTableFilterCell\"\n [translationKeyTableFilterCellTemplate]=\"primeNgTranslationKeyTableFilterCell ?? _translationKeyTableFilterCell\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n (componentStateChanged)=\"dataViewComponentState$.next($event)\"\n [parentTemplates]=\"templates$ | async\"\n [tableAllowSelectAll]=\"tableAllowSelectAll\"\n [tableSelectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-view>\n</div>\n\n<ng-template #defaultColumnGroupSelectionComponent>\n @if (layout === 'table') {\n <ocx-column-group-selection\n [selectedGroupKey]=\"selectedGroupKey ?? defaultGroupKey\"\n [columns]=\"columns\"\n [defaultGroupKey]=\"defaultGroupKey !== customGroupKey ? defaultGroupKey : ''\"\n [customGroupKey]=\"customGroupKey\"\n [placeholderKey]=\"groupSelectionNoGroupSelectedKey\"\n (groupSelectionChanged)=\"onColumnGroupSelectionChange($event)\"\n (componentStateChanged)=\"columnGroupSelectionComponentState$.next($event)\"\n ></ocx-column-group-selection>\n }\n</ng-template>\n\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableCell) {\n <ng-container [ngTemplateOutlet]=\"_stringTableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #numberTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableCell) {\n <ng-container [ngTemplateOutlet]=\"_numberTableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableCell) {\n <ng-container [ngTemplateOutlet]=\"_dateTableCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_tableCell) {\n <ng-container [ngTemplateOutlet]=\"_tableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #gridItemSubtitleLines let-item>\n @if (_gridItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_gridItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n @if (_listItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_listItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #gridItem let-item>\n @if (_gridItem) {\n <ng-container [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n>\n<ng-template #listItem let-item>\n @if (_listItem) {\n <ng-container [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_listValue) {\n <ng-container [ngTemplateOutlet]=\"_listValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberListValue) {\n <ng-container [ngTemplateOutlet]=\"_numberListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringListValue) {\n <ng-container [ngTemplateOutlet]=\"_stringListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateListValue) {\n <ng-container [ngTemplateOutlet]=\"_dateListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n\n<ng-template #stringTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #numberTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #dateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #relativeDateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #translationKeyTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n","import { Component, Input } from '@angular/core'\n\nexport interface LifecycleStep {\n id: string\n title: string\n details?: string\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-lifecycle',\n templateUrl: './lifecycle.component.html',\n})\nexport class LifecycleComponent {\n @Input() steps: LifecycleStep[] = []\n @Input() activeStepId: string | undefined\n}\n","<p-timeline [value]=\"steps\">\n <ng-template pTemplate=\"marker\" let-step>\n <span class=\"p-timeline-event-marker\" [ngClass]=\"activeStepId && activeStepId === step.id ? 'bg-primary' : ''\"></span>\n </ng-template>\n <ng-template pTemplate=\"content\" let-step>\n <div class=\"pb-4 h-full\">\n <div class=\"card h-full\" [ngClass]=\"activeStepId && activeStepId === step.id ? 'bg-primary' : ''\">\n <p class=\"font-bold text-xl\" [ngClass]=\"step.details ? 'mb-2' : ''\">{{ step.title }}</p>\n @if (step.details) {\n <p [ngClass]=\"activeStepId && activeStepId === step.id ? '' : 'text-color-secondary'\">{{ step.details }}</p>\n }\n </div>\n </div>\n </ng-template>\n</p-timeline>\n","import { Component, Input } from '@angular/core'\n\n@Component({\n standalone: false,\n templateUrl: `./dialog-message-content.component.html`,\n})\nexport class DialogMessageContentComponent {\n @Input() message = 'message'\n @Input() messageParameters: object = {}\n @Input() icon = ''\n}\n","<div class=\"dialogMessageContent\">\n <div>\n @if (icon !== '') {\n <i [class]=\"icon\"></i>\n }\n <span id=\"dialogMessage\">{{message | translate:messageParameters}}</span>\n </div>\n</div>","import { Component, ComponentRef, OnDestroy, OnInit, ViewChild, ViewContainerRef, inject } from '@angular/core'\nimport { Observable, Subscription, from, isObservable, of, startWith } from 'rxjs'\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog'\nimport { ButtonDialogData } from '../../../model/button-dialog'\nimport { DialogMessageContentComponent } from '../dialog-message-content/dialog-message-content.component'\nimport {\n DialogButtonClicked,\n DialogCustomButtonsDisabled,\n DialogPrimaryButtonDisabled,\n DialogResult,\n DialogSecondaryButtonDisabled,\n PortalDialogServiceData,\n} from '../../../services/portal-dialog.service'\n\n@Component({\n standalone: false,\n selector: 'ocx-dialog-content',\n templateUrl: './dialog-content.component.html',\n styleUrls: ['./dialog-content.component.scss'],\n})\nexport class DialogContentComponent implements OnInit, OnDestroy {\n dynamicDialogConfig = inject(DynamicDialogConfig)\n dynamicDialogRef = inject(DynamicDialogRef)\n\n defaultDialogData: ButtonDialogData = {\n component: DialogMessageContentComponent,\n config: {},\n componentData: {},\n }\n\n @ViewChild('container', { static: true, read: ViewContainerRef })\n dialogHost!: ViewContainerRef\n\n dialogData: ButtonDialogData = this.defaultDialogData\n componentRef!: ComponentRef<any>\n\n primaryButtonEnabledSub?: Subscription\n secondaryButtonEnabledSub?: Subscription\n customButtonEnabledSub?: Subscription\n buttonClickedSub?: Subscription\n\n ngOnInit(): void {\n this.loadComponent()\n }\n\n ngOnDestroy(): void {\n this.primaryButtonEnabledSub?.unsubscribe()\n this.secondaryButtonEnabledSub?.unsubscribe()\n this.customButtonEnabledSub?.unsubscribe()\n this.buttonClickedSub?.unsubscribe()\n }\n\n loadComponent() {\n if (this.dynamicDialogConfig.data) {\n this.setUpDialogDataForDynamicConfig()\n }\n }\n\n setUpDialogDataForDynamicConfig() {\n const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n if (dynamicConfigData.component) {\n this.dialogData.component = dynamicConfigData.component\n }\n if (dynamicConfigData.componentData) {\n this.dialogData.componentData = dynamicConfigData.componentData\n }\n\n const viewContainerRef = this.dialogHost\n viewContainerRef.clear()\n\n this.buttonClickedSub = portalDialogServiceData.buttonClicked$.subscribe((state) => {\n const component = this.componentRef.instance\n\n const hasDialogResult = this.isDialogResultImplemented(component)\n if (hasDialogResult) {\n state.result = component.dialogResult\n }\n const closeResult = state\n // check if component implements DialogButtonClicked\n if (this.isDialogButtonClickedImplemented(component)) {\n const buttonResult = component.ocxDialogButtonClicked(state)\n // If undefined or void is returned, close dialog and return result\n if (buttonResult === undefined) {\n if (hasDialogResult) {\n closeResult.result = component.dialogResult\n }\n return this.dynamicDialogRef.close(closeResult)\n }\n this.toObservable(buttonResult).subscribe((result: boolean) => {\n if (result === true) {\n if (hasDialogResult) {\n closeResult.result = component.dialogResult\n }\n this.dynamicDialogRef.close(closeResult)\n }\n })\n } else {\n return this.dynamicDialogRef.close(closeResult)\n }\n })\n\n if (this.dialogData.component) {\n const componentRef = viewContainerRef.createComponent<any>(this.dialogData.component)\n\n if (this.isDialogPrimaryButtonDisabledImplemented(componentRef.instance)) {\n this.primaryButtonEnabledSub = componentRef.instance.primaryButtonEnabled\n .pipe(startWith(false))\n .subscribe((isEnabled) => {\n portalDialogServiceData.primaryButtonEnabled$.emit(isEnabled)\n })\n }\n if (this.isDialogSecondaryButtonDisabledImplemented(componentRef.instance)) {\n this.secondaryButtonEnabledSub = componentRef.instance.secondaryButtonEnabled\n .pipe(startWith(false))\n .subscribe((isEnabled) => {\n portalDialogServiceData.secondaryButtonEnabled$.emit(isEnabled)\n })\n }\n if (this.isDialogCustomButtonDisabledImplemented(componentRef.instance)) {\n this.customButtonEnabledSub = componentRef.instance.customButtonEnabled.subscribe((buttonEnabled) => {\n portalDialogServiceData.customButtonEnabled$.emit(buttonEnabled)\n })\n }\n\n //populate container\n Object.keys(this.dialogData.componentData).forEach((k) => {\n componentRef.setInput(k, this.dialogData.componentData[k])\n })\n this.componentRef = componentRef\n }\n }\n\n private toObservable(\n ocxDialogButtonClickedResult: boolean | Observable<boolean> | Promise<boolean> | undefined\n ): Observable<boolean> {\n if (ocxDialogButtonClickedResult === undefined) {\n return of(true)\n }\n if (isObservable(ocxDialogButtonClickedResult)) {\n return ocxDialogButtonClickedResult\n }\n return from(Promise.resolve(ocxDialogButtonClickedResult))\n }\n\n private isDialogResultImplemented(component: any): component is DialogResult<unknown> {\n return 'dialogResult' in component\n }\n\n private isDialogButtonClickedImplemented(component: any): component is DialogButtonClicked {\n return typeof component.ocxDialogButtonClicked === 'function'\n }\n\n private isDialogPrimaryButtonDisabledImplemented(component: any): component is DialogPrimaryButtonDisabled {\n return 'primaryButtonEnabled' in component\n }\n\n private isDialogSecondaryButtonDisabledImplemented(component: any): component is DialogSecondaryButtonDisabled {\n return 'secondaryButtonEnabled' in component\n }\n\n private isDialogCustomButtonDisabledImplemented(component: any): component is DialogCustomButtonsDisabled {\n return 'customButtonEnabled' in component\n }\n}\n","<div class=\"buttonDialogScrollableContent\">\n <ng-container #container></ng-container>\n <ng-content></ng-content>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog'\nimport { BehaviorSubject, Observable, map, withLatestFrom } from 'rxjs'\nimport {\n ButtonDialogButtonDetails,\n ButtonDialogConfig,\n ButtonDialogCustomButtonDetails,\n ButtonDialogData,\n} from '../../../model/button-dialog'\nimport {\n DialogState,\n DialogStateButtonClicked,\n PortalDialogServiceData,\n} from '../../../services/portal-dialog.service'\n\n@Component({\n standalone: false,\n selector: 'ocx-dialog-footer',\n templateUrl: './dialog-footer.component.html',\n styleUrls: ['./dialog-footer.component.scss'],\n})\nexport class DialogFooterComponent implements OnInit, AfterViewInit {\n dynamicDialogConfig = inject(DynamicDialogConfig)\n dynamicDialogRef = inject(DynamicDialogRef)\n\n defaultPrimaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CONFIRM',\n }\n\n defaultSecondaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CANCEL',\n }\n\n defaultDialogData: ButtonDialogData = {\n config: {\n primaryButtonDetails: this.defaultPrimaryButtonDetails,\n secondaryButtonIncluded: true,\n secondaryButtonDetails: this.defaultSecondaryButtonDetails,\n },\n componentData: {},\n }\n\n @Input() config: ButtonDialogConfig = {}\n\n dialogData: ButtonDialogData = this.defaultDialogData\n primaryButtonDisabled$: Observable<boolean | undefined> | undefined\n secondaryButtonDisabled$: Observable<boolean | undefined> | undefined\n customButtonsDisabled$: BehaviorSubject<Record<string, boolean>> = new BehaviorSubject({})\n leftCustomButtons: ButtonDialogCustomButtonDetails[] = []\n rightCustomButtons: ButtonDialogCustomButtonDetails[] = []\n\n @Output() buttonClickedEmitter: EventEmitter<DialogState<unknown>> = new EventEmitter()\n\n @ViewChild('primaryButton', { static: true, read: ViewContainerRef })\n primaryButton!: ViewContainerRef\n _secondaryButton!: ViewContainerRef\n @ViewChild('secondaryButton', { static: false, read: ViewContainerRef })\n set secondaryButton(content: ViewContainerRef) {\n if (content) {\n this._secondaryButton = content\n }\n }\n get secondaryButton(): ViewContainerRef {\n return this._secondaryButton\n }\n @ViewChildren('customButton') customButtons!: QueryList<ElementRef>\n\n ngAfterViewInit(): void {\n if (!(this.dynamicDialogConfig.data && this.dynamicDialogConfig.data.config)) return\n\n const config = this.dynamicDialogConfig.data.config\n if (config.autoFocusButton === 'primary') {\n this.primaryButton.element.nativeElement.focus()\n } else if (config.autoFocusButton === 'secondary') {\n this.secondaryButton.element.nativeElement.focus()\n } else if (config.autoFocusButton === 'custom') {\n const button = this.customButtons.find((customButton) => {\n return customButton.nativeElement.id === config.autoFocusButtonCustomId\n })\n setTimeout(() => {\n button?.nativeElement.focus()\n })\n }\n }\n\n ngOnInit(): void {\n this.loadComponent()\n }\n\n primaryButtonAction() {\n return this.buttonAction('primary')\n }\n\n secondaryButtonAction() {\n return this.buttonAction('secondary')\n }\n\n customButtonAction(button: ButtonDialogCustomButtonDetails) {\n return this.buttonAction(`custom`, button.id)\n }\n\n resolveCustomButtonDisabled(customButtonsDisabled: Record<string, boolean>, buttonId: string) {\n return buttonId in customButtonsDisabled ? customButtonsDisabled[buttonId] : true\n }\n\n loadComponent() {\n if (this.dynamicDialogConfig.data) {\n this.setUpDialogDataForDynamicConfig()\n } else {\n this.setUpDialogDataForInput()\n }\n }\n\n setUpDialogDataForInput() {\n if (this.config) {\n if (!!this.config.primaryButtonDetails && !!this.config.primaryButtonDetails.key) {\n this.dialogData.config.primaryButtonDetails = this.config.primaryButtonDetails\n }\n if (this.config.secondaryButtonIncluded) {\n this.dialogData.config.secondaryButtonIncluded = this.config.secondaryButtonIncluded\n }\n if (!!this.config.secondaryButtonDetails && !!this.config.secondaryButtonDetails.key) {\n this.dialogData.config.secondaryButtonDetails = this.config.secondaryButtonDetails\n }\n }\n this.dialogData.config.customButtons = this.config.customButtons\n this.setupCustomButtons(this.dialogData)\n }\n\n setUpDialogDataForDynamicConfig() {\n const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n if (dynamicConfigData.config) {\n const dialogConfig = dynamicConfigData.config\n if (!!dialogConfig.primaryButtonDetails && !!dialogConfig.primaryButtonDetails.key) {\n this.dialogData.config.primaryButtonDetails = dialogConfig.primaryButtonDetails\n }\n if (dialogConfig.secondaryButtonIncluded !== undefined) {\n this.dialogData.config.secondaryButtonIncluded = dialogConfig.secondaryButtonIncluded\n }\n if (!!dialogConfig.secondaryButtonDetails && !!dialogConfig.secondaryButtonDetails.key) {\n this.dialogData.config.secondaryButtonDetails = dialogConfig.secondaryButtonDetails\n }\n }\n\n this.setupCustomButtons(dynamicConfigData)\n\n this.primaryButtonDisabled$ = portalDialogServiceData.primaryButtonEnabled$.pipe(map((isEnabled) => !isEnabled))\n this.secondaryButtonDisabled$ = portalDialogServiceData.secondaryButtonEnabled$.pipe(map((isEnabled) => !isEnabled))\n\n const initCustomButtons: Record<string, boolean> = {}\n this.rightCustomButtons.concat(this.leftCustomButtons).map((button) => {\n initCustomButtons[button.id] = true\n })\n this.customButtonsDisabled$.next(initCustomButtons)\n portalDialogServiceData.customButtonEnabled$\n .pipe(\n withLatestFrom(this.customButtonsDisabled$),\n map(([buttonEnabled, customButtonsDisabled]) => {\n if (customButtonsDisabled[buttonEnabled.id] !== !buttonEnabled.enabled) {\n customButtonsDisabled[buttonEnabled.id] = !buttonEnabled.enabled\n }\n return customButtonsDisabled\n })\n )\n .subscribe(this.customButtonsDisabled$)\n\n this.buttonClickedEmitter = portalDialogServiceData.buttonClicked$\n }\n\n private buttonAction(resultButtonClickedName: DialogStateButtonClicked, buttonId?: string) {\n const state: DialogState<unknown> = {\n button: resultButtonClickedName,\n result: undefined,\n id: buttonId,\n }\n\n this.buttonClickedEmitter?.emit(state)\n }\n\n private setupCustomButtons(dialogData: ButtonDialogData) {\n this.leftCustomButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'left') ?? []\n this.rightCustomButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'right') ?? []\n }\n}\n","<div class=\"w-full flex-row justify-content-end flex flex-wrap gap-2\">\n @for (button of leftCustomButtons; track button; let i = $index) {\n <div [ngStyle]=\"{'margin-right': (i === leftCustomButtons.length - 1) ? 'auto' : 0}\">\n <ng-container *ngTemplateOutlet=\"customButtonTemplate; context: {button: button}\"> </ng-container>\n </div>\n }\n @for (button of rightCustomButtons; track button) {\n <div>\n <ng-container *ngTemplateOutlet=\"customButtonTemplate; context: {button: button}\"> </ng-container>\n </div>\n }\n <div>\n @if (dialogData.config.secondaryButtonIncluded) {\n <button\n #secondaryButton\n id=\"{{dialogData.config.secondaryButtonDetails?.id ?? 'buttonDialogSecondaryButton'}}\"\n pButton\n [icon]=\"dialogData.config.secondaryButtonDetails!.icon !== undefined ? dialogData.config.secondaryButtonDetails!.icon : ''\"\n (click)=\"secondaryButtonAction()\"\n [label]=\"dialogData.config.secondaryButtonDetails!.key | translate:dialogData.config.secondaryButtonDetails?.parameters\"\n [disabled]=\"secondaryButtonDisabled$ | async\"\n pTooltip=\"dialogData.config.secondaryButtonDetails!.tooltipKey ? (dialogData.config.secondaryButtonDetails!.tooltipKey | translate) : null\"\n tooltipPosition=\"dialogData.config.secondaryButtonDetails?.tooltipPosition ?? ''\"\n [attr.aria-label]=\"dialogData.config.secondaryButtonDetails!.key | translate:dialogData.config.secondaryButtonDetails?.parameters\"\n ></button>\n }\n </div>\n <div>\n <button\n #primaryButton\n id=\"{{dialogData.config.primaryButtonDetails?.id ?? 'buttonDialogPrimaryButton'}}\"\n pButton\n autofocus\n [icon]=\"dialogData.config.primaryButtonDetails!.icon !== undefined ? dialogData.config.primaryButtonDetails!.icon : ''\"\n (click)=\"primaryButtonAction()\"\n [label]=\"dialogData.config.primaryButtonDetails!.key | translate:dialogData.config.primaryButtonDetails?.parameters\"\n [disabled]=\"primaryButtonDisabled$ | async\"\n pTooltip=\"dialogData.config.primaryButtonDetails!.tooltipKey ? (dialogData.config.primaryButtonDetails!.tooltipKey | translate) : null\"\n tooltipPosition=\"dialogData.config.primaryButtonDetails?.tooltipPosition ?? ''\"\n [attr.aria-label]=\"dialogData.config.primaryButtonDetails!.key | translate:dialogData.config.primaryButtonDetails?.parameters\"\n ></button>\n </div>\n</div>\n\n<ng-template #customButtonTemplate let-button=\"button\">\n <button\n #customButton\n id=\"{{button.id}}\"\n pButton\n [icon]=\"button.icon !== undefined ? button.icon : ''\"\n (click)=\"customButtonAction(button)\"\n [label]=\"button.key | translate:button.parameters\"\n [disabled]=\"resolveCustomButtonDisabled((customButtonsDisabled$ | async) ?? {}, button.id)\"\n pTooltip=\"button.tooltipKey ? (button.tooltipKey | translate) : null\"\n tooltipPosition=\"button.tooltipPosition ?? ''\"\n [attr.aria-label]=\"button.key | translate:button.parameters\"\n ></button>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { ButtonDialogConfig } from '../../../model/button-dialog'\nimport { DialogState } from '../../../services/portal-dialog.service'\n\n@Component({\n standalone: false,\n selector: 'ocx-dialog-inline',\n templateUrl: './dialog-inline.component.html',\n styleUrls: ['./dialog-inline.component.scss'],\n})\nexport class DialogInlineComponent {\n @Input() config: ButtonDialogConfig = {}\n\n @Output() resultEmitter = new EventEmitter()\n\n buttonClicked(event: DialogState<unknown>) {\n this.resultEmitter.emit(event.button)\n }\n}\n","<div>\n <ocx-dialog-content>\n <ng-content></ng-content>\n </ocx-dialog-content>\n <ocx-dialog-footer [config]=\"config\" (buttonClickedEmitter)=\"buttonClicked($event)\"></ocx-dialog-footer>\n</div>\n","import { Component, Input, inject } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\n@Component({\n standalone: false,\n selector: 'ocx-error',\n templateUrl: './global-error.component.html',\n styleUrls: ['./global-error.component.scss'],\n})\nexport class GlobalErrorComponent {\n private router = inject(Router)\n private route = inject(ActivatedRoute)\n\n @Input()\n errCode: string | undefined\n backUrl: string\n\n constructor() {\n this.errCode = this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START'\n this.backUrl = this.route.snapshot.queryParamMap.get('return') || '/'\n }\n\n onGoBack() {\n this.router.navigateByUrl(this.backUrl)\n }\n\n reload() {\n window.location.reload()\n }\n}\n","<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n","import { EventEmitter, Injectable, OnDestroy, Type, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DialogService, DynamicDialogComponent } from 'primeng/dynamicdialog'\nimport { Observable, filter, mergeMap } from 'rxjs'\n\nimport { ButtonDialogButtonDetails, ButtonDialogCustomButtonDetails, ButtonDialogData } from '../model/button-dialog'\nimport { NavigationStart, Router } from '@angular/router'\nimport {\n SKIP_STYLE_SCOPING,\n dataNoPortalLayoutStylesKey,\n dataStyleIdKey,\n getScopeIdentifier,\n} from '@onecx/angular-utils'\nimport { REMOTE_COMPONENT_CONFIG } from '@onecx/angular-remote-components'\nimport { CurrentLocationTopicPayload, EventsTopic, TopicEventType } from '@onecx/integration-interface'\nimport { Capability, ShellCapabilityService, AppStateService } from '@onecx/angular-integration-interface'\nimport { PrimeIcon } from '../utils/primeicon.utils'\nimport { DialogContentComponent } from '../components/dialog/dialog-content/dialog-content.component'\nimport { DialogFooterComponent } from '../components/dialog/dialog-footer/dialog-footer.component'\nimport { DialogMessageContentComponent } from '../components/dialog/dialog-message-content/dialog-message-content.component'\n\n/**\n * Object containing key for translation with parameters object for translation\n *\n * @example\n * ## Assume such translation is in the translation file\n * ```typescript\n * const translations = {\n * MY_KEY = 'text with parameter value = {{value}}',\n * }\n * ```\n *\n * ## TranslationKeyWithParameters declaration\n * ```\n * // will be translated into\n * // text with parameter value = hello\n * const myKey: TranslationKeyWithParameters = {\n * key: 'MY_KEY',\n * parameters: {\n * value: 'hello',\n * },\n * }\n * ```\n */\ntype TranslationKeyWithParameters = { key: string; parameters: Record<string, unknown> }\n/**\n * String with key to translation or {@link TranslationKeyWithParameters} object. If provided string cannot be translated it will be displayed as is.\n */\ntype TranslationKey = string | TranslationKeyWithParameters\n/**\n * Object containing message of type {@link TranslationKey} and icon to be displayed along the message.\n *\n * @example\n * DialogMessage with TranslationKey will display 'text with parameter value = hello' and question mark icon\n *\n * ## Assume such translation is in the translation file\n * ```\n * const translations = {\n * MY_KEY = 'text with parameter value = {{value}}',\n * }\n * ```\n *\n * ## DialogMessage declaration\n * ```\n * const myDialogMessage: DialogMessage = {\n * message: {\n * key: 'MY_KEY',\n * parameters: {\n * value = 'hello',\n * },\n * },\n * icon: PrimeIcons.QUESTION\n * }\n * ```\n */\ntype DialogMessage = { message: TranslationKey; icon: PrimeIcon }\n\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use if you want {@link PortalDialogService.openDialog} to return state of displayed component's current dialogResult value alongside the clicked button.\n *\n * @example\n * Display component implementing DialogResult<string> and react on the returned value\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string> {\n * dialogResult: string = ''\n *\n * onInputChange(event: any) {\n * this.dialogResult = event.target.value\n * }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * portalDialogService.openDialog(title, { type: MyInputComponent }, primaryButton, ...).subscribe((result: DialogState<string>) => {\n * // result.value === MyInputComponent.dialogResult (during button click)\n * // behavior when dialog closes\n * })\n * ```\n *\n */\nexport interface DialogResult<T> {\n dialogResult: T\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of the primary button (disabled or enabled). Whenever your component wants to disable/enable primary button it should emit boolean equal to whether primary button should be enabled.\n *\n * If you implement this interface then primary button will be disabled until the emitter emits true\n */\nexport interface DialogPrimaryButtonDisabled {\n primaryButtonEnabled: EventEmitter<boolean>\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of the secondary button (disabled or enabled). Whenever your component wants to disable/enable secondary button it should emit boolean equal to whether secondary button should be enabled.\n *\n * If you implement this interface then secondary button will be disabled until the emitter emits true\n */\nexport interface DialogSecondaryButtonDisabled {\n secondaryButtonEnabled: EventEmitter<boolean>\n}\n\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of custom buttons (disabled or enabled). Whenever your component wants to disable/enable any custom button it should emit an object indicating which button should be disabled/enabled. This object should contain id property (string) related to previously defined button and enabled property (boolean) equal to whether custom button should be enabled.\n *\n * If you implement this interface then all custom buttons will be disabled until the emitter emits true\n */\nexport interface DialogCustomButtonsDisabled {\n customButtonEnabled: EventEmitter<{ id: string; enabled: boolean }>\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to add behavior on button clicks. {@link DialogButtonClicked.ocxDialogButtonClicked} method will be called everytime any button is clicked and should return boolean value (or Observable<boolean> or Promise<boolean>) equal to whether dialog should be closed or not.\n *\n * {@link DialogButtonClicked.ocxDialogButtonClicked} will recieve object containing component's state captured on button click. It will have button property with value 'primary' or 'secondary' which determines which button was clicked.\n *\n * It will also have result property which by default will be undefined, however if you want to add any properties to the state please combine this interface with {@link DialogResult}. That way result will be equal to component's dialogResult property captured on button click.\n *\n * @example\n * Display component implementing DialogResult<string> and DialogButtonClicked which should not close dialog on clear click but should close when send clicked and api call was sucessful\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string>, DialogButtonClicked {\n * dialogResult: string = ''\n *\n * onInputChange(event: any) {\n * this.dialogResult = event.target.value\n * }\n *\n * ocxDialogButtonClicked(state: DialogState<string>) {\n * // here you can do any operations you desire\n * // such as form validation\n * // api calls and so on\n * if (state.button === 'primary') {\n * // send form data to server\n * this.apiService.postInput(state.result, ...).pipe(\n * // map response to boolean meaning if call was successfull\n * )\n * return true // if dialog should be closed return true\n * } else {\n * // clear input\n * return false // don't want to close the dialog, only to clear it\n * }\n * }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * portalDialogService.openDialog(title, { type: MyInputComponent }, \"Send\", \"Clear\").subscribe((result: DialogState<string>) => {\n * // behavior to be fired when dialog closes\n * })\n * ```\n */\nexport interface DialogButtonClicked<T = unknown> {\n ocxDialogButtonClicked(state: DialogState<T>): Observable<boolean> | Promise<boolean> | boolean | undefined | void\n}\n\n/**\n * Object containing component type to be displayed and inputs to populate the component.\n *\n * @example\n *\n * ```\n * ⁣@Component({template: `<h1>{{content}}</h1>`})\n * export class MyComponent {\n * ⁣@Input() content: string = ''\n * }\n * const myComponent = {\n * type: MyComponent,\n * inputs: {\n * content: 'My header content',\n * },\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\ntype Component<T extends unknown> = unknown extends T\n ? {\n type: Type<any>\n inputs?: Record<string, unknown>\n }\n : {\n type: Type<DialogResult<T>>\n inputs?: Record<string, unknown>\n }\n\nexport type DialogButton = 'primary' | 'secondary' | 'custom'\nexport type DialogStateButtonClicked = 'primary' | 'secondary' | 'custom'\n\n/**\n * Object containing information about clicked button ('primary' or 'secondary') and displayed component state captured on button click (only if component implements {@link DialogResult} interface)\n */\nexport type DialogState<T> = {\n button: DialogStateButtonClicked\n result: T | undefined\n id?: string\n}\n\nexport type PortalDialogConfig = {\n showXButton?: boolean\n customButtons?: ButtonDialogCustomButtonDetails[]\n autoFocusButton?: DialogButton\n autoFocusButtonCustomId?: string\n ariaLabelledBy?: string\n width?: string\n height?: string\n closeOnEscape?: boolean\n focusOnShow?: boolean\n focusTrap?: boolean\n baseZIndex?: number\n autoZIndex?: boolean\n dismissableMask?: boolean\n showHeader?: boolean\n modal?: boolean\n resizable?: boolean\n draggable?: boolean\n keepInViewport?: boolean\n minX?: number\n minY?: number\n maximizable?: boolean\n maximizeIcon?: string\n minimizeIcon?: string\n position?: string\n closeAriaLabel?: string\n}\n\nexport interface PortalDialogServiceData {\n primaryButtonEnabled$: EventEmitter<boolean>\n secondaryButtonEnabled$: EventEmitter<boolean>\n customButtonEnabled$: EventEmitter<{ id: string; enabled: boolean }>\n buttonClicked$: EventEmitter<DialogState<unknown>>\n}\n\n@Injectable({ providedIn: 'any' })\nexport class PortalDialogService implements OnDestroy {\n private dialogService = inject(DialogService)\n private translateService = inject(TranslateService)\n private router = inject(Router)\n private eventsTopic: EventsTopic = new EventsTopic()\n private skipStyleScoping = inject(SKIP_STYLE_SCOPING, { optional: true })\n private remoteComponentConfig = inject(REMOTE_COMPONENT_CONFIG, { optional: true })\n private appStateService = inject(AppStateService)\n private capabilityService = inject(ShellCapabilityService)\n\n constructor() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.cleanupAndCloseDialog()\n }\n })\n let observable: Observable<TopicEventType | CurrentLocationTopicPayload> =\n this.appStateService.currentLocation$.asObservable()\n if (!this.capabilityService.hasCapability(Capability.CURRENT_LOCATION_TOPIC)) {\n observable = this.eventsTopic.pipe(filter((e) => e.type === 'navigated'))\n }\n observable.subscribe(() => {\n this.cleanupAndCloseDialog()\n })\n }\n\n ngOnDestroy(): void {\n this.cleanupAndCloseDialog()\n this.eventsTopic.destroy()\n }\n\n /**\n * Opens dialog with a component or message to display and one or two buttons. This method allows you to customize the dialog using parameters and by implementic specific interfaces via component to be displayed. The dialog is only shown if if you subscribe to this function.\n *\n * Displaying component inisde the dialog can be achieved by providing the component class with optional inputs. By default the component will be shown without any interaction with the dialog, however you can implement the following interfaces by your component class to allow for some interactions:\n * - {@link DialogResult} - dialog state will contain dialogResult property\n *\n * - {@link DialogButtonClicked} - on button click ocxDialogButtonClicked function will be called with dialog state as a parameter. You should return true if you want dialog to be close or false if not and add any operations on your component.\n *\n * - {@link DialogPrimaryButtonDisabled} - dialog will use the EventEmitter to determine if the primary button should be disabled\n *\n * - {@link DialogSecondaryButtonDisabled} - dialog will use the EventEmitter to determine if the secondary button should be disabled\n *\n * - {@link DialogCustomButtonsDisabled} - dialog will use the EventEmitter to determine if the custom buttons should be disabled\n *\n * @param title Translation key for dialog title\n * @param componentOrMessage Either a component or a translation key of a message with optional parameters and icon to be displayed next to the message\n * @param primaryButtonTranslationKeyOrDetails Translation key with optional parameters and icon to be displayed next to the text of the button\n * @param secondaryButtonTranslationKeyOrDetails Translation key with optional parameters and icon to be displayed next to the text of the button\n * @param extras Configuration object allowing for customization of the dialog behavior and visual aspects\n * @returns Observable containing dialog state on close\n *\n *\n * @example\n * Display dialog with message and two buttons using translation keys\n *\n * ```\n * // assume 'TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON' and 'REFRESH_BUTTON' are translation keys\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog message with icon and single button\n *\n * ```\n * // Welcome message with question mark icon\n * const dialogMessage = {\n * key: 'WELCOME_MESSAGE',\n * icon: PrimeIcons.QUESTION\n * }\n * this.portalDialogService.openDialog('TITLE_KEY', dialogMessage, 'OK_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog message with two customized buttons\n *\n * ```\n * // Ok button with check icon\n * const primaryButton = {\n * key: 'OK_BUTTON',\n * icon: PrimeIcons.CHECK\n * tooltipKey: 'OK_TOOLTIP',\n * tooltipPosition: 'bottom'\n * }\n *\n * // Refresh button with refresh icon\n * const secondaryButton = {\n * key: 'REFRESH_BUTTON',\n * icon: PrimeIcons.REFRESH\n * tooltipKey: 'REFRESH_TOOLTIP',\n * tooltipPosition: 'right'\n * }\n *\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', primaryButton, secondaryButton).subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog message without X button in top right corner\n *\n * ```\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON', false).subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * React on dialog closing\n *\n * ```\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog with component\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <h1>{{header | translate}}</h1>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string>, DialogButtonClicked, DialogPrimaryButtonDisabled, DialogSecondaryButtonDisabled {\n * ⁣@Input() header: string = ''\n * // change value to manipulate component state visible by dialog\n * dialogResult: string = ''\n * // emit true/false to disable primary button\n * ⁣@Output() primaryButtonEnabled: EventEmitter<boolean> = new EventEmitter()\n * // emit true/false to disable secondary button\n * ⁣@Output() secondaryButtonEnabled: EventEmitter<boolean> = new EventEmitter()\n *\n * // implement operations to be done on button clicks and return if the dialog should be closed\n * ocxDialogButtonClicked(state: DialogState<string>) {\n * return true\n * }\n *\n * onInputChange(event: any) {\n * this.dialogResult = event.target.value\n * }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * const myComponent = {\n * type: MyInputComponent,\n * inputs: {\n * header: 'DIALOG_HEADER'\n * }\n * }\n * this.portalDialogService.openDialog('TITLE_KEY', myComponent, 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog with component without passing inputs\n *\n * ## PortalDialogService call\n * ```\n * this.portalDialogService.openDialog('TITLE_KEY', MyInputComponent, 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n */\n openDialog<T>(\n title: TranslationKey | null,\n componentOrMessage: Type<any> | Type<DialogResult<T>> | Component<T> | TranslationKey | DialogMessage,\n primaryButtonTranslationKeyOrDetails: TranslationKey | ButtonDialogButtonDetails,\n secondaryButtonTranslationKeyOrDetails?: TranslationKey | ButtonDialogButtonDetails,\n extras?: PortalDialogConfig\n ): Observable<DialogState<T>>\n openDialog<T>(\n title: TranslationKey | null,\n componentOrMessage: Type<any> | Type<DialogResult<T>> | Component<T> | TranslationKey | DialogMessage,\n primaryButtonTranslationKeyOrDetails: TranslationKey | ButtonDialogButtonDetails,\n secondaryButtonTranslationKeyOrDetails?: TranslationKey | ButtonDialogButtonDetails,\n extrasOrShowXButton: PortalDialogConfig | boolean = {}\n ): Observable<DialogState<T>> {\n const dialogOptions: PortalDialogConfig =\n typeof extrasOrShowXButton === 'object'\n ? extrasOrShowXButton\n : {\n showXButton: extrasOrShowXButton,\n }\n const translateParams = this.prepareTitleForTranslation(title)\n\n const componentToRender: Component<any> = this.getComponentToRender(componentOrMessage)\n const dynamicDialogDataConfig: ButtonDialogData = {\n component: componentToRender.type as Type<any>,\n config: {\n primaryButtonDetails: this.buttonDetailsOrTranslationKey(primaryButtonTranslationKeyOrDetails),\n secondaryButtonIncluded: secondaryButtonTranslationKeyOrDetails !== undefined,\n secondaryButtonDetails: this.buttonDetailsOrTranslationKey(secondaryButtonTranslationKeyOrDetails),\n customButtons: dialogOptions.customButtons?.map(\n (button) => this.buttonDetailsOrTranslationKey(button) as ButtonDialogCustomButtonDetails\n ),\n autoFocusButton: dialogOptions.autoFocusButton,\n autoFocusButtonCustomId: dialogOptions.autoFocusButtonCustomId,\n },\n componentData: componentToRender.inputs,\n }\n\n return this.translateService.get(translateParams.key, translateParams.parameters).pipe(\n mergeMap((dialogTitle) => {\n const dialogRef = this.dialogService.open(DialogContentComponent, {\n header: dialogTitle,\n data: {\n ...dynamicDialogDataConfig,\n portalDialogServiceData: {\n primaryButtonEnabled$: new EventEmitter(),\n secondaryButtonEnabled$: new EventEmitter(),\n customButtonEnabled$: new EventEmitter(),\n buttonClicked$: new EventEmitter(),\n } satisfies PortalDialogServiceData,\n },\n closable: dialogOptions.showXButton && secondaryButtonTranslationKeyOrDetails !== undefined,\n modal: true,\n ...dialogOptions,\n focusOnShow: false,\n appendTo: 'body', // Important for the function findBodyChild\n duplicate: true, // Since dialog always opens DialogContentComponent, duplicates must be always allowed\n templates: {\n footer: DialogFooterComponent,\n },\n })\n this.setScopeIdentifier(this.dialogService.getInstance(dialogRef))\n return dialogRef.onClose\n })\n )\n }\n\n private cleanupAndCloseDialog() {\n if (this.dialogService.dialogComponentRefMap.size > 0) {\n this.dialogService.dialogComponentRefMap.forEach((_, dialogRef) => {\n const dialogComponent = this.dialogService.getInstance(dialogRef)\n dialogRef.close()\n this.removeDialogFromHtml(dialogComponent)\n })\n }\n }\n\n private removeDialogFromHtml(dialogComponent: DynamicDialogComponent) {\n const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n bodyChild && document.body.removeChild(bodyChild)\n }\n\n private setScopeIdentifier(dialogComponent: DynamicDialogComponent) {\n getScopeIdentifier(\n this.appStateService,\n this.skipStyleScoping ?? undefined,\n this.remoteComponentConfig ?? undefined\n ).then((scopeId) => {\n const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n if (bodyChild) {\n bodyChild.dataset[dataStyleIdKey] = scopeId\n bodyChild.dataset[dataNoPortalLayoutStylesKey] = ''\n }\n })\n }\n\n private findDialogComponentBodyChild(dialogComponent: DynamicDialogComponent) {\n const element = dialogComponent.el.nativeElement\n if (!element) return\n return this.findBodyChild(element)\n }\n\n private findBodyChild(element: HTMLElement) {\n let currentNode = element\n while (currentNode.parentElement && currentNode.parentElement != document.body) {\n currentNode = currentNode.parentElement\n }\n return currentNode.parentElement === document.body ? currentNode : undefined\n }\n\n private prepareTitleForTranslation(title: TranslationKey | null): TranslationKeyWithParameters {\n if (!title) return { key: '', parameters: {} }\n if (this.isString(title)) return { key: title, parameters: {} }\n return title\n }\n\n private buttonDetailsOrTranslationKey(\n buttonTranslationKeyOrDetails:\n | TranslationKey\n | ButtonDialogButtonDetails\n | ButtonDialogCustomButtonDetails\n | undefined\n ): ButtonDialogButtonDetails | ButtonDialogCustomButtonDetails | undefined {\n if (buttonTranslationKeyOrDetails === undefined) {\n return undefined\n }\n\n let buttonDetails\n\n if (this.isString(buttonTranslationKeyOrDetails)) {\n buttonDetails = {\n key: buttonTranslationKeyOrDetails,\n }\n } else {\n buttonDetails = buttonTranslationKeyOrDetails\n }\n\n return buttonDetails\n }\n\n private getComponentToRender(\n componentOrMessage: Type<any> | Type<DialogResult<any>> | Component<any> | TranslationKey | DialogMessage\n ): Component<any> {\n if (this.isTranslationKey(componentOrMessage)) {\n return {\n type: DialogMessageContentComponent,\n inputs: {\n message: this.isString(componentOrMessage) ? componentOrMessage : componentOrMessage.key,\n messageParameters: this.isString(componentOrMessage) ? {} : componentOrMessage.parameters,\n },\n }\n } else if (this.isDialogMessage(componentOrMessage)) {\n return {\n type: DialogMessageContentComponent,\n inputs: {\n message: this.isString(componentOrMessage.message)\n ? componentOrMessage.message\n : componentOrMessage.message.key,\n icon: componentOrMessage.icon,\n messageParameters: this.isString(componentOrMessage.message) ? {} : componentOrMessage.message.parameters,\n },\n }\n } else if (this.isType(componentOrMessage)) {\n return {\n type: componentOrMessage,\n }\n }\n return componentOrMessage\n }\n\n private isTranslationKey(obj: any): obj is TranslationKey {\n return this.isString(obj) || ('key' in obj && 'parameters' in obj)\n }\n\n private isString(obj: any): obj is string {\n return typeof obj === 'string' || obj instanceof String\n }\n\n private isDialogMessage(obj: any): obj is DialogMessage {\n return 'message' in obj && 'icon' in obj\n }\n\n private isType(obj: any): obj is Type<any> {\n return obj instanceof Type\n }\n}\n\nexport function providePortalDialogService() {\n return [DialogService, PortalDialogService]\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateUtils {\n protected locale = inject(LOCALE_ID)\n\n options: Intl.DateTimeFormatOptions = {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }\n\n localizedDate(date: string | number | Date | undefined): string {\n return date\n ? new Intl.DateTimeFormat(this.locale, this.options).format(date instanceof Date ? date : new Date(date))\n : ''\n }\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { Observable, firstValueFrom, map, of } from 'rxjs'\nimport { DateUtils } from '../utils/dateutils'\nimport { ColumnType } from '../model/column-type.model'\nimport { ObjectUtils } from '../utils/objectutils'\n\n@Injectable({ providedIn: 'any' })\nexport class ExportDataService {\n private readonly dateUtils = inject(DateUtils)\n private readonly translateService = inject(TranslateService)\n private readonly locale = inject(LOCALE_ID)\n\n async exportCsv<T extends string | number | symbol>(\n columns: { id: string; nameKey: string; columnType: ColumnType }[],\n data: Partial<Record<T, unknown | undefined>>[],\n fileName: string\n ): Promise<void> {\n if (!columns.length) {\n return\n }\n const flattenedData = data.map((d) =>\n columns.reduce((obj, c) => ({ ...obj, [c.id]: ObjectUtils.resolveFieldData(d, c.id) }), {})\n )\n const translatedData = await firstValueFrom(this.translateData(columns, flattenedData))\n const dataToExport = this.formatData(columns, translatedData)\n const delimiter = this.locale.startsWith('de') ? ';' : ','\n const dataString = dataToExport\n .map((d) =>\n columns\n .reduce((arr: unknown[], c) => [...arr, d[c.id]], [])\n .map((d) => this.escapeDelimiterAndLineBreaks(delimiter, d))\n .join(delimiter)\n )\n .join('\\r\\n')\n const headerString = (await firstValueFrom(this.translateColumnNames(columns)))\n .map((c) => c.name)\n .map((c) => this.escapeDelimiterAndLineBreaks(delimiter, c))\n .join(delimiter)\n\n const csvString = headerString + '\\r\\n' + dataString\n\n const blob = new Blob(['\\ufeff' + csvString], {\n type: 'text/csv;charset=utf-8;',\n })\n const dwldLink = document.createElement('a')\n const url = URL.createObjectURL(blob)\n\n dwldLink.setAttribute('href', url)\n\n dwldLink.setAttribute('download', fileName)\n dwldLink.click()\n }\n\n private translateColumnNames(\n columns: { id: string; nameKey: string; columnType: ColumnType }[]\n ): Observable<{ id: string; name: string; columnType: ColumnType }[]> {\n return this.translateService\n .get(columns.map((c) => c.nameKey))\n .pipe(map((translations) => columns.map((c) => ({ ...c, name: translations[c.nameKey] }))))\n }\n\n private formatData(\n columns: { id: string; nameKey: string; columnType: ColumnType }[],\n data: Record<string, unknown>[]\n ): { [columnId: string]: unknown }[] {\n return data.map((d) =>\n columns.reduce((obj, c) => {\n if (c.columnType === ColumnType.DATE || c.columnType === ColumnType.RELATIVE_DATE) {\n return {\n ...obj,\n [c.id]: this.dateUtils.localizedDate(d[c.id] ? String(d[c.id]) : undefined),\n }\n }\n return { ...obj, [c.id]: d[c.id] }\n }, {})\n )\n }\n\n private translateData(\n columns: { id: string; nameKey: string; columnType: ColumnType }[],\n data: Record<string, unknown>[]\n ): Observable<{ [columnId: string]: unknown }[]> {\n let translationKeys: string[] = []\n const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n translatedColumns.forEach((c) => {\n translationKeys = [...translationKeys, ...data.map((i) => i[c.id]?.toString() ?? '')]\n })\n if (translationKeys.length) {\n return this.translateService.get(translationKeys).pipe(\n map((translatedValues: Record<string, string>) => {\n return data.map((d) =>\n columns.reduce(\n (obj, c) => ({\n ...obj,\n [c.id]: c.columnType === ColumnType.TRANSLATION_KEY ? translatedValues[String(d[c.id])] : d[c.id],\n }),\n {}\n )\n )\n })\n )\n }\n return of(data)\n }\n\n private escapeDelimiterAndLineBreaks(delimiter: ';' | ',', data: unknown) {\n if (data === null || data === undefined) {\n return data\n }\n\n let str = String(data)\n\n if (str.includes('\"')) {\n str = str.replaceAll('\"', '\"\"')\n }\n\n if (str.includes(delimiter) || str.includes('\\n') || str.includes('\\r')) {\n str = `\"${str}\"`\n }\n return str\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\n\nconst DIVISIONS: { amount: number; name: Intl.RelativeTimeFormatUnit }[] = [\n { amount: 60, name: 'seconds' },\n { amount: 60, name: 'minutes' },\n { amount: 24, name: 'hours' },\n { amount: 7, name: 'days' },\n { amount: 4.34524, name: 'weeks' },\n { amount: 12, name: 'months' },\n { amount: Number.POSITIVE_INFINITY, name: 'years' },\n]\n\n@Pipe({\n name: 'relativeDate',\n standalone: false,\n})\nexport class RelativeDatePipe implements PipeTransform {\n private readonly translateService = inject(TranslateService)\n\n rtf: Intl.RelativeTimeFormat\n\n constructor() {\n this.rtf = new Intl.RelativeTimeFormat(this.translateService.currentLang, {\n style: 'long',\n })\n }\n\n transform(value: any): any {\n let date: Date = new Date()\n switch (typeof value) {\n case 'string':\n date = new Date(value)\n break\n case 'object':\n date = value\n break\n default:\n break\n }\n\n let duration = (date.getTime() - new Date().getTime()) / 1000\n for (let i = 0; i <= DIVISIONS.length; i++) {\n const division = DIVISIONS[i]\n if (Math.abs(duration) < division.amount) {\n return this.rtf.format(Math.round(duration), division.name)\n }\n duration /= division.amount\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { SelectModule } from 'primeng/select'\nimport { ButtonModule } from 'primeng/button'\nimport { DialogModule } from 'primeng/dialog'\nimport { PickListModule } from 'primeng/picklist'\nimport { SelectButtonModule } from 'primeng/selectbutton'\nimport { DataViewModule } from 'primeng/dataview'\nimport { TableModule } from 'primeng/table'\nimport { MenuModule } from 'primeng/menu'\nimport { ChartModule } from 'primeng/chart'\nimport { MultiSelectModule } from 'primeng/multiselect'\nimport { BreadcrumbModule } from 'primeng/breadcrumb'\nimport { SkeletonModule } from 'primeng/skeleton'\nimport { MessageModule } from 'primeng/message'\nimport { SharedModule } from 'primeng/api'\nimport { CheckboxModule } from 'primeng/checkbox'\nimport { FloatLabelModule } from 'primeng/floatlabel'\nimport { ChipModule } from 'primeng/chip'\nimport { PopoverModule } from 'primeng/popover'\nimport { FocusTrapModule } from 'primeng/focustrap'\nimport { TooltipModule } from 'primeng/tooltip'\nimport { providePrimeNG } from 'primeng/config'\nimport { TimelineModule } from 'primeng/timeline'\n\n@NgModule({\n imports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n SelectModule,\n ButtonModule,\n DialogModule,\n PickListModule,\n SelectButtonModule,\n DataViewModule,\n TableModule,\n MenuModule,\n ChartModule,\n MultiSelectModule,\n SkeletonModule,\n MessageModule,\n FloatLabelModule,\n PopoverModule,\n FocusTrapModule,\n TooltipModule,\n TimelineModule,\n SelectButtonModule,\n SharedModule,\n ],\n exports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n SelectModule,\n ButtonModule,\n DialogModule,\n PickListModule,\n SelectButtonModule,\n DataViewModule,\n TableModule,\n MenuModule,\n ChartModule,\n MultiSelectModule,\n SkeletonModule,\n MessageModule,\n FloatLabelModule,\n PopoverModule,\n FocusTrapModule,\n TooltipModule,\n TimelineModule,\n SelectButtonModule,\n SharedModule,\n ],\n providers: [providePrimeNG()],\n})\nexport class AngularAcceleratorPrimeNgModule {}\n","import { UserService } from '@onecx/angular-integration-interface'\n\n/**\n * @deprecated Use DynamicLocaleId from @onecx/angular-utils instead\n */\nexport class DynamicLocaleId {\n constructor(private userService: UserService) {\n Object.getOwnPropertyNames(String.prototype).forEach((k) => {\n if (k != 'valueOf' && k != 'length') {\n ;(this as any)[k] = function (...args: any[]) {\n const str = this.valueOf()\n return str[k](...args)\n }\n }\n })\n }\n\n valueOf() {\n return this.userService.lang$.getValue()\n }\n\n public get length(): number {\n return this.valueOf().length\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { APP_INITIALIZER, LOCALE_ID, NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { RouterModule } from '@angular/router'\nimport { TranslateModule } from '@ngx-translate/core'\n\nimport { AppConfigService, UserService } from '@onecx/angular-integration-interface'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\n\nimport { firstValueFrom, skip } from 'rxjs'\nimport { AngularAcceleratorPrimeNgModule } from './angular-accelerator-primeng.module'\nimport { ColumnGroupSelectionComponent } from './components/column-group-selection/column-group-selection.component'\nimport { CustomGroupColumnSelectorComponent } from './components/custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponent } from './components/data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponent } from './components/data-list-grid-sorting/data-list-grid-sorting.component'\nimport { DataListGridComponent } from './components/data-list-grid/data-list-grid.component'\nimport { DataTableComponent } from './components/data-table/data-table.component'\nimport { DataViewComponent } from './components/data-view/data-view.component'\nimport { DiagramComponent } from './components/diagram/diagram.component'\nimport { GroupByCountDiagramComponent } from './components/group-by-count-diagram/group-by-count-diagram.component'\nimport { InteractiveDataViewComponent } from './components/interactive-data-view/interactive-data-view.component'\nimport { PageHeaderComponent } from './components/page-header/page-header.component'\nimport { SearchHeaderComponent } from './components/search-header/search-header.component'\nimport { AdvancedDirective } from './directives/advanced.directive'\nimport { IfBreakpointDirective } from './directives/if-breakpoint.directive'\nimport { IfPermissionDirective } from './directives/if-permission.directive'\nimport {\n providePermissionChecker,\n provideTranslationConnectionService,\n provideTranslationPathFromMeta,\n MultiLanguageMissingTranslationHandler,\n} from '@onecx/angular-utils'\nimport { SrcDirective } from './directives/src.directive'\nimport { TooltipOnOverflowDirective } from './directives/tooltipOnOverflow.directive'\nimport { DynamicPipe } from './pipes/dynamic.pipe'\nimport { OcxTimeAgoPipe } from './pipes/ocxtimeago.pipe'\nimport { DynamicLocaleId } from './utils/dynamic-locale-id'\nimport { FilterViewComponent } from './components/filter-view/filter-view.component'\nimport { TemplateDirective } from './directives/template.directive'\nimport { OcxContentComponent } from './components/content/content.component'\nimport { OcxContentContainerComponent } from './components/content-container/content-container.component'\nimport { OcxContentDirective } from './directives/content.directive'\nimport { OcxContentContainerDirective } from './directives/content-container.directive'\nimport { LifecycleComponent } from './components/lifecycle/lifecycle.component'\nimport { DialogMessageContentComponent } from './components/dialog/dialog-message-content/dialog-message-content.component'\nimport { DialogContentComponent } from './components/dialog/dialog-content/dialog-content.component'\nimport { DialogFooterComponent } from './components/dialog/dialog-footer/dialog-footer.component'\nimport { DialogInlineComponent } from './components/dialog/dialog-inline/dialog-inline.component'\nimport { GlobalErrorComponent } from './components/error-component/global-error.component'\nimport { LoadingIndicatorComponent } from './components/loading-indicator/loading-indicator.component'\nimport { BasicDirective } from './directives/basic.directive'\nimport { LoadingIndicatorDirective } from './directives/loading-indicator.directive'\nimport { MessageService } from 'primeng/api'\n\nexport class AngularAcceleratorMissingTranslationHandler extends MultiLanguageMissingTranslationHandler {}\n\nfunction appInitializer(userService: UserService) {\n return async () => {\n await firstValueFrom(userService.lang$.pipe(skip(1)))\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AngularAcceleratorPrimeNgModule,\n AngularRemoteComponentsModule,\n TranslateModule,\n FormsModule,\n RouterModule,\n ReactiveFormsModule,\n ],\n declarations: [\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridSortingComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n LifecycleComponent,\n PageHeaderComponent,\n DynamicPipe,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n OcxContentComponent,\n OcxContentContainerComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\n TemplateDirective,\n OcxContentDirective,\n OcxContentContainerDirective,\n GlobalErrorComponent,\n LoadingIndicatorComponent,\n LoadingIndicatorDirective,\n BasicDirective,\n DialogFooterComponent,\n DialogContentComponent,\n DialogInlineComponent,\n DialogMessageContentComponent,\n ],\n providers: [\n providePermissionChecker(),\n {\n provide: LOCALE_ID,\n useClass: DynamicLocaleId,\n deps: [UserService],\n },\n {\n provide: APP_INITIALIZER,\n useFactory: appInitializer,\n deps: [UserService],\n multi: true,\n },\n provideTranslationPathFromMeta(import.meta.url, 'onecx-angular-accelerator/assets/i18n/'),\n provideTranslationPathFromMeta(import.meta.url, 'onecx-angular-accelerator/assets/i18n/primeng/'),\n {\n provide: MessageService,\n useClass: MessageService,\n },\n AppConfigService,\n provideTranslationConnectionService(),\n ],\n exports: [\n AngularRemoteComponentsModule,\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n LifecycleComponent,\n PageHeaderComponent,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n OcxContentComponent,\n OcxContentContainerComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\n TemplateDirective,\n OcxContentDirective,\n OcxContentContainerDirective,\n GlobalErrorComponent,\n LoadingIndicatorComponent,\n LoadingIndicatorDirective,\n BasicDirective,\n DialogFooterComponent,\n DialogContentComponent,\n DialogInlineComponent,\n DialogMessageContentComponent,\n ],\n})\nexport class AngularAcceleratorModule {}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms'\n\nexport const atLeastOneFieldFilledValidator: ValidatorFn = (form: AbstractControl): ValidationErrors | null => {\n if (Object.values(form.value).every((x) => x === null || x === undefined || x === '')) {\n return { allFieldsEmpty: true }\n }\n return null\n}\n","import { DataTableColumn } from '../model/data-table-column.model'\nimport { Filter, FilterObject } from '../model/filter.model'\nimport { ObjectUtils } from './objectutils'\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport abstract class DataOperationStrategy {\n endsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('endsWith method not implemented')\n return true\n }\n\n startsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('startsWith method not implemented')\n return true\n }\n\n contains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('contains method not implemented')\n return true\n }\n\n notContains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('notContains method not implemented')\n return true\n }\n\n equals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('equals method not implemented')\n return true\n }\n\n notEquals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('notEquals method not implemented')\n return true\n }\n\n lessThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('lessThan method not implemented')\n return true\n }\n\n greaterThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('greaterThan method not implemented')\n return true\n }\n\n lessThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('lessThanOrEqual method not implemented')\n return true\n }\n\n greaterThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('greaterThanOrEqual method not implemented')\n return true\n }\n\n isEmpty(column: DataTableColumn, value: unknown): boolean {\n console.error('isEmpty method not implemented')\n return true\n }\n\n isNotEmpty(column: DataTableColumn, value: unknown): boolean {\n console.error('isNotEmpty method not implemented')\n return true\n }\n\n compare(a: unknown, b: unknown, column: DataTableColumn): number {\n console.error('compare method not implemented')\n return 0\n }\n\n filterOptions(hayStack: unknown[], filterObject: FilterObject, columns: DataTableColumn[]): unknown[] {\n const hayStackOptions = hayStack.map((item) => this.mapHaystackItemToValue(item, filterObject))\n const column = columns.find((c) => c.id === filterObject.columnId)\n if (!column) {\n console.warn('Filter does not have a column id set. All items will be considered a valid option')\n return hayStackOptions\n }\n return hayStackOptions.filter(\n (item, index, self) => index === self.findIndex((t) => this.compare(t, item, column) === 0)\n )\n }\n\n filter(hayStack: unknown[], filter: Filter, columns: DataTableColumn[]): unknown[] {\n const { filterType, value } = filter\n if (!filterType) {\n console.warn('Filter does not have a type set. All items will resolve as true')\n return hayStack\n }\n const column = columns.find((c) => c.id === filter.columnId)\n if (!column) {\n console.warn('Filter does not have a column id set. All items will be considered a valid option')\n return hayStack\n }\n return hayStack.filter((item) => this[filterType](column, this.mapHaystackItemToValue(item, filter), value))\n }\n\n mapHaystackItemToValue(item: unknown, filter: Filter | FilterObject) {\n return ObjectUtils.resolveFieldData(item, filter.columnId)\n }\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map } from 'rxjs'\n\nexport function enumToDropdownOptions<T extends object>(\n translateService: TranslateService,\n enumType: T,\n translationKeyPrefix: string\n): Observable<{ label: string; value: T }[]> {\n return translateService.get(Object.values(enumType).map((v) => translationKeyPrefix + v)).pipe(\n map((translations) =>\n Object.values(enumType).map((v) => ({\n label: translations[translationKeyPrefix + v],\n value: v,\n }))\n )\n )\n}\n","import { QueryList } from '@angular/core'\nimport { getUTCDateWithoutTimezoneIssues, isValidDate } from '@onecx/accelerator'\nimport { DatePicker } from 'primeng/datepicker'\n\nexport type hasShowTimeFunction = (key: string) => boolean\n/**\n * removeNullValues: whether to remove entries from the search criteria where the value is null\n */\nexport interface BuildSearchCriteriaParameters {\n removeNullValues: boolean\n}\n\nfunction _hasShowTime(datePickers: QueryList<DatePicker>, formKey: string): boolean {\n return (\n datePickers.find((d) => {\n return d.name === formKey\n })?.showTime === true\n )\n}\n\n/**\n * Safely builds the search criteria based on form values\n * @param formRawValue the raw value of the form to use\n * @param datePickers a list of primeng datePickers of the form (use `@ViewChildren(DatePicker) datePickers!: QueryList<DatePicker>;`)\n * @param parameters {@link BuildSearchCriteriaParameters} to use when building the search criteria\n * @returns the search criteria as a partial of T (T = type of the search criteria)\n */\nexport function buildSearchCriteria<T>(\n formRawValue: any,\n datePickers: QueryList<DatePicker>,\n { removeNullValues = false }: BuildSearchCriteriaParameters\n) {\n return Object.entries(formRawValue).reduce((acc: Partial<T>, [key, value]) => {\n if (value == null && removeNullValues) {\n return acc\n }\n if (isValidDate(value) && !_hasShowTime(datePickers, key)) {\n value = getUTCDateWithoutTimezoneIssues(value)\n }\n return {\n ...acc,\n [key]: value,\n }\n }, {})\n}\n","export function findEntryWithKeyword(\n array: string[] | undefined,\n keyword: string,\n): string | null {\n const entry = array?.find((entry) => entry.includes(keyword));\n return entry || null;\n}\n\nexport function removeKeyword(input: string, keyword: string): string {\n let result = input.replace(new RegExp(`/${keyword}.*`), '');\n if (result.endsWith('/')) {\n result = result.slice(0, -1);\n }\n return result;\n}\n\nexport function searchPrefixWithSpecialChars(\n strings: string[],\n prefix: string,\n): string | null {\n for (let i = strings.length - 1; i >= 0; i--) {\n const str = strings[i];\n if (\n str.startsWith(prefix) &&\n (str[prefix.length] === '?' || str[prefix.length] === '#')\n ) {\n return str;\n }\n }\n return null;\n}\n","export class ImageLogoUrlUtils {\n public static createLogoUrl(apiPrefix: string, url?: string): string | undefined {\n //if the url is from the backend, then we insert the apiPrefix\n if ((url && !url.match(/^(http|https)/g)) ) {\n return apiPrefix + url\n } else {\n return url\n }\n }\n}","// injection tokens + related utilities\n\n// directives\nexport * from './lib/directives/content-container.directive'\nexport * from './lib/directives/content.directive'\nexport * from './lib/directives/if-permission.directive'\nexport * from './lib/directives/if-breakpoint.directive'\nexport * from './lib/directives/src.directive'\nexport * from './lib/directives/advanced.directive'\nexport * from './lib/directives/tooltipOnOverflow.directive'\nexport * from './lib/directives/template.directive'\nexport * from './lib/directives/basic.directive'\nexport * from './lib/directives/loading-indicator.directive'\n\n// components\nexport * from './lib/components/column-group-selection/column-group-selection.component'\nexport * from './lib/components/content/content.component'\nexport * from './lib/components/content-container/content-container.component'\nexport * from './lib/components/custom-group-column-selector/custom-group-column-selector.component'\nexport * from './lib/components/data-layout-selection/data-layout-selection.component'\nexport * from './lib/components/data-list-grid/data-list-grid.component'\nexport * from './lib/components/data-list-grid-sorting/data-list-grid-sorting.component'\nexport * from './lib/components/data-table/data-table.component'\nexport * from './lib/components/data-view/data-view.component'\nexport * from './lib/components/diagram/diagram.component'\nexport * from './lib/components/filter-view/filter-view.component'\nexport * from './lib/components/group-by-count-diagram/group-by-count-diagram.component'\nexport * from './lib/components/interactive-data-view/interactive-data-view.component'\nexport * from './lib/components/lifecycle/lifecycle.component'\nexport * from './lib/components/page-header/page-header.component'\nexport * from './lib/components/search-header/search-header.component'\nexport * from './lib/components/dialog/dialog-message-content/dialog-message-content.component'\nexport * from './lib/components/loading-indicator/loading-indicator.component'\nexport * from './lib/components/dialog/dialog-content/dialog-content.component'\nexport * from './lib/components/dialog/dialog-inline/dialog-inline.component'\nexport * from './lib/components/dialog/dialog-footer/dialog-footer.component'\nexport * from './lib/components/error-component/global-error.component'\n\n// services\nexport * from './lib/services/breadcrumb.service'\nexport * from './lib/services/portal-dialog.service'\nexport * from './lib/services/export-data.service'\n\n// pipes\nexport * from './lib/pipes/dynamic.pipe'\nexport * from './lib/pipes/ocxtimeago.pipe'\nexport * from './lib/pipes/relative-date.pipe'\n\n// models\nexport * from './lib/model/breadcrumb-menu-item.model'\nexport * from './lib/model/column-type.model'\nexport * from './lib/model/data-action'\nexport * from './lib/model/button-dialog'\n\n// export * from './lib/model/data-column-name-id.model'\nexport * from './lib/model/data-sort-direction'\nexport * from './lib/model/data-table-column.model'\nexport * from './lib/model/diagram-column'\n// export * from './lib/model/diagram-data'\nexport * from './lib/model/diagram-type'\nexport * from './lib/model/filter.model'\n\n// core\nexport * from './lib/angular-accelerator.module'\nexport * from './lib/angular-accelerator-primeng.module'\n\n// functions\nexport * from './lib/functions/flatten-object'\nexport * from './lib/functions/at-least-one-field-filled-validator'\n\n// utils\nexport * from './lib/utils/colorutils'\nexport * from './lib/utils/data-operation-strategy'\nexport * from './lib/utils/dateutils'\nexport * from './lib/utils/objectutils'\nexport * from './lib/utils/primeicon.utils'\nexport * from './lib/utils/enum-to-dropdown-options.utils'\nexport * from './lib/utils/criteria.utils'\nexport * from './lib/utils/string-and-array-helper-functions.utils'\nexport * from './lib/utils/template.utils'\nexport * from './lib/utils/filter.utils'\nexport * from './lib/utils/image-logo-url.utils'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i6","i7.SrcDirective","i9.DynamicPipe","i2","i4","i5","i6.PageHeaderComponent","i7.IfPermissionDirective","i1","i2.OcxContentDirective","i2.OcxContentContainerDirective","i7","i8","i9.IfPermissionDirective","i10.TooltipOnOverflowDirective","i11","i12.OcxTimeAgoPipe","i9","i10","i11.IfPermissionDirective","i12","i13.OcxTimeAgoPipe","i2.DataListGridComponent","i3.DataTableComponent","i8.DataTableComponent","i9.IfBreakpointDirective","i11.OcxTimeAgoPipe","i1.DiagramComponent","i4.ColumnGroupSelectionComponent","i5.CustomGroupColumnSelectorComponent","i6.DataLayoutSelectionComponent","i7.DataListGridSortingComponent","i8.DataViewComponent","i10.FilterViewComponent","i1.DialogFooterComponent","i2.DialogContentComponent"],"mappings":"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"}
1
+ {"version":3,"file":"onecx-angular-accelerator.mjs","sources":["../../../../libs/angular-accelerator/src/lib/directives/content-container.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/content.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/if-permission.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/if-breakpoint.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/src.directive.ts","../../../../libs/angular-accelerator/src/lib/services/breadcrumb.service.ts","../../../../libs/angular-accelerator/src/lib/pipes/dynamic.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.html","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.html","../../../../libs/angular-accelerator/src/lib/directives/advanced.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/tooltipOnOverflow.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/template.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/basic.directive.ts","../../../../libs/angular-accelerator/src/lib/components/loading-indicator/loading-indicator.component.ts","../../../../libs/angular-accelerator/src/lib/components/loading-indicator/loading-indicator.component.html","../../../../libs/angular-accelerator/src/lib/directives/loading-indicator.directive.ts","../../../../libs/angular-accelerator/src/lib/components/column-group-selection/column-group-selection.component.ts","../../../../libs/angular-accelerator/src/lib/components/column-group-selection/column-group-selection.component.html","../../../../libs/angular-accelerator/src/lib/components/content/content.component.ts","../../../../libs/angular-accelerator/src/lib/components/content/content.component.html","../../../../libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts","../../../../libs/angular-accelerator/src/lib/components/content-container/content-container.component.html","../../../../libs/angular-accelerator/src/lib/components/custom-group-column-selector/custom-group-column-selector.component.ts","../../../../libs/angular-accelerator/src/lib/components/custom-group-column-selector/custom-group-column-selector.component.html","../../../../libs/angular-accelerator/src/lib/components/data-layout-selection/data-layout-selection.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-layout-selection/data-layout-selection.component.html","../../../../libs/angular-accelerator/src/lib/model/column-type.model.ts","../../../../libs/angular-accelerator/src/lib/utils/objectutils.ts","../../../../libs/angular-accelerator/src/lib/functions/flatten-object.ts","../../../../libs/angular-accelerator/src/lib/model/filter.model.ts","../../../../libs/angular-accelerator/src/lib/components/data-sort-base/data-sort-base.ts","../../../../libs/angular-accelerator/src/lib/pipes/ocxtimeago.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid/data-list-grid.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid/data-list-grid.component.html","../../../../libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html","../../../../libs/angular-accelerator/src/lib/utils/template.utils.ts","../../../../libs/angular-accelerator/src/lib/components/data-table/data-table.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-table/data-table.component.html","../../../../libs/angular-accelerator/src/lib/utils/rxjs-utils.ts","../../../../libs/angular-accelerator/src/lib/components/data-view/data-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/data-view/data-view.component.html","../../../../libs/angular-accelerator/src/lib/utils/colorutils.ts","../../../../libs/angular-accelerator/src/lib/components/diagram/diagram.component.ts","../../../../libs/angular-accelerator/src/lib/components/diagram/diagram.component.html","../../../../libs/angular-accelerator/src/lib/utils/filter.utils.ts","../../../../libs/angular-accelerator/src/lib/components/filter-view/filter-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/filter-view/filter-view.component.html","../../../../libs/angular-accelerator/src/lib/components/group-by-count-diagram/group-by-count-diagram.component.ts","../../../../libs/angular-accelerator/src/lib/components/group-by-count-diagram/group-by-count-diagram.component.html","../../../../libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.ts","../../../../libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html","../../../../libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.ts","../../../../libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-message-content/dialog-message-content.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-message-content/dialog-message-content.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-content/dialog-content.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-content/dialog-content.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-footer/dialog-footer.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-footer/dialog-footer.component.html","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-inline/dialog-inline.component.ts","../../../../libs/angular-accelerator/src/lib/components/dialog/dialog-inline/dialog-inline.component.html","../../../../libs/angular-accelerator/src/lib/components/error-component/global-error.component.ts","../../../../libs/angular-accelerator/src/lib/components/error-component/global-error.component.html","../../../../libs/angular-accelerator/src/lib/services/portal-dialog.service.ts","../../../../libs/angular-accelerator/src/lib/utils/dateutils.ts","../../../../libs/angular-accelerator/src/lib/services/export-data.service.ts","../../../../libs/angular-accelerator/src/lib/pipes/relative-date.pipe.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator-primeng.module.ts","../../../../libs/angular-accelerator/src/lib/utils/dynamic-locale-id.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator.module.ts","../../../../libs/angular-accelerator/src/lib/functions/at-least-one-field-filled-validator.ts","../../../../libs/angular-accelerator/src/lib/utils/data-operation-strategy.ts","../../../../libs/angular-accelerator/src/lib/utils/enum-to-dropdown-options.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/criteria.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/string-and-array-helper-functions.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/image-logo-url.utils.ts","../../../../libs/angular-accelerator/src/index.ts","../../../../libs/angular-accelerator/src/onecx-angular-accelerator.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxContentContainer]', standalone: false })\nexport class OcxContentContainerDirective implements OnInit, OnChanges {\n private el = inject(ElementRef)\n\n /**\n * Used for passing the direction, in which the content inside the container should be rendered.\n * Default: horizontal\n * @example [ocxContentContainer]=\"horizontal\"\n * @example [ocxContentContainer]=\"vertical\"\n */\n @Input() layout: 'horizontal' | 'vertical' = 'horizontal'\n\n /**\n * Used for passing in the breakpoint below which a horizontal layout should switch to a vertical layout.\n * Only necessary if horizontal layout is used\n * Default: md\n */\n @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n ngOnInit() {\n this.el.nativeElement.classList.add('flex', 'gap-3', 'flex-column', 'md:flex-row')\n this.addContainerStyles()\n }\n\n ngOnChanges() {\n this.addContainerStyles()\n }\n\n private addContainerStyles() {\n const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes)\n const removeClasses = (classes: string[]) => this.el.nativeElement.classList.remove(...classes)\n // We need to ensure that all breakpoint dependent flex-row classes are removed from the element\n // This way we can avoid multiple contradictory layout classes and unexpected effects\n const removeResponsiveLayoutClasses = () => {\n const classesToRemove: string[] = []\n const regexPattern = /\\w+:flex-row$/\n this.el.nativeElement.classList.forEach((className: string) => {\n if (regexPattern.test(className)) {\n classesToRemove.push(className)\n }\n })\n removeClasses(classesToRemove)\n }\n const addSharedClasses = () => {\n let styleClasses = Array.from(this.el.nativeElement.classList as string[])\n const defaultClasses = ['gap-3', 'flex-column', 'md:flex-row']\n removeClasses(defaultClasses)\n if (styleClasses.some((cls) => cls.startsWith('gap-') && cls !== 'gap-3')) {\n styleClasses = styleClasses.filter((cls) => !cls.startsWith('gap-3'))\n }\n const flexClasses = ['flex-row', 'flex-row-reverse', 'flex-column-reverse']\n if (styleClasses.some((cls) => flexClasses.includes(cls))) {\n styleClasses = styleClasses.filter((cls) => cls !== 'flex-column')\n }\n if (this.layout != 'vertical') {\n const responsiveLayoutClass = `${this.breakpoint || 'md'}:flex-row`\n styleClasses.push(responsiveLayoutClass)\n }\n addClasses(styleClasses)\n }\n\n removeResponsiveLayoutClasses()\n addSharedClasses()\n }\n}","import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxContent]', standalone: false })\nexport class OcxContentDirective implements OnInit, OnChanges {\n private el = inject(ElementRef)\n\n /**\n * Used for passing a title text which should be rendered in the upper left corner of the content area.\n * @example [ocxContent]=\"My Cool Title\"\n */\n @Input() ocxContent = ''\n\n private baseId = 'ocx_content_title_element'\n private titleElementId: string | undefined\n\n ngOnInit() {\n this.titleElementId = this.getUniqueTitleID(this.baseId)\n this.init()\n }\n\n ngOnChanges() {\n this.init()\n }\n\n private init() {\n this.addContentStyles()\n if (this.ocxContent) {\n this.prependTitle()\n } else {\n this.removeTitle()\n }\n }\n\n private addContentStyles() {\n const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes)\n addClasses(['card'])\n }\n\n private prependTitle() {\n if (this.titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${this.titleElementId}`)\n if (titleElement) {\n titleElement.textContent = this.ocxContent\n } else {\n const title = document.createElement('p')\n title.classList.add('font-medium')\n title.classList.add('text-lg')\n title.id = this.titleElementId\n title.textContent = this.ocxContent\n this.el.nativeElement.prepend(title)\n }\n }\n }\n\n private getUniqueTitleID(baseId: string) {\n let counter = 0\n let generatedID = baseId\n\n while (document.getElementById(generatedID)) {\n generatedID = baseId + counter\n counter++\n }\n\n return generatedID\n }\n\n private removeTitle() {\n if (this.titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${this.titleElementId}`)\n if (titleElement) {\n titleElement.remove()\n }\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Input,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\nimport { BehaviorSubject, from, Observable, of, switchMap } from 'rxjs'\n\n@Directive({ selector: '[ocxIfPermission], [ocxIfNotPermission]', standalone: false })\nexport class IfPermissionDirective implements OnInit {\n private renderer = inject(Renderer2)\n private el = inject(ElementRef)\n private viewContainer = inject(ViewContainerRef)\n private hasPermissionChecker = inject<HasPermissionChecker>(HAS_PERMISSION_CHECKER, { optional: true })\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private userService = inject(UserService, { optional: true })\n\n @Input('ocxIfPermission') set permission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n }\n @Input('ocxIfNotPermission') set notPermission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n this.negate = true\n }\n\n @Input() ocxIfPermissionOnMissingPermission: 'hide' | 'disable' = 'hide'\n @Input() set ocxIfNotPermissionOnMissingPermission(value: 'hide' | 'disable') {\n this.ocxIfPermissionOnMissingPermission = value\n }\n @Input() onMissingPermission: 'hide' | 'disable' = 'hide'\n\n @Input() ocxIfPermissionPermissions: string[] | undefined\n @Input()\n set ocxIfNotPermissionPermissions(value: string[] | undefined) {\n this.ocxIfPermissionPermissions = value\n }\n\n @Input()\n ocxIfPermissionElseTemplate: TemplateRef<any> | undefined\n @Input()\n set ocxIfNotPermissionElseTemplate(value: TemplateRef<any> | undefined) {\n this.ocxIfPermissionElseTemplate = value\n }\n\n private permissionChecker: HasPermissionChecker\n private permissionSubject$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n private isDisabled = false\n private directiveContentRef: EmbeddedViewRef<any> | undefined\n negate = false\n\n constructor() {\n const validChecker = this.hasPermissionChecker || this.userService\n if (!validChecker) {\n throw 'IfPermission requires UserService or HasPermissionChecker to be provided!'\n }\n\n this.permissionChecker = validChecker\n }\n\n ngOnInit() {\n this.permissionSubject$\n .pipe(\n switchMap((permission) => {\n if (!permission) {\n return of(false)\n }\n const permissionsArray = Array.isArray(permission) ? permission : [permission]\n return this.hasPermission(permissionsArray)\n })\n )\n .subscribe((hasPermission) => {\n const shouldShowTemplate = this.negate ? !hasPermission : hasPermission\n if (shouldShowTemplate) {\n return this.showTemplateOrClear()\n }\n\n return this.showElseTemplateOrDefaultView()\n })\n }\n\n private hasPermission(permission: string[]): Observable<boolean> {\n if (this.ocxIfPermissionPermissions) {\n const result = permission.every((p) => this.ocxIfPermissionPermissions?.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission in overwrites for: `', permission)\n }\n return of(result)\n }\n\n if (this.permissionChecker.getPermissions) {\n return this.permissionChecker.getPermissions().pipe(\n switchMap((permissions) => {\n const result = permission.every((p) => permissions.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission from permission checker for: `', permission)\n }\n return of(result)\n })\n )\n }\n\n return from(this.permissionChecker.hasPermission(permission))\n }\n\n private showTemplateOrClear() {\n this.resetView()\n\n if (this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n }\n }\n\n private showElseTemplateOrDefaultView() {\n this.resetView()\n if (this.ocxIfPermissionElseTemplate) {\n this.viewContainer.createEmbeddedView(this.ocxIfPermissionElseTemplate)\n return\n }\n\n if (this.ocxIfPermissionOnMissingPermission === 'disable' && this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n\n const el = this.getElement()\n el && this.renderer.setAttribute(el, 'disabled', 'disabled')\n this.isDisabled = true\n }\n }\n\n private resetView() {\n this.viewContainer.clear()\n if (this.isDisabled) {\n this.isDisabled = false\n const el = this.getElement()\n el && this.renderer.removeAttribute(el, 'disabled')\n }\n }\n\n private getElement(): Node | undefined {\n return this.directiveContentRef?.rootNodes[0]\n }\n}\n","import { Directive, HostListener, Input, OnInit, TemplateRef, ViewContainerRef, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxIfBreakpoint]', standalone: false })\nexport class IfBreakpointDirective implements OnInit {\n private viewContainer = inject(ViewContainerRef)\n private templateRef = inject<TemplateRef<unknown>>(TemplateRef, { optional: true })\n\n @Input('ocxIfBreakpoint') breakpoint: 'mobile' | 'desktop' | undefined\n\n @Input()\n ocxIfBreakpointElseTemplate: TemplateRef<any> | undefined\n\n state: 'mobile' | 'desktop' | undefined\n\n ngOnInit() {\n this.onResize()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n const isDesktop = !isMobile\n const newState = isMobile ? 'mobile' : 'desktop'\n if ((this.breakpoint === 'mobile' && isMobile) || (this.breakpoint === 'desktop' && isDesktop)) {\n if (this.templateRef && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n if (this.ocxIfBreakpointElseTemplate && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.ocxIfBreakpointElseTemplate)\n }\n }\n this.state = newState\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http'\nimport { Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxSrc]', standalone: false })\nexport class SrcDirective {\n private el = inject(ElementRef)\n private httpClient = inject(HttpClient)\n\n private _src: string | undefined\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() error = new EventEmitter<void>()\n\n @Input()\n get ocxSrc(): string | undefined {\n return this._src\n }\n set ocxSrc(value: string | undefined) {\n if (value && this._src !== value && window.location.hostname) {\n try {\n if (new URL(value, window.location.origin).hostname === window.location.hostname) {\n this.httpClient.get(value, { observe: 'response', responseType: 'blob' }).subscribe(\n (response: HttpResponse<Blob>) => {\n // ok with content\n if (response?.status === 200) {\n const url = URL.createObjectURL(response.body as Blob)\n this.el.nativeElement.addEventListener('load', () => {\n URL.revokeObjectURL(url)\n })\n this.el.nativeElement.src = url\n }\n // no content\n if (response?.status === 204) {\n this.error.emit()\n }\n },\n () => {\n // on error\n this.error.emit()\n },\n () => {\n // on complete\n this.el.nativeElement.style.visibility = 'initial'\n }\n )\n } else {\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n } catch (error) {\n console.error('Cannot parse URL ', value, error)\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n this._src = value\n }\n }\n\n constructor() {\n this.el.nativeElement.style.visibility = 'hidden'\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core'\nimport { ActivatedRoute, ActivatedRouteSnapshot, Data, NavigationEnd, ParamMap, Router } from '@angular/router'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport { TranslateService } from '@ngx-translate/core'\nimport { Topic } from '@onecx/accelerator'\nimport { MenuItem } from 'primeng/api'\nimport { BehaviorSubject, filter, map, Observable } from 'rxjs'\nimport { BreadCrumbMenuItem } from '../model/breadcrumb-menu-item.model'\n\ninterface ManualBreadcrumbs {\n menuItems: MenuItem[]\n}\n\n// This topic is defined here and not in integration-interface, because\n// it is not used as framework independent integration but for improving\n// angular specific things\nclass ManualBreadcrumbsTopic extends Topic<ManualBreadcrumbs> {\n constructor() {\n super('manualBreadcrumbs', 1)\n }\n}\n\n@Injectable({ providedIn: 'any' })\n@UntilDestroy()\nexport class BreadcrumbService implements OnDestroy {\n private readonly router = inject(Router)\n private readonly activeRoute = inject(ActivatedRoute)\n private readonly translateService = inject(TranslateService)\n\n private _itemSource$: ManualBreadcrumbsTopic | undefined\n private get itemsSource$() {\n this._itemSource$ ??= new ManualBreadcrumbsTopic()\n return this._itemSource$\n }\n private set itemsSource$(source: ManualBreadcrumbsTopic) {\n this._itemSource$ = source\n }\n generatedItemsSource = new BehaviorSubject<MenuItem[]>([])\n\n _itemsHandler: Observable<MenuItem[]> | undefined\n get itemsHandler() {\n this._itemsHandler ??= this.itemsSource$.pipe(map((manualBreadcrumbs) => manualBreadcrumbs.menuItems))\n return this._itemsHandler\n }\n\n constructor() {\n this.generateBreadcrumbs(this.activeRoute.snapshot)\n this.router.events\n .pipe(\n untilDestroyed(this),\n filter((e) => e instanceof NavigationEnd)\n )\n .subscribe(() => {\n const root = this.router.routerState.snapshot.root\n this.generateBreadcrumbs(root)\n })\n }\n\n ngOnDestroy(): void {\n this._itemSource$?.destroy()\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null) {\n if (route?.data['mfeInfo']) {\n const breadcrumbs: MenuItem[] = [\n {\n label: route.data['mfeInfo'].productName,\n routerLink: route.data['mfeInfo'].baseHref,\n },\n ]\n const baseUrl: string[] = (route.data['mfeInfo'].baseHref as string).split('/').filter((value) => value)\n const parentUrl: string[] = route.url.map((url) => url.path)\n const isUsingMatcher = !parentUrl.every((item) => baseUrl.includes(item))\n if (isUsingMatcher) {\n this.createBreadcrumb(route, parentUrl, breadcrumbs)\n }\n this.addBreadcrumb(route.firstChild, parentUrl, breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route?.data['breadcrumb']) {\n const breadcrumbs: MenuItem[] = []\n this.addBreadcrumb(route, [], breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route) {\n this.generateBreadcrumbs(route.firstChild)\n }\n }\n\n private addBreadcrumb(route: ActivatedRouteSnapshot | null, parentUrl: string[], breadcrumbs: MenuItem[]) {\n if (route?.url) {\n const routeUrl = parentUrl.concat(route.url.map((url) => url.path))\n if (route.routeConfig?.path) {\n this.createBreadcrumb(route, routeUrl, breadcrumbs)\n }\n\n this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs)\n }\n }\n\n private createBreadcrumb(route: ActivatedRouteSnapshot, routeUrl: string[], breadcrumbs: MenuItem[]) {\n if (route.data['breadcrumb']) {\n const breadcrumb: MenuItem = {\n label: this.getLabel(route.data, route.paramMap),\n routerLink: '/' + routeUrl.join('/'),\n }\n breadcrumbs.push(breadcrumb)\n } else {\n const breadcrumb: MenuItem = {\n label: 'NA',\n routerLink: '/' + routeUrl.join('/'),\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n private getLabel(data: Data, params: ParamMap) {\n if (typeof data['breadcrumbFn'] === 'function') {\n return data['breadcrumbFn'](data, params)\n }\n return data['breadcrumb']\n }\n\n setItems(items: BreadCrumbMenuItem[]) {\n const translationKeys = [\n ...items.map((i) => i.labelKey ?? '').filter((l) => !!l),\n ...items.map((i) => i.titleKey ?? '').filter((l) => !!l),\n ]\n if (translationKeys.length) {\n this.translateService.get(translationKeys).subscribe((translations: any) => {\n this.itemsSource$.publish({\n menuItems: items.map((i) => ({\n ...i,\n label: translations[i.labelKey ?? ''],\n title: translations[i.titleKey ?? ''],\n })),\n })\n })\n } else {\n this.itemsSource$.publish({\n menuItems: items,\n })\n }\n }\n}\n","import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common'\nimport { Injector, LOCALE_ID, Pipe, PipeTransform, Type, inject } from '@angular/core'\n\n@Pipe({\n name: 'dynamicPipe',\n standalone: false,\n})\nexport class DynamicPipe implements PipeTransform {\n private injector = inject(Injector)\n\n knownPipes: { [name: string]: PipeTransform } = {}\n\n public constructor() {\n const locale = inject(LOCALE_ID)\n\n this.knownPipes = {\n currency: new CurrencyPipe(locale),\n decimal: new DecimalPipe(locale),\n date: new DatePipe(locale),\n }\n }\n\n transform(value: any, requiredPipe?: Type<any>, pipeArgs?: any): any {\n if (!requiredPipe) {\n return value\n }\n\n const injector = Injector.create({\n name: 'DynamicPipe',\n parent: this.injector,\n providers: [{ provide: requiredPipe }],\n })\n const pipe = injector.get(requiredPipe)\n return pipe.transform(value, pipeArgs)\n }\n\n transform2(value: any, pipeToken: any, ...pipeArgs: any[]): any {\n if (!pipeToken) {\n return value\n } else {\n // eslint-disable-next-line no-prototype-builtins\n if (pipeToken && this.knownPipes.hasOwnProperty(pipeToken)) {\n const pipe = this.knownPipes[pipeToken]\n if (Array.isArray(pipeArgs)) {\n return pipe.transform(value, ...pipeArgs)\n } else {\n return pipe.transform(value, pipeArgs)\n }\n } else {\n return value\n }\n }\n }\n}\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n inject,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { AppStateService, UserService } from '@onecx/angular-integration-interface'\nimport { MenuItem, PrimeIcons } from 'primeng/api'\nimport { BehaviorSubject, Observable, concat, map, of, switchMap } from 'rxjs'\nimport { BreadcrumbService } from '../../services/breadcrumb.service'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { TranslationKey } from '../../model/translation.model'\n\n/**\n * Action definition.\n */\nexport interface Action {\n id?: string\n label?: string\n labelKey?: string\n icon?: string\n iconPos?: 'left' | 'right' | 'top' | 'bottom'\n /**\n * Permission for this action. If the current user does not have this permission, the action will not be shown.\n */\n permission?: string\n title?: string\n titleKey?: string\n ariaLabel?: string\n ariaLabelKey?: string\n btnClass?: string\n actionCallback(): void\n disabled?: boolean\n disabledTooltip?: string\n disabledTooltipKey?: string\n show?: 'always' | 'asOverflow'\n conditional?: boolean\n // Note: This currently doesn't work with dynamic values, since a passed in Action is just a copy of the original object.\n // As a workaround, you can manually update/replace the passed in Action if you wish to update a showCondition\n showCondition?: boolean\n}\n\nexport interface ObjectDetailItem {\n label: string\n value?: string\n labelTooltip?: string\n valueTooltip?: string\n icon?: PrimeIcon\n iconStyleClass?: string\n labelPipe?: Type<any>\n valuePipe?: Type<any>\n valuePipeArgs?: string\n valueCssClass?: string\n actionItemIcon?: PrimeIcon\n actionItemCallback?: () => void\n actionItemAriaLabel?: string\n actionItemAriaLabelKey?: TranslationKey\n actionItemTooltip?: string\n actionItemTooltipKey?: TranslationKey\n labelTooltipKey?: TranslationKey\n valueTooltipKey?: TranslationKey\n}\n\nexport interface HomeItem {\n menuItem: MenuItem\n page?: string\n}\n\nexport type GridColumnOptions = 1 | 2 | 3 | 4 | 6 | 12\n\n@Component({\n standalone: false,\n selector: 'ocx-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageHeaderComponent implements OnInit { \n private translateService = inject(TranslateService)\n private appStateService = inject(AppStateService)\n private userService = inject(UserService)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n\n @Input()\n public header: string | undefined\n\n @Input()\n loading = false\n\n @Input()\n figureBackground = true\n\n @Input()\n showFigure = true\n\n //image fot preview in top-header left side\n @Input()\n figureImage: string | undefined\n\n @Input()\n disableDefaultActions = false\n\n @Input()\n subheader: string | undefined\n\n _actions = new BehaviorSubject<Action[]>([])\n @Input()\n get actions() {\n return this._actions.getValue()\n }\n set actions(value) {\n this._actions.next(value)\n }\n\n @Input()\n objectDetails: ObjectDetailItem[] | undefined\n\n @Input()\n showBreadcrumbs = true\n\n @Input()\n manualBreadcrumbs = false\n\n @Input()\n enableGridView: undefined | boolean\n\n @Input()\n gridLayoutDesktopColumns: undefined | GridColumnOptions\n\n @Output()\n save = new EventEmitter()\n\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n overflowActions$ = new BehaviorSubject<MenuItem[]>([])\n inlineActions$ = new BehaviorSubject<Action[]>([])\n dd = new Date()\n breadcrumbs$!: Observable<MenuItem[]>\n\n home$!: Observable<HomeItem>\n\n figureImageLoadError = false\n\n objectPanelGridLayoutClasses = 'grid row-gap-2 m-0'\n objectPanelColumnLayoutClasses = 'flex flex-row justify-content-between overflow-x-auto'\n\n objectPanelDefaultLayoutClasses = 'flex flex-column row-gap-2 md:flex-row md:justify-content-between'\n\n objectInfoGridLayoutClasses = 'col-12 flex gap-4 md:col-6 align-items-center p-0'\n objectInfoColumnLayoutClasses = 'flex flex-column align-items-center gap-2 min-w-120'\n\n objectInfoDefaultLayoutClasses = 'flex flex-row md:flex-column md:align-items-center md:gap-2'\n\n protected breadcrumbs: BreadcrumbService\n\n constructor() {\n const breadcrumbs = inject(BreadcrumbService)\n\n this.breadcrumbs = breadcrumbs\n this.home$ = concat(\n of({ menuItem: { icon: PrimeIcons.HOME, routerLink: '/' } }),\n this.appStateService.currentWorkspace$.pipe(\n map((workspace) => ({\n menuItem: {\n icon: PrimeIcons.HOME,\n routerLink: workspace.baseUrl,\n },\n page: workspace.workspaceName,\n }))\n )\n )\n this._actions\n .pipe(\n map(this.filterInlineActions),\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions))\n )\n .subscribe(this.inlineActions$)\n\n this._actions\n .pipe(\n map(this.filterOverflowActions),\n switchMap((actions) => {\n return this.getActionTranslationKeys(actions).pipe(map((translations) => ({ actions, translations })))\n }),\n switchMap(({ actions, translations }) => {\n return this.filterActionsBasedOnPermissions(actions).pipe(\n map((filteredActions) => ({ filteredActions, translations }))\n )\n }),\n map(({ filteredActions, translations }) => this.mapOverflowActionsToMenuItems(filteredActions, translations))\n )\n .subscribe(this.overflowActions$)\n }\n\n ngOnInit(): void {\n if (!this.manualBreadcrumbs) {\n this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource\n } else {\n this.breadcrumbs$ = this.breadcrumbs.itemsHandler\n }\n }\n\n onAction(action: string) {\n switch (action) {\n case 'save':\n this.save.emit()\n break\n default:\n break\n }\n }\n\n handleImageError() {\n this.figureImageLoadError = true\n }\n\n public generateItemStyle(item: ObjectDetailItem): string {\n let style = ''\n if (item.icon) style = style.concat(style, ' ', 'gap-1 align-items-center')\n if (item.valueCssClass) style = style.concat(style, ' ', item.valueCssClass)\n return style\n }\n\n public getObjectPanelLayoutClasses() {\n if (this.enableGridView) {\n return this.objectPanelGridLayoutClasses\n }\n if (this.enableGridView === false) {\n return this.objectPanelColumnLayoutClasses\n }\n return this.objectPanelDefaultLayoutClasses\n }\n\n public getObjectInfoLayoutClasses() {\n if (this.enableGridView) {\n return `${this.objectInfoGridLayoutClasses} lg:col-${\n this.gridLayoutDesktopColumns ? 12 / this.gridLayoutDesktopColumns : 4\n }`\n }\n if (this.enableGridView === false) {\n return this.objectInfoColumnLayoutClasses\n }\n return this.objectInfoDefaultLayoutClasses\n }\n\n private filterInlineActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'always')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterOverflowActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'asOverflow')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterActionsBasedOnPermissions(actions: Action[]): Observable<Action[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n if (action.permission) {\n return permissions.includes(action.permission!)\n }\n return true\n })\n })\n )\n }\n\n private getActionTranslationKeys(actions: Action[]): Observable<{ [key: string]: string }> {\n const translationKeys = [\n ...actions.map((a) => a.labelKey || '').filter((a) => !!a),\n ...actions.map((a) => a.titleKey || '').filter((a) => !!a),\n ]\n return translationKeys.length ? this.translateService.get(translationKeys) : of({})\n }\n\n private mapOverflowActionsToMenuItems(actions: Action[], translations: { [key: string]: string }): MenuItem[] {\n return actions.map<MenuItem>((a) => ({\n id: a.id,\n label: a.labelKey ? translations[a.labelKey] : a.label,\n icon: a.icon,\n tooltipOptions: {\n tooltipLabel: a.titleKey ? translations[a.titleKey] : a.title,\n tooltipEvent: 'hover',\n tooltipPosition: 'top',\n },\n command: a.actionCallback,\n disabled: a.disabled,\n }))\n }\n\n /**\n * Helper to extract translation key and parameters from a string or object.\n * @param input - Can be a string or an object with 'key' and 'parameters'.\n * @returns An object with { key, params } for use in translation pipes or services. The returned key is always a string (never undefined).\n */\n public extractKeyAndParams(input: any): { key: string, params: any } {\n if (typeof input === 'string') {\n return { key: input, params: undefined };\n }\n if (input && typeof input === 'object') {\n return { key: input.key ?? '', params: input.parameters };\n }\n return { key: '', params: undefined };\n }\n}\n","<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n @if (showBreadcrumbs) { @if (breadcrumbs$ | async ; as items) {\n <p-breadcrumb\n [model]=\"items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n } }\n <div class=\"title-bar flex flex-row md:justify-content-between align-items-center p-3\">\n <div class=\"title-wrap\">\n @if (showFigure) {\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n @if (figureImage && !figureImageLoadError) {\n <img [ocxSrc]=\"figureImage\" alt=\"Figure Image\" class=\"w-full border-round-sm\" (error)=\"handleImageError()\" />\n }\n </div>\n @if (previewImage.children.length === 0 || figureImageLoadError) {\n <div class=\"colorblob flex-1 border-round\"></div>\n }\n </div>\n } @if (!loading) {\n <div class=\"header\">\n @if (!!header) {\n <h1 id=\"page-header\">{{ header }}</h1>\n } @if (!!subheader) {\n <div id=\"page-subheader\" role=\"note\" [attr.aria-label]=\"'OCX_PAGE_HEADER.SUBHEADER' | translate\">\n {{ subheader }}\n </div>\n }\n </div>\n } @else {\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n }\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n @if (additionalToolbarContentLeft) {\n <ng-container [ngTemplateOutlet]=\"additionalToolbarContentLeft\"> </ng-container>\n } @if (!loading) { @if( inlineActions$ | async; as inlineActions) { @if (inlineActions && inlineActions.length >\n 0) {\n <div class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n @for (action of inlineActions; track action) {\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n [id]=\"action.id\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n }\n </div>\n } }\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n @if(overflowActions$ | async; as overflowActions) {@if (overflowActions.length !== 0) {\n <div>\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n } }\n </ng-container>\n } @else {\n <div class=\"flex\">\n <p-skeleton shape=\"circle\" size=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton shape=\"circle\" size=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n } @if (additionalToolbarContent) {\n <ng-container [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n }\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n @if (objectDetails) { @for (item of objectDetails; track item) {\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltipKey ? (extractKeyAndParams(item.labelTooltipKey).key | translate : extractKeyAndParams(item.labelTooltipKey).params) : (item.labelTooltip ?? '')\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n {{ item.label | dynamicPipe:item.labelPipe }}\n </span>\n @if (item.icon || item.value) {\n <span class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltipKey ? (extractKeyAndParams(item.valueTooltipKey).key | translate : extractKeyAndParams(item.valueTooltipKey).params) : (item.valueTooltip ?? '')\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n @if (item.icon) {\n <i [class]=\"item.icon + ' ' + (item.iconStyleClass ?? '')\" name=\"object-detail-icon\"></i>\n } {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n @if (item.actionItemIcon && item.actionItemCallback) {\n <p-button\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [ariaLabel]=\"item.actionItemAriaLabelKey ? (extractKeyAndParams(item.actionItemAriaLabelKey).key | translate : extractKeyAndParams(item.actionItemAriaLabelKey).params) : (item.actionItemAriaLabel ?? (item.actionItemTooltipKey ? (extractKeyAndParams(item.actionItemTooltipKey).key | translate : extractKeyAndParams(item.actionItemTooltipKey).params) : (item.actionItemTooltip ?? item?.label ?? ('Tooltip for ' + item.actionItemIcon))))\"\n [pTooltip]=\"item.actionItemTooltipKey ? (extractKeyAndParams(item.actionItemTooltipKey).key | translate : extractKeyAndParams(item.actionItemTooltipKey).params) : (item.actionItemTooltip ?? '')\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n }\n </span>\n </span>\n }\n </div>\n } }\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core'\nimport { FormControlName, FormGroup, FormGroupDirective } from '@angular/forms'\nimport { Observable, combineLatest, debounceTime, from, map, of, startWith } from 'rxjs'\nimport { getLocation } from '@onecx/accelerator'\nimport { CONFIG_KEY, ConfigurationService } from '@onecx/angular-integration-interface'\nimport { Action } from '../page-header/page-header.component'\n\nexport interface SearchHeaderComponentState {\n activeViewMode?: 'basic' | 'advanced'\n selectedSearchConfig?: string | null\n}\n\nexport interface SearchConfigData {\n name: string | undefined\n fieldValues: { [key: string]: string }\n displayedColumnsIds: string[]\n viewMode: 'basic' | 'advanced'\n}\n\n/**\n * To trigger the search when Enter key is pressed inside a search parameter field,\n * an EventListener for keyup enter event is added for HTML elements which have an input.\n * Please add the EventListener yourself manually, if you want to have that functionality for some other elements\n * which do not have an input element.\n */\n@Component({\n standalone: false,\n selector: 'ocx-search-header',\n templateUrl: './search-header.component.html',\n providers: [],\n})\nexport class SearchHeaderComponent implements AfterContentInit, AfterViewInit {\n @Input() header = ''\n @Input() subheader: string | undefined\n _viewMode: 'basic' | 'advanced' = 'basic'\n @Input()\n get viewMode(): 'basic' | 'advanced' {\n return this._viewMode\n }\n set viewMode(viewMode: 'basic' | 'advanced') {\n if (this.viewMode !== viewMode) {\n this._viewMode = viewMode\n this.viewModeChanged?.emit(this.viewMode)\n this.componentStateChanged.emit({\n activeViewMode: this.viewMode,\n })\n this.updateHeaderActions()\n setTimeout(() => this.addKeyUpEventListener())\n }\n }\n @Input() manualBreadcrumbs = false\n _actions: Action[] = []\n @Input()\n get actions() {\n return this._actions\n }\n set actions(value) {\n this._actions = value\n this.updateHeaderActions()\n }\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() searchButtonDisabled = false\n @Input() resetButtonDisabled = false\n @Input() pageName: string | undefined = getLocation().applicationPath\n\n @Output() searched: EventEmitter<any> = new EventEmitter()\n @Output() resetted: EventEmitter<any> = new EventEmitter()\n @Output() selectedSearchConfigChanged: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n @Output() viewModeChanged: EventEmitter<'basic' | 'advanced'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<SearchHeaderComponentState> = new EventEmitter()\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n get _additionalToolbarContent(): TemplateRef<any> | undefined {\n return this.additionalToolbarContent\n }\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n get _additionalToolbarContentLeft(): TemplateRef<any> | undefined {\n return this.additionalToolbarContentLeft\n }\n\n get searchConfigChangeObserved(): boolean {\n return this.selectedSearchConfigChanged.observed\n }\n\n @ContentChild(FormGroupDirective) formGroup: FormGroup | undefined\n @ContentChildren(FormControlName, { descendants: true }) visibleFormControls!: QueryList<FormControlName>\n\n @ViewChild('searchParameterFields') searchParameterFields: ElementRef | undefined\n\n hasAdvanced = false\n\n simpleAdvancedAction: Action = {\n id: 'simpleAdvancedButton',\n actionCallback: () => this.toggleViewMode(),\n show: 'always',\n }\n headerActions: Action[] = []\n searchButtonsReversed$ = of(false)\n fieldValues$: Observable<{ [key: string]: unknown }> | undefined = of({})\n searchConfigChangedSlotEmitter: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n\n constructor() {\n const configurationService = inject(ConfigurationService)\n\n this.searchConfigChangedSlotEmitter.subscribe((config) => {\n this.componentStateChanged.emit({\n selectedSearchConfig: config?.name ?? null,\n })\n this.selectedSearchConfigChanged.emit(config)\n })\n this.searchButtonsReversed$ = from(\n configurationService.getProperty(CONFIG_KEY.ONECX_PORTAL_SEARCH_BUTTONS_REVERSED)\n ).pipe(map((config) => config === 'true'))\n }\n\n ngAfterContentInit(): void {\n if (this.formGroup) {\n this.fieldValues$ = combineLatest([\n this.formGroup.valueChanges.pipe(startWith({})),\n this.visibleFormControls.changes.pipe(startWith(null)),\n ]).pipe(\n debounceTime(100),\n map(([values, _]) =>\n Object.entries(values ?? {}).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: this.isVisible(key) ? value || undefined : undefined,\n }),\n {}\n )\n )\n )\n }\n }\n\n ngAfterViewInit(): void {\n this.addKeyUpEventListener()\n }\n\n toggleViewMode() {\n this.viewMode = this.viewMode === 'basic' ? 'advanced' : 'basic'\n }\n\n onResetClicked() {\n this.resetted.emit()\n }\n\n onSearchClicked() {\n this.searched.emit()\n }\n\n updateHeaderActions() {\n const headerActions: Action[] = []\n if (this.hasAdvanced) {\n ;(this.simpleAdvancedAction.labelKey =\n this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT'),\n (this.simpleAdvancedAction.titleKey =\n this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL'),\n headerActions.push(this.simpleAdvancedAction)\n }\n this.headerActions = headerActions.concat(this.actions)\n }\n\n addKeyUpEventListener() {\n const inputElements = this.searchParameterFields?.nativeElement.querySelectorAll('input')\n inputElements.forEach((inputElement: any) => {\n if (!inputElement.listenerAdded) {\n inputElement.addEventListener('keyup', (event: any) => this.onSearchKeyup(event))\n inputElement.listenerAdded = true\n }\n })\n }\n\n onSearchKeyup(event: any) {\n if (event.code === 'Enter') {\n this.onSearchClicked()\n }\n }\n\n private isVisible(control: string) {\n return this.visibleFormControls.some(\n (formControl) => formControl.name !== null && String(formControl.name) === control\n )\n }\n}\n","<ng-template #searchBtn>\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></p-button>\n</ng-template>\n<ng-template #resetBtn>\n <p-button\n id=\"resetButton\"\n icon=\"pi pi-eraser\"\n (onClick)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></p-button>\n</ng-template>\n\n<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n @if (searchConfigChangeObserved && pageName) {\n <ocx-slot\n *ocxIfPermission=\"searchConfigPermission\"\n name=\"onecx-search-config\"\n [inputs]=\"{ pageName: pageName, currentFieldValues: fieldValues$ | async, viewMode: viewMode }\"\n [outputs]=\"{ searchConfigSelected: searchConfigChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n } @if (_additionalToolbarContentLeft) {\n <ng-container [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"></ng-container>\n }\n </ng-template>\n <ng-template #additionalToolbarContent>\n @if (_additionalToolbarContent) {\n <ng-container [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n }\n </ng-template>\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <section #searchParameterFields [attr.aria-label]=\"'Search Criteria'\">\n <ng-content></ng-content>\n </section> \n <section\n class=\"flex flex-wrap gap-2\"\n [ngClass]=\"'flex-row'\"\n [attr.aria-label]=\"'Search Controls'\"\n >\n <ng-container *ngIf=\"(searchButtonsReversed$ | async); else normalOrder\">\n <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n <ng-container *ngIf=\"resetted.observed\" [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n </ng-container>\n\n <ng-template #normalOrder>\n <ng-container *ngIf=\"resetted.observed\" [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n </ng-template>\n </section>\n </div>\n</ocx-page-header>\n","import { Directive, DoCheck, TemplateRef, ViewContainerRef, inject } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxAdvanced]', standalone: false })\nexport class AdvancedDirective implements DoCheck {\n private viewContainer = inject(ViewContainerRef)\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw 'Advanced directive can only be used inside search header component'\n }\n searchHeader.hasAdvanced = true\n }\n ngDoCheck(): void {\n if (this.searchHeader?.viewMode === 'advanced') {\n if (this.templateRef && !this.viewContainer.length) {\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n this.viewContainer.clear()\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n Input,\n NgZone,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { Tooltip, TooltipStyle } from 'primeng/tooltip'\n\n@Directive({ selector: '[ocxTooltipOnOverflow]', standalone: false, providers: [TooltipStyle] })\nexport class TooltipOnOverflowDirective extends Tooltip implements OnDestroy, AfterViewInit {\n mutationObserver = new MutationObserver(() => {\n this.zone.run(() => {\n this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n this.setOption({ disabled: this.disabled })\n }, this)\n })\n\n @Input()\n get ocxTooltipOnOverflow(): string | TemplateRef<HTMLElement> | undefined {\n return this.content\n }\n set ocxTooltipOnOverflow(value: string | TemplateRef<HTMLElement> | undefined) {\n this.content = value\n this.setOption({ tooltipLabel: value })\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy()\n this.mutationObserver.disconnect()\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit()\n setTimeout(() => {\n // Needed to ensure change detection picks up the correct state of 'disabled'\n // Without this the tooltip for some elements won't update properly\n this.zone.run(() => {\n this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n this.setOption({ disabled: this.disabled })\n }, this)\n this.mutationObserver.observe(this.el.nativeElement, { subtree: true, characterData: true, childList: true })\n }, 0)\n }\n constructor() {\n const zone = inject(NgZone)\n const renderer = inject(Renderer2)\n const viewContainer = inject(ViewContainerRef)\n\n super(zone, viewContainer)\n renderer.setStyle(this.el.nativeElement, 'text-overflow', 'ellipsis')\n renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden')\n renderer.setStyle(this.el.nativeElement, 'white-space', 'nowrap')\n this.disabled = true\n this.setOption({ disabled: this.disabled })\n }\n}\n","import { Directive, Input, TemplateRef, inject } from '@angular/core'\n\n@Directive({ selector: '[ocxTemplate]', standalone: false })\nexport class TemplateDirective {\n template = inject<TemplateRef<any>>(TemplateRef)\n\n @Input({\n required: true,\n alias: 'ocxTemplate',\n })\n name = ''\n\n getType(): string {\n return this.name\n }\n}\n","import { Directive, DoCheck, TemplateRef, ViewContainerRef, inject } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxBasic]', standalone: false })\nexport class BasicDirective implements DoCheck {\n private viewContainer = inject(ViewContainerRef)\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw 'Basic directive can only be used inside search header component'\n }\n }\n ngDoCheck(): void {\n if (this.searchHeader?.viewMode === 'basic') {\n if (this.templateRef && !this.viewContainer.length) {\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n this.viewContainer.clear()\n }\n }\n}\n","import { Component } from '@angular/core'\n\n@Component({\n standalone: false,\n selector: 'ocx-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {}\n","<div class=\"full-overlay\">\n <div class=\"overlay\">\n <span class=\"loader\"></span>\n </div>\n</div>","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { LoadingIndicatorComponent } from '../components/loading-indicator/loading-indicator.component'\n\n\n@Directive({\n selector: '[ocxLoadingIndicator]',\n standalone: false,\n})\nexport class LoadingIndicatorDirective implements OnChanges {\n private viewContainerRef = inject(ViewContainerRef)\n private el = inject(ElementRef)\n private renderer = inject(Renderer2)\n\n @Input() ocxLoadingIndicator = false\n @Input() overlayFullPage = false\n @Input() isLoaderSmall? = false\n\n private componentRef: ComponentRef<LoadingIndicatorComponent> | undefined\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['ocxLoadingIndicator'] || changes['overlayFullPage']) {\n this.toggleLoadingIndicator()\n }\n }\n\n private elementLoader() {\n this.renderer.addClass(this.el.nativeElement, 'element-overlay')\n const loaderElement = document.createElement('div')\n loaderElement.className = 'loader'\n if (this.isLoaderSmall) {\n loaderElement.className = 'loader loader-small'\n }\n this.renderer.appendChild(this.el.nativeElement, loaderElement)\n }\n\n private toggleLoadingIndicator() {\n if (this.ocxLoadingIndicator) {\n if (this.overlayFullPage == false) {\n this.elementLoader()\n } else {\n this.componentRef = this.viewContainerRef.createComponent(LoadingIndicatorComponent)\n }\n } else {\n this.viewContainerRef.clear()\n if (this.componentRef) {\n this.componentRef.destroy()\n }\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type GroupSelectionChangedEvent = { activeColumns: DataTableColumn[]; groupKey: string }\nexport interface ColumnGroupSelectionComponentState {\n activeColumnGroupKey?: string\n displayedColumns?: DataTableColumn[]\n}\n@Component({\n standalone: false,\n templateUrl: './column-group-selection.component.html',\n selector: 'ocx-column-group-selection',\n styleUrls: ['./column-group-selection.component.scss'],\n})\nexport class ColumnGroupSelectionComponent implements OnInit {\n selectedGroupKey$ = new BehaviorSubject<string>('')\n @Input()\n get selectedGroupKey(): string {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string) {\n this.selectedGroupKey$.next(value)\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: value,\n })\n }\n }\n\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n }\n @Input() placeholderKey = ''\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = ''\n\n @Output() groupSelectionChanged: EventEmitter<GroupSelectionChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<ColumnGroupSelectionComponentState> = new EventEmitter()\n\n allGroupKeys$: Observable<string[]> | undefined\n\n ngOnInit() {\n this.allGroupKeys$ = combineLatest([this.columns$, this.selectedGroupKey$]).pipe(\n map(([columns, selectedGroupKey]) =>\n columns\n .map((keys) => keys.predefinedGroupKeys || [])\n .flat()\n .concat([this.defaultGroupKey])\n .concat([selectedGroupKey])\n .filter((value) => !!value)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n )\n )\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n })\n } else {\n const activeColumns = this.columns.filter((c) =>\n c.predefinedGroupKeys?.includes(this.selectedGroupKey$.getValue() ?? this.defaultGroupKey)\n )\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: activeColumns,\n })\n }\n }\n\n changeGroupSelection(event: { value: string }) {\n if (event.value === this.customGroupKey) {\n return\n }\n const activeColumns = this.columns.filter((c) => c.predefinedGroupKeys?.includes(event.value))\n this.groupSelectionChanged.emit({ activeColumns, groupKey: event.value })\n this.componentStateChanged.emit({\n activeColumnGroupKey: event.value,\n displayedColumns: activeColumns,\n })\n }\n}\n","<p-floatlabel variant=\"on\">\n @if ((allGroupKeys$ | async)?.length) {\n <p-select\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item #item> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item #selectedItem> {{ item ? (item | translate) : ''}} </ng-template>\n </p-select>\n }\n @if ((allGroupKeys$ | async)?.length) {\n <label for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n }\n </p-floatlabel>\n","import { Component, Input } from '@angular/core'\n\n@Component({\n standalone: false,\n selector: 'ocx-content',\n templateUrl: './content.component.html',\n})\nexport class OcxContentComponent {\n /**\n * Optionally allows specifying a title for the content card\n */\n @Input() title = ''\n\n /**\n * Optionally allows specifying styles for the content card\n */\n @Input() styleClass: string | undefined\n}\n","<div [ocxContent]=\"title\" [ngClass]=\"styleClass\">\n <ng-content></ng-content>\n</div>","import { Component, Input } from '@angular/core'\n\n@Component({\n standalone: false,\n selector: 'ocx-content-container',\n templateUrl: './content-container.component.html',\n})\nexport class OcxContentContainerComponent {\n /**\n * Allows specifying the layout direction of the container\n */\n @Input() layout: 'vertical' | 'horizontal' = 'horizontal'\n\n /**\n * Allows specifying the breakpoint below which a horizontal layout switches to a vertical layout.\n * Only necessary if horizontal layout is used\n * Default: md\n */\n @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n /**\n * Optionally allows specifying styles for the container\n */\n @Input() styleClass: string | undefined\n}\n","<div ocxContentContainer [layout]=\"layout\" [breakpoint]=\"breakpoint\" [ngClass]=\"styleClass\">\n <ng-content></ng-content>\n</div>","import { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type ColumnSelectionChangedEvent = { activeColumns: DataTableColumn[] }\nexport type ActionColumnChangedEvent = {\n frozenActionColumn: boolean\n actionColumnPosition: 'left' | 'right'\n}\n\nexport interface CustomGroupColumnSelectorComponentState {\n actionColumnConfig?: {\n frozen: boolean\n position: 'left' | 'right'\n }\n displayedColumns?: DataTableColumn[]\n activeColumnGroupKey?: string\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-custom-group-column-selector',\n templateUrl: './custom-group-column-selector.component.html',\n styleUrls: ['./custom-group-column-selector.component.scss'],\n})\nexport class CustomGroupColumnSelectorComponent implements OnInit {\n private translate = inject(TranslateService)\n\n @Input() columns: DataTableColumn[] = []\n private _displayedColumns: DataTableColumn[] = []\n @Input()\n get displayedColumns() {\n return this._displayedColumns\n }\n set displayedColumns(value: DataTableColumn[]) {\n this._displayedColumns = value\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this._displayedColumns,\n })\n }\n @Input() customGroupKey = ''\n @Input() dialogTitle = ''\n @Input() dialogTitleKey = ''\n @Input() openButtonTitle = ''\n @Input() openButtonTitleKey = ''\n @Input() openButtonAriaLabel = ''\n @Input() openButtonAriaLabelKey = ''\n @Input() saveButtonLabel = ''\n @Input() saveButtonLabelKey = ''\n @Input() saveButtonAriaLabel = ''\n @Input() saveButtonAriaLabelKey = ''\n @Input() cancelButtonLabel = ''\n @Input() cancelButtonLabelKey = ''\n @Input() cancelButtonAriaLabel = ''\n @Input() cancelButtonAriaLabelKey = ''\n @Input() activeColumnsLabel = ''\n @Input() activeColumnsLabelKey = ''\n @Input() inactiveColumnsLabel = ''\n @Input() inactiveColumnsLabelKey = ''\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() columnSelectionChanged: EventEmitter<ColumnSelectionChangedEvent> = new EventEmitter()\n @Output() actionColumnConfigChanged: EventEmitter<ActionColumnChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<CustomGroupColumnSelectorComponentState> = new EventEmitter()\n\n hiddenColumnsModel: DataTableColumn[] = []\n displayedColumnsModel: DataTableColumn[] = []\n frozenActionColumnModel = false\n actionColumnPositionModel: 'left' | 'right' = 'right'\n visible = false\n alignmentOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.LEFT',\n value: 'left',\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.RIGHT',\n value: 'right',\n },\n ]\n\n frozenOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.YES',\n value: true,\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.NO',\n value: false,\n },\n ]\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this.displayedColumns,\n })\n }\n\n onOpenCustomGroupColumnSelectionDialogClick() {\n this.displayedColumnsModel = [...this.displayedColumns]\n this.hiddenColumnsModel = this.columns.filter(\n (column) => !this.displayedColumnsModel.map((c) => c.id).includes(column.id)\n )\n this.frozenActionColumnModel = this.frozenActionColumn\n this.actionColumnPositionModel = this.actionColumnPosition\n this.visible = true\n }\n\n onSaveClick() {\n this.visible = false\n const colIdsBefore = this.displayedColumns.map((column) => column.id)\n const colIdsAfter = this.displayedColumnsModel.map((column) => column.id)\n\n if (!colIdsAfter.every((colId, i) => colId === colIdsBefore[i]) || colIdsAfter.length != colIdsBefore.length) {\n this.columnSelectionChanged.emit({ activeColumns: [...this.displayedColumnsModel] })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n })\n }\n\n if (\n this.frozenActionColumn != this.frozenActionColumnModel ||\n this.actionColumnPosition != this.actionColumnPositionModel\n ) {\n this.actionColumnConfigChanged.emit({\n frozenActionColumn: this.frozenActionColumnModel,\n actionColumnPosition: this.actionColumnPositionModel,\n })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n actionColumnConfig: {\n frozen: this.frozenActionColumnModel,\n position: this.actionColumnPositionModel,\n },\n activeColumnGroupKey: this.customGroupKey,\n })\n }\n }\n\n onCancelClick() {\n this.visible = false\n }\n}\n","<p-button\n id=\"customGroupColumnSelectorButton\"\n type=\"button\"\n (onClick)=\"onOpenCustomGroupColumnSelectionDialogClick()\"\n [pTooltip]=\"openButtonTitle || (openButtonTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n tooltipPosition=\"top\"\n icon=\"pi pi-cog\"\n styleClass=\"p-button\"\n [ariaLabel]=\"(openButtonAriaLabelKey ? (openButtonAriaLabelKey | translate) : openButtonAriaLabel) || openButtonTitle || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n [attr.aria-controls]=\"visible ? 'customGroupColumnSelectorDialog' : null\"\n [attr.aria-expanded]=\"visible ? true : false\"\n></p-button>\n\n<p-dialog\n #dialog\n id=\"customGroupColumnSelectorDialog\"\n [(visible)]=\"visible\"\n [style]=\"{ width: '70%' }\"\n [modal]=\"true\"\n [closeAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.CLOSE' | translate)\"\n>\n <ng-template pTemplate=\"header\">\n <span [id]=\"dialog.ariaLabelledBy\" class=\"text-xl font-bold\"\n >{{ dialogTitle || (dialogTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DIALOG_TITLE' | translate)\n }}</span\n >\n </ng-template>\n\n <p-pickList\n [source]=\"displayedColumnsModel\"\n [target]=\"hiddenColumnsModel\"\n [sourceHeader]=\"activeColumnsLabel || (activeColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ACTIVE_COLUMNS_LABEL' | translate)\"\n [targetHeader]=\"inactiveColumnsLabel || (inactiveColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.INACTIVE_COLUMNS_LABEL' | translate)\"\n [dragdrop]=\"true\"\n [responsive]=\"false\"\n [sourceStyle]=\"{ height: '300px' }\"\n [targetStyle]=\"{ height: '300px' }\"\n [upButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.UP' | translate)\"\n [topButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.TOP' | translate)\"\n [downButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.DOWN' | translate)\"\n [bottomButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.BOTTOM' | translate)\"\n [rightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.RIGHT' | translate)\"\n [allRightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_RIGHT' | translate)\"\n [leftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.LEFT' | translate)\"\n [allLeftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_LEFT' | translate)\"\n >\n <ng-template let-item #item>\n <div>{{ item.nameKey | translate }}</div>\n </ng-template>\n </p-pickList>\n\n <div class=\"pt-4\">\n <p class=\"text-xl font-bold\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.TITLE' | translate}}</p>\n <div class=\"flex gap-6 px-3\">\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.FREEZE' | translate}}</p>\n <p-selectbutton\n [options]=\"frozenOptions\"\n [(ngModel)]=\"frozenActionColumnModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"frozenActionColumn\"\n name=\"frozen-action-column-select-button\"\n [allowEmpty]=\"false\"\n >\n <ng-template #item let-option> {{option.label | translate}} </ng-template>\n </p-selectbutton>\n </div>\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.POSITION' | translate}}</p>\n <p-selectbutton\n [options]=\"alignmentOptions\"\n [(ngModel)]=\"actionColumnPositionModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"actionColumnPosition\"\n name=\"action-column-position-select-button\"\n [allowEmpty]=\"false\"\n >\n <ng-template #item let-option> {{option.label | translate}} </ng-template>\n </p-selectbutton>\n </div>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <p-button\n id=\"cancelButton\"\n (onClick)=\"onCancelClick()\"\n [label]=\"cancelButtonLabel || (cancelButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_LABEL' | translate)\"\n styleClass=\"p-button\"\n [ariaLabel]=\"cancelButtonLabel || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n <p-button\n id=\"saveButton\"\n (onClick)=\"onSaveClick()\"\n [label]=\"saveButtonLabel || (saveButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_LABEL' | translate)\"\n [ariaLabel]=\"saveButtonAriaLabelKey || (saveButtonAriaLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n </ng-template>\n</p-dialog>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { PrimeIcons } from 'primeng/api'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\ninterface ViewingLayouts {\n id: string\n icon: PrimeIcon\n layout: 'grid' | 'list' | 'table'\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nconst ALL_VIEW_LAYOUTS: ViewingLayouts[] = [\n {\n id: 'ocx-data-layout-selection-list',\n icon: PrimeIcons.LIST,\n layout: 'list',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n },\n {\n id: 'ocx-data-layout-selection-grid',\n icon: PrimeIcons.TH_LARGE,\n layout: 'grid',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n },\n {\n id: 'ocx-data-layout-selection-table',\n icon: PrimeIcons.TABLE,\n layout: 'table',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n },\n]\n\nexport interface DataLayoutSelectionComponentState {\n layout?: 'grid' | 'list' | 'table'\n}\n@Component({\n standalone: false,\n selector: 'ocx-data-layout-selection',\n templateUrl: './data-layout-selection.component.html',\n styleUrls: ['./data-layout-selection.component.scss'],\n})\nexport class DataLayoutSelectionComponent implements OnInit {\n @Input() supportedViewLayouts: Array<string> = []\n @Input()\n set layout(value: 'grid' | 'list' | 'table') {\n this.selectedViewLayout = ALL_VIEW_LAYOUTS.find((v) => v.layout === value)\n }\n get layout(): 'grid' | 'list' | 'table' {\n return this.selectedViewLayout?.layout || 'table'\n }\n\n @Output() dataViewLayoutChange: EventEmitter<'grid' | 'list' | 'table'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataLayoutSelectionComponentState> = new EventEmitter()\n\n viewingLayouts: ViewingLayouts[] = []\n selectedViewLayout: ViewingLayouts | undefined\n\n ngOnInit(): void {\n this.viewingLayouts = ALL_VIEW_LAYOUTS.filter((vl) => this.supportedViewLayouts.includes(vl.layout))\n this.componentStateChanged.emit({\n layout: this.layout,\n })\n }\n\n onDataViewLayoutChange(event: { icon: PrimeIcon; layout: 'grid' | 'list' | 'table' }): void {\n this.dataViewLayoutChange.emit(event.layout)\n this.componentStateChanged.emit({\n layout: event.layout,\n })\n }\n}\n","<div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n @if (viewingLayouts.length > 1) {\n <p-selectbutton\n [options]=\"viewingLayouts\"\n [(ngModel)]=\"selectedViewLayout\"\n optionLabel=\"id\"\n (onChange)=\"onDataViewLayoutChange($event.value)\"\n >\n <ng-template #item let-item>\n <i [class]=\"item.icon\" [pTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\"></i>\n <label style=\"display: none\" id=\"{{item.id}}\">{{item.labelKey | translate}}</label>\n </ng-template>\n </p-selectbutton>\n }\n</div>\n","export enum ColumnType {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n DATE = 'DATE',\n RELATIVE_DATE = 'RELATIVE_DATE',\n TRANSLATION_KEY = 'TRANSLATION_KEY',\n}\n","export class ObjectUtils {\n public static resolveFieldData(data: any, field: any): any {\n if (data && field) {\n if (this.isFunction(field)) {\n return field(data)\n } else if (field.indexOf('.') == -1) {\n return data[field]\n } else {\n const fields: string[] = field.split('.')\n let value = data\n for (let i = 0, len = fields.length; i < len; ++i) {\n if (value == null) {\n return null\n }\n value = value[fields[i]]\n }\n return value\n }\n } else {\n return null\n }\n }\n\n public static isFunction(obj: any) {\n return !!(obj && obj.constructor && obj.call && obj.apply)\n }\n}\n","type Extend<TObj extends Record<string, unknown>, K extends string> = {\n [TKey in keyof TObj & string as `${K}${TKey}`]: TObj[TKey] extends Record<string, unknown>\n ? Extend<TObj[TKey], `${K}${TKey}.`>\n : TObj[TKey]\n}\n\ntype NonObjectKeysOf<T> = {\n [K in keyof T]: T[K] extends Array<any> ? K : T[K] extends object ? (T[K] extends Date ? K : never) : K\n}[keyof T]\n\ntype ObjectKeysOf<T> = {\n [K in keyof T]: T[K] extends Array<any> ? never : T[K] extends object ? K : never\n}[keyof T]\n\ntype Filter<TObj extends object, TKey = keyof TObj> = TKey extends keyof TObj\n ? TObj[TKey] extends Array<any>\n ? TObj\n : TObj[TKey] extends object\n ? Filter<TObj[TKey]>\n : Pick<TObj, NonObjectKeysOf<TObj>> | Filter<Pick<TObj, ObjectKeysOf<TObj>>>\n : never\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never\n\nexport type Result<TObj extends Record<string, unknown>> = UnionToIntersection<Filter<Extend<TObj, ''>>>\n\nexport function flattenObject<O extends Record<string, unknown>>(ob: O): Result<O> {\n const toReturn: Record<string, unknown> = {}\n\n for (const i in ob) {\n if (!Object.prototype.hasOwnProperty.call(ob, i)) continue\n\n if (!!ob[i] && typeof ob[i] == 'object' && !(ob[i] instanceof Date) && !Array.isArray(ob[i])) {\n const flatObject = flattenObject(ob[i] as Record<string, unknown>)\n for (const x in flatObject) {\n if (!Object.prototype.hasOwnProperty.call(flatObject, x)) continue\n\n toReturn[i + '.' + x] = (flatObject as any)[x]\n }\n } else {\n toReturn[i] = ob[i]\n }\n }\n return toReturn as Result<O>\n}\n","export interface ColumnFilterDataSelectOptions {\n reverse: boolean\n}\n\nexport type FilterObject = { columnId: string; filterType?: FilterType }\n\nexport type Filter = FilterObject & { value: unknown }\n\nexport enum FilterType {\n ENDS_WITH = 'endsWith',\n STARTS_WITH = 'startsWith',\n CONTAINS = 'contains',\n NOT_CONTAINS = 'notContains',\n EQUALS = 'equals',\n NOT_EQUALS = 'notEquals',\n LESS_THAN = 'lessThan',\n GREATER_THAN = 'greaterThan',\n LESS_THAN_OR_EQUAL = 'lessThanOrEqual',\n GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual',\n IS_EMPTY = 'isEmpty',\n IS_NOT_EMPTY = 'isNotEmpty',\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map, of } from 'rxjs'\nimport { flattenObject } from '../../functions/flatten-object'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { ListGridData } from '../../components/data-list-grid/data-list-grid.component'\nimport { Row } from '../../components/data-table/data-table.component'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { Filter, FilterType } from '../../model/filter.model'\n\ntype RowListGridData = ListGridData | Row\n\nexport class DataSortBase {\n constructor(\n protected locale: string,\n protected translateService: TranslateService\n ) {}\n\n translateItems(\n [items, filters, sortColumn, sortDirection]: [RowListGridData[], Filter[], string, DataSortDirection],\n columns: DataTableColumn[],\n clientSideFiltering: boolean,\n clientSideSorting: boolean\n ): Observable<[RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>]> {\n if (clientSideFiltering || clientSideSorting) {\n let translationKeys: string[] = []\n const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n translatedColumns.forEach((c) => {\n translationKeys = [\n ...translationKeys,\n ...items.map((i) => ObjectUtils.resolveFieldData(i, c.id)?.toString()).filter((v) => !!v),\n ]\n })\n if (translationKeys.length) {\n return this.translateService.get(translationKeys).pipe(\n map((translatedValues: Record<string, string>) => {\n const translations: Record<string, Record<string, string>> = {}\n translatedColumns.forEach((c) => {\n translations[c.id] = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, c.id)?.toString() || '',\n translatedValues[ObjectUtils.resolveFieldData(i, c.id)?.toString()],\n ])\n )\n })\n return [items, filters, sortColumn, sortDirection, translations]\n })\n )\n }\n }\n return of([items, filters, sortColumn, sortDirection, {}])\n }\n\n filterItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n clientSideFiltering: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideFiltering) {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n return [\n items.filter((item) =>\n filters\n .map((filter) => filter.columnId)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n .every((filterColumnId) =>\n filters\n .filter((filter) => filter.columnId === filterColumnId)\n .some((filter) => {\n const value = (\n translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId)?.toString()] ||\n ObjectUtils.resolveFieldData(item, filter.columnId)\n )?.toString()\n switch (filter.filterType) {\n case undefined:\n case FilterType.EQUALS:\n return value === String(filter.value)\n case FilterType.IS_NOT_EMPTY: {\n return filter.value ? !!value : !value\n }\n default:\n return true\n }\n })\n )\n ),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n sortItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n columns: DataTableColumn[],\n clientSideSorting: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideSorting || sortColumn === '') {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n const column = columns.find((h) => h.id === sortColumn)\n let colValues: Record<string, string>\n if (column?.columnType === ColumnType.DATE || column?.columnType === ColumnType.RELATIVE_DATE) {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ])\n )\n } else {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ])\n )\n }\n if (column?.columnType === ColumnType.TRANSLATION_KEY) {\n colValues = translations[sortColumn]\n }\n return [\n [...items].sort(this.createCompareFunction(colValues, sortColumn, sortDirection)),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n flattenItems(items: RowListGridData[]) {\n return items.map((i) => flattenObject(i))\n }\n\n createCompareFunction(\n translatedColValues: Record<string, string>,\n sortColumn: string,\n sortDirection: DataSortDirection\n ): (a: Record<string, any>, b: Record<string, any>) => number {\n let direction = 0\n if (sortDirection === DataSortDirection.ASCENDING) {\n direction = 1\n } else if (sortDirection === DataSortDirection.DESCENDING) {\n direction = -1\n }\n return (data1, data2) => {\n if (direction === 0) {\n return 0\n }\n let result\n const value1 = translatedColValues[ObjectUtils.resolveFieldData(data1, sortColumn)]\n const value2 = translatedColValues[ObjectUtils.resolveFieldData(data2, sortColumn)]\n\n if (value1 == null && value2 != null) result = -1\n else if (value1 != null && value2 == null) result = 1\n else if (value1 == null && value2 == null) result = 0\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, [this.locale, 'en', 'de'], { numeric: true })\n else {\n if (value1 < value2) {\n result = -1\n } else if (value1 > value2) {\n result = 1\n } else {\n result = 0\n }\n }\n return direction * result\n }\n }\n}\n","import { ChangeDetectorRef, NgZone, OnDestroy, Pipe, PipeTransform, inject } from '@angular/core'\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core'\n\n@Pipe({\n name: 'timeago',\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class OcxTimeAgoPipe extends TranslatePipe implements OnDestroy, PipeTransform {\n private changeDetectorRef: ChangeDetectorRef\n private ngZone = inject(NgZone)\n private translateService: TranslateService\n\n private timer: number | undefined | null\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef)\n const translateService = inject(TranslateService)\n\n super(translateService, changeDetectorRef)\n\n this.changeDetectorRef = changeDetectorRef\n this.translateService = translateService\n }\n override transform(value: string) {\n this.removeTimer()\n const d = new Date(value)\n const now = new Date()\n const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000))\n const timeToUpdate = Number.isNaN(seconds) ? 1000 : this.getSecondsUntilUpdate(seconds) * 1000\n this.timer = this.ngZone.runOutsideAngular(() => {\n if (typeof window !== 'undefined') {\n return window.setTimeout(() => {\n this.ngZone.run(() => this.changeDetectorRef.markForCheck())\n }, timeToUpdate)\n }\n return null\n })\n const minutes = Math.round(Math.abs(seconds / 60))\n const hours = Math.round(Math.abs(minutes / 60))\n const days = Math.round(Math.abs(hours / 24))\n const months = Math.round(Math.abs(days / 30.416))\n const years = Math.round(Math.abs(days / 365))\n let translationKey = 'UNKNOWN'\n if (Number.isNaN(seconds)) {\n translationKey = 'NAN'\n } else if (seconds <= 45) {\n translationKey = 'A_FEW_SECONDS_AGO'\n } else if (seconds <= 90) {\n translationKey = 'A_MINUTE_AGO'\n } else if (minutes <= 45) {\n translationKey = 'MINUTES_AGO'\n } else if (minutes <= 90) {\n translationKey = 'AN_HOUR_AGO'\n } else if (hours <= 22) {\n translationKey = 'HOURS_AGO'\n } else if (hours <= 36) {\n translationKey = 'A_DAY_AGO'\n } else if (days <= 25) {\n translationKey = 'DAYS_AGO'\n } else if (days <= 45) {\n translationKey = 'A_MONTH_AGO'\n } else if (days <= 345) {\n translationKey = 'MONTHS_AGO'\n } else if (days <= 545) {\n translationKey = 'A_YEAR_AGO'\n } else {\n translationKey = 'YEARS_AGO'\n }\n return super.transform('OCX_TIMEAGO.' + translationKey, { minutes, hours, days, months, years })\n }\n override ngOnDestroy(): void {\n this.removeTimer()\n super.ngOnDestroy()\n }\n private removeTimer() {\n if (this.timer) {\n window.clearTimeout(this.timer)\n this.timer = null\n }\n }\n private getSecondsUntilUpdate(seconds: number) {\n const min = 60\n const hr = min * 60\n const day = hr * 24\n if (seconds < min) {\n return 2\n } else if (seconds < hr) {\n return 30\n } else if (seconds < day) {\n return 300\n } else {\n return 3600\n }\n }\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n inject,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { AppStateService, UserService } from '@onecx/angular-integration-interface'\nimport { MfeInfo } from '@onecx/integration-interface'\nimport { MenuItem, PrimeIcons, PrimeTemplate } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { BehaviorSubject, Observable, combineLatest, debounceTime, first, map, mergeMap, of, switchMap } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { Row } from '../data-table/data-table.component'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\n\nexport type ListGridData = {\n id: string | number\n imagePath: string | number\n [columnId: string]: unknown\n}\n\ntype RowListGridData = ListGridData & Row\n\nexport interface ListGridDataMenuItem extends MenuItem {\n permission: string\n}\n\nexport interface DataListGridComponentState {\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-data-list-grid',\n templateUrl: './data-list-grid.component.html',\n styleUrls: ['./data-list-grid.component.scss'],\n})\nexport class DataListGridComponent extends DataSortBase implements OnInit, DoCheck, AfterContentInit {\n private userService = inject(UserService)\n private router = inject(Router)\n private injector = inject(Injector)\n private appStateService = inject(AppStateService)\n private hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() sortStates: DataSortDirection[] = []\n\n _pageSizes$ = new BehaviorSubject<number[]>([10, 25, 50])\n @Input()\n get pageSizes(): number[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: number[]) {\n this._pageSizes$.next(value)\n }\n\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() fallbackImage = 'placeholder.png'\n @Input() layout: 'grid' | 'list' = 'grid'\n _viewPermission$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n @Input()\n get viewPermission(): string | string[] | undefined {\n return this._viewPermission$.getValue()\n }\n set viewPermission(value: string | string[] | undefined) {\n this._viewPermission$.next(value)\n }\n @Input() editPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() viewMenuItemKey: string | undefined\n @Input() editMenuItemKey: string | undefined\n @Input() deleteMenuItemKey: string | undefined\n @Input() paginator = true\n @Input() page = 0\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n }\n @Input() name = ''\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n _data$ = new BehaviorSubject<RowListGridData[]>([])\n @Input()\n get data(): RowListGridData[] {\n return this._data$.getValue()\n }\n set data(value: RowListGridData[]) {\n if (this._data$.getValue().length) this.resetPage()\n this._originalData = [...value]\n this._data$.next([...value])\n }\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n if (this._filters$.getValue().length) this.resetPage()\n this._filters$.next(value)\n }\n _originalData: RowListGridData[] = []\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n if (value === DataSortDirection.NONE) {\n this._data$.next([...this._originalData])\n }\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n\n inlineListActions$: Observable<DataAction[]>\n overflowListActions$: Observable<DataAction[]>\n overflowListMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n\n @Output() viewItem = new EventEmitter<ListGridData>()\n @Output() editItem = new EventEmitter<ListGridData>()\n @Output() deleteItem = new EventEmitter<ListGridData>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataListGridComponentState>()\n\n get viewItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteItem.observed\n }\n\n get sortDirectionNumber(): number {\n if (this.sortDirection === DataSortDirection.ASCENDING) return 1\n if (this.sortDirection === DataSortDirection.DESCENDING) return -1\n return 0\n }\n\n gridMenuItems$: Observable<MenuItem[]>\n _selectedItem$ = new BehaviorSubject<ListGridData | undefined>(undefined)\n observedOutputs$ = new BehaviorSubject<number>(0)\n\n displayedItems$: Observable<unknown[]> | undefined\n fallbackImagePath$!: Observable<string>\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n columnType = ColumnType\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n hasViewPermission$: Observable<boolean>\n\n private cachedOverflowMenuItemsVisibility$: Observable<boolean> | undefined\n\n constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.fallbackImagePath$ = this.appStateService.currentMfe$.pipe(\n map((currentMfe) => this.getFallbackImagePath(currentMfe))\n )\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.inlineListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.overflowListMenuItems$ = combineLatest([this.overflowListActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n this.hasViewPermission$ = this._viewPermission$.pipe(\n map((permission) => {\n if (!permission) return []\n return Array.isArray(permission) ? permission : [permission]\n }),\n switchMap((permissionArray) => {\n if (permissionArray.length === 0) {\n return of(true)\n }\n return this.getPermissions().pipe(map((permissions) => permissionArray.every((p) => permissions.includes(p))))\n })\n )\n this.gridMenuItems$ = combineLatest([\n this.getPermissions(),\n this._additionalActions$.asObservable(),\n this._selectedItem$.asObservable(),\n this.observedOutputs$.asObservable(),\n ]).pipe(\n switchMap(([permissions, additionalActions, selectedItem, _observedOutputs]) =>\n this.filterActionsBasedOnPermissions(additionalActions, permissions).pipe(\n map((permittedActions) => ({ permissions, additionalActions: permittedActions, selectedItem }))\n )\n ),\n switchMap(({ permissions, additionalActions, selectedItem }) => {\n return this.getGridActionsTranslations(additionalActions, permissions).pipe(\n map((translations) => ({ permissions, additionalActions, selectedItem, translations }))\n )\n }),\n map(({ permissions, additionalActions, selectedItem, translations }) =>\n this.mapGridMenuItems(permissions, additionalActions, selectedItem, translations)\n )\n )\n }\n\n ngDoCheck(): void {\n const observedOutputs = <any>this.viewItem.observed + <any>this.deleteItem.observed + <any>this.editItem.observed\n if (this.observedOutputs$.getValue() !== observedOutputs) {\n this.observedOutputs$.next(observedOutputs)\n }\n }\n\n ngOnInit(): void {\n this.displayedItems$ = combineLatest([this._data$, this._filters$, this._sortField$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([items]) => items)\n )\n\n this.emitComponentStateChanged()\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n }\n })\n }\n\n onDeleteRow(element: ListGridData) {\n this.deleteItem.emit(element)\n }\n\n onViewRow(element: ListGridData) {\n this.viewItem.emit(element)\n }\n\n onEditRow(element: ListGridData) {\n this.editItem.emit(element)\n }\n\n imgError(item: ListGridData) {\n item.imagePath = ''\n }\n\n getFallbackImagePath(mfeInfo: MfeInfo) {\n return mfeInfo?.remoteBaseUrl\n ? `${mfeInfo.remoteBaseUrl}/onecx-portal-lib/assets/images/${this.fallbackImage}`\n : `./onecx-portal-lib/assets/images/${this.fallbackImage}`\n }\n\n setSelectedItem(item: ListGridData) {\n this._selectedItem$.next(item)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n emitComponentStateChanged(state: DataListGridComponentState = {}) {\n this.displayedPageSize$.pipe(first()).subscribe((pageSize) => {\n this.componentStateChanged.emit({\n pageSize,\n activePage: this.page,\n ...state,\n })\n })\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!this.resolveFieldData(object, key)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowListActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n getFilteredColumns() {\n let ids: string[] = [...(this.subtitleLineIds ?? [])]\n if (this.titleLineId) {\n ids = [this.titleLineId, ...(this.subtitleLineIds ?? [])]\n }\n return this.columns.filter((c) => !ids.includes(c.id))\n }\n\n findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n }\n\n getTemplate(column: DataTableColumn): Observable<TemplateRef<any> | null> {\n if (!this.templatesObservables[column.id]) {\n this.templatesObservables[column.id] = combineLatest([\n this.templates$,\n this.viewTemplates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, vt, pt]) => {\n const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n const columnTemplate = templates.find((template) => template.name === column.id + 'IdListValue')?.template\n if (columnTemplate) {\n return columnTemplate\n }\n switch (column.columnType) {\n case ColumnType.DATE:\n return (\n this._dateListValue ??\n this.findTemplate(templates, ['dateListValue', 'defaultDateListValue'])?.template ??\n null\n )\n case ColumnType.NUMBER:\n return (\n this._numberListValue ??\n this.findTemplate(templates, ['numberListValue', 'defaultNumberListValue'])?.template ??\n null\n )\n case ColumnType.RELATIVE_DATE:\n return (\n this._relativeDateListValue ??\n this.findTemplate(templates, ['relativeDateListValue', 'defaultRelativeDateListValue'])?.template ??\n null\n )\n case ColumnType.TRANSLATION_KEY:\n return (\n this._translationKeyListValue ??\n this.findTemplate(templates, ['translationKeyListValue', 'defaultTranslationKeyListValue'])?.template ??\n null\n )\n default:\n return (\n this._stringListValue ??\n this.findTemplate(templates, ['stringListValue', 'defaultStringListValue'])?.template ??\n null\n )\n }\n })\n )\n }\n return this.templatesObservables[column.id]\n }\n\n private mapGridMenuItems(\n permissions: string[],\n additionalActions: DataAction[],\n selectedItem: ListGridData | undefined,\n translations: Record<string, string>\n ): MenuItem[] {\n let deleteDisabled = false\n let editDisabled = false\n let viewDisabled = false\n\n let deleteVisible = true\n let editVisible = true\n let viewVisible = true\n\n if (selectedItem) {\n viewDisabled = !!this.viewActionEnabledField && !this.fieldIsTruthy(selectedItem, this.viewActionEnabledField)\n editDisabled = !!this.editActionEnabledField && !this.fieldIsTruthy(selectedItem, this.editActionEnabledField)\n deleteDisabled =\n !!this.deleteActionEnabledField && !this.fieldIsTruthy(selectedItem, this.deleteActionEnabledField)\n\n viewVisible = !this.viewActionVisibleField || this.fieldIsTruthy(selectedItem, this.viewActionVisibleField)\n editVisible = !this.editActionVisibleField || this.fieldIsTruthy(selectedItem, this.editActionVisibleField)\n deleteVisible = !this.deleteActionVisibleField || this.fieldIsTruthy(selectedItem, this.deleteActionVisibleField)\n }\n\n const menuItems: MenuItem[] = []\n const automationId = 'data-grid-action-button'\n const automationIdHidden = 'data-grid-action-button-hidden'\n if (this.shouldDisplayAction(this.viewPermission, this.viewItem, permissions)) {\n menuItems.push({\n label: translations[this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW'],\n icon: PrimeIcons.EYE,\n command: () => this.viewItem.emit(selectedItem),\n disabled: viewDisabled,\n visible: viewVisible,\n automationId: viewVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.editPermission, this.editItem, permissions)) {\n menuItems.push({\n label: translations[this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT'],\n icon: PrimeIcons.PENCIL,\n command: () => this.editItem.emit(selectedItem),\n disabled: editDisabled,\n visible: editVisible,\n automationId: editVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.deletePermission, this.deleteItem, permissions)) {\n menuItems.push({\n label: translations[this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE'],\n icon: PrimeIcons.TRASH,\n command: () => this.deleteItem.emit(selectedItem),\n disabled: deleteDisabled,\n visible: deleteVisible,\n automationId: deleteVisible ? automationId : automationIdHidden,\n })\n }\n const val = menuItems.concat(\n additionalActions.map((a) => {\n const isVisible = !a.actionVisibleField || this.fieldIsTruthy(selectedItem, a.actionVisibleField)\n return {\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(selectedItem, a.actionEnabledField)),\n visible: isVisible,\n command: () => a.callback(selectedItem),\n automationId: isVisible ? automationId : automationIdHidden,\n }\n })\n )\n return val\n }\n\n private getGridActionsTranslations(\n additionalActions: DataAction[],\n permissions: string[]\n ): Observable<Record<string, string>> {\n return this.translateService.get([\n this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW',\n this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT',\n this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE',\n ...additionalActions\n .filter((action) => {\n const permissionsArray = Array.isArray(action.permission) ? action.permission : [action.permission]\n return permissionsArray.every((p) => permissions.includes(p))\n })\n .map((a) => a.labelKey || ''),\n ])\n }\n\n private shouldDisplayAction(\n permission: string | string[] | undefined,\n emitter: EventEmitter<any>,\n userPermissions: string[]\n ): boolean {\n const permissions = Array.isArray(permission) ? permission : permission ? [permission] : []\n return emitter.observed && permissions.every((p) => userPermissions.includes(p))\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[], permissions?: string[]): Observable<DataAction[]> {\n const permissions$ = permissions ? of(permissions) : this.getPermissions()\n return permissions$.pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n\n private getPermissions(): Observable<string[]> {\n if (this.hasPermissionChecker?.getPermissions) {\n return this.hasPermissionChecker.getPermissions()\n }\n\n return this.userService.getPermissions()\n }\n}\n","@if ((displayedPageSize$ | async); as displayedPageSize) { @if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n<p-dataView\n [value]=\"(displayedItems$ | async) ?? []\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [layout]=\"layout\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"this.pageSizes ?? []\"\n id=\"dataListGrid_{{name}}\"\n paginatorDropdownAppendTo=\"body\"\n>\n <ng-template #grid let-rows>\n <div class=\"grid grid-cols-12 gap-4\">\n @for (item of rows; track item) {\n <ng-container\n [ngTemplateOutlet]=\"_gridItem ? _gridItem : defaultGridItem\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #list let-rows>\n <div class=\"p-grid p-nogutter grid grid-nogutter\">\n @for (item of rows; track item; let first = $first) { @defer (on viewport; on idle){\n <ng-container\n [ngTemplateOutlet]=\"_listItem ? _listItem : defaultListItem\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n item:item,\n first:first,\n columnTemplates: columnTemplates\n }\"\n ></ng-container>\n } @placeholder {\n <div style=\"width: 100%; height: 80px\"></div>\n } }\n </div>\n </ng-template>\n <ng-template pTemplate=\"empty\">\n <span>{{ emptyResultsMessage || (\"OCX_DATA_LIST_GRID.EMPTY_RESULT\" | translate) }}</span>\n </ng-template>\n</p-dataView>\n} }\n\n<ng-template #defaultGridItem let-item>\n <div class=\"col-12 lg:col-6 xl:col-4 p-1 flex justify-content-center grid-border-divider\">\n <div class=\"data-grid-item card flex flex-column justify-content-between w-12 lg:w-11 mb-4 mt-4 align-self-stretch\">\n <div class=\"flex justify-content-center mb-3\">\n <img\n class=\"image\"\n src=\"{{ item.imagePath || (fallbackImagePath$ | async) }}\"\n (error)=\"imgError(item)\"\n alt=\"{{resolveFieldData(item, titleLineId)|| ''}}\"\n />\n </div>\n <div class=\"flex flex-row justify-content-between align-items-center\">\n <div class=\"data-grid-items flex-row\">\n <div class=\"item-name font-medium mr-3 text-2xl\">\n <ng-container *ngIf=\"hasViewPermission$ | async as hasViewPermission; else noViewPermission\">\n <a [routerLink]=\"\" (click)=\"onViewRow(item)\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-container>\n <ng-template #noViewPermission>\n <a [routerLink]=\"\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-template>\n </div>\n <ng-container\n [ngTemplateOutlet]=\"_gridItemSubtitleLines ? _gridItemSubtitleLines : defaultGridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div *ngIf=\"(gridMenuItems$ | async) as gridMenuItems\">\n <p-menu #menu [model]=\"gridMenuItems\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n (click)=\"setSelectedItem(item); menu.toggle($event)\"\n icon=\"pi pi-ellipsis-v\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n class=\"more-actions-menu-button menu-btn\"\n [attr.name]=\"'data-grid-item-menu-button'\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n ></button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultGridItemSubtitleLines let-item>\n @for (subtitleLineId of subtitleLineIds; track subtitleLineId) {\n <div class=\"subtitleLine edit-time text-xl my-3\">{{ resolveFieldData(item, subtitleLineId) }}</div>\n }\n</ng-template>\n<ng-template #defaultListItem let-item=\"item\" let-first=\"first\" let-columnTemplates=\"columnTemplates\">\n @if (columnTemplates) {\n <div class=\"col-12\">\n <div class=\"data-list-items p-1\" [ngClass]=\"{ 'list-border-divider': !first }\">\n <div class=\"item-name-row flex flex-row justify-content-between\">\n <div class=\"item-name mr-3 text-2xl font-medium align-content-center\">\n @if (titleLineId) {\n <span>{{ resolveFieldData(item, titleLineId) || '' }}</span>\n }\n </div>\n <div class=\"flex flex-row\">\n @if (viewItemObserved && (!viewActionVisibleField || fieldIsTruthy(item, viewActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-viewButton\"\n type=\"button\"\n icon=\"pi pi-eye\"\n pButton\n class=\"p-button-rounded p-button-text mb-1 mr-2 viewListItemButton\"\n [pTooltip]=\"(viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: !!viewActionEnabledField && !fieldIsTruthy(item, viewActionEnabledField)\n }\"\n [attr.aria-label]=\"(viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n (click)=\"onViewRow(item)\"\n *ocxIfPermission=\"viewPermission\"\n [disabled]=\"!!viewActionEnabledField && !fieldIsTruthy(item, viewActionEnabledField)\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } @if (editItemObserved && (!editActionVisibleField || fieldIsTruthy(item, editActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-editButton\"\n type=\"button\"\n class=\"p-button-rounded p-button-text mb-1 mr-2 editListItemButton\"\n icon=\"pi pi-pencil\"\n pButton\n [pTooltip]=\"(editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: !!editActionEnabledField && !fieldIsTruthy(item, editActionEnabledField)\n }\"\n [attr.aria-label]=\"(editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n (click)=\"onEditRow(item)\"\n *ocxIfPermission=\"editPermission\"\n [disabled]=\"!!editActionEnabledField && !fieldIsTruthy(item, editActionEnabledField)\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } @if (deleteItemObserved && (!deleteActionVisibleField || fieldIsTruthy(item, deleteActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-deleteButton\"\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-text p-button-danger mb-1 mr-2 deleteListItemButton\"\n pButton\n [pTooltip]=\"(deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: !!deleteActionEnabledField && !fieldIsTruthy(item, deleteActionEnabledField)\n }\"\n [attr.aria-label]=\"(deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n (click)=\"onDeleteRow(item)\"\n *ocxIfPermission=\"deletePermission\"\n [disabled]=\"!!deleteActionEnabledField && !fieldIsTruthy(item, deleteActionEnabledField)\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } @for (action of inlineListActions$ | async; track action) { @if ((!action.actionVisibleField ||\n fieldIsTruthy(item, action.actionVisibleField))) {\n <button\n id=\"{{resolveFieldData(item, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(item)\"\n [pTooltip]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n tooltipPosition=\"top\"\n [tooltipOptions]=\"{\n disabled: action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(item, action.actionEnabledField))\n }\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(item, action.actionEnabledField))\"\n [attr.name]=\"'data-list-action-button'\"\n ></button>\n } } @if (hasVisibleOverflowMenuItems(item) | async) {\n <p-menu #menu [model]=\"(overflowListMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n class=\"p-button-rounded p-button-text\"\n [icon]=\"'pi pi-ellipsis-v'\"\n (click)=\"toggleOverflowMenu($event, menu, item)\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n [attr.name]=\"'data-list-overflow-item-menu-button'\"\n ></button>\n }\n </div>\n </div>\n <div class=\"text-base font-light my-1\">\n <ng-container\n [ngTemplateOutlet]=\"_listItemSubtitleLines ? _listItemSubtitleLines : defaultListItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div class=\"flex flex-wrap\">\n @for (col of getFilteredColumns(); track col) {\n <div class=\"w-12rem my-2 mr-2\">\n <div class=\"font-bold\" [ocxTooltipOnOverflow]=\"col.nameKey | translate\" tooltipPosition=\"top\">\n {{ col.nameKey | translate }}\n </div>\n <div\n [ocxTooltipOnOverflow]=\"col.columnType === columnType.TRANSLATION_KEY ? (resolveFieldData(item,col.id) | translate) : resolveFieldData(item, col.id)\"\n tooltipPosition=\"top\"\n >\n @defer(on viewport;){\n <ng-container\n [ngTemplateOutlet]=\"_listValue ? _listValue: defaultListValue\"\n [ngTemplateOutletContext]=\"{\n rowObject: item,\n column: col,\n columnTemplates: columnTemplates\n }\"\n >\n </ng-container>\n } @placeholder {\n <p-skeleton width=\"5rem\" />\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n</ng-template>\n<ng-template #defaultListItemSubtitleLines let-item=\"$implicit\">\n @for (subtitleLineId of subtitleLineIds; track subtitleLineId) {\n <div class=\"subtitleLine text-xl my-3\">{{ resolveFieldData(item, subtitleLineId) }}</div>\n }\n</ng-template>\n\n<ng-template #defaultListValue let-rowObject=\"rowObject\" let-column=\"column\" let-columnTemplates=\"columnTemplates\">\n @if (columnTemplates[column.id]) {\n <ng-container\n [ngTemplateOutlet]=\"columnTemplates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column\n }\"\n >\n </ng-container>\n }\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataColumnNameId } from '../../model/data-column-name-id.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { SelectChangeEvent } from 'primeng/select'\n\nexport type ListGridSort = { sortColumn: string; sortDirection: DataSortDirection }\nexport interface DataListGridSortingComponentState {\n sorting?: ListGridSort\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-data-list-grid-sorting',\n templateUrl: './data-list-grid-sorting.component.html',\n styleUrls: ['./data-list-grid-sorting.component.scss'],\n})\nexport class DataListGridSortingComponent implements OnInit {\n @Input() columns: DataTableColumn[] = []\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Output() sortChange: EventEmitter<string> = new EventEmitter()\n @Output() sortDirectionChange: EventEmitter<DataSortDirection> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataListGridSortingComponentState> = new EventEmitter()\n @Output() columnsChange: EventEmitter<string[]> = new EventEmitter()\n selectedSortingOption: DataColumnNameId | undefined\n dropdownOptions: DataColumnNameId[] = []\n\n ngOnInit(): void {\n this.columns.forEach((element) => {\n if (element.sortable) {\n this.dropdownOptions.push({ columnId: element.id, columnName: element.nameKey });\n }\n })\n this.selectedSortingOption = this.dropdownOptions.find((e) => e.columnId === this?.sortField)\n this.emitComponentStateChange()\n }\n\n selectSorting(event: SelectChangeEvent): void {\n this._sortField$.next(event.value.columnId)\n this.sortChange.emit(event.value.columnId)\n this.emitComponentStateChange()\n }\n sortDirectionChanged(): void {\n const newSortDirection = this.nextSortDirection()\n this._sortDirection$.next(newSortDirection)\n this.sortDirectionChange.emit(newSortDirection)\n this.emitComponentStateChange()\n }\n\n nextSortDirection() {\n return this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n emitComponentStateChange() {\n this.componentStateChanged.emit({\n sorting: {\n sortColumn: this.sortField,\n sortDirection: this.sortDirection,\n },\n })\n }\n\n sortIcon() {\n switch (this.sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'pi-sort-amount-up'\n case DataSortDirection.DESCENDING:\n return 'pi-sort-amount-down'\n default:\n return 'pi-sort-alt'\n }\n }\n\n sortIconTitle() {\n return this.sortDirectionToTitle(\n this.nextSortDirection()\n )\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.ASCENDING_TOOLTIP'\n case DataSortDirection.DESCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DESCENDING_TOOLTIP'\n default:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DEFAULT_TOOLTIP'\n }\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n <p-floatLabel variant=\"on\">\n <p-select\n id=\"dataListGridSortingDropdown\"\n inputId=\"dataListGridSortingDropdownInput\"\n [(ngModel)]=\"selectedSortingOption\"\n [options]=\"dropdownOptions\"\n (onChange)=\"selectSorting($event)\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.DROPDOWN.ARIA_LABEL' | translate)\"\n >\n <ng-template let-item #item> {{ item?.columnName ? (item.columnName | translate) : ''}} </ng-template>\n <ng-template let-item #selectedItem>\n {{ item?.columnName ? (item.columnName | translate) : ''}}\n </ng-template></p-select\n >\n <label for=\"dataListGridSortingDropdownInput\">{{ (\"OCX_LIST_GRID_SORT.DROPDOWN.LABEL\" | translate) }}</label>\n </p-floatLabel>\n <p-button\n id=\"dataListGridSortingButton\"\n type=\"button\"\n icon=\"pi {{sortIcon()}}\"\n styleClass=\"p-button-outlined\"\n (onClick)=\"sortDirectionChanged()\"\n [pTooltip]=\"(sortIconTitle() | translate)\"\n tooltipPosition=\"top\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.SORTING_BUTTON_ARIA_LABEL' | translate:{direction: (sortDirectionToTitle(nextSortDirection())) | translate})\"\n ></p-button>\n</div>\n","import { PrimeTemplate } from 'primeng/api'\n\nexport function findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n}\n","import { formatDate } from '@angular/common'\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n inject,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { isValidDate } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { MenuItem, PrimeTemplate, SelectItem } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { MultiSelectItem } from 'primeng/multiselect'\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n debounceTime,\n filter,\n first,\n map,\n mergeMap,\n of,\n shareReplay,\n switchMap,\n withLatestFrom,\n} from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { findTemplate } from '../../utils/template.utils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\n\nexport type Primitive = number | string | boolean | bigint | Date\nexport type Row = {\n id: string | number\n [columnId: string]: unknown\n}\n\nexport enum TemplateType {\n CELL = 'CELL',\n FILTERCELL = 'FILTERCELL',\n}\n\ninterface TemplatesData {\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>>\n idSuffix: Array<string>\n templateNames: Record<ColumnType, Array<string>>\n}\n\nexport type Sort = { sortColumn: string; sortDirection: DataSortDirection }\n\nexport interface DataTableComponentState {\n filters?: Filter[]\n sorting?: Sort\n selectedRows?: Row[]\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent extends DataSortBase implements OnInit, AfterContentInit {\n private readonly router = inject(Router)\n private readonly injector = inject(Injector)\n private readonly userService = inject(UserService)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n\n FilterType = FilterType\n TemplateType = TemplateType\n checked = true\n _rows$ = new BehaviorSubject<Row[]>([])\n @Input()\n get rows(): Row[] {\n return this._rows$.getValue()\n }\n set rows(value: Row[]) {\n !this._rows$.getValue().length\n this._rows$.next(value)\n }\n _selectionIds$ = new BehaviorSubject<(string | number)[]>([])\n @Input()\n set selectedRows(value: Row[] | string[] | number[]) {\n this._selectionIds$.next(\n value.map((row) => {\n if (typeof row === 'object') {\n return row.id\n }\n return row\n })\n )\n }\n\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n !this._filters$.getValue().length\n this._filters$.next(value)\n }\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortColumn$ = new BehaviorSubject<string>('')\n @Input()\n get sortColumn(): string {\n return this?._sortColumn$.getValue()\n }\n set sortColumn(value: string) {\n this?._sortColumn$.next(value)\n }\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columnFilterTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c, TemplateType.CELL))\n const filterObs = value.map((c) => this.getTemplate(c, TemplateType.FILTERCELL))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n this.columnFilterTemplates$ = combineLatest(filterObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n }\n @Input() clientSideFiltering = true\n @Input() clientSideSorting = true\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n\n _pageSizes$ = new BehaviorSubject<number[]>([10, 25, 50])\n @Input()\n get pageSizes(): number[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: number[]) {\n this._pageSizes$.next(value)\n }\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() name = ''\n @Input() deletePermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() selectionEnabledField: string | undefined\n @Input() allowSelectAll = true\n @Input() paginator = true\n\n _page$ = new BehaviorSubject<number>(0)\n @Input()\n get page(): number {\n return this._page$.getValue()\n }\n set page(value: number) {\n this._page$.next(value)\n }\n\n @Input() tableStyle: { [klass: string]: any } | undefined\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n @Input() stringCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringCell') stringCellChildTemplate: TemplateRef<any> | undefined\n get _stringCell(): TemplateRef<any> | undefined {\n return this.stringCellTemplate || this.stringCellChildTemplate\n }\n\n @Input() numberCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberCell') numberCellChildTemplate: TemplateRef<any> | undefined\n get _numberCell(): TemplateRef<any> | undefined {\n return this.numberCellTemplate || this.numberCellChildTemplate\n }\n\n @Input() dateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateCell') dateCellChildTemplate: TemplateRef<any> | undefined\n get _dateCell(): TemplateRef<any> | undefined {\n return this.dateCellTemplate || this.dateCellChildTemplate\n }\n\n @Input() relativeDateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateCell') relativeDateCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateCell(): TemplateRef<any> | undefined {\n return this.relativeDateCellTemplate || this.relativeDateCellChildTemplate\n }\n\n @Input() cellTemplate: TemplateRef<any> | undefined\n @ContentChild('cell') cellChildTemplate: TemplateRef<any> | undefined\n get _cell(): TemplateRef<any> | undefined {\n return this.cellTemplate || this.cellChildTemplate\n }\n @Input() translationKeyCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyCell') translationKeyCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyCell(): TemplateRef<any> | undefined {\n return this.translationKeyCellTemplate || this.translationKeyCellChildTemplate\n }\n @Input() stringFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringFilterCell') stringFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringFilterCell(): TemplateRef<any> | undefined {\n return this.stringFilterCellTemplate || this.stringFilterCellChildTemplate\n }\n @Input() numberFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberFilterCell') numberFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberFilterCell(): TemplateRef<any> | undefined {\n return this.numberFilterCellTemplate || this.numberFilterCellChildTemplate\n }\n @Input() dateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateFilterCell(): TemplateRef<any> | undefined {\n return this.dateFilterCellTemplate || this.dateFilterCellChildTemplate\n }\n @Input() relativeDateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateFilterCell') relativeDateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateFilterCellTemplate || this.relativeDateFilterCellChildTemplate\n }\n @Input() filterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('filterCell') filterCellChildTemplate: TemplateRef<any> | undefined\n get _filterCell(): TemplateRef<any> | undefined {\n return this.filterCellTemplate || this.filterCellChildTemplate\n }\n @Input() translationKeyFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyFilterCell') translationKeyFilterCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyFilterCellTemplate || this.translationKeyFilterCellChildTemplate\n }\n\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() viewTableRow = new EventEmitter<Row>()\n @Output() editTableRow = new EventEmitter<Row>()\n @Output() deleteTableRow = new EventEmitter<Row>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataTableComponentState>()\n\n displayedRows$: Observable<unknown[]> | undefined\n selectedRows$: Observable<unknown[]> | undefined\n\n currentFilterColumn$ = new BehaviorSubject<DataTableColumn | null>(null)\n currentEqualFilterOptions$: Observable<{ options: SelectItem[]; column: DataTableColumn | undefined }> | undefined\n currentEqualSelectedFilters$: Observable<unknown[]> | undefined\n truthyFilterOptions = [\n {\n key: 'OCX_DATA_TABLE.FILTER_YES',\n value: true,\n },\n {\n key: 'OCX_DATA_TABLE.FILTER_NO',\n value: false,\n },\n ]\n currentTruthySelectedFilters$: Observable<unknown[]> | undefined\n filterAmounts$: Observable<Record<string, number>> | undefined\n\n overflowActions$: Observable<DataAction[]>\n inlineActions$: Observable<DataAction[]>\n overflowMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n get viewTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewTableRow.observed\n }\n get editTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editTableRow.observed\n }\n get deleteTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteTableRow.observed\n }\n get anyRowActionObserved(): boolean {\n return this.viewTableRowObserved || this.editTableRowObserved || this.deleteTableRowObserved\n }\n\n get selectionChangedObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.selectionChangedObserved || dv?.selectionChanged.observed || this.selectionChanged.observed\n }\n\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n private cachedOverflowActions$: Observable<DataAction[]>\n private cachedOverflowMenuItemsVisibility$: Observable<boolean> | undefined\n\n constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.overflowActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.inlineActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowMenuItems$ = combineLatest([this.overflowActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n\n this.rowSelectable = this.rowSelectable.bind(this)\n\n this.cachedOverflowActions$ = this.overflowActions$.pipe(\n shareReplay(1) // Cache the last emitted value\n )\n }\n\n ngOnInit(): void {\n this.displayedRows$ = combineLatest([this._rows$, this._filters$, this._sortColumn$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([rows]) => this.flattenItems(rows))\n )\n this.currentTruthySelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id && currentFilterColumn.filterType === FilterType.IS_NOT_EMPTY\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualSelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUALS)\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualFilterOptions$ = combineLatest([this._rows$, this.currentFilterColumn$, this._filters$]).pipe(\n filter(\n ([_, currentFilterColumn, __]) =>\n !currentFilterColumn?.filterType || currentFilterColumn.filterType === FilterType.EQUALS\n ),\n mergeMap(([rows, currentFilterColumn, filters]) => {\n if (!currentFilterColumn?.id) {\n return of({ options: [], column: undefined })\n }\n\n const currentFilters = filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUALS)\n )\n .map((filter) => filter.value)\n\n const columnValues = rows\n .map((row) => row[currentFilterColumn?.id])\n .filter((value) => value !== null && value !== undefined && value !== '')\n\n if (currentFilterColumn.columnType === ColumnType.DATE) {\n return of({\n options: columnValues.map(\n (c) =>\n ({\n label: c,\n value: c,\n toFilterBy: formatDate(`${c}`, currentFilterColumn.dateFormat ?? 'medium', this.locale),\n }) as SelectItem\n ),\n column: currentFilterColumn,\n })\n }\n\n const translateObservable =\n this.columns.find((c) => c.id === currentFilterColumn?.id)?.columnType === ColumnType.TRANSLATION_KEY\n ? this.translateColumnValues(columnValues as string[])\n : of(Object.fromEntries(columnValues.map((cv) => [cv, cv])))\n return translateObservable.pipe(\n map((translatedValues) => {\n return Object.values(translatedValues)\n .concat(currentFilters)\n .filter((value, index, self) => self.indexOf(value) === index && value !== null && value !== '')\n .map(\n (filterOption) =>\n ({\n label: filterOption,\n value: filterOption,\n toFilterBy: filterOption,\n }) as SelectItem\n )\n }),\n map((options) => {\n return {\n options: options,\n column: currentFilterColumn,\n }\n })\n )\n })\n )\n this.filterAmounts$ = this._filters$.pipe(\n map((filters) =>\n filters\n .map((filter) => filter.columnId)\n .map((columnId) => [columnId, filters.filter((filter) => filter.columnId === columnId).length])\n ),\n map((amounts) => Object.fromEntries(amounts))\n )\n this.mapSelectionToRows()\n this.emitComponentStateChanged()\n }\n\n translateColumnValues(columnValues: string[]): Observable<any> {\n return columnValues.length ? this.translateService.get(columnValues as string[]) : of({})\n }\n\n emitComponentStateChanged(state: DataTableComponentState = {}) {\n this.displayedPageSize$\n .pipe(withLatestFrom(this._selectionIds$, this._rows$), first())\n .subscribe(([pageSize, selectedIds, rows]) => {\n this.componentStateChanged.emit({\n filters: this.filters,\n sorting: {\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n },\n pageSize,\n activePage: this.page,\n selectedRows: rows.filter((row) => selectedIds.includes(row.id)),\n ...state,\n })\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringCell':\n this.stringCellChildTemplate = item.template\n break\n case 'numberCell':\n this.numberCellChildTemplate = item.template\n break\n case 'dateCell':\n this.dateCellChildTemplate = item.template\n break\n case 'relativeDateCell':\n this.relativeDateCellChildTemplate = item.template\n break\n case 'cellTemplate':\n this.cellChildTemplate = item.template\n break\n case 'translationKeyCell':\n this.translationKeyCellChildTemplate = item.template\n break\n case 'stringFilterCell':\n this.stringFilterCellChildTemplate = item.template\n break\n case 'numberFilterCell':\n this.numberFilterCellChildTemplate = item.template\n break\n case 'dateFilterCell':\n this.dateFilterCellChildTemplate = item.template\n break\n case 'relativeDateFilterCell':\n this.relativeDateFilterCellChildTemplate = item.template\n break\n case 'filterCellTemplate':\n this.filterCellChildTemplate = item.template\n break\n case 'translationKeyFilterCell':\n this.translationKeyFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n onSortColumnClick(sortColumn: string) {\n const newSortDirection = this.columnNextSortDirection(sortColumn)\n\n this._sortColumn$.next(sortColumn)\n this._sortDirection$.next(newSortDirection)\n\n this.sorted.emit({ sortColumn: sortColumn, sortDirection: newSortDirection })\n this.emitComponentStateChanged({\n sorting: {\n sortColumn: sortColumn,\n sortDirection: newSortDirection,\n },\n })\n }\n\n columnNextSortDirection(sortColumn: string) {\n return sortColumn !== this.sortColumn\n ? this.sortStates[0]\n : this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n onDeleteRow(selectedTableRow: Row) {\n this.deleteTableRow.emit(selectedTableRow)\n }\n\n onViewRow(selectedTableRow: Row) {\n this.viewTableRow.emit(selectedTableRow)\n }\n\n onEditRow(selectedTableRow: Row) {\n this.editTableRow.emit(selectedTableRow)\n }\n\n onFilterChosen(column: DataTableColumn) {\n this.currentFilterColumn$.next(column)\n }\n\n onMultiselectFilterChange(column: DataTableColumn, event: any) {\n const filters = this.filters\n .filter((filter) => filter.columnId !== column.id)\n .concat(\n event.value.map((value: Primitive) => ({\n columnId: column.id,\n value,\n filterType: column.filterType,\n }))\n )\n if (this.clientSideFiltering) {\n this.filters = filters\n }\n this.filtered.emit(filters)\n this.emitComponentStateChanged({\n filters,\n })\n this.resetPage()\n }\n\n getSelectedFilters(columnId: string): unknown[] | undefined {\n return this.filters.filter((filter) => filter.columnId === columnId).map((filter) => filter.value)\n }\n\n sortIconTitle(sortColumn: string) {\n return this.sortDirectionToTitle(\n this.columnNextSortDirection(sortColumn)\n )\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.ASCENDING_TITLE'\n case DataSortDirection.DESCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DESCENDING_TITLE'\n default:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DEFAULT_TITLE'\n }\n }\n\n mapSelectionToRows() {\n // Include _page$ to force fresh array references on page navigation\n // to satisfy PrimeNG DataTable selection tracking, because it needs new object references to detect changes\n this.selectedRows$ = combineLatest([this._selectionIds$, this._rows$, this._page$]).pipe(\n map(([selectedRowIds, rows, _]) => {\n return selectedRowIds\n .map((rowId) => rows.find((r) => r.id === rowId))\n .filter((row): row is Row => row !== undefined)\n })\n )\n }\n\n isRowSelectionDisabled(rowObject: Row) {\n return !!this.selectionEnabledField && !this.fieldIsTruthy(rowObject, this.selectionEnabledField)\n }\n\n rowSelectable(event: any) {\n return !this.isRowSelectionDisabled(event.data)\n }\n\n onSelectionChange(selection: Row[]) {\n let newSelectionIds = selection.map((row) => row.id)\n const rows = this._rows$.getValue()\n\n if (this.selectionEnabledField) {\n const disabledRowIds = rows.filter((r) => !this.fieldIsTruthy(r, this.selectionEnabledField)).map((row) => row.id)\n if (disabledRowIds.length > 0) {\n newSelectionIds = this.mergeWithDisabledKeys(newSelectionIds, disabledRowIds)\n }\n }\n\n this._selectionIds$.next(newSelectionIds)\n this.emitSelectionChanged()\n this.emitComponentStateChanged()\n }\n\n emitSelectionChanged() {\n this.selectionChanged.emit(this._rows$.getValue().filter((row) => this._selectionIds$.getValue().includes(row.id)))\n }\n\n mergeWithDisabledKeys(newSelectionIds: (string | number)[], disabledRowIds: (string | number)[]) {\n const previousSelectionIds = this._selectionIds$.getValue()\n const previouslySelectedAndDisabled = previousSelectionIds.filter((id) => disabledRowIds.includes(id))\n const disabledAndPreviouslyDeselected = disabledRowIds.filter((id) => !previousSelectionIds.includes(id))\n const updatedSelection = [...newSelectionIds]\n\n previouslySelectedAndDisabled.forEach((id) => {\n if (!updatedSelection.includes(id)) {\n updatedSelection.push(id)\n }\n })\n\n disabledAndPreviouslyDeselected.forEach((id) => {\n const index = updatedSelection.indexOf(id)\n if (index > -1) {\n updatedSelection.splice(index, 1)\n }\n })\n\n return updatedSelection\n }\n\n isSelected(row: Row) {\n return this._selectionIds$.getValue().includes(row.id)\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!ObjectUtils.resolveFieldData(object, key)\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n isDate(value: Date | string | number) {\n if (value instanceof Date) {\n return true\n }\n const d = new Date(value)\n return isValidDate(d)\n }\n\n cellTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: ['numberCell', 'numberTableCell', 'defaultNumberCell'],\n [ColumnType.RELATIVE_DATE]: ['relativeDateCell', 'relativeDateTableCell', 'defaultRelativeDateCell'],\n [ColumnType.TRANSLATION_KEY]: ['translationKeyCell', 'translationKeyTableCell', 'defaultTranslationKeyCell'],\n [ColumnType.STRING]: ['stringCell', 'stringTableCell', 'defaultStringCell'],\n },\n }\n\n filterTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableFilterCell', 'IdFilterCell', 'IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateFilterCell', 'dateTableFilterCell', 'dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: [\n 'numberFilterCell',\n 'numberTableFilterCell',\n 'numberCell',\n 'numberTableCell',\n 'defaultNumberCell',\n ],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterCell',\n 'relativeDateTableFilterCell',\n 'relativeDateCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateCell',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterCell',\n 'translationKeyTableFilterCell',\n 'defaultTranslationKeyCell',\n 'translationKeyCell',\n 'translationKeyTableCell',\n ],\n [ColumnType.STRING]: [\n 'stringFilterCell',\n 'stringTableFilterCell',\n 'stringCell',\n 'stringTableCell',\n 'defaultStringCell',\n ],\n },\n }\n\n templatesDataMap: Record<TemplateType, TemplatesData> = {\n [TemplateType.CELL]: this.cellTemplatesData,\n [TemplateType.FILTERCELL]: this.filterTemplatesData,\n }\n\n getColumnTypeTemplate(templates: PrimeTemplate[], columnType: ColumnType, templateType: TemplateType) {\n let template: TemplateRef<any> | undefined\n\n switch (templateType) {\n case TemplateType.CELL:\n switch (columnType) {\n case ColumnType.DATE:\n template = this._dateCell\n break\n case ColumnType.NUMBER:\n template = this._numberCell\n break\n case ColumnType.RELATIVE_DATE:\n template = this._relativeDateCell\n break\n case ColumnType.TRANSLATION_KEY:\n template = this._translationKeyCell\n break\n default:\n template = this._stringCell\n }\n break\n case TemplateType.FILTERCELL:\n switch (columnType) {\n case ColumnType.DATE:\n template = this._dateFilterCell\n break\n case ColumnType.NUMBER:\n template = this._numberFilterCell\n break\n case ColumnType.RELATIVE_DATE:\n template = this._relativeDateFilterCell\n break\n case ColumnType.TRANSLATION_KEY:\n template = this._translationKeyFilterCell\n break\n default:\n template = this._stringFilterCell\n }\n break\n }\n\n return (\n template ??\n findTemplate(templates, this.templatesDataMap[templateType].templateNames[columnType])?.template ??\n null\n )\n }\n\n getTemplate(column: DataTableColumn, templateType: TemplateType): Observable<TemplateRef<any> | null> {\n const templatesData = this.templatesDataMap[templateType]\n\n if (!templatesData.templatesObservables[column.id]) {\n templatesData.templatesObservables[column.id] = combineLatest([\n this.templates$,\n this.viewTemplates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, vt, pt]) => {\n const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n const columnTemplate = findTemplate(\n templates,\n templatesData.idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return this.getColumnTypeTemplate(templates, column.columnType, templateType)\n })\n )\n }\n return templatesData.templatesObservables[column.id]\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n getRowObjectFromMultiselectItem(value: MultiSelectItem, column: DataTableColumn): Record<string, string | undefined> {\n return {\n [column.id]: value.label,\n }\n }\n\n rowTrackByFunction = (item: any) => {\n return item.id\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[]): Observable<DataAction[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n}\n","<ng-template #actionColumn let-rowObject=\"localRowObject\">\n @if (anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0)\n {\n <td\n class=\"actions\"\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-left' : 'action-column-right'\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n >\n <div class=\"icon-button-row-wrapper\">\n @if (viewTableRowObserved && (!viewActionVisibleField || fieldIsTruthy(rowObject, viewActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-viewButton\"\n *ocxIfPermission=\"viewPermission\"\n [disabled]=\"!!viewActionEnabledField && !fieldIsTruthy(rowObject, viewActionEnabledField)\"\n pButton\n class=\"p-button-rounded p-button-text viewTableRowButton\"\n title=\"{{ 'OCX_DATA_TABLE.ACTIONS.VIEW' | translate }}\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.VIEW' | translate\"\n icon=\"pi pi-eye\"\n (click)=\"onViewRow(rowObject)\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } @if (editTableRowObserved && (!editActionVisibleField || fieldIsTruthy(rowObject, editActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-editButton\"\n *ocxIfPermission=\"editPermission\"\n [disabled]=\"!!editActionEnabledField && !fieldIsTruthy(rowObject, editActionEnabledField)\"\n pButton\n class=\"p-button-rounded p-button-text editTableRowButton\"\n title=\"{{ 'OCX_DATA_TABLE.ACTIONS.EDIT' | translate }}\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.EDIT' | translate\"\n icon=\"pi pi-pencil\"\n (click)=\"onEditRow(rowObject)\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } @if (deleteTableRowObserved && (!deleteActionVisibleField || fieldIsTruthy(rowObject,\n deleteActionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-deleteButton\"\n *ocxIfPermission=\"deletePermission\"\n [disabled]=\"!!deleteActionEnabledField && !fieldIsTruthy(rowObject, deleteActionEnabledField)\"\n pButton\n class=\"p-button-rounded p-button-text p-button-danger deleteTableRowButton\"\n title=\"{{ 'OCX_DATA_TABLE.ACTIONS.DELETE' | translate }}\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.ACTIONS.DELETE' | translate\"\n icon=\"pi pi-trash\"\n (click)=\"onDeleteRow(rowObject)\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } @for (action of inlineActions$ | async; track action) { @if ((!action.actionVisibleField ||\n fieldIsTruthy(rowObject, action.actionVisibleField))) {\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(rowObject)\"\n [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField))\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n } } @if (hasVisibleOverflowMenuItems(rowObject) | async) {\n <p-menu #menu [model]=\"(overflowMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n class=\"p-button-rounded p-button-text\"\n [icon]=\"'pi pi-ellipsis-v'\"\n (click)=\"toggleOverflowMenu($event, menu, rowObject)\"\n [attr.aria-label]=\"'OCX_DATA_TABLE.MORE_ACTIONS' | translate\"\n [title]=\"'OCX_DATA_TABLE.MORE_ACTIONS' | translate\"\n [name]=\"'data-table-overflow-action-button'\"\n ></button>\n }\n </div>\n </td>\n }\n</ng-template>\n\n<ng-template #actionColumnHeader>\n @if (anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0)\n {\n <th\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-header-left' : 'action-column-header-right'\"\n >\n {{ 'OCX_DATA_TABLE.ACTIONS_COLUMN_NAME' | translate }}\n </th>\n }\n</ng-template>\n\n@if ((displayedPageSize$ | async); as displayedPageSize) { @if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n<p-table\n [value]=\"(displayedRows$ | async) ?? []\"\n responsiveLayout=\"scroll\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"this.pageSizes ?? []\"\n id=\"dataTable_{{name}}\"\n (selectionChange)=\"onSelectionChange($event)\"\n dataKey=\"id\"\n [rowTrackBy]=\"rowTrackByFunction\"\n [selection]=\"(selectedRows$ | async) ?? []\"\n [scrollable]=\"true\"\n scrollHeight=\"flex\"\n [style]=\"tableStyle\"\n paginatorDropdownAppendTo=\"body\"\n [rowSelectable]=\"rowSelectable\"\n tableStyleClass=\"h-full\"\n>\n <ng-template #header>\n <tr style=\"vertical-align: top\">\n @if (selectionChangedObserved) {\n <th style=\"width: 4rem\" scope=\"col\">\n @if (allowSelectAll) {\n <p-tableHeaderCheckbox\n pTooltip=\"{{'OCX_DATA_TABLE.SELECT_ALL_TOOLTIP' | translate}}\"\n ariaLabel=\"{{'OCX_DATA_TABLE.SELECT_ALL_ARIA_LABEL' | translate}}\"\n ></p-tableHeaderCheckbox>\n }\n </th>\n } @if (actionColumnPosition === 'left';) {\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n } @for (column of columns; track column) { @if (column.sortable || column.filterable) {\n <th scope=\"col\">\n <div\n class=\"table-header-wrapper flex flex-column justify-content-between align-items-start\"\n style=\"height: 100%\"\n >\n <span class=\"flex\" id=\"{{column.id}}-header-name\">{{ column.nameKey | translate }}</span>\n <span class=\"flex icon-button-header-wrapper\">\n @if (column.sortable) {\n <button\n class=\"pi sortButton pl-0\"\n [class.pi-sort-alt]=\"(column?.id === sortColumn && sortDirection === 'NONE') || column?.id !== sortColumn\"\n [class.pi-sort-amount-up]=\"column?.id === sortColumn && sortDirection === 'ASCENDING'\"\n [class.pi-sort-amount-down]=\"column?.id === sortColumn && sortDirection === 'DESCENDING'\"\n (click)=\"onSortColumnClick(column.id)\"\n [pTooltip]=\"sortIconTitle(column.id) | translate \"\n tooltipPosition=\"bottom\" \n [attr.aria-label]=\"('OCX_DATA_TABLE.TOGGLE_BUTTON.ARIA_LABEL' | translate: { column: (column.nameKey | translate), direction: (sortDirectionToTitle(columnNextSortDirection(column.id)) | translate)})\"\n ></button>\n } @if (currentEqualFilterOptions$ | async; as equalFilterOptions) { @if (columnFilterTemplates$ | async; as\n columnFilterTemplates) { @if (column.filterable && (!column.filterType || column.filterType ===\n FilterType.EQUALS)) {\n <p-multiselect\n class=\"filterMultiSelect\"\n [options]=\"equalFilterOptions.column?.id === column.id ? equalFilterOptions.options : []\"\n [ngModel]=\"(currentEqualSelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\" \"\n appendTo=\"body\"\n filterBy=\"toFilterBy\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template #item let-value>\n @if (columnFilterTemplates[column.id]; as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromMultiselectItem(value, column),\n column: column\n }\"\n >\n </ng-container>\n }\n </ng-template>\n </p-multiselect>\n } } } @if (column.filterable && column.filterType === FilterType.IS_NOT_EMPTY) {\n <p-multiselect\n class=\"filterMultiSelect\"\n [options]=\"truthyFilterOptions\"\n [ngModel]=\"(currentTruthySelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\" \"\n appendTo=\"body\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template #item let-value> {{value.key | translate}} </ng-template>\n </p-multiselect>\n }\n </span>\n </div>\n </th>\n } @else {\n <th scope=\"col\">{{ column.nameKey | translate }}</th>\n } } @if (actionColumnPosition === 'right';) {\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n }\n </tr>\n </ng-template>\n <ng-template #body let-rowObject>\n @if (columnTemplates) {\n <tr>\n @if (selectionChangedObserved) {\n <td>\n @if (isRowSelectionDisabled(rowObject) && isSelected(rowObject)) {\n <p-checkbox\n [(ngModel)]=\"checked\"\n [binary]=\"true\"\n [disabled]=\"true\"\n [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate: { key: rowObject.id}\"\n ></p-checkbox>\n } @else {\n <p-tableCheckbox\n [value]=\"rowObject\"\n [disabled]=\"isRowSelectionDisabled(rowObject)\"\n [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate: { key: rowObject.id}\"\n ></p-tableCheckbox>\n }\n </td>\n } @if (actionColumnPosition === 'left';) {\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n } @for (column of columns; track column) {\n <td>\n @defer(on viewport){ @if (columnTemplates[column.id]) {\n <ng-container\n [ngTemplateOutlet]=\"\n _cell ? _cell: columnTemplates[column.id]\n \"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n } } @placeholder {\n <p-skeleton width=\"3rem\" />\n }\n </td>\n } @if (actionColumnPosition === 'right';) {\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n }\n </tr>\n }\n </ng-template>\n <ng-template #emptymessage>\n <tr>\n <!-- If allowSelectAll is set to true, an additional column for checkbox selection is added and\n the colSpan needs to be increased by one so that the row is rendered the whole width of the table. -->\n <td\n [colSpan]=\"columns.length + ((anyRowActionObserved || this.additionalActions.length > 0) ? 1 : 0) +\n (allowSelectAll ? 1 : 0)\"\n >\n {{ emptyResultsMessage || (\"OCX_DATA_TABLE.EMPTY_RESULT\" | translate) }}\n </td>\n </tr>\n </ng-template>\n</p-table>\n} }\n\n<ng-template pTemplate=\"defaultStringCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id)}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Timestamp } from 'rxjs'\n\nexport function orderValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n return valuesWithTimestamp.sort((a, b) => b.timestamp - a.timestamp).map((obj) => obj.value)\n}\n\nfunction mergeValues(values: any[]) {\n return values.reduce((acc, curr) => {\n return { ...acc, ...curr }\n })\n}\n\nexport function orderAndMergeValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n const sortedValues = valuesWithTimestamp.sort((a, b) => a.timestamp - b.timestamp).map((obj) => obj.value)\n return mergeValues(sortedValues)\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core'\nimport { PrimeTemplate } from 'primeng/api'\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, map, startWith, timestamp } from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n DataListGridComponent,\n DataListGridComponentState,\n ListGridData,\n} from '../data-list-grid/data-list-grid.component'\nimport { DataTableComponent, DataTableComponentState, Row, Sort } from '../data-table/data-table.component'\n\nexport type RowListGridData = ListGridData & Row\n\nexport type DataViewComponentState = DataListGridComponentState & DataTableComponentState\n\n@Component({\n standalone: false,\n selector: 'ocx-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }],\n})\nexport class DataViewComponent implements DoCheck, OnInit, AfterContentInit {\n private readonly injector = inject(Injector)\n\n _dataListGridComponent: DataListGridComponent | undefined\n @ViewChild(DataListGridComponent) set listGrid(ref: DataListGridComponent | undefined) {\n this._dataListGridComponent = ref\n this.registerEventListenerForListGrid()\n }\n get listGrid(): DataListGridComponent | undefined {\n return this._dataListGridComponent\n }\n\n _dataTableComponent: DataTableComponent | undefined\n @ViewChild(DataTableComponent) set dataTable(ref: DataTableComponent | undefined) {\n this._dataTableComponent = ref\n this.registerEventListenerForDataTable()\n }\n get dataTable(): DataTableComponent | undefined {\n return this._dataTableComponent\n }\n\n dataTableComponentState$ = new ReplaySubject<DataTableComponentState>(1)\n dataListGridComponentState$ = new ReplaySubject<DataListGridComponentState>(1)\n\n @Input() deletePermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() data: RowListGridData[] = []\n @Input() name = 'Data table'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() layout: any = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortField: any = ''\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() page = 0\n @Input() totalRecordsOnServer: number | undefined\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() selectedRows: Row[] = []\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n\n @Input() stringTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableCell') stringTableCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCellTemplate || this.stringTableCellChildTemplate\n }\n\n @Input() numberTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCellTemplate || this.numberTableCellChildTemplate\n }\n\n @Input() dateTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate || this.dateTableCellChildTemplate\n }\n\n @Input() tableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableCell') tableCellChildTemplate: TemplateRef<any> | undefined\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCellTemplate || this.tableCellChildTemplate\n }\n\n @Input() translationKeyTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableCell') translationKeyTableCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCellTemplate || this.translationKeyTableCellChildTemplate\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() relativeDateTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableCell') relativeDateTableCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCellTemplate || this.relativeDateTableCellChildTemplate\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n @Input() tableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCellTemplate || this.tableFilterCellChildTemplate\n }\n @Input() dateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCellTemplate || this.dateTableFilterCellChildTemplate\n }\n @Input() relativeDateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCellTemplate || this.relativeDateTableFilterCellChildTemplate\n }\n @Input() translationKeyTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCellChildTemplate:\n | TemplateRef<any>\n | undefined\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCellTemplate || this.translationKeyTableFilterCellChildTemplate\n }\n @Input() stringTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCellTemplate || this.stringTableFilterCellChildTemplate\n }\n @Input() numberTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCellTemplate || this.numberTableFilterCellChildTemplate\n }\n\n @Input() additionalActions: DataAction[] = []\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataViewComponentState>()\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n IsEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n templatesForChildren$: Observable<QueryList<PrimeTemplate> | undefined> = combineLatest([\n this.templates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, pt]) => {\n const ql = new QueryList<PrimeTemplate>()\n ql.reset([...(t?.toArray() ?? []), ...(pt?.toArray() ?? [])])\n return ql\n })\n )\n\n get viewItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.deleteItem.observed || this.deleteItem.observed\n }\n get selectionChangedObserved(): boolean {\n return (\n this.injector.get('InteractiveDataViewComponent', null)?.selectionChanged.observed ||\n this.selectionChanged.observed\n )\n }\n\n ngOnInit(): void {\n this.firstColumnId = this.columns[0]?.id\n\n let dataTableComponentState$: Observable<DataTableComponentState | Record<string, never>> =\n this.dataTableComponentState$\n let dataListGridComponentState$: Observable<DataListGridComponentState | Record<string, never>> =\n this.dataListGridComponentState$\n if (this.layout === 'table') {\n dataListGridComponentState$ = dataListGridComponentState$.pipe(startWith({}))\n } else {\n dataTableComponentState$ = dataTableComponentState$.pipe(startWith({}))\n }\n\n combineLatest([dataTableComponentState$.pipe(timestamp()), dataListGridComponentState$.pipe(timestamp())])\n .pipe(\n map((componentStates) => {\n return orderAndMergeValuesByTimestamp(componentStates)\n })\n )\n .subscribe((val) => {\n this.componentStateChanged.emit(val)\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringTableCell':\n this.stringTableCellChildTemplate = item.template\n break\n case 'numberTableCell':\n this.numberTableCellChildTemplate = item.template\n break\n case 'dateTableCell':\n this.dateTableCellChildTemplate = item.template\n break\n case 'tableCell':\n this.tableCellChildTemplate = item.template\n break\n case 'translationKeyTableCell':\n this.translationKeyTableCellChildTemplate = item.template\n break\n case 'gridItemSubtitleLines':\n this.gridItemSubtitleLinesChildTemplate = item.template\n break\n case 'listItemSubtitleLines':\n this.listItemSubtitleLinesChildTemplate = item.template\n break\n case 'gridItem':\n this.gridItemChildTemplate = item.template\n break\n case 'listItem':\n this.listItemChildTemplate = item.template\n break\n case 'relativeDateTableCell':\n this.relativeDateTableCellChildTemplate = item.template\n break\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n case 'tableFilterCell':\n this.tableFilterCellChildTemplate = item.template\n break\n case 'dateTableFilterCell':\n this.dateTableFilterCellChildTemplate = item.template\n break\n case 'relativeDateTableFilterCell':\n this.relativeDateTableFilterCellChildTemplate = item.template\n break\n case 'translationKeyTableFilterCell':\n this.translationKeyTableFilterCellChildTemplate = item.template\n break\n case 'stringTableFilterCell':\n this.stringTableFilterCellChildTemplate = item.template\n break\n case 'numberTableFilterCell':\n this.numberTableFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n ngDoCheck(): void {\n this.registerEventListenerForDataTable()\n this.registerEventListenerForListGrid()\n }\n\n registerEventListenerForListGrid() {\n if (this.layout !== 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataListGridComponent?.deleteItem.observed) {\n this._dataListGridComponent?.deleteItem.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataListGridComponent?.viewItem.observed) {\n this._dataListGridComponent?.viewItem.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataListGridComponent?.editItem.observed) {\n this._dataListGridComponent?.editItem.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n }\n }\n\n registerEventListenerForDataTable() {\n if (this.layout === 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataTableComponent?.deleteTableRow.observed) {\n this._dataTableComponent?.deleteTableRow.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataTableComponent?.viewTableRow.observed) {\n this._dataTableComponent?.viewTableRow.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataTableComponent?.editTableRow.observed) {\n this._dataTableComponent?.editTableRow.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n if (this.selectionChangedObserved) {\n if (!this._dataTableComponent?.selectionChanged.observed) {\n this._dataTableComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n deletingElement(event: any) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(event)\n }\n }\n\n viewingElement(event: any) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(event)\n }\n }\n editingElement(event: any) {\n if (this.IsEditItemObserved) {\n this.editItem.emit(event)\n }\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChangedObserved) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n}\n","@if (layout !== 'table') {\n<div>\n <ocx-data-list-grid\n #ocxdatalistgrid\n [name]=\"name\"\n [data]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"true\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataListGridComponentState$.next($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n @if (_listItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_listItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItemSubtitleLines let-item>\n @if (_gridItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_gridItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItem let-item>\n @if (_gridItem) {\n <ng-container [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listItem let-item>\n @if (_listItem) {\n <ng-container [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_listValue) {\n <ng-container [ngTemplateOutlet]=\"_listValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateListValue) {\n <ng-container [ngTemplateOutlet]=\"_dateListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n</div>\n} @if (layout === 'table') {\n<div>\n <ocx-data-table\n #ocxdatatable\n [rows]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortColumn]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataTableComponentState$.next($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [dateCellTemplate]=\"_dateTableCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_relativeDateTableCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_translationKeyTableCell ? translationKeyCell : undefined\"\n [filterCellTemplate]=\"_tableFilterCell ? filterCell : undefined\"\n [dateFilterCellTemplate]=\"_dateTableFilterCell ? dateFilterCell : undefined\"\n [numberFilterCellTemplate]=\"_numberTableFilterCell ? numberFilterCell : undefined\"\n [stringFilterCellTemplate]=\"_stringTableFilterCell ? stringFilterCell : undefined\"\n [relativeDateFilterCellTemplate]=\"_relativeDateTableFilterCell ? relativeDateFilterCell : undefined\"\n [translationKeyFilterCellTemplate]=\"_translationKeyTableFilterCell ? translationKeyFilterCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n [allowSelectAll]=\"tableAllowSelectAll\"\n [selectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableCell) {\n <ng-container [ngTemplateOutlet]=\"_dateTableCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_tableCell) {\n <ng-container [ngTemplateOutlet]=\"_tableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #stringFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n >\n <ng-template #filterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_tableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_tableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #dateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #numberFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #relativeDateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n <ng-template #translationKeyFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }\n </ng-template>\n</div>\n}\n","export class ColorUtils {\n public static calculatePoint(\n i: number,\n intervalSize: number,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd, useEndAsStart } = colorRangeInfo\n return useEndAsStart ? colorEnd - i * intervalSize : colorStart + i * intervalSize\n }\n\n public static interpolateColors(\n dataLength: number,\n colorScale: (arg0: any) => any,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd } = colorRangeInfo\n const colorRange = colorEnd - colorStart\n const intervalSize = colorRange / dataLength\n let i, colorPoint\n const colorArray = []\n\n for (i = 0; i < dataLength; i++) {\n colorPoint = this.calculatePoint(i, intervalSize, colorRangeInfo)\n colorArray.push(colorScale(colorPoint))\n }\n\n return colorArray\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { ChartData, ChartOptions } from 'chart.js'\nimport * as d3 from 'd3-scale-chromatic'\nimport { PrimeIcons } from 'primeng/api'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ColorUtils } from '../../utils/colorutils'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\nexport interface DiagramLayouts {\n id: string\n icon: PrimeIcon\n layout: DiagramType\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nexport interface DiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\nconst allDiagramTypes: DiagramLayouts[] = [\n {\n id: 'diagram-pie',\n icon: PrimeIcons.CHART_PIE,\n layout: DiagramType.PIE,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n },\n {\n id: 'diagram-horizontal-bar',\n icon: PrimeIcons.BARS,\n layout: DiagramType.HORIZONTAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n },\n {\n id: 'diagram-vertical-bar',\n icon: PrimeIcons.CHART_BAR,\n layout: DiagramType.VERTICAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n },\n]\n\n@Component({\n standalone: false,\n selector: 'ocx-diagram',\n templateUrl: './diagram.component.html',\n styleUrls: ['./diagram.component.scss'],\n})\nexport class DiagramComponent implements OnInit, OnChanges {\n private translateService = inject(TranslateService)\n\n @Input() data: DiagramData[] | undefined\n @Input() sumKey = 'OCX_DIAGRAM.SUM'\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n private _diagramType: DiagramType = DiagramType.PIE\n selectedDiagramType: DiagramLayouts | undefined\n public chartType: 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' = 'pie'\n @Input()\n get diagramType(): DiagramType {\n return this._diagramType\n }\n set diagramType(value: DiagramType) {\n this._diagramType = value\n this.selectedDiagramType = allDiagramTypes.find((v) => v.layout === value)\n this.chartType = this.diagramTypeToChartType(value)\n }\n private _supportedDiagramTypes: DiagramType[] = []\n @Input()\n get supportedDiagramTypes(): DiagramType[] {\n return this._supportedDiagramTypes\n }\n set supportedDiagramTypes(value: DiagramType[]) {\n this._supportedDiagramTypes = value\n this.shownDiagramTypes = allDiagramTypes.filter((vl) => this.supportedDiagramTypes.includes(vl.layout))\n }\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DiagramComponentState> = new EventEmitter()\n chartOptions: ChartOptions | undefined\n chartData: ChartData | undefined\n amountOfData: number | undefined | null\n shownDiagramTypes: DiagramLayouts[] = []\n // Changing the colorRangeInfo, will change the range of the color palette of the diagram.\n private colorRangeInfo = {\n colorStart: 0,\n colorEnd: 1,\n useEndAsStart: false,\n }\n // Changing the colorScale, will change the thematic color appearance of the diagram.\n private colorScale = d3.interpolateCool\n\n ngOnChanges(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n ngOnInit(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n\n public generateChart(colorScale: any, colorRangeInfo: any) {\n if (this.data) {\n const inputData = this.data.map((diagramData) => diagramData.value)\n\n this.amountOfData = this.data.reduce((acc, current) => acc + current.value, 0)\n const COLORS = this.generateColors(this.data, colorScale, colorRangeInfo)\n this.chartData = {\n labels: this.data.map((data) => data.label),\n datasets: [\n {\n data: inputData,\n backgroundColor: COLORS,\n },\n ],\n }\n }\n\n this.chartOptions = {\n plugins: {\n legend: {\n position: 'bottom',\n },\n },\n maintainAspectRatio: false,\n ...(this._diagramType === DiagramType.VERTICAL_BAR && {\n plugins: { legend: { display: false } },\n scales: { y: { ticks: { precision: 0 } } },\n }),\n ...(this._diagramType === DiagramType.HORIZONTAL_BAR && {\n indexAxis: 'y',\n plugins: { legend: { display: false } },\n scales: { x: { ticks: { precision: 0 } } },\n }),\n }\n }\n\n generateColors(data: DiagramData[], colorScale: any, colorRangeInfo: any) {\n const dataColors = data.map((diagramData) => diagramData.backgroundColor)\n if (dataColors.filter((v) => v !== undefined).length === data.length) {\n return dataColors\n } else if (this.fillMissingColors) {\n // it is intended to generate more colors than needed, so interval for generated colors is same as amount of items on the diagram\n const interpolatedColors = interpolateColors(dataColors.length, colorScale, colorRangeInfo)\n let interpolatedIndex = 0\n return dataColors.map((color) => (color === undefined ? interpolatedColors[interpolatedIndex++] : color))\n } else {\n return interpolateColors(data.length, colorScale, colorRangeInfo)\n }\n }\n\n generateTotal(data: DiagramData[]): number {\n return data.reduce((acc, current) => acc + current.value, 0)\n }\n\n generateDiagramValueString(data: DiagramData[]): string {\n return data.map((item) => `${item.label}:${item.value}`).join(', ')\n }\n\n private diagramTypeToChartType(\n value: DiagramType\n ): 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' {\n if (value === DiagramType.PIE) return 'pie'\n else if (value === DiagramType.HORIZONTAL_BAR || value === DiagramType.VERTICAL_BAR) return 'bar'\n return 'pie'\n }\n\n dataClicked(event: []) {\n this.dataSelected.emit(event.length)\n }\n\n onDiagramTypeChanged(event: any) {\n this.diagramType = event.value.layout\n this.generateChart(this.colorScale, this.colorRangeInfo)\n this.diagramTypeChanged.emit(event.value.layout)\n this.componentStateChanged.emit({\n activeDiagramType: event.value.layout,\n })\n }\n}\nfunction interpolateColors(amountOfData: number, colorScale: any, colorRangeInfo: any) {\n return ColorUtils.interpolateColors(amountOfData, colorScale, colorRangeInfo)\n}\n","@if (this.data) {\n @if (shownDiagramTypes.length > 1) {\n <div class=\"flex justify-content-center pb-2\">\n <p-selectbutton\n [options]=\"shownDiagramTypes\"\n [(ngModel)]=\"selectedDiagramType\"\n optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\"\n name=\"diagram-type-select-button\"\n [allowEmpty]=\"false\"\n >\n <ng-template #item let-item>\n <i\n [class]=\"item.icon\"\n [pTooltip]=\"item.tooltipKey | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></i>\n <label style=\"display: none\" id=\"{{item.id}}\"> {{item.label ? item.label : item.labelKey | translate}} </label>\n </ng-template>\n </p-selectbutton>\n </div>\n }\n <div class=\"w-full flex justify-content-center\">\n <p-chart\n id=\"diagram\"\n [type]=\"chartType\"\n [data]=\"chartData\"\n [responsive]=\"false\"\n [options]=\"chartOptions\"\n (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data), valueString: generateDiagramValueString(data)}\"\n ></p-chart>\n </div>\n <div class=\"w-full flex justify-content-center mt-2 sumKey\">\n <p class=\"text-md font-medium text-700\">\n <span name=\"sumLabel\"> {{ sumKey | translate }}</span> : <span name=\"amountOfData\">{{ amountOfData}}</span>\n </p>\n </div>\n}\n\n@if (!this.data) {\n <div class=\"w-full flex justify-content-center\">\n <p-message severity=\"info\" text=\"{{ 'OCX_DIAGRAM.NO_DATA' | translate }}\"></p-message>\n </div>\n}\n","import { ColumnFilterDataSelectOptions, Filter } from '../model/filter.model'\n\nexport function limit(columnFilterData: Filter[], amount: number, options: ColumnFilterDataSelectOptions): Filter[] {\n return options.reverse\n ? columnFilterData.slice(-amount, columnFilterData.length).reverse()\n : columnFilterData.slice(0, amount)\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { BehaviorSubject, Observable, combineLatest, debounceTime, map } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { PrimeTemplate } from 'primeng/api'\nimport { findTemplate } from '../../utils/template.utils'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { limit } from '../../utils/filter.utils'\nimport { Popover } from 'primeng/popover'\nimport { Row } from '../data-table/data-table.component'\nimport { Button } from 'primeng/button'\n\nexport type FilterViewDisplayMode = 'chips' | 'button'\nexport type FilterViewRowDisplayData = {\n id: string\n column: string\n value: unknown\n}\nexport type FilterViewRowDetailData = FilterViewRowDisplayData & {\n valueColumnId: string\n}\n\nexport interface FilterViewComponentState {\n filters?: Filter[]\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-filter-view',\n templateUrl: './filter-view.component.html',\n styleUrls: ['./filter-view.component.scss'],\n})\nexport class FilterViewComponent implements OnInit {\n ColumnType = ColumnType\n FilterType = FilterType\n filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this.filters$.getValue()\n }\n set filters(value: Filter[]) {\n this.filters$.next(value)\n }\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n const chipObs = value.map((c) => this.getTemplate(c, this.chipTemplateNames, this.chipTemplates, this.chipIdSuffix))\n this.chipTemplates$ = combineLatest(chipObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n\n const tableTemplateColumns = value.concat(this.columnFilterTableColumns)\n this.tableTemplates$ = combineLatest(\n tableTemplateColumns.map((c) =>\n this.getTemplate(c, this.tableTemplateNames, this.tableTemplates, this.tableIdSuffix)\n )\n ).pipe(map((values) => Object.fromEntries(tableTemplateColumns.map((c, i) => [c.id, values[i]]))))\n }\n\n columnFilterDataRows$: Observable<FilterViewRowDisplayData[]> | undefined\n\n @Input() displayMode: FilterViewDisplayMode = 'button'\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() chipStyleClass = ''\n @Input() tableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() panelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n\n @Output() filtered: EventEmitter<Filter[]> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<FilterViewComponentState> = new EventEmitter()\n\n columnFilterTableColumns: DataTableColumn[] = [\n {\n id: 'column',\n columnType: ColumnType.TRANSLATION_KEY,\n nameKey: 'OCX_FILTER_VIEW.TABLE.COLUMN_NAME',\n },\n { id: 'value', columnType: ColumnType.STRING, nameKey: 'OCX_FILTER_VIEW.TABLE.VALUE' },\n {\n id: 'actions',\n columnType: ColumnType.STRING,\n nameKey: 'OCX_FILTER_VIEW.TABLE.ACTIONS',\n },\n ]\n\n ngOnInit(): void {\n this.columnFilterDataRows$ = combineLatest([this.filters$, this.columns$]).pipe(\n map(([filters, columns]) => {\n const columnIds = columns.map((c) => c.id)\n return filters\n .map((f) => {\n const filterColumn = this.getColumnForFilter(f, columns)\n if (!filterColumn) return undefined\n return {\n id: `${f.columnId}-${f.value}`,\n column: filterColumn.nameKey,\n value: f.value,\n valueColumnId: filterColumn.id,\n } satisfies FilterViewRowDetailData\n })\n .filter((v): v is FilterViewRowDetailData => v !== undefined)\n .slice()\n .sort((a, b) => columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId))\n })\n )\n this.componentStateChanged.emit({\n filters: this.filters,\n })\n }\n\n @ViewChild(Popover) panel!: Popover\n @ViewChild('manageButton') manageButton!: Button\n trigger: HTMLElement | undefined\n\n fitlerViewNoSelection: TemplateRef<any> | undefined\n get _fitlerViewNoSelection(): TemplateRef<any> | undefined {\n return this.fitlerViewNoSelection\n }\n\n filterViewChipContent: TemplateRef<any> | undefined\n get _filterViewChipContent(): TemplateRef<any> | undefined {\n return this.filterViewChipContent\n }\n\n filterViewShowMoreChip: TemplateRef<any> | undefined\n get _filterViewShowMoreChip(): TemplateRef<any> | undefined {\n return this.filterViewShowMoreChip\n }\n\n defaultTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set defaultTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.defaultTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set templates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n value?.forEach((item) => {\n switch (item.getType()) {\n case 'fitlerViewNoSelection':\n this.fitlerViewNoSelection = item.template\n break\n case 'filterViewChipContent':\n this.filterViewChipContent = item.template\n break\n case 'filterViewShowMoreChip':\n this.filterViewShowMoreChip = item.template\n break\n }\n })\n }\n\n chipTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n tableTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n\n chipIdSuffix: Array<string> = ['IdFilterChip', 'IdTableFilterCell', 'IdTableCell']\n chipTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterChipValue', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterChipValue', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterChipValue',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterChipValue',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.STRING]: ['stringFilterChipValue', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n chipTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n tableIdSuffix: Array<string> = ['IdFilterViewCell', 'IdTableFilterCell', 'IdTableCell']\n tableTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterViewCell', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterViewCell', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterViewCell',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKey',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.STRING]: ['stringFilterViewCell', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n tableTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n getTemplate(\n column: DataTableColumn,\n templateNames: Record<ColumnType, Array<string>>,\n templates: Record<string, Observable<TemplateRef<any> | null>>,\n idSuffix: Array<string>\n ): Observable<TemplateRef<any> | null> {\n if (!templates[column.id]) {\n templates[column.id] = combineLatest([this.defaultTemplates$, this.parentTemplates$]).pipe(\n map(([dt, t]) => {\n const templates = [...(dt ?? []), ...(t ?? [])]\n const columnTemplate = findTemplate(\n templates,\n idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return findTemplate(templates, templateNames[column.columnType])?.template ?? null\n }),\n debounceTime(50)\n )\n }\n return templates[column.id]\n }\n\n onResetFilersClick() {\n this.filters = []\n this.filtered.emit([])\n this.componentStateChanged.emit({\n filters: [],\n })\n }\n\n onChipRemove(filter: Filter) {\n const filters = this.filters.filter((f) => f.value !== filter.value)\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n onFilterDelete(row: Row) {\n const filters = this.filters.filter((f) => !(f.columnId === row['valueColumnId'] && f.value === row['value']))\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n focusTrigger() {\n if (this.trigger?.id === 'ocxFilterViewShowMore') {\n this.trigger?.focus()\n } else {\n this.manageButton.el.nativeElement.firstChild.focus()\n }\n }\n\n showPanel(event: any) {\n this.trigger = event.srcElement\n this.panel.toggle(event)\n }\n\n getColumnForFilter(filter: Filter, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === filter.columnId)\n }\n\n getColumn(colId: string, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === colId)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n getRowObjectFromFiterData(filter: Filter): Record<string, unknown> {\n return {\n [filter.columnId]: filter.value,\n }\n }\n\n getRowForValueColumn(row: Row): Row {\n return {\n id: row.id,\n [row['valueColumnId'] as string]: row['value'],\n }\n }\n}\n","@if (columns$ | async; as columns) { @if (filters$ | async; as filters) {\n<div class=\"flex flex-wrap align-items-center gap-2\">\n @if (displayMode === 'chips') {\n <ng-container *ocxIfBreakpoint=\"'desktop'; elseTemplate: noChipsContent\">\n @if (selectDisplayedChips(filters, columns); as selectedFilters) {\n <p-button\n #chipFilterResetButton\n id=\"ocxFilterViewReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n @if (filters.length <= 0) { @if (_fitlerViewNoSelection) {\n <ng-container [ngTemplateOutlet]=\"_fitlerViewNoSelection\"> </ng-container>\n } @else {\n <span id=\"ocxFilterViewNoFilters\">{{ 'OCX_FILTER_VIEW.NO_FILTERS' | translate }}</span>\n } } @if ((chipTemplates$ | async) ?? {}; as templates) { @for (filter of selectedFilters; track filter) { @if\n (getColumnForFilter(filter, columns); as column) {\n <p-chip [removable]=\"true\" (onRemove)=\"onChipRemove(filter)\" [styleClass]=\"chipStyleClass\">\n @if (_filterViewChipContent) {\n <ng-container\n [ngTemplateOutlet]=\"_filterViewChipContent\"\n [ngTemplateOutletContext]=\"{\n filter: filter,\n column: column,\n filterValueTemplates: templates,\n truthyTemplate: truthyTemplate,\n filterValueTemplate: chipTemplate\n }\"\n >\n </ng-container>\n } @else { @if (columns$ | async; as columns) {\n <span style=\"white-space: nowrap\" class=\"p-chip-text flex flex-nowrap\"\n >{{column?.nameKey ?? '' | translate }}:@if (filter.filterType === FilterType.EQUALS || !filter.filterType) {\n <ng-container\n [ngTemplateOutlet]=\"chipTemplate\"\n [ngTemplateOutletContext]=\"{\n templates: templates,\n filter: filter,\n column: column\n }\"\n ></ng-container>\n } @if (filter.filterType === FilterType.IS_NOT_EMPTY) {\n <ng-container\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: filter.value\n }\"\n ></ng-container>\n }\n </span>\n } }\n </p-chip>\n } } @if (selectedFilters.length < filters.length) {\n <p-chip\n #showMoreChip\n id=\"ocxFilterViewShowMore\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"showPanel($event)\"\n class=\"cursor-pointer filter-view-focusable\"\n (keydown.enter)=\"showPanel($event)\"\n (keydown.space)=\"showPanel($event)\"\n >\n @if (_filterViewShowMoreChip) {\n <ng-container\n [ngTemplateOutlet]=\"_filterViewShowMoreChip\"\n [ngTemplateOutletContext]=\"{\n $implicit: filters.length - selectedFilters.length\n }\"\n >\n </ng-container>\n } @else {\n <span class=\"p-chip-text flex flex-nowrap\"> +{{filters.length - selectedFilters.length}} </span>\n }\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </p-chip>\n } } }\n </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"noChipsContent\"></ng-container>\n }\n <ng-template #noChipsContent>\n <p-button\n #manageButton\n id=\"ocxFilterViewManage\"\n (onClick)=\"showPanel($event)\"\n icon=\"pi pi-sliders-h\"\n label=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.LABEL' | translate }}\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [badge]=\"filters.length.toString()\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </ng-template>\n <ng-template #filterTablePanel>\n @if (tableTemplates$ | async; as templates) {\n <p-popover #op [style]=\"panelStyle\" (onHide)=\"focusTrigger()\">\n <ng-template pTemplate=\"content\">\n <div pFocusTrap>\n <div class=\"flex justify-content-between align-items-center mb-2\">\n <span class=\"text-2xl font-medium\">{{'OCX_FILTER_VIEW.PANEL_TITLE' | translate}}</span>\n <div>\n <p-button\n pAutoFocus\n [autofocus]=\"true\"\n id=\"ocxFilterViewOverlayReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n </div>\n </div>\n <ocx-data-table\n id=\"ocxFilterViewDataTable\"\n [rows]=\"(columnFilterDataRows$ | async) ?? []\"\n [columns]=\"columnFilterTableColumns\"\n [emptyResultsMessage]=\"'OCX_FILTER_VIEW.NO_FILTERS' | translate\"\n [paginator]=\"false\"\n [tableStyle]=\"tableStyle\"\n >\n <ng-template pTemplate=\"columnIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n [ngTemplateOutlet]=\"templates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n </ng-template>\n <ng-template pTemplate=\"valueIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n @if (getColumn(rowObject['valueColumnId'], columns); as valueColumn) { @if (!valueColumn.filterType ||\n valueColumn.filterType === FilterType.EQUALS) {\n <ng-container\n [ngTemplateOutlet]=\"templates[valueColumn.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowForValueColumn(rowObject),\n column: valueColumn\n }\"\n >\n </ng-container>\n } @if (valueColumn.filterType === FilterType.IS_NOT_EMPTY) {\n <ng-container\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: resolveFieldData(rowObject, column.id)\n }\"\n >\n </ng-container>\n } }\n </ng-template>\n <ng-template pTemplate=\"actionsIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <div>\n <button\n pButton\n class=\"p-button-rounded p-button-danger p-button-text\"\n title=\"{{ 'OCX_FILTER_VIEW.TABLE.REMOVE_FILTER_TITLE' | translate }}\"\n [attr.aria-label]=\"'OCX_FILTER_VIEW.TABLE.REMOVE_FILTER_ARIA_LABEL' | translate\"\n icon=\"pi pi-trash\"\n (click)=\"onFilterDelete(rowObject)\"\n ></button>\n </div>\n </ng-template>\n </ocx-data-table>\n </div>\n </ng-template>\n </p-popover>\n }\n </ng-template>\n</div>\n} }\n\n<ng-template #chipTemplate let-templates=\"templates\" let-filter=\"filter\" let-column=\"column\">\n @if (templates[column.id]; as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromFiterData(filter),\n column: column\n }\"\n >\n </ng-container>\n }\n</ng-template>\n\n<ng-template #truthyTemplate let-value=\"value\">\n @if (value) { {{'OCX_FILTER_VIEW.FILTER_YES' | translate}} } @if (!value) { {{'OCX_FILTER_VIEW.FILTER_NO' |\n translate}} }\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id)}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultCustomValue\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }}</ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { BehaviorSubject, Observable, combineLatest, map, mergeMap, of } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DiagramColumn } from '../../model/diagram-column'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ObjectUtils } from '../../utils/objectutils'\n\nexport interface GroupByCountDiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-group-by-count-diagram',\n templateUrl: './group-by-count-diagram.component.html',\n})\nexport class GroupByCountDiagramComponent implements OnInit {\n private translateService = inject(TranslateService)\n\n @Input() sumKey = 'SEARCH.SUMMARY_TITLE'\n @Input() diagramType = DiagramType.PIE\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n @Input() supportedDiagramTypes: DiagramType[] = []\n private _data$ = new BehaviorSubject<unknown[]>([])\n @Input()\n get data(): unknown[] {\n return this._data$.getValue()\n }\n set data(value: unknown[]) {\n this._data$.next(value)\n }\n diagramData$: Observable<DiagramData[]> | undefined\n\n private _columnType$ = new BehaviorSubject<ColumnType>(ColumnType.STRING)\n @Input()\n get columnType(): ColumnType {\n return this._columnType$.getValue()\n }\n set columnType(value: ColumnType) {\n this._columnType$.next(value)\n }\n\n private _columnField$ = new BehaviorSubject<string>('')\n @Input()\n get columnField(): string {\n return this._columnField$.getValue()\n }\n set columnField(value: string) {\n this._columnField$.next(value)\n }\n\n @Input()\n get column(): DiagramColumn {\n return { columnType: this.columnType, id: this.columnField }\n }\n set column(value: DiagramColumn) {\n this.columnType = value.columnType\n this.columnField = value.id\n }\n\n private _colors$ = new BehaviorSubject<Record<string, string>>({})\n @Input()\n get colors(): Record<string, string> {\n return this._colors$.getValue()\n }\n set colors(value: Record<string, string>) {\n this._colors$.next(value)\n }\n\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<GroupByCountDiagramComponentState> = new EventEmitter()\n\n ngOnInit(): void {\n this.diagramData$ = combineLatest([this._data$, this._columnField$, this._columnType$, this._colors$]).pipe(\n mergeMap(([data, columnField, columnType, colors]) => {\n const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField))\n const occurrences = columnData.reduce((acc, current) => {\n return acc.some((e: { label: any }) => e.label === current)\n ? (acc.find((e: { label: any }) => e.label === current).value++, acc)\n : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }]\n }, [])\n if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {\n return this.translateService.get(occurrences.map((o: { label: any }) => o.label)).pipe(\n map((translations: { [x: string]: any }) =>\n occurrences.map((o: { label: string; value: any; backgroundColor: string | undefined }) => ({\n label: translations[o.label],\n value: o.value,\n backgroundColor: o.backgroundColor,\n }))\n )\n )\n } else {\n return of(occurrences)\n }\n })\n )\n }\n\n dataClicked(event: any) {\n this.dataSelected.emit(event)\n }\n\n onDiagramTypeChanged(newDiagramType: DiagramType) {\n this.diagramType = newDiagramType\n this.diagramTypeChanged.emit(newDiagramType)\n this.componentStateChanged.emit({\n activeDiagramType: newDiagramType,\n })\n }\n}\n","<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [fillMissingColors]=\"fillMissingColors\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core'\nimport { SlotService } from '@onecx/angular-remote-components'\nimport { PrimeTemplate } from 'primeng/api'\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n combineLatest,\n distinctUntilChanged,\n map,\n startWith,\n timestamp,\n withLatestFrom,\n} from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter } from '../../model/filter.model'\nimport { limit } from '../../utils/filter.utils'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n ColumnGroupSelectionComponentState,\n GroupSelectionChangedEvent,\n} from '../column-group-selection/column-group-selection.component'\nimport {\n ActionColumnChangedEvent,\n ColumnSelectionChangedEvent,\n CustomGroupColumnSelectorComponentState,\n} from '../custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponentState } from '../data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponentState } from '../data-list-grid-sorting/data-list-grid-sorting.component'\nimport { Row, Sort } from '../data-table/data-table.component'\nimport { DataViewComponent, DataViewComponentState, RowListGridData } from '../data-view/data-view.component'\nimport { FilterViewComponentState, FilterViewDisplayMode } from '../filter-view/filter-view.component'\n\nexport type InteractiveDataViewComponentState = ColumnGroupSelectionComponentState &\n CustomGroupColumnSelectorComponentState &\n DataLayoutSelectionComponentState &\n DataListGridSortingComponentState &\n DataViewComponentState &\n FilterViewComponentState\n\nexport interface ColumnGroupData {\n activeColumns: DataTableColumn[]\n groupKey: string\n}\n@Component({\n standalone: false,\n selector: 'ocx-interactive-data-view',\n templateUrl: './interactive-data-view.component.html',\n styleUrls: ['./interactive-data-view.component.css'],\n providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }],\n})\nexport class InteractiveDataViewComponent implements OnInit, AfterContentInit {\n private readonly slotService = inject(SlotService)\n\n _dataViewComponent: DataViewComponent | undefined\n @ViewChild(DataViewComponent) set dataView(ref: DataViewComponent | undefined) {\n this._dataViewComponent = ref\n this.registerEventListenerForDataView()\n }\n get dataView(): DataViewComponent | undefined {\n return this._dataViewComponent\n }\n\n columnGroupSelectionComponentState$ = new ReplaySubject<ColumnGroupSelectionComponentState>(1)\n customGroupColumnSelectorComponentState$ = new ReplaySubject<CustomGroupColumnSelectorComponentState>(1)\n dataLayoutComponentState$ = new ReplaySubject<DataLayoutSelectionComponentState>(1)\n dataListGridSortingComponentState$ = new ReplaySubject<DataListGridSortingComponentState>(1)\n dataViewComponentState$ = new ReplaySubject<DataViewComponentState>(1)\n filterViewComponentState$ = new ReplaySubject<FilterViewComponentState>(1)\n\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() name = 'Data'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() supportedViewLayouts: ('grid' | 'list' | 'table')[] = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() sortField: any = ''\n @Input() sortStates: DataSortDirection[] = [\n DataSortDirection.ASCENDING,\n DataSortDirection.DESCENDING,\n DataSortDirection.NONE,\n ]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n @Input() totalRecordsOnServer: number | undefined\n @Input() layout: 'grid' | 'list' | 'table' = 'table'\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = 'OCX_INTERACTIVE_DATA_VIEW.CUSTOM_GROUP'\n @Input() groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() additionalActions: DataAction[] = []\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() disableFilterView = true\n @Input() filterViewDisplayMode: FilterViewDisplayMode = 'button'\n @Input() filterViewChipStyleClass = ''\n @Input() filterViewTableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() filterViewPanelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() page = 0\n @Input() selectedRows: Row[] = []\n displayedColumnKeys$ = new BehaviorSubject<string[]>([])\n displayedColumns$: Observable<DataTableColumn[]> | undefined\n @Input()\n get displayedColumnKeys(): string[] {\n return this.displayedColumnKeys$.getValue()\n }\n set displayedColumnKeys(value: string[]) {\n this.displayedColumnKeys$.next(value)\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n @Input() headerStyleClass: string | undefined\n @Input() contentStyleClass: string | undefined\n @ContentChild('tableCell') tableCell: TemplateRef<any> | undefined\n primeNgTableCell: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCell: TemplateRef<any> | undefined\n primeNgDateTableCell: TemplateRef<any> | undefined\n\n @ContentChild('relativeDateTableCell') relativeDateTableCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableCell: TemplateRef<any> | undefined\n\n @ContentChild('translationKeyTableCell') translationKeyTableCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableCell: TemplateRef<any> | undefined\n\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLines: TemplateRef<any> | undefined\n primeNgGridItemSubtitleLines: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLines: TemplateRef<any> | undefined\n primeNgListItemSubtitleLines: TemplateRef<any> | undefined\n // TODO: Implement same fix for other templates and child components\n @ContentChild('stringTableCell') stringTableCell: TemplateRef<any> | undefined\n primeNgStringTableCell: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCell: TemplateRef<any> | undefined\n primeNgNumberTableCell: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItem: TemplateRef<any> | undefined\n primeNgGridItem: TemplateRef<any> | undefined\n @ContentChild('listItem') listItem: TemplateRef<any> | undefined\n primeNgListItem: TemplateRef<any> | undefined\n @ContentChild('topCenter') topCenter: TemplateRef<any> | undefined\n primeNgTopCenter: TemplateRef<any> | undefined\n @ContentChild('listValue') listValue: TemplateRef<any> | undefined\n primeNgListValue: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValue: TemplateRef<any> | undefined\n primeNgTranslationKeyListValue: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValue: TemplateRef<any> | undefined\n primeNgNumberListValue: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValue: TemplateRef<any> | undefined\n primeNgRelativeDateListValue: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValue: TemplateRef<any> | undefined\n primeNgStringListValue: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValue: TemplateRef<any> | undefined\n primeNgDateListValue: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCell: TemplateRef<any> | undefined\n primeNgTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('dateTableFilterCell') dateTableFilterCell: TemplateRef<any> | undefined\n primeNgDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCell: TemplateRef<any> | undefined\n primeNgStringTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCell: TemplateRef<any> | undefined\n primeNgNumberTableFilterCell: TemplateRef<any> | undefined\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() dataViewLayoutChange = new EventEmitter<'grid' | 'list' | 'table'>()\n @Output() displayedColumnKeysChange = new EventEmitter<string[]>()\n @Output() selectionChanged: EventEmitter<Row[]> = new EventEmitter()\n\n @Output() pageChanged: EventEmitter<number> = new EventEmitter()\n @Output() pageSizeChanged = new EventEmitter<number>()\n\n @Output() componentStateChanged = new EventEmitter<InteractiveDataViewComponentState>()\n\n selectedGroupKey$ = new BehaviorSubject<string | undefined>('')\n get selectedGroupKey(): string | undefined {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string | undefined) {\n this.selectedGroupKey$.next(value)\n }\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n isEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLines\n }\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLines\n }\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCell\n }\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCell\n }\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCell\n }\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCell\n }\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCell\n }\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCell\n }\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItem\n }\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItem\n }\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValue\n }\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValue\n }\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValue\n }\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValue\n }\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValue\n }\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValue\n }\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCell\n }\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCell\n }\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCell\n }\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCell\n }\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCell\n }\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCell\n }\n\n _data: RowListGridData[] = []\n @Input()\n get data(): RowListGridData[] {\n return this._data\n }\n set data(value: RowListGridData[]) {\n this._data = value\n }\n\n columnGroupSlotName = 'onecx-column-group-selection'\n isColumnGroupSelectionComponentDefined$: Observable<boolean>\n groupSelectionChangedSlotEmitter = new EventEmitter<ColumnGroupData | undefined>()\n\n constructor() {\n this.isColumnGroupSelectionComponentDefined$ = this.slotService\n .isSomeComponentDefinedForSlot(this.columnGroupSlotName)\n .pipe(startWith(true))\n\n this.groupSelectionChangedSlotEmitter.subscribe((event: ColumnGroupData | undefined) => {\n event ??= {\n activeColumns: this.getDisplayedColumns(),\n groupKey: this.selectedGroupKey ?? this.defaultGroupKey,\n }\n this.displayedColumnKeys$.next(event.activeColumns.map((col) => col.id))\n this.selectedGroupKey$.next(event.groupKey)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n this.columnGroupSelectionComponentState$.next({\n activeColumnGroupKey: event.groupKey,\n displayedColumns: event.activeColumns,\n })\n })\n\n this.dataViewLayoutChange\n .pipe(withLatestFrom(this.isColumnGroupSelectionComponentDefined$))\n .subscribe(([_, columnGroupComponentDefined]) => {\n if (columnGroupComponentDefined) {\n if (\n !(\n this.columns.find((c) => c.nameKey === this.selectedGroupKey) ||\n this.selectedGroupKey === this.customGroupKey\n )\n ) {\n this.selectedGroupKey$.next(undefined)\n }\n }\n })\n }\n\n ngOnInit(): void {\n this.selectedGroupKey = this.defaultGroupKey\n if (this.defaultGroupKey && this.defaultGroupKey !== this.customGroupKey) {\n this.displayedColumnKeys = this.columns\n .filter((column) => column.predefinedGroupKeys?.includes(this.defaultGroupKey))\n .map((column) => column.id)\n }\n this.displayedColumns$ = this.displayedColumnKeys$.pipe(\n distinctUntilChanged((prev, curr) => prev.length === curr.length && prev.every((v, i) => curr[i] === v)),\n map(\n (columnKeys) =>\n (columnKeys.map((key) => this.columns.find((col) => col.id === key)).filter((d) => d) as DataTableColumn[]) ??\n []\n )\n )\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n if (!this.groupSelectionNoGroupSelectedKey) {\n this.groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n }\n this.firstColumnId = this.columns[0]?.id\n\n let dataListGridSortingComponentState$: Observable<DataListGridSortingComponentState | Record<string, never>> =\n this.dataListGridSortingComponentState$\n let columnGroupSelectionComponentState$: Observable<ColumnGroupSelectionComponentState | Record<string, never>> =\n this.columnGroupSelectionComponentState$\n let customGroupColumnSelectorComponentState$: Observable<\n CustomGroupColumnSelectorComponentState | Record<string, never>\n > = this.customGroupColumnSelectorComponentState$\n\n if (this.layout === 'table') {\n dataListGridSortingComponentState$ = dataListGridSortingComponentState$.pipe(startWith({}))\n } else {\n columnGroupSelectionComponentState$ = columnGroupSelectionComponentState$.pipe(\n startWith({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: this.getDisplayedColumns(),\n })\n )\n customGroupColumnSelectorComponentState$ = customGroupColumnSelectorComponentState$.pipe(\n startWith({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this.getDisplayedColumns(),\n activeColumnGroupKey: this.selectedGroupKey,\n })\n )\n }\n\n let filterViewComponentState$: Observable<FilterViewComponentState | Record<string, never>> =\n this.filterViewComponentState$\n if (this.disableFilterView) {\n filterViewComponentState$ = filterViewComponentState$.pipe(\n startWith({\n filters: this.filters,\n })\n )\n }\n\n combineLatest([\n columnGroupSelectionComponentState$.pipe(timestamp()),\n customGroupColumnSelectorComponentState$.pipe(timestamp()),\n this.dataLayoutComponentState$.pipe(timestamp()),\n dataListGridSortingComponentState$.pipe(timestamp()),\n this.dataViewComponentState$.pipe(timestamp()),\n filterViewComponentState$.pipe(timestamp()),\n ])\n .pipe(\n map((componentStates) => {\n return orderAndMergeValuesByTimestamp(componentStates)\n })\n )\n .subscribe((val) => {\n this.componentStateChanged.emit(val)\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'tableCell':\n this.primeNgTableCell = item.template\n break\n case 'dateTableCell':\n this.primeNgDateTableCell = item.template\n break\n case 'relativeDateTableCell':\n this.primeNgRelativeDateTableCell = item.template\n break\n case 'translationKeyTableCell':\n this.primeNgTranslationKeyTableCell = item.template\n break\n case 'gridItemSubtitleLines':\n this.primeNgGridItemSubtitleLines = item.template\n break\n case 'listItemSubtitleLines':\n this.primeNgListItemSubtitleLines = item.template\n break\n case 'stringTableCell':\n this.primeNgStringTableCell = item.template\n break\n case 'numberTableCell':\n this.primeNgNumberTableCell = item.template\n break\n case 'gridItem':\n this.primeNgGridItem = item.template\n break\n case 'listItem':\n this.primeNgListItem = item.template\n break\n case 'topCenter':\n this.primeNgTopCenter = item.template\n break\n case 'listValue':\n this.primeNgListValue = item.template\n break\n case 'translationKeyListValue':\n this.primeNgTranslationKeyListValue = item.template\n break\n case 'numberListValue':\n this.primeNgNumberListValue = item.template\n break\n case 'relativeDateListValue':\n this.primeNgRelativeDateListValue = item.template\n break\n case 'stringListValue':\n this.primeNgStringListValue = item.template\n break\n case 'dateListValue':\n this.primeNgDateListValue = item.template\n break\n case 'tableFilterCell':\n this.primeNgTableFilterCell = item.template\n break\n case 'dateTableFilterCell':\n this.primeNgDateTableFilterCell = item.template\n break\n case 'relativeDateTableFilterCell':\n this.primeNgRelativeDateTableFilterCell = item.template\n break\n case 'translationKeyTableFilterCell':\n this.primeNgTranslationKeyTableFilterCell = item.template\n break\n case 'stringTableFilterCell':\n this.primeNgStringTableFilterCell = item.template\n break\n case 'numberTableFilterCell':\n this.primeNgNumberTableFilterCell = item.template\n break\n }\n })\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n onDeleteElement(element: RowListGridData) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(element)\n }\n }\n\n onViewElement(element: RowListGridData) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(element)\n }\n }\n\n onEditElement(element: RowListGridData) {\n if (this.isEditItemObserved) {\n this.editItem.emit(element)\n }\n }\n\n onDataViewLayoutChange(layout: 'grid' | 'list' | 'table') {\n this.layout = layout\n this.dataViewLayoutChange.emit(layout)\n }\n\n onSortChange($event: any) {\n this.sortField = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onSortDirectionChange($event: any) {\n this.sortDirection = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onColumnGroupSelectionChange(event: GroupSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = event.groupKey\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n registerEventListenerForDataView() {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataViewComponent?.deleteItem.observed) {\n this._dataViewComponent?.deleteItem.subscribe((event) => {\n this.onDeleteElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataViewComponent?.viewItem.observed) {\n this._dataViewComponent?.viewItem.subscribe((event) => {\n this.onViewElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.isEditItemObserved = true\n if (!this._dataViewComponent?.editItem.observed) {\n this._dataViewComponent?.editItem.subscribe((event) => {\n this.onEditElement(event)\n })\n }\n }\n if (this.selectionChanged.observed) {\n if (!this._dataViewComponent?.selectionChanged.observed) {\n this._dataViewComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n\n onColumnSelectionChange(event: ColumnSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = this.customGroupKey\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n onActionColumnConfigChange(event: ActionColumnChangedEvent) {\n this.frozenActionColumn = event.frozenActionColumn\n this.actionColumnPosition = event.actionColumnPosition\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChanged.observed) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n\n getDisplayedColumns(): DataTableColumn[] {\n return (\n (this.displayedColumnKeys\n .map((key) => this.columns.find((c) => c.id === key))\n .filter((d) => d) as DataTableColumn[]) ?? []\n )\n }\n}\n","<div class=\"p-3 border-bottom-1 surface-border\" [ngClass]=\"headerStyleClass\" id=\"interactiveDataViewHeader\">\n <div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <div class=\"flex flex-wrap justify-content-start align-items-center gap-2\">\n <ocx-data-layout-selection\n [supportedViewLayouts]=\"supportedViewLayouts\"\n [layout]=\"layout\"\n (dataViewLayoutChange)=\"onDataViewLayoutChange($event)\"\n (componentStateChanged)=\"dataLayoutComponentState$.next($event)\"\n ></ocx-data-layout-selection>\n @if (!disableFilterView) {\n <ocx-filter-view\n [filters]=\"filters\"\n [columns]=\"columns\"\n [templates]=\"templates$ | async\"\n [displayMode]=\"filterViewDisplayMode\"\n [selectDisplayedChips]=\"selectDisplayedChips\"\n [chipStyleClass]=\"filterViewChipStyleClass\"\n [tableStyle]=\"filterViewTableStyle\"\n (filtered)=\"filtering($event)\"\n (componentStateChanged)=\"filterViewComponentState$.next($event)\"\n ></ocx-filter-view>\n }\n </div>\n\n @if (topCenter) {\n <div>\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n } @if (layout !== 'table') {\n <div class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n (componentStateChanged)=\"dataListGridSortingComponentState$.next($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n }\n\n <div\n [ngStyle]=\"layout !== 'table' ? {\n 'position': 'absolute'\n } : {}\"\n class=\"flex flex-wrap justify-content-between align-items-center gap-2\"\n >\n @if (isColumnGroupSelectionComponentDefined$ | async) { @if (displayedColumnKeys$ | async; as displayedColumnKeys)\n {\n <ocx-slot\n [ngStyle]=\"layout !== 'table' ? {'display' : 'none'} : {}\"\n *ocxIfPermission=\"searchConfigPermission; elseTemplate: defaultColumnGroupSelectionComponent\"\n name=\"{{columnGroupSlotName}}\"\n [inputs]=\"{ placeholderKey: groupSelectionNoGroupSelectedKey, defaultGroupKey: defaultGroupKey, customGroupKey: customGroupKey, columns: columns, selectedGroupKey: selectedGroupKey, layout: layout, displayedColumnsIds: displayedColumnKeys }\"\n [outputs]=\"{ groupSelectionChanged: groupSelectionChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n } } @else {\n <ng-container [ngTemplateOutlet]=\"defaultColumnGroupSelectionComponent\"></ng-container>\n } @if (layout === 'table') {\n <ocx-custom-group-column-selector\n [columns]=\"columns\"\n [displayedColumns]=\"(displayedColumns$ | async) ?? []\"\n [customGroupKey]=\"customGroupKey\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n (componentStateChanged)=\"customGroupColumnSelectorComponentState$.next($event)\"\n ></ocx-custom-group-column-selector>\n }\n </div>\n </div>\n</div>\n<div class=\"p-3\" [ngClass]=\"contentStyleClass\" id=\"interactiveDataViewContent\">\n <ocx-data-view\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"primeNgStringTableCell ?? _stringTableCell\"\n [numberTableCellTemplate]=\"primeNgNumberTableCell ?? _numberTableCell\"\n [dateTableCellTemplate]=\"primeNgDateTableCell ?? _dateTableCell\"\n [relativeDateTableCellTemplate]=\"primeNgRelativeDateTableCell ?? _relativeDateTableCell\"\n [tableCellTemplate]=\"primeNgTableCell ?? _tableCell\"\n [translationKeyTableCellTemplate]=\"primeNgTranslationKeyTableCell ?? _translationKeyTableCell\"\n [gridItemSubtitleLinesTemplate]=\"primeNgGridItemSubtitleLines ?? _gridItemSubtitleLines\"\n [listItemSubtitleLinesTemplate]=\"primeNgListItemSubtitleLines ?? _listItemSubtitleLines\"\n [listItemTemplate]=\"primeNgListItem ?? _listItem\"\n [listValueTemplate]=\"primeNgListValue ?? _listValue\"\n [translationKeyListValueTemplate]=\"primeNgTranslationKeyListValue ?? _translationKeyListValue\"\n [numberListValueTemplate]=\"primeNgNumberListValue ?? _numberListValue\"\n [relativeDateListValueTemplate]=\"primeNgRelativeDateListValue ?? _relativeDateListValue\"\n [stringListValueTemplate]=\"primeNgStringListValue ?? _stringListValue\"\n [dateListValueTemplate]=\"primeNgDateListValue ?? _dateListValue\"\n [gridItemTemplate]=\"primeNgGridItem ?? _gridItem\"\n [tableFilterCellTemplate]=\"primeNgTableFilterCell ?? _tableFilterCell\"\n [dateTableFilterCellTemplate]=\"primeNgDateTableFilterCell ?? _dateTableFilterCell\"\n [numberTableFilterCellTemplate]=\"primeNgNumberTableFilterCell ?? _numberTableFilterCell\"\n [stringTableFilterCellTemplate]=\"primeNgStringTableFilterCell ?? _stringTableFilterCell\"\n [relativeDateTableFilterCellTemplate]=\"primeNgRelativeDateTableFilterCell ?? _relativeDateTableFilterCell\"\n [translationKeyTableFilterCellTemplate]=\"primeNgTranslationKeyTableFilterCell ?? _translationKeyTableFilterCell\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n (componentStateChanged)=\"dataViewComponentState$.next($event)\"\n [parentTemplates]=\"templates$ | async\"\n [tableAllowSelectAll]=\"tableAllowSelectAll\"\n [tableSelectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-view>\n</div>\n\n<ng-template #defaultColumnGroupSelectionComponent>\n @if (layout === 'table') {\n <ocx-column-group-selection\n [selectedGroupKey]=\"selectedGroupKey ?? defaultGroupKey\"\n [columns]=\"columns\"\n [defaultGroupKey]=\"defaultGroupKey !== customGroupKey ? defaultGroupKey : ''\"\n [customGroupKey]=\"customGroupKey\"\n [placeholderKey]=\"groupSelectionNoGroupSelectedKey\"\n (groupSelectionChanged)=\"onColumnGroupSelectionChange($event)\"\n (componentStateChanged)=\"columnGroupSelectionComponentState$.next($event)\"\n ></ocx-column-group-selection>\n }\n</ng-template>\n\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableCell) {\n <ng-container [ngTemplateOutlet]=\"_stringTableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #numberTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableCell) {\n <ng-container [ngTemplateOutlet]=\"_numberTableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableCell) {\n <ng-container [ngTemplateOutlet]=\"_dateTableCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_tableCell) {\n <ng-container [ngTemplateOutlet]=\"_tableCell\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #gridItemSubtitleLines let-item>\n @if (_gridItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_gridItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n @if (_listItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"_listItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #gridItem let-item>\n @if (_gridItem) {\n <ng-container [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n>\n<ng-template #listItem let-item>\n @if (_listItem) {\n <ng-container [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_listValue) {\n <ng-container [ngTemplateOutlet]=\"_listValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberListValue) {\n <ng-container [ngTemplateOutlet]=\"_numberListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateListValue) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringListValue) {\n <ng-container [ngTemplateOutlet]=\"_stringListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateListValue) {\n <ng-container [ngTemplateOutlet]=\"_dateListValue\" [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\">\n </ng-container>\n }</ng-template\n>\n\n<ng-template #stringTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_stringTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #numberTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_numberTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #dateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_dateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #relativeDateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_relativeDateTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n<ng-template #translationKeyTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n @if (_translationKeyTableFilterCell) {\n <ng-container\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n }</ng-template\n>\n","import { Component, Input } from '@angular/core'\n\nexport interface LifecycleStep {\n id: string\n title: string\n details?: string\n}\n\n@Component({\n standalone: false,\n selector: 'ocx-lifecycle',\n templateUrl: './lifecycle.component.html',\n})\nexport class LifecycleComponent {\n @Input() steps: LifecycleStep[] = []\n @Input() activeStepId: string | undefined\n}\n","<p-timeline [value]=\"steps\">\n <ng-template pTemplate=\"marker\" let-step>\n <span class=\"p-timeline-event-marker\" [ngClass]=\"activeStepId && activeStepId === step.id ? 'bg-primary' : ''\"></span>\n </ng-template>\n <ng-template pTemplate=\"content\" let-step>\n <div class=\"pb-4 h-full\">\n <div class=\"card h-full\" [ngClass]=\"activeStepId && activeStepId === step.id ? 'bg-primary' : ''\">\n <p class=\"font-bold text-xl\" [ngClass]=\"step.details ? 'mb-2' : ''\">{{ step.title }}</p>\n @if (step.details) {\n <p [ngClass]=\"activeStepId && activeStepId === step.id ? '' : 'text-color-secondary'\">{{ step.details }}</p>\n }\n </div>\n </div>\n </ng-template>\n</p-timeline>\n","import { Component, Input } from '@angular/core'\n\n@Component({\n standalone: false,\n templateUrl: `./dialog-message-content.component.html`,\n})\nexport class DialogMessageContentComponent {\n @Input() message = 'message'\n @Input() messageParameters: object = {}\n @Input() icon = ''\n}\n","<div class=\"dialogMessageContent\">\n <div>\n @if (icon !== '') {\n <i [class]=\"icon\"></i>\n }\n <span id=\"dialogMessage\">{{message | translate:messageParameters}}</span>\n </div>\n</div>","import { Component, ComponentRef, OnDestroy, OnInit, ViewChild, ViewContainerRef, inject } from '@angular/core'\nimport { Observable, Subscription, from, isObservable, of, startWith } from 'rxjs'\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog'\nimport { ButtonDialogData } from '../../../model/button-dialog'\nimport { DialogMessageContentComponent } from '../dialog-message-content/dialog-message-content.component'\nimport {\n DialogButtonClicked,\n DialogCustomButtonsDisabled,\n DialogPrimaryButtonDisabled,\n DialogResult,\n DialogSecondaryButtonDisabled,\n PortalDialogServiceData,\n} from '../../../services/portal-dialog.service'\n\n@Component({\n standalone: false,\n selector: 'ocx-dialog-content',\n templateUrl: './dialog-content.component.html',\n styleUrls: ['./dialog-content.component.scss'],\n})\nexport class DialogContentComponent implements OnInit, OnDestroy {\n dynamicDialogConfig = inject(DynamicDialogConfig)\n dynamicDialogRef = inject(DynamicDialogRef)\n\n defaultDialogData: ButtonDialogData = {\n component: DialogMessageContentComponent,\n config: {},\n componentData: {},\n }\n\n @ViewChild('container', { static: true, read: ViewContainerRef })\n dialogHost!: ViewContainerRef\n\n dialogData: ButtonDialogData = this.defaultDialogData\n componentRef!: ComponentRef<any>\n\n primaryButtonEnabledSub?: Subscription\n secondaryButtonEnabledSub?: Subscription\n customButtonEnabledSub?: Subscription\n buttonClickedSub?: Subscription\n\n ngOnInit(): void {\n this.loadComponent()\n }\n\n ngOnDestroy(): void {\n this.primaryButtonEnabledSub?.unsubscribe()\n this.secondaryButtonEnabledSub?.unsubscribe()\n this.customButtonEnabledSub?.unsubscribe()\n this.buttonClickedSub?.unsubscribe()\n }\n\n loadComponent() {\n if (this.dynamicDialogConfig.data) {\n this.setUpDialogDataForDynamicConfig()\n }\n }\n\n setUpDialogDataForDynamicConfig() {\n const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n if (dynamicConfigData.component) {\n this.dialogData.component = dynamicConfigData.component\n }\n if (dynamicConfigData.componentData) {\n this.dialogData.componentData = dynamicConfigData.componentData\n }\n\n const viewContainerRef = this.dialogHost\n viewContainerRef.clear()\n\n this.buttonClickedSub = portalDialogServiceData.buttonClicked$.subscribe((state) => {\n const component = this.componentRef.instance\n\n const hasDialogResult = this.isDialogResultImplemented(component)\n if (hasDialogResult) {\n state.result = component.dialogResult\n }\n const closeResult = state\n // check if component implements DialogButtonClicked\n if (this.isDialogButtonClickedImplemented(component)) {\n const buttonResult = component.ocxDialogButtonClicked(state)\n // If undefined or void is returned, close dialog and return result\n if (buttonResult === undefined) {\n if (hasDialogResult) {\n closeResult.result = component.dialogResult\n }\n return this.dynamicDialogRef.close(closeResult)\n }\n this.toObservable(buttonResult).subscribe((result: boolean) => {\n if (result === true) {\n if (hasDialogResult) {\n closeResult.result = component.dialogResult\n }\n this.dynamicDialogRef.close(closeResult)\n }\n })\n } else {\n return this.dynamicDialogRef.close(closeResult)\n }\n })\n\n if (this.dialogData.component) {\n const componentRef = viewContainerRef.createComponent<any>(this.dialogData.component)\n\n if (this.isDialogPrimaryButtonDisabledImplemented(componentRef.instance)) {\n this.primaryButtonEnabledSub = componentRef.instance.primaryButtonEnabled\n .pipe(startWith(false))\n .subscribe((isEnabled) => {\n portalDialogServiceData.primaryButtonEnabled$.emit(isEnabled)\n })\n }\n if (this.isDialogSecondaryButtonDisabledImplemented(componentRef.instance)) {\n this.secondaryButtonEnabledSub = componentRef.instance.secondaryButtonEnabled\n .pipe(startWith(false))\n .subscribe((isEnabled) => {\n portalDialogServiceData.secondaryButtonEnabled$.emit(isEnabled)\n })\n }\n if (this.isDialogCustomButtonDisabledImplemented(componentRef.instance)) {\n this.customButtonEnabledSub = componentRef.instance.customButtonEnabled.subscribe((buttonEnabled) => {\n portalDialogServiceData.customButtonEnabled$.emit(buttonEnabled)\n })\n }\n\n //populate container\n Object.keys(this.dialogData.componentData).forEach((k) => {\n componentRef.setInput(k, this.dialogData.componentData[k])\n })\n this.componentRef = componentRef\n }\n }\n\n private toObservable(\n ocxDialogButtonClickedResult: boolean | Observable<boolean> | Promise<boolean> | undefined\n ): Observable<boolean> {\n if (ocxDialogButtonClickedResult === undefined) {\n return of(true)\n }\n if (isObservable(ocxDialogButtonClickedResult)) {\n return ocxDialogButtonClickedResult\n }\n return from(Promise.resolve(ocxDialogButtonClickedResult))\n }\n\n private isDialogResultImplemented(component: any): component is DialogResult<unknown> {\n return 'dialogResult' in component\n }\n\n private isDialogButtonClickedImplemented(component: any): component is DialogButtonClicked {\n return typeof component.ocxDialogButtonClicked === 'function'\n }\n\n private isDialogPrimaryButtonDisabledImplemented(component: any): component is DialogPrimaryButtonDisabled {\n return 'primaryButtonEnabled' in component\n }\n\n private isDialogSecondaryButtonDisabledImplemented(component: any): component is DialogSecondaryButtonDisabled {\n return 'secondaryButtonEnabled' in component\n }\n\n private isDialogCustomButtonDisabledImplemented(component: any): component is DialogCustomButtonsDisabled {\n return 'customButtonEnabled' in component\n }\n}\n","<div class=\"buttonDialogScrollableContent\">\n <ng-container #container></ng-container>\n <ng-content></ng-content>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n inject,\n} from '@angular/core'\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog'\nimport { BehaviorSubject, Observable, map, withLatestFrom } from 'rxjs'\nimport {\n ButtonDialogButtonDetails,\n ButtonDialogConfig,\n ButtonDialogCustomButtonDetails,\n ButtonDialogData,\n} from '../../../model/button-dialog'\nimport {\n DialogState,\n DialogStateButtonClicked,\n PortalDialogServiceData,\n} from '../../../services/portal-dialog.service'\n\n@Component({\n standalone: false,\n selector: 'ocx-dialog-footer',\n templateUrl: './dialog-footer.component.html',\n styleUrls: ['./dialog-footer.component.scss'],\n})\nexport class DialogFooterComponent implements OnInit, AfterViewInit {\n dynamicDialogConfig = inject(DynamicDialogConfig)\n dynamicDialogRef = inject(DynamicDialogRef)\n\n defaultPrimaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CONFIRM',\n }\n\n defaultSecondaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CANCEL',\n }\n\n defaultDialogData: ButtonDialogData = {\n config: {\n primaryButtonDetails: this.defaultPrimaryButtonDetails,\n secondaryButtonIncluded: true,\n secondaryButtonDetails: this.defaultSecondaryButtonDetails,\n },\n componentData: {},\n }\n\n @Input() config: ButtonDialogConfig = {}\n\n dialogData: ButtonDialogData = this.defaultDialogData\n primaryButtonDisabled$: Observable<boolean | undefined> | undefined\n secondaryButtonDisabled$: Observable<boolean | undefined> | undefined\n customButtonsDisabled$: BehaviorSubject<Record<string, boolean>> = new BehaviorSubject({})\n leftCustomButtons: ButtonDialogCustomButtonDetails[] = []\n rightCustomButtons: ButtonDialogCustomButtonDetails[] = []\n\n @Output() buttonClickedEmitter: EventEmitter<DialogState<unknown>> = new EventEmitter()\n\n @ViewChild('primaryButton', { static: true, read: ViewContainerRef })\n primaryButton!: ViewContainerRef\n _secondaryButton!: ViewContainerRef\n @ViewChild('secondaryButton', { static: false, read: ViewContainerRef })\n set secondaryButton(content: ViewContainerRef) {\n if (content) {\n this._secondaryButton = content\n }\n }\n get secondaryButton(): ViewContainerRef {\n return this._secondaryButton\n }\n @ViewChildren('customButton') customButtons!: QueryList<ElementRef>\n\n ngAfterViewInit(): void {\n if (!(this.dynamicDialogConfig.data && this.dynamicDialogConfig.data.config)) return\n\n const config = this.dynamicDialogConfig.data.config\n if (config.autoFocusButton === 'primary') {\n this.primaryButton.element.nativeElement.focus()\n } else if (config.autoFocusButton === 'secondary') {\n this.secondaryButton.element.nativeElement.focus()\n } else if (config.autoFocusButton === 'custom') {\n const button = this.customButtons.find((customButton) => {\n return customButton.nativeElement.id === config.autoFocusButtonCustomId\n })\n setTimeout(() => {\n button?.nativeElement.focus()\n })\n }\n }\n\n ngOnInit(): void {\n this.loadComponent()\n }\n\n primaryButtonAction() {\n return this.buttonAction('primary')\n }\n\n secondaryButtonAction() {\n return this.buttonAction('secondary')\n }\n\n customButtonAction(button: ButtonDialogCustomButtonDetails) {\n return this.buttonAction(`custom`, button.id)\n }\n\n resolveCustomButtonDisabled(customButtonsDisabled: Record<string, boolean>, buttonId: string) {\n return buttonId in customButtonsDisabled ? customButtonsDisabled[buttonId] : true\n }\n\n loadComponent() {\n if (this.dynamicDialogConfig.data) {\n this.setUpDialogDataForDynamicConfig()\n } else {\n this.setUpDialogDataForInput()\n }\n }\n\n setUpDialogDataForInput() {\n if (this.config) {\n if (!!this.config.primaryButtonDetails && !!this.config.primaryButtonDetails.key) {\n this.dialogData.config.primaryButtonDetails = this.config.primaryButtonDetails\n }\n if (this.config.secondaryButtonIncluded) {\n this.dialogData.config.secondaryButtonIncluded = this.config.secondaryButtonIncluded\n }\n if (!!this.config.secondaryButtonDetails && !!this.config.secondaryButtonDetails.key) {\n this.dialogData.config.secondaryButtonDetails = this.config.secondaryButtonDetails\n }\n }\n this.dialogData.config.customButtons = this.config.customButtons\n this.setupCustomButtons(this.dialogData)\n }\n\n setUpDialogDataForDynamicConfig() {\n const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n if (dynamicConfigData.config) {\n const dialogConfig = dynamicConfigData.config\n if (!!dialogConfig.primaryButtonDetails && !!dialogConfig.primaryButtonDetails.key) {\n this.dialogData.config.primaryButtonDetails = dialogConfig.primaryButtonDetails\n }\n if (dialogConfig.secondaryButtonIncluded !== undefined) {\n this.dialogData.config.secondaryButtonIncluded = dialogConfig.secondaryButtonIncluded\n }\n if (!!dialogConfig.secondaryButtonDetails && !!dialogConfig.secondaryButtonDetails.key) {\n this.dialogData.config.secondaryButtonDetails = dialogConfig.secondaryButtonDetails\n }\n }\n\n this.setupCustomButtons(dynamicConfigData)\n\n this.primaryButtonDisabled$ = portalDialogServiceData.primaryButtonEnabled$.pipe(map((isEnabled) => !isEnabled))\n this.secondaryButtonDisabled$ = portalDialogServiceData.secondaryButtonEnabled$.pipe(map((isEnabled) => !isEnabled))\n\n const initCustomButtons: Record<string, boolean> = {}\n this.rightCustomButtons.concat(this.leftCustomButtons).map((button) => {\n initCustomButtons[button.id] = true\n })\n this.customButtonsDisabled$.next(initCustomButtons)\n portalDialogServiceData.customButtonEnabled$\n .pipe(\n withLatestFrom(this.customButtonsDisabled$),\n map(([buttonEnabled, customButtonsDisabled]) => {\n if (customButtonsDisabled[buttonEnabled.id] !== !buttonEnabled.enabled) {\n customButtonsDisabled[buttonEnabled.id] = !buttonEnabled.enabled\n }\n return customButtonsDisabled\n })\n )\n .subscribe(this.customButtonsDisabled$)\n\n this.buttonClickedEmitter = portalDialogServiceData.buttonClicked$\n }\n\n private buttonAction(resultButtonClickedName: DialogStateButtonClicked, buttonId?: string) {\n const state: DialogState<unknown> = {\n button: resultButtonClickedName,\n result: undefined,\n id: buttonId,\n }\n\n this.buttonClickedEmitter?.emit(state)\n }\n\n private setupCustomButtons(dialogData: ButtonDialogData) {\n this.leftCustomButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'left') ?? []\n this.rightCustomButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'right') ?? []\n }\n}\n","<div class=\"w-full flex-row justify-content-end flex flex-wrap gap-2\">\n @for (button of leftCustomButtons; track button; let i = $index) {\n <div [ngStyle]=\"{'margin-right': (i === leftCustomButtons.length - 1) ? 'auto' : 0}\">\n <ng-container *ngTemplateOutlet=\"customButtonTemplate; context: {button: button}\"> </ng-container>\n </div>\n }\n @for (button of rightCustomButtons; track button) {\n <div>\n <ng-container *ngTemplateOutlet=\"customButtonTemplate; context: {button: button}\"> </ng-container>\n </div>\n }\n <div>\n @if (dialogData.config.secondaryButtonIncluded) {\n <button\n #secondaryButton\n id=\"{{dialogData.config.secondaryButtonDetails?.id ?? 'buttonDialogSecondaryButton'}}\"\n pButton\n [icon]=\"dialogData.config.secondaryButtonDetails!.icon !== undefined ? dialogData.config.secondaryButtonDetails!.icon : ''\"\n (click)=\"secondaryButtonAction()\"\n [label]=\"dialogData.config.secondaryButtonDetails!.key | translate:dialogData.config.secondaryButtonDetails?.parameters\"\n [disabled]=\"secondaryButtonDisabled$ | async\"\n pTooltip=\"dialogData.config.secondaryButtonDetails!.tooltipKey ? (dialogData.config.secondaryButtonDetails!.tooltipKey | translate) : null\"\n tooltipPosition=\"dialogData.config.secondaryButtonDetails?.tooltipPosition ?? ''\"\n [attr.aria-label]=\"dialogData.config.secondaryButtonDetails!.key | translate:dialogData.config.secondaryButtonDetails?.parameters\"\n ></button>\n }\n </div>\n <div>\n <button\n #primaryButton\n id=\"{{dialogData.config.primaryButtonDetails?.id ?? 'buttonDialogPrimaryButton'}}\"\n pButton\n autofocus\n [icon]=\"dialogData.config.primaryButtonDetails!.icon !== undefined ? dialogData.config.primaryButtonDetails!.icon : ''\"\n (click)=\"primaryButtonAction()\"\n [label]=\"dialogData.config.primaryButtonDetails!.key | translate:dialogData.config.primaryButtonDetails?.parameters\"\n [disabled]=\"primaryButtonDisabled$ | async\"\n pTooltip=\"dialogData.config.primaryButtonDetails!.tooltipKey ? (dialogData.config.primaryButtonDetails!.tooltipKey | translate) : null\"\n tooltipPosition=\"dialogData.config.primaryButtonDetails?.tooltipPosition ?? ''\"\n [attr.aria-label]=\"dialogData.config.primaryButtonDetails!.key | translate:dialogData.config.primaryButtonDetails?.parameters\"\n ></button>\n </div>\n</div>\n\n<ng-template #customButtonTemplate let-button=\"button\">\n <button\n #customButton\n id=\"{{button.id}}\"\n pButton\n [icon]=\"button.icon !== undefined ? button.icon : ''\"\n (click)=\"customButtonAction(button)\"\n [label]=\"button.key | translate:button.parameters\"\n [disabled]=\"resolveCustomButtonDisabled((customButtonsDisabled$ | async) ?? {}, button.id)\"\n pTooltip=\"button.tooltipKey ? (button.tooltipKey | translate) : null\"\n tooltipPosition=\"button.tooltipPosition ?? ''\"\n [attr.aria-label]=\"button.key | translate:button.parameters\"\n ></button>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core'\nimport { ButtonDialogConfig } from '../../../model/button-dialog'\nimport { DialogState } from '../../../services/portal-dialog.service'\n\n@Component({\n standalone: false,\n selector: 'ocx-dialog-inline',\n templateUrl: './dialog-inline.component.html',\n styleUrls: ['./dialog-inline.component.scss'],\n})\nexport class DialogInlineComponent {\n @Input() config: ButtonDialogConfig = {}\n\n @Output() resultEmitter = new EventEmitter()\n\n buttonClicked(event: DialogState<unknown>) {\n this.resultEmitter.emit(event.button)\n }\n}\n","<div>\n <ocx-dialog-content>\n <ng-content></ng-content>\n </ocx-dialog-content>\n <ocx-dialog-footer [config]=\"config\" (buttonClickedEmitter)=\"buttonClicked($event)\"></ocx-dialog-footer>\n</div>\n","import { Component, Input, inject } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\n\n@Component({\n standalone: false,\n selector: 'ocx-error',\n templateUrl: './global-error.component.html',\n styleUrls: ['./global-error.component.scss'],\n})\nexport class GlobalErrorComponent {\n private router = inject(Router)\n private route = inject(ActivatedRoute)\n\n @Input()\n errCode: string | undefined\n backUrl: string\n\n constructor() {\n this.errCode = this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START'\n this.backUrl = this.route.snapshot.queryParamMap.get('return') || '/'\n }\n\n onGoBack() {\n this.router.navigateByUrl(this.backUrl)\n }\n\n reload() {\n window.location.reload()\n }\n}\n","<div class=\"pages-body error-page flex flex-column\">\n <div class=\"align-self-center mt-auto mb-auto\">\n <div class=\"pages-panel card flex flex-column\">\n <div class=\"pages-header px-3 py-1\">\n <h2>ERROR</h2>\n </div>\n <div class=\"card mt-3 px-6\">\n <img src=\"assets/images/error.png\" alt=\"\" />\n </div>\n <div class=\"pages-detail pb-6\">{{errCode}}</div>\n <button pButton pRipple type=\"button\" label=\"Try Again\" (click)=\"reload()\" class=\"p-button-text\"></button>\n </div>\n </div>\n</div>\n","import { EventEmitter, Injectable, OnDestroy, Type, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DialogService, DynamicDialogComponent } from 'primeng/dynamicdialog'\nimport { Observable, filter, mergeMap } from 'rxjs'\n\nimport { ButtonDialogButtonDetails, ButtonDialogCustomButtonDetails, ButtonDialogData } from '../model/button-dialog'\nimport { NavigationStart, Router } from '@angular/router'\nimport {\n SKIP_STYLE_SCOPING,\n dataNoPortalLayoutStylesKey,\n dataStyleIdKey,\n getScopeIdentifier,\n} from '@onecx/angular-utils'\nimport { REMOTE_COMPONENT_CONFIG } from '@onecx/angular-remote-components'\nimport { CurrentLocationTopicPayload, EventsTopic, TopicEventType } from '@onecx/integration-interface'\nimport { Capability, ShellCapabilityService, AppStateService } from '@onecx/angular-integration-interface'\nimport { PrimeIcon } from '../utils/primeicon.utils'\nimport { DialogContentComponent } from '../components/dialog/dialog-content/dialog-content.component'\nimport { DialogFooterComponent } from '../components/dialog/dialog-footer/dialog-footer.component'\nimport { DialogMessageContentComponent } from '../components/dialog/dialog-message-content/dialog-message-content.component'\nimport { TranslationKey, TranslationKeyWithParameters } from '../model/translation.model'\n/**\n * Object containing message of type {@link TranslationKey} and icon to be displayed along the message.\n *\n * @example\n * DialogMessage with TranslationKey will display 'text with parameter value = hello' and question mark icon\n *\n * ## Assume such translation is in the translation file\n * ```\n * const translations = {\n * MY_KEY = 'text with parameter value = {{value}}',\n * }\n * ```\n *\n * ## DialogMessage declaration\n * ```\n * const myDialogMessage: DialogMessage = {\n * message: {\n * key: 'MY_KEY',\n * parameters: {\n * value = 'hello',\n * },\n * },\n * icon: PrimeIcons.QUESTION\n * }\n * ```\n */\ntype DialogMessage = { message: TranslationKey; icon: PrimeIcon }\n\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use if you want {@link PortalDialogService.openDialog} to return state of displayed component's current dialogResult value alongside the clicked button.\n *\n * @example\n * Display component implementing DialogResult<string> and react on the returned value\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string> {\n * dialogResult: string = ''\n *\n * onInputChange(event: any) {\n * this.dialogResult = event.target.value\n * }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * portalDialogService.openDialog(title, { type: MyInputComponent }, primaryButton, ...).subscribe((result: DialogState<string>) => {\n * // result.value === MyInputComponent.dialogResult (during button click)\n * // behavior when dialog closes\n * })\n * ```\n *\n */\nexport interface DialogResult<T> {\n dialogResult: T\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of the primary button (disabled or enabled). Whenever your component wants to disable/enable primary button it should emit boolean equal to whether primary button should be enabled.\n *\n * If you implement this interface then primary button will be disabled until the emitter emits true\n */\nexport interface DialogPrimaryButtonDisabled {\n primaryButtonEnabled: EventEmitter<boolean>\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of the secondary button (disabled or enabled). Whenever your component wants to disable/enable secondary button it should emit boolean equal to whether secondary button should be enabled.\n *\n * If you implement this interface then secondary button will be disabled until the emitter emits true\n */\nexport interface DialogSecondaryButtonDisabled {\n secondaryButtonEnabled: EventEmitter<boolean>\n}\n\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to control the state of custom buttons (disabled or enabled). Whenever your component wants to disable/enable any custom button it should emit an object indicating which button should be disabled/enabled. This object should contain id property (string) related to previously defined button and enabled property (boolean) equal to whether custom button should be enabled.\n *\n * If you implement this interface then all custom buttons will be disabled until the emitter emits true\n */\nexport interface DialogCustomButtonsDisabled {\n customButtonEnabled: EventEmitter<{ id: string; enabled: boolean }>\n}\n/**\n * Implement via component class to be displayed by {@link PortalDialogService.openDialog}\n *\n * Use to add behavior on button clicks. {@link DialogButtonClicked.ocxDialogButtonClicked} method will be called everytime any button is clicked and should return boolean value (or Observable<boolean> or Promise<boolean>) equal to whether dialog should be closed or not.\n *\n * {@link DialogButtonClicked.ocxDialogButtonClicked} will recieve object containing component's state captured on button click. It will have button property with value 'primary' or 'secondary' which determines which button was clicked.\n *\n * It will also have result property which by default will be undefined, however if you want to add any properties to the state please combine this interface with {@link DialogResult}. That way result will be equal to component's dialogResult property captured on button click.\n *\n * @example\n * Display component implementing DialogResult<string> and DialogButtonClicked which should not close dialog on clear click but should close when send clicked and api call was sucessful\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string>, DialogButtonClicked {\n * dialogResult: string = ''\n *\n * onInputChange(event: any) {\n * this.dialogResult = event.target.value\n * }\n *\n * ocxDialogButtonClicked(state: DialogState<string>) {\n * // here you can do any operations you desire\n * // such as form validation\n * // api calls and so on\n * if (state.button === 'primary') {\n * // send form data to server\n * this.apiService.postInput(state.result, ...).pipe(\n * // map response to boolean meaning if call was successfull\n * )\n * return true // if dialog should be closed return true\n * } else {\n * // clear input\n * return false // don't want to close the dialog, only to clear it\n * }\n * }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * portalDialogService.openDialog(title, { type: MyInputComponent }, \"Send\", \"Clear\").subscribe((result: DialogState<string>) => {\n * // behavior to be fired when dialog closes\n * })\n * ```\n */\nexport interface DialogButtonClicked<T = unknown> {\n ocxDialogButtonClicked(state: DialogState<T>): Observable<boolean> | Promise<boolean> | boolean | undefined | void\n}\n\n/**\n * Object containing component type to be displayed and inputs to populate the component.\n *\n * @example\n *\n * ```\n * ⁣@Component({template: `<h1>{{content}}</h1>`})\n * export class MyComponent {\n * ⁣@Input() content: string = ''\n * }\n * const myComponent = {\n * type: MyComponent,\n * inputs: {\n * content: 'My header content',\n * },\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\ntype Component<T extends unknown> = unknown extends T\n ? {\n type: Type<any>\n inputs?: Record<string, unknown>\n }\n : {\n type: Type<DialogResult<T>>\n inputs?: Record<string, unknown>\n }\n\nexport type DialogButton = 'primary' | 'secondary' | 'custom'\nexport type DialogStateButtonClicked = 'primary' | 'secondary' | 'custom'\n\n/**\n * Object containing information about clicked button ('primary' or 'secondary') and displayed component state captured on button click (only if component implements {@link DialogResult} interface)\n */\nexport type DialogState<T> = {\n button: DialogStateButtonClicked\n result: T | undefined\n id?: string\n}\n\nexport type PortalDialogConfig = {\n showXButton?: boolean\n customButtons?: ButtonDialogCustomButtonDetails[]\n autoFocusButton?: DialogButton\n autoFocusButtonCustomId?: string\n ariaLabelledBy?: string\n width?: string\n height?: string\n closeOnEscape?: boolean\n focusOnShow?: boolean\n focusTrap?: boolean\n baseZIndex?: number\n autoZIndex?: boolean\n dismissableMask?: boolean\n showHeader?: boolean\n modal?: boolean\n resizable?: boolean\n draggable?: boolean\n keepInViewport?: boolean\n minX?: number\n minY?: number\n maximizable?: boolean\n maximizeIcon?: string\n minimizeIcon?: string\n position?: string\n closeAriaLabel?: string\n}\n\nexport interface PortalDialogServiceData {\n primaryButtonEnabled$: EventEmitter<boolean>\n secondaryButtonEnabled$: EventEmitter<boolean>\n customButtonEnabled$: EventEmitter<{ id: string; enabled: boolean }>\n buttonClicked$: EventEmitter<DialogState<unknown>>\n}\n\n@Injectable({ providedIn: 'any' })\nexport class PortalDialogService implements OnDestroy {\n private dialogService = inject(DialogService)\n private translateService = inject(TranslateService)\n private router = inject(Router)\n private _eventsTopic$: EventsTopic | undefined\n get eventsTopic() {\n this._eventsTopic$ ??= new EventsTopic()\n return this._eventsTopic$\n }\n set eventsTopic(source: EventsTopic) {\n this._eventsTopic$ = source\n }\n private skipStyleScoping = inject(SKIP_STYLE_SCOPING, { optional: true })\n private remoteComponentConfig = inject(REMOTE_COMPONENT_CONFIG, { optional: true })\n private appStateService = inject(AppStateService)\n private capabilityService = inject(ShellCapabilityService)\n\n constructor() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.cleanupAndCloseDialog()\n }\n })\n let observable: Observable<TopicEventType | CurrentLocationTopicPayload> =\n this.appStateService.currentLocation$.asObservable()\n if (!this.capabilityService.hasCapability(Capability.CURRENT_LOCATION_TOPIC)) {\n observable = this.eventsTopic.pipe(filter((e) => e.type === 'navigated'))\n }\n observable.subscribe(() => {\n this.cleanupAndCloseDialog()\n })\n }\n\n ngOnDestroy(): void {\n this.cleanupAndCloseDialog()\n this._eventsTopic$?.destroy()\n }\n\n /**\n * Opens dialog with a component or message to display and one or two buttons. This method allows you to customize the dialog using parameters and by implementic specific interfaces via component to be displayed. The dialog is only shown if if you subscribe to this function.\n *\n * Displaying component inisde the dialog can be achieved by providing the component class with optional inputs. By default the component will be shown without any interaction with the dialog, however you can implement the following interfaces by your component class to allow for some interactions:\n * - {@link DialogResult} - dialog state will contain dialogResult property\n *\n * - {@link DialogButtonClicked} - on button click ocxDialogButtonClicked function will be called with dialog state as a parameter. You should return true if you want dialog to be close or false if not and add any operations on your component.\n *\n * - {@link DialogPrimaryButtonDisabled} - dialog will use the EventEmitter to determine if the primary button should be disabled\n *\n * - {@link DialogSecondaryButtonDisabled} - dialog will use the EventEmitter to determine if the secondary button should be disabled\n *\n * - {@link DialogCustomButtonsDisabled} - dialog will use the EventEmitter to determine if the custom buttons should be disabled\n *\n * @param title Translation key for dialog title\n * @param componentOrMessage Either a component or a translation key of a message with optional parameters and icon to be displayed next to the message\n * @param primaryButtonTranslationKeyOrDetails Translation key with optional parameters and icon to be displayed next to the text of the button\n * @param secondaryButtonTranslationKeyOrDetails Translation key with optional parameters and icon to be displayed next to the text of the button\n * @param extras Configuration object allowing for customization of the dialog behavior and visual aspects\n * @returns Observable containing dialog state on close\n *\n *\n * @example\n * Display dialog with message and two buttons using translation keys\n *\n * ```\n * // assume 'TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON' and 'REFRESH_BUTTON' are translation keys\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog message with icon and single button\n *\n * ```\n * // Welcome message with question mark icon\n * const dialogMessage = {\n * key: 'WELCOME_MESSAGE',\n * icon: PrimeIcons.QUESTION\n * }\n * this.portalDialogService.openDialog('TITLE_KEY', dialogMessage, 'OK_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog message with two customized buttons\n *\n * ```\n * // Ok button with check icon\n * const primaryButton = {\n * key: 'OK_BUTTON',\n * icon: PrimeIcons.CHECK\n * tooltipKey: 'OK_TOOLTIP',\n * tooltipPosition: 'bottom'\n * }\n *\n * // Refresh button with refresh icon\n * const secondaryButton = {\n * key: 'REFRESH_BUTTON',\n * icon: PrimeIcons.REFRESH\n * tooltipKey: 'REFRESH_TOOLTIP',\n * tooltipPosition: 'right'\n * }\n *\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', primaryButton, secondaryButton).subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog message without X button in top right corner\n *\n * ```\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON', false).subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * React on dialog closing\n *\n * ```\n * this.portalDialogService.openDialog('TITLE_KEY', 'WELCOME_MESSAGE', 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog with component\n *\n * ## Component declaration\n * ```\n * ⁣@Component({template: `<div>\n * <h1>{{header | translate}}</h1>\n * <input (change)=\"onInputChange($event)\">\n * </div>`})\n * export class MyInputComponent implements DialogResult<string>, DialogButtonClicked, DialogPrimaryButtonDisabled, DialogSecondaryButtonDisabled {\n * ⁣@Input() header: string = ''\n * // change value to manipulate component state visible by dialog\n * dialogResult: string = ''\n * // emit true/false to disable primary button\n * ⁣@Output() primaryButtonEnabled: EventEmitter<boolean> = new EventEmitter()\n * // emit true/false to disable secondary button\n * ⁣@Output() secondaryButtonEnabled: EventEmitter<boolean> = new EventEmitter()\n *\n * // implement operations to be done on button clicks and return if the dialog should be closed\n * ocxDialogButtonClicked(state: DialogState<string>) {\n * return true\n * }\n *\n * onInputChange(event: any) {\n * this.dialogResult = event.target.value\n * }\n * }\n * ```\n *\n * ## PortalDialogService call\n * ```\n * const myComponent = {\n * type: MyInputComponent,\n * inputs: {\n * header: 'DIALOG_HEADER'\n * }\n * }\n * this.portalDialogService.openDialog('TITLE_KEY', myComponent, 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n *\n * @example\n * Display dialog with component without passing inputs\n *\n * ## PortalDialogService call\n * ```\n * this.portalDialogService.openDialog('TITLE_KEY', MyInputComponent, 'OK_BUTTON', 'REFRESH_BUTTON').subscribe((stateOnClose) => {\n * // operations when dialog has been closed\n * })\n * ```\n */\n openDialog<T>(\n title: TranslationKey | null,\n componentOrMessage: Type<any> | Type<DialogResult<T>> | Component<T> | TranslationKey | DialogMessage,\n primaryButtonTranslationKeyOrDetails: TranslationKey | ButtonDialogButtonDetails,\n secondaryButtonTranslationKeyOrDetails?: TranslationKey | ButtonDialogButtonDetails,\n extras?: PortalDialogConfig\n ): Observable<DialogState<T>>\n openDialog<T>(\n title: TranslationKey | null,\n componentOrMessage: Type<any> | Type<DialogResult<T>> | Component<T> | TranslationKey | DialogMessage,\n primaryButtonTranslationKeyOrDetails: TranslationKey | ButtonDialogButtonDetails,\n secondaryButtonTranslationKeyOrDetails?: TranslationKey | ButtonDialogButtonDetails,\n extrasOrShowXButton: PortalDialogConfig | boolean = {}\n ): Observable<DialogState<T>> {\n const dialogOptions: PortalDialogConfig =\n typeof extrasOrShowXButton === 'object'\n ? extrasOrShowXButton\n : {\n showXButton: extrasOrShowXButton,\n }\n const translateParams = this.prepareTitleForTranslation(title)\n\n const componentToRender: Component<any> = this.getComponentToRender(componentOrMessage)\n const dynamicDialogDataConfig: ButtonDialogData = {\n component: componentToRender.type as Type<any>,\n config: {\n primaryButtonDetails: this.buttonDetailsOrTranslationKey(primaryButtonTranslationKeyOrDetails),\n secondaryButtonIncluded: secondaryButtonTranslationKeyOrDetails !== undefined,\n secondaryButtonDetails: this.buttonDetailsOrTranslationKey(secondaryButtonTranslationKeyOrDetails),\n customButtons: dialogOptions.customButtons?.map(\n (button) => this.buttonDetailsOrTranslationKey(button) as ButtonDialogCustomButtonDetails\n ),\n autoFocusButton: dialogOptions.autoFocusButton,\n autoFocusButtonCustomId: dialogOptions.autoFocusButtonCustomId,\n },\n componentData: componentToRender.inputs,\n }\n\n return this.translateService.get(translateParams.key, translateParams.parameters).pipe(\n mergeMap((dialogTitle) => {\n const dialogRef = this.dialogService.open(DialogContentComponent, {\n header: dialogTitle,\n data: {\n ...dynamicDialogDataConfig,\n portalDialogServiceData: {\n primaryButtonEnabled$: new EventEmitter(),\n secondaryButtonEnabled$: new EventEmitter(),\n customButtonEnabled$: new EventEmitter(),\n buttonClicked$: new EventEmitter(),\n } satisfies PortalDialogServiceData,\n },\n closable: dialogOptions.showXButton && secondaryButtonTranslationKeyOrDetails !== undefined,\n modal: true,\n ...dialogOptions,\n focusOnShow: false,\n appendTo: 'body', // Important for the function findBodyChild\n duplicate: true, // Since dialog always opens DialogContentComponent, duplicates must be always allowed\n templates: {\n footer: DialogFooterComponent,\n },\n })\n this.setScopeIdentifier(this.dialogService.getInstance(dialogRef))\n return dialogRef.onClose\n })\n )\n }\n\n private cleanupAndCloseDialog() {\n if (this.dialogService.dialogComponentRefMap.size > 0) {\n this.dialogService.dialogComponentRefMap.forEach((_, dialogRef) => {\n const dialogComponent = this.dialogService.getInstance(dialogRef)\n dialogRef.close()\n this.removeDialogFromHtml(dialogComponent)\n })\n }\n }\n\n private removeDialogFromHtml(dialogComponent: DynamicDialogComponent) {\n const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n bodyChild && document.body.removeChild(bodyChild)\n }\n\n private setScopeIdentifier(dialogComponent: DynamicDialogComponent) {\n getScopeIdentifier(\n this.appStateService,\n this.skipStyleScoping ?? undefined,\n this.remoteComponentConfig ?? undefined\n ).then((scopeId) => {\n const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n if (bodyChild) {\n bodyChild.dataset[dataStyleIdKey] = scopeId\n bodyChild.dataset[dataNoPortalLayoutStylesKey] = ''\n }\n })\n }\n\n private findDialogComponentBodyChild(dialogComponent: DynamicDialogComponent) {\n const element = dialogComponent.el.nativeElement\n if (!element) return\n return this.findBodyChild(element)\n }\n\n private findBodyChild(element: HTMLElement) {\n let currentNode = element\n while (currentNode.parentElement && currentNode.parentElement != document.body) {\n currentNode = currentNode.parentElement\n }\n return currentNode.parentElement === document.body ? currentNode : undefined\n }\n\n private prepareTitleForTranslation(title: TranslationKey | null): TranslationKeyWithParameters {\n if (!title) return { key: '', parameters: {} }\n if (this.isString(title)) return { key: title, parameters: {} }\n return title\n }\n\n private buttonDetailsOrTranslationKey(\n buttonTranslationKeyOrDetails:\n | TranslationKey\n | ButtonDialogButtonDetails\n | ButtonDialogCustomButtonDetails\n | undefined\n ): ButtonDialogButtonDetails | ButtonDialogCustomButtonDetails | undefined {\n if (buttonTranslationKeyOrDetails === undefined) {\n return undefined\n }\n\n let buttonDetails\n\n if (this.isString(buttonTranslationKeyOrDetails)) {\n buttonDetails = {\n key: buttonTranslationKeyOrDetails,\n }\n } else {\n buttonDetails = buttonTranslationKeyOrDetails\n }\n\n return buttonDetails\n }\n\n private getComponentToRender(\n componentOrMessage: Type<any> | Type<DialogResult<any>> | Component<any> | TranslationKey | DialogMessage\n ): Component<any> {\n if (this.isTranslationKey(componentOrMessage)) {\n return {\n type: DialogMessageContentComponent,\n inputs: {\n message: this.isString(componentOrMessage) ? componentOrMessage : componentOrMessage.key,\n messageParameters: this.isString(componentOrMessage) ? {} : componentOrMessage.parameters,\n },\n }\n } else if (this.isDialogMessage(componentOrMessage)) {\n return {\n type: DialogMessageContentComponent,\n inputs: {\n message: this.isString(componentOrMessage.message)\n ? componentOrMessage.message\n : componentOrMessage.message.key,\n icon: componentOrMessage.icon,\n messageParameters: this.isString(componentOrMessage.message) ? {} : componentOrMessage.message.parameters,\n },\n }\n } else if (this.isType(componentOrMessage)) {\n return {\n type: componentOrMessage,\n }\n }\n return componentOrMessage\n }\n\n private isTranslationKey(obj: any): obj is TranslationKey {\n return this.isString(obj) || ('key' in obj && 'parameters' in obj)\n }\n\n private isString(obj: any): obj is string {\n return typeof obj === 'string' || obj instanceof String\n }\n\n private isDialogMessage(obj: any): obj is DialogMessage {\n return 'message' in obj && 'icon' in obj\n }\n\n private isType(obj: any): obj is Type<any> {\n return obj instanceof Type\n }\n}\n\nexport function providePortalDialogService() {\n return [DialogService, PortalDialogService]\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateUtils {\n protected locale = inject(LOCALE_ID)\n\n options: Intl.DateTimeFormatOptions = {\n month: 'short',\n day: '2-digit',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }\n\n localizedDate(date: string | number | Date | undefined): string {\n return date\n ? new Intl.DateTimeFormat(this.locale, this.options).format(date instanceof Date ? date : new Date(date))\n : ''\n }\n}\n","import { Injectable, LOCALE_ID, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { Observable, firstValueFrom, map, of } from 'rxjs'\nimport { DateUtils } from '../utils/dateutils'\nimport { ColumnType } from '../model/column-type.model'\nimport { ObjectUtils } from '../utils/objectutils'\n\n@Injectable({ providedIn: 'any' })\nexport class ExportDataService {\n private readonly dateUtils = inject(DateUtils)\n private readonly translateService = inject(TranslateService)\n private readonly locale = inject(LOCALE_ID)\n\n async exportCsv<T extends string | number | symbol>(\n columns: { id: string; nameKey: string; columnType: ColumnType }[],\n data: Partial<Record<T, unknown | undefined>>[],\n fileName: string\n ): Promise<void> {\n if (!columns.length) {\n return\n }\n const flattenedData = data.map((d) =>\n columns.reduce((obj, c) => ({ ...obj, [c.id]: ObjectUtils.resolveFieldData(d, c.id) }), {})\n )\n const translatedData = await firstValueFrom(this.translateData(columns, flattenedData))\n const dataToExport = this.formatData(columns, translatedData)\n const delimiter = this.locale.startsWith('de') ? ';' : ','\n const dataString = dataToExport\n .map((d) =>\n columns\n .reduce((arr: unknown[], c) => [...arr, d[c.id]], [])\n .map((d) => this.escapeDelimiterAndLineBreaks(delimiter, d))\n .join(delimiter)\n )\n .join('\\r\\n')\n const headerString = (await firstValueFrom(this.translateColumnNames(columns)))\n .map((c) => c.name)\n .map((c) => this.escapeDelimiterAndLineBreaks(delimiter, c))\n .join(delimiter)\n\n const csvString = headerString + '\\r\\n' + dataString\n\n const blob = new Blob(['\\ufeff' + csvString], {\n type: 'text/csv;charset=utf-8;',\n })\n const dwldLink = document.createElement('a')\n const url = URL.createObjectURL(blob)\n\n dwldLink.setAttribute('href', url)\n\n dwldLink.setAttribute('download', fileName)\n dwldLink.click()\n }\n\n private translateColumnNames(\n columns: { id: string; nameKey: string; columnType: ColumnType }[]\n ): Observable<{ id: string; name: string; columnType: ColumnType }[]> {\n return this.translateService\n .get(columns.map((c) => c.nameKey))\n .pipe(map((translations) => columns.map((c) => ({ ...c, name: translations[c.nameKey] }))))\n }\n\n private formatData(\n columns: { id: string; nameKey: string; columnType: ColumnType }[],\n data: Record<string, unknown>[]\n ): { [columnId: string]: unknown }[] {\n return data.map((d) =>\n columns.reduce((obj, c) => {\n if (c.columnType === ColumnType.DATE || c.columnType === ColumnType.RELATIVE_DATE) {\n return {\n ...obj,\n [c.id]: this.dateUtils.localizedDate(d[c.id] ? String(d[c.id]) : undefined),\n }\n }\n return { ...obj, [c.id]: d[c.id] }\n }, {})\n )\n }\n\n private translateData(\n columns: { id: string; nameKey: string; columnType: ColumnType }[],\n data: Record<string, unknown>[]\n ): Observable<{ [columnId: string]: unknown }[]> {\n let translationKeys: string[] = []\n const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n translatedColumns.forEach((c) => {\n translationKeys = [...translationKeys, ...data.map((i) => i[c.id]?.toString() ?? '')]\n })\n if (translationKeys.length) {\n return this.translateService.get(translationKeys).pipe(\n map((translatedValues: Record<string, string>) => {\n return data.map((d) =>\n columns.reduce(\n (obj, c) => ({\n ...obj,\n [c.id]: c.columnType === ColumnType.TRANSLATION_KEY ? translatedValues[String(d[c.id])] : d[c.id],\n }),\n {}\n )\n )\n })\n )\n }\n return of(data)\n }\n\n private escapeDelimiterAndLineBreaks(delimiter: ';' | ',', data: unknown) {\n if (data === null || data === undefined) {\n return data\n }\n\n let str = String(data)\n\n if (str.includes('\"')) {\n str = str.replaceAll('\"', '\"\"')\n }\n\n if (str.includes(delimiter) || str.includes('\\n') || str.includes('\\r')) {\n str = `\"${str}\"`\n }\n return str\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\n\nconst DIVISIONS: { amount: number; name: Intl.RelativeTimeFormatUnit }[] = [\n { amount: 60, name: 'seconds' },\n { amount: 60, name: 'minutes' },\n { amount: 24, name: 'hours' },\n { amount: 7, name: 'days' },\n { amount: 4.34524, name: 'weeks' },\n { amount: 12, name: 'months' },\n { amount: Number.POSITIVE_INFINITY, name: 'years' },\n]\n\n@Pipe({\n name: 'relativeDate',\n standalone: false,\n})\nexport class RelativeDatePipe implements PipeTransform {\n private readonly translateService = inject(TranslateService)\n\n rtf: Intl.RelativeTimeFormat\n\n constructor() {\n this.rtf = new Intl.RelativeTimeFormat(this.translateService.currentLang, {\n style: 'long',\n })\n }\n\n transform(value: any): any {\n let date: Date = new Date()\n switch (typeof value) {\n case 'string':\n date = new Date(value)\n break\n case 'object':\n date = value\n break\n default:\n break\n }\n\n let duration = (date.getTime() - new Date().getTime()) / 1000\n for (let i = 0; i <= DIVISIONS.length; i++) {\n const division = DIVISIONS[i]\n if (Math.abs(duration) < division.amount) {\n return this.rtf.format(Math.round(duration), division.name)\n }\n duration /= division.amount\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { SelectModule } from 'primeng/select'\nimport { ButtonModule } from 'primeng/button'\nimport { DialogModule } from 'primeng/dialog'\nimport { PickListModule } from 'primeng/picklist'\nimport { SelectButtonModule } from 'primeng/selectbutton'\nimport { DataViewModule } from 'primeng/dataview'\nimport { TableModule } from 'primeng/table'\nimport { MenuModule } from 'primeng/menu'\nimport { ChartModule } from 'primeng/chart'\nimport { MultiSelectModule } from 'primeng/multiselect'\nimport { BreadcrumbModule } from 'primeng/breadcrumb'\nimport { SkeletonModule } from 'primeng/skeleton'\nimport { MessageModule } from 'primeng/message'\nimport { SharedModule } from 'primeng/api'\nimport { CheckboxModule } from 'primeng/checkbox'\nimport { FloatLabelModule } from 'primeng/floatlabel'\nimport { ChipModule } from 'primeng/chip'\nimport { PopoverModule } from 'primeng/popover'\nimport { FocusTrapModule } from 'primeng/focustrap'\nimport { TooltipModule } from 'primeng/tooltip'\nimport { providePrimeNG } from 'primeng/config'\nimport { TimelineModule } from 'primeng/timeline'\n\n@NgModule({\n imports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n SelectModule,\n ButtonModule,\n DialogModule,\n PickListModule,\n SelectButtonModule,\n DataViewModule,\n TableModule,\n MenuModule,\n ChartModule,\n MultiSelectModule,\n SkeletonModule,\n MessageModule,\n FloatLabelModule,\n PopoverModule,\n FocusTrapModule,\n TooltipModule,\n TimelineModule,\n SelectButtonModule,\n SharedModule,\n ],\n exports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n SelectModule,\n ButtonModule,\n DialogModule,\n PickListModule,\n SelectButtonModule,\n DataViewModule,\n TableModule,\n MenuModule,\n ChartModule,\n MultiSelectModule,\n SkeletonModule,\n MessageModule,\n FloatLabelModule,\n PopoverModule,\n FocusTrapModule,\n TooltipModule,\n TimelineModule,\n SelectButtonModule,\n SharedModule,\n ],\n providers: [providePrimeNG()],\n})\nexport class AngularAcceleratorPrimeNgModule {}\n","import { UserService } from '@onecx/angular-integration-interface'\n\n/**\n * @deprecated Use DynamicLocaleId from @onecx/angular-utils instead\n */\nexport class DynamicLocaleId {\n constructor(private userService: UserService) {\n Object.getOwnPropertyNames(String.prototype).forEach((k) => {\n if (k != 'valueOf' && k != 'length') {\n ;(this as any)[k] = function (...args: any[]) {\n const str = this.valueOf()\n return str[k](...args)\n }\n }\n })\n }\n\n valueOf() {\n return this.userService.lang$.getValue()\n }\n\n public get length(): number {\n return this.valueOf().length\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { APP_INITIALIZER, LOCALE_ID, NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { RouterModule } from '@angular/router'\nimport { TranslateModule } from '@ngx-translate/core'\n\nimport { AppConfigService, UserService } from '@onecx/angular-integration-interface'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\n\nimport { firstValueFrom, skip } from 'rxjs'\nimport { AngularAcceleratorPrimeNgModule } from './angular-accelerator-primeng.module'\nimport { ColumnGroupSelectionComponent } from './components/column-group-selection/column-group-selection.component'\nimport { CustomGroupColumnSelectorComponent } from './components/custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponent } from './components/data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponent } from './components/data-list-grid-sorting/data-list-grid-sorting.component'\nimport { DataListGridComponent } from './components/data-list-grid/data-list-grid.component'\nimport { DataTableComponent } from './components/data-table/data-table.component'\nimport { DataViewComponent } from './components/data-view/data-view.component'\nimport { DiagramComponent } from './components/diagram/diagram.component'\nimport { GroupByCountDiagramComponent } from './components/group-by-count-diagram/group-by-count-diagram.component'\nimport { InteractiveDataViewComponent } from './components/interactive-data-view/interactive-data-view.component'\nimport { PageHeaderComponent } from './components/page-header/page-header.component'\nimport { SearchHeaderComponent } from './components/search-header/search-header.component'\nimport { AdvancedDirective } from './directives/advanced.directive'\nimport { IfBreakpointDirective } from './directives/if-breakpoint.directive'\nimport { IfPermissionDirective } from './directives/if-permission.directive'\nimport {\n providePermissionChecker,\n provideTranslationConnectionService,\n provideTranslationPathFromMeta,\n MultiLanguageMissingTranslationHandler,\n} from '@onecx/angular-utils'\nimport { SrcDirective } from './directives/src.directive'\nimport { TooltipOnOverflowDirective } from './directives/tooltipOnOverflow.directive'\nimport { DynamicPipe } from './pipes/dynamic.pipe'\nimport { OcxTimeAgoPipe } from './pipes/ocxtimeago.pipe'\nimport { DynamicLocaleId } from './utils/dynamic-locale-id'\nimport { FilterViewComponent } from './components/filter-view/filter-view.component'\nimport { TemplateDirective } from './directives/template.directive'\nimport { OcxContentComponent } from './components/content/content.component'\nimport { OcxContentContainerComponent } from './components/content-container/content-container.component'\nimport { OcxContentDirective } from './directives/content.directive'\nimport { OcxContentContainerDirective } from './directives/content-container.directive'\nimport { LifecycleComponent } from './components/lifecycle/lifecycle.component'\nimport { DialogMessageContentComponent } from './components/dialog/dialog-message-content/dialog-message-content.component'\nimport { DialogContentComponent } from './components/dialog/dialog-content/dialog-content.component'\nimport { DialogFooterComponent } from './components/dialog/dialog-footer/dialog-footer.component'\nimport { DialogInlineComponent } from './components/dialog/dialog-inline/dialog-inline.component'\nimport { GlobalErrorComponent } from './components/error-component/global-error.component'\nimport { LoadingIndicatorComponent } from './components/loading-indicator/loading-indicator.component'\nimport { BasicDirective } from './directives/basic.directive'\nimport { LoadingIndicatorDirective } from './directives/loading-indicator.directive'\nimport { MessageService } from 'primeng/api'\n\nexport class AngularAcceleratorMissingTranslationHandler extends MultiLanguageMissingTranslationHandler {}\n\nfunction appInitializer(userService: UserService) {\n return async () => {\n await firstValueFrom(userService.lang$.pipe(skip(1)))\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AngularAcceleratorPrimeNgModule,\n AngularRemoteComponentsModule,\n TranslateModule,\n FormsModule,\n RouterModule,\n ReactiveFormsModule,\n ],\n declarations: [\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridSortingComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n LifecycleComponent,\n PageHeaderComponent,\n DynamicPipe,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n OcxContentComponent,\n OcxContentContainerComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\n TemplateDirective,\n OcxContentDirective,\n OcxContentContainerDirective,\n GlobalErrorComponent,\n LoadingIndicatorComponent,\n LoadingIndicatorDirective,\n BasicDirective,\n DialogFooterComponent,\n DialogContentComponent,\n DialogInlineComponent,\n DialogMessageContentComponent,\n ],\n providers: [\n providePermissionChecker(),\n {\n provide: LOCALE_ID,\n useClass: DynamicLocaleId,\n deps: [UserService],\n },\n {\n provide: APP_INITIALIZER,\n useFactory: appInitializer,\n deps: [UserService],\n multi: true,\n },\n provideTranslationPathFromMeta(import.meta.url, 'onecx-angular-accelerator/assets/i18n/'),\n provideTranslationPathFromMeta(import.meta.url, 'onecx-angular-accelerator/assets/i18n/primeng/'),\n {\n provide: MessageService,\n useClass: MessageService,\n },\n AppConfigService,\n provideTranslationConnectionService(),\n ],\n exports: [\n AngularRemoteComponentsModule,\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n LifecycleComponent,\n PageHeaderComponent,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n OcxContentComponent,\n OcxContentContainerComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\n TemplateDirective,\n OcxContentDirective,\n OcxContentContainerDirective,\n GlobalErrorComponent,\n LoadingIndicatorComponent,\n LoadingIndicatorDirective,\n BasicDirective,\n DialogFooterComponent,\n DialogContentComponent,\n DialogInlineComponent,\n DialogMessageContentComponent,\n ],\n})\nexport class AngularAcceleratorModule {}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms'\n\nexport const atLeastOneFieldFilledValidator: ValidatorFn = (form: AbstractControl): ValidationErrors | null => {\n if (Object.values(form.value).every((x) => x === null || x === undefined || x === '')) {\n return { allFieldsEmpty: true }\n }\n return null\n}\n","import { DataTableColumn } from '../model/data-table-column.model'\nimport { Filter, FilterObject } from '../model/filter.model'\nimport { ObjectUtils } from './objectutils'\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport abstract class DataOperationStrategy {\n endsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('endsWith method not implemented')\n return true\n }\n\n startsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('startsWith method not implemented')\n return true\n }\n\n contains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('contains method not implemented')\n return true\n }\n\n notContains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('notContains method not implemented')\n return true\n }\n\n equals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('equals method not implemented')\n return true\n }\n\n notEquals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('notEquals method not implemented')\n return true\n }\n\n lessThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('lessThan method not implemented')\n return true\n }\n\n greaterThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('greaterThan method not implemented')\n return true\n }\n\n lessThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('lessThanOrEqual method not implemented')\n return true\n }\n\n greaterThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n console.error('greaterThanOrEqual method not implemented')\n return true\n }\n\n isEmpty(column: DataTableColumn, value: unknown): boolean {\n console.error('isEmpty method not implemented')\n return true\n }\n\n isNotEmpty(column: DataTableColumn, value: unknown): boolean {\n console.error('isNotEmpty method not implemented')\n return true\n }\n\n compare(a: unknown, b: unknown, column: DataTableColumn): number {\n console.error('compare method not implemented')\n return 0\n }\n\n filterOptions(hayStack: unknown[], filterObject: FilterObject, columns: DataTableColumn[]): unknown[] {\n const hayStackOptions = hayStack.map((item) => this.mapHaystackItemToValue(item, filterObject))\n const column = columns.find((c) => c.id === filterObject.columnId)\n if (!column) {\n console.warn('Filter does not have a column id set. All items will be considered a valid option')\n return hayStackOptions\n }\n return hayStackOptions.filter(\n (item, index, self) => index === self.findIndex((t) => this.compare(t, item, column) === 0)\n )\n }\n\n filter(hayStack: unknown[], filter: Filter, columns: DataTableColumn[]): unknown[] {\n const { filterType, value } = filter\n if (!filterType) {\n console.warn('Filter does not have a type set. All items will resolve as true')\n return hayStack\n }\n const column = columns.find((c) => c.id === filter.columnId)\n if (!column) {\n console.warn('Filter does not have a column id set. All items will be considered a valid option')\n return hayStack\n }\n return hayStack.filter((item) => this[filterType](column, this.mapHaystackItemToValue(item, filter), value))\n }\n\n mapHaystackItemToValue(item: unknown, filter: Filter | FilterObject) {\n return ObjectUtils.resolveFieldData(item, filter.columnId)\n }\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map } from 'rxjs'\n\nexport function enumToDropdownOptions<T extends object>(\n translateService: TranslateService,\n enumType: T,\n translationKeyPrefix: string\n): Observable<{ label: string; value: T }[]> {\n return translateService.get(Object.values(enumType).map((v) => translationKeyPrefix + v)).pipe(\n map((translations) =>\n Object.values(enumType).map((v) => ({\n label: translations[translationKeyPrefix + v],\n value: v,\n }))\n )\n )\n}\n","import { QueryList } from '@angular/core'\nimport { getUTCDateWithoutTimezoneIssues, isValidDate } from '@onecx/accelerator'\nimport { DatePicker } from 'primeng/datepicker'\n\nexport type hasShowTimeFunction = (key: string) => boolean\n/**\n * removeNullValues: whether to remove entries from the search criteria where the value is null\n */\nexport interface BuildSearchCriteriaParameters {\n removeNullValues: boolean\n}\n\nfunction _hasShowTime(datePickers: QueryList<DatePicker>, formKey: string): boolean {\n return (\n datePickers.find((d) => {\n return d.name === formKey\n })?.showTime === true\n )\n}\n\n/**\n * Safely builds the search criteria based on form values\n * @param formRawValue the raw value of the form to use\n * @param datePickers a list of primeng datePickers of the form (use `@ViewChildren(DatePicker) datePickers!: QueryList<DatePicker>;`)\n * @param parameters {@link BuildSearchCriteriaParameters} to use when building the search criteria\n * @returns the search criteria as a partial of T (T = type of the search criteria)\n */\nexport function buildSearchCriteria<T>(\n formRawValue: any,\n datePickers: QueryList<DatePicker>,\n { removeNullValues = false }: BuildSearchCriteriaParameters\n) {\n return Object.entries(formRawValue).reduce((acc: Partial<T>, [key, value]) => {\n if (value == null && removeNullValues) {\n return acc\n }\n if (isValidDate(value) && !_hasShowTime(datePickers, key)) {\n value = getUTCDateWithoutTimezoneIssues(value)\n }\n return {\n ...acc,\n [key]: value,\n }\n }, {})\n}\n","export function findEntryWithKeyword(\n array: string[] | undefined,\n keyword: string,\n): string | null {\n const entry = array?.find((entry) => entry.includes(keyword));\n return entry || null;\n}\n\nexport function removeKeyword(input: string, keyword: string): string {\n let result = input.replace(new RegExp(`/${keyword}.*`), '');\n if (result.endsWith('/')) {\n result = result.slice(0, -1);\n }\n return result;\n}\n\nexport function searchPrefixWithSpecialChars(\n strings: string[],\n prefix: string,\n): string | null {\n for (let i = strings.length - 1; i >= 0; i--) {\n const str = strings[i];\n if (\n str.startsWith(prefix) &&\n (str[prefix.length] === '?' || str[prefix.length] === '#')\n ) {\n return str;\n }\n }\n return null;\n}\n","export class ImageLogoUrlUtils {\n public static createLogoUrl(apiPrefix: string, url?: string): string | undefined {\n //if the url is from the backend, then we insert the apiPrefix\n if ((url && !url.match(/^(http|https)/g)) ) {\n return apiPrefix + url\n } else {\n return url\n }\n }\n}","// injection tokens + related utilities\n\n// directives\nexport * from './lib/directives/content-container.directive'\nexport * from './lib/directives/content.directive'\nexport * from './lib/directives/if-permission.directive'\nexport * from './lib/directives/if-breakpoint.directive'\nexport * from './lib/directives/src.directive'\nexport * from './lib/directives/advanced.directive'\nexport * from './lib/directives/tooltipOnOverflow.directive'\nexport * from './lib/directives/template.directive'\nexport * from './lib/directives/basic.directive'\nexport * from './lib/directives/loading-indicator.directive'\n\n// components\nexport * from './lib/components/column-group-selection/column-group-selection.component'\nexport * from './lib/components/content/content.component'\nexport * from './lib/components/content-container/content-container.component'\nexport * from './lib/components/custom-group-column-selector/custom-group-column-selector.component'\nexport * from './lib/components/data-layout-selection/data-layout-selection.component'\nexport * from './lib/components/data-list-grid/data-list-grid.component'\nexport * from './lib/components/data-list-grid-sorting/data-list-grid-sorting.component'\nexport * from './lib/components/data-table/data-table.component'\nexport * from './lib/components/data-view/data-view.component'\nexport * from './lib/components/diagram/diagram.component'\nexport * from './lib/components/filter-view/filter-view.component'\nexport * from './lib/components/group-by-count-diagram/group-by-count-diagram.component'\nexport * from './lib/components/interactive-data-view/interactive-data-view.component'\nexport * from './lib/components/lifecycle/lifecycle.component'\nexport * from './lib/components/page-header/page-header.component'\nexport * from './lib/components/search-header/search-header.component'\nexport * from './lib/components/dialog/dialog-message-content/dialog-message-content.component'\nexport * from './lib/components/loading-indicator/loading-indicator.component'\nexport * from './lib/components/dialog/dialog-content/dialog-content.component'\nexport * from './lib/components/dialog/dialog-inline/dialog-inline.component'\nexport * from './lib/components/dialog/dialog-footer/dialog-footer.component'\nexport * from './lib/components/error-component/global-error.component'\n\n// services\nexport * from './lib/services/breadcrumb.service'\nexport * from './lib/services/portal-dialog.service'\nexport * from './lib/services/export-data.service'\n\n// pipes\nexport * from './lib/pipes/dynamic.pipe'\nexport * from './lib/pipes/ocxtimeago.pipe'\nexport * from './lib/pipes/relative-date.pipe'\n\n// models\nexport * from './lib/model/breadcrumb-menu-item.model'\nexport * from './lib/model/column-type.model'\nexport * from './lib/model/data-action'\nexport * from './lib/model/button-dialog'\nexport * from './lib/model/translation.model'\n\n// export * from './lib/model/data-column-name-id.model'\nexport * from './lib/model/data-sort-direction'\nexport * from './lib/model/data-table-column.model'\nexport * from './lib/model/diagram-column'\n// export * from './lib/model/diagram-data'\nexport * from './lib/model/diagram-type'\nexport * from './lib/model/filter.model'\n\n// core\nexport * from './lib/angular-accelerator.module'\nexport * from './lib/angular-accelerator-primeng.module'\n\n// functions\nexport * from './lib/functions/flatten-object'\nexport * from './lib/functions/at-least-one-field-filled-validator'\n\n// utils\nexport * from './lib/utils/colorutils'\nexport * from './lib/utils/data-operation-strategy'\nexport * from './lib/utils/dateutils'\nexport * from './lib/utils/objectutils'\nexport * from './lib/utils/primeicon.utils'\nexport * from './lib/utils/enum-to-dropdown-options.utils'\nexport * from './lib/utils/criteria.utils'\nexport * from './lib/utils/string-and-array-helper-functions.utils'\nexport * from './lib/utils/template.utils'\nexport * from './lib/utils/filter.utils'\nexport * from './lib/utils/image-logo-url.utils'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i6","i7.SrcDirective","i9.DynamicPipe","i2","i4","i5","i6.PageHeaderComponent","i7.IfPermissionDirective","i1","i2.OcxContentDirective","i2.OcxContentContainerDirective","i7","i8","i9.IfPermissionDirective","i10.TooltipOnOverflowDirective","i11","i12.OcxTimeAgoPipe","i9","i10","i11.IfPermissionDirective","i12","i13.OcxTimeAgoPipe","i2.DataListGridComponent","i3.DataTableComponent","i8.DataTableComponent","i9.IfBreakpointDirective","i11.OcxTimeAgoPipe","i1.DiagramComponent","i4.ColumnGroupSelectionComponent","i5.CustomGroupColumnSelectorComponent","i6.DataLayoutSelectionComponent","i7.DataListGridSortingComponent","i8.DataViewComponent","i10.FilterViewComponent","i1.DialogFooterComponent","i2.DialogContentComponent"],"mappings":"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"}