@onecx/angular-accelerator 8.0.0-rc.8 → 8.0.0-rc.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -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/utils/logger.utils.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/utils/observable-output.utils.ts","../../../../libs/angular-accelerator/src/lib/directives/ocx-tooltip.directive.ts","../../../../libs/angular-accelerator/src/lib/services/breadcrumb.service.ts","../../../../libs/angular-accelerator/src/lib/utils/action-router.utils.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/consent/consent.component.ts","../../../../libs/angular-accelerator/src/lib/components/consent/consent.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/version.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, OnInit, effect, inject, input } from '@angular/core'\n\n@Directive({ selector: '[ocxContentContainer]', standalone: false })\nexport class OcxContentContainerDirective implements OnInit {\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 layout = input<'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 breakpoint = input<'sm' | 'md' | 'lg' | 'xl'>('md')\n\n /**\n * Optionally allows specifying styles for the container\n */\n ngClass = input<string | undefined>(undefined)\n\n ngOnInit() {\n this.el.nativeElement.classList.add('flex', 'gap-3', 'flex-column', 'md:flex-row')\n this.addContainerStyles()\n }\n\n constructor() {\n effect(() => {\n // Read signals to establish dependencies\n this.layout()\n this.breakpoint()\n this.ngClass()\n this.addContainerStyles()\n })\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}\n","import { Directive, ElementRef, OnInit, effect, inject, input, signal } from '@angular/core'\n\n@Directive({ selector: '[ocxContent]', standalone: false })\nexport class OcxContentDirective implements OnInit {\n private readonly 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 ocxContent = input<string>('')\n\n private readonly baseId = signal<string>('ocx_content_title_element')\n private readonly titleElementId = signal<string | undefined>(undefined)\n\n constructor() {\n effect(() => {\n this.init()\n })\n }\n\n ngOnInit() {\n this.titleElementId.set(this.getUniqueTitleID(this.baseId()))\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 const titleElementId = this.titleElementId()\n if (titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${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 = 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 const titleElementId = this.titleElementId()\n if (titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${titleElementId}`)\n if (titleElement) {\n titleElement.remove()\n }\n }\n }\n}\n","// This file is not planned to be in the index.ts so it is private to this lib\nimport { createLoggerFactory } from '@onecx/accelerator'\n\nexport const createLogger = createLoggerFactory('@onecx/angular-accelerator')\n","import {\n Directive,\n EmbeddedViewRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n computed,\n DestroyRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\nimport { from, Observable, of, switchMap } from 'rxjs'\nimport { createLogger } from '../utils/logger.utils'\nimport { OnMissingPermission, PermissionInput } from '../model/permission.model'\n\n@Directive({ selector: '[ocxIfPermission], [ocxIfNotPermission]', standalone: false })\nexport class IfPermissionDirective {\n private readonly logger = createLogger('IfPermissionDirective')\n private readonly renderer = inject(Renderer2)\n private readonly viewContainer = inject(ViewContainerRef)\n private readonly hasPermissionChecker = inject<HasPermissionChecker>(HAS_PERMISSION_CHECKER, { optional: true })\n private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private readonly userService = inject(UserService, { optional: true })\n private readonly destroyRef = inject(DestroyRef)\n\n ocxIfPermission = input<PermissionInput>(undefined)\n ocxIfNotPermission = input<PermissionInput>(undefined)\n\n ocxIfPermissionOnMissingPermission = input<OnMissingPermission>('hide')\n ocxIfNotPermissionOnMissingPermission = input<OnMissingPermission>('hide')\n\n ocxIfPermissionPermissions = input<string[] | undefined>(undefined)\n ocxIfNotPermissionPermissions = input<string[] | undefined>(undefined)\n\n ocxIfPermissionElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n ocxIfNotPermissionElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n\n private readonly permissionChecker = computed<HasPermissionChecker | undefined>(() => {\n return this.hasPermissionChecker ?? this.userService ?? undefined\n })\n private readonly isDisabled = signal<boolean>(false)\n private readonly directiveContentRef = signal<EmbeddedViewRef<any> | undefined>(undefined)\n\n private readonly permissionValidation = computed(() => {\n const positive = this.ocxIfPermission()\n const negative = this.ocxIfNotPermission()\n const negate = negative !== undefined\n\n const raw = negate ? negative : positive\n const permissions = this.normalizePermissions(raw)\n return {\n permissions,\n negate,\n onMissing: negate ? this.ocxIfNotPermissionOnMissingPermission() : this.ocxIfPermissionOnMissingPermission(),\n elseTemplate: negate ? this.ocxIfNotPermissionElseTemplate() : this.ocxIfPermissionElseTemplate(),\n overridePermissions: negate ? this.ocxIfNotPermissionPermissions() : this.ocxIfPermissionPermissions(),\n }\n })\n\n private normalizePermissions(raw: string | string[] | undefined): string[] {\n if (raw === undefined) {\n return []\n }\n if (Array.isArray(raw)) {\n return raw\n }\n return [raw]\n }\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 toObservable(this.permissionValidation)\n .pipe(\n switchMap((req) => {\n if (!req.permissions.length) {\n return of({ shouldShow: false, req })\n }\n return this.hasPermission(req.permissions, req.overridePermissions).pipe(\n switchMap((has) => of({ shouldShow: req.negate ? !has : has, req }))\n )\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(({ shouldShow, req }) => {\n if (shouldShow) {\n return this.showTemplateOrClear()\n }\n return this.showElseTemplateOrDefaultView(req.elseTemplate, req.onMissing)\n })\n }\n\n private hasPermission(permission: string[], overridePermissions?: string[]): Observable<boolean> {\n if (overridePermissions) {\n const result = permission.every((p) => overridePermissions?.includes(p))\n if (!result) {\n this.logger.debug('No permission in overwrites for:', permission)\n }\n return of(result)\n }\n\n const permissionChecker = this.permissionChecker()\n\n if (permissionChecker?.getPermissions) {\n return permissionChecker.getPermissions().pipe(\n switchMap((permissions) => {\n const result = permission.every((p) => permissions.includes(p))\n if (!result) {\n this.logger.debug('No permission from permission checker for:', permission)\n }\n return of(result)\n })\n )\n }\n\n if (permissionChecker?.hasPermission) {\n return from(permissionChecker.hasPermission(permission))\n }\n\n return of(false)\n }\n\n private showTemplateOrClear() {\n this.resetView()\n\n if (this.templateRef) {\n this.directiveContentRef.set(this.viewContainer.createEmbeddedView(this.templateRef))\n }\n }\n\n private showElseTemplateOrDefaultView(elseTemplate?: TemplateRef<any>, onMissing: 'hide' | 'disable' = 'hide') {\n this.resetView()\n\n if (elseTemplate) {\n this.viewContainer.createEmbeddedView(elseTemplate)\n return\n }\n\n if (onMissing === 'disable' && this.templateRef) {\n this.directiveContentRef.set(this.viewContainer.createEmbeddedView(this.templateRef))\n\n const el = this.getElement()\n if (el) {\n this.renderer.setAttribute(el as any, 'disabled', 'disabled')\n }\n this.isDisabled.set(true)\n }\n }\n\n private resetView() {\n this.viewContainer.clear()\n if (this.isDisabled()) {\n this.isDisabled.set(false)\n const el = this.getElement()\n if (el) {\n this.renderer.removeAttribute(el as any, 'disabled')\n }\n }\n }\n\n private getElement(): Node | undefined {\n return this.directiveContentRef()?.rootNodes?.[0]\n }\n}\n","import { Directive, HostListener, OnInit, TemplateRef, ViewContainerRef, inject, input, signal } from '@angular/core'\n\n@Directive({ selector: '[ocxIfBreakpoint]', standalone: false })\nexport class IfBreakpointDirective implements OnInit {\n private readonly viewContainer = inject(ViewContainerRef)\n private readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef, { optional: true })\n\n breakpoint = input<'mobile' | 'desktop' | undefined>(undefined, { alias: 'ocxIfBreakpoint' })\n\n ocxIfBreakpointElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n\n state = signal<'mobile' | 'desktop' | undefined>(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\n const breakpoint = this.breakpoint()\n const elseTemplate = this.ocxIfBreakpointElseTemplate()\n\n if ((breakpoint === 'mobile' && isMobile) || (breakpoint === 'desktop' && isDesktop)) {\n if (this.templateRef && newState !== this.state()) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else if (elseTemplate && newState !== this.state()) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(elseTemplate)\n }\n\n this.state.set(newState)\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http'\nimport { Directive, ElementRef, EventEmitter, Output, effect, inject, input } from '@angular/core'\nimport { take } from 'rxjs'\nimport { createLogger } from '../utils/logger.utils'\n\n@Directive({ selector: '[ocxSrc]', standalone: false })\nexport class SrcDirective {\n private readonly logger = createLogger('SrcDirective')\n private readonly el = inject(ElementRef)\n private readonly httpClient = inject(HttpClient)\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() error = new EventEmitter<void>()\n\n ocxSrc = input<string | undefined>(undefined)\n\n constructor() {\n effect(() => {\n const src = this.ocxSrc()\n if (src && globalThis.location.hostname) {\n try {\n if (new URL(src, globalThis.location.origin).hostname === globalThis.location.hostname) {\n this.httpClient\n .get(src, { observe: 'response', responseType: 'blob' })\n .pipe(take(1))\n .subscribe({\n next: (response: HttpResponse<Blob>) => {\n // ok with content\n if (response?.status === 200) {\n const url = URL.createObjectURL(response.body as Blob)\n const onLoad = () => {\n URL.revokeObjectURL(url)\n this.el.nativeElement.removeEventListener('load', onLoad)\n }\n this.el.nativeElement.addEventListener('load', onLoad)\n this.el.nativeElement.src = url\n }\n // no content\n if (response?.status === 204) {\n this.error.emit()\n }\n },\n error: () => {\n // on error\n this.error.emit()\n },\n complete: () => {\n // on complete\n this.el.nativeElement.style.visibility = 'initial'\n },\n })\n } else {\n this.el.nativeElement.src = src\n this.el.nativeElement.style.visibility = 'initial'\n }\n } catch (error) {\n this.logger.error('Cannot parse URL', src, error)\n this.el.nativeElement.src = src\n this.el.nativeElement.style.visibility = 'initial'\n }\n }\n })\n this.el.nativeElement.style.visibility = 'hidden'\n }\n}\n","import { assertInInjectionContext, OutputEmitterRef, Signal, signal } from '@angular/core'\n\nclass ListenerArray {\n private readonly _listeners: Array<(...args: any[]) => void> = []\n observed = signal<boolean>(false)\n\n indexOf(listener: (...args: any[]) => void): number {\n return this._listeners.indexOf(listener)\n }\n\n splice(start: number, deleteCount: number): void {\n this._listeners.splice(start, deleteCount)\n this.observed.set(this._listeners.length > 0)\n }\n\n push(listener: (...args: any[]) => void): number {\n const pushResult = this._listeners.push(listener)\n this.observed.set(this._listeners.length > 0)\n return pushResult\n }\n\n [Symbol.iterator]() {\n return this._listeners[Symbol.iterator]()\n }\n}\n\nexport class ObservableOutputEmitterRef<T> extends OutputEmitterRef<T> {\n observed: Signal<boolean>\n\n constructor() {\n super()\n ;(this as any).listeners = new ListenerArray()\n this.observed = (this as any).listeners.observed\n }\n}\n\nexport function observableOutput<T>(): ObservableOutputEmitterRef<T> {\n if (ngDevMode) {\n assertInInjectionContext(observableOutput)\n }\n return new ObservableOutputEmitterRef<T>()\n}\n","import { Directive, AfterViewInit, OnChanges, inject, Renderer2, TemplateRef, NgZone, ViewContainerRef, SimpleChanges, input, effect } from \"@angular/core\"\nimport { Tooltip, TooltipStyle } from \"primeng/tooltip\"\n\n@Directive({ selector: '[ocxTooltip]', providers: [TooltipStyle], standalone: true })\nexport class OcxTooltipDirective extends Tooltip implements AfterViewInit, OnChanges {\n override readonly renderer = inject(Renderer2)\n readonly ocxTooltip = input<string | TemplateRef<HTMLElement> | undefined>(undefined)\n\n private generatedId: string | undefined\n private resolvedId: string | undefined\n private removeEscapeKeyListener: (() => void) | undefined\n \n constructor() {\n const zone = inject(NgZone)\n const viewContainer = inject(ViewContainerRef)\n super(zone, viewContainer)\n this.tooltipEvent = 'both'\n effect(() => {\n const value = this.ocxTooltip()\n this.content = value\n this.setOption({ tooltipLabel: value })\n this.ensureIdAndAriaDescribedBy()\n })\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit()\n this.ensureIdAndAriaDescribedBy()\n }\n\n override ngOnChanges(simpleChange: SimpleChanges): void {\n super.ngOnChanges(simpleChange)\n this.ensureIdAndAriaDescribedBy()\n }\n\n override create(): void {\n super.create()\n this.applyIdToContainer()\n this.setEscapeKeyListener()\n }\n\n override show(): void {\n super.show()\n }\n\n private ensureIdAndAriaDescribedBy(): void {\n const idFromOptions = this.tooltipOptions?.id\n const idFromInternal = this._tooltipOptions?.id\n const resolvedId = this.normalizeId(idFromOptions) ?? this.normalizeId(idFromInternal) ?? this.getOrCreateGeneratedId()\n this.resolvedId = resolvedId\n if (this.tooltipOptions) {\n const tooltipOptions = this.tooltipOptions\n if (!this.normalizeId(tooltipOptions.id)) {\n tooltipOptions.id = resolvedId\n }\n }\n\n this.setOption({ id: resolvedId, tooltipEvent: 'both' })\n this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', resolvedId)\n }\n\n private normalizeId(id: string | undefined | null): string | null {\n if (!id) return null\n const trimmed = String(id).trim()\n return trimmed.length ? trimmed : null\n }\n\n private applyIdToContainer(): void {\n if (!this.isTooltipCreated() || !this.resolvedId) return\n this.renderer.setAttribute(this.container, 'id', this.resolvedId)\n }\n\n private isTooltipCreated(): boolean {\n return this.container !== null && this.container !== undefined\n }\n\n private getOrCreateGeneratedId(): string {\n if (this.generatedId) return this.generatedId\n const randomPart = this.getRandomPart()\n const timePart = Date.now().toString(36)\n this.generatedId = `ocx-tooltip-${timePart}-${randomPart}`\n return this.generatedId\n }\n\n private getRandomPart(): string {\n const buffer = new Uint32Array(2)\n globalThis.crypto.getRandomValues(buffer)\n return Array.from(buffer, (value) => value.toString(36)).join('')\n }\n\n private setEscapeKeyListener(): void {\n if (!this.container || this.removeEscapeKeyListener) return\n this.removeEscapeKeyListener = this.renderer.listen(this.container, 'keydown', (event: KeyboardEvent) => {\n if (!(event.key === 'Escape' || event.key === 'Esc')) return\n this.hide()\n })\n }\n\n override ngOnDestroy(): void {\n if (this.removeEscapeKeyListener) {\n this.removeEscapeKeyListener()\n this.removeEscapeKeyListener = undefined\n }\n super.ngOnDestroy()\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 { Router } from '@angular/router'\nimport { DataAction, RouterLink } from '../model/data-action'\nimport { Action } from '../components/page-header/page-header.component'\n\n/**\n * Resolves a router link to a string, handling string, function, and Promise types\n */\nexport async function resolveRouterLink(routerLink: RouterLink): Promise<string> {\n if (typeof routerLink === 'string') {\n return routerLink\n } else if (typeof routerLink === 'function') {\n const result = routerLink()\n return typeof result === 'string' ? result : await result\n } else {\n return await routerLink\n }\n}\n\n/**\n * Base action handler that can be used directly or extended by components\n */\nexport async function handleAction(router: Router, action: Action | DataAction, data?: any): Promise<void> {\n if (action.routerLink) {\n const resolvedLink = await resolveRouterLink(action.routerLink)\n await router.navigate([resolvedLink])\n } else if ('callback' in action && typeof action.callback === 'function') {\n action.callback(data)\n } else if ('actionCallback' in action && typeof action.actionCallback === 'function') {\n action.actionCallback()\n }\n}\n\n/**\n * Synchronous wrapper for use in template event handlers where Promise return is not expected\n */\nexport function handleActionSync(router: Router, action: Action | DataAction, data?: any): void {\n void handleAction(router, action, data)\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 AfterViewInit,\n Component,\n ElementRef,\n OnInit,\n Renderer2,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n computed,\n contentChild,\n inject,\n input,\n model,\n output,\n signal,\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 { Observable, concat, map, of, switchMap, tap } 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'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { Router } from '@angular/router'\nimport { RouterLink } from '../../model/data-action'\nimport { handleAction, handleActionSync } from '../../utils/action-router.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 routerLink?: RouterLink\n loading?: boolean\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 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 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, AfterViewInit {\n private readonly translateService = inject(TranslateService)\n private readonly appStateService = inject(AppStateService)\n private readonly userService = inject(UserService)\n private readonly router = inject(Router)\n private readonly renderer = inject(Renderer2)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n protected readonly breadcrumbs = inject(BreadcrumbService)\n private breadcrumbRef?: ElementRef<HTMLElement>\n @ViewChild('breadcrumbRef', { read: ElementRef })\n set breadcrumbElementRef(ref: ElementRef<HTMLElement> | undefined) {\n this.breadcrumbRef = ref\n this.applyBreadcrumbAriaLabels()\n }\n\n header = input<string | undefined>(undefined)\n\n loading = input<boolean>(false)\n\n figureBackground = input<boolean>(true)\n\n showFigure = input<boolean>(true)\n\n // image for preview in top-header left side\n figureImage = input<string | undefined>(undefined)\n\n disableDefaultActions = input<boolean>(false)\n\n subheader = input<string | undefined>(undefined)\n\n actions = model<Action[]>([])\n\n objectDetails = input<ObjectDetailItem[] | undefined>(undefined)\n\n showBreadcrumbs = input<boolean>(true)\n\n manualBreadcrumbs = input<boolean>(false)\n\n enableGridView = input<boolean | undefined>(undefined)\n\n gridLayoutDesktopColumns = input<GridColumnOptions | undefined>(undefined)\n\n save = output<void>()\n\n _additionalToolbarContent = contentChild<TemplateRef<any> | undefined>('additionalToolbarContent')\n\n _additionalToolbarContentLeft = contentChild<TemplateRef<any> | undefined>('additionalToolbarContentLeft')\n\n overflowActions$: Observable<MenuItem[]> = toObservable(this.actions).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 inlineActions$: Observable<Action[]> = toObservable(this.actions).pipe(\n map(this.filterInlineActions),\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions))\n )\n breadcrumbs$!: Observable<MenuItem[]>\n\n home$!: Observable<HomeItem>\n\n figureImageLoadError = signal<boolean>(false)\n\n objectPanelGridLayoutClasses = signal<string>('grid row-gap-2 m-0')\n objectPanelColumnLayoutClasses = signal<string>('flex flex-row justify-content-between overflow-x-auto')\n objectPanelDefaultLayoutClasses = signal<string>('flex flex-column row-gap-2 md:flex-row md:justify-content-between')\n objectPanelLayoutClasses = computed(() => {\n const enableGrid = this.enableGridView()\n if (enableGrid) {\n return this.objectPanelGridLayoutClasses()\n }\n if (enableGrid === false) {\n return this.objectPanelColumnLayoutClasses()\n }\n return this.objectPanelDefaultLayoutClasses()\n })\n\n objectInfoGridLayoutClasses = signal<string>('col-12 flex gap-4 md:col-6 align-items-center p-0')\n objectInfoColumnLayoutClasses = signal<string>('flex flex-column align-items-center gap-2 min-w-120')\n objectInfoDefaultLayoutClasses = signal<string>('flex flex-row md:flex-column md:align-items-center md:gap-2')\n objectInfoLayoutClasses = computed(() => {\n const enableGridView = this.enableGridView()\n if (enableGridView) {\n return `${this.objectInfoGridLayoutClasses()} lg:col-${\n this.gridLayoutDesktopColumns() ? 12 / this.gridLayoutDesktopColumns()! : 4\n }`\n }\n if (enableGridView === false) {\n return this.objectInfoColumnLayoutClasses()\n }\n return this.objectInfoDefaultLayoutClasses()\n })\n\n constructor() {\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 }\n\n ngOnInit(): void {\n if (this.manualBreadcrumbs()) {\n this.breadcrumbs$ = this.breadcrumbs.itemsHandler.pipe(\n tap(() => {\n setTimeout(() => this.applyBreadcrumbAriaLabels(), 0)\n })\n )\n } else {\n this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource.pipe(\n tap(() => {\n setTimeout(() => this.applyBreadcrumbAriaLabels(), 0)\n })\n )\n }\n }\n\n ngAfterViewInit() {\n this.applyBreadcrumbAriaLabels()\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.set(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 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: () => handleActionSync(this.router, a),\n disabled: a.disabled,\n }))\n }\n\n async onActionClick(action: Action): Promise<void> {\n await handleAction(this.router, action)\n }\n\n private applyBreadcrumbAriaLabels(): void {\n const breadcrumbHost = this.breadcrumbRef?.nativeElement\n if (!breadcrumbHost) {\n return\n }\n\n const breadcrumbItems = breadcrumbHost.querySelectorAll(`.p-breadcrumb-item .p-breadcrumb-item-link`)\n breadcrumbItems.forEach((item: Element, index: number) => {\n const text = (item as HTMLElement).innerText.trim()\n if (!text) return\n \n this.translateService.get('OCX_PAGE_HEADER.BREADCRUMB_ARIA_LABEL', { breadcrumb: text }).subscribe((ariaLabel) => {\n this.renderer.setAttribute(item, 'aria-label', ariaLabel)\n })\n \n if (index === breadcrumbItems.length - 1) {\n this.renderer.setAttribute(item, 'aria-current', 'page')\n }\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 #breadcrumbRef\n id=\"pageHeaderBreadcrumb\"\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\n [ocxSrc]=\"figureImage()\"\n alt=\"Figure Image\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\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 [ocxTooltip]=\"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)=\"onActionClick(action)\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [loading]=\"action.loading ?? 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 [ocxTooltip]=\"'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\" class=\"mr-2\"></p-skeleton>\n <p-skeleton shape=\"circle\" size=\"2rem\" class=\"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]=\"objectPanelLayoutClasses()\">\n @if (objectDetails()) { @for (item of objectDetails(); track item) {\n <div class=\"object-info\" [ngClass]=\"objectInfoLayoutClasses()\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [ocxTooltip]=\"item.labelTooltipKey ? ((typeof item.labelTooltipKey === 'string' ? item.labelTooltipKey : item.labelTooltipKey.key) | translate : (typeof item.labelTooltipKey === 'object' ? item.labelTooltipKey.parameters : undefined)) : ''\"\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 [ocxTooltip]=\"item.valueTooltipKey ? ((typeof item.valueTooltipKey === 'string' ? item.valueTooltipKey : item.valueTooltipKey.key) | translate : (typeof item.valueTooltipKey === 'object' ? item.valueTooltipKey.parameters : undefined)) : ''\"\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 ? ((typeof item.actionItemAriaLabelKey === 'string' ? item.actionItemAriaLabelKey : item.actionItemAriaLabelKey.key) | translate : (typeof item.actionItemAriaLabelKey === 'object' ? item.actionItemAriaLabelKey.parameters : undefined)) : 'button for ' + item.actionItemIcon\"\n [ocxTooltip]=\"item.actionItemTooltipKey ? ((typeof item.actionItemTooltipKey === 'string' ? item.actionItemTooltipKey : item.actionItemTooltipKey.key) | translate : (typeof item.actionItemTooltipKey === 'object' ? item.actionItemTooltipKey.parameters : undefined)) : ''\"\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 Component,\n ElementRef,\n EventEmitter,\n Output,\n Signal,\n TemplateRef,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { FormControlName, FormGroup } from '@angular/forms'\nimport { Observable, combineLatest, debounceTime, filter, firstValueFrom, from, map, mergeMap, 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'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { PermissionInput } from '../../model/permission.model'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { TranslateService } from '@ngx-translate/core'\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 {\n private readonly translate = inject(TranslateService)\n private readonly liveAnnouncer = inject(LiveAnnouncer)\n header = input<string>('')\n subheader = input<string | undefined>(undefined)\n\n loading = input<boolean>(false)\n \n viewMode = model<'basic' | 'advanced'>('basic')\n\n manualBreadcrumbs = input<boolean>(false)\n\n actions = input<Action[]>([])\n searchResultsCount = input<number | null>(null)\n\n searchConfigPermission = input<PermissionInput>(undefined)\n searchButtonDisabled = input<boolean>(false)\n resetButtonDisabled = input<boolean>(false)\n pageName = input<string | undefined>(getLocation().applicationPath)\n\n searched = output<void>()\n @Output() resetted = observableOutput<void>()\n\n @Output() selectedSearchConfigChanged = observableOutput<SearchConfigData | undefined>()\n viewModeChanged = output<'basic' | 'advanced'>()\n componentStateChanged = output<SearchHeaderComponentState>()\n _additionalToolbarContent = contentChild<TemplateRef<any>>('additionalToolbarContent')\n\n _additionalToolbarContentLeft = contentChild<TemplateRef<any>>('additionalToolbarContentLeft')\n\n get searchConfigChangeObserved(): Signal<boolean> {\n return this.selectedSearchConfigChanged.observed\n }\n\n formGroup = contentChild<FormGroup | undefined>(FormGroup)\n visibleFormControls = contentChildren<FormControlName>(FormControlName, { descendants: true })\n\n searchParameterFields = viewChild<ElementRef | undefined>('searchParameterFields')\n\n hasAdvanced = signal<boolean>(false)\n\n simpleAdvancedAction = signal<Action>({\n id: 'simpleAdvancedButton',\n actionCallback: () => this.toggleViewMode(),\n show: 'always',\n })\n\n headerActions = signal<Action[]>([])\n\n searchButtonsReversed$: Observable<boolean | null> = of(null)\n fieldValues$: Observable<{ [key: string]: unknown }> | undefined = combineLatest([\n toObservable(this.formGroup).pipe(\n filter((fg) => !!fg),\n mergeMap((fg) => fg.valueChanges.pipe(startWith({})))\n ),\n toObservable(this.visibleFormControls).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 searchConfigChangedSlotEmitter: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n\n constructor() {\n effect(() => {\n const viewMode = this.viewMode()\n this.viewModeChanged?.emit(viewMode)\n this.componentStateChanged.emit({\n activeViewMode: viewMode,\n })\n this.updateHeaderActions()\n setTimeout(() => this.addKeyUpEventListener())\n })\n\n this.announceSearchResults() \n\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 toggleViewMode() {\n this.viewMode.update((current) => (current === '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\n if (this.hasAdvanced()) {\n const simpleAdvancedAction = this.simpleAdvancedAction()\n simpleAdvancedAction.labelKey =\n this.viewMode() === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT'\n simpleAdvancedAction.titleKey =\n this.viewMode() === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL'\n\n headerActions.push(simpleAdvancedAction)\n }\n\n this.headerActions.set(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 private announceSearchResults() {\n effect(() => {\n let announmentKey = ''\n if (this.loading()) {\n announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.SEARCHING'\n } else if (!this.loading() && !this.searchResultsCount()) {\n announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.NO_RESULTS'\n } else {\n announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.RESULTS_FOUND'\n }\n \n firstValueFrom(\n this.translate.get(announmentKey, { count: !this.loading() && this.searchResultsCount() ? this.searchResultsCount() : null })\n ).then((translatedText: string) => {\n this.liveAnnouncer.announce(translatedText, 'polite')\n });\n\n });\n }\n}\n","<ng-template #searchBtn>\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n (keydown.enter)=\"onSearchClicked()\"\n (keydown.space)=\"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 [ocxTooltip]=\"'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 (keydown.enter)=\"onResetClicked()\"\n (keydown.space)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled()\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [ocxTooltip]=\"'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]=\"'OCX_SEARCH_HEADER.CONTROLS.ARIA_LABEL' | translate\"\n >\n @let searchButtonsReversed = (searchButtonsReversed$ | async);\n @if (searchButtonsReversed !== null) {\n @if (searchButtonsReversed) {\n <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n @if (resetted.observed()) {\n <ng-container [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n }\n } @else {\n @if (resetted.observed()) {\n <ng-container [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n }\n }\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 readonly viewContainer = inject(ViewContainerRef)\n private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private readonly searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw new Error('Advanced directive can only be used inside search header component')\n }\n searchHeader.hasAdvanced.set(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 OnDestroy,\n Renderer2,\n TemplateRef,\n inject,\n} from '@angular/core'\nimport { TooltipStyle } from 'primeng/tooltip'\nimport { OcxTooltipDirective } from './ocx-tooltip.directive'\n\n@Directive({ selector: '[ocxTooltipOnOverflow]', standalone: false, providers: [TooltipStyle] })\nexport class TooltipOnOverflowDirective extends OcxTooltipDirective 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 renderer = inject(Renderer2)\n\n super()\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, TemplateRef, inject, input } from '@angular/core'\n\n@Directive({ selector: '[ocxTemplate]', standalone: false })\nexport class TemplateDirective {\n template = inject<TemplateRef<any>>(TemplateRef)\n\n ocxTemplate = input.required<string>()\n\n getType(): string {\n return this.ocxTemplate()\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 readonly viewContainer = inject(ViewContainerRef)\n private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private readonly searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw new Error('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 { ComponentRef, Directive, ElementRef, Renderer2, ViewContainerRef, effect, inject, input } from '@angular/core'\nimport { LoadingIndicatorComponent } from '../components/loading-indicator/loading-indicator.component'\n\n@Directive({\n selector: '[ocxLoadingIndicator]',\n standalone: false,\n})\nexport class LoadingIndicatorDirective {\n private readonly viewContainerRef = inject(ViewContainerRef)\n private readonly el = inject(ElementRef)\n private readonly renderer = inject(Renderer2)\n\n ocxLoadingIndicator = input<boolean>(false)\n overlayFullPage = input<boolean>(false)\n isLoaderSmall = input<boolean>(false)\n\n private componentRef: ComponentRef<LoadingIndicatorComponent> | undefined\n private loaderElement: HTMLDivElement | undefined\n\n constructor() {\n effect(() => {\n this.toggleLoadingIndicator()\n })\n }\n\n private elementLoader() {\n this.renderer.addClass(this.el.nativeElement, 'element-overlay')\n this.loaderElement = document.createElement('div')\n this.loaderElement.className = 'loader'\n if (this.isLoaderSmall()) {\n this.loaderElement.className = 'loader loader-small'\n }\n this.renderer.appendChild(this.el.nativeElement, this.loaderElement)\n }\n\n private toggleLoadingIndicator() {\n if (this.ocxLoadingIndicator()) {\n if (this.overlayFullPage()) {\n this.componentRef = this.viewContainerRef.createComponent(LoadingIndicatorComponent)\n } else {\n this.elementLoader()\n }\n } else {\n this.viewContainerRef.clear()\n if (this.componentRef) {\n this.componentRef.destroy()\n } else {\n this.renderer.removeClass(this.el.nativeElement, 'element-overlay')\n if (this.loaderElement) { \n this.loaderElement.remove()\n }\n }\n }\n }\n}\n","import { Component, OnInit, computed, effect, input, model, output } from '@angular/core'\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\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 readonly selectedGroupKey = model<string>('')\n\n readonly columns = input<DataTableColumn[]>([])\n readonly placeholderKey = input<string>('')\n readonly defaultGroupKey = input<string>('')\n readonly customGroupKey = input<string>('')\n\n readonly groupSelectionChanged = output<GroupSelectionChangedEvent>()\n readonly componentStateChanged = output<ColumnGroupSelectionComponentState>()\n\n readonly allGroupKeys = computed<string[]>(() => {\n const columns = this.columns()\n const selectedGroupKey = this.selectedGroupKey()\n const defaultGroupKey = this.defaultGroupKey()\n\n return columns\n .flatMap((c) => c.predefinedGroupKeys || [])\n .concat([defaultGroupKey])\n .concat([selectedGroupKey])\n .filter((value) => !!value)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n })\n\n constructor() {\n effect(() => {\n const selected = this.selectedGroupKey()\n const custom = this.customGroupKey()\n\n if (selected === custom) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: selected,\n })\n }\n })\n }\n\n ngOnInit() {\n const selected = this.selectedGroupKey()\n\n if (selected === this.customGroupKey()) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: selected,\n })\n return\n }\n\n const activeColumns = this.columns().filter((c) =>\n c.predefinedGroupKeys?.includes(selected ?? this.defaultGroupKey())\n )\n\n this.componentStateChanged.emit({\n activeColumnGroupKey: selected,\n displayedColumns: activeColumns,\n })\n }\n\n changeGroupSelection(event: { value: string }) {\n if (event.value === this.customGroupKey()) {\n return\n }\n\n // keep ngModel / model() in sync (PrimeNG also updates via ngModel)\n this.selectedGroupKey.set(event.value)\n\n const activeColumns = this.columns().filter((c) => c.predefinedGroupKeys?.includes(event.value))\n\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().length) {\n <p-select\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"allGroupKeys()\"\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 } @if (allGroupKeys().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 title = input<string>('')\n\n /**\n * Optionally allows specifying styles for the content card\n */\n styleClass = input<string | undefined>(undefined)\n}\n","<div [ocxContent]=\"title()\" [ngClass]=\"styleClass()\">\n <ng-content></ng-content>\n</div>\n","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 layout = input<'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 breakpoint = input<'sm' | 'md' | 'lg' | 'xl'>('md')\n\n /**\n * Optionally allows specifying styles for the container\n */\n styleClass = input<string | undefined>(undefined)\n}\n","<div ocxContentContainer [layout]=\"layout()\" [breakpoint]=\"breakpoint()\" [ngClass]=\"styleClass()\">\n <ng-content></ng-content>\n</div>\n","import { Component, OnInit, computed, effect, input, model, output, signal } from '@angular/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 readonly columns = input<DataTableColumn[]>([])\n readonly displayedColumns = model<DataTableColumn[]>([])\n readonly customGroupKey = input<string>('')\n readonly dialogTitle = input<string>('')\n readonly dialogTitleKey = input<string>('')\n readonly openButtonTitle = input<string>('')\n readonly openButtonTitleKey = input<string>('')\n readonly openButtonAriaLabel = input<string>('')\n readonly openButtonAriaLabelKey = input<string>('')\n readonly saveButtonLabel = input<string>('')\n readonly saveButtonLabelKey = input<string>('')\n readonly saveButtonAriaLabel = input<string>('')\n readonly saveButtonAriaLabelKey = input<string>('')\n readonly cancelButtonLabel = input<string>('')\n readonly cancelButtonLabelKey = input<string>('')\n readonly cancelButtonAriaLabel = input<string>('')\n readonly cancelButtonAriaLabelKey = input<string>('')\n readonly activeColumnsLabel = input<string>('')\n readonly activeColumnsLabelKey = input<string>('')\n readonly inactiveColumnsLabel = input<string>('')\n readonly inactiveColumnsLabelKey = input<string>('')\n\n readonly frozenActionColumn = input<boolean>(false)\n readonly actionColumnPosition = input<'left' | 'right'>('right')\n\n readonly columnSelectionChanged = output<ColumnSelectionChangedEvent>()\n readonly actionColumnConfigChanged = output<ActionColumnChangedEvent>()\n readonly componentStateChanged = output<CustomGroupColumnSelectorComponentState>()\n\n readonly hiddenColumnsModel = signal<DataTableColumn[]>([])\n readonly displayedColumnsModel = signal<DataTableColumn[]>([])\n readonly frozenActionColumnModel = signal<boolean>(false)\n readonly actionColumnPositionModel = signal<'left' | 'right'>('right')\n readonly visible = signal<boolean>(false)\n\n readonly alignmentOptions = signal<{ label: string; value: 'left' | 'right' }[]>([\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 readonly frozenOptions = signal<{ label: string; value: boolean }[]>([\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 private readonly _actionColumnState = computed(() => ({\n frozen: this.frozenActionColumn(),\n position: this.actionColumnPosition(),\n }))\n\n constructor() {\n effect(() => {\n this.componentStateChanged.emit({\n actionColumnConfig: this._actionColumnState(),\n displayedColumns: this.displayedColumns(),\n })\n })\n }\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n actionColumnConfig: this._actionColumnState(),\n displayedColumns: this.displayedColumns(),\n })\n }\n\n onOpenCustomGroupColumnSelectionDialogClick() {\n this.displayedColumnsModel.set([...this.displayedColumns()])\n\n const displayedIds = new Set(this.displayedColumnsModel().map((c) => c.id))\n this.hiddenColumnsModel.set(this.columns().filter((column) => !displayedIds.has(column.id)))\n\n this.frozenActionColumnModel.set(this.frozenActionColumn())\n this.actionColumnPositionModel.set(this.actionColumnPosition())\n this.visible.set(true)\n }\n\n onSaveClick() {\n this.visible.set(false)\n\n const before = this.displayedColumns().map((column) => column.id)\n const after = this.displayedColumnsModel().map((column) => column.id)\n\n if (!after.every((colId, i) => colId === before[i]) || after.length !== before.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\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.set(false)\n }\n}\n","<p-button\n id=\"customGroupColumnSelectorButton\"\n type=\"button\"\n (onClick)=\"onOpenCustomGroupColumnSelectionDialogClick()\"\n [ocxTooltip]=\"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' |\n translate) }}</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 id=\"frozenActionColumnLabel\" class=\"mb-1\">\n {{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.FREEZE' | translate}}\n </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 ariaLabelledBy=\"frozenActionColumnLabel\"\n >\n <ng-template #item let-option> {{option.label | translate}} </ng-template>\n </p-selectbutton>\n </div>\n <div>\n <p id=\"actionColumnPositionLabel\" class=\"mb-1\">\n {{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.POSITION' | translate}}\n </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 ariaLabelledBy=\"actionColumnPositionLabel\"\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, computed, input, model, 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 supportedViewLayouts = input<Array<string>>([])\n\n layout = model<'grid' | 'list' | 'table'>('table')\n\n dataViewLayoutChange = output<'grid' | 'list' | 'table'>()\n componentStateChanged = output<DataLayoutSelectionComponentState>()\n\n viewingLayouts = computed(() => ALL_VIEW_LAYOUTS.filter((vl) => this.supportedViewLayouts().includes(vl.layout)))\n\n readonly selectedViewLayout = computed(() => ALL_VIEW_LAYOUTS.find((v) => v.layout === this.layout()))\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n layout: this.layout(),\n })\n }\n\n onDataViewLayoutChange(event: { icon: PrimeIcon; layout: 'grid' | 'list' | 'table' }): void {\n this.layout.set(event.layout)\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 [ariaLabel]=\"'OCX_DATA_LAYOUT_SELECTION.SELECT_BUTTON.ARIA_LABEL' | translate\"\n >\n <ng-template #item let-item>\n <i [class]=\"item.icon\" [ocxTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\" [attr.id]=\"item.id\">{{ item.labelKey | translate }}</span>\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: RowListGridData[],\n columns: DataTableColumn[],\n clientSideFiltering: boolean,\n clientSideSorting: boolean\n ): Observable<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 translations\n })\n )\n }\n }\n return of({})\n }\n\n filterItems(\n [items, filters, translations]: [RowListGridData[], Filter[], Record<string, Record<string, string>>],\n clientSideFiltering: boolean\n ): RowListGridData[] {\n if (!clientSideFiltering) {\n return items\n }\n return 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 }\n\n sortItems(\n [items, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n columns: DataTableColumn[],\n clientSideSorting: boolean\n ): RowListGridData[] {\n if (!clientSideSorting || sortColumn === '') {\n return items\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 [...items].sort(this.createCompareFunction(colValues, sortColumn, sortDirection))\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 } 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 readonly changeDetectorRef: ChangeDetectorRef\n private readonly ngZone = inject(NgZone)\n\n private timer: number | undefined | null\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef)\n\n super()\n\n this.changeDetectorRef = changeDetectorRef\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 Component,\n Injector,\n LOCALE_ID,\n OnInit,\n Output,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChildren,\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 { Observable, combineLatest, debounceTime, firstValueFrom, 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 { PermissionInput } from '../../model/permission.model'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { observableOutput, ObservableOutputEmitterRef } from '../../utils/observable-output.utils'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { computedPrevious } from 'ngxtension/computed-previous'\nimport equal from 'fast-deep-equal'\nimport { handleAction, handleActionSync } from '../../utils/action-router.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 {\n private readonly userService = inject(UserService)\n private readonly router = inject(Router)\n private readonly injector = inject(Injector)\n private readonly appStateService = inject(AppStateService)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n private readonly liveAnnouncer = inject(LiveAnnouncer)\n\n titleLineId = input<string>()\n subtitleLineIds = input<string[]>()\n clientSideSorting = input<boolean>(true)\n clientSideFiltering = input<boolean>(true)\n sortStates = input<DataSortDirection[]>([])\n\n pageSize = model<number | undefined>(undefined)\n pageSizes = input<number[]>([10, 25, 50])\n\n displayedPageSize = computed(() => {\n const pageSize = this.pageSize()\n const pageSizes = this.pageSizes()\n\n return pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50\n })\n\n emptyResultsMessage = input<string | undefined>(undefined)\n fallbackImage = input<string>('placeholder.png')\n layout = input<'grid' | 'list'>('grid')\n viewPermission = input<PermissionInput>(undefined)\n editPermission = input<PermissionInput>(undefined)\n deletePermission = input<PermissionInput>(undefined)\n deleteActionVisibleField = input<string | undefined>(undefined)\n deleteActionEnabledField = input<string | undefined>(undefined)\n viewActionVisibleField = input<string | undefined>(undefined)\n viewActionEnabledField = input<string | undefined>(undefined)\n editActionVisibleField = input<string | undefined>(undefined)\n editActionEnabledField = input<string | undefined>(undefined)\n viewMenuItemKey = input<string | undefined>(undefined)\n editMenuItemKey = input<string | undefined>(undefined)\n deleteMenuItemKey = input<string | undefined>(undefined)\n paginator = input<boolean>(true)\n page = model<number>(0)\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columns = input<DataTableColumn[]>([])\n filteredColumns = computed(() => {\n const subtitleLineIds = this.subtitleLineIds() ?? []\n const ids: string[] = [...subtitleLineIds]\n const titleLineId = this.titleLineId()\n if (titleLineId) {\n ids.unshift(titleLineId)\n }\n return this.columns().filter((c) => !ids.includes(c.id))\n })\n\n name = model<string | undefined>(undefined)\n totalRecordsOnServer = input<number | undefined>(undefined)\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n params = computed(() => {\n const totalRecordsOnServer = this.totalRecordsOnServer()\n return {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n totalRecordsOnServer,\n }\n })\n\n data = input<RowListGridData[]>([])\n previousData = computedPrevious(this.data)\n\n filters = input<Filter[]>([])\n previousFilters = computedPrevious(this.filters)\n\n sortDirection = input<DataSortDirection>(DataSortDirection.NONE)\n sortField = input<string>('')\n\n private readonly permissions$ = this.getPermissions()\n\n gridItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>(undefined)\n gridItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('gridItemSubtitleLines')\n get gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate() || this.gridItemSubtitleLinesChildTemplate()\n }\n\n listItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>(undefined)\n listItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('listItemSubtitleLines')\n get listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate() || this.listItemSubtitleLinesChildTemplate()\n }\n\n listItemTemplate = input<TemplateRef<any> | undefined>(undefined)\n listItemChildTemplate = contentChild<TemplateRef<any>>('listItem')\n get listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate() || this.listItemChildTemplate()\n }\n\n gridItemTemplate = input<TemplateRef<any> | undefined>(undefined)\n gridItemChildTemplate = contentChild<TemplateRef<any>>('gridItem')\n get gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate() || this.gridItemChildTemplate()\n }\n\n listValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n listValueChildTemplate = contentChild<TemplateRef<any>>('listValue')\n get listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate() || this.listValueChildTemplate()\n }\n\n translationKeyListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n translationKeyListValueChildTemplate = contentChild<TemplateRef<any>>('translationKeyListValue')\n get translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate() || this.translationKeyListValueChildTemplate()\n }\n\n numberListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n numberListValueChildTemplate = contentChild<TemplateRef<any>>('numberListValue')\n get numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate() || this.numberListValueChildTemplate()\n }\n\n relativeDateListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n relativeDateListValueChildTemplate = contentChild<TemplateRef<any>>('relativeDateListValue')\n get relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate() || this.relativeDateListValueChildTemplate()\n }\n\n stringListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n stringListValueChildTemplate = contentChild<TemplateRef<any>>('stringListValue')\n get stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate() || this.stringListValueChildTemplate()\n }\n\n dateListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n dateListValueChildTemplate = contentChild<TemplateRef<any>>('dateListValue')\n get dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate() || this.dateListValueChildTemplate()\n }\n\n additionalActions = input<DataAction[]>([])\n inlineListActions = computed(() => {\n return this.additionalActions().filter((action) => !action.showAsOverflow)\n })\n overflowListActions = computed(() => {\n return this.additionalActions().filter((action) => action.showAsOverflow)\n })\n overflowListActions$ = toObservable(this.overflowListActions)\n currentMenuRow = signal<Row | null>(null)\n overflowListMenuItems$ = combineLatest([\n toObservable(this.overflowListActions),\n toObservable(this.currentMenuRow),\n this.permissions$,\n ]).pipe(\n map(([actions, row, permissions]) => ({\n actions: this.filterActionsBasedOnPermissions(actions, permissions),\n row,\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: this.createMenuItemCommand(a, row),\n }))\n })\n )\n })\n )\n\n @Output() viewItem = observableOutput<ListGridData | undefined>()\n @Output() editItem = observableOutput<ListGridData | undefined>()\n @Output() deleteItem = observableOutput<ListGridData | undefined>()\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n componentStateChanged = output<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 observedOutputs = computed(() => {\n return (this.viewItemObserved ? 1 : 0) + (this.deleteItemObserved ? 1 : 0) + (this.editItemObserved ? 1 : 0)\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 selectedItem = signal<ListGridData | undefined>(undefined)\n\n permittedAdditionalActions$ = combineLatest([this.permissions$, toObservable(this.additionalActions)]).pipe(\n map(([permissions, additionalActions]) => {\n return this.filterActionsBasedOnPermissions(additionalActions, permissions)\n })\n )\n\n gridMenuState$ = combineLatest([\n // Trigger the whole chain to recalculate when data changes, to update the enabled/visible state of menu items based on the selected row\n toObservable(this.data),\n this.permissions$,\n this.permittedAdditionalActions$,\n toObservable(this.selectedItem),\n toObservable(this.observedOutputs),\n toObservable(this.viewMenuItemKey),\n toObservable(this.editMenuItemKey),\n toObservable(this.deleteMenuItemKey),\n toObservable(this.viewPermission),\n toObservable(this.editPermission),\n toObservable(this.deletePermission),\n toObservable(this.viewActionEnabledField),\n toObservable(this.editActionEnabledField),\n toObservable(this.deleteActionEnabledField),\n toObservable(this.viewActionVisibleField),\n toObservable(this.editActionVisibleField),\n toObservable(this.deleteActionVisibleField),\n ]).pipe(\n map(\n ([\n _data,\n permissions,\n additionalActions,\n selectedItem,\n _observedOutputs,\n viewMenuItemKey,\n editMenuItemKey,\n deleteMenuItemKey,\n viewPermission,\n editPermission,\n deletePermission,\n viewActionEnabledField,\n editActionEnabledField,\n deleteActionEnabledField,\n viewActionVisibleField,\n editActionVisibleField,\n deleteActionVisibleField,\n ]) => {\n return {\n permissions,\n additionalActions,\n selectedItem,\n viewMenuItemKey: viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW',\n editMenuItemKey: editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT',\n deleteMenuItemKey: deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE',\n viewPermission,\n editPermission,\n deletePermission,\n viewActionEnabledField,\n editActionEnabledField,\n deleteActionEnabledField,\n viewActionVisibleField,\n editActionVisibleField,\n deleteActionVisibleField,\n }\n }\n )\n )\n\n gridMenuItems$ = this.gridMenuState$.pipe(\n switchMap((params) => {\n return this.getGridActionsTranslations(params.additionalActions, {\n viewMenuItem: params.viewMenuItemKey,\n editMenuItem: params.editMenuItemKey,\n deleteMenuItem: params.deleteMenuItemKey,\n }).pipe(map((translations) => ({ ...params, translations })))\n }),\n map((params) =>\n this.mapGridMenuItems(\n params.permissions,\n params.additionalActions,\n params.selectedItem,\n params.translations,\n {\n viewMenuItem: params.viewMenuItemKey,\n editMenuItem: params.editMenuItemKey,\n deleteMenuItem: params.deleteMenuItemKey,\n },\n {\n viewPermission: params.viewPermission,\n editPermission: params.editPermission,\n deletePermission: params.deletePermission,\n },\n {\n visible: {\n viewAction: params.viewActionVisibleField,\n editAction: params.editActionVisibleField,\n deleteAction: params.deleteActionVisibleField,\n },\n enabled: {\n viewAction: params.viewActionEnabledField,\n editAction: params.editActionEnabledField,\n deleteAction: params.deleteActionEnabledField,\n },\n }\n )\n )\n )\n\n displayedItems$ = combineLatest([\n toObservable(this.data),\n toObservable(this.filters),\n toObservable(this.sortField),\n toObservable(this.sortDirection),\n toObservable(this.columns),\n toObservable(this.clientSideFiltering),\n toObservable(this.clientSideSorting),\n ]).pipe(\n map(([data, filters, sortField, sortDirection, columns, clientSideFiltering, clientSideSorting]) => {\n return { data, filters, sortField, sortDirection, columns, clientSideFiltering, clientSideSorting }\n }),\n mergeMap((params) =>\n this.translateItems(params.data, params.columns, params.clientSideFiltering, params.clientSideSorting).pipe(\n map((translatedItems) => ({ ...params, translatedItems }))\n )\n ),\n map((params) => ({\n ...params,\n data: this.filterItems([params.data, params.filters, params.translatedItems], params.clientSideFiltering),\n })),\n map((params) => ({\n ...params,\n data: this.sortItems(\n [params.data, params.sortField, params.sortDirection, params.translatedItems],\n params.columns,\n params.clientSideSorting\n ),\n })),\n map(({ data }) => data)\n )\n fallbackImagePath$!: Observable<string>\n\n templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n templates$ = toObservable(this.templates)\n\n viewTemplates = viewChildren<PrimeTemplate>(PrimeTemplate)\n viewTemplates$ = toObservable(this.viewTemplates)\n\n parentTemplates = model<PrimeTemplate[] | null | undefined>(undefined)\n parentTemplates$ = toObservable(this.parentTemplates)\n\n columnType = ColumnType\n private templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n hasViewPermission$ = toObservable(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.permissions$.pipe(map((permissions) => permissionArray.every((p) => permissions.includes(p))))\n })\n )\n\n constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n\n effect(() => {\n const data = this.data()\n // Not track previousData change to avoid the trigger\n untracked(() => {\n const previousData = this.previousData()\n if (previousData.length && !equal(data, previousData)) {\n this.page.set(0)\n }\n })\n\n const currentResults = data.length\n const newStatus =\n currentResults === 0 ? 'OCX_DATA_LIST_GRID.NO_SEARCH_RESULTS_FOUND' : 'OCX_DATA_LIST_GRID.SEARCH_RESULTS_FOUND'\n\n firstValueFrom(this.translateService.get(newStatus, { results: currentResults })).then(\n (translatedText: string) => {\n this.liveAnnouncer.announce(translatedText)\n }\n )\n })\n\n effect(() => {\n const columns = this.columns()\n const obs = columns.map((c) => this.getTemplate(c))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n })\n\n effect(() => {\n this.filters()\n // Not track previousFilters change to avoid the trigger\n untracked(() => {\n const previousFilters = this.previousFilters()\n if (previousFilters.length && !equal(this.filters(), previousFilters)) {\n this.page.set(0)\n }\n })\n })\n\n this.fallbackImagePath$ = this.appStateService.currentMfe$.pipe(\n map((currentMfe) => this.getFallbackImagePath(currentMfe))\n )\n\n effect(() => {\n this.emitComponentStateChanged()\n })\n\n effect(() => {\n this.pageChanged.emit(this.page())\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (pageSize === undefined) {\n return\n }\n this.pageSizeChanged.emit(pageSize)\n })\n }\n\n ngOnInit(): void {\n this.name.set(this.name() || this.router.url.replace(/[^A-Za-z0-9]/, '_'))\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.set(item)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n emitComponentStateChanged() {\n this.componentStateChanged.emit({\n pageSize: this.displayedPageSize(),\n activePage: this.page(),\n })\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page.set(page)\n this.pageSize.set(event.rows)\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!this.resolveFieldData(object, key)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return combineLatest([this.overflowListActions$, this.permissions$]).pipe(\n map(([actions, permission]) => this.filterActionsBasedOnPermissions(actions, permission)),\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.set(row)\n menu.toggle(event)\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 keys: {\n viewMenuItem: string\n editMenuItem: string\n deleteMenuItem: string\n },\n actionPermissions: {\n viewPermission: PermissionInput\n editPermission: PermissionInput\n deletePermission: PermissionInput\n },\n actionFields: {\n visible: {\n viewAction?: string\n editAction?: string\n deleteAction?: string\n }\n enabled: {\n viewAction?: string\n editAction?: string\n deleteAction?: string\n }\n }\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 =\n !!actionFields.enabled.viewAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.viewAction)\n editDisabled =\n !!actionFields.enabled.editAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.editAction)\n deleteDisabled =\n !!actionFields.enabled.deleteAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.deleteAction)\n\n viewVisible = !actionFields.visible.viewAction || this.fieldIsTruthy(selectedItem, actionFields.visible.viewAction)\n editVisible = !actionFields.visible.editAction || this.fieldIsTruthy(selectedItem, actionFields.visible.editAction)\n deleteVisible =\n !actionFields.visible.deleteAction || this.fieldIsTruthy(selectedItem, actionFields.visible.deleteAction)\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(actionPermissions.viewPermission, this.viewItem, permissions)) {\n menuItems.push({\n label: translations[keys.viewMenuItem],\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(actionPermissions.editPermission, this.editItem, permissions)) {\n menuItems.push({\n label: translations[keys.editMenuItem],\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(actionPermissions.deletePermission, this.deleteItem, permissions)) {\n menuItems.push({\n label: translations[keys.deleteMenuItem],\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: () => handleActionSync(this.router, a, selectedItem),\n automationId: isVisible ? automationId : automationIdHidden,\n }\n })\n )\n return val\n }\n\n private getGridActionsTranslations(\n additionalActions: DataAction[],\n keys: {\n viewMenuItem: string\n editMenuItem: string\n deleteMenuItem: string\n }\n ): Observable<Record<string, string>> {\n return this.translateService.get([\n keys.viewMenuItem,\n keys.editMenuItem,\n keys.deleteMenuItem,\n ...additionalActions.map((a) => a.labelKey || ''),\n ])\n }\n\n private shouldDisplayAction(\n permission: PermissionInput,\n emitter: ObservableOutputEmitterRef<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[]): DataAction[] {\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 private getPermissions(): Observable<string[]> {\n if (this.hasPermissionChecker?.getPermissions) {\n return this.hasPermissionChecker.getPermissions()\n }\n\n return this.userService.getPermissions()\n }\n\n async onActionClick(action: DataAction, item: any): Promise<void> {\n await handleAction(this.router, action, item)\n }\n\n private createMenuItemCommand(action: DataAction, row: any): () => void {\n return () => handleActionSync(this.router, action, row)\n }\n}\n","@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() !== undefined ? currentPageShowingWithTotalOnServerKey() : currentPageShowingKey()) | translate:params()\"\n [rowsPerPageOptions]=\"pageSizes() ?? []\"\n [id]=\"'dataListGrid_' + name()\"\n paginatorDropdownAppendTo=\"body\"\n>\n <ng-template #grid let-rows>\n <div class=\"grid grid-cols-12 grid-nogutter gap-4 w-full\" role=\"list\">\n @for (item of rows; track item) {\n <ng-container\n [ngTemplateOutlet]=\"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\" role=\"list\">\n @for (item of rows; track item; let first = $first) { @defer (on viewport; on idle){\n <ng-container\n [ngTemplateOutlet]=\"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\" role=\"listitem\">\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 @if (hasViewPermission$ | async; as hasViewPermission) {\n <a [routerLink]=\"\" (click)=\"onViewRow(item)\">{{ resolveFieldData(item, titleLineId()) || '' }}</a>\n } @else {\n <a [routerLink]=\"\">{{ resolveFieldData(item, titleLineId()) || '' }}</a>\n }\n </div>\n <ng-container\n [ngTemplateOutlet]=\"gridItemSubtitleLines ?? defaultGridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n @if ((gridMenuItems$ | async); as gridMenuItems) {\n <div>\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 [ocxTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n ></button>\n </div>\n }\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\" role=\"listitem\">\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 [ocxTooltip]=\"(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 [ocxTooltip]=\"(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 {\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 [ocxTooltip]=\"(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(); track action) { @if ((!action.actionVisibleField || fieldIsTruthy(item,\n 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)=\"onActionClick(action, item)\"\n [ocxTooltip]=\"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 [ocxTooltip]=\"'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 ?? defaultListItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div class=\"flex flex-wrap\">\n @for (col of filteredColumns(); 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 ?? 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, computed, effect, input, model, output } from '@angular/core'\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 {\n readonly columns = input<DataTableColumn[]>([])\n readonly sortStates = input<DataSortDirection[]>([DataSortDirection.ASCENDING, DataSortDirection.DESCENDING])\n\n readonly sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n readonly sortField = model<string>('')\n\n readonly sortChange = output<string>()\n readonly sortDirectionChange = output<DataSortDirection>()\n readonly componentStateChanged = output<DataListGridSortingComponentState>()\n readonly columnsChange = output<string[]>()\n\n readonly dropdownOptions = computed<DataColumnNameId[]>(() => {\n return this.columns()\n .filter((c) => !!c.sortable)\n .map((c) => ({ columnId: c.id, columnName: c.nameKey }))\n })\n\n readonly selectedSortingOption = computed<DataColumnNameId | undefined>(() => {\n const sortField = this.sortField()\n return this.dropdownOptions().find((e) => e.columnId === sortField)\n })\n\n constructor() {\n effect(() => {\n this.componentStateChanged.emit({\n sorting: {\n sortColumn: this.sortField(),\n sortDirection: this.sortDirection(),\n },\n })\n })\n }\n\n selectSorting(event: SelectChangeEvent): void {\n this.sortField.set(event.value.columnId)\n this.sortChange.emit(event.value.columnId)\n }\n\n sortDirectionChanged(): void {\n const newSortDirection = this.nextSortDirection()\n this.sortDirection.set(newSortDirection)\n this.sortDirectionChange.emit(newSortDirection)\n }\n\n nextSortDirection(): DataSortDirection {\n const states = this.sortStates()\n return states[(states.indexOf(this.sortDirection()) + 1) % states.length]\n }\n\n sortIcon(): string {\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(): string {\n return this.sortDirectionToTitle(this.nextSortDirection())\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection): string {\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 optionLabel=\"columnName\"\n >\n <ng-template let-item #item> \n <span [attr.aria-label]=\"item?.columnName ? (item.columnName | translate) : ''\">{{ item?.columnName ? (item.columnName | translate) : ''}}</span> \n </ng-template>\n <ng-template let-item #selectedItem>\n <span [attr.aria-label]=\"item?.columnName ? (item.columnName | translate) : ''\">{{ item?.columnName ? (item.columnName | translate) : ''}}</span>\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 (keydown.enter)=\"sortDirectionChanged()\"\n (keydown.space)=\"sortDirectionChanged()\"\n [ocxTooltip]=\"(sortIconTitle() | translate)\"\n tooltipPosition=\"top\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.SORTING_BUTTON_ARIA_LABEL' | translate:{currentDirection: sortDirection(), nextDirection: (sortDirectionToTitle(nextSortDirection())) | translate})\"\n ></p-button>\n</div>","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 Component,\n Injector,\n LOCALE_ID,\n OnInit,\n Output,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChildren,\n} from '@angular/core'\nimport { computedPrevious } from 'ngxtension/computed-previous'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { isValidDate } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { PrimeTemplate, SelectItem } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { MultiSelectItem } from 'primeng/multiselect'\nimport {\n Observable,\n combineLatest,\n debounceTime,\n filter,\n firstValueFrom,\n map,\n mergeMap,\n of,\n switchMap,\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 { PermissionInput } from '../../model/permission.model'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport equal from 'fast-deep-equal'\nimport { handleAction, handleActionSync } from '../../utils/action-router.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 {\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 private readonly liveAnnouncer = inject(LiveAnnouncer)\n\n FilterType = FilterType\n TemplateType = TemplateType\n\n rows = model<Row[]>([])\n previousRows = computedPrevious(this.rows)\n selectedRows = model<Row[]>([])\n selectedIds = signal<Array<string | number>>([])\n\n filters = model<Filter[]>([])\n previousFilters = computedPrevious(this.filters)\n sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n sortColumn = model<string>('')\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columnFilterTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columns = model<DataTableColumn[]>([])\n clientSideFiltering = input(true)\n clientSideSorting = input(true)\n sortStates = model<DataSortDirection[]>([DataSortDirection.ASCENDING, DataSortDirection.DESCENDING])\n\n pageSizes = model<number[]>([10, 25, 50])\n displayedPageSize = computed(() => {\n const pageSize = this.pageSize()\n const pageSizes = this.pageSizes()\n\n return pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50\n })\n pageSize = model<number | undefined>(undefined)\n\n emptyResultsMessage = input<string | undefined>(undefined)\n name = model<string>('')\n deletePermission = input<PermissionInput>(undefined)\n viewPermission = input<PermissionInput>(undefined)\n editPermission = input<PermissionInput>(undefined)\n deleteActionVisibleField = input<string | undefined>(undefined)\n deleteActionEnabledField = input<string | undefined>(undefined)\n viewActionVisibleField = input<string | undefined>(undefined)\n viewActionEnabledField = input<string | undefined>(undefined)\n editActionVisibleField = input<string | undefined>(undefined)\n editActionEnabledField = input<string | undefined>(undefined)\n selectionEnabledField = input<string | undefined>(undefined)\n allowSelectAll = input<boolean>(true)\n paginator = input<boolean>(true)\n\n page = model<number>(0)\n tableStyle = input<{ [klass: string]: any } | undefined>(undefined)\n totalRecordsOnServer = input<number | undefined>(undefined)\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n params = computed(() => {\n const totalRecordsOnServer = this.totalRecordsOnServer()\n return {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n totalRecordsOnServer,\n }\n })\n\n stringCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n stringCellChildTemplate = contentChild<TemplateRef<any>>('stringCell')\n stringCell = computed(() => {\n return this.stringCellTemplate() || this.stringCellChildTemplate()\n })\n\n numberCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n numberCellChildTemplate = contentChild<TemplateRef<any>>('numberCell')\n numberCell = computed(() => {\n return this.numberCellTemplate() || this.numberCellChildTemplate()\n })\n\n dateCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n dateCellChildTemplate = contentChild<TemplateRef<any>>('dateCell')\n dateCell = computed(() => {\n return this.dateCellTemplate() || this.dateCellChildTemplate()\n })\n\n relativeDateCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n relativeDateCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateCell')\n relativeDateCell = computed(() => {\n return this.relativeDateCellTemplate() || this.relativeDateCellChildTemplate()\n })\n\n cellTemplate = input<TemplateRef<any> | undefined>(undefined)\n cellChildTemplate = contentChild<TemplateRef<any>>('cell')\n cell = computed(() => {\n return this.cellTemplate() || this.cellChildTemplate()\n })\n\n translationKeyCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n translationKeyCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyCell')\n translationKeyCell = computed(() => {\n return this.translationKeyCellTemplate() || this.translationKeyCellChildTemplate()\n })\n\n stringFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n stringFilterCellChildTemplate = contentChild<TemplateRef<any>>('stringFilterCell')\n stringFilterCell = computed(() => {\n return this.stringFilterCellTemplate() || this.stringFilterCellChildTemplate()\n })\n\n numberFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n numberFilterCellChildTemplate = contentChild<TemplateRef<any>>('numberFilterCell')\n numberFilterCell = computed(() => {\n return this.numberFilterCellTemplate() || this.numberFilterCellChildTemplate()\n })\n\n dateFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n dateFilterCellChildTemplate = contentChild<TemplateRef<any>>('dateFilterCell')\n dateFilterCell = computed(() => {\n return this.dateFilterCellTemplate() || this.dateFilterCellChildTemplate()\n })\n\n relativeDateFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n relativeDateFilterCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateFilterCell')\n relativeDateFilterCell = computed(() => {\n return this.relativeDateFilterCellTemplate() || this.relativeDateFilterCellChildTemplate()\n })\n\n filterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n filterCellChildTemplate = contentChild<TemplateRef<any>>('filterCell')\n filterCell = computed(() => {\n return this.filterCellTemplate() || this.filterCellChildTemplate()\n })\n\n translationKeyFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n translationKeyFilterCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyFilterCell')\n translationKeyFilterCell = computed(() => {\n return this.translationKeyFilterCellTemplate() || this.translationKeyFilterCellChildTemplate()\n })\n\n additionalActions = model<DataAction[]>([])\n frozenActionColumn = input<boolean>(false)\n actionColumnPosition = input<'left' | 'right'>('right')\n\n filtered = output<Filter[]>()\n sorted = output<Sort>()\n @Output() viewTableRow = observableOutput<Row>()\n @Output() editTableRow = observableOutput<Row>()\n @Output() deleteTableRow = observableOutput<Row>()\n @Output() selectionChanged = observableOutput<Row[]>()\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n componentStateChanged = output<DataTableComponentState>()\n\n displayedRows$ = combineLatest([\n toObservable(this.rows),\n toObservable(this.filters),\n toObservable(this.sortColumn),\n toObservable(this.sortDirection),\n toObservable(this.columns),\n toObservable(this.clientSideFiltering),\n toObservable(this.clientSideSorting),\n ]).pipe(\n map(([rows, filters, sortColumn, sortDirection, columns, clientSideFiltering, clientSideSorting]) => {\n return { rows, filters, sortColumn, sortDirection, columns, clientSideFiltering, clientSideSorting }\n }),\n mergeMap((params) =>\n this.translateItems(params.rows, params.columns, params.clientSideFiltering, params.clientSideSorting).pipe(\n map((translations) => ({ ...params, translations }))\n )\n ),\n map((params) => ({\n ...params,\n rows: this.filterItems([params.rows, params.filters, params.translations], params.clientSideFiltering),\n })),\n map((params) => ({\n ...params,\n rows: this.sortItems(\n [params.rows, params.sortColumn, params.sortDirection, params.translations],\n params.columns,\n params.clientSideSorting\n ),\n })),\n map(({ rows }) => this.flattenItems(rows))\n )\n\n selectedFilteredRows = computed(() => {\n const selectionIds = this.selectedIds()\n const rows = this.rows()\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.page()\n return selectionIds.map((rowId) => rows.find((r) => r.id === rowId)).filter((row): row is Row => row !== undefined)\n })\n\n currentFilterColumn = signal<DataTableColumn | null>(null)\n currentEqualFilterOptions$ = combineLatest([\n toObservable(this.rows),\n toObservable(this.currentFilterColumn),\n toObservable(this.filters),\n toObservable(this.columns),\n ]).pipe(\n filter(\n ([_, currentFilterColumn, __, ___]) =>\n !currentFilterColumn?.filterType || currentFilterColumn.filterType === FilterType.EQUALS\n ),\n mergeMap(([rows, currentFilterColumn, filters, columns]) => {\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 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\n currentEqualSelectedFilters = computed(() => {\n const filters = this.filters()\n const currentFilterColumn = this.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 currentTruthySelectedFilters = computed(() => {\n const filters = this.filters()\n const currentFilterColumn = this.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 filterAmounts = computed<Record<string, number>>(() => {\n const filters = this.filters()\n return filters\n .map((filter) => filter.columnId)\n .map((columnId) => ({ [columnId]: filters.filter((filter) => filter.columnId === columnId).length }))\n .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n })\n\n overflowActions = computed(() => {\n return this.additionalActions().filter((action) => action.showAsOverflow)\n })\n overflowActions$ = toObservable(this.overflowActions)\n inlineActions = computed(() => {\n return this.additionalActions().filter((action) => !action.showAsOverflow)\n })\n currentMenuRow = signal<Row | null>(null)\n\n overflowMenuItems$ = combineLatest([toObservable(this.overflowActions), toObservable(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: this.createMenuItemCommand(a, row),\n }))\n })\n )\n })\n )\n\n templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n templates$ = toObservable(this.templates)\n\n viewTemplates = viewChildren<PrimeTemplate>(PrimeTemplate)\n viewTemplates$ = toObservable(this.viewTemplates)\n\n parentTemplates = model<PrimeTemplate[] | null | undefined>(undefined)\n parentTemplates$ = toObservable(this.parentTemplates)\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 constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n\n effect(() => {\n const rows = this.rows()\n\n // Not track previousRows change to avoid the trigger\n untracked(() => {\n const previousRows = this.previousRows()\n if (previousRows.length && rows.length < previousRows.length) {\n this.page.set(0)\n }\n })\n\n const currentResults = rows.length\n const newStatus =\n currentResults === 0 ? 'OCX_DATA_TABLE.NO_SEARCH_RESULTS_FOUND' : 'OCX_DATA_TABLE.SEARCH_RESULTS_FOUND'\n\n firstValueFrom(this.translateService.get(newStatus, { results: currentResults })).then(\n (translatedText: string) => {\n this.liveAnnouncer.announce(translatedText)\n }\n )\n })\n\n effect(() => {\n const filters = this.filters()\n // Not track previousFilters change to avoid the trigger\n untracked(() => {\n const previousFilters = this.previousFilters()\n if (previousFilters.length && !equal(filters, previousFilters)) {\n this.page.set(0)\n }\n })\n this.filtered.emit(filters)\n })\n\n effect(() => {\n const columns = this.columns()\n const obs = columns.map((c) => this.getTemplate(c, TemplateType.CELL))\n const filterObs = columns.map((c) => this.getTemplate(c, TemplateType.FILTERCELL))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n this.columnFilterTemplates$ = combineLatest(filterObs).pipe(\n map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]])))\n )\n })\n\n effect(() => {\n const selectedRows = this.selectedRows()\n const selectedIds = selectedRows.map((row) => {\n if (typeof row === 'object') {\n return row.id\n }\n return row\n })\n this.selectedIds.set(selectedIds)\n })\n\n effect(() => {\n this.emitComponentStateChanged()\n })\n\n effect(() => {\n this.sorted.emit({ sortColumn: this.sortColumn(), sortDirection: this.sortDirection() })\n })\n\n effect(() => {\n this.emitSelectionChanged()\n })\n\n effect(() => {\n this.pageChanged.emit(this.page())\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (pageSize === undefined) {\n return\n }\n this.pageSizeChanged.emit(pageSize)\n })\n\n this.rowSelectable = this.rowSelectable.bind(this)\n }\n\n ngOnInit(): void {\n this.name.set(this.name() || this.router.url.replace(/[^A-Za-z0-9]/, '_'))\n }\n\n translateColumnValues(columnValues: string[]): Observable<any> {\n return columnValues.length ? this.translateService.get(columnValues as string[]) : of({})\n }\n\n emitComponentStateChanged() {\n this.componentStateChanged.emit({\n filters: this.filters(),\n sorting: {\n sortColumn: this.sortColumn(),\n sortDirection: this.sortDirection(),\n },\n pageSize: this.displayedPageSize(),\n activePage: this.page(),\n selectedRows: this.rows().filter((row) => this.selectedIds().includes(row.id)),\n })\n }\n\n emitSelectionChanged() {\n this.selectionChanged.emit(this.rows().filter((row) => this.selectedIds().includes(row.id)))\n }\n\n onSortColumnClick(sortColumn: string) {\n const newSortDirection = this.columnNextSortDirection(sortColumn)\n\n this.sortColumn.set(sortColumn)\n this.sortDirection.set(newSortDirection)\n }\n\n columnNextSortDirection(sortColumn: string) {\n const sortStates = this.sortStates()\n return sortColumn === this.sortColumn()\n ? sortStates[(sortStates.indexOf(this.sortDirection()) + 1) % sortStates.length]\n : sortStates[0]\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.set(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.set(filters)\n }\n }\n\n sortIconTitle(sortColumn: string) {\n return this.sortDirectionToTitle(this.columnNextSortDirection(sortColumn))\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 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()\n\n if (this.selectionEnabledField()) {\n const disabledRowIds = rows\n .filter((r) => !this.fieldIsTruthy(r, this.selectionEnabledField()))\n .map((row) => row.id)\n if (disabledRowIds.length > 0) {\n newSelectionIds = this.mergeWithDisabledKeys(newSelectionIds, disabledRowIds)\n }\n }\n\n this.selectedIds.set(newSelectionIds)\n }\n\n mergeWithDisabledKeys(newSelectionIds: (string | number)[], disabledRowIds: (string | number)[]) {\n const previousSelectionIds = this.selectedIds()\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.selectedIds().includes(row.id)\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page.set(page)\n this.pageSize.set(event.rows)\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.set(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 private readonly 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 private readonly 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 private readonly 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 = (index: number, 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 async onActionClick(action: DataAction, rowObject: any): Promise<void> {\n await handleAction(this.router, action, rowObject)\n }\n \n private createMenuItemCommand(action: DataAction, row: any): () => void {\n return () => handleActionSync(this.router, action, row)\n }\n}","<ng-template #actionColumn let-rowObject=\"localRowObject\">\n @if ( anyRowActionObserved || additionalActions().length > 0 || overflowActions().length > 0 ) {\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 {\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(); track action) { @if (!action.actionVisibleField || fieldIsTruthy(rowObject,\n 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)=\"onActionClick(action, rowObject)\"\n [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"\n action.disabled ||\n (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField))\n \"\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 || additionalActions().length > 0 || overflowActions().length > 0 ) {\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(); as displayedPageSize) { @if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n<p-table\n [value]=\"(displayedRows$ | async) ?? []\"\n [paginator]=\"paginator()\"\n [first]=\"page() * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"\n (totalRecordsOnServer() ? currentPageShowingWithTotalOnServerKey() : currentPageShowingKey())\n | translate : params()\n \"\n [rowsPerPageOptions]=\"pageSizes()\"\n [id]=\"'dataTable_' + name()\"\n (selectionChange)=\"onSelectionChange($event)\"\n dataKey=\"id\"\n [rowTrackBy]=\"rowTrackByFunction\"\n [selection]=\"selectedFilteredRows()\"\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 [ocxTooltip]=\"'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 [ocxTooltip]=\"sortIconTitle(column.id) | translate\"\n tooltipPosition=\"bottom\"\n [attr.aria-label]=\"\n 'OCX_DATA_TABLE.TOGGLE_BUTTON.ARIA_LABEL'\n | translate : {\n column: (column.nameKey | translate),\n direction: (sortDirectionToTitle(columnNextSortDirection(column.id)) | translate)\n }\n \"\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() || []\"\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]=\"\n 'OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate : { column: column.nameKey | translate }\n \"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!filterAmounts()[column.id]\"\n [class.pi-filter-fill]=\"filterAmounts()[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]=\"[\n { key: 'OCX_DATA_TABLE.FILTER_YES', value: true },\n { key: 'OCX_DATA_TABLE.FILTER_NO', value: false }\n ]\"\n [ngModel]=\"currentTruthySelectedFilters() || []\"\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]=\"\n 'OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate : { column: column.nameKey | translate }\n \"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!filterAmounts()[column.id]\"\n [class.pi-filter-fill]=\"filterAmounts()[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\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 [value]=\"true\"\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]=\"cell() ?? columnTemplates[column.id]\"\n [ngTemplateOutletContext]=\"{ rowObject: rowObject, column: column }\"\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\n <ng-template #emptymessage>\n <tr>\n <td\n [colSpan]=\"\n columns().length +\n ((anyRowActionObserved || additionalActions().length > 0) ? 1 : 0) +\n (allowSelectAll() ? 1 : 0)\n \"\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 Component,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { PrimeTemplate } from 'primeng/api'\nimport { 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'\nimport { observableOutput } from '../../utils/observable-output.utils'\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 OnInit {\n private readonly injector = inject(Injector)\n\n dataListGridComponent = viewChild(DataListGridComponent)\n\n dataTableComponent = viewChild(DataTableComponent)\n\n dataTableComponentState$ = new ReplaySubject<DataTableComponentState>(1)\n dataListGridComponentState$ = new ReplaySubject<DataListGridComponentState>(1)\n\n deletePermission = input<string | string[]>()\n editPermission = input<string | string[]>()\n viewPermission = input<string | string[]>()\n deleteActionVisibleField = input<string | undefined>()\n deleteActionEnabledField = input<string | undefined>()\n viewActionVisibleField = input<string | undefined>()\n viewActionEnabledField = input<string | undefined>()\n editActionVisibleField = input<string | undefined>()\n editActionEnabledField = input<string | undefined>()\n tableSelectionEnabledField = input<string | undefined>()\n tableAllowSelectAll = input<boolean>(true)\n data = input<RowListGridData[]>([])\n name = input<string>('')\n titleLineId = input<string | undefined>()\n subtitleLineIds = input<string[]>()\n layout = input<any>()\n columns = input<DataTableColumn[]>([])\n emptyResultsMessage = input<string | undefined>()\n clientSideSorting = input<boolean>(true)\n clientSideFiltering = input<boolean>(true)\n fallbackImage = input<string>()\n filters = model<Filter[]>([])\n sortField = model<any>()\n sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n listGridPaginator = model<boolean>(true)\n tablePaginator = model<boolean>(true)\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator() && this.tablePaginator()\n }\n set paginator(value: boolean) {\n this.listGridPaginator.set(value)\n this.tablePaginator.set(value)\n }\n page = model<number>(0)\n totalRecordsOnServer = input<number | undefined>()\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n selectedRows = input<Row[]>([])\n frozenActionColumn = input<boolean>(false)\n actionColumnPosition = input<'left' | 'right'>('right')\n\n sortStates = input<DataSortDirection[]>([])\n pageSizes = input<number[]>([10, 25, 50])\n pageSize = model<number | undefined>()\n\n stringTableCellTemplate = input<TemplateRef<any> | undefined>()\n stringTableCellChildTemplate = contentChild<TemplateRef<any>>('stringTableCellTemplate')\n get stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCellTemplate() || this.stringTableCellChildTemplate()\n }\n\n numberTableCellTemplate = input<TemplateRef<any> | undefined>()\n numberTableCellChildTemplate = contentChild<TemplateRef<any>>('numberTableCellTemplate')\n get numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCellTemplate() || this.numberTableCellChildTemplate()\n }\n\n dateTableCellTemplate = input<TemplateRef<any> | undefined>()\n dateTableCellChildTemplate = contentChild<TemplateRef<any>>('dateTableCellTemplate')\n get dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate() || this.dateTableCellChildTemplate()\n }\n\n tableCellTemplate = input<TemplateRef<any> | undefined>()\n tableCellChildTemplate = contentChild<TemplateRef<any>>('tableCellTemplate')\n get tableCell(): TemplateRef<any> | undefined {\n return this.tableCellTemplate() || this.tableCellChildTemplate()\n }\n\n translationKeyTableCellTemplate = input<TemplateRef<any> | undefined>()\n translationKeyTableCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyTableCellTemplate')\n get translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCellTemplate() || this.translationKeyTableCellChildTemplate()\n }\n\n gridItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>()\n gridItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('gridItemSubtitleLinesTemplate')\n get gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate() || this.gridItemSubtitleLinesChildTemplate()\n }\n\n listItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>()\n listItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('listItemSubtitleLinesTemplate')\n get listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate() || this.listItemSubtitleLinesChildTemplate()\n }\n gridItemTemplate = input<TemplateRef<any> | undefined>()\n gridItemChildTemplate = contentChild<TemplateRef<any>>('gridItemTemplate')\n get gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate() || this.gridItemChildTemplate()\n }\n\n listItemTemplate = input<TemplateRef<any> | undefined>()\n listItemChildTemplate = contentChild<TemplateRef<any>>('listItemTemplate')\n get listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate() || this.listItemChildTemplate()\n }\n\n relativeDateTableCellTemplate = input<TemplateRef<any> | undefined>()\n relativeDateTableCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateTableCellTemplate')\n get relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCellTemplate() || this.relativeDateTableCellChildTemplate()\n }\n\n listValueTemplate = input<TemplateRef<any> | undefined>()\n listValueChildTemplate = contentChild<TemplateRef<any>>('listValueTemplate')\n get listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate() || this.listValueChildTemplate()\n }\n translationKeyListValueTemplate = input<TemplateRef<any> | undefined>()\n translationKeyListValueChildTemplate = contentChild<TemplateRef<any>>('translationKeyListValueTemplate')\n get translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate() || this.translationKeyListValueChildTemplate()\n }\n numberListValueTemplate = input<TemplateRef<any> | undefined>()\n numberListValueChildTemplate = contentChild<TemplateRef<any>>('numberListValueTemplate')\n get numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate() || this.numberListValueChildTemplate()\n }\n relativeDateListValueTemplate = input<TemplateRef<any> | undefined>()\n relativeDateListValueChildTemplate = contentChild<TemplateRef<any>>('relativeDateListValueTemplate')\n get relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate() || this.relativeDateListValueChildTemplate()\n }\n stringListValueTemplate = input<TemplateRef<any> | undefined>()\n stringListValueChildTemplate = contentChild<TemplateRef<any>>('stringListValueTemplate')\n get stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate() || this.stringListValueChildTemplate()\n }\n dateListValueTemplate = input<TemplateRef<any> | undefined>()\n dateListValueChildTemplate = contentChild<TemplateRef<any>>('dateListValueTemplate')\n get dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate() || this.dateListValueChildTemplate()\n }\n tableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n tableFilterCellChildTemplate = contentChild<TemplateRef<any>>('tableFilterCellTemplate')\n get tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCellTemplate() || this.tableFilterCellChildTemplate()\n }\n dateTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n dateTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('dateTableFilterCellTemplate')\n get dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCellTemplate() || this.dateTableFilterCellChildTemplate()\n }\n relativeDateTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n relativeDateTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateTableFilterCellTemplate')\n get relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCellTemplate() || this.relativeDateTableFilterCellChildTemplate()\n }\n translationKeyTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n translationKeyTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyTableFilterCellTemplate')\n get translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCellTemplate() || this.translationKeyTableFilterCellChildTemplate()\n }\n stringTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n stringTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('stringTableFilterCellTemplate')\n get stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCellTemplate() || this.stringTableFilterCellChildTemplate()\n }\n numberTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n numberTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('numberTableFilterCellTemplate')\n get numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCellTemplate() || this.numberTableFilterCellChildTemplate()\n }\n\n additionalActions = input<DataAction[]>([])\n\n filtered = output<Filter[]>()\n sorted = output<Sort>()\n @Output() deleteItem = observableOutput<RowListGridData>()\n @Output() viewItem = observableOutput<RowListGridData>()\n @Output() editItem = observableOutput<RowListGridData>()\n @Output() selectionChanged = observableOutput<Row[]>()\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n componentStateChanged = output<DataViewComponentState>()\n firstColumnId = signal<string | undefined>(undefined)\n\n parentTemplates = input<readonly PrimeTemplate[] | null | undefined>()\n\n templates = contentChildren(PrimeTemplate)\n\n templatesForChildren = computed(() => {\n const t = this.templates()\n const pt = this.parentTemplates()\n\n return [...t, ...(pt ?? [])]\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 constructor() {\n effect(() => {\n this.registerEventListenerForListGrid()\n })\n\n effect(() => {\n this.registerEventListenerForDataTable()\n })\n\n effect(() => {\n const filters = this.filters()\n if (filters) {\n this.filtered.emit(filters)\n }\n })\n\n effect(() => {\n const sortField = this.sortField()\n const sortDirection = this.sortDirection()\n if (sortField && sortDirection) {\n this.sorted.emit({ sortColumn: sortField, sortDirection: sortDirection })\n }\n })\n\n effect(() => {\n const page = this.page()\n if (page !== undefined) {\n this.pageChanged.emit(page)\n }\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (pageSize !== undefined) {\n this.pageSizeChanged.emit(pageSize)\n }\n })\n }\n\n ngOnInit(): void {\n const columns = this.columns()\n if (columns && columns.length > 0) {\n this.firstColumnId.set(columns[0]?.id)\n }\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 registerEventListenerForListGrid() {\n if (this.layout() !== 'table') {\n if (this.deleteItem.observed()) {\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 if (!this.dataListGridComponent()?.viewItem.observed()) {\n this.dataListGridComponent()?.viewItem.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed()) {\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 if (!this.dataTableComponent()?.deleteTableRow.observed()) {\n this.dataTableComponent()?.deleteTableRow.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed()) {\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 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.set(event)\n }\n\n sorting(event: any) {\n this.sortDirection.set(event.sortDirection)\n this.sortField.set(event.sortColumn)\n }\n\n deletingElement(event: any) {\n if (this.deleteItemObserved) {\n this.deleteItem.emit(event)\n }\n }\n\n viewingElement(event: any) {\n if (this.viewItemObserved) {\n this.viewItem.emit(event)\n }\n }\n editingElement(event: any) {\n if (this.editItemObserved) {\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.set(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize.set(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\"\n [listItemSubtitleLinesTemplate]=\"listItemSubtitleLines\"\n [listItemTemplate]=\"listItem\"\n [gridItemTemplate]=\"gridItem\"\n [listValueTemplate]=\"listValue\"\n [translationKeyListValueTemplate]=\"translationKeyListValue\"\n [numberListValueTemplate]=\"numberListValue\"\n [relativeDateListValueTemplate]=\"relativeDateListValue\"\n [stringListValueTemplate]=\"stringListValue\"\n [dateListValueTemplate]=\"dateListValue\"\n [totalRecordsOnServer]=\"totalRecordsOnServer()\"\n [parentTemplates]=\"templatesForChildren()\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLinesTemplate let-item>\n @if (listItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"listItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItemSubtitleLinesTemplate let-item>\n @if (gridItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"gridItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItemTemplate let-item>\n @if (gridItem) {\n <ng-container [ngTemplateOutlet]=\"gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listItemTemplate let-item>\n @if (listItem) {\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listValueTemplate 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 #translationKeyListValueTemplate 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 #numberListValueTemplate 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 #relativeDateListValueTemplate 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 #stringListValueTemplate 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 #dateListValueTemplate 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\"\n [numberCellTemplate]=\"numberTableCell\"\n [dateCellTemplate]=\"dateTableCell\"\n [relativeDateCellTemplate]=\"relativeDateTableCell\"\n [cellTemplate]=\"tableCell\"\n [translationKeyCellTemplate]=\"translationKeyTableCell\"\n [filterCellTemplate]=\"tableFilterCell\"\n [dateFilterCellTemplate]=\"dateTableFilterCell\"\n [numberFilterCellTemplate]=\"numberTableFilterCell\"\n [stringFilterCellTemplate]=\"stringTableFilterCell\"\n [relativeDateFilterCellTemplate]=\"relativeDateTableFilterCell\"\n [translationKeyFilterCellTemplate]=\"translationKeyTableFilterCell\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer()\"\n [currentPageShowingKey]=\"currentPageShowingKey()\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey()\"\n [parentTemplates]=\"templatesForChildren()\"\n [allowSelectAll]=\"tableAllowSelectAll()\"\n [selectionEnabledField]=\"tableSelectionEnabledField()\"\n >\n </ocx-data-table>\n <ng-template #stringCellTemplate 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 #numberCellTemplate 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 #dateCellTemplate 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 #relativeDateCellTemplate 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 #cellTemplate 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 #translationKeyCellTemplate 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 #stringFilterCellTemplate 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 #filterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n @if (tableFilterCell) {\n <ng-container [ngTemplateOutlet]=\"tableFilterCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n </ng-container>\n }\n </ng-template>\n <ng-template #dateFilterCellTemplate 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 #numberFilterCellTemplate 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 #relativeDateFilterCellTemplate 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 #translationKeyFilterCellTemplate 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, computed, effect, input, model, output, signal } from '@angular/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\nexport type ChartType = 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar'\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 {\n data = input<DiagramData[] | undefined>(undefined)\n sumKey = input<string>('OCX_DIAGRAM.SUM')\n fullHeight = input<boolean>(false)\n chartTitleKey = input<string>('')\n chartDescriptionKey = input<string>('')\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 fillMissingColors = input<boolean>(true)\n\n diagramType = model<DiagramType>(DiagramType.PIE)\n\n supportedDiagramTypes = input<DiagramType[]>([])\n\n selectedDiagramType = computed(() => allDiagramTypes.find((v) => v.layout === this.diagramType()))\n chartType = computed(() => this.diagramTypeToChartType(this.diagramType()))\n dataSelected = output<any>()\n diagramTypeChanged = output<DiagramType>()\n componentStateChanged = output<DiagramComponentState>()\n chartOptions = signal<ChartOptions>({})\n chartData = signal<ChartData | undefined>(undefined)\n amountOfData = signal<number | undefined | null>(undefined)\n shownDiagramTypes = computed(() => \n allDiagramTypes.filter((vl) => this.supportedDiagramTypes().includes(vl.layout))\n )\n // enabled for only pie chart as it contains legends which are hidden\n useFullHeight = computed(() =>\n this.diagramType() === DiagramType.PIE && this.fullHeight()\n )\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 private static nextUniqueId = 0;\n uniqueInstanceId: number;\n\n constructor() {\n this.uniqueInstanceId = DiagramComponent.nextUniqueId++;\n effect(() => {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n })\n }\n\n public generateChart(colorScale: any, colorRangeInfo: any) {\n const data = this.data()\n if (!data) return\n const inputData = data.map((diagramData) => diagramData.value)\n\n this.amountOfData.set(data.reduce((acc, current) => acc + current.value, 0))\n const COLORS = this.generateColors(data, colorScale, colorRangeInfo)\n this.chartData.set({\n labels: data.map((d) => d.label),\n datasets: [\n {\n data: inputData,\n backgroundColor: COLORS,\n },\n ],\n })\n\n this.chartOptions.set({\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(value: DiagramType): ChartType {\n if (value === DiagramType.PIE) return 'pie'\n else if (value === DiagramType.HORIZONTAL_BAR || value === DiagramType.VERTICAL_BAR) return 'bar'\n else return 'pie'\n }\n\n dataClicked(event: []) {\n this.dataSelected.emit(event.length)\n }\n\n onDiagramTypeChanged(event: any) {\n this.diagramType.set(event.value.layout)\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}","@if (chartTitleKey() || chartDescriptionKey()) {\n @if (chartTitleKey()) {\n <header class=\"diagram-title w-full flex justify-content-center\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-title'\">\n {{ chartTitleKey() | translate }}\n </header>\n }\n @if (chartDescriptionKey()) {\n <p class=\"diagram-description w-full flex justify-content-center\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-description'\">\n {{chartDescriptionKey() | translate }}</p>\n }\n}\n@if (data()) { @if (shownDiagramTypes().length > 1) {\n<div class=\"flex justify-content-center pb-2\">\n <p-selectbutton [options]=\"shownDiagramTypes()\" [ngModel]=\"selectedDiagramType()\" optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\" name=\"diagram-type-select-button\" [allowEmpty]=\"false\"\n [ariaLabel]=\"'OCX_DIAGRAM.SELECT_BUTTON.ARIA_LABEL' | translate\">\n <ng-template #item let-item>\n <i [class]=\"item.icon\" [ocxTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\" tooltipEvent=\"hover\"></i>\n <span class=\"sr-only\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-' + item.id\">{{item.label ? item.label : item.labelKey | translate}}</span>\n </ng-template>\n </p-selectbutton>\n</div>\n}\n<div class=\"w-full flex justify-content-center\" [ngClass]=\"{'h-full': useFullHeight()}\">\n <p-chart tabindex=\"0\" \n [attr.aria-describedby]=\"'ocx-' + uniqueInstanceId + '-sr-only-table'\" \n [attr.id]=\"'ocx-' + uniqueInstanceId + '-chart'\"\n [attr.data-automation-type]=\"chartType()\"\n [type]=\"chartType()\"\n [data]=\"chartData()\"\n [responsive]=\"useFullHeight()\"\n [attr.data-automation-options]=\"chartOptions()\" [options]=\"chartOptions()\" (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data() ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data() ?? []), valueString: generateDiagramValueString(data() ?? [])}\"></p-chart>\n <ng-container [ngTemplateOutlet]=\"chartDetailsForSr\"></ng-container>\n</div>\n<div class=\"w-full flex justify-content-center mt-2 sumKey\" aria-hidden=\"true\">\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} @if (!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\n\n<!-- Table for screen readers -->\n<ng-template #chartDetailsForSr>\n @if (data()) {\n <div class=\"w-full flex justify-content-center sr-only\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-sr-only-diagram-details'\">\n <table [attr.id]=\"'ocx-' + uniqueInstanceId + '-sr-only-table'\">\n <caption [attr.id]=\"'ocx-' + uniqueInstanceId + '-table-caption'\"> {{ chartTitleKey() | translate }} </caption>\n <thead>\n <tr>\n <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.COLOR' | translate }}</th>\n <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.LABEL' | translate }}</th>\n <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.COUNT' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of data(); track item) {\n <tr>\n <td>\n <span>{{ item.backgroundColor || ' ' }}</span>\n </td>\n <td>{{ item.label }}</td>\n <td>{{ item.value }}</td>\n </tr>\n }\n <tr>\n <td colspan=\"2\">{{ sumKey() | translate }}</td>\n <td>{{ amountOfData() }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n}\n</ng-template>","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 computed,\n effect,\n input,\n model,\n output,\n signal,\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 type { Observable } from 'rxjs'\nimport { 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 { toObservable } from '@angular/core/rxjs-interop'\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 {\n ColumnType = ColumnType\n FilterType = FilterType\n\n readonly filters = model<Filter[]>([])\n readonly columns = model<DataTableColumn[]>([])\n readonly displayMode = input<FilterViewDisplayMode>('button')\n readonly selectDisplayedChips = input<(filters: Filter[], columns: DataTableColumn[]) => Filter[]>((filters) =>\n limit(filters, 3, { reverse: true })\n )\n readonly chipStyleClass = input('')\n readonly tableStyle = input<{ [klass: string]: any }>({ 'max-height': '50vh' })\n readonly panelStyle = input<{ [klass: string]: any }>({ 'max-width': '90%' })\n\n readonly filtered = output<Filter[]>()\n readonly componentStateChanged = output<FilterViewComponentState>()\n\n readonly columnFilterTableColumns = signal<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 readonly panel = viewChild(Popover)\n readonly manageButton = viewChild<Button>('manageButton')\n\n readonly defaultTemplates = viewChildren(PrimeTemplate)\n readonly defaultTemplates$ = toObservable(this.defaultTemplates)\n\n readonly trigger = signal<HTMLElement | undefined>(undefined)\n\n readonly filterViewNoSelection = signal<TemplateRef<any> | undefined>(undefined)\n readonly filterViewChipContent = signal<TemplateRef<any> | undefined>(undefined)\n readonly filterViewShowMoreChip = signal<TemplateRef<any> | undefined>(undefined)\n\n readonly templates = input<readonly PrimeTemplate[] | null | undefined>(undefined)\n readonly templates$ = toObservable(this.templates)\n\n readonly columnFilterDataRows = computed(() => {\n const filters = this.filters()\n const columns = this.columns()\n\n const columnIds = columns.map((c: DataTableColumn) => c.id)\n return filters\n .map((f: Filter) => {\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: FilterViewRowDetailData | undefined): v is FilterViewRowDetailData => v !== undefined)\n .slice()\n .sort(\n (a: FilterViewRowDetailData, b: FilterViewRowDetailData) =>\n columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId)\n )\n })\n\n chipTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n tableTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n\n private readonly chipIdSuffix: Array<string> = ['IdFilterChip', 'IdTableFilterCell', 'IdTableCell']\n private readonly 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 private readonly chipTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n private readonly tableIdSuffix: Array<string> = ['IdFilterViewCell', 'IdTableFilterCell', 'IdTableCell']\n private readonly 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 private readonly tableTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n constructor() {\n effect(() => {\n const t = this.templates()\n\n t?.forEach((item) => {\n switch (item.getType()) {\n case 'filterViewNoSelection':\n this.filterViewNoSelection.set(item.template)\n break\n case 'filterViewChipContent':\n this.filterViewChipContent.set(item.template)\n break\n case 'filterViewShowMoreChip':\n this.filterViewShowMoreChip.set(item.template)\n break\n }\n })\n })\n\n effect(() => {\n const cols = this.columns()\n const columnFilterTableColumns = this.columnFilterTableColumns()\n\n const chipObs = cols.map((c) =>\n this.getTemplate(c, this.chipTemplateNames, this.chipTemplates, this.chipIdSuffix)\n )\n this.chipTemplates$ = chipObs.length\n ? combineLatest(chipObs).pipe(map((values) => Object.fromEntries(cols.map((c, i) => [c.id, values[i]]))))\n : undefined\n\n const tableTemplateColumns = cols.concat(columnFilterTableColumns)\n const tableObs = tableTemplateColumns.map((c) =>\n this.getTemplate(c, this.tableTemplateNames, this.tableTemplates, this.tableIdSuffix)\n )\n this.tableTemplates$ = tableObs.length\n ? combineLatest(tableObs).pipe(\n map((values) => Object.fromEntries(tableTemplateColumns.map((c, i) => [c.id, values[i]])))\n )\n : undefined\n })\n\n effect(() => {\n const filters = this.filters()\n this.filtered.emit(filters)\n this.componentStateChanged.emit({ filters })\n })\n }\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.templates$]).pipe(\n map(([dt, t]) => {\n const allTemplates = [...(dt ?? []), ...(t ?? [])]\n const columnTemplate = findTemplate(\n allTemplates,\n idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return findTemplate(allTemplates, templateNames[column.columnType])?.template ?? null\n }),\n debounceTime(50)\n )\n }\n\n return templates[column.id]\n }\n\n onResetFilersClick() {\n this.filters.set([])\n }\n\n onChipRemove(filter: Filter) {\n const filters = this.filters().filter((f) => f.value !== filter.value)\n this.filters.set(filters)\n }\n\n onFilterDelete(row: Row) {\n const filters = this.filters().filter((f) => !(f.columnId === row['valueColumnId'] && f.value === row['value']))\n this.filters.set(filters)\n }\n\n focusTrigger() {\n const trigger = this.trigger()\n const manageButton = this.manageButton()\n if (trigger?.id === 'ocxFilterViewShowMore') {\n trigger.focus()\n return\n }\n\n manageButton?.el.nativeElement.firstChild.focus()\n }\n\n showPanel(event: any) {\n this.trigger.set(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(); as columns) { @if (filters(); 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 ocxTooltip=\"{{ '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 (filterViewNoSelection()) {\n <ng-container [ngTemplateOutlet]=\"filterViewNoSelection()\"> </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 {\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 tabindex=\"0\"\n #manageButton\n id=\"ocxFilterViewManage\"\n (onClick)=\"showPanel($event)\"\n [disabled]=\"filters.length === 0\"\n icon=\"pi pi-sliders-h\"\n label=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.LABEL' | translate }}\"\n [ocxTooltip]=\"\n filters.length === 0\n ? ('OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DISABLED_DETAIL' | translate)\n : ('OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DETAIL' | translate)\n \"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n aria-describedby=\"ocx-manage-filters-tooltip\"\n [tooltipOptions]=\"{ id: 'ocx-manage-filters-tooltip' }\"\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 ocxTooltip=\"{{ '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()\"\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 {\n Component,\n effect,\n inject,\n input,\n model,\n output,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { 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'\nimport { toObservable } from '@angular/core/rxjs-interop'\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 {\n private translateService = inject(TranslateService)\n\n sumKey = input<string>('SEARCH.SUMMARY_TITLE')\n diagramType = model<DiagramType>(DiagramType.PIE)\n chartTitleKey = input<string>('')\n chartDescriptionKey = input<string>('')\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.\n * In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n fillMissingColors = input<boolean>(true)\n supportedDiagramTypes = input<DiagramType[]>([])\n\n data = model<unknown[]>([])\n\n allLabelKeys = input<string[]>([])\n\n showAllLabels = input<boolean>(false)\n\n columnType = model<ColumnType>(ColumnType.STRING)\n\n columnField = model<string>('')\n\n column = input<DiagramColumn>()\n\n fullHeight = input<boolean>(false)\n \n colors = model<Record<string, string>>({})\n\n dataSelected = output<any>()\n diagramTypeChanged = output<DiagramType>()\n componentStateChanged = output<GroupByCountDiagramComponentState>()\n\n diagramData$ = combineLatest([\n toObservable(this.data),\n toObservable(this.columnField),\n toObservable(this.columnType),\n toObservable(this.colors),\n toObservable(this.allLabelKeys),\n toObservable(this.showAllLabels),\n ]).pipe(\n mergeMap(([data, columnField, columnType, colors, allLabelKeys, showAllLabels]) => {\n const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField))\n let occurrences: DiagramData[] = []\n\n if (showAllLabels && allLabelKeys.length > 0) {\n occurrences = allLabelKeys.map((label) => ({\n label: label,\n value: 0,\n backgroundColor: colors[label],\n }))\n\n columnData.forEach((current) => {\n const foundColumn = occurrences.find((e) => e.label === current)\n if (foundColumn) {\n foundColumn.value++\n } else {\n occurrences.push({ label: current, value: 1, backgroundColor: colors[current.toString()] })\n }\n })\n } else {\n occurrences = columnData.reduce((acc, current) => {\n return acc.some((e: { label: string }) => e.label === current)\n ? (acc.find((e: { label: string }) => e.label === current).value++, acc)\n : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }]\n }, [])\n }\n\n if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {\n return this.translateService.get(occurrences.map((o) => o.label)).pipe(\n map((translations) =>\n occurrences.map((o) => ({\n label: translations[o.label],\n value: o.value,\n backgroundColor: o.backgroundColor,\n }))\n )\n )\n }\n return of(occurrences)\n })\n )\n\n constructor() {\n effect(() => {\n const column = this.column()\n if (!column) return\n this.columnType.set(column.columnType)\n this.columnField.set(column.id)\n })\n }\n\n dataClicked(event: any) {\n this.dataSelected.emit(event)\n }\n\n onDiagramTypeChanged(newDiagramType: DiagramType) {\n this.diagramType.set(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 [fullHeight]=\"fullHeight()\"\n [diagramType]=\"diagramType()\"\n [chartTitleKey]=\"chartTitleKey()\"\n [chartDescriptionKey]=\"chartDescriptionKey()\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes()\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>","import {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core'\nimport { SlotService } from '@onecx/angular-remote-components'\nimport { PrimeTemplate } from 'primeng/api'\nimport { 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 { 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'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { PermissionInput } from '../../model/permission.model'\n\nexport type ViewLayout = 'grid' | 'list' | 'table'\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 {\n private readonly slotService = inject(SlotService)\n private readonly destroyRef = inject(DestroyRef)\n\n dataViewComponent = viewChild(DataViewComponent)\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 searchConfigPermission = input<PermissionInput>(undefined)\n deletePermission = input<PermissionInput>(undefined)\n editPermission = input<PermissionInput>(undefined)\n viewPermission = input<PermissionInput>(undefined)\n deleteActionVisibleField = input<string | undefined>(undefined)\n deleteActionEnabledField = input<string | undefined>(undefined)\n viewActionVisibleField = input<string | undefined>(undefined)\n viewActionEnabledField = input<string | undefined>(undefined)\n editActionVisibleField = input<string | undefined>(undefined)\n editActionEnabledField = input<string | undefined>(undefined)\n tableSelectionEnabledField = input<string | undefined>(undefined)\n tableAllowSelectAll = input<boolean>(true)\n name = input<string>('Data')\n titleLineId = input<string | undefined>(undefined)\n subtitleLineIds = input<string[] | undefined>(undefined)\n supportedViewLayouts = input<ViewLayout[]>(['grid', 'list', 'table'])\n columns = input<DataTableColumn[]>([])\n emptyResultsMessage = input<string | undefined>(undefined)\n clientSideSorting = input<boolean>(true)\n clientSideFiltering = input<boolean>(true)\n fallbackImage = input<string>('placeholder.png')\n filters = model<Filter[]>([])\n sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n sortField = model<any>('')\n sortStates = input<DataSortDirection[]>([\n DataSortDirection.ASCENDING,\n DataSortDirection.DESCENDING,\n DataSortDirection.NONE,\n ])\n pageSizes = input<number[]>([10, 25, 50])\n pageSize = model<number | undefined>(undefined)\n totalRecordsOnServer = input<number | undefined>(undefined)\n layout = model<ViewLayout>('table')\n defaultGroupKey = input<string>('')\n customGroupKey = input<string>('OCX_INTERACTIVE_DATA_VIEW.CUSTOM_GROUP')\n groupSelectionNoGroupSelectedKey = input<string>('OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED')\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n additionalActions = input<DataAction[]>([])\n listGridPaginator = model<boolean>(true)\n tablePaginator = model<boolean>(true)\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator() && this.tablePaginator()\n }\n set paginator(value: boolean) {\n this.listGridPaginator.set(value)\n this.tablePaginator.set(value)\n }\n disableFilterView = input<boolean>(true)\n filterViewDisplayMode = input<FilterViewDisplayMode>('button')\n filterViewChipStyleClass = input<string>('')\n filterViewTableStyle = input<{ [klass: string]: any }>({ 'max-height': '50vh' })\n filterViewPanelStyle = input<{ [klass: string]: any }>({ 'max-width': '90%' })\n selectDisplayedChips = input<(filters: Filter[], columns: DataTableColumn[]) => Filter[]>((filters) =>\n limit(filters, 3, { reverse: true })\n )\n page = model<number>(0)\n selectedRows = input<Row[]>([])\n displayedColumnKeys = model<string[]>([])\n displayedColumns = computed(() => {\n const columnKeys = this.displayedColumnKeys()\n return (\n (columnKeys.map((key) => this.columns().find((col) => col.id === key)).filter(Boolean) as DataTableColumn[]) ??\n []\n )\n })\n frozenActionColumn = model<boolean>(false)\n actionColumnPosition = model<'left' | 'right'>('right')\n headerStyleClass = input<string | undefined>(undefined)\n contentStyleClass = input<string | undefined>(undefined)\n\n childTableCell = contentChild<TemplateRef<any> | undefined>('tableCell')\n primeNgTableCell = computed(() => {\n const templates = this.templates()\n const tableCellTemplate = templates.find((t) => t.getType() === 'tableCell')\n return tableCellTemplate?.template ?? undefined\n })\n _tableCell = computed(() => {\n const primeNgTableCell = this.primeNgTableCell()\n const childTableCell = this.childTableCell()\n return primeNgTableCell ?? childTableCell ?? undefined\n })\n\n childDateTableCell = contentChild<TemplateRef<any> | undefined>('dateTableCell')\n primeNgDateTableCell = computed(() => {\n const templates = this.templates()\n const dateTableCellTemplate = templates.find((t) => t.getType() === 'dateTableCell')\n return dateTableCellTemplate?.template ?? undefined\n })\n _dateTableCell = computed(() => {\n const primeNgDateTableCell = this.primeNgDateTableCell()\n const childDateTableCell = this.childDateTableCell()\n return primeNgDateTableCell ?? childDateTableCell ?? undefined\n })\n\n childRelativeDateTableCell = contentChild<TemplateRef<any> | undefined>('relativeDateTableCell')\n primeNgRelativeDateTableCell = computed(() => {\n const templates = this.templates()\n const relativeDateTableCellTemplate = templates.find((t) => t.getType() === 'relativeDateTableCell')\n return relativeDateTableCellTemplate?.template ?? undefined\n })\n _relativeDateTableCell = computed(() => {\n const primeNgRelativeDateTableCell = this.primeNgRelativeDateTableCell()\n const childRelativeDateTableCell = this.childRelativeDateTableCell()\n return primeNgRelativeDateTableCell ?? childRelativeDateTableCell ?? undefined\n })\n\n childTranslationKeyTableCell = contentChild<TemplateRef<any> | undefined>('translationKeyTableCell')\n primeNgTranslationKeyTableCell = computed(() => {\n const templates = this.templates()\n const translationKeyTableCellTemplate = templates.find((t) => t.getType() === 'translationKeyTableCell')\n return translationKeyTableCellTemplate?.template ?? undefined\n })\n _translationKeyTableCell = computed(() => {\n const primeNgTranslationKeyTableCell = this.primeNgTranslationKeyTableCell()\n const childTranslationKeyTableCell = this.childTranslationKeyTableCell()\n return primeNgTranslationKeyTableCell ?? childTranslationKeyTableCell ?? undefined\n })\n\n childGridItemSubtitleLines = contentChild<TemplateRef<any> | undefined>('gridItemSubtitleLines')\n primeNgGridItemSubtitleLines = computed(() => {\n const templates = this.templates()\n const gridItemSubtitleLinesTemplate = templates.find((t) => t.getType() === 'gridItemSubtitleLines')\n return gridItemSubtitleLinesTemplate?.template ?? undefined\n })\n _gridItemSubtitleLines = computed(() => {\n const primeNgGridItemSubtitleLines = this.primeNgGridItemSubtitleLines()\n const childGridItemSubtitleLines = this.childGridItemSubtitleLines()\n return primeNgGridItemSubtitleLines ?? childGridItemSubtitleLines ?? undefined\n })\n\n childListItemSubtitleLines = contentChild<TemplateRef<any> | undefined>('listItemSubtitleLines')\n primeNgListItemSubtitleLines = computed(() => {\n const templates = this.templates()\n const listItemSubtitleLinesTemplate = templates.find((t) => t.getType() === 'listItemSubtitleLines')\n return listItemSubtitleLinesTemplate?.template ?? undefined\n })\n _listItemSubtitleLines = computed(() => {\n const primeNgListItemSubtitleLines = this.primeNgListItemSubtitleLines()\n const childListItemSubtitleLines = this.childListItemSubtitleLines()\n return primeNgListItemSubtitleLines ?? childListItemSubtitleLines ?? undefined\n })\n\n childStringTableCell = contentChild<TemplateRef<any> | undefined>('stringTableCell')\n primeNgStringTableCell = computed(() => {\n const templates = this.templates()\n const stringTableCellTemplate = templates.find((t) => t.getType() === 'stringTableCell')\n return stringTableCellTemplate?.template ?? undefined\n })\n _stringTableCell = computed(() => {\n const primeNgStringTableCell = this.primeNgStringTableCell()\n const childStringTableCell = this.childStringTableCell()\n return primeNgStringTableCell ?? childStringTableCell ?? undefined\n })\n\n childNumberTableCell = contentChild<TemplateRef<any> | undefined>('numberTableCell')\n primeNgNumberTableCell = computed(() => {\n const templates = this.templates()\n const numberTableCellTemplate = templates.find((t) => t.getType() === 'numberTableCell')\n return numberTableCellTemplate?.template ?? undefined\n })\n _numberTableCell = computed(() => {\n const primeNgNumberTableCell = this.primeNgNumberTableCell()\n const childNumberTableCell = this.childNumberTableCell()\n return primeNgNumberTableCell ?? childNumberTableCell ?? undefined\n })\n\n childGridItem = contentChild<TemplateRef<any> | undefined>('gridItem')\n primeNgGridItem = computed(() => {\n const templates = this.templates()\n const gridItemTemplate = templates.find((t) => t.getType() === 'gridItem')\n return gridItemTemplate?.template ?? undefined\n })\n _gridItem = computed(() => {\n const primeNgGridItem = this.primeNgGridItem()\n const childGridItem = this.childGridItem()\n return primeNgGridItem ?? childGridItem ?? undefined\n })\n\n childListItem = contentChild<TemplateRef<any> | undefined>('listItem')\n primeNgListItem = computed(() => {\n const templates = this.templates()\n const listItemTemplate = templates.find((t) => t.getType() === 'listItem')\n return listItemTemplate?.template ?? undefined\n })\n _listItem = computed(() => {\n const primeNgListItem = this.primeNgListItem()\n const childListItem = this.childListItem()\n return primeNgListItem ?? childListItem ?? undefined\n })\n\n childTopCenter = contentChild<TemplateRef<any> | undefined>('topCenter')\n primeNgTopCenter = computed(() => {\n const templates = this.templates()\n const topCenterTemplate = templates.find((t) => t.getType() === 'topCenter')\n return topCenterTemplate?.template ?? undefined\n })\n _topCenter = computed(() => {\n const primeNgTopCenter = this.primeNgTopCenter()\n const childTopCenter = this.childTopCenter()\n return primeNgTopCenter ?? childTopCenter ?? undefined\n })\n\n childListValue = contentChild<TemplateRef<any> | undefined>('listValue')\n primeNgListValue = computed(() => {\n const templates = this.templates()\n const listValueTemplate = templates.find((t) => t.getType() === 'listValue')\n return listValueTemplate?.template ?? undefined\n })\n _listValue = computed(() => {\n const primeNgListValue = this.primeNgListValue()\n const childListValue = this.childListValue()\n return primeNgListValue ?? childListValue ?? undefined\n })\n\n childTranslationKeyListValue = contentChild<TemplateRef<any> | undefined>('translationKeyListValue')\n primeNgTranslationKeyListValue = computed(() => {\n const templates = this.templates()\n const translationKeyListValueTemplate = templates.find((t) => t.getType() === 'translationKeyListValue')\n return translationKeyListValueTemplate?.template ?? undefined\n })\n _translationKeyListValue = computed(() => {\n const primeNgTranslationKeyListValue = this.primeNgTranslationKeyListValue()\n const childTranslationKeyListValue = this.childTranslationKeyListValue()\n return primeNgTranslationKeyListValue ?? childTranslationKeyListValue ?? undefined\n })\n\n childNumberListValue = contentChild<TemplateRef<any> | undefined>('numberListValue')\n primeNgNumberListValue = computed(() => {\n const templates = this.templates()\n const numberListValueTemplate = templates.find((t) => t.getType() === 'numberListValue')\n return numberListValueTemplate?.template ?? undefined\n })\n _numberListValue = computed(() => {\n const primeNgNumberListValue = this.primeNgNumberListValue()\n const childNumberListValue = this.childNumberListValue()\n return primeNgNumberListValue ?? childNumberListValue ?? undefined\n })\n\n childRelativeDateListValue = contentChild<TemplateRef<any> | undefined>('relativeDateListValue')\n primeNgRelativeDateListValue = computed(() => {\n const templates = this.templates()\n const relativeDateListValueTemplate = templates.find((t) => t.getType() === 'relativeDateListValue')\n return relativeDateListValueTemplate?.template ?? undefined\n })\n _relativeDateListValue = computed(() => {\n const primeNgRelativeDateListValue = this.primeNgRelativeDateListValue()\n const childRelativeDateListValue = this.childRelativeDateListValue()\n return primeNgRelativeDateListValue ?? childRelativeDateListValue ?? undefined\n })\n\n childStringListValue = contentChild<TemplateRef<any> | undefined>('stringListValue')\n primeNgStringListValue = computed(() => {\n const templates = this.templates()\n const stringListValueTemplate = templates.find((t) => t.getType() === 'stringListValue')\n return stringListValueTemplate?.template ?? undefined\n })\n _stringListValue = computed(() => {\n const primeNgStringListValue = this.primeNgStringListValue()\n const childStringListValue = this.childStringListValue()\n return primeNgStringListValue ?? childStringListValue ?? undefined\n })\n\n childDateListValue = contentChild<TemplateRef<any> | undefined>('dateListValue')\n primeNgDateListValue = computed(() => {\n const templates = this.templates()\n const dateListValueTemplate = templates.find((t) => t.getType() === 'dateListValue')\n return dateListValueTemplate?.template ?? undefined\n })\n _dateListValue = computed(() => {\n const primeNgDateListValue = this.primeNgDateListValue()\n const childDateListValue = this.childDateListValue()\n return primeNgDateListValue ?? childDateListValue ?? undefined\n })\n\n childTableFilterCell = contentChild<TemplateRef<any> | undefined>('tableFilterCell')\n primeNgTableFilterCell = computed(() => {\n const templates = this.templates()\n const tableFilterCellTemplate = templates.find((t) => t.getType() === 'tableFilterCell')\n return tableFilterCellTemplate?.template ?? undefined\n })\n _tableFilterCell = computed(() => {\n const primeNgTableFilterCell = this.primeNgTableFilterCell()\n const childTableFilterCell = this.childTableFilterCell()\n return primeNgTableFilterCell ?? childTableFilterCell ?? undefined\n })\n\n childDateTableFilterCell = contentChild<TemplateRef<any> | undefined>('dateTableFilterCell')\n primeNgDateTableFilterCell = computed(() => {\n const templates = this.templates()\n const dateTableFilterCellTemplate = templates.find((t) => t.getType() === 'dateTableFilterCell')\n return dateTableFilterCellTemplate?.template ?? undefined\n })\n _dateTableFilterCell = computed(() => {\n const primeNgDateTableFilterCell = this.primeNgDateTableFilterCell()\n const childDateTableFilterCell = this.childDateTableFilterCell()\n return primeNgDateTableFilterCell ?? childDateTableFilterCell ?? undefined\n })\n\n childRelativeDateTableFilterCell = contentChild<TemplateRef<any> | undefined>('relativeDateTableFilterCell')\n primeNgRelativeDateTableFilterCell = computed(() => {\n const templates = this.templates()\n const relativeDateTableFilterCellTemplate = templates.find((t) => t.getType() === 'relativeDateTableFilterCell')\n return relativeDateTableFilterCellTemplate?.template ?? undefined\n })\n _relativeDateTableFilterCell = computed(() => {\n const primeNgRelativeDateTableFilterCell = this.primeNgRelativeDateTableFilterCell()\n const childRelativeDateTableFilterCell = this.childRelativeDateTableFilterCell()\n return primeNgRelativeDateTableFilterCell ?? childRelativeDateTableFilterCell ?? undefined\n })\n\n childTranslationKeyTableFilterCell = contentChild<TemplateRef<any> | undefined>('translationKeyTableFilterCell')\n primeNgTranslationKeyTableFilterCell = computed(() => {\n const templates = this.templates()\n const translationKeyTableFilterCellTemplate = templates.find((t) => t.getType() === 'translationKeyTableFilterCell')\n return translationKeyTableFilterCellTemplate?.template ?? undefined\n })\n _translationKeyTableFilterCell = computed(() => {\n const primeNgTranslationKeyTableFilterCell = this.primeNgTranslationKeyTableFilterCell()\n const childTranslationKeyTableFilterCell = this.childTranslationKeyTableFilterCell()\n return primeNgTranslationKeyTableFilterCell ?? childTranslationKeyTableFilterCell ?? undefined\n })\n\n childStringTableFilterCell = contentChild<TemplateRef<any> | undefined>('stringTableFilterCell')\n primeNgStringTableFilterCell = computed(() => {\n const templates = this.templates()\n const stringTableFilterCellTemplate = templates.find((t) => t.getType() === 'stringTableFilterCell')\n return stringTableFilterCellTemplate?.template ?? undefined\n })\n _stringTableFilterCell = computed(() => {\n const primeNgStringTableFilterCell = this.primeNgStringTableFilterCell()\n const childStringTableFilterCell = this.childStringTableFilterCell()\n return primeNgStringTableFilterCell ?? childStringTableFilterCell ?? undefined\n })\n\n childNumberTableFilterCell = contentChild<TemplateRef<any> | undefined>('numberTableFilterCell')\n primeNgNumberTableFilterCell = computed(() => {\n const templates = this.templates()\n const numberTableFilterCellTemplate = templates.find((t) => t.getType() === 'numberTableFilterCell')\n return numberTableFilterCellTemplate?.template ?? undefined\n })\n _numberTableFilterCell = computed(() => {\n const primeNgNumberTableFilterCell = this.primeNgNumberTableFilterCell()\n const childNumberTableFilterCell = this.childNumberTableFilterCell()\n return primeNgNumberTableFilterCell ?? childNumberTableFilterCell ?? undefined\n })\n\n templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n\n filtered = output<Filter[]>()\n sorted = output<Sort>()\n @Output() deleteItem = observableOutput<RowListGridData>()\n @Output() viewItem = observableOutput<RowListGridData>()\n @Output() editItem = observableOutput<RowListGridData>()\n @Output() selectionChanged = observableOutput<Row[]>()\n dataViewLayoutChange = output<'grid' | 'list' | 'table'>()\n displayedColumnKeysChange = output<string[]>()\n\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n\n componentStateChanged = output<InteractiveDataViewComponentState>()\n\n selectedGroupKey = signal<string | undefined>(undefined)\n\n data = input<RowListGridData[]>([])\n\n readonly columnGroupSlotName = 'onecx-column-group-selection'\n isColumnGroupSelectionComponentDefined$: Observable<boolean>\n isColumnGroupSelectionComponentDefined: Signal<boolean | undefined>\n groupSelectionChangedSlotEmitter = output<ColumnGroupData | undefined>()\n\n // Internal EventEmitter for handling slot's groupSelectionChanged output\n // Used for communication between the slot component and this component's internal logic\n readonly slotGroupSelectionChangeListener = new EventEmitter<ColumnGroupData | undefined>()\n\n constructor() {\n this.isColumnGroupSelectionComponentDefined$ = this.slotService\n .isSomeComponentDefinedForSlot(this.columnGroupSlotName)\n .pipe(startWith(true))\n\n this.isColumnGroupSelectionComponentDefined = toSignal(this.isColumnGroupSelectionComponentDefined$)\n\n const subscription = this.slotGroupSelectionChangeListener.subscribe((event) => {\n this.triggerGroupSelectionChanged(event)\n })\n this.destroyRef.onDestroy(() => subscription.unsubscribe())\n\n effect(() => {\n this.registerEventListenerForDataView()\n })\n\n effect(() => {\n const filters = this.filters()\n this.filtered.emit(filters)\n })\n\n effect(() => {\n const sortField = this.sortField()\n const sortDirection = this.sortDirection()\n this.sorted.emit({ sortColumn: sortField, sortDirection })\n })\n\n effect(() => {\n const layout = this.layout()\n this.dataViewLayoutChange.emit(layout)\n })\n\n effect(() => {\n const page = this.page()\n this.pageChanged.emit(page)\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (!pageSize) {\n return\n }\n this.pageSizeChanged.emit(pageSize)\n })\n\n effect(() => {\n const displayedColumnKeys = this.displayedColumnKeys()\n this.displayedColumnKeysChange.emit(displayedColumnKeys)\n })\n\n effect(() => {\n this.layout()\n untracked(() => {\n const columnGroupComponentDefined = this.isColumnGroupSelectionComponentDefined()\n if (columnGroupComponentDefined) {\n if (\n !(\n this.columns().some((c) => c.nameKey === this.selectedGroupKey()) ||\n this.selectedGroupKey() === this.customGroupKey()\n )\n ) {\n this.selectedGroupKey.set(undefined)\n }\n }\n })\n })\n\n }\n\n /**\n * Triggers the group selection changed logic. This method should be called\n * when the column group selection changes, either from the UI or programmatically.\n * It updates the displayed columns, selected group key, and emits the change event.\n * \n * @param event The column group data, or undefined to use current state\n */\n triggerGroupSelectionChanged(event: ColumnGroupData | undefined): void {\n event ??= {\n activeColumns: this.displayedColumns(),\n groupKey: this.selectedGroupKey() ?? this.defaultGroupKey(),\n }\n const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.displayedColumnKeys.set(displayedColumnKeys)\n this.selectedGroupKey.set(event.groupKey)\n this.columnGroupSelectionComponentState$.next({\n activeColumnGroupKey: event.groupKey,\n displayedColumns: event.activeColumns,\n })\n this.groupSelectionChangedSlotEmitter.emit(event)\n }\n\n ngOnInit(): void {\n this.selectedGroupKey.set(this.defaultGroupKey())\n\n if (this.defaultGroupKey() && this.defaultGroupKey() !== this.customGroupKey()) {\n this.displayedColumnKeys.set(\n this.columns()\n .filter((column) => column.predefinedGroupKeys?.includes(this.defaultGroupKey()))\n .map((column) => column.id)\n )\n }\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.displayedColumns(),\n })\n )\n customGroupColumnSelectorComponentState$ = customGroupColumnSelectorComponentState$.pipe(\n startWith({\n actionColumnConfig: {\n frozen: this.frozenActionColumn(),\n position: this.actionColumnPosition(),\n },\n displayedColumns: this.displayedColumns(),\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 filtering(event: any) {\n this.filters.set(event)\n }\n\n sorting(event: any) {\n this.sortDirection.set(event.sortDirection)\n this.sortField.set(event.sortColumn)\n }\n\n onDeleteElement(element: RowListGridData) {\n if (this.deleteItem.observed()) {\n this.deleteItem.emit(element)\n }\n }\n\n onViewElement(element: RowListGridData) {\n if (this.viewItem.observed()) {\n this.viewItem.emit(element)\n }\n }\n\n onEditElement(element: RowListGridData) {\n if (this.editItem.observed()) {\n this.editItem.emit(element)\n }\n }\n\n onDataViewLayoutChange(layout: ViewLayout) {\n this.layout.set(layout)\n }\n\n onSortChange($event: any) {\n this.sortField.set($event)\n }\n\n onSortDirectionChange($event: any) {\n this.sortDirection.set($event)\n }\n\n onColumnGroupSelectionChange(event: GroupSelectionChangedEvent) {\n const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.displayedColumnKeys.set(displayedColumnKeys)\n this.selectedGroupKey.set(event.groupKey)\n }\n\n registerEventListenerForDataView() {\n if (this.deleteItem.observed()) {\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 if (!this.dataViewComponent()?.viewItem.observed()) {\n this.dataViewComponent()?.viewItem.subscribe((event) => {\n this.onViewElement(event)\n })\n }\n }\n if (this.editItem.observed()) {\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 const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.displayedColumnKeys.set(displayedColumnKeys)\n this.selectedGroupKey.set(this.customGroupKey())\n }\n\n onActionColumnConfigChange(event: ActionColumnChangedEvent) {\n this.frozenActionColumn.set(event.frozenActionColumn)\n this.actionColumnPosition.set(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.set(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize.set(event)\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()\"\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(); as topCenterTemplate) {\n <div>\n <ng-container [ngTemplateOutlet]=\"topCenterTemplate\"> </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()\"\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() ?? true) {\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: slotGroupSelectionChangeListener }\"\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()\"\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()\"\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]=\"_stringTableCell()\"\n [numberTableCellTemplate]=\"_numberTableCell()\"\n [dateTableCellTemplate]=\"_dateTableCell()\"\n [relativeDateTableCellTemplate]=\"_relativeDateTableCell()\"\n [tableCellTemplate]=\"_tableCell()\"\n [translationKeyTableCellTemplate]=\"_translationKeyTableCell()\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines()\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines()\"\n [listItemTemplate]=\"_listItem()\"\n [listValueTemplate]=\"_listValue()\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue()\"\n [numberListValueTemplate]=\"_numberListValue()\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue()\"\n [stringListValueTemplate]=\"_stringListValue()\"\n [dateListValueTemplate]=\"_dateListValue()\"\n [gridItemTemplate]=\"_gridItem()\"\n [tableFilterCellTemplate]=\"_tableFilterCell()\"\n [dateTableFilterCellTemplate]=\"_dateTableFilterCell()\"\n [numberTableFilterCellTemplate]=\"_numberTableFilterCell()\"\n [stringTableFilterCellTemplate]=\"_stringTableFilterCell()\"\n [relativeDateTableFilterCellTemplate]=\"_relativeDateTableFilterCell()\"\n [translationKeyTableFilterCellTemplate]=\"_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()\"\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","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 steps = input<LifecycleStep[]>([])\n activeStepId = input<string | undefined>(undefined)\n}\n","<p-timeline [value]=\"steps()\">\n <ng-template pTemplate=\"marker\" let-step>\n <span\n class=\"p-timeline-event-marker\"\n [ngClass]=\"activeStepId() && activeStepId() === step.id ? 'bg-primary' : ''\"\n ></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 { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core'\n\nconst STORAGE_KEY = 'onecx-consent'\nlet nextConsentComponentId = 0\n\ntype ConsentStorage = string[]\n\n/**\n * Payload emitted by {@link ConsentComponent.consentChanged}.\n *\n * Notes for GDPR/ePrivacy implementations:\n * - `hasConsent=true` indicates that the user has explicitly opted in for the given `url` (and optional `purpose`).\n * - `hasConsent=false` indicates that the previously stored consent was withdrawn via {@link ConsentComponent.resetConsent}.\n * - `purpose` is echoed back so consumers can handle multiple consent purposes (e.g. `maps`, `analytics`).\n */\nexport type ConsentChangedEvent = {\n url: string\n hasConsent: boolean\n purpose?: string\n}\n\n@Component({\n selector: 'ocx-consent',\n standalone: false,\n templateUrl: './consent.component.html',\n styleUrls: ['./consent.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * UI component to gate projected content behind explicit user consent.\n *\n * Intended GDPR/ePrivacy usage (example: Leaflet + OpenStreetMap tiles):\n * - Put the map component (and any code that triggers network requests) inside the projected content.\n * - Do not instantiate/load third-party resources before consent, otherwise requests may be sent pre-consent.\n * - Provide sufficient information to the user (provider name, privacy policy) via the optional\n * `[ocx-consent-info]` projection slot.\n * - Enable withdrawal with `[showWithdraw]=\"true\"` and handle `consentChanged` with `hasConsent=false`.\n *\n * Example:\n * ```html\n * <ocx-consent\n * [url]=\"tileServerUrl\"\n * purpose=\"maps\"\n * [showWithdraw]=\"true\"\n * (consentChanged)=\"onMapConsentChanged($event)\"\n * >\n * <a ocx-consent-info href=\"/privacy\">Privacy policy</a>\n *\n * <!-- Only render/init Leaflet after consent. -->\n * <app-leaflet-map *ngIf=\"mapConsentGranted\" [tileUrl]=\"tileServerUrl\" />\n * </ocx-consent>\n * ```\n *\n * ```ts\n * import type { ConsentChangedEvent } from './consent.component'\n *\n * tileServerUrl = 'https://tile.openstreetmap.org'\n * mapConsentGranted = false\n *\n * onMapConsentChanged(e: ConsentChangedEvent) {\n * if (e.purpose !== 'maps') return\n * this.mapConsentGranted = e.hasConsent\n * }\n * ```\n *\n * Storage:\n * - Uses `localStorage` key `onecx-consent`.\n * - The stored JSON is a string array.\n * - Entries are either `<normalizedUrl>` (no purpose) or `<normalizedUrl>::<purpose>`.\n */\nexport class ConsentComponent {\n protected readonly titleId = `ocx-consent-title-${++nextConsentComponentId}`\n protected readonly messageId = `ocx-consent-message-${nextConsentComponentId}`\n\n /**\n * Target URL that the gated content will contact (e.g. the tile server URL).\n * Used for display and for consent matching.\n */\n url = input.required<string>()\n\n /**\n * Optional purpose scope for consent (e.g. `maps`, `analytics`).\n * When set, consent is stored and matched as `<url>::<purpose>`.\n */\n purpose = input<string | undefined>(undefined)\n\n /** Translation key for the consent dialog title. */\n titleKey = input<string>('OCX_CONSENT.TITLE')\n /** Translation key for the consent dialog message (receives `{ url }`). */\n messageKey = input<string>('OCX_CONSENT.MESSAGE')\n /** Translation key for the agree button. */\n agreeKey = input<string>('OCX_CONSENT.AGREE')\n /** Translation key for the withdraw button. */\n withdrawKey = input<string>('OCX_CONSENT.WITHDRAW')\n\n /**\n * When enabled, shows a withdraw button that removes the stored consent.\n * This helps meeting the requirement that withdrawal should be as easy as opt-in.\n */\n showWithdraw = input<boolean>(true)\n\n /**\n * Emits whenever consent is granted or withdrawn.\n * Consumers should only render/initialize third-party code after receiving `hasConsent=true`.\n */\n consentChanged = output<ConsentChangedEvent>()\n\n localStorageUpdatedTimestamp = signal<number>(0)\n\n protected normalizedUrl = computed(() => this.normalizeUrl(this.url()))\n\n protected hasConsent = computed(() => {\n // Manually call localStorageUpdatedTimestamp signal so that computation re-runs on each localStorage change\n this.localStorageUpdatedTimestamp()\n const normalized = this.normalizedUrl()\n if (!normalized) return false\n\n return this.hasStoredConsent(normalized)\n })\n\n protected giveConsent(): void {\n const normalized = this.normalizedUrl()\n if (!normalized) return\n\n const current = this.readConsents()\n const alreadyPresent = this.hasStoredConsent(normalized, current)\n if (!alreadyPresent) {\n const entry = this.toStorageEntry(normalized, this.purpose())\n const updated = entry ? [...current, entry] : [...current]\n this.writeConsents(updated)\n this.consentChanged.emit({ url: normalized, hasConsent: true, purpose: this.purpose() })\n }\n }\n\n protected resetConsent(): void {\n const normalized = this.normalizedUrl()\n if (!normalized) return\n\n const purpose = this.purpose()\n const updated = this.readConsents().filter((stored) => {\n const parsed = this.fromStorageEntry(stored)\n if (this.normalizeUrl(parsed.url) !== normalized) return true\n if (purpose === undefined) return false\n return parsed.purpose !== purpose\n })\n\n this.writeConsents(updated)\n this.consentChanged.emit({ url: normalized, hasConsent: false, purpose })\n }\n\n private safeJsonParse(value: string): unknown {\n try {\n return JSON.parse(value)\n } catch {\n return undefined\n }\n }\n\n private readConsents(): ConsentStorage {\n const raw = localStorage.getItem(STORAGE_KEY)\n if (!raw) return []\n\n const parsed = this.safeJsonParse(raw)\n return Array.isArray(parsed) && parsed.every((x) => typeof x === 'string') ? (parsed as string[]) : []\n }\n\n private writeConsents(value: ConsentStorage): void {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(value))\n // Trigger re-computation of hasConsent\n this.localStorageUpdatedTimestamp.set(Date.now())\n }\n\n private hasStoredConsent(normalizedUrl: string, storage: ConsentStorage = this.readConsents()): boolean {\n const purpose = this.purpose()\n\n return storage.some((stored) => {\n const parsed = this.fromStorageEntry(stored)\n if (this.normalizeUrl(parsed.url) !== normalizedUrl) return false\n if (purpose === undefined) return true\n return parsed.purpose === purpose\n })\n }\n\n private toStorageEntry(url: string, purpose?: string): string {\n const normalized = this.normalizeUrl(url)\n if (!normalized) return ''\n return purpose ? `${normalized}::${purpose}` : normalized\n }\n\n private fromStorageEntry(entry: string): { url: string; purpose?: string } {\n const parts = entry.split('::')\n const url = parts[0] ?? ''\n const purpose = parts.length > 1 ? parts.slice(1).join('::') : undefined\n return { url, purpose }\n }\n\n private normalizeUrl(raw: string): string {\n const trimmed = raw.trim()\n if (!trimmed) return ''\n\n try {\n const url = new URL(trimmed)\n url.hash = ''\n url.search = ''\n url.hostname = url.hostname.toLowerCase()\n return url.toString().replace(/\\/$/, '')\n } catch {\n return trimmed.replace(/\\/$/, '')\n }\n }\n}\n","@if (hasConsent()) {\n<ng-content />\n\n@if (showWithdraw()) {\n<div class=\"w-full flex justify-content-center mt-1\">\n <a\n (click)=\"resetConsent()\"\n class=\"cursor-pointer text-primary underline\"\n [attr.aria-label]=\"withdrawKey() | translate\"\n >\n {{ withdrawKey() | translate }}\n </a>\n</div>\n} } @else {\n<section\n class=\"flex w-full h-full align-items-center justify-content-center p-3 ocx-consent\"\n [attr.aria-labelledby]=\"titleId\"\n [attr.aria-describedby]=\"messageId\"\n>\n <div class=\"flex flex-column gap-4 align-items-center justify-content-center text-center ocx-consent__content\">\n <p class=\"m-0 text-xl font-semibold\" [id]=\"titleId\">{{ titleKey() | translate }}</p>\n <p class=\"m-0\" [id]=\"messageId\" aria-live=\"polite\">{{ messageKey() | translate : { url: normalizedUrl() } }}</p>\n\n <ng-content select=\"[ocx-consent-info]\" />\n\n <button pButton pRipple type=\"button\" (click)=\"giveConsent()\" [attr.aria-label]=\"agreeKey() | translate\">\n {{ agreeKey() | translate }}\n </button>\n </div>\n</section>\n}\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, ViewContainerRef, inject, viewChild } 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 dialogHost = viewChild('container', { read: 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$.next(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$.next(isEnabled)\n })\n }\n if (this.isDialogCustomButtonDisabledImplemented(componentRef.instance)) {\n this.customButtonEnabledSub = componentRef.instance.customButtonEnabled.subscribe((buttonEnabled) => {\n portalDialogServiceData.customButtonEnabled$.next(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 Component,\n ElementRef,\n OnInit,\n effect,\n inject,\n input,\n signal,\n viewChild,\n viewChildren,\n output,\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 { DialogState, DialogStateButtonClicked, PortalDialogServiceData } from '../../../services/portal-dialog.service'\n\nexport const defaultPrimaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CONFIRM',\n}\n\nexport const defaultSecondaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CANCEL',\n}\n\nexport const defaultDialogData: ButtonDialogData = {\n config: {\n primaryButtonDetails: defaultPrimaryButtonDetails,\n secondaryButtonIncluded: true,\n secondaryButtonDetails: defaultSecondaryButtonDetails,\n },\n componentData: {},\n}\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 {\n dynamicDialogConfig = inject(DynamicDialogConfig)\n dynamicDialogRef = inject(DynamicDialogRef)\n\n config = input<ButtonDialogConfig | undefined>(undefined)\n\n dialogData = signal<ButtonDialogData>(defaultDialogData)\n primaryButtonDisabled$: Observable<boolean | undefined> | undefined\n secondaryButtonDisabled$: Observable<boolean | undefined> | undefined\n customButtonsDisabled$: BehaviorSubject<Record<string, boolean>> = new BehaviorSubject({})\n leftCustomButtons = signal<ButtonDialogCustomButtonDetails[]>([])\n rightCustomButtons = signal<ButtonDialogCustomButtonDetails[]>([])\n\n buttonClickedEmitter = output<DialogState<unknown>>()\n\n primaryButton = viewChild<ElementRef>('primaryButton')\n secondaryButton = viewChild<ElementRef>('secondaryButton')\n customButtons = viewChildren<ElementRef>('customButton')\n\n constructor() {\n // Auto focus button effect for dynamic dialog\n effect(() => {\n const config = this.dynamicDialogConfig.data?.config\n\n if (!config) return\n\n if (config.autoFocusButton === 'primary') {\n const primaryButton = this.primaryButton()\n primaryButton?.nativeElement.focus()\n } else if (config.autoFocusButton === 'secondary') {\n const secondaryButton = this.secondaryButton()\n secondaryButton?.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 // config update effect for inline dialog\n effect(() => {\n // Run the effect only if config input is provided\n const config = this.config()\n if (!config) return\n\n const dialogData = this.dialogData()\n if (config) {\n if (!!config.primaryButtonDetails && !!config.primaryButtonDetails?.key) {\n dialogData.config.primaryButtonDetails = config.primaryButtonDetails\n }\n if (config.secondaryButtonIncluded) {\n dialogData.config.secondaryButtonIncluded = config.secondaryButtonIncluded\n }\n if (!!config.secondaryButtonDetails && !!config.secondaryButtonDetails?.key) {\n dialogData.config.secondaryButtonDetails = config.secondaryButtonDetails\n }\n }\n dialogData.config.customButtons = config.customButtons\n this.dialogData.set(dialogData)\n this.setupCustomButtons(dialogData)\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 }\n }\n\n setUpDialogDataForDynamicConfig() {\n const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n const dialogData = this.dialogData()\n if (dynamicConfigData.config) {\n const dialogConfig = dynamicConfigData.config\n if (!!dialogConfig.primaryButtonDetails && !!dialogConfig.primaryButtonDetails.key) {\n dialogData.config.primaryButtonDetails = dialogConfig.primaryButtonDetails\n }\n if (dialogConfig.secondaryButtonIncluded !== undefined) {\n dialogData.config.secondaryButtonIncluded = dialogConfig.secondaryButtonIncluded\n }\n if (!!dialogConfig.secondaryButtonDetails && !!dialogConfig.secondaryButtonDetails.key) {\n dialogData.config.secondaryButtonDetails = dialogConfig.secondaryButtonDetails\n }\n }\n\n this.dialogData.set(dialogData)\n\n const [leftButtons, rightButtons] = 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 rightButtons.concat(leftButtons).forEach((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.subscribe((dialogState) => {\n portalDialogServiceData.buttonClicked$.next(dialogState)\n })\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 const leftButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'left') ?? []\n const rightButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'right') ?? []\n this.leftCustomButtons.set(leftButtons)\n this.rightCustomButtons.set(rightButtons)\n\n return [leftButtons, rightButtons]\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 } @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 ?? ''\"\n (click)=\"secondaryButtonAction()\"\n [label]=\"dialogData().config.secondaryButtonDetails!.key | translate:dialogData().config.secondaryButtonDetails?.parameters\"\n [disabled]=\"secondaryButtonDisabled$ | async\"\n [ocxTooltip]=\"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 ?? ''\"\n (click)=\"primaryButtonAction()\"\n [label]=\"dialogData().config.primaryButtonDetails!.key | translate:dialogData().config.primaryButtonDetails?.parameters\"\n [disabled]=\"primaryButtonDisabled$ | async\"\n [ocxTooltip]=\"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 [ocxTooltip]=\"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, 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 config = input<ButtonDialogConfig>({})\n\n resultEmitter = output<unknown>()\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, effect, inject, model, signal } 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 errCode = model<string | undefined>(undefined)\n backUrl = signal<string | undefined>(undefined)\n\n constructor() {\n effect(() => {\n const errCode = this.errCode()\n if (errCode) {\n this.errCode.set(errCode)\n }\n })\n this.errCode.set(this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START')\n this.backUrl.set(this.route.snapshot.queryParamMap.get('return') || '/')\n }\n\n onGoBack() {\n const backUrl = this.backUrl()\n if (backUrl) {\n this.router.navigateByUrl(backUrl)\n }\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 { Injectable, OnDestroy, Type, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DialogService, DynamicDialog } from 'primeng/dynamicdialog'\nimport { Observable, Subject, filter, mergeMap, of } 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, EventType, 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'\nimport { createLogger } from '../utils/logger.utils'\n\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: Subject<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: Subject<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: Subject<{ 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$: Subject<boolean>\n secondaryButtonEnabled$: Subject<boolean>\n customButtonEnabled$: Subject<{ id: string; enabled: boolean }>\n buttonClicked$: Subject<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 readonly logger = createLogger('PortalDialogService')\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 === EventType.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 Subject to determine if the primary button should be disabled\n *\n * - {@link DialogSecondaryButtonDisabled} - dialog will use the Subject to determine if the secondary button should be disabled\n *\n * - {@link DialogCustomButtonsDisabled} - dialog will use the Subject 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: Subject<boolean> = new Subject()\n * // emit true/false to disable secondary button\n * @Output() secondaryButtonEnabled: Subject<boolean> = new Subject()\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> | null>\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> | null> {\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 Subject<boolean>(),\n secondaryButtonEnabled$: new Subject<boolean>(),\n customButtonEnabled$: new Subject<{ id: string; enabled: boolean }>(),\n buttonClicked$: new Subject<DialogState<unknown>>(),\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 if (!dialogRef) {\n this.logger.error('Dialog could not be opened, dialog creation failed.')\n return of(null)\n }\n const dialogComponent = this.dialogService.getInstance(dialogRef)\n if (dialogComponent) {\n this.setScopeIdentifier(dialogComponent)\n } else {\n this.logger.warn(\n 'Dialog component instance could not be found after creation. The displayed dialog may not function as expected.'\n )\n }\n return dialogRef.onClose\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 if (!dialogComponent) {\n this.logger.warn(\n 'Dialog component instance could not be found during cleanup. The displayed dialog may not function as expected.'\n )\n return\n }\n dialogRef.close()\n this.removeDialogFromHtml(dialogComponent)\n })\n }\n }\n\n private removeDialogFromHtml(dialogComponent: DynamicDialog) {\n const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n if (bodyChild) {\n document.body.removeChild(bodyChild)\n }\n }\n\n private setScopeIdentifier(dialogComponent: DynamicDialog) {\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: DynamicDialog) {\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 { RippleModule } from 'primeng/ripple'\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 RippleModule,\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 RippleModule,\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","export const LIB_NAME = '@onecx/angular-accelerator'\nexport const LIB_VERSION = '8.0.0-rc.8'\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 provideMultiLanguageIdentifier,\n} from '@onecx/angular-utils'\nimport { SrcDirective } from './directives/src.directive'\nimport { OcxTooltipDirective } from './directives/ocx-tooltip.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'\nimport { ConsentComponent } from './components/consent/consent.component'\nimport { LIB_VERSION } from '../version'\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 OcxTooltipDirective\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 ConsentComponent,\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 provideMultiLanguageIdentifier('@onecx/angular-accelerator', LIB_VERSION, 'lib'),\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 OcxTooltipDirective,\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 ConsentComponent,\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'\nimport { createLogger } from './logger.utils'\n\nconst logger = createLogger('DataOperationStrategy')\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport abstract class DataOperationStrategy {\n endsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('endsWith method not implemented')\n return true\n }\n\n startsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('startsWith method not implemented')\n return true\n }\n\n contains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('contains method not implemented')\n return true\n }\n\n notContains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('notContains method not implemented')\n return true\n }\n\n equals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('equals method not implemented')\n return true\n }\n\n notEquals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('notEquals method not implemented')\n return true\n }\n\n lessThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('lessThan method not implemented')\n return true\n }\n\n greaterThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('greaterThan method not implemented')\n return true\n }\n\n lessThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('lessThanOrEqual method not implemented')\n return true\n }\n\n greaterThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('greaterThanOrEqual method not implemented')\n return true\n }\n\n isEmpty(column: DataTableColumn, value: unknown): boolean {\n logger.error('isEmpty method not implemented')\n return true\n }\n\n isNotEmpty(column: DataTableColumn, value: unknown): boolean {\n logger.error('isNotEmpty method not implemented')\n return true\n }\n\n compare(a: unknown, b: unknown, column: DataTableColumn): number {\n logger.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 logger.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 logger.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 logger.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'\nexport * from './lib/directives/ocx-tooltip.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/consent/consent.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'\nexport * from './lib/model/permission.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'\nexport * from './lib/utils/observable-output.utils'\nexport * from './lib/utils/action-router.utils'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i6.OcxTooltipDirective","i7.SrcDirective","i9.DynamicPipe","i2","i4","i5.OcxTooltipDirective","i6.PageHeaderComponent","i7.IfPermissionDirective","i1","i2.OcxContentDirective","i2.OcxContentContainerDirective","i5","i6","i7.OcxTooltipDirective","i3.OcxTooltipDirective","i8.OcxTooltipDirective","i9.IfPermissionDirective","i10.TooltipOnOverflowDirective","i11","i12.OcxTimeAgoPipe","i7","i8","i9","i10.OcxTooltipDirective","i11.IfPermissionDirective","i12","i13.OcxTimeAgoPipe","i2.DataListGridComponent","i3.DataTableComponent","i8.DataTableComponent","i9.IfBreakpointDirective","i10","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/utils/logger.utils.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/utils/observable-output.utils.ts","../../../../libs/angular-accelerator/src/lib/directives/ocx-tooltip.directive.ts","../../../../libs/angular-accelerator/src/lib/services/breadcrumb.service.ts","../../../../libs/angular-accelerator/src/lib/utils/action-router.utils.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/consent/consent.component.ts","../../../../libs/angular-accelerator/src/lib/components/consent/consent.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/version.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, OnInit, effect, inject, input } from '@angular/core'\n\n@Directive({ selector: '[ocxContentContainer]', standalone: false })\nexport class OcxContentContainerDirective implements OnInit {\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 layout = input<'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 breakpoint = input<'sm' | 'md' | 'lg' | 'xl'>('md')\n\n /**\n * Optionally allows specifying styles for the container\n */\n ngClass = input<string | undefined>(undefined)\n\n ngOnInit() {\n this.el.nativeElement.classList.add('flex', 'gap-3', 'flex-column', 'md:flex-row')\n this.addContainerStyles()\n }\n\n constructor() {\n effect(() => {\n // Read signals to establish dependencies\n this.layout()\n this.breakpoint()\n this.ngClass()\n this.addContainerStyles()\n })\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}\n","import { Directive, ElementRef, OnInit, effect, inject, input, signal } from '@angular/core'\n\n@Directive({ selector: '[ocxContent]', standalone: false })\nexport class OcxContentDirective implements OnInit {\n private readonly 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 ocxContent = input<string>('')\n\n private readonly baseId = signal<string>('ocx_content_title_element')\n private readonly titleElementId = signal<string | undefined>(undefined)\n\n constructor() {\n effect(() => {\n this.init()\n })\n }\n\n ngOnInit() {\n this.titleElementId.set(this.getUniqueTitleID(this.baseId()))\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 const titleElementId = this.titleElementId()\n if (titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${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 = 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 const titleElementId = this.titleElementId()\n if (titleElementId) {\n const titleElement = this.el.nativeElement.querySelector(`#${titleElementId}`)\n if (titleElement) {\n titleElement.remove()\n }\n }\n }\n}\n","// This file is not planned to be in the index.ts so it is private to this lib\nimport { createLoggerFactory } from '@onecx/accelerator'\n\nexport const createLogger = createLoggerFactory('@onecx/angular-accelerator')\n","import {\n Directive,\n EmbeddedViewRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n computed,\n DestroyRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\nimport { from, Observable, of, switchMap } from 'rxjs'\nimport { createLogger } from '../utils/logger.utils'\nimport { OnMissingPermission, PermissionInput } from '../model/permission.model'\n\n@Directive({ selector: '[ocxIfPermission], [ocxIfNotPermission]', standalone: false })\nexport class IfPermissionDirective {\n private readonly logger = createLogger('IfPermissionDirective')\n private readonly renderer = inject(Renderer2)\n private readonly viewContainer = inject(ViewContainerRef)\n private readonly hasPermissionChecker = inject<HasPermissionChecker>(HAS_PERMISSION_CHECKER, { optional: true })\n private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private readonly userService = inject(UserService, { optional: true })\n private readonly destroyRef = inject(DestroyRef)\n\n ocxIfPermission = input<PermissionInput>(undefined)\n ocxIfNotPermission = input<PermissionInput>(undefined)\n\n ocxIfPermissionOnMissingPermission = input<OnMissingPermission>('hide')\n ocxIfNotPermissionOnMissingPermission = input<OnMissingPermission>('hide')\n\n ocxIfPermissionPermissions = input<string[] | undefined>(undefined)\n ocxIfNotPermissionPermissions = input<string[] | undefined>(undefined)\n\n ocxIfPermissionElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n ocxIfNotPermissionElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n\n private readonly permissionChecker = computed<HasPermissionChecker | undefined>(() => {\n return this.hasPermissionChecker ?? this.userService ?? undefined\n })\n private readonly isDisabled = signal<boolean>(false)\n private readonly directiveContentRef = signal<EmbeddedViewRef<any> | undefined>(undefined)\n\n private readonly permissionValidation = computed(() => {\n const positive = this.ocxIfPermission()\n const negative = this.ocxIfNotPermission()\n const negate = negative !== undefined\n\n const raw = negate ? negative : positive\n const permissions = this.normalizePermissions(raw)\n return {\n permissions,\n negate,\n onMissing: negate ? this.ocxIfNotPermissionOnMissingPermission() : this.ocxIfPermissionOnMissingPermission(),\n elseTemplate: negate ? this.ocxIfNotPermissionElseTemplate() : this.ocxIfPermissionElseTemplate(),\n overridePermissions: negate ? this.ocxIfNotPermissionPermissions() : this.ocxIfPermissionPermissions(),\n }\n })\n\n private normalizePermissions(raw: string | string[] | undefined): string[] {\n if (raw === undefined) {\n return []\n }\n if (Array.isArray(raw)) {\n return raw\n }\n return [raw]\n }\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 toObservable(this.permissionValidation)\n .pipe(\n switchMap((req) => {\n if (!req.permissions.length) {\n return of({ shouldShow: false, req })\n }\n return this.hasPermission(req.permissions, req.overridePermissions).pipe(\n switchMap((has) => of({ shouldShow: req.negate ? !has : has, req }))\n )\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(({ shouldShow, req }) => {\n if (shouldShow) {\n return this.showTemplateOrClear()\n }\n return this.showElseTemplateOrDefaultView(req.elseTemplate, req.onMissing)\n })\n }\n\n private hasPermission(permission: string[], overridePermissions?: string[]): Observable<boolean> {\n if (overridePermissions) {\n const result = permission.every((p) => overridePermissions?.includes(p))\n if (!result) {\n this.logger.debug('No permission in overwrites for:', permission)\n }\n return of(result)\n }\n\n const permissionChecker = this.permissionChecker()\n\n if (permissionChecker?.getPermissions) {\n return permissionChecker.getPermissions().pipe(\n switchMap((permissions) => {\n const result = permission.every((p) => permissions.includes(p))\n if (!result) {\n this.logger.debug('No permission from permission checker for:', permission)\n }\n return of(result)\n })\n )\n }\n\n if (permissionChecker?.hasPermission) {\n return from(permissionChecker.hasPermission(permission))\n }\n\n return of(false)\n }\n\n private showTemplateOrClear() {\n this.resetView()\n\n if (this.templateRef) {\n this.directiveContentRef.set(this.viewContainer.createEmbeddedView(this.templateRef))\n }\n }\n\n private showElseTemplateOrDefaultView(elseTemplate?: TemplateRef<any>, onMissing: 'hide' | 'disable' = 'hide') {\n this.resetView()\n\n if (elseTemplate) {\n this.viewContainer.createEmbeddedView(elseTemplate)\n return\n }\n\n if (onMissing === 'disable' && this.templateRef) {\n this.directiveContentRef.set(this.viewContainer.createEmbeddedView(this.templateRef))\n\n const el = this.getElement()\n if (el) {\n this.renderer.setAttribute(el as any, 'disabled', 'disabled')\n }\n this.isDisabled.set(true)\n }\n }\n\n private resetView() {\n this.viewContainer.clear()\n if (this.isDisabled()) {\n this.isDisabled.set(false)\n const el = this.getElement()\n if (el) {\n this.renderer.removeAttribute(el as any, 'disabled')\n }\n }\n }\n\n private getElement(): Node | undefined {\n return this.directiveContentRef()?.rootNodes?.[0]\n }\n}\n","import { Directive, HostListener, OnInit, TemplateRef, ViewContainerRef, inject, input, signal } from '@angular/core'\n\n@Directive({ selector: '[ocxIfBreakpoint]', standalone: false })\nexport class IfBreakpointDirective implements OnInit {\n private readonly viewContainer = inject(ViewContainerRef)\n private readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef, { optional: true })\n\n breakpoint = input<'mobile' | 'desktop' | undefined>(undefined, { alias: 'ocxIfBreakpoint' })\n\n ocxIfBreakpointElseTemplate = input<TemplateRef<any> | undefined>(undefined)\n\n state = signal<'mobile' | 'desktop' | undefined>(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\n const breakpoint = this.breakpoint()\n const elseTemplate = this.ocxIfBreakpointElseTemplate()\n\n if ((breakpoint === 'mobile' && isMobile) || (breakpoint === 'desktop' && isDesktop)) {\n if (this.templateRef && newState !== this.state()) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else if (elseTemplate && newState !== this.state()) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(elseTemplate)\n }\n\n this.state.set(newState)\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http'\nimport { Directive, ElementRef, EventEmitter, Output, effect, inject, input } from '@angular/core'\nimport { take } from 'rxjs'\nimport { createLogger } from '../utils/logger.utils'\n\n@Directive({ selector: '[ocxSrc]', standalone: false })\nexport class SrcDirective {\n private readonly logger = createLogger('SrcDirective')\n private readonly el = inject(ElementRef)\n private readonly httpClient = inject(HttpClient)\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() error = new EventEmitter<void>()\n\n ocxSrc = input<string | undefined>(undefined)\n\n constructor() {\n effect(() => {\n const src = this.ocxSrc()\n if (src && globalThis.location.hostname) {\n try {\n if (new URL(src, globalThis.location.origin).hostname === globalThis.location.hostname) {\n this.httpClient\n .get(src, { observe: 'response', responseType: 'blob' })\n .pipe(take(1))\n .subscribe({\n next: (response: HttpResponse<Blob>) => {\n // ok with content\n if (response?.status === 200) {\n const url = URL.createObjectURL(response.body as Blob)\n const onLoad = () => {\n URL.revokeObjectURL(url)\n this.el.nativeElement.removeEventListener('load', onLoad)\n }\n this.el.nativeElement.addEventListener('load', onLoad)\n this.el.nativeElement.src = url\n }\n // no content\n if (response?.status === 204) {\n this.error.emit()\n }\n },\n error: () => {\n // on error\n this.error.emit()\n },\n complete: () => {\n // on complete\n this.el.nativeElement.style.visibility = 'initial'\n },\n })\n } else {\n this.el.nativeElement.src = src\n this.el.nativeElement.style.visibility = 'initial'\n }\n } catch (error) {\n this.logger.error('Cannot parse URL', src, error)\n this.el.nativeElement.src = src\n this.el.nativeElement.style.visibility = 'initial'\n }\n }\n })\n this.el.nativeElement.style.visibility = 'hidden'\n }\n}\n","import { assertInInjectionContext, OutputEmitterRef, Signal, signal } from '@angular/core'\n\nclass ListenerArray {\n private readonly _listeners: Array<(...args: any[]) => void> = []\n observed = signal<boolean>(false)\n\n indexOf(listener: (...args: any[]) => void): number {\n return this._listeners.indexOf(listener)\n }\n\n splice(start: number, deleteCount: number): void {\n this._listeners.splice(start, deleteCount)\n this.observed.set(this._listeners.length > 0)\n }\n\n push(listener: (...args: any[]) => void): number {\n const pushResult = this._listeners.push(listener)\n this.observed.set(this._listeners.length > 0)\n return pushResult\n }\n\n [Symbol.iterator]() {\n return this._listeners[Symbol.iterator]()\n }\n}\n\nexport class ObservableOutputEmitterRef<T> extends OutputEmitterRef<T> {\n observed: Signal<boolean>\n\n constructor() {\n super()\n ;(this as any).listeners = new ListenerArray()\n this.observed = (this as any).listeners.observed\n }\n}\n\nexport function observableOutput<T>(): ObservableOutputEmitterRef<T> {\n if (ngDevMode) {\n assertInInjectionContext(observableOutput)\n }\n return new ObservableOutputEmitterRef<T>()\n}\n","import { Directive, AfterViewInit, OnChanges, inject, Renderer2, TemplateRef, NgZone, ViewContainerRef, SimpleChanges, input, effect } from \"@angular/core\"\nimport { Tooltip, TooltipStyle } from \"primeng/tooltip\"\n\n@Directive({ selector: '[ocxTooltip]', providers: [TooltipStyle], standalone: true })\nexport class OcxTooltipDirective extends Tooltip implements AfterViewInit, OnChanges {\n override readonly renderer = inject(Renderer2)\n readonly ocxTooltip = input<string | TemplateRef<HTMLElement> | undefined>(undefined)\n\n private generatedId: string | undefined\n private resolvedId: string | undefined\n private removeEscapeKeyListener: (() => void) | undefined\n \n constructor() {\n const zone = inject(NgZone)\n const viewContainer = inject(ViewContainerRef)\n super(zone, viewContainer)\n this.tooltipEvent = 'both'\n effect(() => {\n const value = this.ocxTooltip()\n this.content = value\n this.setOption({ tooltipLabel: value })\n this.ensureIdAndAriaDescribedBy()\n })\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit()\n this.ensureIdAndAriaDescribedBy()\n }\n\n override ngOnChanges(simpleChange: SimpleChanges): void {\n super.ngOnChanges(simpleChange)\n this.ensureIdAndAriaDescribedBy()\n }\n\n override create(): void {\n super.create()\n this.applyIdToContainer()\n this.setEscapeKeyListener()\n }\n\n override show(): void {\n super.show()\n }\n\n private ensureIdAndAriaDescribedBy(): void {\n const idFromOptions = this.tooltipOptions?.id\n const idFromInternal = this._tooltipOptions?.id\n const resolvedId = this.normalizeId(idFromOptions) ?? this.normalizeId(idFromInternal) ?? this.getOrCreateGeneratedId()\n this.resolvedId = resolvedId\n if (this.tooltipOptions) {\n const tooltipOptions = this.tooltipOptions\n if (!this.normalizeId(tooltipOptions.id)) {\n tooltipOptions.id = resolvedId\n }\n }\n\n this.setOption({ id: resolvedId, tooltipEvent: 'both' })\n this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', resolvedId)\n }\n\n private normalizeId(id: string | undefined | null): string | null {\n if (!id) return null\n const trimmed = String(id).trim()\n return trimmed.length ? trimmed : null\n }\n\n private applyIdToContainer(): void {\n if (!this.isTooltipCreated() || !this.resolvedId) return\n this.renderer.setAttribute(this.container, 'id', this.resolvedId)\n }\n\n private isTooltipCreated(): boolean {\n return this.container !== null && this.container !== undefined\n }\n\n private getOrCreateGeneratedId(): string {\n if (this.generatedId) return this.generatedId\n const randomPart = this.getRandomPart()\n const timePart = Date.now().toString(36)\n this.generatedId = `ocx-tooltip-${timePart}-${randomPart}`\n return this.generatedId\n }\n\n private getRandomPart(): string {\n const buffer = new Uint32Array(2)\n globalThis.crypto.getRandomValues(buffer)\n return Array.from(buffer, (value) => value.toString(36)).join('')\n }\n\n private setEscapeKeyListener(): void {\n if (!this.container || this.removeEscapeKeyListener) return\n this.removeEscapeKeyListener = this.renderer.listen(this.container, 'keydown', (event: KeyboardEvent) => {\n if (!(event.key === 'Escape' || event.key === 'Esc')) return\n this.hide()\n })\n }\n\n override ngOnDestroy(): void {\n if (this.removeEscapeKeyListener) {\n this.removeEscapeKeyListener()\n this.removeEscapeKeyListener = undefined\n }\n super.ngOnDestroy()\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 { Router } from '@angular/router'\nimport { DataAction, RouterLink } from '../model/data-action'\nimport { Action } from '../components/page-header/page-header.component'\n\n/**\n * Resolves a router link to a string, handling string, function, and Promise types\n */\nexport async function resolveRouterLink(routerLink: RouterLink): Promise<string> {\n if (typeof routerLink === 'string') {\n return routerLink\n } else if (typeof routerLink === 'function') {\n const result = routerLink()\n return typeof result === 'string' ? result : await result\n } else {\n return await routerLink\n }\n}\n\n/**\n * Base action handler that can be used directly or extended by components\n */\nexport async function handleAction(router: Router, action: Action | DataAction, data?: any): Promise<void> {\n if (action.routerLink) {\n const resolvedLink = await resolveRouterLink(action.routerLink)\n await router.navigate([resolvedLink])\n } else if ('callback' in action && typeof action.callback === 'function') {\n action.callback(data)\n } else if ('actionCallback' in action && typeof action.actionCallback === 'function') {\n action.actionCallback()\n }\n}\n\n/**\n * Synchronous wrapper for use in template event handlers where Promise return is not expected\n */\nexport function handleActionSync(router: Router, action: Action | DataAction, data?: any): void {\n void handleAction(router, action, data)\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 AfterViewInit,\n Component,\n ElementRef,\n OnInit,\n Renderer2,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n computed,\n contentChild,\n inject,\n input,\n model,\n output,\n signal,\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 { Observable, concat, map, of, switchMap, tap } 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'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { Router } from '@angular/router'\nimport { RouterLink } from '../../model/data-action'\nimport { handleAction, handleActionSync } from '../../utils/action-router.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 routerLink?: RouterLink\n loading?: boolean\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 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 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, AfterViewInit {\n private readonly translateService = inject(TranslateService)\n private readonly appStateService = inject(AppStateService)\n private readonly userService = inject(UserService)\n private readonly router = inject(Router)\n private readonly renderer = inject(Renderer2)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n protected readonly breadcrumbs = inject(BreadcrumbService)\n private breadcrumbRef?: ElementRef<HTMLElement>\n @ViewChild('breadcrumbRef', { read: ElementRef })\n set breadcrumbElementRef(ref: ElementRef<HTMLElement> | undefined) {\n this.breadcrumbRef = ref\n this.applyBreadcrumbAriaLabels()\n }\n\n header = input<string | undefined>(undefined)\n\n loading = input<boolean>(false)\n\n figureBackground = input<boolean>(true)\n\n showFigure = input<boolean>(true)\n\n // image for preview in top-header left side\n figureImage = input<string | undefined>(undefined)\n\n disableDefaultActions = input<boolean>(false)\n\n subheader = input<string | undefined>(undefined)\n\n actions = model<Action[]>([])\n\n objectDetails = input<ObjectDetailItem[] | undefined>(undefined)\n\n showBreadcrumbs = input<boolean>(true)\n\n manualBreadcrumbs = input<boolean>(false)\n\n enableGridView = input<boolean | undefined>(undefined)\n\n gridLayoutDesktopColumns = input<GridColumnOptions | undefined>(undefined)\n\n save = output<void>()\n\n _additionalToolbarContent = contentChild<TemplateRef<any> | undefined>('additionalToolbarContent')\n\n _additionalToolbarContentLeft = contentChild<TemplateRef<any> | undefined>('additionalToolbarContentLeft')\n\n overflowActions$: Observable<MenuItem[]> = toObservable(this.actions).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 inlineActions$: Observable<Action[]> = toObservable(this.actions).pipe(\n map(this.filterInlineActions),\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions))\n )\n breadcrumbs$!: Observable<MenuItem[]>\n\n home$!: Observable<HomeItem>\n\n figureImageLoadError = signal<boolean>(false)\n\n objectPanelGridLayoutClasses = signal<string>('grid row-gap-2 m-0')\n objectPanelColumnLayoutClasses = signal<string>('flex flex-row justify-content-between overflow-x-auto')\n objectPanelDefaultLayoutClasses = signal<string>('flex flex-column row-gap-2 md:flex-row md:justify-content-between')\n objectPanelLayoutClasses = computed(() => {\n const enableGrid = this.enableGridView()\n if (enableGrid) {\n return this.objectPanelGridLayoutClasses()\n }\n if (enableGrid === false) {\n return this.objectPanelColumnLayoutClasses()\n }\n return this.objectPanelDefaultLayoutClasses()\n })\n\n objectInfoGridLayoutClasses = signal<string>('col-12 flex gap-4 md:col-6 align-items-center p-0')\n objectInfoColumnLayoutClasses = signal<string>('flex flex-column align-items-center gap-2 min-w-120')\n objectInfoDefaultLayoutClasses = signal<string>('flex flex-row md:flex-column md:align-items-center md:gap-2')\n objectInfoLayoutClasses = computed(() => {\n const enableGridView = this.enableGridView()\n if (enableGridView) {\n return `${this.objectInfoGridLayoutClasses()} lg:col-${\n this.gridLayoutDesktopColumns() ? 12 / this.gridLayoutDesktopColumns()! : 4\n }`\n }\n if (enableGridView === false) {\n return this.objectInfoColumnLayoutClasses()\n }\n return this.objectInfoDefaultLayoutClasses()\n })\n\n constructor() {\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 }\n\n ngOnInit(): void {\n if (this.manualBreadcrumbs()) {\n this.breadcrumbs$ = this.breadcrumbs.itemsHandler.pipe(\n tap(() => {\n setTimeout(() => this.applyBreadcrumbAriaLabels(), 0)\n })\n )\n } else {\n this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource.pipe(\n tap(() => {\n setTimeout(() => this.applyBreadcrumbAriaLabels(), 0)\n })\n )\n }\n }\n\n ngAfterViewInit() {\n this.applyBreadcrumbAriaLabels()\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.set(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 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: () => handleActionSync(this.router, a),\n disabled: a.disabled,\n }))\n }\n\n async onActionClick(action: Action): Promise<void> {\n await handleAction(this.router, action)\n }\n\n private applyBreadcrumbAriaLabels(): void {\n const breadcrumbHost = this.breadcrumbRef?.nativeElement\n if (!breadcrumbHost) {\n return\n }\n\n const breadcrumbItems = breadcrumbHost.querySelectorAll(`.p-breadcrumb-item .p-breadcrumb-item-link`)\n breadcrumbItems.forEach((item: Element, index: number) => {\n const text = (item as HTMLElement).innerText.trim()\n if (!text) return\n \n this.translateService.get('OCX_PAGE_HEADER.BREADCRUMB_ARIA_LABEL', { breadcrumb: text }).subscribe((ariaLabel) => {\n this.renderer.setAttribute(item, 'aria-label', ariaLabel)\n })\n \n if (index === breadcrumbItems.length - 1) {\n this.renderer.setAttribute(item, 'aria-current', 'page')\n }\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 #breadcrumbRef\n id=\"pageHeaderBreadcrumb\"\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\n [ocxSrc]=\"figureImage()\"\n alt=\"Figure Image\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\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 [ocxTooltip]=\"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)=\"onActionClick(action)\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [loading]=\"action.loading ?? 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 [ocxTooltip]=\"'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\" class=\"mr-2\"></p-skeleton>\n <p-skeleton shape=\"circle\" size=\"2rem\" class=\"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]=\"objectPanelLayoutClasses()\">\n @if (objectDetails()) { @for (item of objectDetails(); track item) {\n <div class=\"object-info\" [ngClass]=\"objectInfoLayoutClasses()\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [ocxTooltip]=\"item.labelTooltipKey ? ((typeof item.labelTooltipKey === 'string' ? item.labelTooltipKey : item.labelTooltipKey.key) | translate : (typeof item.labelTooltipKey === 'object' ? item.labelTooltipKey.parameters : undefined)) : ''\"\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 [ocxTooltip]=\"item.valueTooltipKey ? ((typeof item.valueTooltipKey === 'string' ? item.valueTooltipKey : item.valueTooltipKey.key) | translate : (typeof item.valueTooltipKey === 'object' ? item.valueTooltipKey.parameters : undefined)) : ''\"\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 ? ((typeof item.actionItemAriaLabelKey === 'string' ? item.actionItemAriaLabelKey : item.actionItemAriaLabelKey.key) | translate : (typeof item.actionItemAriaLabelKey === 'object' ? item.actionItemAriaLabelKey.parameters : undefined)) : 'button for ' + item.actionItemIcon\"\n [ocxTooltip]=\"item.actionItemTooltipKey ? ((typeof item.actionItemTooltipKey === 'string' ? item.actionItemTooltipKey : item.actionItemTooltipKey.key) | translate : (typeof item.actionItemTooltipKey === 'object' ? item.actionItemTooltipKey.parameters : undefined)) : ''\"\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 Component,\n ElementRef,\n EventEmitter,\n Output,\n Signal,\n TemplateRef,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { FormControlName, FormGroup } from '@angular/forms'\nimport { Observable, combineLatest, debounceTime, filter, firstValueFrom, from, map, mergeMap, 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'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { PermissionInput } from '../../model/permission.model'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { TranslateService } from '@ngx-translate/core'\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 {\n private readonly translate = inject(TranslateService)\n private readonly liveAnnouncer = inject(LiveAnnouncer)\n header = input<string>('')\n subheader = input<string | undefined>(undefined)\n\n loading = input<boolean>(false)\n \n viewMode = model<'basic' | 'advanced'>('basic')\n\n manualBreadcrumbs = input<boolean>(false)\n\n actions = input<Action[]>([])\n searchResultsCount = input<number | null>(null)\n\n searchConfigPermission = input<PermissionInput>(undefined)\n searchButtonDisabled = input<boolean>(false)\n resetButtonDisabled = input<boolean>(false)\n pageName = input<string | undefined>(getLocation().applicationPath)\n\n searched = output<void>()\n @Output() resetted = observableOutput<void>()\n\n @Output() selectedSearchConfigChanged = observableOutput<SearchConfigData | undefined>()\n viewModeChanged = output<'basic' | 'advanced'>()\n componentStateChanged = output<SearchHeaderComponentState>()\n _additionalToolbarContent = contentChild<TemplateRef<any>>('additionalToolbarContent')\n\n _additionalToolbarContentLeft = contentChild<TemplateRef<any>>('additionalToolbarContentLeft')\n\n get searchConfigChangeObserved(): Signal<boolean> {\n return this.selectedSearchConfigChanged.observed\n }\n\n formGroup = contentChild<FormGroup | undefined>(FormGroup)\n visibleFormControls = contentChildren<FormControlName>(FormControlName, { descendants: true })\n\n searchParameterFields = viewChild<ElementRef | undefined>('searchParameterFields')\n\n hasAdvanced = signal<boolean>(false)\n\n simpleAdvancedAction = signal<Action>({\n id: 'simpleAdvancedButton',\n actionCallback: () => this.toggleViewMode(),\n show: 'always',\n })\n\n headerActions = signal<Action[]>([])\n\n searchButtonsReversed$: Observable<boolean | null> = of(null)\n fieldValues$: Observable<{ [key: string]: unknown }> | undefined = combineLatest([\n toObservable(this.formGroup).pipe(\n filter((fg) => !!fg),\n mergeMap((fg) => fg.valueChanges.pipe(startWith({})))\n ),\n toObservable(this.visibleFormControls).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 searchConfigChangedSlotEmitter: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n\n constructor() {\n effect(() => {\n const viewMode = this.viewMode()\n this.viewModeChanged?.emit(viewMode)\n this.componentStateChanged.emit({\n activeViewMode: viewMode,\n })\n this.updateHeaderActions()\n setTimeout(() => this.addKeyUpEventListener())\n })\n\n this.announceSearchResults() \n\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 toggleViewMode() {\n this.viewMode.update((current) => (current === '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\n if (this.hasAdvanced()) {\n const simpleAdvancedAction = this.simpleAdvancedAction()\n simpleAdvancedAction.labelKey =\n this.viewMode() === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT'\n simpleAdvancedAction.titleKey =\n this.viewMode() === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL'\n\n headerActions.push(simpleAdvancedAction)\n }\n\n this.headerActions.set(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 private announceSearchResults() {\n effect(() => {\n let announmentKey = ''\n if (this.loading()) {\n announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.SEARCHING'\n } else if (!this.loading() && !this.searchResultsCount()) {\n announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.NO_RESULTS'\n } else {\n announmentKey = 'OCX_SEARCH_HEADER.ANNOUNCEMENTS.RESULTS_FOUND'\n }\n \n firstValueFrom(\n this.translate.get(announmentKey, { count: !this.loading() && this.searchResultsCount() ? this.searchResultsCount() : null })\n ).then((translatedText: string) => {\n this.liveAnnouncer.announce(translatedText, 'polite')\n });\n\n });\n }\n}\n","<ng-template #searchBtn>\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n (keydown.enter)=\"onSearchClicked()\"\n (keydown.space)=\"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 [ocxTooltip]=\"'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 (keydown.enter)=\"onResetClicked()\"\n (keydown.space)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled()\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [ocxTooltip]=\"'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]=\"'OCX_SEARCH_HEADER.CONTROLS.ARIA_LABEL' | translate\"\n >\n @let searchButtonsReversed = (searchButtonsReversed$ | async);\n @if (searchButtonsReversed !== null) {\n @if (searchButtonsReversed) {\n <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n @if (resetted.observed()) {\n <ng-container [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n }\n } @else {\n @if (resetted.observed()) {\n <ng-container [ngTemplateOutlet]=\"resetBtn\"></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"searchBtn\"></ng-container>\n }\n }\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 readonly viewContainer = inject(ViewContainerRef)\n private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private readonly searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw new Error('Advanced directive can only be used inside search header component')\n }\n searchHeader.hasAdvanced.set(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 OnDestroy,\n Renderer2,\n TemplateRef,\n inject,\n} from '@angular/core'\nimport { TooltipStyle } from 'primeng/tooltip'\nimport { OcxTooltipDirective } from './ocx-tooltip.directive'\n\n@Directive({ selector: '[ocxTooltipOnOverflow]', standalone: false, providers: [TooltipStyle] })\nexport class TooltipOnOverflowDirective extends OcxTooltipDirective 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 renderer = inject(Renderer2)\n\n super()\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, TemplateRef, inject, input } from '@angular/core'\n\n@Directive({ selector: '[ocxTemplate]', standalone: false })\nexport class TemplateDirective {\n template = inject<TemplateRef<any>>(TemplateRef)\n\n ocxTemplate = input.required<string>()\n\n getType(): string {\n return this.ocxTemplate()\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 readonly viewContainer = inject(ViewContainerRef)\n private readonly templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true })\n private readonly searchHeader = inject(SearchHeaderComponent, { optional: true })\n\n constructor() {\n const searchHeader = this.searchHeader\n\n if (!searchHeader) {\n throw new Error('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 { ComponentRef, Directive, ElementRef, Renderer2, ViewContainerRef, effect, inject, input } from '@angular/core'\nimport { LoadingIndicatorComponent } from '../components/loading-indicator/loading-indicator.component'\n\n@Directive({\n selector: '[ocxLoadingIndicator]',\n standalone: false,\n})\nexport class LoadingIndicatorDirective {\n private readonly viewContainerRef = inject(ViewContainerRef)\n private readonly el = inject(ElementRef)\n private readonly renderer = inject(Renderer2)\n\n ocxLoadingIndicator = input<boolean>(false)\n overlayFullPage = input<boolean>(false)\n isLoaderSmall = input<boolean>(false)\n\n private componentRef: ComponentRef<LoadingIndicatorComponent> | undefined\n private loaderElement: HTMLDivElement | undefined\n\n constructor() {\n effect(() => {\n this.toggleLoadingIndicator()\n })\n }\n\n private elementLoader() {\n this.renderer.addClass(this.el.nativeElement, 'element-overlay')\n this.loaderElement = document.createElement('div')\n this.loaderElement.className = 'loader'\n if (this.isLoaderSmall()) {\n this.loaderElement.className = 'loader loader-small'\n }\n this.renderer.appendChild(this.el.nativeElement, this.loaderElement)\n }\n\n private toggleLoadingIndicator() {\n if (this.ocxLoadingIndicator()) {\n if (this.overlayFullPage()) {\n this.componentRef = this.viewContainerRef.createComponent(LoadingIndicatorComponent)\n } else {\n this.elementLoader()\n }\n } else {\n this.viewContainerRef.clear()\n if (this.componentRef) {\n this.componentRef.destroy()\n } else {\n this.renderer.removeClass(this.el.nativeElement, 'element-overlay')\n if (this.loaderElement) { \n this.loaderElement.remove()\n }\n }\n }\n }\n}\n","import { Component, OnInit, computed, effect, input, model, output } from '@angular/core'\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\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 readonly selectedGroupKey = model<string>('')\n\n readonly columns = input<DataTableColumn[]>([])\n readonly placeholderKey = input<string>('')\n readonly defaultGroupKey = input<string>('')\n readonly customGroupKey = input<string>('')\n\n readonly groupSelectionChanged = output<GroupSelectionChangedEvent>()\n readonly componentStateChanged = output<ColumnGroupSelectionComponentState>()\n\n readonly allGroupKeys = computed<string[]>(() => {\n const columns = this.columns()\n const selectedGroupKey = this.selectedGroupKey()\n const defaultGroupKey = this.defaultGroupKey()\n\n return columns\n .flatMap((c) => c.predefinedGroupKeys || [])\n .concat([defaultGroupKey])\n .concat([selectedGroupKey])\n .filter((value) => !!value)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n })\n\n constructor() {\n effect(() => {\n const selected = this.selectedGroupKey()\n const custom = this.customGroupKey()\n\n if (selected === custom) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: selected,\n })\n }\n })\n }\n\n ngOnInit() {\n const selected = this.selectedGroupKey()\n\n if (selected === this.customGroupKey()) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: selected,\n })\n return\n }\n\n const activeColumns = this.columns().filter((c) =>\n c.predefinedGroupKeys?.includes(selected ?? this.defaultGroupKey())\n )\n\n this.componentStateChanged.emit({\n activeColumnGroupKey: selected,\n displayedColumns: activeColumns,\n })\n }\n\n changeGroupSelection(event: { value: string }) {\n if (event.value === this.customGroupKey()) {\n return\n }\n\n // keep ngModel / model() in sync (PrimeNG also updates via ngModel)\n this.selectedGroupKey.set(event.value)\n\n const activeColumns = this.columns().filter((c) => c.predefinedGroupKeys?.includes(event.value))\n\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().length) {\n <p-select\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"allGroupKeys()\"\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 } @if (allGroupKeys().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 title = input<string>('')\n\n /**\n * Optionally allows specifying styles for the content card\n */\n styleClass = input<string | undefined>(undefined)\n}\n","<div [ocxContent]=\"title()\" [ngClass]=\"styleClass()\">\n <ng-content></ng-content>\n</div>\n","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 layout = input<'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 breakpoint = input<'sm' | 'md' | 'lg' | 'xl'>('md')\n\n /**\n * Optionally allows specifying styles for the container\n */\n styleClass = input<string | undefined>(undefined)\n}\n","<div ocxContentContainer [layout]=\"layout()\" [breakpoint]=\"breakpoint()\" [ngClass]=\"styleClass()\">\n <ng-content></ng-content>\n</div>\n","import { Component, OnInit, computed, effect, input, model, output, signal } from '@angular/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 readonly columns = input<DataTableColumn[]>([])\n readonly displayedColumns = model<DataTableColumn[]>([])\n readonly customGroupKey = input<string>('')\n readonly dialogTitle = input<string>('')\n readonly dialogTitleKey = input<string>('')\n readonly openButtonTitle = input<string>('')\n readonly openButtonTitleKey = input<string>('')\n readonly openButtonAriaLabel = input<string>('')\n readonly openButtonAriaLabelKey = input<string>('')\n readonly saveButtonLabel = input<string>('')\n readonly saveButtonLabelKey = input<string>('')\n readonly saveButtonAriaLabel = input<string>('')\n readonly saveButtonAriaLabelKey = input<string>('')\n readonly cancelButtonLabel = input<string>('')\n readonly cancelButtonLabelKey = input<string>('')\n readonly cancelButtonAriaLabel = input<string>('')\n readonly cancelButtonAriaLabelKey = input<string>('')\n readonly activeColumnsLabel = input<string>('')\n readonly activeColumnsLabelKey = input<string>('')\n readonly inactiveColumnsLabel = input<string>('')\n readonly inactiveColumnsLabelKey = input<string>('')\n\n readonly frozenActionColumn = input<boolean>(false)\n readonly actionColumnPosition = input<'left' | 'right'>('right')\n\n readonly columnSelectionChanged = output<ColumnSelectionChangedEvent>()\n readonly actionColumnConfigChanged = output<ActionColumnChangedEvent>()\n readonly componentStateChanged = output<CustomGroupColumnSelectorComponentState>()\n\n readonly hiddenColumnsModel = signal<DataTableColumn[]>([])\n readonly displayedColumnsModel = signal<DataTableColumn[]>([])\n readonly frozenActionColumnModel = signal<boolean>(false)\n readonly actionColumnPositionModel = signal<'left' | 'right'>('right')\n readonly visible = signal<boolean>(false)\n\n readonly alignmentOptions = signal<{ label: string; value: 'left' | 'right' }[]>([\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 readonly frozenOptions = signal<{ label: string; value: boolean }[]>([\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 private readonly _actionColumnState = computed(() => ({\n frozen: this.frozenActionColumn(),\n position: this.actionColumnPosition(),\n }))\n\n constructor() {\n effect(() => {\n this.componentStateChanged.emit({\n actionColumnConfig: this._actionColumnState(),\n displayedColumns: this.displayedColumns(),\n })\n })\n }\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n actionColumnConfig: this._actionColumnState(),\n displayedColumns: this.displayedColumns(),\n })\n }\n\n onOpenCustomGroupColumnSelectionDialogClick() {\n this.displayedColumnsModel.set([...this.displayedColumns()])\n\n const displayedIds = new Set(this.displayedColumnsModel().map((c) => c.id))\n this.hiddenColumnsModel.set(this.columns().filter((column) => !displayedIds.has(column.id)))\n\n this.frozenActionColumnModel.set(this.frozenActionColumn())\n this.actionColumnPositionModel.set(this.actionColumnPosition())\n this.visible.set(true)\n }\n\n onSaveClick() {\n this.visible.set(false)\n\n const before = this.displayedColumns().map((column) => column.id)\n const after = this.displayedColumnsModel().map((column) => column.id)\n\n if (!after.every((colId, i) => colId === before[i]) || after.length !== before.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\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.set(false)\n }\n}\n","<p-button\n id=\"customGroupColumnSelectorButton\"\n type=\"button\"\n (onClick)=\"onOpenCustomGroupColumnSelectionDialogClick()\"\n [ocxTooltip]=\"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' |\n translate) }}</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 id=\"frozenActionColumnLabel\" class=\"mb-1\">\n {{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.FREEZE' | translate}}\n </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 ariaLabelledBy=\"frozenActionColumnLabel\"\n >\n <ng-template #item let-option> {{option.label | translate}} </ng-template>\n </p-selectbutton>\n </div>\n <div>\n <p id=\"actionColumnPositionLabel\" class=\"mb-1\">\n {{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.POSITION' | translate}}\n </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 ariaLabelledBy=\"actionColumnPositionLabel\"\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, computed, input, model, 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 supportedViewLayouts = input<Array<string>>([])\n\n layout = model<'grid' | 'list' | 'table'>('table')\n\n dataViewLayoutChange = output<'grid' | 'list' | 'table'>()\n componentStateChanged = output<DataLayoutSelectionComponentState>()\n\n viewingLayouts = computed(() => ALL_VIEW_LAYOUTS.filter((vl) => this.supportedViewLayouts().includes(vl.layout)))\n\n readonly selectedViewLayout = computed(() => ALL_VIEW_LAYOUTS.find((v) => v.layout === this.layout()))\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n layout: this.layout(),\n })\n }\n\n onDataViewLayoutChange(event: { icon: PrimeIcon; layout: 'grid' | 'list' | 'table' }): void {\n this.layout.set(event.layout)\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 [ariaLabel]=\"'OCX_DATA_LAYOUT_SELECTION.SELECT_BUTTON.ARIA_LABEL' | translate\"\n >\n <ng-template #item let-item>\n <i [class]=\"item.icon\" [ocxTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\" [attr.id]=\"item.id\">{{ item.labelKey | translate }}</span>\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: RowListGridData[],\n columns: DataTableColumn[],\n clientSideFiltering: boolean,\n clientSideSorting: boolean\n ): Observable<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 translations\n })\n )\n }\n }\n return of({})\n }\n\n filterItems(\n [items, filters, translations]: [RowListGridData[], Filter[], Record<string, Record<string, string>>],\n clientSideFiltering: boolean\n ): RowListGridData[] {\n if (!clientSideFiltering) {\n return items\n }\n return 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 }\n\n sortItems(\n [items, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n columns: DataTableColumn[],\n clientSideSorting: boolean\n ): RowListGridData[] {\n if (!clientSideSorting || sortColumn === '') {\n return items\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 [...items].sort(this.createCompareFunction(colValues, sortColumn, sortDirection))\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 } 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 readonly changeDetectorRef: ChangeDetectorRef\n private readonly ngZone = inject(NgZone)\n\n private timer: number | undefined | null\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef)\n\n super()\n\n this.changeDetectorRef = changeDetectorRef\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 Component,\n Injector,\n LOCALE_ID,\n OnInit,\n Output,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChildren,\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 { Observable, combineLatest, debounceTime, firstValueFrom, 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 { PermissionInput } from '../../model/permission.model'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { observableOutput, ObservableOutputEmitterRef } from '../../utils/observable-output.utils'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport { computedPrevious } from 'ngxtension/computed-previous'\nimport equal from 'fast-deep-equal'\nimport { handleAction, handleActionSync } from '../../utils/action-router.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 {\n private readonly userService = inject(UserService)\n private readonly router = inject(Router)\n private readonly injector = inject(Injector)\n private readonly appStateService = inject(AppStateService)\n private readonly hasPermissionChecker = inject(HAS_PERMISSION_CHECKER, { optional: true })\n private readonly liveAnnouncer = inject(LiveAnnouncer)\n\n titleLineId = input<string>()\n subtitleLineIds = input<string[]>()\n clientSideSorting = input<boolean>(true)\n clientSideFiltering = input<boolean>(true)\n sortStates = input<DataSortDirection[]>([])\n\n pageSize = model<number | undefined>(undefined)\n pageSizes = input<number[]>([10, 25, 50])\n\n displayedPageSize = computed(() => {\n const pageSize = this.pageSize()\n const pageSizes = this.pageSizes()\n\n return pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50\n })\n\n emptyResultsMessage = input<string | undefined>(undefined)\n fallbackImage = input<string>('placeholder.png')\n layout = input<'grid' | 'list'>('grid')\n viewPermission = input<PermissionInput>(undefined)\n editPermission = input<PermissionInput>(undefined)\n deletePermission = input<PermissionInput>(undefined)\n deleteActionVisibleField = input<string | undefined>(undefined)\n deleteActionEnabledField = input<string | undefined>(undefined)\n viewActionVisibleField = input<string | undefined>(undefined)\n viewActionEnabledField = input<string | undefined>(undefined)\n editActionVisibleField = input<string | undefined>(undefined)\n editActionEnabledField = input<string | undefined>(undefined)\n viewMenuItemKey = input<string | undefined>(undefined)\n editMenuItemKey = input<string | undefined>(undefined)\n deleteMenuItemKey = input<string | undefined>(undefined)\n paginator = input<boolean>(true)\n page = model<number>(0)\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columns = input<DataTableColumn[]>([])\n filteredColumns = computed(() => {\n const subtitleLineIds = this.subtitleLineIds() ?? []\n const ids: string[] = [...subtitleLineIds]\n const titleLineId = this.titleLineId()\n if (titleLineId) {\n ids.unshift(titleLineId)\n }\n return this.columns().filter((c) => !ids.includes(c.id))\n })\n\n name = model<string | undefined>(undefined)\n totalRecordsOnServer = input<number | undefined>(undefined)\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n params = computed(() => {\n const totalRecordsOnServer = this.totalRecordsOnServer()\n return {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n totalRecordsOnServer,\n }\n })\n\n data = input<RowListGridData[]>([])\n previousData = computedPrevious(this.data)\n\n filters = input<Filter[]>([])\n previousFilters = computedPrevious(this.filters)\n\n sortDirection = input<DataSortDirection>(DataSortDirection.NONE)\n sortField = input<string>('')\n\n private readonly permissions$ = this.getPermissions()\n\n gridItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>(undefined)\n gridItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('gridItemSubtitleLines')\n get gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate() || this.gridItemSubtitleLinesChildTemplate()\n }\n\n listItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>(undefined)\n listItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('listItemSubtitleLines')\n get listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate() || this.listItemSubtitleLinesChildTemplate()\n }\n\n listItemTemplate = input<TemplateRef<any> | undefined>(undefined)\n listItemChildTemplate = contentChild<TemplateRef<any>>('listItem')\n get listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate() || this.listItemChildTemplate()\n }\n\n gridItemTemplate = input<TemplateRef<any> | undefined>(undefined)\n gridItemChildTemplate = contentChild<TemplateRef<any>>('gridItem')\n get gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate() || this.gridItemChildTemplate()\n }\n\n listValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n listValueChildTemplate = contentChild<TemplateRef<any>>('listValue')\n get listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate() || this.listValueChildTemplate()\n }\n\n translationKeyListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n translationKeyListValueChildTemplate = contentChild<TemplateRef<any>>('translationKeyListValue')\n get translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate() || this.translationKeyListValueChildTemplate()\n }\n\n numberListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n numberListValueChildTemplate = contentChild<TemplateRef<any>>('numberListValue')\n get numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate() || this.numberListValueChildTemplate()\n }\n\n relativeDateListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n relativeDateListValueChildTemplate = contentChild<TemplateRef<any>>('relativeDateListValue')\n get relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate() || this.relativeDateListValueChildTemplate()\n }\n\n stringListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n stringListValueChildTemplate = contentChild<TemplateRef<any>>('stringListValue')\n get stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate() || this.stringListValueChildTemplate()\n }\n\n dateListValueTemplate = input<TemplateRef<any> | undefined>(undefined)\n dateListValueChildTemplate = contentChild<TemplateRef<any>>('dateListValue')\n get dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate() || this.dateListValueChildTemplate()\n }\n\n additionalActions = input<DataAction[]>([])\n inlineListActions = computed(() => {\n return this.additionalActions().filter((action) => !action.showAsOverflow)\n })\n overflowListActions = computed(() => {\n return this.additionalActions().filter((action) => action.showAsOverflow)\n })\n overflowListActions$ = toObservable(this.overflowListActions)\n currentMenuRow = signal<Row | null>(null)\n overflowListMenuItems$ = combineLatest([\n toObservable(this.overflowListActions),\n toObservable(this.currentMenuRow),\n this.permissions$,\n ]).pipe(\n map(([actions, row, permissions]) => ({\n actions: this.filterActionsBasedOnPermissions(actions, permissions),\n row,\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: this.createMenuItemCommand(a, row),\n }))\n })\n )\n })\n )\n\n @Output() viewItem = observableOutput<ListGridData | undefined>()\n @Output() editItem = observableOutput<ListGridData | undefined>()\n @Output() deleteItem = observableOutput<ListGridData | undefined>()\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n componentStateChanged = output<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 observedOutputs = computed(() => {\n return (this.viewItemObserved ? 1 : 0) + (this.deleteItemObserved ? 1 : 0) + (this.editItemObserved ? 1 : 0)\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 selectedItem = signal<ListGridData | undefined>(undefined)\n\n permittedAdditionalActions$ = combineLatest([this.permissions$, toObservable(this.additionalActions)]).pipe(\n map(([permissions, additionalActions]) => {\n return this.filterActionsBasedOnPermissions(additionalActions, permissions)\n })\n )\n\n gridMenuState$ = combineLatest([\n // Trigger the whole chain to recalculate when data changes, to update the enabled/visible state of menu items based on the selected row\n toObservable(this.data),\n this.permissions$,\n this.permittedAdditionalActions$,\n toObservable(this.selectedItem),\n toObservable(this.observedOutputs),\n toObservable(this.viewMenuItemKey),\n toObservable(this.editMenuItemKey),\n toObservable(this.deleteMenuItemKey),\n toObservable(this.viewPermission),\n toObservable(this.editPermission),\n toObservable(this.deletePermission),\n toObservable(this.viewActionEnabledField),\n toObservable(this.editActionEnabledField),\n toObservable(this.deleteActionEnabledField),\n toObservable(this.viewActionVisibleField),\n toObservable(this.editActionVisibleField),\n toObservable(this.deleteActionVisibleField),\n ]).pipe(\n map(\n ([\n _data,\n permissions,\n additionalActions,\n selectedItem,\n _observedOutputs,\n viewMenuItemKey,\n editMenuItemKey,\n deleteMenuItemKey,\n viewPermission,\n editPermission,\n deletePermission,\n viewActionEnabledField,\n editActionEnabledField,\n deleteActionEnabledField,\n viewActionVisibleField,\n editActionVisibleField,\n deleteActionVisibleField,\n ]) => {\n return {\n permissions,\n additionalActions,\n selectedItem,\n viewMenuItemKey: viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW',\n editMenuItemKey: editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT',\n deleteMenuItemKey: deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE',\n viewPermission,\n editPermission,\n deletePermission,\n viewActionEnabledField,\n editActionEnabledField,\n deleteActionEnabledField,\n viewActionVisibleField,\n editActionVisibleField,\n deleteActionVisibleField,\n }\n }\n )\n )\n\n gridMenuItems$ = this.gridMenuState$.pipe(\n switchMap((params) => {\n return this.getGridActionsTranslations(params.additionalActions, {\n viewMenuItem: params.viewMenuItemKey,\n editMenuItem: params.editMenuItemKey,\n deleteMenuItem: params.deleteMenuItemKey,\n }).pipe(map((translations) => ({ ...params, translations })))\n }),\n map((params) =>\n this.mapGridMenuItems(\n params.permissions,\n params.additionalActions,\n params.selectedItem,\n params.translations,\n {\n viewMenuItem: params.viewMenuItemKey,\n editMenuItem: params.editMenuItemKey,\n deleteMenuItem: params.deleteMenuItemKey,\n },\n {\n viewPermission: params.viewPermission,\n editPermission: params.editPermission,\n deletePermission: params.deletePermission,\n },\n {\n visible: {\n viewAction: params.viewActionVisibleField,\n editAction: params.editActionVisibleField,\n deleteAction: params.deleteActionVisibleField,\n },\n enabled: {\n viewAction: params.viewActionEnabledField,\n editAction: params.editActionEnabledField,\n deleteAction: params.deleteActionEnabledField,\n },\n }\n )\n )\n )\n\n displayedItems$ = combineLatest([\n toObservable(this.data),\n toObservable(this.filters),\n toObservable(this.sortField),\n toObservable(this.sortDirection),\n toObservable(this.columns),\n toObservable(this.clientSideFiltering),\n toObservable(this.clientSideSorting),\n ]).pipe(\n map(([data, filters, sortField, sortDirection, columns, clientSideFiltering, clientSideSorting]) => {\n return { data, filters, sortField, sortDirection, columns, clientSideFiltering, clientSideSorting }\n }),\n mergeMap((params) =>\n this.translateItems(params.data, params.columns, params.clientSideFiltering, params.clientSideSorting).pipe(\n map((translatedItems) => ({ ...params, translatedItems }))\n )\n ),\n map((params) => ({\n ...params,\n data: this.filterItems([params.data, params.filters, params.translatedItems], params.clientSideFiltering),\n })),\n map((params) => ({\n ...params,\n data: this.sortItems(\n [params.data, params.sortField, params.sortDirection, params.translatedItems],\n params.columns,\n params.clientSideSorting\n ),\n })),\n map(({ data }) => data)\n )\n fallbackImagePath$!: Observable<string>\n\n templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n templates$ = toObservable(this.templates)\n\n viewTemplates = viewChildren<PrimeTemplate>(PrimeTemplate)\n viewTemplates$ = toObservable(this.viewTemplates)\n\n parentTemplates = model<PrimeTemplate[] | null | undefined>(undefined)\n parentTemplates$ = toObservable(this.parentTemplates)\n\n columnType = ColumnType\n private templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n hasViewPermission$ = toObservable(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.permissions$.pipe(map((permissions) => permissionArray.every((p) => permissions.includes(p))))\n })\n )\n\n constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n\n effect(() => {\n const data = this.data()\n // Not track previousData change to avoid the trigger\n untracked(() => {\n const previousData = this.previousData()\n if (previousData.length && !equal(data, previousData)) {\n this.page.set(0)\n }\n })\n\n const currentResults = data.length\n const newStatus =\n currentResults === 0 ? 'OCX_DATA_LIST_GRID.NO_SEARCH_RESULTS_FOUND' : 'OCX_DATA_LIST_GRID.SEARCH_RESULTS_FOUND'\n\n firstValueFrom(this.translateService.get(newStatus, { results: currentResults })).then(\n (translatedText: string) => {\n this.liveAnnouncer.announce(translatedText)\n }\n )\n })\n\n effect(() => {\n const columns = this.columns()\n const obs = columns.map((c) => this.getTemplate(c))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n })\n\n effect(() => {\n this.filters()\n // Not track previousFilters change to avoid the trigger\n untracked(() => {\n const previousFilters = this.previousFilters()\n if (previousFilters.length && !equal(this.filters(), previousFilters)) {\n this.page.set(0)\n }\n })\n })\n\n this.fallbackImagePath$ = this.appStateService.currentMfe$.pipe(\n map((currentMfe) => this.getFallbackImagePath(currentMfe))\n )\n\n effect(() => {\n this.emitComponentStateChanged()\n })\n\n effect(() => {\n this.pageChanged.emit(this.page())\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (pageSize === undefined) {\n return\n }\n this.pageSizeChanged.emit(pageSize)\n })\n }\n\n ngOnInit(): void {\n this.name.set(this.name() || this.router.url.replace(/[^A-Za-z0-9]/, '_'))\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.set(item)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n emitComponentStateChanged() {\n this.componentStateChanged.emit({\n pageSize: this.displayedPageSize(),\n activePage: this.page(),\n })\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page.set(page)\n this.pageSize.set(event.rows)\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!this.resolveFieldData(object, key)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return combineLatest([this.overflowListActions$, this.permissions$]).pipe(\n map(([actions, permission]) => this.filterActionsBasedOnPermissions(actions, permission)),\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.set(row)\n menu.toggle(event)\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 keys: {\n viewMenuItem: string\n editMenuItem: string\n deleteMenuItem: string\n },\n actionPermissions: {\n viewPermission: PermissionInput\n editPermission: PermissionInput\n deletePermission: PermissionInput\n },\n actionFields: {\n visible: {\n viewAction?: string\n editAction?: string\n deleteAction?: string\n }\n enabled: {\n viewAction?: string\n editAction?: string\n deleteAction?: string\n }\n }\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 =\n !!actionFields.enabled.viewAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.viewAction)\n editDisabled =\n !!actionFields.enabled.editAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.editAction)\n deleteDisabled =\n !!actionFields.enabled.deleteAction && !this.fieldIsTruthy(selectedItem, actionFields.enabled.deleteAction)\n\n viewVisible = !actionFields.visible.viewAction || this.fieldIsTruthy(selectedItem, actionFields.visible.viewAction)\n editVisible = !actionFields.visible.editAction || this.fieldIsTruthy(selectedItem, actionFields.visible.editAction)\n deleteVisible =\n !actionFields.visible.deleteAction || this.fieldIsTruthy(selectedItem, actionFields.visible.deleteAction)\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(actionPermissions.viewPermission, this.viewItem, permissions)) {\n menuItems.push({\n label: translations[keys.viewMenuItem],\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(actionPermissions.editPermission, this.editItem, permissions)) {\n menuItems.push({\n label: translations[keys.editMenuItem],\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(actionPermissions.deletePermission, this.deleteItem, permissions)) {\n menuItems.push({\n label: translations[keys.deleteMenuItem],\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: () => handleActionSync(this.router, a, selectedItem),\n automationId: isVisible ? automationId : automationIdHidden,\n }\n })\n )\n return val\n }\n\n private getGridActionsTranslations(\n additionalActions: DataAction[],\n keys: {\n viewMenuItem: string\n editMenuItem: string\n deleteMenuItem: string\n }\n ): Observable<Record<string, string>> {\n return this.translateService.get([\n keys.viewMenuItem,\n keys.editMenuItem,\n keys.deleteMenuItem,\n ...additionalActions.map((a) => a.labelKey || ''),\n ])\n }\n\n private shouldDisplayAction(\n permission: PermissionInput,\n emitter: ObservableOutputEmitterRef<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[]): DataAction[] {\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 private getPermissions(): Observable<string[]> {\n if (this.hasPermissionChecker?.getPermissions) {\n return this.hasPermissionChecker.getPermissions()\n }\n\n return this.userService.getPermissions()\n }\n\n async onActionClick(action: DataAction, item: any): Promise<void> {\n await handleAction(this.router, action, item)\n }\n\n private createMenuItemCommand(action: DataAction, row: any): () => void {\n return () => handleActionSync(this.router, action, row)\n }\n}\n","@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() !== undefined ? currentPageShowingWithTotalOnServerKey() : currentPageShowingKey()) | translate:params()\"\n [rowsPerPageOptions]=\"pageSizes() ?? []\"\n [id]=\"'dataListGrid_' + name()\"\n paginatorDropdownAppendTo=\"body\"\n>\n <ng-template #grid let-rows>\n <div class=\"grid grid-cols-12 grid-nogutter gap-4 w-full\" role=\"list\">\n @for (item of rows; track item) {\n <ng-container\n [ngTemplateOutlet]=\"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\" role=\"list\">\n @for (item of rows; track item; let first = $first) { @defer (on viewport; on idle){\n <ng-container\n [ngTemplateOutlet]=\"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\" role=\"listitem\">\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 @if (hasViewPermission$ | async; as hasViewPermission) {\n <a [routerLink]=\"\" (click)=\"onViewRow(item)\">{{ resolveFieldData(item, titleLineId()) || '' }}</a>\n } @else {\n <a [routerLink]=\"\">{{ resolveFieldData(item, titleLineId()) || '' }}</a>\n }\n </div>\n <ng-container\n [ngTemplateOutlet]=\"gridItemSubtitleLines ?? defaultGridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n @if ((gridMenuItems$ | async); as gridMenuItems) {\n <div>\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 [ocxTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n ></button>\n </div>\n }\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\" role=\"listitem\">\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 [ocxTooltip]=\"(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 [ocxTooltip]=\"(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 {\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 [ocxTooltip]=\"(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(); track action) { @if ((!action.actionVisibleField || fieldIsTruthy(item,\n 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)=\"onActionClick(action, item)\"\n [ocxTooltip]=\"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 [ocxTooltip]=\"'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 ?? defaultListItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div class=\"flex flex-wrap\">\n @for (col of filteredColumns(); 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 ?? 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, computed, effect, input, model, output } from '@angular/core'\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 {\n readonly columns = input<DataTableColumn[]>([])\n readonly sortStates = input<DataSortDirection[]>([DataSortDirection.ASCENDING, DataSortDirection.DESCENDING])\n\n readonly sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n readonly sortField = model<string>('')\n\n readonly sortChange = output<string>()\n readonly sortDirectionChange = output<DataSortDirection>()\n readonly componentStateChanged = output<DataListGridSortingComponentState>()\n readonly columnsChange = output<string[]>()\n\n readonly dropdownOptions = computed<DataColumnNameId[]>(() => {\n return this.columns()\n .filter((c) => !!c.sortable)\n .map((c) => ({ columnId: c.id, columnName: c.nameKey }))\n })\n\n readonly selectedSortingOption = computed<DataColumnNameId | undefined>(() => {\n const sortField = this.sortField()\n return this.dropdownOptions().find((e) => e.columnId === sortField)\n })\n\n constructor() {\n effect(() => {\n this.componentStateChanged.emit({\n sorting: {\n sortColumn: this.sortField(),\n sortDirection: this.sortDirection(),\n },\n })\n })\n }\n\n selectSorting(event: SelectChangeEvent): void {\n this.sortField.set(event.value.columnId)\n this.sortChange.emit(event.value.columnId)\n }\n\n sortDirectionChanged(): void {\n const newSortDirection = this.nextSortDirection()\n this.sortDirection.set(newSortDirection)\n this.sortDirectionChange.emit(newSortDirection)\n }\n\n nextSortDirection(): DataSortDirection {\n const states = this.sortStates()\n return states[(states.indexOf(this.sortDirection()) + 1) % states.length]\n }\n\n sortIcon(): string {\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(): string {\n return this.sortDirectionToTitle(this.nextSortDirection())\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection): string {\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 optionLabel=\"columnName\"\n >\n <ng-template let-item #item> \n <span [attr.aria-label]=\"item?.columnName ? (item.columnName | translate) : ''\">{{ item?.columnName ? (item.columnName | translate) : ''}}</span> \n </ng-template>\n <ng-template let-item #selectedItem>\n <span [attr.aria-label]=\"item?.columnName ? (item.columnName | translate) : ''\">{{ item?.columnName ? (item.columnName | translate) : ''}}</span>\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 (keydown.enter)=\"sortDirectionChanged()\"\n (keydown.space)=\"sortDirectionChanged()\"\n [ocxTooltip]=\"(sortIconTitle() | translate)\"\n tooltipPosition=\"top\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.SORTING_BUTTON_ARIA_LABEL' | translate:{currentDirection: sortDirection(), nextDirection: (sortDirectionToTitle(nextSortDirection())) | translate})\"\n ></p-button>\n</div>","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 Component,\n Injector,\n LOCALE_ID,\n OnInit,\n Output,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChildren,\n} from '@angular/core'\nimport { computedPrevious } from 'ngxtension/computed-previous'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { isValidDate } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { PrimeTemplate, SelectItem } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { MultiSelectItem } from 'primeng/multiselect'\nimport {\n Observable,\n combineLatest,\n debounceTime,\n filter,\n firstValueFrom,\n map,\n mergeMap,\n of,\n switchMap,\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 { PermissionInput } from '../../model/permission.model'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\nimport { LiveAnnouncer } from '@angular/cdk/a11y'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport equal from 'fast-deep-equal'\nimport { handleAction, handleActionSync } from '../../utils/action-router.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 {\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 private readonly liveAnnouncer = inject(LiveAnnouncer)\n\n FilterType = FilterType\n TemplateType = TemplateType\n\n rows = model<Row[]>([])\n previousRows = computedPrevious(this.rows)\n selectedRows = model<Row[]>([])\n selectedIds = signal<Array<string | number>>([])\n\n filters = model<Filter[]>([])\n previousFilters = computedPrevious(this.filters)\n sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n sortColumn = model<string>('')\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columnFilterTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columns = model<DataTableColumn[]>([])\n clientSideFiltering = input(true)\n clientSideSorting = input(true)\n sortStates = model<DataSortDirection[]>([DataSortDirection.ASCENDING, DataSortDirection.DESCENDING])\n\n pageSizes = model<number[]>([10, 25, 50])\n displayedPageSize = computed(() => {\n const pageSize = this.pageSize()\n const pageSizes = this.pageSizes()\n\n return pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50\n })\n pageSize = model<number | undefined>(undefined)\n\n emptyResultsMessage = input<string | undefined>(undefined)\n name = model<string>('')\n deletePermission = input<PermissionInput>(undefined)\n viewPermission = input<PermissionInput>(undefined)\n editPermission = input<PermissionInput>(undefined)\n deleteActionVisibleField = input<string | undefined>(undefined)\n deleteActionEnabledField = input<string | undefined>(undefined)\n viewActionVisibleField = input<string | undefined>(undefined)\n viewActionEnabledField = input<string | undefined>(undefined)\n editActionVisibleField = input<string | undefined>(undefined)\n editActionEnabledField = input<string | undefined>(undefined)\n selectionEnabledField = input<string | undefined>(undefined)\n allowSelectAll = input<boolean>(true)\n paginator = input<boolean>(true)\n\n page = model<number>(0)\n tableStyle = input<{ [klass: string]: any } | undefined>(undefined)\n totalRecordsOnServer = input<number | undefined>(undefined)\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n params = computed(() => {\n const totalRecordsOnServer = this.totalRecordsOnServer()\n return {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n totalRecordsOnServer,\n }\n })\n\n stringCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n stringCellChildTemplate = contentChild<TemplateRef<any>>('stringCell')\n stringCell = computed(() => {\n return this.stringCellTemplate() || this.stringCellChildTemplate()\n })\n\n numberCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n numberCellChildTemplate = contentChild<TemplateRef<any>>('numberCell')\n numberCell = computed(() => {\n return this.numberCellTemplate() || this.numberCellChildTemplate()\n })\n\n dateCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n dateCellChildTemplate = contentChild<TemplateRef<any>>('dateCell')\n dateCell = computed(() => {\n return this.dateCellTemplate() || this.dateCellChildTemplate()\n })\n\n relativeDateCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n relativeDateCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateCell')\n relativeDateCell = computed(() => {\n return this.relativeDateCellTemplate() || this.relativeDateCellChildTemplate()\n })\n\n cellTemplate = input<TemplateRef<any> | undefined>(undefined)\n cellChildTemplate = contentChild<TemplateRef<any>>('cell')\n cell = computed(() => {\n return this.cellTemplate() || this.cellChildTemplate()\n })\n\n translationKeyCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n translationKeyCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyCell')\n translationKeyCell = computed(() => {\n return this.translationKeyCellTemplate() || this.translationKeyCellChildTemplate()\n })\n\n stringFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n stringFilterCellChildTemplate = contentChild<TemplateRef<any>>('stringFilterCell')\n stringFilterCell = computed(() => {\n return this.stringFilterCellTemplate() || this.stringFilterCellChildTemplate()\n })\n\n numberFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n numberFilterCellChildTemplate = contentChild<TemplateRef<any>>('numberFilterCell')\n numberFilterCell = computed(() => {\n return this.numberFilterCellTemplate() || this.numberFilterCellChildTemplate()\n })\n\n dateFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n dateFilterCellChildTemplate = contentChild<TemplateRef<any>>('dateFilterCell')\n dateFilterCell = computed(() => {\n return this.dateFilterCellTemplate() || this.dateFilterCellChildTemplate()\n })\n\n relativeDateFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n relativeDateFilterCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateFilterCell')\n relativeDateFilterCell = computed(() => {\n return this.relativeDateFilterCellTemplate() || this.relativeDateFilterCellChildTemplate()\n })\n\n filterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n filterCellChildTemplate = contentChild<TemplateRef<any>>('filterCell')\n filterCell = computed(() => {\n return this.filterCellTemplate() || this.filterCellChildTemplate()\n })\n\n translationKeyFilterCellTemplate = input<TemplateRef<any> | undefined>(undefined)\n translationKeyFilterCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyFilterCell')\n translationKeyFilterCell = computed(() => {\n return this.translationKeyFilterCellTemplate() || this.translationKeyFilterCellChildTemplate()\n })\n\n additionalActions = model<DataAction[]>([])\n frozenActionColumn = input<boolean>(false)\n actionColumnPosition = input<'left' | 'right'>('right')\n\n filtered = output<Filter[]>()\n sorted = output<Sort>()\n @Output() viewTableRow = observableOutput<Row>()\n @Output() editTableRow = observableOutput<Row>()\n @Output() deleteTableRow = observableOutput<Row>()\n @Output() selectionChanged = observableOutput<Row[]>()\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n componentStateChanged = output<DataTableComponentState>()\n\n displayedRows$ = combineLatest([\n toObservable(this.rows),\n toObservable(this.filters),\n toObservable(this.sortColumn),\n toObservable(this.sortDirection),\n toObservable(this.columns),\n toObservable(this.clientSideFiltering),\n toObservable(this.clientSideSorting),\n ]).pipe(\n map(([rows, filters, sortColumn, sortDirection, columns, clientSideFiltering, clientSideSorting]) => {\n return { rows, filters, sortColumn, sortDirection, columns, clientSideFiltering, clientSideSorting }\n }),\n mergeMap((params) =>\n this.translateItems(params.rows, params.columns, params.clientSideFiltering, params.clientSideSorting).pipe(\n map((translations) => ({ ...params, translations }))\n )\n ),\n map((params) => ({\n ...params,\n rows: this.filterItems([params.rows, params.filters, params.translations], params.clientSideFiltering),\n })),\n map((params) => ({\n ...params,\n rows: this.sortItems(\n [params.rows, params.sortColumn, params.sortDirection, params.translations],\n params.columns,\n params.clientSideSorting\n ),\n })),\n map(({ rows }) => this.flattenItems(rows))\n )\n\n selectedFilteredRows = computed(() => {\n const selectionIds = this.selectedIds()\n const rows = this.rows()\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.page()\n return selectionIds.map((rowId) => rows.find((r) => r.id === rowId)).filter((row): row is Row => row !== undefined)\n })\n\n currentFilterColumn = signal<DataTableColumn | null>(null)\n currentEqualFilterOptions$ = combineLatest([\n toObservable(this.rows),\n toObservable(this.currentFilterColumn),\n toObservable(this.filters),\n toObservable(this.columns),\n ]).pipe(\n filter(\n ([_, currentFilterColumn, __, ___]) =>\n !currentFilterColumn?.filterType || currentFilterColumn.filterType === FilterType.EQUALS\n ),\n mergeMap(([rows, currentFilterColumn, filters, columns]) => {\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 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\n currentEqualSelectedFilters = computed(() => {\n const filters = this.filters()\n const currentFilterColumn = this.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 currentTruthySelectedFilters = computed(() => {\n const filters = this.filters()\n const currentFilterColumn = this.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 filterAmounts = computed<Record<string, number>>(() => {\n const filters = this.filters()\n return filters\n .map((filter) => filter.columnId)\n .map((columnId) => ({ [columnId]: filters.filter((filter) => filter.columnId === columnId).length }))\n .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n })\n\n overflowActions = computed(() => {\n return this.additionalActions().filter((action) => action.showAsOverflow)\n })\n overflowActions$ = toObservable(this.overflowActions)\n inlineActions = computed(() => {\n return this.additionalActions().filter((action) => !action.showAsOverflow)\n })\n currentMenuRow = signal<Row | null>(null)\n\n overflowMenuItems$ = combineLatest([toObservable(this.overflowActions), toObservable(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: this.createMenuItemCommand(a, row),\n }))\n })\n )\n })\n )\n\n templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n templates$ = toObservable(this.templates)\n\n viewTemplates = viewChildren<PrimeTemplate>(PrimeTemplate)\n viewTemplates$ = toObservable(this.viewTemplates)\n\n parentTemplates = model<PrimeTemplate[] | null | undefined>(undefined)\n parentTemplates$ = toObservable(this.parentTemplates)\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 constructor() {\n const locale = inject(LOCALE_ID)\n const translateService = inject(TranslateService)\n\n super(locale, translateService)\n\n effect(() => {\n const rows = this.rows()\n\n // Not track previousRows change to avoid the trigger\n untracked(() => {\n const previousRows = this.previousRows()\n if (previousRows.length && rows.length < previousRows.length) {\n this.page.set(0)\n }\n })\n\n const currentResults = rows.length\n const newStatus =\n currentResults === 0 ? 'OCX_DATA_TABLE.NO_SEARCH_RESULTS_FOUND' : 'OCX_DATA_TABLE.SEARCH_RESULTS_FOUND'\n\n firstValueFrom(this.translateService.get(newStatus, { results: currentResults })).then(\n (translatedText: string) => {\n this.liveAnnouncer.announce(translatedText)\n }\n )\n })\n\n effect(() => {\n const filters = this.filters()\n // Not track previousFilters change to avoid the trigger\n untracked(() => {\n const previousFilters = this.previousFilters()\n if (previousFilters.length && !equal(filters, previousFilters)) {\n this.page.set(0)\n }\n })\n this.filtered.emit(filters)\n })\n\n effect(() => {\n const columns = this.columns()\n const obs = columns.map((c) => this.getTemplate(c, TemplateType.CELL))\n const filterObs = columns.map((c) => this.getTemplate(c, TemplateType.FILTERCELL))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n this.columnFilterTemplates$ = combineLatest(filterObs).pipe(\n map((values) => Object.fromEntries(columns.map((c, i) => [c.id, values[i]])))\n )\n })\n\n effect(() => {\n const selectedRows = this.selectedRows()\n const selectedIds = selectedRows.map((row) => {\n if (typeof row === 'object') {\n return row.id\n }\n return row\n })\n this.selectedIds.set(selectedIds)\n })\n\n effect(() => {\n this.emitComponentStateChanged()\n })\n\n effect(() => {\n this.sorted.emit({ sortColumn: this.sortColumn(), sortDirection: this.sortDirection() })\n })\n\n effect(() => {\n this.emitSelectionChanged()\n })\n\n effect(() => {\n this.pageChanged.emit(this.page())\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (pageSize === undefined) {\n return\n }\n this.pageSizeChanged.emit(pageSize)\n })\n\n this.rowSelectable = this.rowSelectable.bind(this)\n }\n\n ngOnInit(): void {\n this.name.set(this.name() || this.router.url.replace(/[^A-Za-z0-9]/, '_'))\n }\n\n translateColumnValues(columnValues: string[]): Observable<any> {\n return columnValues.length ? this.translateService.get(columnValues as string[]) : of({})\n }\n\n emitComponentStateChanged() {\n this.componentStateChanged.emit({\n filters: this.filters(),\n sorting: {\n sortColumn: this.sortColumn(),\n sortDirection: this.sortDirection(),\n },\n pageSize: this.displayedPageSize(),\n activePage: this.page(),\n selectedRows: this.rows().filter((row) => this.selectedIds().includes(row.id)),\n })\n }\n\n emitSelectionChanged() {\n this.selectionChanged.emit(this.rows().filter((row) => this.selectedIds().includes(row.id)))\n }\n\n onSortColumnClick(sortColumn: string) {\n const newSortDirection = this.columnNextSortDirection(sortColumn)\n\n this.sortColumn.set(sortColumn)\n this.sortDirection.set(newSortDirection)\n }\n\n columnNextSortDirection(sortColumn: string) {\n const sortStates = this.sortStates()\n return sortColumn === this.sortColumn()\n ? sortStates[(sortStates.indexOf(this.sortDirection()) + 1) % sortStates.length]\n : sortStates[0]\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.set(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.set(filters)\n }\n }\n\n sortIconTitle(sortColumn: string) {\n return this.sortDirectionToTitle(this.columnNextSortDirection(sortColumn))\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 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()\n\n if (this.selectionEnabledField()) {\n const disabledRowIds = rows\n .filter((r) => !this.fieldIsTruthy(r, this.selectionEnabledField()))\n .map((row) => row.id)\n if (disabledRowIds.length > 0) {\n newSelectionIds = this.mergeWithDisabledKeys(newSelectionIds, disabledRowIds)\n }\n }\n\n this.selectedIds.set(newSelectionIds)\n }\n\n mergeWithDisabledKeys(newSelectionIds: (string | number)[], disabledRowIds: (string | number)[]) {\n const previousSelectionIds = this.selectedIds()\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.selectedIds().includes(row.id)\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page.set(page)\n this.pageSize.set(event.rows)\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.set(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 private readonly 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 private readonly 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 private readonly 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 = (index: number, 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 async onActionClick(action: DataAction, rowObject: any): Promise<void> {\n await handleAction(this.router, action, rowObject)\n }\n \n private createMenuItemCommand(action: DataAction, row: any): () => void {\n return () => handleActionSync(this.router, action, row)\n }\n}","<ng-template #actionColumn let-rowObject=\"localRowObject\">\n @if ( anyRowActionObserved || additionalActions().length > 0 || overflowActions().length > 0 ) {\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 {\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(); track action) { @if (!action.actionVisibleField || fieldIsTruthy(rowObject,\n 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)=\"onActionClick(action, rowObject)\"\n [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"\n action.disabled ||\n (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField))\n \"\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 || additionalActions().length > 0 || overflowActions().length > 0 ) {\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(); as displayedPageSize) { @if ((columnTemplates$ | async) ?? {}; as columnTemplates) {\n<p-table\n [value]=\"(displayedRows$ | async) ?? []\"\n [paginator]=\"paginator()\"\n [first]=\"page() * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [showCurrentPageReport]=\"true\"\n [currentPageReportTemplate]=\"\n (totalRecordsOnServer() ? currentPageShowingWithTotalOnServerKey() : currentPageShowingKey())\n | translate : params()\n \"\n [rowsPerPageOptions]=\"pageSizes()\"\n [id]=\"'dataTable_' + name()\"\n (selectionChange)=\"onSelectionChange($event)\"\n dataKey=\"id\"\n [rowTrackBy]=\"rowTrackByFunction\"\n [selection]=\"selectedFilteredRows()\"\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 [ocxTooltip]=\"'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 [ocxTooltip]=\"sortIconTitle(column.id) | translate\"\n tooltipPosition=\"bottom\"\n [attr.aria-label]=\"\n 'OCX_DATA_TABLE.TOGGLE_BUTTON.ARIA_LABEL'\n | translate : {\n column: (column.nameKey | translate),\n direction: (sortDirectionToTitle(columnNextSortDirection(column.id)) | translate)\n }\n \"\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() || []\"\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]=\"\n 'OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate : { column: column.nameKey | translate }\n \"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!filterAmounts()[column.id]\"\n [class.pi-filter-fill]=\"filterAmounts()[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]=\"[\n { key: 'OCX_DATA_TABLE.FILTER_YES', value: true },\n { key: 'OCX_DATA_TABLE.FILTER_NO', value: false }\n ]\"\n [ngModel]=\"currentTruthySelectedFilters() || []\"\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]=\"\n 'OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate : { column: column.nameKey | translate }\n \"\n >\n <ng-template #selecteditems let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!filterAmounts()[column.id]\"\n [class.pi-filter-fill]=\"filterAmounts()[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\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 [value]=\"true\"\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]=\"cell() ?? columnTemplates[column.id]\"\n [ngTemplateOutletContext]=\"{ rowObject: rowObject, column: column }\"\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\n <ng-template #emptymessage>\n <tr>\n <td\n [colSpan]=\"\n columns().length +\n ((anyRowActionObserved || additionalActions().length > 0) ? 1 : 0) +\n (allowSelectAll() ? 1 : 0)\n \"\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 Component,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { PrimeTemplate } from 'primeng/api'\nimport { 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'\nimport { observableOutput } from '../../utils/observable-output.utils'\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 OnInit {\n private readonly injector = inject(Injector)\n\n dataListGridComponent = viewChild(DataListGridComponent)\n\n dataTableComponent = viewChild(DataTableComponent)\n\n dataTableComponentState$ = new ReplaySubject<DataTableComponentState>(1)\n dataListGridComponentState$ = new ReplaySubject<DataListGridComponentState>(1)\n\n deletePermission = input<string | string[]>()\n editPermission = input<string | string[]>()\n viewPermission = input<string | string[]>()\n deleteActionVisibleField = input<string | undefined>()\n deleteActionEnabledField = input<string | undefined>()\n viewActionVisibleField = input<string | undefined>()\n viewActionEnabledField = input<string | undefined>()\n editActionVisibleField = input<string | undefined>()\n editActionEnabledField = input<string | undefined>()\n tableSelectionEnabledField = input<string | undefined>()\n tableAllowSelectAll = input<boolean>(true)\n data = input<RowListGridData[]>([])\n name = input<string>('')\n titleLineId = input<string | undefined>()\n subtitleLineIds = input<string[]>()\n layout = input<any>()\n columns = input<DataTableColumn[]>([])\n emptyResultsMessage = input<string | undefined>()\n clientSideSorting = input<boolean>(true)\n clientSideFiltering = input<boolean>(true)\n fallbackImage = input<string>()\n filters = model<Filter[]>([])\n sortField = model<any>()\n sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n listGridPaginator = model<boolean>(true)\n tablePaginator = model<boolean>(true)\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator() && this.tablePaginator()\n }\n set paginator(value: boolean) {\n this.listGridPaginator.set(value)\n this.tablePaginator.set(value)\n }\n page = model<number>(0)\n totalRecordsOnServer = input<number | undefined>()\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n selectedRows = input<Row[]>([])\n frozenActionColumn = input<boolean>(false)\n actionColumnPosition = input<'left' | 'right'>('right')\n\n sortStates = input<DataSortDirection[]>([])\n pageSizes = input<number[]>([10, 25, 50])\n pageSize = model<number | undefined>()\n\n stringTableCellTemplate = input<TemplateRef<any> | undefined>()\n stringTableCellChildTemplate = contentChild<TemplateRef<any>>('stringTableCellTemplate')\n get stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCellTemplate() || this.stringTableCellChildTemplate()\n }\n\n numberTableCellTemplate = input<TemplateRef<any> | undefined>()\n numberTableCellChildTemplate = contentChild<TemplateRef<any>>('numberTableCellTemplate')\n get numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCellTemplate() || this.numberTableCellChildTemplate()\n }\n\n dateTableCellTemplate = input<TemplateRef<any> | undefined>()\n dateTableCellChildTemplate = contentChild<TemplateRef<any>>('dateTableCellTemplate')\n get dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate() || this.dateTableCellChildTemplate()\n }\n\n tableCellTemplate = input<TemplateRef<any> | undefined>()\n tableCellChildTemplate = contentChild<TemplateRef<any>>('tableCellTemplate')\n get tableCell(): TemplateRef<any> | undefined {\n return this.tableCellTemplate() || this.tableCellChildTemplate()\n }\n\n translationKeyTableCellTemplate = input<TemplateRef<any> | undefined>()\n translationKeyTableCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyTableCellTemplate')\n get translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCellTemplate() || this.translationKeyTableCellChildTemplate()\n }\n\n gridItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>()\n gridItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('gridItemSubtitleLinesTemplate')\n get gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate() || this.gridItemSubtitleLinesChildTemplate()\n }\n\n listItemSubtitleLinesTemplate = input<TemplateRef<any> | undefined>()\n listItemSubtitleLinesChildTemplate = contentChild<TemplateRef<any>>('listItemSubtitleLinesTemplate')\n get listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate() || this.listItemSubtitleLinesChildTemplate()\n }\n gridItemTemplate = input<TemplateRef<any> | undefined>()\n gridItemChildTemplate = contentChild<TemplateRef<any>>('gridItemTemplate')\n get gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate() || this.gridItemChildTemplate()\n }\n\n listItemTemplate = input<TemplateRef<any> | undefined>()\n listItemChildTemplate = contentChild<TemplateRef<any>>('listItemTemplate')\n get listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate() || this.listItemChildTemplate()\n }\n\n relativeDateTableCellTemplate = input<TemplateRef<any> | undefined>()\n relativeDateTableCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateTableCellTemplate')\n get relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCellTemplate() || this.relativeDateTableCellChildTemplate()\n }\n\n listValueTemplate = input<TemplateRef<any> | undefined>()\n listValueChildTemplate = contentChild<TemplateRef<any>>('listValueTemplate')\n get listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate() || this.listValueChildTemplate()\n }\n translationKeyListValueTemplate = input<TemplateRef<any> | undefined>()\n translationKeyListValueChildTemplate = contentChild<TemplateRef<any>>('translationKeyListValueTemplate')\n get translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate() || this.translationKeyListValueChildTemplate()\n }\n numberListValueTemplate = input<TemplateRef<any> | undefined>()\n numberListValueChildTemplate = contentChild<TemplateRef<any>>('numberListValueTemplate')\n get numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate() || this.numberListValueChildTemplate()\n }\n relativeDateListValueTemplate = input<TemplateRef<any> | undefined>()\n relativeDateListValueChildTemplate = contentChild<TemplateRef<any>>('relativeDateListValueTemplate')\n get relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate() || this.relativeDateListValueChildTemplate()\n }\n stringListValueTemplate = input<TemplateRef<any> | undefined>()\n stringListValueChildTemplate = contentChild<TemplateRef<any>>('stringListValueTemplate')\n get stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate() || this.stringListValueChildTemplate()\n }\n dateListValueTemplate = input<TemplateRef<any> | undefined>()\n dateListValueChildTemplate = contentChild<TemplateRef<any>>('dateListValueTemplate')\n get dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate() || this.dateListValueChildTemplate()\n }\n tableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n tableFilterCellChildTemplate = contentChild<TemplateRef<any>>('tableFilterCellTemplate')\n get tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCellTemplate() || this.tableFilterCellChildTemplate()\n }\n dateTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n dateTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('dateTableFilterCellTemplate')\n get dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCellTemplate() || this.dateTableFilterCellChildTemplate()\n }\n relativeDateTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n relativeDateTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('relativeDateTableFilterCellTemplate')\n get relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCellTemplate() || this.relativeDateTableFilterCellChildTemplate()\n }\n translationKeyTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n translationKeyTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('translationKeyTableFilterCellTemplate')\n get translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCellTemplate() || this.translationKeyTableFilterCellChildTemplate()\n }\n stringTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n stringTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('stringTableFilterCellTemplate')\n get stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCellTemplate() || this.stringTableFilterCellChildTemplate()\n }\n numberTableFilterCellTemplate = input<TemplateRef<any> | undefined>()\n numberTableFilterCellChildTemplate = contentChild<TemplateRef<any>>('numberTableFilterCellTemplate')\n get numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCellTemplate() || this.numberTableFilterCellChildTemplate()\n }\n\n additionalActions = input<DataAction[]>([])\n\n filtered = output<Filter[]>()\n sorted = output<Sort>()\n @Output() deleteItem = observableOutput<RowListGridData>()\n @Output() viewItem = observableOutput<RowListGridData>()\n @Output() editItem = observableOutput<RowListGridData>()\n @Output() selectionChanged = observableOutput<Row[]>()\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n componentStateChanged = output<DataViewComponentState>()\n firstColumnId = signal<string | undefined>(undefined)\n\n parentTemplates = input<readonly PrimeTemplate[] | null | undefined>()\n\n templates = contentChildren(PrimeTemplate)\n\n templatesForChildren = computed(() => {\n const t = this.templates()\n const pt = this.parentTemplates()\n\n return [...t, ...(pt ?? [])]\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 constructor() {\n effect(() => {\n this.registerEventListenerForListGrid()\n })\n\n effect(() => {\n this.registerEventListenerForDataTable()\n })\n\n effect(() => {\n const filters = this.filters()\n if (filters) {\n this.filtered.emit(filters)\n }\n })\n\n effect(() => {\n const sortField = this.sortField()\n const sortDirection = this.sortDirection()\n if (sortField && sortDirection) {\n this.sorted.emit({ sortColumn: sortField, sortDirection: sortDirection })\n }\n })\n\n effect(() => {\n const page = this.page()\n if (page !== undefined) {\n this.pageChanged.emit(page)\n }\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (pageSize !== undefined) {\n this.pageSizeChanged.emit(pageSize)\n }\n })\n }\n\n ngOnInit(): void {\n const columns = this.columns()\n if (columns && columns.length > 0) {\n this.firstColumnId.set(columns[0]?.id)\n }\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 registerEventListenerForListGrid() {\n if (this.layout() !== 'table') {\n if (this.deleteItem.observed()) {\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 if (!this.dataListGridComponent()?.viewItem.observed()) {\n this.dataListGridComponent()?.viewItem.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed()) {\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 if (!this.dataTableComponent()?.deleteTableRow.observed()) {\n this.dataTableComponent()?.deleteTableRow.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed()) {\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 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.set(event)\n }\n\n sorting(event: any) {\n this.sortDirection.set(event.sortDirection)\n this.sortField.set(event.sortColumn)\n }\n\n deletingElement(event: any) {\n if (this.deleteItemObserved) {\n this.deleteItem.emit(event)\n }\n }\n\n viewingElement(event: any) {\n if (this.viewItemObserved) {\n this.viewItem.emit(event)\n }\n }\n editingElement(event: any) {\n if (this.editItemObserved) {\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.set(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize.set(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\"\n [listItemSubtitleLinesTemplate]=\"listItemSubtitleLines\"\n [listItemTemplate]=\"listItem\"\n [gridItemTemplate]=\"gridItem\"\n [listValueTemplate]=\"listValue\"\n [translationKeyListValueTemplate]=\"translationKeyListValue\"\n [numberListValueTemplate]=\"numberListValue\"\n [relativeDateListValueTemplate]=\"relativeDateListValue\"\n [stringListValueTemplate]=\"stringListValue\"\n [dateListValueTemplate]=\"dateListValue\"\n [totalRecordsOnServer]=\"totalRecordsOnServer()\"\n [parentTemplates]=\"templatesForChildren()\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLinesTemplate let-item>\n @if (listItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"listItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItemSubtitleLinesTemplate let-item>\n @if (gridItemSubtitleLines) {\n <ng-container [ngTemplateOutlet]=\"gridItemSubtitleLines\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container>\n }</ng-template\n >\n <ng-template #gridItemTemplate let-item>\n @if (gridItem) {\n <ng-container [ngTemplateOutlet]=\"gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listItemTemplate let-item>\n @if (listItem) {\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\"> </ng-container>\n }</ng-template\n >\n <ng-template #listValueTemplate 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 #translationKeyListValueTemplate 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 #numberListValueTemplate 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 #relativeDateListValueTemplate 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 #stringListValueTemplate 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 #dateListValueTemplate 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\"\n [numberCellTemplate]=\"numberTableCell\"\n [dateCellTemplate]=\"dateTableCell\"\n [relativeDateCellTemplate]=\"relativeDateTableCell\"\n [cellTemplate]=\"tableCell\"\n [translationKeyCellTemplate]=\"translationKeyTableCell\"\n [filterCellTemplate]=\"tableFilterCell\"\n [dateFilterCellTemplate]=\"dateTableFilterCell\"\n [numberFilterCellTemplate]=\"numberTableFilterCell\"\n [stringFilterCellTemplate]=\"stringTableFilterCell\"\n [relativeDateFilterCellTemplate]=\"relativeDateTableFilterCell\"\n [translationKeyFilterCellTemplate]=\"translationKeyTableFilterCell\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer()\"\n [currentPageShowingKey]=\"currentPageShowingKey()\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey()\"\n [parentTemplates]=\"templatesForChildren()\"\n [allowSelectAll]=\"tableAllowSelectAll()\"\n [selectionEnabledField]=\"tableSelectionEnabledField()\"\n >\n </ocx-data-table>\n <ng-template #stringCellTemplate 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 #numberCellTemplate 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 #dateCellTemplate 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 #relativeDateCellTemplate 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 #cellTemplate 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 #translationKeyCellTemplate 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 #stringFilterCellTemplate 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 #filterCellTemplate let-rowObject=\"rowObject\" let-column=\"column\">\n @if (tableFilterCell) {\n <ng-container [ngTemplateOutlet]=\"tableFilterCell\" [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\">\n </ng-container>\n }\n </ng-template>\n <ng-template #dateFilterCellTemplate 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 #numberFilterCellTemplate 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 #relativeDateFilterCellTemplate 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 #translationKeyFilterCellTemplate 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, computed, effect, input, model, output, signal } from '@angular/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\nexport type ChartType = 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar'\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 {\n data = input<DiagramData[] | undefined>(undefined)\n sumKey = input<string>('OCX_DIAGRAM.SUM')\n fullHeight = input<boolean>(false)\n chartTitleKey = input<string>('')\n chartDescriptionKey = input<string>('')\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 fillMissingColors = input<boolean>(true)\n\n diagramType = model<DiagramType>(DiagramType.PIE)\n\n supportedDiagramTypes = input<DiagramType[]>([])\n\n selectedDiagramType = computed(() => allDiagramTypes.find((v) => v.layout === this.diagramType()))\n chartType = computed(() => this.diagramTypeToChartType(this.diagramType()))\n dataSelected = output<any>()\n diagramTypeChanged = output<DiagramType>()\n componentStateChanged = output<DiagramComponentState>()\n chartOptions = signal<ChartOptions>({})\n chartData = signal<ChartData | undefined>(undefined)\n amountOfData = signal<number | undefined | null>(undefined)\n shownDiagramTypes = computed(() => \n allDiagramTypes.filter((vl) => this.supportedDiagramTypes().includes(vl.layout))\n )\n // enabled for only pie chart as it contains legends which are hidden\n useFullHeight = computed(() =>\n this.diagramType() === DiagramType.PIE && this.fullHeight()\n )\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 private static nextUniqueId = 0;\n uniqueInstanceId: number;\n\n constructor() {\n this.uniqueInstanceId = DiagramComponent.nextUniqueId++;\n effect(() => {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n })\n }\n\n public generateChart(colorScale: any, colorRangeInfo: any) {\n const data = this.data()\n if (!data) return\n const inputData = data.map((diagramData) => diagramData.value)\n\n this.amountOfData.set(data.reduce((acc, current) => acc + current.value, 0))\n const COLORS = this.generateColors(data, colorScale, colorRangeInfo)\n this.chartData.set({\n labels: data.map((d) => d.label),\n datasets: [\n {\n data: inputData,\n backgroundColor: COLORS,\n },\n ],\n })\n\n this.chartOptions.set({\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(value: DiagramType): ChartType {\n if (value === DiagramType.PIE) return 'pie'\n else if (value === DiagramType.HORIZONTAL_BAR || value === DiagramType.VERTICAL_BAR) return 'bar'\n else return 'pie'\n }\n\n dataClicked(event: []) {\n this.dataSelected.emit(event.length)\n }\n\n onDiagramTypeChanged(event: any) {\n this.diagramType.set(event.value.layout)\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}","@if (chartTitleKey() || chartDescriptionKey()) {\n @if (chartTitleKey()) {\n <header class=\"diagram-title w-full flex justify-content-center\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-title'\">\n {{ chartTitleKey() | translate }}\n </header>\n }\n @if (chartDescriptionKey()) {\n <p class=\"diagram-description w-full flex justify-content-center\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-description'\">\n {{chartDescriptionKey() | translate }}</p>\n }\n}\n@if (data()) { @if (shownDiagramTypes().length > 1) {\n<div class=\"flex justify-content-center pb-2\">\n <p-selectbutton [options]=\"shownDiagramTypes()\" [ngModel]=\"selectedDiagramType()\" optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\" name=\"diagram-type-select-button\" [allowEmpty]=\"false\"\n [ariaLabel]=\"'OCX_DIAGRAM.SELECT_BUTTON.ARIA_LABEL' | translate\">\n <ng-template #item let-item>\n <i [class]=\"item.icon\" [ocxTooltip]=\"item.tooltipKey | translate\" tooltipPosition=\"top\" tooltipEvent=\"hover\"></i>\n <span class=\"sr-only\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-' + item.id\">{{item.label ? item.label : item.labelKey | translate}}</span>\n </ng-template>\n </p-selectbutton>\n</div>\n}\n<div class=\"w-full flex justify-content-center\" [ngClass]=\"{'h-full': useFullHeight()}\">\n <p-chart tabindex=\"0\" \n [attr.aria-describedby]=\"'ocx-' + uniqueInstanceId + '-sr-only-table'\" \n [attr.id]=\"'ocx-' + uniqueInstanceId + '-chart'\"\n [attr.data-automation-type]=\"chartType()\"\n [type]=\"chartType()\"\n [data]=\"chartData()\"\n [responsive]=\"useFullHeight()\"\n [attr.data-automation-options]=\"chartOptions()\" [options]=\"chartOptions()\" (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data() ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data() ?? []), valueString: generateDiagramValueString(data() ?? [])}\"></p-chart>\n <ng-container [ngTemplateOutlet]=\"chartDetailsForSr\"></ng-container>\n</div>\n<div class=\"w-full flex justify-content-center mt-2 sumKey\" aria-hidden=\"true\">\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} @if (!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\n\n<!-- Table for screen readers -->\n<ng-template #chartDetailsForSr>\n @if (data()) {\n <div class=\"w-full flex justify-content-center sr-only\" [attr.id]=\"'ocx-' + uniqueInstanceId + '-sr-only-diagram-details'\">\n <table [attr.id]=\"'ocx-' + uniqueInstanceId + '-sr-only-table'\">\n <caption [attr.id]=\"'ocx-' + uniqueInstanceId + '-table-caption'\"> {{ chartTitleKey() | translate }} </caption>\n <thead>\n <tr>\n <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.COLOR' | translate }}</th>\n <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.LABEL' | translate }}</th>\n <th scope=\"col\">{{ 'OCX_DIAGRAM.TABLE.COUNT' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of data(); track item) {\n <tr>\n <td>\n <span>{{ item.backgroundColor || ' ' }}</span>\n </td>\n <td>{{ item.label }}</td>\n <td>{{ item.value }}</td>\n </tr>\n }\n <tr>\n <td colspan=\"2\">{{ sumKey() | translate }}</td>\n <td>{{ amountOfData() }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n}\n</ng-template>","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 computed,\n effect,\n input,\n model,\n output,\n signal,\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 type { Observable } from 'rxjs'\nimport { 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 { toObservable } from '@angular/core/rxjs-interop'\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 {\n ColumnType = ColumnType\n FilterType = FilterType\n\n readonly filters = model<Filter[]>([])\n readonly columns = model<DataTableColumn[]>([])\n readonly displayMode = input<FilterViewDisplayMode>('button')\n readonly selectDisplayedChips = input<(filters: Filter[], columns: DataTableColumn[]) => Filter[]>((filters) =>\n limit(filters, 3, { reverse: true })\n )\n readonly chipStyleClass = input('')\n readonly tableStyle = input<{ [klass: string]: any }>({ 'max-height': '50vh' })\n readonly panelStyle = input<{ [klass: string]: any }>({ 'max-width': '90%' })\n\n readonly filtered = output<Filter[]>()\n readonly componentStateChanged = output<FilterViewComponentState>()\n\n readonly columnFilterTableColumns = signal<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 readonly panel = viewChild(Popover)\n readonly manageButton = viewChild<Button>('manageButton')\n\n readonly defaultTemplates = viewChildren(PrimeTemplate)\n readonly defaultTemplates$ = toObservable(this.defaultTemplates)\n\n readonly trigger = signal<HTMLElement | undefined>(undefined)\n\n readonly filterViewNoSelection = signal<TemplateRef<any> | undefined>(undefined)\n readonly filterViewChipContent = signal<TemplateRef<any> | undefined>(undefined)\n readonly filterViewShowMoreChip = signal<TemplateRef<any> | undefined>(undefined)\n\n readonly templates = input<readonly PrimeTemplate[] | null | undefined>(undefined)\n readonly templates$ = toObservable(this.templates)\n\n readonly columnFilterDataRows = computed(() => {\n const filters = this.filters()\n const columns = this.columns()\n\n const columnIds = columns.map((c: DataTableColumn) => c.id)\n return filters\n .map((f: Filter) => {\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: FilterViewRowDetailData | undefined): v is FilterViewRowDetailData => v !== undefined)\n .slice()\n .sort(\n (a: FilterViewRowDetailData, b: FilterViewRowDetailData) =>\n columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId)\n )\n })\n\n chipTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n tableTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n\n private readonly chipIdSuffix: Array<string> = ['IdFilterChip', 'IdTableFilterCell', 'IdTableCell']\n private readonly 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 private readonly chipTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n private readonly tableIdSuffix: Array<string> = ['IdFilterViewCell', 'IdTableFilterCell', 'IdTableCell']\n private readonly 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 private readonly tableTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n constructor() {\n effect(() => {\n const t = this.templates()\n\n t?.forEach((item) => {\n switch (item.getType()) {\n case 'filterViewNoSelection':\n this.filterViewNoSelection.set(item.template)\n break\n case 'filterViewChipContent':\n this.filterViewChipContent.set(item.template)\n break\n case 'filterViewShowMoreChip':\n this.filterViewShowMoreChip.set(item.template)\n break\n }\n })\n })\n\n effect(() => {\n const cols = this.columns()\n const columnFilterTableColumns = this.columnFilterTableColumns()\n\n const chipObs = cols.map((c) =>\n this.getTemplate(c, this.chipTemplateNames, this.chipTemplates, this.chipIdSuffix)\n )\n this.chipTemplates$ = chipObs.length\n ? combineLatest(chipObs).pipe(map((values) => Object.fromEntries(cols.map((c, i) => [c.id, values[i]]))))\n : undefined\n\n const tableTemplateColumns = cols.concat(columnFilterTableColumns)\n const tableObs = tableTemplateColumns.map((c) =>\n this.getTemplate(c, this.tableTemplateNames, this.tableTemplates, this.tableIdSuffix)\n )\n this.tableTemplates$ = tableObs.length\n ? combineLatest(tableObs).pipe(\n map((values) => Object.fromEntries(tableTemplateColumns.map((c, i) => [c.id, values[i]])))\n )\n : undefined\n })\n\n effect(() => {\n const filters = this.filters()\n this.filtered.emit(filters)\n this.componentStateChanged.emit({ filters })\n })\n }\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.templates$]).pipe(\n map(([dt, t]) => {\n const allTemplates = [...(dt ?? []), ...(t ?? [])]\n const columnTemplate = findTemplate(\n allTemplates,\n idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return findTemplate(allTemplates, templateNames[column.columnType])?.template ?? null\n }),\n debounceTime(50)\n )\n }\n\n return templates[column.id]\n }\n\n onResetFilersClick() {\n this.filters.set([])\n }\n\n onChipRemove(filter: Filter) {\n const filters = this.filters().filter((f) => f.value !== filter.value)\n this.filters.set(filters)\n }\n\n onFilterDelete(row: Row) {\n const filters = this.filters().filter((f) => !(f.columnId === row['valueColumnId'] && f.value === row['value']))\n this.filters.set(filters)\n }\n\n focusTrigger() {\n const trigger = this.trigger()\n const manageButton = this.manageButton()\n if (trigger?.id === 'ocxFilterViewShowMore') {\n trigger.focus()\n return\n }\n\n manageButton?.el.nativeElement.firstChild.focus()\n }\n\n showPanel(event: any) {\n this.trigger.set(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(); as columns) { @if (filters(); 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 ocxTooltip=\"{{ '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 (filterViewNoSelection()) {\n <ng-container [ngTemplateOutlet]=\"filterViewNoSelection()\"> </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 {\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 tabindex=\"0\"\n #manageButton\n id=\"ocxFilterViewManage\"\n (onClick)=\"showPanel($event)\"\n [disabled]=\"filters.length === 0\"\n icon=\"pi pi-sliders-h\"\n label=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.LABEL' | translate }}\"\n [ocxTooltip]=\"\n filters.length === 0\n ? ('OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DISABLED_DETAIL' | translate)\n : ('OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DETAIL' | translate)\n \"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n aria-describedby=\"ocx-manage-filters-tooltip\"\n [tooltipOptions]=\"{ id: 'ocx-manage-filters-tooltip' }\"\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 ocxTooltip=\"{{ '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()\"\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 {\n Component,\n effect,\n inject,\n input,\n model,\n output,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { 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'\nimport { toObservable } from '@angular/core/rxjs-interop'\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 {\n private translateService = inject(TranslateService)\n\n sumKey = input<string>('SEARCH.SUMMARY_TITLE')\n diagramType = model<DiagramType>(DiagramType.PIE)\n chartTitleKey = input<string>('')\n chartDescriptionKey = input<string>('')\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.\n * In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n fillMissingColors = input<boolean>(true)\n supportedDiagramTypes = input<DiagramType[]>([])\n\n data = model<unknown[]>([])\n\n allLabelKeys = input<string[]>([])\n\n showAllLabels = input<boolean>(false)\n\n columnType = model<ColumnType>(ColumnType.STRING)\n\n columnField = model<string>('')\n\n column = input<DiagramColumn>()\n\n fullHeight = input<boolean>(false)\n \n colors = model<Record<string, string>>({})\n\n dataSelected = output<any>()\n diagramTypeChanged = output<DiagramType>()\n componentStateChanged = output<GroupByCountDiagramComponentState>()\n\n diagramData$ = combineLatest([\n toObservable(this.data),\n toObservable(this.columnField),\n toObservable(this.columnType),\n toObservable(this.colors),\n toObservable(this.allLabelKeys),\n toObservable(this.showAllLabels),\n ]).pipe(\n mergeMap(([data, columnField, columnType, colors, allLabelKeys, showAllLabels]) => {\n const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField))\n let occurrences: DiagramData[] = []\n\n if (showAllLabels && allLabelKeys.length > 0) {\n occurrences = allLabelKeys.map((label) => ({\n label: label,\n value: 0,\n backgroundColor: colors[label],\n }))\n\n columnData.forEach((current) => {\n const foundColumn = occurrences.find((e) => e.label === current)\n if (foundColumn) {\n foundColumn.value++\n } else {\n occurrences.push({ label: current, value: 1, backgroundColor: colors[current.toString()] })\n }\n })\n } else {\n occurrences = columnData.reduce((acc, current) => {\n return acc.some((e: { label: string }) => e.label === current)\n ? (acc.find((e: { label: string }) => e.label === current).value++, acc)\n : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }]\n }, [])\n }\n\n if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {\n return this.translateService.get(occurrences.map((o) => o.label)).pipe(\n map((translations) =>\n occurrences.map((o) => ({\n label: translations[o.label],\n value: o.value,\n backgroundColor: o.backgroundColor,\n }))\n )\n )\n }\n return of(occurrences)\n })\n )\n\n constructor() {\n effect(() => {\n const column = this.column()\n if (!column) return\n this.columnType.set(column.columnType)\n this.columnField.set(column.id)\n })\n }\n\n dataClicked(event: any) {\n this.dataSelected.emit(event)\n }\n\n onDiagramTypeChanged(newDiagramType: DiagramType) {\n this.diagramType.set(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 [fullHeight]=\"fullHeight()\"\n [diagramType]=\"diagramType()\"\n [chartTitleKey]=\"chartTitleKey()\"\n [chartDescriptionKey]=\"chartDescriptionKey()\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes()\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>","import {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core'\nimport { SlotService } from '@onecx/angular-remote-components'\nimport { PrimeTemplate } from 'primeng/api'\nimport { 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 { 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'\nimport { observableOutput } from '../../utils/observable-output.utils'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { PermissionInput } from '../../model/permission.model'\n\nexport type ViewLayout = 'grid' | 'list' | 'table'\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 {\n private readonly slotService = inject(SlotService)\n private readonly destroyRef = inject(DestroyRef)\n\n dataViewComponent = viewChild(DataViewComponent)\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 searchConfigPermission = input<PermissionInput>(undefined)\n deletePermission = input<PermissionInput>(undefined)\n editPermission = input<PermissionInput>(undefined)\n viewPermission = input<PermissionInput>(undefined)\n deleteActionVisibleField = input<string | undefined>(undefined)\n deleteActionEnabledField = input<string | undefined>(undefined)\n viewActionVisibleField = input<string | undefined>(undefined)\n viewActionEnabledField = input<string | undefined>(undefined)\n editActionVisibleField = input<string | undefined>(undefined)\n editActionEnabledField = input<string | undefined>(undefined)\n tableSelectionEnabledField = input<string | undefined>(undefined)\n tableAllowSelectAll = input<boolean>(true)\n name = input<string>('Data')\n titleLineId = input<string | undefined>(undefined)\n subtitleLineIds = input<string[] | undefined>(undefined)\n supportedViewLayouts = input<ViewLayout[]>(['grid', 'list', 'table'])\n columns = input<DataTableColumn[]>([])\n emptyResultsMessage = input<string | undefined>(undefined)\n clientSideSorting = input<boolean>(true)\n clientSideFiltering = input<boolean>(true)\n fallbackImage = input<string>('placeholder.png')\n filters = model<Filter[]>([])\n sortDirection = model<DataSortDirection>(DataSortDirection.NONE)\n sortField = model<any>('')\n sortStates = input<DataSortDirection[]>([\n DataSortDirection.ASCENDING,\n DataSortDirection.DESCENDING,\n DataSortDirection.NONE,\n ])\n pageSizes = input<number[]>([10, 25, 50])\n pageSize = model<number | undefined>(undefined)\n totalRecordsOnServer = input<number | undefined>(undefined)\n layout = model<ViewLayout>('table')\n defaultGroupKey = input<string>('')\n customGroupKey = input<string>('OCX_INTERACTIVE_DATA_VIEW.CUSTOM_GROUP')\n groupSelectionNoGroupSelectedKey = input<string>('OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED')\n currentPageShowingKey = input<string>('OCX_DATA_TABLE.SHOWING')\n currentPageShowingWithTotalOnServerKey = input<string>('OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER')\n additionalActions = input<DataAction[]>([])\n listGridPaginator = model<boolean>(true)\n tablePaginator = model<boolean>(true)\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator() && this.tablePaginator()\n }\n set paginator(value: boolean) {\n this.listGridPaginator.set(value)\n this.tablePaginator.set(value)\n }\n disableFilterView = input<boolean>(true)\n filterViewDisplayMode = input<FilterViewDisplayMode>('button')\n filterViewChipStyleClass = input<string>('')\n filterViewTableStyle = input<{ [klass: string]: any }>({ 'max-height': '50vh' })\n filterViewPanelStyle = input<{ [klass: string]: any }>({ 'max-width': '90%' })\n selectDisplayedChips = input<(filters: Filter[], columns: DataTableColumn[]) => Filter[]>((filters) =>\n limit(filters, 3, { reverse: true })\n )\n page = model<number>(0)\n selectedRows = input<Row[]>([])\n displayedColumnKeys = model<string[]>([])\n displayedColumns = computed(() => {\n const columnKeys = this.displayedColumnKeys()\n return (\n (columnKeys.map((key) => this.columns().find((col) => col.id === key)).filter(Boolean) as DataTableColumn[]) ??\n []\n )\n })\n frozenActionColumn = model<boolean>(false)\n actionColumnPosition = model<'left' | 'right'>('right')\n headerStyleClass = input<string | undefined>(undefined)\n contentStyleClass = input<string | undefined>(undefined)\n\n childTableCell = contentChild<TemplateRef<any> | undefined>('tableCell')\n primeNgTableCell = computed(() => {\n const templates = this.templates()\n const tableCellTemplate = templates.find((t) => t.getType() === 'tableCell')\n return tableCellTemplate?.template ?? undefined\n })\n _tableCell = computed(() => {\n const primeNgTableCell = this.primeNgTableCell()\n const childTableCell = this.childTableCell()\n return primeNgTableCell ?? childTableCell ?? undefined\n })\n\n childDateTableCell = contentChild<TemplateRef<any> | undefined>('dateTableCell')\n primeNgDateTableCell = computed(() => {\n const templates = this.templates()\n const dateTableCellTemplate = templates.find((t) => t.getType() === 'dateTableCell')\n return dateTableCellTemplate?.template ?? undefined\n })\n _dateTableCell = computed(() => {\n const primeNgDateTableCell = this.primeNgDateTableCell()\n const childDateTableCell = this.childDateTableCell()\n return primeNgDateTableCell ?? childDateTableCell ?? undefined\n })\n\n childRelativeDateTableCell = contentChild<TemplateRef<any> | undefined>('relativeDateTableCell')\n primeNgRelativeDateTableCell = computed(() => {\n const templates = this.templates()\n const relativeDateTableCellTemplate = templates.find((t) => t.getType() === 'relativeDateTableCell')\n return relativeDateTableCellTemplate?.template ?? undefined\n })\n _relativeDateTableCell = computed(() => {\n const primeNgRelativeDateTableCell = this.primeNgRelativeDateTableCell()\n const childRelativeDateTableCell = this.childRelativeDateTableCell()\n return primeNgRelativeDateTableCell ?? childRelativeDateTableCell ?? undefined\n })\n\n childTranslationKeyTableCell = contentChild<TemplateRef<any> | undefined>('translationKeyTableCell')\n primeNgTranslationKeyTableCell = computed(() => {\n const templates = this.templates()\n const translationKeyTableCellTemplate = templates.find((t) => t.getType() === 'translationKeyTableCell')\n return translationKeyTableCellTemplate?.template ?? undefined\n })\n _translationKeyTableCell = computed(() => {\n const primeNgTranslationKeyTableCell = this.primeNgTranslationKeyTableCell()\n const childTranslationKeyTableCell = this.childTranslationKeyTableCell()\n return primeNgTranslationKeyTableCell ?? childTranslationKeyTableCell ?? undefined\n })\n\n childGridItemSubtitleLines = contentChild<TemplateRef<any> | undefined>('gridItemSubtitleLines')\n primeNgGridItemSubtitleLines = computed(() => {\n const templates = this.templates()\n const gridItemSubtitleLinesTemplate = templates.find((t) => t.getType() === 'gridItemSubtitleLines')\n return gridItemSubtitleLinesTemplate?.template ?? undefined\n })\n _gridItemSubtitleLines = computed(() => {\n const primeNgGridItemSubtitleLines = this.primeNgGridItemSubtitleLines()\n const childGridItemSubtitleLines = this.childGridItemSubtitleLines()\n return primeNgGridItemSubtitleLines ?? childGridItemSubtitleLines ?? undefined\n })\n\n childListItemSubtitleLines = contentChild<TemplateRef<any> | undefined>('listItemSubtitleLines')\n primeNgListItemSubtitleLines = computed(() => {\n const templates = this.templates()\n const listItemSubtitleLinesTemplate = templates.find((t) => t.getType() === 'listItemSubtitleLines')\n return listItemSubtitleLinesTemplate?.template ?? undefined\n })\n _listItemSubtitleLines = computed(() => {\n const primeNgListItemSubtitleLines = this.primeNgListItemSubtitleLines()\n const childListItemSubtitleLines = this.childListItemSubtitleLines()\n return primeNgListItemSubtitleLines ?? childListItemSubtitleLines ?? undefined\n })\n\n childStringTableCell = contentChild<TemplateRef<any> | undefined>('stringTableCell')\n primeNgStringTableCell = computed(() => {\n const templates = this.templates()\n const stringTableCellTemplate = templates.find((t) => t.getType() === 'stringTableCell')\n return stringTableCellTemplate?.template ?? undefined\n })\n _stringTableCell = computed(() => {\n const primeNgStringTableCell = this.primeNgStringTableCell()\n const childStringTableCell = this.childStringTableCell()\n return primeNgStringTableCell ?? childStringTableCell ?? undefined\n })\n\n childNumberTableCell = contentChild<TemplateRef<any> | undefined>('numberTableCell')\n primeNgNumberTableCell = computed(() => {\n const templates = this.templates()\n const numberTableCellTemplate = templates.find((t) => t.getType() === 'numberTableCell')\n return numberTableCellTemplate?.template ?? undefined\n })\n _numberTableCell = computed(() => {\n const primeNgNumberTableCell = this.primeNgNumberTableCell()\n const childNumberTableCell = this.childNumberTableCell()\n return primeNgNumberTableCell ?? childNumberTableCell ?? undefined\n })\n\n childGridItem = contentChild<TemplateRef<any> | undefined>('gridItem')\n primeNgGridItem = computed(() => {\n const templates = this.templates()\n const gridItemTemplate = templates.find((t) => t.getType() === 'gridItem')\n return gridItemTemplate?.template ?? undefined\n })\n _gridItem = computed(() => {\n const primeNgGridItem = this.primeNgGridItem()\n const childGridItem = this.childGridItem()\n return primeNgGridItem ?? childGridItem ?? undefined\n })\n\n childListItem = contentChild<TemplateRef<any> | undefined>('listItem')\n primeNgListItem = computed(() => {\n const templates = this.templates()\n const listItemTemplate = templates.find((t) => t.getType() === 'listItem')\n return listItemTemplate?.template ?? undefined\n })\n _listItem = computed(() => {\n const primeNgListItem = this.primeNgListItem()\n const childListItem = this.childListItem()\n return primeNgListItem ?? childListItem ?? undefined\n })\n\n childTopCenter = contentChild<TemplateRef<any> | undefined>('topCenter')\n primeNgTopCenter = computed(() => {\n const templates = this.templates()\n const topCenterTemplate = templates.find((t) => t.getType() === 'topCenter')\n return topCenterTemplate?.template ?? undefined\n })\n _topCenter = computed(() => {\n const primeNgTopCenter = this.primeNgTopCenter()\n const childTopCenter = this.childTopCenter()\n return primeNgTopCenter ?? childTopCenter ?? undefined\n })\n\n childListValue = contentChild<TemplateRef<any> | undefined>('listValue')\n primeNgListValue = computed(() => {\n const templates = this.templates()\n const listValueTemplate = templates.find((t) => t.getType() === 'listValue')\n return listValueTemplate?.template ?? undefined\n })\n _listValue = computed(() => {\n const primeNgListValue = this.primeNgListValue()\n const childListValue = this.childListValue()\n return primeNgListValue ?? childListValue ?? undefined\n })\n\n childTranslationKeyListValue = contentChild<TemplateRef<any> | undefined>('translationKeyListValue')\n primeNgTranslationKeyListValue = computed(() => {\n const templates = this.templates()\n const translationKeyListValueTemplate = templates.find((t) => t.getType() === 'translationKeyListValue')\n return translationKeyListValueTemplate?.template ?? undefined\n })\n _translationKeyListValue = computed(() => {\n const primeNgTranslationKeyListValue = this.primeNgTranslationKeyListValue()\n const childTranslationKeyListValue = this.childTranslationKeyListValue()\n return primeNgTranslationKeyListValue ?? childTranslationKeyListValue ?? undefined\n })\n\n childNumberListValue = contentChild<TemplateRef<any> | undefined>('numberListValue')\n primeNgNumberListValue = computed(() => {\n const templates = this.templates()\n const numberListValueTemplate = templates.find((t) => t.getType() === 'numberListValue')\n return numberListValueTemplate?.template ?? undefined\n })\n _numberListValue = computed(() => {\n const primeNgNumberListValue = this.primeNgNumberListValue()\n const childNumberListValue = this.childNumberListValue()\n return primeNgNumberListValue ?? childNumberListValue ?? undefined\n })\n\n childRelativeDateListValue = contentChild<TemplateRef<any> | undefined>('relativeDateListValue')\n primeNgRelativeDateListValue = computed(() => {\n const templates = this.templates()\n const relativeDateListValueTemplate = templates.find((t) => t.getType() === 'relativeDateListValue')\n return relativeDateListValueTemplate?.template ?? undefined\n })\n _relativeDateListValue = computed(() => {\n const primeNgRelativeDateListValue = this.primeNgRelativeDateListValue()\n const childRelativeDateListValue = this.childRelativeDateListValue()\n return primeNgRelativeDateListValue ?? childRelativeDateListValue ?? undefined\n })\n\n childStringListValue = contentChild<TemplateRef<any> | undefined>('stringListValue')\n primeNgStringListValue = computed(() => {\n const templates = this.templates()\n const stringListValueTemplate = templates.find((t) => t.getType() === 'stringListValue')\n return stringListValueTemplate?.template ?? undefined\n })\n _stringListValue = computed(() => {\n const primeNgStringListValue = this.primeNgStringListValue()\n const childStringListValue = this.childStringListValue()\n return primeNgStringListValue ?? childStringListValue ?? undefined\n })\n\n childDateListValue = contentChild<TemplateRef<any> | undefined>('dateListValue')\n primeNgDateListValue = computed(() => {\n const templates = this.templates()\n const dateListValueTemplate = templates.find((t) => t.getType() === 'dateListValue')\n return dateListValueTemplate?.template ?? undefined\n })\n _dateListValue = computed(() => {\n const primeNgDateListValue = this.primeNgDateListValue()\n const childDateListValue = this.childDateListValue()\n return primeNgDateListValue ?? childDateListValue ?? undefined\n })\n\n childTableFilterCell = contentChild<TemplateRef<any> | undefined>('tableFilterCell')\n primeNgTableFilterCell = computed(() => {\n const templates = this.templates()\n const tableFilterCellTemplate = templates.find((t) => t.getType() === 'tableFilterCell')\n return tableFilterCellTemplate?.template ?? undefined\n })\n _tableFilterCell = computed(() => {\n const primeNgTableFilterCell = this.primeNgTableFilterCell()\n const childTableFilterCell = this.childTableFilterCell()\n return primeNgTableFilterCell ?? childTableFilterCell ?? undefined\n })\n\n childDateTableFilterCell = contentChild<TemplateRef<any> | undefined>('dateTableFilterCell')\n primeNgDateTableFilterCell = computed(() => {\n const templates = this.templates()\n const dateTableFilterCellTemplate = templates.find((t) => t.getType() === 'dateTableFilterCell')\n return dateTableFilterCellTemplate?.template ?? undefined\n })\n _dateTableFilterCell = computed(() => {\n const primeNgDateTableFilterCell = this.primeNgDateTableFilterCell()\n const childDateTableFilterCell = this.childDateTableFilterCell()\n return primeNgDateTableFilterCell ?? childDateTableFilterCell ?? undefined\n })\n\n childRelativeDateTableFilterCell = contentChild<TemplateRef<any> | undefined>('relativeDateTableFilterCell')\n primeNgRelativeDateTableFilterCell = computed(() => {\n const templates = this.templates()\n const relativeDateTableFilterCellTemplate = templates.find((t) => t.getType() === 'relativeDateTableFilterCell')\n return relativeDateTableFilterCellTemplate?.template ?? undefined\n })\n _relativeDateTableFilterCell = computed(() => {\n const primeNgRelativeDateTableFilterCell = this.primeNgRelativeDateTableFilterCell()\n const childRelativeDateTableFilterCell = this.childRelativeDateTableFilterCell()\n return primeNgRelativeDateTableFilterCell ?? childRelativeDateTableFilterCell ?? undefined\n })\n\n childTranslationKeyTableFilterCell = contentChild<TemplateRef<any> | undefined>('translationKeyTableFilterCell')\n primeNgTranslationKeyTableFilterCell = computed(() => {\n const templates = this.templates()\n const translationKeyTableFilterCellTemplate = templates.find((t) => t.getType() === 'translationKeyTableFilterCell')\n return translationKeyTableFilterCellTemplate?.template ?? undefined\n })\n _translationKeyTableFilterCell = computed(() => {\n const primeNgTranslationKeyTableFilterCell = this.primeNgTranslationKeyTableFilterCell()\n const childTranslationKeyTableFilterCell = this.childTranslationKeyTableFilterCell()\n return primeNgTranslationKeyTableFilterCell ?? childTranslationKeyTableFilterCell ?? undefined\n })\n\n childStringTableFilterCell = contentChild<TemplateRef<any> | undefined>('stringTableFilterCell')\n primeNgStringTableFilterCell = computed(() => {\n const templates = this.templates()\n const stringTableFilterCellTemplate = templates.find((t) => t.getType() === 'stringTableFilterCell')\n return stringTableFilterCellTemplate?.template ?? undefined\n })\n _stringTableFilterCell = computed(() => {\n const primeNgStringTableFilterCell = this.primeNgStringTableFilterCell()\n const childStringTableFilterCell = this.childStringTableFilterCell()\n return primeNgStringTableFilterCell ?? childStringTableFilterCell ?? undefined\n })\n\n childNumberTableFilterCell = contentChild<TemplateRef<any> | undefined>('numberTableFilterCell')\n primeNgNumberTableFilterCell = computed(() => {\n const templates = this.templates()\n const numberTableFilterCellTemplate = templates.find((t) => t.getType() === 'numberTableFilterCell')\n return numberTableFilterCellTemplate?.template ?? undefined\n })\n _numberTableFilterCell = computed(() => {\n const primeNgNumberTableFilterCell = this.primeNgNumberTableFilterCell()\n const childNumberTableFilterCell = this.childNumberTableFilterCell()\n return primeNgNumberTableFilterCell ?? childNumberTableFilterCell ?? undefined\n })\n\n templates = contentChildren<PrimeTemplate>(PrimeTemplate)\n\n filtered = output<Filter[]>()\n sorted = output<Sort>()\n @Output() deleteItem = observableOutput<RowListGridData>()\n @Output() viewItem = observableOutput<RowListGridData>()\n @Output() editItem = observableOutput<RowListGridData>()\n @Output() selectionChanged = observableOutput<Row[]>()\n dataViewLayoutChange = output<'grid' | 'list' | 'table'>()\n displayedColumnKeysChange = output<string[]>()\n\n pageChanged = output<number>()\n pageSizeChanged = output<number>()\n\n componentStateChanged = output<InteractiveDataViewComponentState>()\n\n selectedGroupKey = signal<string | undefined>(undefined)\n\n data = input<RowListGridData[]>([])\n\n readonly columnGroupSlotName = 'onecx-column-group-selection'\n isColumnGroupSelectionComponentDefined$: Observable<boolean>\n isColumnGroupSelectionComponentDefined: Signal<boolean | undefined>\n groupSelectionChangedSlotEmitter = output<ColumnGroupData | undefined>()\n\n // Internal EventEmitter for handling slot's groupSelectionChanged output\n // Used for communication between the slot component and this component's internal logic\n readonly slotGroupSelectionChangeListener = new EventEmitter<ColumnGroupData | undefined>()\n\n constructor() {\n this.isColumnGroupSelectionComponentDefined$ = this.slotService\n .isSomeComponentDefinedForSlot(this.columnGroupSlotName)\n .pipe(startWith(true))\n\n this.isColumnGroupSelectionComponentDefined = toSignal(this.isColumnGroupSelectionComponentDefined$)\n\n const subscription = this.slotGroupSelectionChangeListener.subscribe((event) => {\n this.triggerGroupSelectionChanged(event)\n })\n this.destroyRef.onDestroy(() => subscription.unsubscribe())\n\n effect(() => {\n this.registerEventListenerForDataView()\n })\n\n effect(() => {\n const filters = this.filters()\n this.filtered.emit(filters)\n })\n\n effect(() => {\n const sortField = this.sortField()\n const sortDirection = this.sortDirection()\n this.sorted.emit({ sortColumn: sortField, sortDirection })\n })\n\n effect(() => {\n const layout = this.layout()\n this.dataViewLayoutChange.emit(layout)\n })\n\n effect(() => {\n const page = this.page()\n this.pageChanged.emit(page)\n })\n\n effect(() => {\n const pageSize = this.pageSize()\n if (!pageSize) {\n return\n }\n this.pageSizeChanged.emit(pageSize)\n })\n\n effect(() => {\n const displayedColumnKeys = this.displayedColumnKeys()\n this.displayedColumnKeysChange.emit(displayedColumnKeys)\n })\n\n effect(() => {\n this.layout()\n untracked(() => {\n const columnGroupComponentDefined = this.isColumnGroupSelectionComponentDefined()\n if (columnGroupComponentDefined) {\n if (\n !(\n this.columns().some((c) => c.nameKey === this.selectedGroupKey()) ||\n this.selectedGroupKey() === this.customGroupKey()\n )\n ) {\n this.selectedGroupKey.set(undefined)\n }\n }\n })\n })\n\n }\n\n /**\n * Triggers the group selection changed logic. This method should be called\n * when the column group selection changes, either from the UI or programmatically.\n * It updates the displayed columns, selected group key, and emits the change event.\n * \n * @param event The column group data, or undefined to use current state\n */\n triggerGroupSelectionChanged(event: ColumnGroupData | undefined): void {\n event ??= {\n activeColumns: this.displayedColumns(),\n groupKey: this.selectedGroupKey() ?? this.defaultGroupKey(),\n }\n const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.displayedColumnKeys.set(displayedColumnKeys)\n this.selectedGroupKey.set(event.groupKey)\n this.columnGroupSelectionComponentState$.next({\n activeColumnGroupKey: event.groupKey,\n displayedColumns: event.activeColumns,\n })\n this.groupSelectionChangedSlotEmitter.emit(event)\n }\n\n ngOnInit(): void {\n this.selectedGroupKey.set(this.defaultGroupKey())\n\n if (this.defaultGroupKey() && this.defaultGroupKey() !== this.customGroupKey()) {\n this.displayedColumnKeys.set(\n this.columns()\n .filter((column) => column.predefinedGroupKeys?.includes(this.defaultGroupKey()))\n .map((column) => column.id)\n )\n }\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.displayedColumns(),\n })\n )\n customGroupColumnSelectorComponentState$ = customGroupColumnSelectorComponentState$.pipe(\n startWith({\n actionColumnConfig: {\n frozen: this.frozenActionColumn(),\n position: this.actionColumnPosition(),\n },\n displayedColumns: this.displayedColumns(),\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 filtering(event: any) {\n this.filters.set(event)\n }\n\n sorting(event: any) {\n this.sortDirection.set(event.sortDirection)\n this.sortField.set(event.sortColumn)\n }\n\n onDeleteElement(element: RowListGridData) {\n if (this.deleteItem.observed()) {\n this.deleteItem.emit(element)\n }\n }\n\n onViewElement(element: RowListGridData) {\n if (this.viewItem.observed()) {\n this.viewItem.emit(element)\n }\n }\n\n onEditElement(element: RowListGridData) {\n if (this.editItem.observed()) {\n this.editItem.emit(element)\n }\n }\n\n onDataViewLayoutChange(layout: ViewLayout) {\n this.layout.set(layout)\n }\n\n onSortChange($event: any) {\n this.sortField.set($event)\n }\n\n onSortDirectionChange($event: any) {\n this.sortDirection.set($event)\n }\n\n onColumnGroupSelectionChange(event: GroupSelectionChangedEvent) {\n const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.displayedColumnKeys.set(displayedColumnKeys)\n this.selectedGroupKey.set(event.groupKey)\n }\n\n registerEventListenerForDataView() {\n if (this.deleteItem.observed()) {\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 if (!this.dataViewComponent()?.viewItem.observed()) {\n this.dataViewComponent()?.viewItem.subscribe((event) => {\n this.onViewElement(event)\n })\n }\n }\n if (this.editItem.observed()) {\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 const displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.displayedColumnKeys.set(displayedColumnKeys)\n this.selectedGroupKey.set(this.customGroupKey())\n }\n\n onActionColumnConfigChange(event: ActionColumnChangedEvent) {\n this.frozenActionColumn.set(event.frozenActionColumn)\n this.actionColumnPosition.set(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.set(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize.set(event)\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()\"\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(); as topCenterTemplate) {\n <div>\n <ng-container [ngTemplateOutlet]=\"topCenterTemplate\"> </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()\"\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() ?? true) {\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: slotGroupSelectionChangeListener }\"\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()\"\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()\"\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]=\"_stringTableCell()\"\n [numberTableCellTemplate]=\"_numberTableCell()\"\n [dateTableCellTemplate]=\"_dateTableCell()\"\n [relativeDateTableCellTemplate]=\"_relativeDateTableCell()\"\n [tableCellTemplate]=\"_tableCell()\"\n [translationKeyTableCellTemplate]=\"_translationKeyTableCell()\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines()\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines()\"\n [listItemTemplate]=\"_listItem()\"\n [listValueTemplate]=\"_listValue()\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue()\"\n [numberListValueTemplate]=\"_numberListValue()\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue()\"\n [stringListValueTemplate]=\"_stringListValue()\"\n [dateListValueTemplate]=\"_dateListValue()\"\n [gridItemTemplate]=\"_gridItem()\"\n [tableFilterCellTemplate]=\"_tableFilterCell()\"\n [dateTableFilterCellTemplate]=\"_dateTableFilterCell()\"\n [numberTableFilterCellTemplate]=\"_numberTableFilterCell()\"\n [stringTableFilterCellTemplate]=\"_stringTableFilterCell()\"\n [relativeDateTableFilterCellTemplate]=\"_relativeDateTableFilterCell()\"\n [translationKeyTableFilterCellTemplate]=\"_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()\"\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","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 steps = input<LifecycleStep[]>([])\n activeStepId = input<string | undefined>(undefined)\n}\n","<p-timeline [value]=\"steps()\">\n <ng-template pTemplate=\"marker\" let-step>\n <span\n class=\"p-timeline-event-marker\"\n [ngClass]=\"activeStepId() && activeStepId() === step.id ? 'bg-primary' : ''\"\n ></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 { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core'\n\nconst STORAGE_KEY = 'onecx-consent'\nlet nextConsentComponentId = 0\n\ntype ConsentStorage = string[]\n\n/**\n * Payload emitted by {@link ConsentComponent.consentChanged}.\n *\n * Notes for GDPR/ePrivacy implementations:\n * - `hasConsent=true` indicates that the user has explicitly opted in for the given `url` (and optional `purpose`).\n * - `hasConsent=false` indicates that the previously stored consent was withdrawn via {@link ConsentComponent.resetConsent}.\n * - `purpose` is echoed back so consumers can handle multiple consent purposes (e.g. `maps`, `analytics`).\n */\nexport type ConsentChangedEvent = {\n url: string\n hasConsent: boolean\n purpose?: string\n}\n\n@Component({\n selector: 'ocx-consent',\n standalone: false,\n templateUrl: './consent.component.html',\n styleUrls: ['./consent.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * UI component to gate projected content behind explicit user consent.\n *\n * Intended GDPR/ePrivacy usage (example: Leaflet + OpenStreetMap tiles):\n * - Put the map component (and any code that triggers network requests) inside the projected content.\n * - Do not instantiate/load third-party resources before consent, otherwise requests may be sent pre-consent.\n * - Provide sufficient information to the user (provider name, privacy policy) via the optional\n * `[ocx-consent-info]` projection slot.\n * - Enable withdrawal with `[showWithdraw]=\"true\"` and handle `consentChanged` with `hasConsent=false`.\n *\n * Example:\n * ```html\n * <ocx-consent\n * [url]=\"tileServerUrl\"\n * purpose=\"maps\"\n * [showWithdraw]=\"true\"\n * (consentChanged)=\"onMapConsentChanged($event)\"\n * >\n * <a ocx-consent-info href=\"/privacy\">Privacy policy</a>\n *\n * <!-- Only render/init Leaflet after consent. -->\n * <app-leaflet-map *ngIf=\"mapConsentGranted\" [tileUrl]=\"tileServerUrl\" />\n * </ocx-consent>\n * ```\n *\n * ```ts\n * import type { ConsentChangedEvent } from './consent.component'\n *\n * tileServerUrl = 'https://tile.openstreetmap.org'\n * mapConsentGranted = false\n *\n * onMapConsentChanged(e: ConsentChangedEvent) {\n * if (e.purpose !== 'maps') return\n * this.mapConsentGranted = e.hasConsent\n * }\n * ```\n *\n * Storage:\n * - Uses `localStorage` key `onecx-consent`.\n * - The stored JSON is a string array.\n * - Entries are either `<normalizedUrl>` (no purpose) or `<normalizedUrl>::<purpose>`.\n */\nexport class ConsentComponent {\n protected readonly titleId = `ocx-consent-title-${++nextConsentComponentId}`\n protected readonly messageId = `ocx-consent-message-${nextConsentComponentId}`\n\n /**\n * Target URL that the gated content will contact (e.g. the tile server URL).\n * Used for display and for consent matching.\n */\n url = input.required<string>()\n\n /**\n * Optional purpose scope for consent (e.g. `maps`, `analytics`).\n * When set, consent is stored and matched as `<url>::<purpose>`.\n */\n purpose = input<string | undefined>(undefined)\n\n /** Translation key for the consent dialog title. */\n titleKey = input<string>('OCX_CONSENT.TITLE')\n /** Translation key for the consent dialog message (receives `{ url }`). */\n messageKey = input<string>('OCX_CONSENT.MESSAGE')\n /** Translation key for the agree button. */\n agreeKey = input<string>('OCX_CONSENT.AGREE')\n /** Translation key for the withdraw button. */\n withdrawKey = input<string>('OCX_CONSENT.WITHDRAW')\n\n /**\n * When enabled, shows a withdraw button that removes the stored consent.\n * This helps meeting the requirement that withdrawal should be as easy as opt-in.\n */\n showWithdraw = input<boolean>(true)\n\n /**\n * Emits whenever consent is granted or withdrawn.\n * Consumers should only render/initialize third-party code after receiving `hasConsent=true`.\n */\n consentChanged = output<ConsentChangedEvent>()\n\n localStorageUpdatedTimestamp = signal<number>(0)\n\n protected normalizedUrl = computed(() => this.normalizeUrl(this.url()))\n\n protected hasConsent = computed(() => {\n // Manually call localStorageUpdatedTimestamp signal so that computation re-runs on each localStorage change\n this.localStorageUpdatedTimestamp()\n const normalized = this.normalizedUrl()\n if (!normalized) return false\n\n return this.hasStoredConsent(normalized)\n })\n\n protected giveConsent(): void {\n const normalized = this.normalizedUrl()\n if (!normalized) return\n\n const current = this.readConsents()\n const alreadyPresent = this.hasStoredConsent(normalized, current)\n if (!alreadyPresent) {\n const entry = this.toStorageEntry(normalized, this.purpose())\n const updated = entry ? [...current, entry] : [...current]\n this.writeConsents(updated)\n this.consentChanged.emit({ url: normalized, hasConsent: true, purpose: this.purpose() })\n }\n }\n\n protected resetConsent(): void {\n const normalized = this.normalizedUrl()\n if (!normalized) return\n\n const purpose = this.purpose()\n const updated = this.readConsents().filter((stored) => {\n const parsed = this.fromStorageEntry(stored)\n if (this.normalizeUrl(parsed.url) !== normalized) return true\n if (purpose === undefined) return false\n return parsed.purpose !== purpose\n })\n\n this.writeConsents(updated)\n this.consentChanged.emit({ url: normalized, hasConsent: false, purpose })\n }\n\n private safeJsonParse(value: string): unknown {\n try {\n return JSON.parse(value)\n } catch {\n return undefined\n }\n }\n\n private readConsents(): ConsentStorage {\n const raw = localStorage.getItem(STORAGE_KEY)\n if (!raw) return []\n\n const parsed = this.safeJsonParse(raw)\n return Array.isArray(parsed) && parsed.every((x) => typeof x === 'string') ? (parsed as string[]) : []\n }\n\n private writeConsents(value: ConsentStorage): void {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(value))\n // Trigger re-computation of hasConsent\n this.localStorageUpdatedTimestamp.set(Date.now())\n }\n\n private hasStoredConsent(normalizedUrl: string, storage: ConsentStorage = this.readConsents()): boolean {\n const purpose = this.purpose()\n\n return storage.some((stored) => {\n const parsed = this.fromStorageEntry(stored)\n if (this.normalizeUrl(parsed.url) !== normalizedUrl) return false\n if (purpose === undefined) return true\n return parsed.purpose === purpose\n })\n }\n\n private toStorageEntry(url: string, purpose?: string): string {\n const normalized = this.normalizeUrl(url)\n if (!normalized) return ''\n return purpose ? `${normalized}::${purpose}` : normalized\n }\n\n private fromStorageEntry(entry: string): { url: string; purpose?: string } {\n const parts = entry.split('::')\n const url = parts[0] ?? ''\n const purpose = parts.length > 1 ? parts.slice(1).join('::') : undefined\n return { url, purpose }\n }\n\n private normalizeUrl(raw: string): string {\n const trimmed = raw.trim()\n if (!trimmed) return ''\n\n try {\n const url = new URL(trimmed)\n url.hash = ''\n url.search = ''\n url.hostname = url.hostname.toLowerCase()\n return url.toString().replace(/\\/$/, '')\n } catch {\n return trimmed.replace(/\\/$/, '')\n }\n }\n}\n","@if (hasConsent()) {\n<ng-content />\n\n@if (showWithdraw()) {\n<div class=\"w-full flex justify-content-center mt-1\">\n <a\n (click)=\"resetConsent()\"\n class=\"cursor-pointer text-primary underline\"\n [attr.aria-label]=\"withdrawKey() | translate\"\n >\n {{ withdrawKey() | translate }}\n </a>\n</div>\n} } @else {\n<section\n class=\"flex w-full h-full align-items-center justify-content-center p-3 ocx-consent\"\n [attr.aria-labelledby]=\"titleId\"\n [attr.aria-describedby]=\"messageId\"\n>\n <div class=\"flex flex-column gap-4 align-items-center justify-content-center text-center ocx-consent__content\">\n <p class=\"m-0 text-xl font-semibold\" [id]=\"titleId\">{{ titleKey() | translate }}</p>\n <p class=\"m-0\" [id]=\"messageId\" aria-live=\"polite\">{{ messageKey() | translate : { url: normalizedUrl() } }}</p>\n\n <ng-content select=\"[ocx-consent-info]\" />\n\n <button pButton pRipple type=\"button\" (click)=\"giveConsent()\" [attr.aria-label]=\"agreeKey() | translate\">\n {{ agreeKey() | translate }}\n </button>\n </div>\n</section>\n}\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, ViewContainerRef, inject, viewChild } 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 dialogHost = viewChild('container', { read: 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$.next(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$.next(isEnabled)\n })\n }\n if (this.isDialogCustomButtonDisabledImplemented(componentRef.instance)) {\n this.customButtonEnabledSub = componentRef.instance.customButtonEnabled.subscribe((buttonEnabled) => {\n portalDialogServiceData.customButtonEnabled$.next(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 Component,\n ElementRef,\n OnInit,\n effect,\n inject,\n input,\n signal,\n viewChild,\n viewChildren,\n output,\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 { DialogState, DialogStateButtonClicked, PortalDialogServiceData } from '../../../services/portal-dialog.service'\n\nexport const defaultPrimaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CONFIRM',\n}\n\nexport const defaultSecondaryButtonDetails: ButtonDialogButtonDetails = {\n key: 'OCX_BUTTON_DIALOG.CANCEL',\n}\n\nexport const defaultDialogData: ButtonDialogData = {\n config: {\n primaryButtonDetails: defaultPrimaryButtonDetails,\n secondaryButtonIncluded: true,\n secondaryButtonDetails: defaultSecondaryButtonDetails,\n },\n componentData: {},\n}\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 {\n dynamicDialogConfig = inject(DynamicDialogConfig)\n dynamicDialogRef = inject(DynamicDialogRef)\n\n config = input<ButtonDialogConfig | undefined>(undefined)\n\n dialogData = signal<ButtonDialogData>(defaultDialogData)\n primaryButtonDisabled$: Observable<boolean | undefined> | undefined\n secondaryButtonDisabled$: Observable<boolean | undefined> | undefined\n customButtonsDisabled$: BehaviorSubject<Record<string, boolean>> = new BehaviorSubject({})\n leftCustomButtons = signal<ButtonDialogCustomButtonDetails[]>([])\n rightCustomButtons = signal<ButtonDialogCustomButtonDetails[]>([])\n\n buttonClickedEmitter = output<DialogState<unknown>>()\n\n primaryButton = viewChild<ElementRef>('primaryButton')\n secondaryButton = viewChild<ElementRef>('secondaryButton')\n customButtons = viewChildren<ElementRef>('customButton')\n\n constructor() {\n // Auto focus button effect for dynamic dialog\n effect(() => {\n const config = this.dynamicDialogConfig.data?.config\n\n if (!config) return\n\n if (config.autoFocusButton === 'primary') {\n const primaryButton = this.primaryButton()\n primaryButton?.nativeElement.focus()\n } else if (config.autoFocusButton === 'secondary') {\n const secondaryButton = this.secondaryButton()\n secondaryButton?.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 // config update effect for inline dialog\n effect(() => {\n // Run the effect only if config input is provided\n const config = this.config()\n if (!config) return\n\n const dialogData = this.dialogData()\n if (config) {\n if (!!config.primaryButtonDetails && !!config.primaryButtonDetails?.key) {\n dialogData.config.primaryButtonDetails = config.primaryButtonDetails\n }\n if (config.secondaryButtonIncluded) {\n dialogData.config.secondaryButtonIncluded = config.secondaryButtonIncluded\n }\n if (!!config.secondaryButtonDetails && !!config.secondaryButtonDetails?.key) {\n dialogData.config.secondaryButtonDetails = config.secondaryButtonDetails\n }\n }\n dialogData.config.customButtons = config.customButtons\n this.dialogData.set(dialogData)\n this.setupCustomButtons(dialogData)\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 }\n }\n\n setUpDialogDataForDynamicConfig() {\n const dynamicConfigData: ButtonDialogData = this.dynamicDialogConfig.data\n const portalDialogServiceData: PortalDialogServiceData = this.dynamicDialogConfig.data.portalDialogServiceData\n const dialogData = this.dialogData()\n if (dynamicConfigData.config) {\n const dialogConfig = dynamicConfigData.config\n if (!!dialogConfig.primaryButtonDetails && !!dialogConfig.primaryButtonDetails.key) {\n dialogData.config.primaryButtonDetails = dialogConfig.primaryButtonDetails\n }\n if (dialogConfig.secondaryButtonIncluded !== undefined) {\n dialogData.config.secondaryButtonIncluded = dialogConfig.secondaryButtonIncluded\n }\n if (!!dialogConfig.secondaryButtonDetails && !!dialogConfig.secondaryButtonDetails.key) {\n dialogData.config.secondaryButtonDetails = dialogConfig.secondaryButtonDetails\n }\n }\n\n this.dialogData.set(dialogData)\n\n const [leftButtons, rightButtons] = 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 rightButtons.concat(leftButtons).forEach((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.subscribe((dialogState) => {\n portalDialogServiceData.buttonClicked$.next(dialogState)\n })\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 const leftButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'left') ?? []\n const rightButtons = dialogData.config.customButtons?.filter((button) => button.alignment === 'right') ?? []\n this.leftCustomButtons.set(leftButtons)\n this.rightCustomButtons.set(rightButtons)\n\n return [leftButtons, rightButtons]\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 } @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 ?? ''\"\n (click)=\"secondaryButtonAction()\"\n [label]=\"dialogData().config.secondaryButtonDetails!.key | translate:dialogData().config.secondaryButtonDetails?.parameters\"\n [disabled]=\"secondaryButtonDisabled$ | async\"\n [ocxTooltip]=\"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 ?? ''\"\n (click)=\"primaryButtonAction()\"\n [label]=\"dialogData().config.primaryButtonDetails!.key | translate:dialogData().config.primaryButtonDetails?.parameters\"\n [disabled]=\"primaryButtonDisabled$ | async\"\n [ocxTooltip]=\"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 [ocxTooltip]=\"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, 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 config = input<ButtonDialogConfig>({})\n\n resultEmitter = output<unknown>()\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, effect, inject, model, signal } 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 errCode = model<string | undefined>(undefined)\n backUrl = signal<string | undefined>(undefined)\n\n constructor() {\n effect(() => {\n const errCode = this.errCode()\n if (errCode) {\n this.errCode.set(errCode)\n }\n })\n this.errCode.set(this.route.snapshot.queryParamMap.get('err') || 'E1001_FAILED_START')\n this.backUrl.set(this.route.snapshot.queryParamMap.get('return') || '/')\n }\n\n onGoBack() {\n const backUrl = this.backUrl()\n if (backUrl) {\n this.router.navigateByUrl(backUrl)\n }\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 { Injectable, OnDestroy, Type, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DialogService, DynamicDialog } from 'primeng/dynamicdialog'\nimport { Observable, Subject, filter, mergeMap, of } 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, EventType, 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'\nimport { createLogger } from '../utils/logger.utils'\n\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: Subject<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: Subject<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: Subject<{ 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$: Subject<boolean>\n secondaryButtonEnabled$: Subject<boolean>\n customButtonEnabled$: Subject<{ id: string; enabled: boolean }>\n buttonClicked$: Subject<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 readonly logger = createLogger('PortalDialogService')\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 === EventType.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 Subject to determine if the primary button should be disabled\n *\n * - {@link DialogSecondaryButtonDisabled} - dialog will use the Subject to determine if the secondary button should be disabled\n *\n * - {@link DialogCustomButtonsDisabled} - dialog will use the Subject 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: Subject<boolean> = new Subject()\n * // emit true/false to disable secondary button\n * @Output() secondaryButtonEnabled: Subject<boolean> = new Subject()\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> | null>\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> | null> {\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 Subject<boolean>(),\n secondaryButtonEnabled$: new Subject<boolean>(),\n customButtonEnabled$: new Subject<{ id: string; enabled: boolean }>(),\n buttonClicked$: new Subject<DialogState<unknown>>(),\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 if (!dialogRef) {\n this.logger.error('Dialog could not be opened, dialog creation failed.')\n return of(null)\n }\n const dialogComponent = this.dialogService.getInstance(dialogRef)\n if (dialogComponent) {\n this.setScopeIdentifier(dialogComponent)\n } else {\n this.logger.warn(\n 'Dialog component instance could not be found after creation. The displayed dialog may not function as expected.'\n )\n }\n return dialogRef.onClose\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 if (!dialogComponent) {\n this.logger.warn(\n 'Dialog component instance could not be found during cleanup. The displayed dialog may not function as expected.'\n )\n return\n }\n dialogRef.close()\n this.removeDialogFromHtml(dialogComponent)\n })\n }\n }\n\n private removeDialogFromHtml(dialogComponent: DynamicDialog) {\n const bodyChild = this.findDialogComponentBodyChild(dialogComponent)\n if (bodyChild) {\n document.body.removeChild(bodyChild)\n }\n }\n\n private setScopeIdentifier(dialogComponent: DynamicDialog) {\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: DynamicDialog) {\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 { RippleModule } from 'primeng/ripple'\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 RippleModule,\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 RippleModule,\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","export const LIB_NAME = '@onecx/angular-accelerator'\nexport const LIB_VERSION = '8.0.0-rc.9'\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 provideMultiLanguageIdentifier,\n} from '@onecx/angular-utils'\nimport { SrcDirective } from './directives/src.directive'\nimport { OcxTooltipDirective } from './directives/ocx-tooltip.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'\nimport { ConsentComponent } from './components/consent/consent.component'\nimport { LIB_VERSION } from '../version'\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 OcxTooltipDirective\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 ConsentComponent,\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 provideMultiLanguageIdentifier('@onecx/angular-accelerator', LIB_VERSION, 'lib'),\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 OcxTooltipDirective,\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 ConsentComponent,\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'\nimport { createLogger } from './logger.utils'\n\nconst logger = createLogger('DataOperationStrategy')\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport abstract class DataOperationStrategy {\n endsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('endsWith method not implemented')\n return true\n }\n\n startsWith(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('startsWith method not implemented')\n return true\n }\n\n contains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('contains method not implemented')\n return true\n }\n\n notContains(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('notContains method not implemented')\n return true\n }\n\n equals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('equals method not implemented')\n return true\n }\n\n notEquals(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('notEquals method not implemented')\n return true\n }\n\n lessThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('lessThan method not implemented')\n return true\n }\n\n greaterThan(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('greaterThan method not implemented')\n return true\n }\n\n lessThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('lessThanOrEqual method not implemented')\n return true\n }\n\n greaterThanOrEqual(column: DataTableColumn, value: unknown, target: unknown): boolean {\n logger.error('greaterThanOrEqual method not implemented')\n return true\n }\n\n isEmpty(column: DataTableColumn, value: unknown): boolean {\n logger.error('isEmpty method not implemented')\n return true\n }\n\n isNotEmpty(column: DataTableColumn, value: unknown): boolean {\n logger.error('isNotEmpty method not implemented')\n return true\n }\n\n compare(a: unknown, b: unknown, column: DataTableColumn): number {\n logger.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 logger.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 logger.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 logger.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'\nexport * from './lib/directives/ocx-tooltip.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/consent/consent.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'\nexport * from './lib/model/permission.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'\nexport * from './lib/utils/observable-output.utils'\nexport * from './lib/utils/action-router.utils'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i6.OcxTooltipDirective","i7.SrcDirective","i9.DynamicPipe","i2","i4","i5.OcxTooltipDirective","i6.PageHeaderComponent","i7.IfPermissionDirective","i1","i2.OcxContentDirective","i2.OcxContentContainerDirective","i5","i6","i7.OcxTooltipDirective","i3.OcxTooltipDirective","i8.OcxTooltipDirective","i9.IfPermissionDirective","i10.TooltipOnOverflowDirective","i11","i12.OcxTimeAgoPipe","i7","i8","i9","i10.OcxTooltipDirective","i11.IfPermissionDirective","i12","i13.OcxTimeAgoPipe","i2.DataListGridComponent","i3.DataTableComponent","i8.DataTableComponent","i9.IfBreakpointDirective","i10","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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"}
|