@onecx/angular-accelerator 5.50.0 → 5.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-angular-accelerator.mjs","sources":["../../../../libs/angular-accelerator/src/lib/injection-tokens/has-permission-checker.ts","../../../../libs/angular-accelerator/src/lib/directives/if-permission.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/if-breakpoint.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/src.directive.ts","../../../../libs/angular-accelerator/src/lib/services/breadcrumb.service.ts","../../../../libs/angular-accelerator/src/lib/pipes/dynamic.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.html","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.html","../../../../libs/angular-accelerator/src/lib/directives/advanced.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/tooltipOnOverflow.directive.ts","../../../../libs/angular-accelerator/src/lib/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/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/data-loading-error/data-loading-error.component.ts","../../../../libs/angular-accelerator/src/lib/services/translation-cache.service.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator-primeng.module.ts","../../../../libs/angular-accelerator/src/lib/utils/dynamic-locale-id.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator.module.ts","../../../../libs/angular-accelerator/src/lib/functions/at-least-one-field-filled-validator.ts","../../../../libs/angular-accelerator/src/lib/utils/async-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/caching-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/translate.combined.loader.ts","../../../../libs/angular-accelerator/src/lib/utils/create-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/dateutils.ts","../../../../libs/angular-accelerator/src/lib/utils/create-remote-component-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/create-remote-component-and-mfe-translate-loader.utils.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/index.ts","../../../../libs/angular-accelerator/src/onecx-angular-accelerator.ts"],"sourcesContent":["/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport { HasPermissionChecker } from '@onecx/angular-utils'\n\n/**\n * This checker always returns true, basically disabling the permission system on the UI side\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport { AlwaysGrantPermissionChecker } from '@onecx/angular-utils'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\n","import {\n Directive,\n EmbeddedViewRef,\n Inject,\n Input,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\nimport { Observable, of, BehaviorSubject } from 'rxjs'\nimport { switchMap } from 'rxjs/operators'\n\n@Directive({ selector: '[ocxIfPermission], [ocxIfNotPermission]' })\nexport class IfPermissionDirective implements OnInit {\n @Input('ocxIfPermission') set permission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n }\n\n @Input('ocxIfNotPermission') set notPermission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n this.negate = true\n }\n\n @Input() ocxIfPermissionOnMissingPermission: 'hide' | 'disable' = 'hide'\n @Input() set ocxIfNotPermissionOnMissingPermission(value: 'hide' | 'disable') {\n this.ocxIfPermissionOnMissingPermission = value\n }\n @Input() onMissingPermission: 'hide' | 'disable' = 'hide'\n\n @Input() ocxIfPermissionPermissions: string[] | undefined\n @Input()\n set ocxIfNotPermissionPermissions(value: string[] | undefined) {\n this.ocxIfPermissionPermissions = value\n }\n\n @Input()\n ocxIfPermissionElseTemplate: TemplateRef<any> | undefined\n @Input()\n set ocxIfNotPermissionElseTemplate(value: TemplateRef<any> | undefined) {\n this.ocxIfPermissionElseTemplate = value\n }\n\n private permissionChecker: HasPermissionChecker\n private permissionSubject$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n private isDisabled = false\n private directiveContentRef: EmbeddedViewRef<any> | undefined\n negate = false\n\n constructor(\n private renderer: Renderer2,\n private viewContainer: ViewContainerRef,\n @Optional()\n @Inject(HAS_PERMISSION_CHECKER)\n private hasPermissionChecker?: HasPermissionChecker,\n @Optional() private templateRef?: TemplateRef<any>,\n @Optional() private userService?: UserService\n ) {\n const validChecker = hasPermissionChecker || userService\n if (!validChecker) {\n throw 'IfPermission requires UserService or HasPermissionChecker to be provided!'\n }\n\n this.permissionChecker = validChecker\n }\n\n ngOnInit() {\n this.permissionSubject$\n .pipe(\n switchMap((permission) => {\n if (!permission) {\n return of(false)\n }\n const permissionsArray = Array.isArray(permission) ? permission : [permission]\n return this.hasPermission(permissionsArray)\n })\n )\n .subscribe((hasPermission) => {\n const shouldShowTemplate = this.negate ? !hasPermission : hasPermission\n if (shouldShowTemplate) {\n return this.showTemplateOrClear()\n }\n\n return this.showElseTemplateOrDefaultView()\n })\n }\n\n private hasPermission(permission: string[]): Observable<boolean> {\n if (this.ocxIfPermissionPermissions) {\n const result = permission.every((p) => this.ocxIfPermissionPermissions?.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission in overwrites for: `', permission)\n }\n return of(result)\n }\n\n if (this.permissionChecker.getPermissions) {\n return this.permissionChecker.getPermissions().pipe(\n switchMap((permissions) => {\n const result = permission.every((p) => permissions.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission from permission checker for: `', permission)\n }\n return of(result)\n })\n )\n }\n\n return of(this.permissionChecker.hasPermission(permission))\n }\n\n private showTemplateOrClear() {\n this.resetView()\n\n if (this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n }\n }\n\n private showElseTemplateOrDefaultView() {\n this.resetView()\n if (this.ocxIfPermissionElseTemplate) {\n this.viewContainer.createEmbeddedView(this.ocxIfPermissionElseTemplate)\n return\n }\n\n if (this.ocxIfPermissionOnMissingPermission === 'disable' && this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n\n const el = this.getElement()\n el && this.renderer.setAttribute(el, 'disabled', 'disabled')\n this.isDisabled = true\n }\n }\n\n private resetView() {\n this.viewContainer.clear()\n if (this.isDisabled) {\n this.isDisabled = false\n const el = this.getElement()\n el && this.renderer.removeAttribute(el, 'disabled')\n }\n }\n\n private getElement(): Node | undefined {\n return this.directiveContentRef?.rootNodes[0]\n }\n}\n","import { Directive, HostListener, Input, OnInit, Optional, TemplateRef, ViewContainerRef } from '@angular/core'\n\n@Directive({ selector: '[ocxIfBreakpoint]' })\nexport class IfBreakpointDirective implements OnInit {\n @Input('ocxIfBreakpoint') breakpoint: 'mobile' | 'desktop' | undefined\n\n @Input()\n ocxIfBreakpointElseTemplate: TemplateRef<any> | undefined\n\n state: 'mobile' | 'desktop' | undefined\n\n constructor(\n private viewContainer: ViewContainerRef,\n @Optional() private templateRef?: TemplateRef<unknown>\n ) {}\n\n ngOnInit() {\n this.onResize()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n const isDesktop = !isMobile\n const newState = isMobile ? 'mobile' : 'desktop'\n if ((this.breakpoint === 'mobile' && isMobile) || (this.breakpoint === 'desktop' && isDesktop)) {\n if (this.templateRef && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n if (this.ocxIfBreakpointElseTemplate && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.ocxIfBreakpointElseTemplate)\n }\n }\n this.state = newState\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http'\nimport { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core'\n\n@Directive({ selector: '[ocxSrc]' })\nexport class SrcDirective {\n private _src: string | undefined\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() error = new EventEmitter<void>()\n\n @Input()\n get ocxSrc(): string | undefined {\n return this._src\n }\n set ocxSrc(value: string | undefined) {\n if (value && this._src !== value && window.location.hostname) {\n try {\n if (new URL(value, window.location.origin).hostname === window.location.hostname) {\n this.httpClient.get(value, { observe: 'response', responseType: 'blob' }).subscribe(\n (response: HttpResponse<Blob>) => {\n // ok with content\n if (response?.status === 200) {\n const url = URL.createObjectURL(response.body as Blob)\n this.el.nativeElement.addEventListener('load', () => {\n URL.revokeObjectURL(url)\n })\n this.el.nativeElement.src = url\n }\n // no content\n if (response?.status === 204) {\n this.error.emit()\n }\n },\n () => {\n // on error\n this.error.emit()\n },\n () => {\n // on complete\n this.el.nativeElement.style.visibility = 'initial'\n }\n )\n } else {\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n } catch (error) {\n console.error('Cannot parse URL ', value, error)\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n this._src = value\n }\n }\n\n constructor(\n private el: ElementRef,\n private httpClient: HttpClient\n ) {\n this.el.nativeElement.style.visibility = 'hidden'\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRoute, ActivatedRouteSnapshot, Data, NavigationEnd, ParamMap, Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport { BehaviorSubject, filter, map } from 'rxjs'\nimport { MenuItem } from 'primeng/api'\nimport { BreadCrumbMenuItem } from '../model/breadcrumb-menu-item.model'\nimport { SyncableTopic } from '@onecx/accelerator'\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 SyncableTopic<ManualBreadcrumbs> {\n constructor() {\n super('manualBreadcrumbs', 1)\n }\n}\n\n@Injectable({ providedIn: 'any' })\n@UntilDestroy()\nexport class BreadcrumbService {\n private itemsSource$ = new ManualBreadcrumbsTopic()\n generatedItemsSource = new BehaviorSubject<MenuItem[]>([])\n\n itemsHandler = this.itemsSource$.pipe(map((manualBreadcrumbs) => manualBreadcrumbs.menuItems))\n\n constructor(\n private router: Router,\n private activeRoute: ActivatedRoute,\n private translateService: TranslateService\n ) {\n this.generateBreadcrumbs(this.activeRoute.snapshot)\n this.router.events\n .pipe(\n untilDestroyed(this),\n filter((e) => e instanceof NavigationEnd)\n )\n .subscribe(() => {\n const root = this.router.routerState.snapshot.root\n this.generateBreadcrumbs(root)\n })\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null) {\n if (route?.data['mfeInfo']) {\n const breadcrumbs: MenuItem[] = [\n {\n label: route.data['mfeInfo'].productName,\n routerLink: route.data['mfeInfo'].baseHref,\n },\n ]\n const baseUrl: string[] = (route.data['mfeInfo'].baseHref as string).split('/').filter((value) => value)\n const parentUrl: string[] = route.url.map((url) => url.path)\n const isUsingMatcher = !parentUrl.every((item) => baseUrl.includes(item))\n if (isUsingMatcher) {\n this.createBreadcrumb(route, parentUrl, breadcrumbs)\n }\n this.addBreadcrumb(route.firstChild, parentUrl, breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route?.data['breadcrumb']) {\n const breadcrumbs: MenuItem[] = []\n this.addBreadcrumb(route, [], breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route) {\n this.generateBreadcrumbs(route.firstChild)\n }\n }\n\n private addBreadcrumb(route: ActivatedRouteSnapshot | null, parentUrl: string[], breadcrumbs: MenuItem[]) {\n if (route && 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 || ''] || i.label,\n title: translations[i.titleKey || ''] || i.title,\n })),\n })\n })\n } else {\n this.itemsSource$.publish({\n menuItems: items,\n })\n }\n }\n}\n","import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common'\nimport { Inject, Injector, LOCALE_ID, Pipe, PipeTransform, Type } from '@angular/core'\n\n@Pipe({\n name: 'dynamicPipe',\n})\nexport class DynamicPipe implements PipeTransform {\n knownPipes: { [name: string]: PipeTransform } = {}\n public constructor(@Inject(LOCALE_ID) locale: string, private injector: Injector) {\n this.knownPipes = {\n currency: new CurrencyPipe(locale),\n decimal: new DecimalPipe(locale),\n date: new DatePipe(locale),\n }\n }\n\n transform(value: any, requiredPipe?: Type<any>, pipeArgs?: any): any {\n if (!requiredPipe) {\n return value\n }\n\n const injector = Injector.create({\n name: 'DynamicPipe',\n parent: this.injector,\n providers: [{ provide: requiredPipe }],\n })\n const pipe = injector.get(requiredPipe)\n return pipe.transform(value, pipeArgs)\n }\n\n transform2(value: any, pipeToken: any, ...pipeArgs: any[]): any {\n if (!pipeToken) {\n return value\n } else {\n // eslint-disable-next-line no-prototype-builtins\n if (pipeToken && this.knownPipes.hasOwnProperty(pipeToken)) {\n const pipe = this.knownPipes[pipeToken]\n if (Array.isArray(pipeArgs)) {\n return pipe.transform(value, ...pipeArgs)\n } else {\n return pipe.transform(value, pipeArgs)\n }\n } else {\n return value\n }\n }\n }\n}\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { MenuItem, PrimeIcons } from 'primeng/api'\nimport { BehaviorSubject, concat, map, Observable, of, switchMap } from 'rxjs'\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { BreadcrumbService } from '../../services/breadcrumb.service'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\n\n/**\n * Action definition.\n */\nexport interface Action {\n id?: string\n label?: string\n labelKey?: string\n icon?: string\n iconPos?: 'left' | 'right' | 'top' | 'bottom'\n /**\n * Permission for this action. If the current user does not have this permission, the action will not be shown.\n */\n permission?: string\n title?: string\n titleKey?: string\n ariaLabel?: string\n ariaLabelKey?: string\n btnClass?: string\n actionCallback(): void\n disabled?: boolean\n disabledTooltip?: string\n disabledTooltipKey?: string\n show?: 'always' | 'asOverflow'\n conditional?: boolean\n // Note: This currently doesn't work with dynamic values, since a passed in Action is just a copy of the original object.\n // As a workaround, you can manually update/replace the passed in Action if you wish to update a showCondition\n showCondition?: boolean\n}\n\nexport interface ObjectDetailItem {\n label: string\n value?: string\n /**\n * @deprecated Use `valueTooltip` instead\n */\n tooltip?: string\n labelTooltip?: string\n valueTooltip?: string\n icon?: PrimeIcon\n iconStyleClass?: string\n labelPipe?: Type<any>\n valuePipe?: Type<any>\n valuePipeArgs?: string\n valueCssClass?: string\n actionItemIcon?: PrimeIcon\n actionItemCallback?: () => void\n actionItemTooltip?: string\n actionItemAriaLabelKey?: string\n actionItemAriaLabel?: string\n}\n\nexport interface HomeItem {\n menuItem: MenuItem\n page?: string\n}\n\nexport type GridColumnOptions = 1 | 2 | 3 | 4 | 6 | 12\n\n@Component({\n selector: 'ocx-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageHeaderComponent implements OnInit {\n @Input()\n public header: string | undefined\n\n @Input()\n loading = false\n\n @Input()\n figureBackground = true\n\n @Input()\n showFigure = true\n\n //image fot preview in top-header left side\n @Input()\n figureImage: string | undefined\n\n @Input()\n disableDefaultActions = false\n\n @Input()\n subheader: string | undefined\n\n _actions = new BehaviorSubject<Action[]>([])\n @Input()\n get actions() {\n return this._actions.getValue()\n }\n set actions(value) {\n this._actions.next(value)\n }\n\n @Input()\n objectDetails: ObjectDetailItem[] | undefined\n\n @Input()\n showBreadcrumbs = true\n\n @Input()\n manualBreadcrumbs = false\n\n @Input()\n enableGridView: undefined | boolean\n\n @Input()\n gridLayoutDesktopColumns: undefined | GridColumnOptions\n\n @Output()\n save = new EventEmitter()\n\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n overflowActions$ = new BehaviorSubject<MenuItem[]>([])\n inlineActions$ = new BehaviorSubject<Action[]>([])\n dd = new Date()\n breadcrumbs$!: Observable<MenuItem[]>\n\n home$!: Observable<HomeItem>\n\n figureImageLoadError = false\n\n objectPanelGridLayoutClasses = 'grid row-gap-2 m-0'\n objectPanelColumnLayoutClasses = 'flex flex-row justify-content-between overflow-x-auto'\n\n objectPanelDefaultLayoutClasses = 'flex flex-column row-gap-2 md:flex-row md:justify-content-between'\n\n objectInfoGridLayoutClasses = 'col-12 flex gap-4 md:col-6 align-items-center p-0'\n objectInfoColumnLayoutClasses = 'flex flex-column align-items-center gap-2 min-w-120'\n\n objectInfoDefaultLayoutClasses = 'flex flex-row md:flex-column md:align-items-center md:gap-2'\n\n protected breadcrumbs: BreadcrumbService\n\n constructor(\n breadcrumbs: BreadcrumbService,\n private translateService: TranslateService,\n private appStateService: AppStateService,\n private userService: UserService,\n @Inject(HAS_PERMISSION_CHECKER)\n private hasPermissionChecker?: HasPermissionChecker\n ) {\n this.breadcrumbs = breadcrumbs\n this.home$ = concat(\n of({ menuItem: { icon: PrimeIcons.HOME, routerLink: '/' } }),\n this.appStateService.currentPortal$.pipe(\n map((portal) => ({\n menuItem: {\n icon: PrimeIcons.HOME,\n routerLink: portal.baseUrl,\n },\n page: portal.portalName,\n }))\n )\n )\n\n this._actions\n .pipe(\n map(this.filterInlineActions),\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions))\n )\n .subscribe(this.inlineActions$)\n\n this._actions\n .pipe(\n map(this.filterOverflowActions),\n switchMap((actions) => {\n return this.getActionTranslationKeys(actions).pipe(map((translations) => ({ actions, translations })))\n }),\n switchMap(({ actions, translations }) => {\n return this.filterActionsBasedOnPermissions(actions).pipe(\n map((filteredActions) => ({ filteredActions, translations }))\n )\n }),\n map(({ filteredActions, translations }) => this.mapOverflowActionsToMenuItems(filteredActions, translations))\n )\n .subscribe(this.overflowActions$)\n }\n\n ngOnInit(): void {\n if (!this.manualBreadcrumbs) {\n this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource\n } else {\n this.breadcrumbs$ = this.breadcrumbs.itemsHandler\n }\n }\n\n onAction(action: string) {\n switch (action) {\n case 'save':\n this.save.emit()\n break\n default:\n break\n }\n }\n\n handleImageError() {\n this.figureImageLoadError = true\n }\n\n public generateItemStyle(item: ObjectDetailItem): string {\n let style = ''\n if (item.icon) style = style.concat(style, ' ', 'gap-1 align-items-center')\n if (item.valueCssClass) style = style.concat(style, ' ', item.valueCssClass)\n return style\n }\n\n public getObjectPanelLayoutClasses() {\n if (this.enableGridView) {\n return this.objectPanelGridLayoutClasses\n }\n if (this.enableGridView === false) {\n return this.objectPanelColumnLayoutClasses\n }\n return this.objectPanelDefaultLayoutClasses\n }\n\n public getObjectInfoLayoutClasses() {\n if (this.enableGridView) {\n return `${this.objectInfoGridLayoutClasses} lg:col-${\n this.gridLayoutDesktopColumns ? 12 / this.gridLayoutDesktopColumns : 4\n }`\n }\n if (this.enableGridView === false) {\n return this.objectInfoColumnLayoutClasses\n }\n return this.objectInfoDefaultLayoutClasses\n }\n\n private filterInlineActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'always')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterOverflowActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'asOverflow')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterActionsBasedOnPermissions(actions: Action[]): Observable<Action[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n if (action.permission) {\n return permissions.includes(action.permission!)\n }\n return true\n })\n })\n )\n }\n\n private getActionTranslationKeys(actions: Action[]): Observable<{ [key: string]: string }> {\n const translationKeys = [\n ...actions.map((a) => a.labelKey || '').filter((a) => !!a),\n ...actions.map((a) => a.titleKey || '').filter((a) => !!a),\n ]\n return translationKeys.length ? this.translateService.get(translationKeys) : of({})\n }\n\n private mapOverflowActionsToMenuItems(actions: Action[], translations: { [key: string]: string }): MenuItem[] {\n return actions.map<MenuItem>((a) => ({\n id: a.id,\n label: a.labelKey ? translations[a.labelKey] : a.label,\n icon: a.icon,\n tooltipOptions: {\n tooltipLabel: a.titleKey ? translations[a.titleKey] : a.title,\n tooltipEvent: 'hover',\n tooltipPosition: 'top',\n },\n command: a.actionCallback,\n disabled: a.disabled,\n }))\n }\n}\n","<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n *ngIf=\"breadcrumbs$ | async as items\"\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 >\n <ng-template pTemplate=\"separator\"> <span class=\"pi pi-chevron-right\" aria-hidden=\"true\"></span> </ng-template\n ></p-breadcrumb>\n </ng-container>\n\n <div class=\"p-3 title-bar flex flex-row flex-wrap justify-content-between align-items-center gap-2\">\n <div class=\"title-wrap\">\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n [alt]=\"'OCX_PAGE_HEADER.IMAGE' | translate\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <section class=\"header\" *ngIf=\"!loading; else skeletonBar\" [attr.aria-label]=\"'Page Header'\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <div id=\"page-subheader\" *ngIf=\"!!subheader\" role=\"note\">{{ subheader }}</div>\n </section>\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <ng-container *ngIf=\"inlineActions$ | async as inlineActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [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 </ng-container>\n </div>\n </ng-container>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <ng-container *ngIf=\"overflowActions$ | async as overflowActions\">\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport { Action } from '../page-header/page-header.component'\nimport { FormControlName, FormGroup, FormGroupDirective } from '@angular/forms'\nimport { Observable, combineLatest, debounceTime, map, of, startWith } from 'rxjs'\nimport { getLocation } from '@onecx/accelerator'\nimport { CONFIG_KEY, ConfigurationService } from '@onecx/angular-integration-interface'\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 selector: 'ocx-search-header',\n templateUrl: './search-header.component.html',\n providers: [],\n})\nexport class SearchHeaderComponent implements AfterContentInit, AfterViewInit {\n @Input() header = ''\n\n /**\n * @deprecated Will be replaced by header\n */\n @Input()\n get headline(): string {\n return this.header\n }\n set headline(value: string) {\n this.header = value\n }\n @Input() subheader: string | undefined\n _viewMode: 'basic' | 'advanced' = 'basic'\n @Input()\n get viewMode(): 'basic' | 'advanced' {\n return this._viewMode\n }\n set viewMode(viewMode: 'basic' | 'advanced') {\n if (this.viewMode !== viewMode) {\n this._viewMode = viewMode\n this.viewModeChanged?.emit(this.viewMode)\n this.componentStateChanged.emit({\n activeViewMode: this.viewMode,\n })\n this.updateHeaderActions()\n setTimeout(() => this.addKeyUpEventListener())\n }\n }\n @Input() manualBreadcrumbs = false\n _actions: Action[] = []\n @Input()\n get actions() {\n return this._actions\n }\n set actions(value) {\n this._actions = value\n this.updateHeaderActions()\n }\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() searchButtonDisabled = false\n @Input() resetButtonDisabled = false\n @Input() pageName: string | undefined = getLocation().applicationPath\n\n @Output() searched: EventEmitter<any> = new EventEmitter()\n @Output() resetted: EventEmitter<any> = new EventEmitter()\n @Output() selectedSearchConfigChanged: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n @Output() viewModeChanged: EventEmitter<'basic' | 'advanced'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<SearchHeaderComponentState> = new EventEmitter()\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n get _additionalToolbarContent(): TemplateRef<any> | undefined {\n return this.additionalToolbarContent\n }\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n get _additionalToolbarContentLeft(): TemplateRef<any> | undefined {\n return this.additionalToolbarContentLeft\n }\n\n get searchConfigChangeObserved(): boolean {\n return this.selectedSearchConfigChanged.observed\n }\n\n @ContentChild(FormGroupDirective) formGroup: FormGroup | undefined\n @ContentChildren(FormControlName, { descendants: true }) visibleFormControls!: QueryList<FormControlName>\n\n @ViewChild('searchParameterFields') searchParameterFields: ElementRef | undefined\n\n hasAdvanced = false\n\n simpleAdvancedAction: Action = {\n id: 'simpleAdvancedButton',\n actionCallback: () => this.toggleViewMode(),\n show: 'always',\n }\n headerActions: Action[] = []\n searchButtonsReversed = false\n fieldValues$: Observable<{ [key: string]: unknown }> | undefined = of({})\n searchConfigChangedSlotEmitter: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n\n constructor(configurationService: ConfigurationService) {\n this.searchConfigChangedSlotEmitter.subscribe((config) => {\n this.componentStateChanged.emit({\n selectedSearchConfig: config?.name ?? null,\n })\n this.selectedSearchConfigChanged.emit(config)\n })\n this.searchButtonsReversed =\n configurationService.getProperty(CONFIG_KEY.ONECX_PORTAL_SEARCH_BUTTONS_REVERSED) === 'true'\n }\n\n ngAfterContentInit(): void {\n if (this.formGroup) {\n this.fieldValues$ = combineLatest([\n this.formGroup.valueChanges.pipe(startWith({})),\n this.visibleFormControls.changes.pipe(startWith(null)),\n ]).pipe(\n debounceTime(100),\n map(([values, _]) =>\n Object.entries(values ?? {}).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: this.isVisible(key) ? value || undefined : undefined,\n }),\n {}\n )\n )\n )\n }\n }\n\n ngAfterViewInit(): void {\n this.addKeyUpEventListener()\n }\n\n toggleViewMode() {\n this.viewMode = this.viewMode === 'basic' ? 'advanced' : 'basic'\n }\n\n onResetClicked() {\n this.resetted.emit()\n }\n\n onSearchClicked() {\n this.searched.emit()\n }\n\n updateHeaderActions() {\n const headerActions: Action[] = []\n if (this.hasAdvanced) {\n this.simpleAdvancedAction.labelKey = this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT',\n this.simpleAdvancedAction.titleKey = this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL',\n \n headerActions.push(this.simpleAdvancedAction)\n }\n this.headerActions = headerActions.concat(this.actions)\n }\n\n addKeyUpEventListener() {\n const inputElements = this.searchParameterFields?.nativeElement.querySelectorAll('input')\n inputElements.forEach((inputElement: any) => {\n if (!inputElement.listenerAdded) {\n inputElement.addEventListener('keyup', (event: any) => this.onSearchKeyup(event))\n inputElement.listenerAdded = true\n }\n })\n }\n\n onSearchKeyup(event: any) {\n if (event.code === 'Enter') {\n this.onSearchClicked()\n }\n }\n\n private isVisible(control: string) {\n return this.visibleFormControls.some(\n (formControl) => formControl.name !== null && String(formControl.name) === control\n )\n }\n}\n","<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <section #searchParameterFields [attr.aria-label]=\"'Search Criteria'\">\n <ng-content></ng-content>\n </section>\n <section\n class=\"flex flex-wrap gap-2\"\n [ngClass]=\"searchButtonsReversed ? 'flex-row-reverse' : 'flex-row'\"\n [attr.aria-label]=\"'Search Controls'\"\n >\n <p-button\n id=\"resetButton\"\n icon=\"pi pi-eraser\"\n (onClick)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n </section>\n </div>\n</ocx-page-header>\n","import { Directive, DoCheck, Optional, TemplateRef, ViewContainerRef } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxAdvanced]' })\nexport class AdvancedDirective implements DoCheck {\n constructor(\n private viewContainer: ViewContainerRef,\n @Optional() private templateRef?: TemplateRef<any>,\n @Optional() private searchHeader?: SearchHeaderComponent\n ) {\n if (!searchHeader) {\n throw 'Advanced directive can only be used inside search header component'\n }\n searchHeader.hasAdvanced = true\n }\n ngDoCheck(): void {\n if (this.searchHeader?.viewMode === 'advanced') {\n if (this.templateRef && !this.viewContainer.length) {\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n this.viewContainer.clear()\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core'\nimport { PrimeNGConfig } from 'primeng/api'\nimport { Tooltip } from 'primeng/tooltip'\n\n@Directive({ selector: '[ocxTooltipOnOverflow]' })\nexport class TooltipOnOverflowDirective extends Tooltip implements OnDestroy, AfterViewInit {\n mutationObserver = new MutationObserver(() => {\n this.zone.run(() => {\n this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n this.setOption({ disabled: this.disabled })\n }, this)\n })\n\n @Input()\n get ocxTooltipOnOverflow(): string | TemplateRef<HTMLElement> | undefined {\n return this.content\n }\n set ocxTooltipOnOverflow(value: string | TemplateRef<HTMLElement> | undefined) {\n this.content = value\n this.setOption({ tooltipLabel: value })\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy()\n this.mutationObserver.disconnect()\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit()\n this.mutationObserver.observe(this.el.nativeElement, { subtree: true, characterData: true, childList: true })\n }\n\n constructor(\n @Inject(PLATFORM_ID) platformId: any,\n el: ElementRef,\n zone: NgZone,\n config: PrimeNGConfig,\n renderer: Renderer2,\n viewContainer: ViewContainerRef\n ) {\n super(platformId, el, zone, config, renderer, viewContainer)\n renderer.setStyle(this.el.nativeElement, 'text-overflow', 'ellipsis')\n renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden')\n renderer.setStyle(this.el.nativeElement, 'white-space', 'nowrap')\n this.disabled = true\n this.setOption({ disabled: this.disabled })\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type GroupSelectionChangedEvent = { activeColumns: DataTableColumn[]; groupKey: string }\nexport interface ColumnGroupSelectionComponentState {\n activeColumnGroupKey?: string\n displayedColumns?: DataTableColumn[]\n}\n@Component({\n templateUrl: './column-group-selection.component.html',\n selector: 'ocx-column-group-selection',\n styleUrls: ['./column-group-selection.component.scss'],\n})\nexport class ColumnGroupSelectionComponent implements OnInit {\n selectedGroupKey$ = new BehaviorSubject<string>('')\n @Input()\n get selectedGroupKey(): string {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string) {\n this.selectedGroupKey$.next(value)\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: value,\n })\n }\n }\n\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n }\n @Input() placeholderKey = ''\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = ''\n\n @Output() groupSelectionChanged: EventEmitter<GroupSelectionChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<ColumnGroupSelectionComponentState> = new EventEmitter()\n\n allGroupKeys$: Observable<string[]> | undefined\n\n ngOnInit() {\n this.allGroupKeys$ = combineLatest([this.columns$, this.selectedGroupKey$]).pipe(\n map(([columns, selectedGroupKey]) =>\n columns\n .map((keys) => keys.predefinedGroupKeys || [])\n .flat()\n .concat([this.defaultGroupKey])\n .concat([selectedGroupKey])\n .filter((value) => !!value)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n )\n )\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n })\n } else {\n const activeColumns = this.columns.filter((c) =>\n c.predefinedGroupKeys?.includes(this.selectedGroupKey$.getValue() ?? this.defaultGroupKey)\n )\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: activeColumns,\n })\n }\n }\n\n changeGroupSelection(event: { value: string }) {\n if (event.value === this.customGroupKey) {\n return\n }\n const activeColumns = this.columns.filter((c) => c.predefinedGroupKeys?.includes(event.value))\n this.groupSelectionChanged.emit({ activeColumns, groupKey: event.value })\n this.componentStateChanged.emit({\n activeColumnGroupKey: event.value,\n displayedColumns: activeColumns,\n })\n }\n}\n","<p-floatLabel>\n <p-dropdown\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n *ngIf=\"(allGroupKeys$ | async)?.length\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\"> {{ item ? (item | translate) : ''}} </ng-template>\n </p-dropdown>\n <label *ngIf=\"(allGroupKeys$ | async)?.length\" for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n</p-floatLabel>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type ColumnSelectionChangedEvent = { activeColumns: DataTableColumn[] }\nexport type ActionColumnChangedEvent = {\n frozenActionColumn: boolean\n actionColumnPosition: 'left' | 'right'\n}\n\nexport interface CustomGroupColumnSelectorComponentState {\n actionColumnConfig?: {\n frozen: boolean\n position: 'left' | 'right'\n }\n displayedColumns?: DataTableColumn[]\n activeColumnGroupKey?: string\n}\n\n@Component({\n 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 @Input() columns: DataTableColumn[] = []\n private _displayedColumns: DataTableColumn[] = []\n @Input()\n get displayedColumns() {\n return this._displayedColumns\n }\n set displayedColumns(value: DataTableColumn[]) {\n this._displayedColumns = value\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this._displayedColumns,\n })\n }\n @Input() customGroupKey = ''\n @Input() dialogTitle = ''\n @Input() dialogTitleKey = ''\n @Input() openButtonTitle = ''\n @Input() openButtonTitleKey = ''\n @Input() openButtonAriaLabel = ''\n @Input() openButtonAriaLabelKey = ''\n @Input() saveButtonLabel = ''\n @Input() saveButtonLabelKey = ''\n @Input() saveButtonAriaLabel = ''\n @Input() saveButtonAriaLabelKey = ''\n @Input() cancelButtonLabel = ''\n @Input() cancelButtonLabelKey = ''\n @Input() cancelButtonAriaLabel = ''\n @Input() cancelButtonAriaLabelKey = ''\n @Input() activeColumnsLabel = ''\n @Input() activeColumnsLabelKey = ''\n @Input() inactiveColumnsLabel = ''\n @Input() inactiveColumnsLabelKey = ''\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() columnSelectionChanged: EventEmitter<ColumnSelectionChangedEvent> = new EventEmitter()\n @Output() actionColumnConfigChanged: EventEmitter<ActionColumnChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<CustomGroupColumnSelectorComponentState> = new EventEmitter()\n\n hiddenColumnsModel: DataTableColumn[] = []\n displayedColumnsModel: DataTableColumn[] = []\n frozenActionColumnModel = false\n actionColumnPositionModel: 'left' | 'right' = 'right'\n visible = false\n alignmentOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.LEFT',\n value: 'left',\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.RIGHT',\n value: 'right',\n },\n ]\n\n frozenOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.YES',\n value: true,\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.NO',\n value: false,\n },\n ]\n\n constructor(private translate: TranslateService) {}\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this.displayedColumns,\n })\n }\n\n onOpenCustomGroupColumnSelectionDialogClick() {\n this.displayedColumnsModel = [...this.displayedColumns]\n this.hiddenColumnsModel = this.columns.filter(\n (column) => !this.displayedColumnsModel.map((c) => c.id).includes(column.id)\n )\n this.frozenActionColumnModel = this.frozenActionColumn\n this.actionColumnPositionModel = this.actionColumnPosition\n this.visible = true\n }\n\n onSaveClick() {\n this.visible = false\n const colIdsBefore = this.displayedColumns.map((column) => column.id)\n const colIdsAfter = this.displayedColumnsModel.map((column) => column.id)\n\n if (!colIdsAfter.every((colId, i) => colId === colIdsBefore[i]) || colIdsAfter.length != colIdsBefore.length) {\n this.columnSelectionChanged.emit({ activeColumns: [...this.displayedColumnsModel] })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n })\n }\n\n if (\n this.frozenActionColumn != this.frozenActionColumnModel ||\n this.actionColumnPosition != this.actionColumnPositionModel\n ) {\n this.actionColumnConfigChanged.emit({\n frozenActionColumn: this.frozenActionColumnModel,\n actionColumnPosition: this.actionColumnPositionModel,\n })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n actionColumnConfig: {\n frozen: this.frozenActionColumnModel,\n position: this.actionColumnPositionModel,\n },\n activeColumnGroupKey: this.customGroupKey,\n })\n }\n }\n\n onCancelClick() {\n this.visible = false\n }\n}\n","<p-button\n id=\"customGroupColumnSelectorButton\"\n type=\"button\"\n (onClick)=\"onOpenCustomGroupColumnSelectionDialogClick()\"\n [pTooltip]=\"openButtonTitle || (openButtonTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n tooltipPosition=\"top\"\n icon=\"pi pi-cog\"\n styleClass=\"p-button\"\n [ariaLabel]=\"(openButtonAriaLabelKey ? (openButtonAriaLabelKey | translate) : openButtonAriaLabel) || openButtonTitle || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n [attr.aria-controls]=\"visible ? 'customGroupColumnSelectorDialog' : null\"\n [attr.aria-expanded]=\"visible ? true : false\"\n></p-button>\n\n<p-dialog\n #dialog\n id=\"customGroupColumnSelectorDialog\"\n [(visible)]=\"visible\"\n [style]=\"{ width: '70%' }\"\n [modal]=\"true\"\n [closeAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.CLOSE' | translate)\"\n>\n <ng-template pTemplate=\"header\">\n <span [id]=\"dialog.ariaLabelledBy\" class=\"text-xl font-bold\"\n >{{ dialogTitle || (dialogTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DIALOG_TITLE' | translate)\n }}</span\n >\n </ng-template>\n\n <p-pickList\n [source]=\"displayedColumnsModel\"\n [target]=\"hiddenColumnsModel\"\n [sourceHeader]=\"activeColumnsLabel || (activeColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ACTIVE_COLUMNS_LABEL' | translate)\"\n [targetHeader]=\"inactiveColumnsLabel || (inactiveColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.INACTIVE_COLUMNS_LABEL' | translate)\"\n [dragdrop]=\"true\"\n [responsive]=\"false\"\n [sourceStyle]=\"{ height: '300px' }\"\n [targetStyle]=\"{ height: '300px' }\"\n [upButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.UP' | translate)\"\n [topButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.TOP' | translate)\"\n [downButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.DOWN' | translate)\"\n [bottomButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.BOTTOM' | translate)\"\n [rightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.RIGHT' | translate)\"\n [allRightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_RIGHT' | translate)\"\n [leftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.LEFT' | translate)\"\n [allLeftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_LEFT' | translate)\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div>{{ item.nameKey | translate }}</div>\n </ng-template>\n </p-pickList>\n\n <div class=\"pt-4\">\n <p class=\"text-xl font-bold\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.TITLE' | translate}}</p>\n <div class=\"flex gap-6 px-3\">\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.FREEZE' | translate}}</p>\n <p-selectButton\n [options]=\"frozenOptions\"\n [(ngModel)]=\"frozenActionColumnModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"frozenActionColumn\"\n name=\"frozen-action-column-select-button\"\n >\n <ng-template let-option pTemplate>\n <label id=\"{{option.label}}\">{{option.label | translate}}</label>\n </ng-template>\n </p-selectButton>\n </div>\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.POSITION' | translate}}</p>\n <p-selectButton\n [options]=\"alignmentOptions\"\n [(ngModel)]=\"actionColumnPositionModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"actionColumnPosition\"\n class=\"mt-2\"\n name=\"action-column-position-select-button\"\n >\n <ng-template let-option pTemplate>\n <label id=\"{{option.label}}\">{{option.label | translate}}</label>\n </ng-template>\n </p-selectButton>\n </div>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <p-button\n id=\"cancelButton\"\n (onClick)=\"onCancelClick()\"\n [label]=\"cancelButtonLabel || (cancelButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_LABEL' | translate)\"\n styleClass=\"p-button\"\n [ariaLabel]=\"cancelButtonLabel || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n <p-button\n id=\"saveButton\"\n (onClick)=\"onSaveClick()\"\n [label]=\"saveButtonLabel || (saveButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_LABEL' | translate)\"\n [ariaLabel]=\"saveButtonAriaLabelKey || (saveButtonAriaLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n </ng-template>\n</p-dialog>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { PrimeIcons } from 'primeng/api'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\ninterface ViewingLayouts {\n id: string\n icon: PrimeIcon\n layout: 'grid' | 'list' | 'table'\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nconst ALL_VIEW_LAYOUTS: ViewingLayouts[] = [\n {\n id: 'ocx-data-layout-selection-list',\n icon: PrimeIcons.LIST,\n layout: 'list',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n },\n {\n id: 'ocx-data-layout-selection-grid',\n icon: PrimeIcons.TH_LARGE,\n layout: 'grid',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n },\n {\n id: 'ocx-data-layout-selection-table',\n icon: PrimeIcons.TABLE,\n layout: 'table',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n },\n]\n\nexport interface DataLayoutSelectionComponentState {\n layout?: 'grid' | 'list' | 'table'\n}\n@Component({\n selector: 'ocx-data-layout-selection',\n templateUrl: './data-layout-selection.component.html',\n styleUrls: ['./data-layout-selection.component.scss'],\n})\nexport class DataLayoutSelectionComponent implements OnInit {\n @Input() supportedViewLayouts: Array<string> = []\n @Input()\n set layout(value: 'grid' | 'list' | 'table') {\n this.selectedViewLayout = ALL_VIEW_LAYOUTS.find((v) => v.layout === value)\n }\n get layout(): 'grid' | 'list' | 'table' {\n return this.selectedViewLayout?.layout || 'table'\n }\n\n @Output() dataViewLayoutChange: EventEmitter<'grid' | 'list' | 'table'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataLayoutSelectionComponentState> = new EventEmitter()\n\n viewingLayouts: ViewingLayouts[] = []\n selectedViewLayout: ViewingLayouts | undefined\n\n ngOnInit(): void {\n this.viewingLayouts = ALL_VIEW_LAYOUTS.filter((vl) => this.supportedViewLayouts.includes(vl.layout))\n this.componentStateChanged.emit({\n layout: this.layout,\n })\n }\n\n onDataViewLayoutChange(event: { icon: PrimeIcon; layout: 'grid' | 'list' | 'table' }): void {\n this.dataViewLayoutChange.emit(event.layout)\n this.componentStateChanged.emit({\n layout: event.layout,\n })\n }\n}\n","<div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <p-selectButton\n *ngIf=\"viewingLayouts.length > 1\"\n [options]=\"viewingLayouts\"\n [(ngModel)]=\"selectedViewLayout\"\n optionLabel=\"id\"\n (onChange)=\"onDataViewLayoutChange($event.value)\"\n >\n <ng-template let-item pTemplate>\n <i [class]=\"item.icon\" [pTooltip]=\"item.tooltip || (item.tooltipKey | translate)\" tooltipPosition=\"top\"></i>\n <label style=\"display: none\" id=\"{{item.id}}\">{{item.labelKey | translate}}</label>\n </ng-template>\n </p-selectButton>\n</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 * @deprecated Will be removed with the next major v6 upgrade.\n * Please use pTemplate=\"column id + IdCell\" in DataTable or\n * pTemplate=\"column id + IdTableCell\" in DataView and InteractiveDataView\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdCell\"\n */\n CUSTOM = 'CUSTOM',\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 Filter = { columnId: string; value: unknown; filterType?: FilterType }\n\nexport enum FilterType {\n EQUAL = 'EQUAL',\n TRUTHY = 'TRUTHY',\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map, of } from 'rxjs'\nimport { flattenObject } from '../../functions/flatten-object'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { ListGridData } from '../../components/data-list-grid/data-list-grid.component'\nimport { Row } from '../../components/data-table/data-table.component'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { Filter, FilterType } from '../../model/filter.model'\n\ntype RowListGridData = ListGridData | Row\n\nexport class DataSortBase {\n constructor(\n protected locale: string,\n protected translateService: TranslateService\n ) {}\n\n translateItems(\n [items, filters, sortColumn, sortDirection]: [RowListGridData[], Filter[], string, DataSortDirection],\n columns: DataTableColumn[],\n clientSideFiltering: boolean,\n clientSideSorting: boolean\n ): Observable<[RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>]> {\n if (clientSideFiltering || clientSideSorting) {\n let translationKeys: string[] = []\n const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n translatedColumns.forEach((c) => {\n translationKeys = [\n ...translationKeys,\n ...items.map((i) => ObjectUtils.resolveFieldData(i, c.id)?.toString()).filter((v) => !!v),\n ]\n })\n if (translationKeys.length) {\n return this.translateService.get(translationKeys).pipe(\n map((translatedValues: Record<string, string>) => {\n const translations: Record<string, Record<string, string>> = {}\n translatedColumns.forEach((c) => {\n translations[c.id] = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, c.id)?.toString() || '',\n translatedValues[ObjectUtils.resolveFieldData(i, c.id)?.toString()],\n ])\n )\n })\n return [items, filters, sortColumn, sortDirection, translations]\n })\n )\n }\n }\n return of([items, filters, sortColumn, sortDirection, {}])\n }\n\n filterItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n clientSideFiltering: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideFiltering) {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n return [\n items.filter((item) =>\n filters\n .map((filter) => filter.columnId)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n .every((filterColumnId) =>\n filters\n .filter((filter) => filter.columnId === filterColumnId)\n .some((filter) => {\n const value = (\n translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId)?.toString()] ||\n ObjectUtils.resolveFieldData(item, filter.columnId)\n )?.toString()\n switch (filter.filterType) {\n case undefined:\n case FilterType.EQUAL:\n return value === String(filter.value)\n case FilterType.TRUTHY: {\n return filter.value ? !!value : !value\n }\n }\n })\n )\n ),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n sortItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n columns: DataTableColumn[],\n clientSideSorting: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideSorting || sortColumn === '') {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n const column = columns.find((h) => h.id === sortColumn)\n let colValues: Record<string, string>\n if (column?.columnType === ColumnType.DATE || column?.columnType === ColumnType.RELATIVE_DATE) {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ])\n )\n } else {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ])\n )\n }\n if (column?.columnType === ColumnType.TRANSLATION_KEY) {\n colValues = translations[sortColumn]\n }\n return [\n [...items].sort(this.createCompareFunction(colValues, sortColumn, sortDirection)),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n flattenItems(items: RowListGridData[]) {\n return items.map((i) => flattenObject(i))\n }\n\n createCompareFunction(\n translatedColValues: Record<string, string>,\n sortColumn: string,\n sortDirection: DataSortDirection\n ): (a: Record<string, any>, b: Record<string, any>) => number {\n let direction = 0\n if (sortDirection === DataSortDirection.ASCENDING) {\n direction = 1\n } else if (sortDirection === DataSortDirection.DESCENDING) {\n direction = -1\n }\n return (data1, data2) => {\n if (direction === 0) {\n return 0\n }\n let result\n const value1 = translatedColValues[ObjectUtils.resolveFieldData(data1, sortColumn)]\n const value2 = translatedColValues[ObjectUtils.resolveFieldData(data2, sortColumn)]\n\n if (value1 == null && value2 != null) result = -1\n else if (value1 != null && value2 == null) result = 1\n else if (value1 == null && value2 == null) result = 0\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, [this.locale, 'en', 'de'], { numeric: true })\n else {\n if (value1 < value2) {\n result = -1\n } else if (value1 > value2) {\n result = 1\n } else {\n result = 0\n }\n }\n return direction * result\n }\n }\n}\n","import { ChangeDetectorRef, NgZone, OnDestroy, Pipe, PipeTransform } from '@angular/core'\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core'\n\n@Pipe({\n name: 'timeago',\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class OcxTimeAgoPipe extends TranslatePipe implements OnDestroy, PipeTransform {\n private timer: number | undefined | null\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private ngZone: NgZone,\n private translateService: TranslateService\n ) {\n super(translateService, 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 AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Inject,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\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 { BehaviorSubject, Observable, combineLatest, debounceTime, first, map, mergeMap, of, switchMap } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { Row } from '../data-table/data-table.component'\nimport { Filter } from '../../model/filter.model'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\n\nexport type ListGridData = {\n id: string | number\n imagePath: string | number\n [columnId: string]: unknown\n}\n\ntype RowListGridData = ListGridData & Row\n\nexport interface ListGridDataMenuItem extends MenuItem {\n permission: string\n}\n\nexport interface DataListGridComponentState {\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n selector: 'ocx-data-list-grid',\n templateUrl: './data-list-grid.component.html',\n styleUrls: ['./data-list-grid.component.scss'],\n})\nexport class DataListGridComponent extends DataSortBase implements OnInit, DoCheck, AfterContentInit {\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() sortStates: DataSortDirection[] = []\n\n displayedPageSizes$: Observable<(number | { showAll: string })[]>\n _pageSizes$ = new BehaviorSubject<(number | { showAll: string })[]>([10, 25, 50])\n @Input()\n get pageSizes(): (number | { showAll: string })[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: (number | { showAll: string })[]) {\n this._pageSizes$.next(value)\n }\n\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n _showAllOption$ = new BehaviorSubject<boolean>(false)\n @Input()\n set showAllOption(value: boolean) {\n this._showAllOption$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() fallbackImage = 'placeholder.png'\n @Input() layout: 'grid' | 'list' = 'grid'\n _viewPermission$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n @Input()\n get viewPermission(): string | string[] | undefined {\n return this._viewPermission$.getValue()\n }\n set viewPermission(value: string | string[] | undefined) {\n this._viewPermission$.next(value)\n }\n @Input() editPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() viewMenuItemKey: string | undefined\n @Input() editMenuItemKey: string | undefined\n @Input() deleteMenuItemKey: string | undefined\n @Input() paginator = true\n @Input() page = 0\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n }\n @Input() name = ''\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n _data$ = new BehaviorSubject<RowListGridData[]>([])\n @Input()\n get data(): RowListGridData[] {\n return this._data$.getValue()\n }\n set data(value: RowListGridData[]) {\n !this._data$.getValue().length ?? this.resetPage()\n this._originalData = [...value]\n this._data$.next([...value])\n }\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n !this._filters$.getValue().length ?? this.resetPage()\n this._filters$.next(value)\n }\n _originalData: RowListGridData[] = []\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n if (value === DataSortDirection.NONE) {\n this._data$.next([...this._originalData])\n }\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdListValue\"\n */\n @Input() customListValueTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdListValue\"\n */\n @ContentChild('customListValue') customListValueChildTemplate: TemplateRef<any> | undefined\n get _customListValue(): TemplateRef<any> | undefined {\n return this.customListValueTemplate || this.customListValueChildTemplate\n }\n\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n\n inlineListActions$: Observable<DataAction[]>\n overflowListActions$: Observable<DataAction[]>\n overflowListMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n\n @Output() viewItem = new EventEmitter<ListGridData>()\n @Output() editItem = new EventEmitter<ListGridData>()\n @Output() deleteItem = new EventEmitter<ListGridData>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataListGridComponentState>()\n\n get viewItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteItem.observed\n }\n\n get sortDirectionNumber(): number {\n if (this.sortDirection === DataSortDirection.ASCENDING) return 1\n if (this.sortDirection === DataSortDirection.DESCENDING) return -1\n return 0\n }\n\n gridMenuItems$: Observable<MenuItem[]>\n _selectedItem$ = new BehaviorSubject<ListGridData | undefined>(undefined)\n observedOutputs$ = new BehaviorSubject<number>(0)\n\n displayedItems$: Observable<unknown[]> | undefined\n fallbackImagePath$!: Observable<string>\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n columnType = ColumnType\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n hasViewPermission$: Observable<boolean>\n\n constructor(\n @Inject(LOCALE_ID) locale: string,\n translateService: TranslateService,\n private userService: UserService,\n private router: Router,\n private injector: Injector,\n private appStateService: AppStateService,\n @Inject(HAS_PERMISSION_CHECKER) @Optional() private hasPermissionChecker?: HasPermissionChecker\n ) {\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.fallbackImagePath$ = this.appStateService.currentMfe$.pipe(\n map((currentMfe) => this.getFallbackImagePath(currentMfe))\n )\n this.displayedPageSizes$ = combineLatest([\n this._pageSizes$,\n this.translateService.get('OCX_DATA_TABLE.ALL'),\n this._showAllOption$,\n ]).pipe(\n map(([pageSizes, translation, showAllOption]) =>\n showAllOption ? pageSizes.concat({ showAll: translation }) : pageSizes\n )\n )\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.inlineListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.overflowListMenuItems$ = combineLatest([this.overflowListActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n this.hasViewPermission$ = this._viewPermission$.pipe(\n map((permission) => {\n if (!permission) return []\n return Array.isArray(permission) ? permission : [permission]\n }),\n switchMap((permissionArray) => {\n if (permissionArray.length === 0) {\n return of(true)\n }\n return this.getPermissions().pipe(map((permissions) => permissionArray.every((p) => permissions.includes(p))))\n })\n )\n\n this.gridMenuItems$ = combineLatest([\n this.getPermissions(),\n this._additionalActions$.asObservable(),\n this._selectedItem$.asObservable(),\n this.observedOutputs$.asObservable(),\n ]).pipe(\n switchMap(([permissions, additionalActions, selectedItem, _observedOutputs]) =>\n this.filterActionsBasedOnPermissions(additionalActions, permissions).pipe(\n map((permittedActions) => ({ permissions, additionalActions: permittedActions, selectedItem }))\n )\n ),\n switchMap(({ permissions, additionalActions, selectedItem }) => {\n return this.getGridActionsTranslations(additionalActions, permissions).pipe(\n map((translations) => ({ permissions, additionalActions, selectedItem, translations }))\n )\n }),\n map(({ permissions, additionalActions, selectedItem, translations }) =>\n this.mapGridMenuItems(permissions, additionalActions, selectedItem, translations)\n )\n )\n }\n\n ngDoCheck(): void {\n const observedOutputs = <any>this.viewItem.observed + <any>this.deleteItem.observed + <any>this.editItem.observed\n if (this.observedOutputs$.getValue() !== observedOutputs) {\n this.observedOutputs$.next(observedOutputs)\n }\n }\n\n ngOnInit(): void {\n this.displayedItems$ = combineLatest([this._data$, this._filters$, this._sortField$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([items]) => items)\n )\n\n this.emitComponentStateChanged()\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'customListValue':\n this.customListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n }\n })\n }\n\n onDeleteRow(element: ListGridData) {\n this.deleteItem.emit(element)\n }\n\n onViewRow(element: ListGridData) {\n this.viewItem.emit(element)\n }\n\n onEditRow(element: ListGridData) {\n this.editItem.emit(element)\n }\n\n imgError(item: ListGridData) {\n item.imagePath = ''\n }\n\n getFallbackImagePath(mfeInfo: MfeInfo) {\n return mfeInfo?.remoteBaseUrl\n ? `${mfeInfo.remoteBaseUrl}/onecx-portal-lib/assets/images/${this.fallbackImage}`\n : `./onecx-portal-lib/assets/images/${this.fallbackImage}`\n }\n\n setSelectedItem(item: ListGridData) {\n this._selectedItem$.next(item)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n emitComponentStateChanged(state: DataListGridComponentState = {}) {\n this.displayedPageSize$.pipe(first()).subscribe((pageSize) => {\n this.componentStateChanged.emit({\n pageSize,\n activePage: this.page,\n ...state,\n })\n })\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!this.resolveFieldData(object, key)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowListActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n getFilteredColumns() {\n let ids: string[] = [...(this.subtitleLineIds ?? [])]\n if (this.titleLineId) {\n ids = [this.titleLineId, ...(this.subtitleLineIds ?? [])]\n }\n return this.columns.filter((c) => !ids.includes(c.id))\n }\n\n findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n }\n\n getTemplate(column: DataTableColumn): Observable<TemplateRef<any> | null> {\n if (!this.templatesObservables[column.id]) {\n this.templatesObservables[column.id] = combineLatest([\n this.templates$,\n this.viewTemplates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, vt, pt]) => {\n const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n const columnTemplate = templates.find((template) => template.name === column.id + 'IdListValue')?.template\n if (columnTemplate) {\n return columnTemplate\n }\n switch (column.columnType) {\n case ColumnType.DATE:\n return (\n this._dateListValue ??\n this.findTemplate(templates, ['dateListValue', 'defaultDateListValue'])?.template ??\n null\n )\n case ColumnType.NUMBER:\n return (\n this._numberListValue ??\n this.findTemplate(templates, ['numberListValue', 'defaultNumberListValue'])?.template ??\n null\n )\n case ColumnType.RELATIVE_DATE:\n return (\n this._relativeDateListValue ??\n this.findTemplate(templates, ['relativeDateListValue', 'defaultRelativeDateListValue'])?.template ??\n null\n )\n case ColumnType.TRANSLATION_KEY:\n return (\n this._translationKeyListValue ??\n this.findTemplate(templates, ['translationKeyListValue', 'defaultTranslationKeyListValue'])?.template ??\n null\n )\n case ColumnType.CUSTOM:\n return (\n this._customListValue ??\n this.findTemplate(templates, ['customListValue', 'defaultCustomListValue'])?.template ??\n null\n )\n default:\n return (\n this._stringListValue ??\n this.findTemplate(templates, ['stringListValue', 'defaultStringListValue'])?.template ??\n null\n )\n }\n })\n )\n }\n return this.templatesObservables[column.id]\n }\n\n private mapGridMenuItems(\n permissions: string[],\n additionalActions: DataAction[],\n selectedItem: ListGridData | undefined,\n translations: Record<string, string>\n ): MenuItem[] {\n let deleteDisabled = false\n let editDisabled = false\n let viewDisabled = false\n\n let deleteVisible = true\n let editVisible = true\n let viewVisible = true\n\n if (selectedItem) {\n viewDisabled = !!this.viewActionEnabledField && !this.fieldIsTruthy(selectedItem, this.viewActionEnabledField)\n editDisabled = !!this.editActionEnabledField && !this.fieldIsTruthy(selectedItem, this.editActionEnabledField)\n deleteDisabled =\n !!this.deleteActionEnabledField && !this.fieldIsTruthy(selectedItem, this.deleteActionEnabledField)\n\n viewVisible = !this.viewActionVisibleField || this.fieldIsTruthy(selectedItem, this.viewActionVisibleField)\n editVisible = !this.editActionVisibleField || this.fieldIsTruthy(selectedItem, this.editActionVisibleField)\n deleteVisible = !this.deleteActionVisibleField || this.fieldIsTruthy(selectedItem, this.deleteActionVisibleField)\n }\n\n const menuItems: MenuItem[] = []\n const automationId = 'data-grid-action-button'\n const automationIdHidden = 'data-grid-action-button-hidden'\n if (this.shouldDisplayAction(this.viewPermission, this.viewItem, permissions)) {\n menuItems.push({\n label: translations[this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW'],\n icon: PrimeIcons.EYE,\n command: () => this.viewItem.emit(selectedItem),\n disabled: viewDisabled,\n visible: viewVisible,\n automationId: viewVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.editPermission, this.editItem, permissions)) {\n menuItems.push({\n label: translations[this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT'],\n icon: PrimeIcons.PENCIL,\n command: () => this.editItem.emit(selectedItem),\n disabled: editDisabled,\n visible: editVisible,\n automationId: editVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.deletePermission, this.deleteItem, permissions)) {\n menuItems.push({\n label: translations[this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE'],\n icon: PrimeIcons.TRASH,\n command: () => this.deleteItem.emit(selectedItem),\n disabled: deleteDisabled,\n visible: deleteVisible,\n automationId: deleteVisible ? automationId : automationIdHidden,\n })\n }\n const val = menuItems.concat(\n additionalActions.map((a) => {\n const isVisible = !a.actionVisibleField || this.fieldIsTruthy(selectedItem, a.actionVisibleField)\n return {\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(selectedItem, a.actionEnabledField)),\n visible: isVisible,\n command: () => a.callback(selectedItem),\n automationId: isVisible ? automationId : automationIdHidden,\n }\n })\n )\n return val\n }\n\n private getGridActionsTranslations(\n additionalActions: DataAction[],\n permissions: string[]\n ): Observable<Record<string, string>> {\n return this.translateService.get([\n this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW',\n this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT',\n this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE',\n ...additionalActions\n .filter((action) => {\n const permissionsArray = Array.isArray(action.permission) ? action.permission : [action.permission]\n return permissionsArray.every((p) => permissions.includes(p))\n })\n .map((a) => a.labelKey || ''),\n ])\n }\n\n private shouldDisplayAction(\n permission: string | string[] | undefined,\n emitter: EventEmitter<any>,\n userPermissions: string[]\n ): boolean {\n const permissions = Array.isArray(permission) ? permission : permission ? [permission] : []\n return emitter.observed && permissions.every((p) => userPermissions.includes(p))\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[], permissions?: string[]): Observable<DataAction[]> {\n const permissions$ = permissions ? of(permissions) : this.getPermissions()\n return permissions$.pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n\n private getPermissions(): Observable<string[]> {\n if (this.hasPermissionChecker?.getPermissions) {\n return this.hasPermissionChecker.getPermissions()\n }\n\n return this.userService.getPermissions()\n }\n}\n","<ng-container *ngIf=\"(displayedPageSize$ | async) as displayedPageSize\">\n <p-dataView\n *ngIf=\"(columnTemplates$ | async) ?? {} as columnTemplates\"\n [value]=\"(displayedItems$ | async) ?? []\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [layout]=\"layout\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"(displayedPageSizes$ | async) ?? []\"\n id=\"dataListGrid_{{name}}\"\n paginatorDropdownAppendTo=\"body\"\n >\n <ng-template #gridItem let-rows pTemplate=\"gridItem\">\n <div class=\"p-grid p-nogutter grid grid-nogutter\">\n <ng-template ngFor let-item [ngForOf]=\"rows\">\n <ng-container\n [ngTemplateOutlet]=\"_gridItem ? _gridItem : defaultGridItem\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </ng-template>\n </div>\n </ng-template>\n\n <ng-template #listItem let-rows pTemplate=\"listItem\">\n <div class=\"p-grid p-nogutter grid grid-nogutter\">\n <ng-template ngFor let-item [ngForOf]=\"rows\">\n @defer (on viewport; on idle){\n <ng-container\n [ngTemplateOutlet]=\"_listItem ? _listItem : defaultListItem\"\n [ngTemplateOutletContext]=\"{\n $implicit:item,\n item:item,\n columnTemplates: columnTemplates\n }\"\n ></ng-container>\n } @placeholder {\n <div style=\"width: 100%; height: 80px\"></div>\n }\n </ng-template>\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</ng-container>\n\n<ng-template #defaultGridItem let-item>\n <div class=\"col-12 lg:col-6 xl:col-4 flex\">\n <div class=\"data-grid-item card flex flex-column justify-content-between w-12 lg:w-11 mb-4 mt-4 align-self-stretch\">\n <div class=\"flex justify-content-center mb-3\">\n <img\n class=\"image\"\n src=\"{{ item.imagePath || (fallbackImagePath$ | async) }}\"\n (error)=\"imgError(item)\"\n alt=\"{{resolveFieldData(item, titleLineId)|| ''}}\"\n />\n </div>\n <div class=\"flex flex-row justify-content-between align-items-center\">\n <div class=\"data-grid-items flex-row\">\n <div class=\"item-name font-medium mr-3 text-2xl\">\n <ng-container *ngIf=\"hasViewPermission$ | async as hasViewPermission; else noViewPermission\">\n <a [routerLink]=\"\" (click)=\"onViewRow(item)\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-container>\n <ng-template #noViewPermission>\n <a [routerLink]=\"\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-template>\n </div>\n <ng-container\n [ngTemplateOutlet]=\"_gridItemSubtitleLines ? _gridItemSubtitleLines : defaultGridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div *ngIf=\"(gridMenuItems$ | async) as gridMenuItems\">\n <p-menu #menu [model]=\"gridMenuItems\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n (click)=\"setSelectedItem(item); menu.toggle($event)\"\n icon=\"pi pi-ellipsis-v\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n class=\"more-actions-menu-button menu-btn\"\n [attr.name]=\"'data-grid-item-menu-button'\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n ></button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultGridItemSubtitleLines let-item>\n <div *ngFor=\"let subtitleLineId of subtitleLineIds\" class=\"subtitleLine edit-time text-xl my-3\">\n {{ resolveFieldData(item, subtitleLineId) }}\n </div>\n</ng-template>\n<ng-template #defaultListItem let-item=\"item\" let-columnTemplates=\"columnTemplates\">\n <div class=\"col-12\" *ngIf=\"columnTemplates\">\n <div class=\"data-list-items p-3\">\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 <span *ngIf=\"titleLineId\">{{ resolveFieldData(item, titleLineId) || '' }}</span>\n </div>\n <div class=\"flex flex-row\">\n <ng-container\n *ngIf=\"viewItemObserved && (!viewActionVisibleField || fieldIsTruthy(item, viewActionVisibleField))\"\n >\n <button\n id=\"{{resolveFieldData(item, 'id')}}-viewButton\"\n type=\"button\"\n icon=\"pi pi-eye\"\n pButton\n class=\"p-button-rounded p-button-text mb-1 mr-2 viewListItemButton\"\n [pTooltip]=\"(viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n tooltipPosition=\"top\"\n [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 </ng-container>\n <ng-container\n *ngIf=\"editItemObserved && (!editActionVisibleField || fieldIsTruthy(item, editActionVisibleField))\"\n >\n <button\n id=\"{{resolveFieldData(item, 'id')}}-editButton\"\n type=\"button\"\n class=\"p-button-rounded p-button-text mb-1 mr-2 editListItemButton\"\n icon=\"pi pi-pencil\"\n pButton\n [pTooltip]=\"(editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n tooltipPosition=\"top\"\n [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 </ng-container>\n <ng-container\n *ngIf=\"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 [pTooltip]=\"(deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n tooltipPosition=\"top\"\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 </ng-container>\n <ng-container *ngFor=\"let action of inlineListActions$ | async\">\n <ng-container *ngIf=\"(!action.actionVisibleField || fieldIsTruthy(item, action.actionVisibleField))\">\n <button\n id=\"{{resolveFieldData(item, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(item)\"\n [pTooltip]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n tooltipPosition=\"top\"\n [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 </ng-container>\n </ng-container>\n <ng-container *ngIf=\"hasVisibleOverflowMenuItems(item) | async\">\n <p-menu #menu [model]=\"(overflowListMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n class=\"p-button-rounded p-button-text\"\n [icon]=\"'pi pi-ellipsis-v'\"\n (click)=\"toggleOverflowMenu($event, menu, item)\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n [attr.name]=\"'data-list-overflow-item-menu-button'\"\n ></button>\n </ng-container>\n </div>\n </div>\n <div class=\"text-base font-light my-1\">\n <ng-container\n [ngTemplateOutlet]=\"_listItemSubtitleLines ? _listItemSubtitleLines : defaultListItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div class=\"flex flex-wrap\">\n <div *ngFor=\"let col of getFilteredColumns()\" class=\"w-12rem my-2 mr-2\">\n <div class=\"font-bold\" [ocxTooltipOnOverflow]=\"col.nameKey | translate\" tooltipPosition=\"top\">\n {{ col.nameKey | translate }}\n </div>\n <div\n [ocxTooltipOnOverflow]=\"col.columnType === columnType.TRANSLATION_KEY ? (resolveFieldData(item,col.id) | translate) : resolveFieldData(item, col.id)\"\n tooltipPosition=\"top\"\n >\n @defer(on viewport;){\n <ng-container\n [ngTemplateOutlet]=\"_listValue ? _listValue: defaultListValue\"\n [ngTemplateOutletContext]=\"{\n rowObject: item,\n column: col,\n columnTemplates: columnTemplates\n }\"\n >\n </ng-container>\n } @placeholder {\n <p-skeleton width=\"5rem\" />\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultListItemSubtitleLines let-item=\"$implicit\">\n <div *ngFor=\"let subtitleLineId of subtitleLineIds\" class=\"subtitleLine text-xl my-3\">\n {{ resolveFieldData(item, subtitleLineId) }}\n </div>\n</ng-template>\n\n<ng-template #defaultListValue let-rowObject=\"rowObject\" let-column=\"column\" let-columnTemplates=\"columnTemplates\">\n <ng-container\n *ngIf=\"columnTemplates[column.id]\"\n [ngTemplateOutlet]=\"columnTemplates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column\n }\"\n >\n </ng-container>\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=\"defaultCustomListValue\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataColumnNameId } from '../../model/data-column-name-id.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { DropdownChangeEvent } from 'primeng/dropdown'\n\nexport type ListGridSort = { sortColumn: string; sortDirection: DataSortDirection }\nexport interface DataListGridSortingComponentState {\n sorting?: ListGridSort\n}\n\n@Component({\n selector: 'ocx-data-list-grid-sorting',\n templateUrl: './data-list-grid-sorting.component.html',\n styleUrls: ['./data-list-grid-sorting.component.scss'],\n})\nexport class DataListGridSortingComponent implements OnInit {\n @Input() columns: DataTableColumn[] = []\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Output() sortChange: EventEmitter<string> = new EventEmitter()\n @Output() sortDirectionChange: EventEmitter<DataSortDirection> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataListGridSortingComponentState> = new EventEmitter()\n @Output() columnsChange: EventEmitter<string[]> = new EventEmitter()\n selectedSortingOption: DataColumnNameId | undefined\n dropdownOptions: DataColumnNameId[] = []\n\n ngOnInit(): void {\n this.columns.forEach((element) => this.dropdownOptions.push({ columnId: element.id, columnName: element.nameKey }))\n this.selectedSortingOption = this.dropdownOptions.find((e) => e.columnId === this?.sortField)\n this.emitComponentStateChange()\n }\n\n selectSorting(event: DropdownChangeEvent): void {\n this._sortField$.next(event.value.columnId)\n this.sortChange.emit(event.value.columnId)\n this.emitComponentStateChange()\n }\n sortDirectionChanged(): void {\n const newSortDirection = this.nextSortDirection()\n this._sortDirection$.next(newSortDirection)\n this.sortDirectionChange.emit(newSortDirection)\n this.emitComponentStateChange()\n }\n\n nextSortDirection() {\n return this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n emitComponentStateChange() {\n this.componentStateChanged.emit({\n sorting: {\n sortColumn: this.sortField,\n sortDirection: this.sortDirection,\n },\n })\n }\n\n sortIcon() {\n switch (this.sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'pi-sort-amount-up'\n case DataSortDirection.DESCENDING:\n return 'pi-sort-amount-down'\n default:\n return 'pi-sort-alt'\n }\n }\n\n sortIconTitle() {\n return this.sortDirectionToTitle(this.sortDirection)\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.ASCENDING_TOOLTIP'\n case DataSortDirection.DESCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DESCENDING_TOOLTIP'\n default:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DEFAULT_TOOLTIP'\n }\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n <p-dropdown\n id=\"dataListGridSortingDropdown\"\n [(ngModel)]=\"selectedSortingOption\"\n class=\"sort-dropdown\"\n [options]=\"dropdownOptions\"\n [placeholder]=\"('OCX_LIST_GRID_SORT.DROPDOWN.PLACEHOLDER' | translate)\"\n (onChange)=\"selectSorting($event)\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.DROPDOWN.ARIA_LABEL' | translate)\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item?.columnName ? (item.columnName | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\">\n {{ item?.columnName ? (item.columnName | translate) : ''}}\n </ng-template></p-dropdown\n >\n <p-button\n id=\"dataListGridSortingButton\"\n type=\"button\"\n icon=\"pi {{sortIcon()}}\"\n styleClass=\"p-button-outlined\"\n (onClick)=\"sortDirectionChanged()\"\n [pTooltip]=\"(sortIconTitle() | translate)\"\n tooltipPosition=\"top\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.SORTING_BUTTON_ARIA_LABEL' | translate:{direction: (sortDirectionToTitle(nextSortDirection())) | translate})\"\n ></p-button>\n</div>\n","import { PrimeTemplate } from 'primeng/api'\n\nexport function findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n}\n","import { formatDate } from '@angular/common'\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Inject,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { isValidDate } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { MenuItem, PrimeTemplate, SelectItem } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { MultiSelectItem } from 'primeng/multiselect'\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n debounceTime,\n filter,\n first,\n map,\n mergeMap,\n of,\n switchMap,\n withLatestFrom,\n} from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { findTemplate } from '../../utils/template.utils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\n\nexport type Primitive = number | string | boolean | bigint | Date\nexport type Row = {\n id: string | number\n [columnId: string]: unknown\n}\n\nexport enum TemplateType {\n CELL = 'CELL',\n FILTERCELL = 'FILTERCELL',\n}\n\ninterface TemplatesData {\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>>\n idSuffix: Array<string>\n templateNames: Record<ColumnType, Array<string>>\n}\n\nexport type Sort = { sortColumn: string; sortDirection: DataSortDirection }\n\nexport interface DataTableComponentState {\n filters?: Filter[]\n sorting?: Sort\n selectedRows?: Row[]\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n selector: 'ocx-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent extends DataSortBase implements OnInit, AfterContentInit {\n FilterType = FilterType\n TemplateType = TemplateType\n checked = true\n _rows$ = new BehaviorSubject<Row[]>([])\n @Input()\n get rows(): Row[] {\n return this._rows$.getValue()\n }\n set rows(value: Row[]) {\n !this._rows$.getValue().length ?? this.resetPage()\n this._rows$.next(value)\n }\n _selectionIds$ = new BehaviorSubject<(string | number)[]>([])\n @Input()\n set selectedRows(value: Row[] | string[] | number[]) {\n this._selectionIds$.next(\n value.map((row) => {\n if (typeof row === 'object') {\n return row.id\n }\n return row\n })\n )\n }\n\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n !this._filters$.getValue().length ?? this.resetPage()\n this._filters$.next(value)\n }\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortColumn$ = new BehaviorSubject<string>('')\n @Input()\n get sortColumn(): string {\n return this?._sortColumn$.getValue()\n }\n set sortColumn(value: string) {\n this?._sortColumn$.next(value)\n }\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columnFilterTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c, TemplateType.CELL))\n const filterObs = value.map((c) => this.getTemplate(c, TemplateType.FILTERCELL))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n this.columnFilterTemplates$ = combineLatest(filterObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n }\n @Input() clientSideFiltering = true\n @Input() clientSideSorting = true\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n\n displayedPageSizes$: Observable<(number | { showAll: string })[]>\n _pageSizes$ = new BehaviorSubject<(number | { showAll: string })[]>([10, 25, 50])\n @Input()\n get pageSizes(): (number | { showAll: string })[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: (number | { showAll: string })[]) {\n this._pageSizes$.next(value)\n }\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n _showAllOption$ = new BehaviorSubject<boolean>(false)\n @Input()\n set showAllOption(value: boolean) {\n this._showAllOption$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() name = ''\n @Input() deletePermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() selectionEnabledField: string | undefined\n @Input() allowSelectAll = true\n @Input() paginator = true\n @Input() page = 0\n @Input() tableStyle: { [klass: string]: any } | undefined\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n @Input() stringCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringCell') stringCellChildTemplate: TemplateRef<any> | undefined\n get _stringCell(): TemplateRef<any> | undefined {\n return this.stringCellTemplate || this.stringCellChildTemplate\n }\n\n @Input() numberCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberCell') numberCellChildTemplate: TemplateRef<any> | undefined\n get _numberCell(): TemplateRef<any> | undefined {\n return this.numberCellTemplate || this.numberCellChildTemplate\n }\n\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdCell\"\n */\n @Input() customCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdCell\"\n */\n @ContentChild('customCell') customCellChildTemplate: TemplateRef<any> | undefined\n get _customCell(): TemplateRef<any> | undefined {\n return this.customCellTemplate || this.customCellChildTemplate\n }\n\n @Input() dateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateCell') dateCellChildTemplate: TemplateRef<any> | undefined\n get _dateCell(): TemplateRef<any> | undefined {\n return this.dateCellTemplate || this.dateCellChildTemplate\n }\n\n @Input() relativeDateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateCell') relativeDateCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateCell(): TemplateRef<any> | undefined {\n return this.relativeDateCellTemplate || this.relativeDateCellChildTemplate\n }\n\n @Input() cellTemplate: TemplateRef<any> | undefined\n @ContentChild('cell') cellChildTemplate: TemplateRef<any> | undefined\n get _cell(): TemplateRef<any> | undefined {\n return this.cellTemplate || this.cellChildTemplate\n }\n @Input() translationKeyCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyCell') translationKeyCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyCell(): TemplateRef<any> | undefined {\n return this.translationKeyCellTemplate || this.translationKeyCellChildTemplate\n }\n @Input() stringFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringFilterCell') stringFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringFilterCell(): TemplateRef<any> | undefined {\n return this.stringFilterCellTemplate || this.stringFilterCellChildTemplate\n }\n @Input() numberFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberFilterCell') numberFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberFilterCell(): TemplateRef<any> | undefined {\n return this.numberFilterCellTemplate || this.numberFilterCellChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdFilterCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdFilterCell\"\n */\n @Input() customFilterCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdFilterCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdFilterCell\"\n */\n @ContentChild('customFilterCell') customFilterCellChildTemplate: TemplateRef<any> | undefined\n get _customFilterCell(): TemplateRef<any> | undefined {\n return this.customFilterCellTemplate || this.customFilterCellChildTemplate\n }\n @Input() dateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateFilterCell(): TemplateRef<any> | undefined {\n return this.dateFilterCellTemplate || this.dateFilterCellChildTemplate\n }\n @Input() relativeDateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateFilterCell') relativeDateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateFilterCellTemplate || this.relativeDateFilterCellChildTemplate\n }\n @Input() filterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('filterCell') filterCellChildTemplate: TemplateRef<any> | undefined\n get _filterCell(): TemplateRef<any> | undefined {\n return this.filterCellTemplate || this.filterCellChildTemplate\n }\n @Input() translationKeyFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyFilterCell') translationKeyFilterCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyFilterCellTemplate || this.translationKeyFilterCellChildTemplate\n }\n\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() viewTableRow = new EventEmitter<Row>()\n @Output() editTableRow = new EventEmitter<Row>()\n @Output() deleteTableRow = new EventEmitter<Row>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataTableComponentState>()\n\n displayedRows$: Observable<unknown[]> | undefined\n selectedRows$: Observable<unknown[]> | undefined\n\n currentFilterColumn$ = new BehaviorSubject<DataTableColumn | null>(null)\n currentEqualFilterOptions$: Observable<{ options: SelectItem[]; column: DataTableColumn | undefined }> | undefined\n currentEqualSelectedFilters$: Observable<unknown[]> | undefined\n truthyFilterOptions = [\n {\n key: 'OCX_DATA_TABLE.FILTER_YES',\n value: true,\n },\n {\n key: 'OCX_DATA_TABLE.FILTER_NO',\n value: false,\n },\n ]\n currentTruthySelectedFilters$: Observable<unknown[]> | undefined\n filterAmounts$: Observable<Record<string, number>> | undefined\n\n overflowActions$: Observable<DataAction[]>\n inlineActions$: Observable<DataAction[]>\n overflowMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n get viewTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewTableRow.observed\n }\n get editTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editTableRow.observed\n }\n get deleteTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteTableRow.observed\n }\n get anyRowActionObserved(): boolean {\n return this.viewTableRowObserved || this.editTableRowObserved || this.deleteTableRowObserved\n }\n\n get selectionChangedObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.selectionChangedObserved || dv?.selectionChanged.observed || this.selectionChanged.observed\n }\n\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n constructor(\n @Inject(LOCALE_ID) locale: string,\n translateService: TranslateService,\n private router: Router,\n private injector: Injector,\n private userService: UserService,\n @Inject(HAS_PERMISSION_CHECKER) @Optional() private hasPermissionChecker?: HasPermissionChecker\n ) {\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.displayedPageSizes$ = combineLatest([\n this._pageSizes$,\n this.translateService.get('OCX_DATA_TABLE.ALL'),\n this._showAllOption$,\n ]).pipe(\n map(([pageSizes, translation, showAllOption]) =>\n showAllOption ? pageSizes.concat({ showAll: translation }) : pageSizes\n )\n )\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.overflowActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.inlineActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowMenuItems$ = combineLatest([this.overflowActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n this.rowSelectable = this.rowSelectable.bind(this)\n }\n\n ngOnInit(): void {\n this.displayedRows$ = combineLatest([this._rows$, this._filters$, this._sortColumn$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([rows]) => this.flattenItems(rows))\n )\n this.currentTruthySelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id && currentFilterColumn.filterType === FilterType.TRUTHY\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualSelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUAL)\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualFilterOptions$ = combineLatest([this._rows$, this.currentFilterColumn$, this._filters$]).pipe(\n filter(\n ([_, currentFilterColumn, __]) =>\n !currentFilterColumn?.filterType || currentFilterColumn.filterType === FilterType.EQUAL\n ),\n mergeMap(([rows, currentFilterColumn, filters]) => {\n if (!currentFilterColumn?.id) {\n return of({ options: [], column: undefined })\n }\n\n const currentFilters = filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUAL)\n )\n .map((filter) => filter.value)\n\n const columnValues = rows\n .map((row) => row[currentFilterColumn?.id])\n .filter((value) => value !== null && value !== undefined && value !== '')\n\n if (currentFilterColumn.columnType === ColumnType.DATE) {\n return of({\n options: columnValues.map(\n (c) =>\n ({\n label: c,\n value: c,\n toFilterBy: formatDate(`${c}`, currentFilterColumn.dateFormat ?? 'medium', this.locale),\n }) as SelectItem\n ),\n column: currentFilterColumn,\n })\n }\n\n const translateObservable =\n this.columns.find((c) => c.id === currentFilterColumn?.id)?.columnType === ColumnType.TRANSLATION_KEY\n ? this.translateColumnValues(columnValues as string[])\n : of(Object.fromEntries(columnValues.map((cv) => [cv, cv])))\n return translateObservable.pipe(\n map((translatedValues) => {\n return Object.values(translatedValues)\n .concat(currentFilters)\n .filter((value, index, self) => self.indexOf(value) === index && value !== null && value !== '')\n .map(\n (filterOption) =>\n ({\n label: filterOption,\n value: filterOption,\n toFilterBy: filterOption,\n }) as SelectItem\n )\n }),\n map((options) => {\n return {\n options: options,\n column: currentFilterColumn,\n }\n })\n )\n })\n )\n this.filterAmounts$ = this._filters$.pipe(\n map((filters) =>\n filters\n .map((filter) => filter.columnId)\n .map((columnId) => [columnId, filters.filter((filter) => filter.columnId === columnId).length])\n ),\n map((amounts) => Object.fromEntries(amounts))\n )\n this.mapSelectionToRows()\n this.emitComponentStateChanged()\n }\n\n translateColumnValues(columnValues: string[]): Observable<any> {\n return columnValues.length ? this.translateService.get(columnValues as string[]) : of({})\n }\n\n emitComponentStateChanged(state: DataTableComponentState = {}) {\n this.displayedPageSize$\n .pipe(withLatestFrom(this._selectionIds$, this._rows$), first())\n .subscribe(([pageSize, selectedIds, rows]) => {\n this.componentStateChanged.emit({\n filters: this.filters,\n sorting: {\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n },\n pageSize,\n activePage: this.page,\n selectedRows: rows.filter((row) => selectedIds.includes(row.id)),\n ...state,\n })\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringCell':\n this.stringCellChildTemplate = item.template\n break\n case 'numberCell':\n this.numberCellChildTemplate = item.template\n break\n case 'customCell':\n this.customCellChildTemplate = item.template\n break\n case 'dateCell':\n this.dateCellChildTemplate = item.template\n break\n case 'relativeDateCell':\n this.relativeDateCellChildTemplate = item.template\n break\n case 'cellTemplate':\n this.cellChildTemplate = item.template\n break\n case 'translationKeyCell':\n this.translationKeyCellChildTemplate = item.template\n break\n case 'stringFilterCell':\n this.stringFilterCellChildTemplate = item.template\n break\n case 'numberFilterCell':\n this.numberFilterCellChildTemplate = item.template\n break\n case 'customFilterCell':\n this.customFilterCellChildTemplate = item.template\n break\n case 'dateFilterCell':\n this.dateFilterCellChildTemplate = item.template\n break\n case 'relativeDateFilterCell':\n this.relativeDateFilterCellChildTemplate = item.template\n break\n case 'filterCellTemplate':\n this.filterCellChildTemplate = item.template\n break\n case 'translationKeyFilterCell':\n this.translationKeyFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n onSortColumnClick(sortColumn: string) {\n const newSortDirection = this.columnNextSortDirection(sortColumn)\n\n this._sortColumn$.next(sortColumn)\n this._sortDirection$.next(newSortDirection)\n\n this.sorted.emit({ sortColumn: sortColumn, sortDirection: newSortDirection })\n this.emitComponentStateChanged({\n sorting: {\n sortColumn: sortColumn,\n sortDirection: newSortDirection,\n },\n })\n }\n\n columnNextSortDirection(sortColumn: string) {\n return sortColumn !== this.sortColumn\n ? this.sortStates[0]\n : this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n onDeleteRow(selectedTableRow: Row) {\n this.deleteTableRow.emit(selectedTableRow)\n }\n\n onViewRow(selectedTableRow: Row) {\n this.viewTableRow.emit(selectedTableRow)\n }\n\n onEditRow(selectedTableRow: Row) {\n this.editTableRow.emit(selectedTableRow)\n }\n\n onFilterChosen(column: DataTableColumn) {\n this.currentFilterColumn$.next(column)\n }\n\n onMultiselectFilterChange(column: DataTableColumn, event: any) {\n const filters = this.filters\n .filter((filter) => filter.columnId !== column.id)\n .concat(\n event.value.map((value: Primitive) => ({\n columnId: column.id,\n value,\n filterType: column.filterType,\n }))\n )\n if (this.clientSideFiltering) {\n this.filters = filters\n }\n this.filtered.emit(filters)\n this.emitComponentStateChanged({\n filters,\n })\n this.resetPage()\n }\n\n getSelectedFilters(columnId: string): unknown[] | undefined {\n return this.filters.filter((filter) => filter.columnId === columnId).map((filter) => filter.value)\n }\n\n sortIconTitle(sortColumn: string) {\n return this.sortDirectionToTitle(\n sortColumn !== this.sortDirection\n ? DataSortDirection.NONE\n : this.sortStates[this.sortStates.indexOf(this.sortDirection) % this.sortStates.length]\n )\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.ASCENDING_TITLE'\n case DataSortDirection.DESCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DESCENDING_TITLE'\n default:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DEFAULT_TITLE'\n }\n }\n\n mapSelectionToRows() {\n this.selectedRows$ = combineLatest([this._selectionIds$, this._rows$]).pipe(\n map(([selectedRowIds, rows]) => {\n return selectedRowIds.map((rowId) => {\n return rows.find((r) => r.id === rowId)\n })\n })\n )\n }\n\n isRowSelectionDisabled(rowObject: Row) {\n return !!this.selectionEnabledField && !this.fieldIsTruthy(rowObject, this.selectionEnabledField)\n }\n\n rowSelectable(event: any) {\n return !this.isRowSelectionDisabled(event.data)\n }\n\n onSelectionChange(selection: Row[]) {\n let newSelectionIds = selection.map((row) => row.id)\n const rows = this._rows$.getValue()\n\n if (this.selectionEnabledField) {\n const disabledRowIds = rows.filter((r) => !this.fieldIsTruthy(r, this.selectionEnabledField)).map((row) => row.id)\n if (disabledRowIds.length > 0) {\n newSelectionIds = this.mergeWithDisabledKeys(newSelectionIds, disabledRowIds)\n }\n }\n\n this._selectionIds$.next(newSelectionIds)\n this.selectionChanged.emit(this._rows$.getValue().filter((row) => newSelectionIds.includes(row.id)))\n this.emitComponentStateChanged()\n }\n\n mergeWithDisabledKeys(newSelectionIds: (string | number)[], disabledRowIds: (string | number)[]) {\n const previousSelectionIds = this._selectionIds$.getValue()\n const previouslySelectedAndDisabled = previousSelectionIds.filter((id) => disabledRowIds.includes(id))\n const disabledAndPreviouslyDeselected = disabledRowIds.filter((id) => !previousSelectionIds.includes(id))\n const updatedSelection = [...newSelectionIds]\n\n previouslySelectedAndDisabled.forEach((id) => {\n if (!updatedSelection.includes(id)) {\n updatedSelection.push(id)\n }\n })\n\n disabledAndPreviouslyDeselected.forEach((id) => {\n const index = updatedSelection.indexOf(id)\n if (index > -1) {\n updatedSelection.splice(index, 1)\n }\n })\n\n return updatedSelection\n }\n\n isSelected(row: Row) {\n return this._selectionIds$.getValue().includes(row.id)\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!ObjectUtils.resolveFieldData(object, key)\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n isDate(value: Date | string | number) {\n if (value instanceof Date) {\n return true\n }\n const d = new Date(value)\n return isValidDate(d)\n }\n\n cellTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: ['numberCell', 'numberTableCell', 'defaultNumberCell'],\n [ColumnType.RELATIVE_DATE]: ['relativeDateCell', 'relativeDateTableCell', 'defaultRelativeDateCell'],\n [ColumnType.TRANSLATION_KEY]: ['translationKeyCell', 'translationKeyTableCell', 'defaultTranslationKeyCell'],\n [ColumnType.CUSTOM]: ['customCell', 'customTableCell', 'defaultCustomCell'],\n [ColumnType.STRING]: ['stringCell', 'stringTableCell', 'defaultStringCell'],\n },\n }\n\n filterTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableFilterCell', 'IdFilterCell', 'IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateFilterCell', 'dateTableFilterCell', 'dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: [\n 'numberFilterCell',\n 'numberTableFilterCell',\n 'numberCell',\n 'numberTableCell',\n 'defaultNumberCell',\n ],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterCell',\n 'relativeDateTableFilterCell',\n 'relativeDateCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateCell',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterCell',\n 'translationKeyTableFilterCell',\n 'defaultTranslationKeyCell',\n 'translationKeyCell',\n 'translationKeyTableCell',\n ],\n [ColumnType.CUSTOM]: [\n 'customFilterCell',\n 'customTableFilterCell',\n 'customCell',\n 'customTableCell',\n 'defaultCustomCell',\n ],\n [ColumnType.STRING]: [\n 'stringFilterCell',\n 'stringTableFilterCell',\n 'stringCell',\n 'stringTableCell',\n 'defaultStringCell',\n ],\n },\n }\n\n templatesDataMap: Record<TemplateType, TemplatesData> = {\n [TemplateType.CELL]: this.cellTemplatesData,\n [TemplateType.FILTERCELL]: this.filterTemplatesData,\n }\n\n getColumnTypeTemplate(templates: PrimeTemplate[], columnType: ColumnType, templateType: TemplateType) {\n let template: TemplateRef<any> | undefined\n\n switch (templateType) {\n case TemplateType.CELL:\n switch (columnType) {\n case ColumnType.DATE:\n template = this._dateCell\n break\n case ColumnType.NUMBER:\n template = this._numberCell\n break\n case ColumnType.RELATIVE_DATE:\n template = this._relativeDateCell\n break\n case ColumnType.TRANSLATION_KEY:\n template = this._translationKeyCell\n break\n case ColumnType.CUSTOM:\n template = this._customCell\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 case ColumnType.CUSTOM:\n template = this._customFilterCell\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) {\n return {\n [column.id]: value.label,\n }\n }\n\n rowTrackByFunction = (item: any) => {\n return item.id\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[]): Observable<DataAction[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n}\n","<ng-template #actionColumn let-rowObject=\"localRowObject\">\n <ng-container\n *ngIf=\"anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0\"\n >\n <td\n class=\"actions\"\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-left' : 'action-column-right'\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n >\n <div class=\"icon-button-row-wrapper\">\n <ng-container\n *ngIf=\"viewTableRowObserved && (!viewActionVisibleField || fieldIsTruthy(rowObject, viewActionVisibleField))\"\n >\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 </ng-container>\n <ng-container\n *ngIf=\"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 </ng-container>\n <ng-container\n *ngIf=\"deleteTableRowObserved && (!deleteActionVisibleField || fieldIsTruthy(rowObject, deleteActionVisibleField))\"\n >\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 </ng-container>\n <ng-container *ngFor=\"let action of inlineActions$ | async\">\n <ng-container *ngIf=\"(!action.actionVisibleField || fieldIsTruthy(rowObject, action.actionVisibleField))\">\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(rowObject)\"\n [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField))\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n </td>\n </ng-container>\n</ng-template>\n\n<ng-template #actionColumnHeader>\n <ng-container\n *ngIf=\"anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0\"\n >\n <th\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-header-left' : 'action-column-header-right'\"\n >\n {{ 'OCX_DATA_TABLE.ACTIONS_COLUMN_NAME' | translate }}\n </th>\n </ng-container>\n</ng-template>\n\n<ng-container *ngIf=\"(displayedPageSize$ | async) as displayedPageSize\">\n <p-table\n *ngIf=\"(columnTemplates$ | async) ?? {} as columnTemplates\"\n [value]=\"(displayedRows$ | async) ?? []\"\n responsiveLayout=\"scroll\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"(displayedPageSizes$ | async) ?? []\"\n id=\"dataTable_{{name}}\"\n (selectionChange)=\"onSelectionChange($event)\"\n [selection]=\"(selectedRows$ | async) ?? []\"\n dataKey=\"id\"\n [rowTrackBy]=\"rowTrackByFunction\"\n [scrollable]=\"true\"\n scrollHeight=\"flex\"\n [style]=\"tableStyle\"\n paginatorDropdownAppendTo=\"body\"\n [rowSelectable]=\"rowSelectable\"\n tableStyleClass=\"h-full\"\n >\n <ng-template pTemplate=\"header\">\n <tr style=\"vertical-align: top\">\n <th style=\"width: 4rem\" scope=\"col\" *ngIf=\"selectionChangedObserved\">\n <p-tableHeaderCheckbox\n *ngIf=\"allowSelectAll\"\n pTooltip=\"{{'OCX_DATA_TABLE.SELECT_ALL_TOOLTIP' | translate}}\"\n ariaLabel=\"{{'OCX_DATA_TABLE.SELECT_ALL_ARIA_LABEL' | translate}}\"\n ></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"actionColumnPosition === 'left';\">\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n </ng-container>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"column.sortable || column.filterable; else simpleHeader\" 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 <button\n *ngIf=\"column.sortable\"\n class=\"pi sortButton pl-0\"\n [class.pi-sort-alt]=\"(column?.id === sortColumn && sortDirection === 'NONE') || column?.id !== sortColumn\"\n [class.pi-sort-amount-up]=\"column?.id === sortColumn && sortDirection === 'ASCENDING'\"\n [class.pi-sort-amount-down]=\"column?.id === sortColumn && sortDirection === 'DESCENDING'\"\n (click)=\"onSortColumnClick(column.id)\"\n [title]=\"(sortIconTitle(column.id) | translate)\"\n [attr.aria-label]=\"('OCX_DATA_TABLE.TOGGLE_BUTTON.ARIA_LABEL' | translate: { column: (column.nameKey | translate), direction: (sortDirectionToTitle(columnNextSortDirection(column.id)) | translate)})\"\n ></button>\n <ng-container *ngIf=\"currentEqualFilterOptions$ | async as equalFilterOptions\">\n <ng-container *ngIf=\"columnFilterTemplates$ | async as columnFilterTemplates\">\n <p-multiSelect\n class=\"filterMultiSelect\"\n *ngIf=\"column.filterable && (!column.filterType || column.filterType === FilterType.EQUAL)\"\n [options]=\"equalFilterOptions.column?.id === column.id ? equalFilterOptions.options : []\"\n [ngModel]=\"(currentEqualSelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\"Icon\"\n appendTo=\"body\"\n filterBy=\"toFilterBy\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template pTemplate=\"selectedItems\" let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template pTemplate=\"item\" let-value>\n <ng-container\n *ngIf=\"columnFilterTemplates[column.id] as template\"\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromMultiselectItem(value, column),\n column: column\n }\"\n >\n </ng-container>\n </ng-template>\n </p-multiSelect>\n </ng-container>\n </ng-container>\n <p-multiSelect\n class=\"filterMultiSelect\"\n *ngIf=\"column.filterable && column.filterType === FilterType.TRUTHY\"\n [options]=\"truthyFilterOptions\"\n [ngModel]=\"(currentTruthySelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\"Icon\"\n appendTo=\"body\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template pTemplate=\"selectedItems\" let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template pTemplate=\"item\" let-value> {{value.key | translate}} </ng-template>\n </p-multiSelect>\n </span>\n </div>\n </th>\n <ng-template #simpleHeader>\n <th scope=\"col\">{{ column.nameKey | translate }}</th>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"actionColumnPosition === 'right';\">\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowObject>\n <tr *ngIf=\"columnTemplates\">\n <td *ngIf=\"selectionChangedObserved\">\n <p-checkbox\n *ngIf=\"isRowSelectionDisabled(rowObject) && isSelected(rowObject); else defaultCheckbox\"\n [(ngModel)]=\"checked\"\n [binary]=\"true\"\n [disabled]=\"true\"\n [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate: { key: rowObject.id}\"\n ></p-checkbox>\n <ng-template #defaultCheckbox>\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 </ng-template>\n </td>\n <ng-container *ngIf=\"actionColumnPosition === 'left';\">\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n </ng-container>\n <td *ngFor=\"let column of columns\">\n @defer(on viewport){\n <ng-container\n *ngIf=\"columnTemplates[column.id]\"\n [ngTemplateOutlet]=\"\n _cell ? _cell: columnTemplates[column.id]\n \"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n } @placeholder {\n <p-skeleton width=\"3rem\" />\n }\n </td>\n <ng-container *ngIf=\"actionColumnPosition === 'right';\">\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <!-- If allowSelectAll is set to true, an additional column for checkbox selection is added and\n the colSpan needs to be increased by one so that the row is rendered the whole width of the table. -->\n <td\n [colSpan]=\"columns.length + ((anyRowActionObserved || this.additionalActions.length > 0) ? 1 : 0) +\n (allowSelectAll ? 1 : 0)\"\n >\n {{ emptyResultsMessage || (\"OCX_DATA_TABLE.EMPTY_RESULT\" | translate) }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</ng-container>\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=\"defaultCustomCell\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Timestamp } from 'rxjs'\n\nexport function orderValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n return valuesWithTimestamp.sort((a, b) => b.timestamp - a.timestamp).map((obj) => obj.value)\n}\n\nfunction mergeValues(values: any[]) {\n return values.reduce((acc, curr) => {\n return { ...acc, ...curr }\n })\n}\n\nexport function orderAndMergeValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n const sortedValues = valuesWithTimestamp.sort((a, b) => a.timestamp - b.timestamp).map((obj) => obj.value)\n return mergeValues(sortedValues)\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport {\n DataListGridComponent,\n DataListGridComponentState,\n ListGridData,\n} from '../data-list-grid/data-list-grid.component'\nimport { Row, Sort, DataTableComponent, DataTableComponentState } from '../data-table/data-table.component'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataAction } from '../../model/data-action'\nimport { BehaviorSubject, ReplaySubject, timestamp, combineLatest, map, Observable, startWith } from 'rxjs'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport { PrimeTemplate } from 'primeng/api'\nimport { Filter } from '../../model/filter.model'\n\nexport type RowListGridData = ListGridData & Row\n\nexport type DataViewComponentState = DataListGridComponentState & DataTableComponentState\n\n@Component({\n selector: 'ocx-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }],\n})\nexport class DataViewComponent implements DoCheck, OnInit, AfterContentInit {\n _dataListGridComponent: DataListGridComponent | undefined\n @ViewChild(DataListGridComponent) set listGrid(ref: DataListGridComponent | undefined) {\n this._dataListGridComponent = ref\n this.registerEventListenerForListGrid()\n }\n get listGrid(): DataListGridComponent | undefined {\n return this._dataListGridComponent\n }\n\n _dataTableComponent: DataTableComponent | undefined\n @ViewChild(DataTableComponent) set dataTable(ref: DataTableComponent | undefined) {\n this._dataTableComponent = ref\n this.registerEventListenerForDataTable()\n }\n get dataTable(): DataTableComponent | undefined {\n return this._dataTableComponent\n }\n\n dataTableComponentState$ = new ReplaySubject<DataTableComponentState>(1)\n dataListGridComponentState$ = new ReplaySubject<DataListGridComponentState>(1)\n\n @Input() deletePermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() data: RowListGridData[] = []\n @Input() name = 'Data table'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() layout: any = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortField: any = ''\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() page = 0\n @Input() totalRecordsOnServer: number | undefined\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() selectedRows: Row[] = []\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n @Input() showAllOption = false\n\n @Input() stringTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableCell') stringTableCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCellTemplate || this.stringTableCellChildTemplate\n }\n\n @Input() numberTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCellTemplate || this.numberTableCellChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n @Input() customTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n @ContentChild('customTableCell') customTableCellChildTemplate: TemplateRef<any> | undefined\n get _customTableCell(): TemplateRef<any> | undefined {\n return this.customTableCellTemplate || this.customTableCellChildTemplate\n }\n\n @Input() dateTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by dateTableCellTemplate\n */\n @Input()\n get tableDateCellTemplate(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate\n }\n set tableDateCellTemplate(value: TemplateRef<any> | undefined) {\n this.dateTableCellTemplate = value\n }\n /**\n * @deprecated Will be replaced by dateTableCellChildTemplate\n */\n @ContentChild('tableDateCell') tableDateCellChildTemplate: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate || this.dateTableCellChildTemplate || this.tableDateCellChildTemplate\n }\n\n @Input() tableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableCell') tableCellChildTemplate: TemplateRef<any> | undefined\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCellTemplate || this.tableCellChildTemplate\n }\n\n @Input() translationKeyTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by translationKeyTableCellTemplate\n */\n @Input()\n get tableTranslationKeyCellTemplate(): TemplateRef<any> | undefined {\n return this.translationKeyTableCellTemplate\n }\n set tableTranslationKeyCellTemplate(value: TemplateRef<any> | undefined) {\n this.translationKeyTableCellTemplate = value\n }\n /**\n * @deprecated Will be replaced by translationKeyTableCellChildTemplate\n */\n @ContentChild('tableTranslationKeyCell') tableTranslationKeyCellChildTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableCell') translationKeyTableCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return (\n this.translationKeyTableCellTemplate ||\n this.translationKeyTableCellChildTemplate ||\n this.tableTranslationKeyCellChildTemplate\n )\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() relativeDateTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by relativeDateTableCellTemplate\n */\n @Input()\n get tableRelativeDateCellTemplate(): TemplateRef<any> | undefined {\n return this.relativeDateTableCellTemplate\n }\n set tableRelativeDateCellTemplate(value: TemplateRef<any> | undefined) {\n this.relativeDateTableCellTemplate = value\n }\n /**\n * @deprecated Will be replace by relativeDateTableCellChildTemplate\n */\n @ContentChild('tableRelativeDateCell') tableRelativeDateCellChildTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableCell') relativeDateTableCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return (\n this.relativeDateTableCellTemplate ||\n this.relativeDateTableCellChildTemplate ||\n this.tableRelativeDateCellChildTemplate\n )\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' in DataListGrid use pTemplate=\"statusIdListValue\"\n */\n @Input() customListValueTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' DataListGrid use pTemplate=\"statusIdListValue\"\n */\n @ContentChild('customListValue') customListValueChildTemplate: TemplateRef<any> | undefined\n get _customListValue(): TemplateRef<any> | undefined {\n return this.customListValueTemplate || this.customListValueChildTemplate\n }\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n @Input() tableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCellTemplate || this.tableFilterCellChildTemplate\n }\n @Input() dateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCellTemplate || this.dateTableFilterCellChildTemplate\n }\n @Input() relativeDateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCellTemplate || this.relativeDateTableFilterCellChildTemplate\n }\n @Input() translationKeyTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCellChildTemplate:\n | TemplateRef<any>\n | undefined\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCellTemplate || this.translationKeyTableFilterCellChildTemplate\n }\n @Input() stringTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCellTemplate || this.stringTableFilterCellChildTemplate\n }\n @Input() numberTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCellTemplate || this.numberTableFilterCellChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n @Input() customTableFilterCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n @ContentChild('customTableFilterCell') customTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _customTableFilterCell(): TemplateRef<any> | undefined {\n return this.customTableFilterCellTemplate || this.customTableFilterCellChildTemplate\n }\n\n @Input() additionalActions: DataAction[] = []\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataViewComponentState>()\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n IsEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n templatesForChildren$: Observable<QueryList<PrimeTemplate> | undefined> = combineLatest([\n this.templates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, pt]) => {\n const ql = new QueryList<PrimeTemplate>()\n ql.reset([...(t?.toArray() ?? []), ...(pt?.toArray() ?? [])])\n return ql\n })\n )\n\n get viewItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.deleteItem.observed || this.deleteItem.observed\n }\n get selectionChangedObserved(): boolean {\n return (\n this.injector.get('InteractiveDataViewComponent', null)?.selectionChanged.observed ||\n this.selectionChanged.observed\n )\n }\n\n constructor(private injector: Injector) {}\n\n ngOnInit(): void {\n this.firstColumnId = this.columns[0]?.id\n\n let dataTableComponentState$: Observable<DataTableComponentState | Record<string, never>> =\n this.dataTableComponentState$\n let dataListGridComponentState$: Observable<DataListGridComponentState | Record<string, never>> =\n this.dataListGridComponentState$\n if (this.layout === 'table') {\n dataListGridComponentState$ = dataListGridComponentState$.pipe(startWith({}))\n } else {\n dataTableComponentState$ = dataTableComponentState$.pipe(startWith({}))\n }\n\n combineLatest([dataTableComponentState$.pipe(timestamp()), dataListGridComponentState$.pipe(timestamp())])\n .pipe(\n map((componentStates) => {\n return orderAndMergeValuesByTimestamp(componentStates)\n })\n )\n .subscribe((val) => {\n this.componentStateChanged.emit(val)\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringTableCell':\n this.stringTableCellChildTemplate = item.template\n break\n case 'numberTableCell':\n this.numberTableCellChildTemplate = item.template\n break\n case 'customTableCell':\n this.customTableCellChildTemplate = item.template\n break\n case 'tableDateCell':\n this.tableDateCellChildTemplate = item.template\n break\n case 'dateTableCell':\n this.dateTableCellChildTemplate = item.template\n break\n case 'tableCell':\n this.tableCellChildTemplate = item.template\n break\n case 'tableTranslationKeyCell':\n this.tableTranslationKeyCellChildTemplate = item.template\n break\n case 'translationKeyTableCell':\n this.translationKeyTableCellChildTemplate = item.template\n break\n case 'gridItemSubtitleLines':\n this.gridItemSubtitleLinesChildTemplate = item.template\n break\n case 'listItemSubtitleLines':\n this.listItemSubtitleLinesChildTemplate = item.template\n break\n case 'gridItem':\n this.gridItemChildTemplate = item.template\n break\n case 'listItem':\n this.listItemChildTemplate = item.template\n break\n case 'tableRelativeDateCell':\n this.tableRelativeDateCellChildTemplate = item.template\n break\n case 'relativeDateTableCell':\n this.relativeDateTableCellChildTemplate = item.template\n break\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'customListValue':\n this.customListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n case 'tableFilterCell':\n this.tableFilterCellChildTemplate = item.template\n break\n case 'dateTableFilterCell':\n this.dateTableFilterCellChildTemplate = item.template\n break\n case 'relativeDateTableFilterCell':\n this.relativeDateTableFilterCellChildTemplate = item.template\n break\n case 'translationKeyTableFilterCell':\n this.translationKeyTableFilterCellChildTemplate = item.template\n break\n case 'stringTableFilterCell':\n this.stringTableFilterCellChildTemplate = item.template\n break\n case 'numberTableFilterCell':\n this.numberTableFilterCellChildTemplate = item.template\n break\n case 'customTableFilterCell':\n this.customTableFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n ngDoCheck(): void {\n this.registerEventListenerForDataTable()\n this.registerEventListenerForListGrid()\n }\n\n registerEventListenerForListGrid() {\n if (this.layout !== 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataListGridComponent?.deleteItem.observed) {\n this._dataListGridComponent?.deleteItem.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataListGridComponent?.viewItem.observed) {\n this._dataListGridComponent?.viewItem.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataListGridComponent?.editItem.observed) {\n this._dataListGridComponent?.editItem.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n }\n }\n\n registerEventListenerForDataTable() {\n if (this.layout === 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataTableComponent?.deleteTableRow.observed) {\n this._dataTableComponent?.deleteTableRow.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataTableComponent?.viewTableRow.observed) {\n this._dataTableComponent?.viewTableRow.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataTableComponent?.editTableRow.observed) {\n this._dataTableComponent?.editTableRow.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n if (this.selectionChangedObserved) {\n if (!this._dataTableComponent?.selectionChanged.observed) {\n this._dataTableComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n deletingElement(event: any) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(event)\n }\n }\n\n viewingElement(event: any) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(event)\n }\n }\n editingElement(event: any) {\n if (this.IsEditItemObserved) {\n this.editItem.emit(event)\n }\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChangedObserved) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n}\n","<div *ngIf=\"layout !== 'table'\">\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 [showAllOption]=\"showAllOption\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataListGridComponentState$.next($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [customListValueTemplate]=\"_customListValue ? customListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n</div>\n\n<div *ngIf=\"layout === 'table'\">\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 [showAllOption]=\"showAllOption\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataTableComponentState$.next($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [customCellTemplate]=\"_customTableCell ? customCell : undefined\"\n [dateCellTemplate]=\"_dateTableCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_relativeDateTableCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_translationKeyTableCell ? translationKeyCell : undefined\"\n [filterCellTemplate]=\"_tableFilterCell ? filterCell : undefined\"\n [dateFilterCellTemplate]=\"_dateTableFilterCell ? dateFilterCell : undefined\"\n [customFilterCellTemplate]=\"_customTableFilterCell ? customFilterCell : undefined\"\n [numberFilterCellTemplate]=\"_numberTableFilterCell ? numberFilterCell : undefined\"\n [stringFilterCellTemplate]=\"_stringTableFilterCell ? stringFilterCell : undefined\"\n [relativeDateFilterCellTemplate]=\"_relativeDateTableFilterCell ? relativeDateFilterCell : undefined\"\n [translationKeyFilterCellTemplate]=\"_translationKeyTableFilterCell ? translationKeyFilterCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n [allowSelectAll]=\"tableAllowSelectAll\"\n [selectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #customCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableCell\"\n [ngTemplateOutlet]=\"_customTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #stringFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableFilterCell\"\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #filterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableFilterCell\"\n [ngTemplateOutlet]=\"_tableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #dateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableFilterCell\"\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #customFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableFilterCell\"\n [ngTemplateOutlet]=\"_customTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #numberFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableFilterCell\"\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #relativeDateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableFilterCell\"\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #translationKeyFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableFilterCell\"\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n</div>\n","export class ColorUtils {\n public static calculatePoint(\n i: number,\n intervalSize: number,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd, useEndAsStart } = colorRangeInfo\n return useEndAsStart ? colorEnd - i * intervalSize : colorStart + i * intervalSize\n }\n\n public static interpolateColors(\n dataLength: number,\n colorScale: (arg0: any) => any,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd } = colorRangeInfo\n const colorRange = colorEnd - colorStart\n const intervalSize = colorRange / dataLength\n let i, colorPoint\n const colorArray = []\n\n for (i = 0; i < dataLength; i++) {\n colorPoint = this.calculatePoint(i, intervalSize, colorRangeInfo)\n colorArray.push(colorScale(colorPoint))\n }\n\n return colorArray\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { ChartData, ChartOptions } from 'chart.js'\nimport * as d3 from 'd3-scale-chromatic'\nimport { PrimeIcons } from 'primeng/api'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ColorUtils } from '../../utils/colorutils'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\nexport interface DiagramLayouts {\n id: string\n icon: PrimeIcon\n layout: DiagramType\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nexport interface DiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\nconst allDiagramTypes: DiagramLayouts[] = [\n {\n id: 'diagram-pie',\n icon: PrimeIcons.CHART_PIE,\n layout: DiagramType.PIE,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n },\n {\n id: 'diagram-horizontal-bar',\n icon: PrimeIcons.BARS,\n layout: DiagramType.HORIZONTAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n },\n {\n id: 'diagram-vertical-bar',\n icon: PrimeIcons.CHART_BAR,\n layout: DiagramType.VERTICAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n },\n]\n\n@Component({\n selector: 'ocx-diagram',\n templateUrl: './diagram.component.html',\n styleUrls: ['./diagram.component.scss'],\n})\nexport class DiagramComponent implements OnInit, OnChanges {\n @Input() data: DiagramData[] | undefined\n @Input() sumKey = 'OCX_DIAGRAM.SUM'\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n private _diagramType: DiagramType = DiagramType.PIE\n selectedDiagramType: DiagramLayouts | undefined\n public chartType: 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' = 'pie'\n @Input()\n get diagramType(): DiagramType {\n return this._diagramType\n }\n set diagramType(value: DiagramType) {\n this._diagramType = value\n this.selectedDiagramType = allDiagramTypes.find((v) => v.layout === value)\n this.chartType = this.diagramTypeToChartType(value)\n }\n private _supportedDiagramTypes: DiagramType[] = []\n @Input()\n get supportedDiagramTypes(): DiagramType[] {\n return this._supportedDiagramTypes\n }\n set supportedDiagramTypes(value: DiagramType[]) {\n this._supportedDiagramTypes = value\n this.shownDiagramTypes = allDiagramTypes.filter((vl) => this.supportedDiagramTypes.includes(vl.layout))\n }\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DiagramComponentState> = new EventEmitter()\n chartOptions: ChartOptions | undefined\n chartData: ChartData | undefined\n amountOfData: number | undefined | null\n shownDiagramTypes: DiagramLayouts[] = []\n // Changing the colorRangeInfo, will change the range of the color palette of the diagram.\n private colorRangeInfo = {\n colorStart: 0,\n colorEnd: 1,\n useEndAsStart: false,\n }\n // Changing the colorScale, will change the thematic color appearance of the diagram.\n private colorScale = d3.interpolateCool\n\n constructor(private translateService: TranslateService) {}\n\n ngOnChanges(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n ngOnInit(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n\n public generateChart(colorScale: any, colorRangeInfo: any) {\n if (this.data) {\n const inputData = this.data.map((diagramData) => diagramData.value)\n\n this.amountOfData = this.data.reduce((acc, current) => acc + current.value, 0)\n const COLORS = this.generateColors(this.data, colorScale, colorRangeInfo)\n this.chartData = {\n labels: this.data.map((data) => data.label),\n datasets: [\n {\n data: inputData,\n backgroundColor: COLORS,\n },\n ],\n }\n }\n\n this.chartOptions = {\n plugins: {\n legend: {\n position: 'bottom',\n },\n },\n maintainAspectRatio: false,\n ...(this._diagramType === DiagramType.VERTICAL_BAR && {\n plugins: { legend: { display: false } },\n scales: { y: { ticks: { precision: 0 } } },\n }),\n ...(this._diagramType === DiagramType.HORIZONTAL_BAR && {\n indexAxis: 'y',\n plugins: { legend: { display: false } },\n scales: { x: { ticks: { precision: 0 } } },\n }),\n }\n }\n\n generateColors(data: DiagramData[], colorScale: any, colorRangeInfo: any) {\n const dataColors = data.map((diagramData) => diagramData.backgroundColor)\n if (dataColors.filter((v) => v !== undefined).length === data.length) {\n return dataColors\n } else if (this.fillMissingColors) {\n // it is intended to generate more colors than needed, so interval for generated colors is same as amount of items on the diagram\n const interpolatedColors = interpolateColors(dataColors.length, colorScale, colorRangeInfo)\n let interpolatedIndex = 0\n return dataColors.map((color) => (color === undefined ? interpolatedColors[interpolatedIndex++] : color))\n } else {\n return interpolateColors(data.length, colorScale, colorRangeInfo)\n }\n }\n\n generateTotal(data: DiagramData[]): number {\n return data.reduce((acc, current) => acc + current.value, 0)\n }\n\n generateDiagramValueString(data: DiagramData[]): string {\n return data.map((item) => `${item.label}:${item.value}`).join(', ')\n }\n\n private diagramTypeToChartType(\n value: DiagramType\n ): 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' {\n if (value === DiagramType.PIE) return 'pie'\n else if (value === DiagramType.HORIZONTAL_BAR || value === DiagramType.VERTICAL_BAR) return 'bar'\n return 'pie'\n }\n\n dataClicked(event: []) {\n this.dataSelected.emit(event.length)\n }\n\n onDiagramTypeChanged(event: any) {\n this.diagramType = event.value.layout\n this.generateChart(this.colorScale, this.colorRangeInfo)\n this.diagramTypeChanged.emit(event.value.layout)\n this.componentStateChanged.emit({\n activeDiagramType: event.value.layout,\n })\n }\n}\nfunction interpolateColors(amountOfData: number, colorScale: any, colorRangeInfo: any) {\n return ColorUtils.interpolateColors(amountOfData, colorScale, colorRangeInfo)\n}\n","<ng-container *ngIf=\"this.data\">\n <div class=\"flex justify-content-center pb-2\" *ngIf=\"shownDiagramTypes.length > 1\">\n <p-selectButton\n [options]=\"shownDiagramTypes\"\n [(ngModel)]=\"selectedDiagramType\"\n optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\"\n name=\"diagram-type-select-button\"\n >\n <ng-template let-item pTemplate>\n <i\n [class]=\"item.icon\"\n [pTooltip]=\"item.tooltip || (item.tooltipKey | translate)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></i>\n <label style=\"display: none\" id=\"{{item.id}}\"> {{item.label ? item.label : item.labelKey | translate}} </label>\n </ng-template>\n </p-selectButton>\n </div>\n <div class=\"w-full flex justify-content-center\">\n <p-chart\n id=\"diagram\"\n [type]=\"chartType\"\n [data]=\"chartData\"\n [responsive]=\"false\"\n [options]=\"chartOptions\"\n (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data), valueString: generateDiagramValueString(data)}\"\n ></p-chart>\n </div>\n <div class=\"w-full flex justify-content-center mt-2 sumKey\">\n <p class=\"text-md font-medium text-700\">\n <span name=\"sumLabel\"> {{ sumKey | translate }}</span> : <span name=\"amountOfData\">{{ amountOfData}}</span>\n </p>\n </div>\n</ng-container>\n\n<div *ngIf=\"!this.data\" class=\"w-full flex justify-content-center\">\n <p-message severity=\"info\" text=\"{{ 'OCX_DIAGRAM.NO_DATA' | translate }}\"></p-message>\n</div>\n","import { ColumnFilterDataSelectOptions, Filter } from '../model/filter.model'\n\nexport function limit(columnFilterData: Filter[], amount: number, options: ColumnFilterDataSelectOptions): Filter[] {\n return options.reverse\n ? columnFilterData.slice(-amount, columnFilterData.length).reverse()\n : columnFilterData.slice(0, amount)\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { BehaviorSubject, Observable, combineLatest, debounceTime, map } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { PrimeTemplate } from 'primeng/api'\nimport { findTemplate } from '../../utils/template.utils'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { limit } from '../../utils/filter.utils'\nimport { OverlayPanel } from 'primeng/overlaypanel'\nimport { Row } from '../data-table/data-table.component'\nimport { Button } from 'primeng/button'\n\nexport type FilterViewDisplayMode = 'chips' | 'button'\nexport type FilterViewRowDisplayData = {\n id: string\n column: string\n value: unknown\n}\nexport type FilterViewRowDetailData = FilterViewRowDisplayData & {\n valueColumnId: string\n}\n\nexport interface FilterViewComponentState {\n filters?: Filter[]\n}\n\n@Component({\n selector: 'ocx-filter-view',\n templateUrl: './filter-view.component.html',\n styleUrls: ['./filter-view.component.scss'],\n})\nexport class FilterViewComponent implements OnInit {\n ColumnType = ColumnType\n FilterType = FilterType\n filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this.filters$.getValue()\n }\n set filters(value: Filter[]) {\n this.filters$.next(value)\n }\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n const chipObs = value.map((c) => this.getTemplate(c, this.chipTemplateNames, this.chipTemplates, this.chipIdSuffix))\n this.chipTemplates$ = combineLatest(chipObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n\n const tableTemplateColumns = value.concat(this.columnFilterTableColumns)\n this.tableTemplates$ = combineLatest(\n tableTemplateColumns.map((c) =>\n this.getTemplate(c, this.tableTemplateNames, this.tableTemplates, this.tableIdSuffix)\n )\n ).pipe(map((values) => Object.fromEntries(tableTemplateColumns.map((c, i) => [c.id, values[i]]))))\n }\n\n columnFilterDataRows$: Observable<FilterViewRowDisplayData[]> | undefined\n\n @Input() displayMode: FilterViewDisplayMode = 'button'\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() chipStyleClass = ''\n @Input() tableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() panelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n\n @Output() filtered: EventEmitter<Filter[]> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<FilterViewComponentState> = new EventEmitter()\n\n columnFilterTableColumns: DataTableColumn[] = [\n {\n id: 'column',\n columnType: ColumnType.TRANSLATION_KEY,\n nameKey: 'OCX_FILTER_VIEW.TABLE.COLUMN_NAME',\n },\n { id: 'value', columnType: ColumnType.STRING, nameKey: 'OCX_FILTER_VIEW.TABLE.VALUE' },\n {\n id: 'actions',\n columnType: ColumnType.STRING,\n nameKey: 'OCX_FILTER_VIEW.TABLE.ACTIONS',\n },\n ]\n\n ngOnInit(): void {\n this.columnFilterDataRows$ = combineLatest([this.filters$, this.columns$]).pipe(\n map(([filters, columns]) => {\n const columnIds = columns.map((c) => c.id)\n return filters\n .map((f) => {\n const filterColumn = this.getColumnForFilter(f, columns)\n if (!filterColumn) return undefined\n return {\n id: `${f.columnId}-${f.value}`,\n column: filterColumn.nameKey,\n value: f.value,\n valueColumnId: filterColumn.id,\n } satisfies FilterViewRowDetailData\n })\n .filter((v): v is FilterViewRowDetailData => v !== undefined)\n .slice()\n .sort((a, b) => columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId))\n })\n )\n this.componentStateChanged.emit({\n filters: this.filters,\n })\n }\n\n @ViewChild(OverlayPanel) panel!: OverlayPanel\n @ViewChild('manageButton') manageButton!: Button\n trigger: HTMLElement | undefined\n\n fitlerViewNoSelection: TemplateRef<any> | undefined\n get _fitlerViewNoSelection(): TemplateRef<any> | undefined {\n return this.fitlerViewNoSelection\n }\n\n filterViewChipContent: TemplateRef<any> | undefined\n get _filterViewChipContent(): TemplateRef<any> | undefined {\n return this.filterViewChipContent\n }\n\n filterViewShowMoreChip: TemplateRef<any> | undefined\n get _filterViewShowMoreChip(): TemplateRef<any> | undefined {\n return this.filterViewShowMoreChip\n }\n\n defaultTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set defaultTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.defaultTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set templates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n value?.forEach((item) => {\n switch (item.getType()) {\n case 'fitlerViewNoSelection':\n this.fitlerViewNoSelection = item.template\n break\n case 'filterViewChipContent':\n this.filterViewChipContent = item.template\n break\n case 'filterViewShowMoreChip':\n this.filterViewShowMoreChip = item.template\n break\n }\n })\n }\n\n chipTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n tableTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n\n chipIdSuffix: Array<string> = ['IdFilterChip', 'IdTableFilterCell', 'IdTableCell']\n chipTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterChipValue', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterChipValue', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterChipValue',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterChipValue',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.CUSTOM]: ['customFilterChipValue', 'customTableFilterCell', 'customTableCell', 'defaultCustomValue'],\n [ColumnType.STRING]: ['stringFilterChipValue', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n chipTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n tableIdSuffix: Array<string> = ['IdFilterViewCell', 'IdTableFilterCell', 'IdTableCell']\n tableTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterViewCell', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterViewCell', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterViewCell',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKey',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.CUSTOM]: ['customFilterViewCell', 'customTableFilterCell', 'customTableCell', 'defaultCustomValue'],\n [ColumnType.STRING]: ['stringFilterViewCell', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n tableTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n getTemplate(\n column: DataTableColumn,\n templateNames: Record<ColumnType, Array<string>>,\n templates: Record<string, Observable<TemplateRef<any> | null>>,\n idSuffix: Array<string>\n ): Observable<TemplateRef<any> | null> {\n if (!templates[column.id]) {\n templates[column.id] = combineLatest([this.defaultTemplates$, this.parentTemplates$]).pipe(\n map(([dt, t]) => {\n const templates = [...(dt ?? []), ...(t ?? [])]\n const columnTemplate = findTemplate(\n templates,\n idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return findTemplate(templates, templateNames[column.columnType])?.template ?? null\n }),\n debounceTime(50)\n )\n }\n return templates[column.id]\n }\n\n onResetFilersClick() {\n this.filters = []\n this.filtered.emit([])\n this.componentStateChanged.emit({\n filters: [],\n })\n }\n\n onChipRemove(filter: Filter) {\n const filters = this.filters.filter((f) => f.value !== filter.value)\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n onFilterDelete(row: Row) {\n const filters = this.filters.filter((f) => !(f.columnId === row['valueColumnId'] && f.value === row['value']))\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n focusTrigger() {\n if (this.trigger?.id === 'ocxFilterViewShowMore') {\n this.trigger?.focus()\n } else {\n this.manageButton.focus()\n }\n }\n\n showPanel(event: any) {\n this.trigger = event.srcElement\n this.panel.toggle(event)\n }\n\n getColumnForFilter(filter: Filter, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === filter.columnId)\n }\n\n getColumn(colId: string, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === colId)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n getRowObjectFromFiterData(filter: Filter) {\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","<ng-container *ngIf=\"columns$ | async as columns\">\n <div *ngIf=\"filters$ | async as filters\" class=\"flex flex-wrap align-items-center gap-2\">\n <ng-container *ngIf=\"displayMode === 'chips'; else noChipsContent\">\n <ng-container *ocxIfBreakpoint=\"'desktop'; elseTemplate: noChipsContent\">\n <ng-container *ngIf=\"selectDisplayedChips(filters, columns) as selectedFilters\">\n <p-button\n #chipFilterResetButton\n id=\"ocxFilterViewReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n <ng-container *ngIf=\"filters.length <= 0\">\n <ng-container\n *ngIf=\"_fitlerViewNoSelection; else defaultNoFilters\"\n [ngTemplateOutlet]=\"_fitlerViewNoSelection\"\n >\n </ng-container>\n <ng-template #defaultNoFilters>\n <span id=\"ocxFilterViewNoFilters\">{{ 'OCX_FILTER_VIEW.NO_FILTERS' | translate }}</span>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"(chipTemplates$ | async) ?? {} as templates\">\n <ng-container *ngFor=\"let filter of selectedFilters\">\n <ng-container *ngIf=\"getColumnForFilter(filter, columns) as column\">\n <p-chip [removable]=\"true\" (onRemove)=\"onChipRemove(filter)\" [styleClass]=\"chipStyleClass\">\n <ng-container\n *ngIf=\"_filterViewChipContent; else chipContentTemplate\"\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 <ng-template #chipContentTemplate>\n <span\n *ngIf=\"columns$ | async as columns\"\n style=\"white-space: nowrap\"\n class=\"p-chip-text flex flex-nowrap\"\n >{{column?.nameKey ?? '' | translate }}:<ng-container\n *ngIf=\"filter.filterType === FilterType.EQUAL || !filter.filterType\"\n [ngTemplateOutlet]=\"chipTemplate\"\n [ngTemplateOutletContext]=\"{\n templates: templates,\n filter: filter,\n column: column\n }\"\n ></ng-container>\n <ng-container *ngIf=\"filter.filterType === FilterType.TRUTHY\">\n <ng-container\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: filter.value\n }\"\n ></ng-container>\n </ng-container>\n </span>\n </ng-template>\n </p-chip>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"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 <ng-container\n *ngIf=\"_filterViewShowMoreChip; else showMoreChipTemplate\"\n [ngTemplateOutlet]=\"_filterViewShowMoreChip\"\n [ngTemplateOutletContext]=\"{\n $implicit: filters.length - selectedFilters.length\n }\"\n >\n </ng-container>\n <ng-template #showMoreChipTemplate>\n <span class=\"p-chip-text flex flex-nowrap\"> +{{filters.length - selectedFilters.length}} </span>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </p-chip>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template #noChipsContent>\n <p-button\n #manageButton\n id=\"ocxFilterViewManage\"\n (onClick)=\"showPanel($event)\"\n icon=\"pi pi-sliders-h\"\n label=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.LABEL' | translate }}\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [badge]=\"filters.length.toString()\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </ng-template>\n\n <ng-template #filterTablePanel>\n <p-overlayPanel *ngIf=\"tableTemplates$ | async as templates\" #op [style]=\"panelStyle\" (onHide)=\"focusTrigger()\">\n <ng-template pTemplate=\"content\">\n <div pFocusTrap>\n <div class=\"flex justify-content-between align-items-center mb-2\">\n <span class=\"text-2xl font-medium\">{{'OCX_FILTER_VIEW.PANEL_TITLE' | translate}}</span>\n <div>\n <p-button\n pAutoFocus\n [autofocus]=\"true\"\n id=\"ocxFilterViewOverlayReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n </div>\n </div>\n <ocx-data-table\n id=\"ocxFilterViewDataTable\"\n [rows]=\"(columnFilterDataRows$ | async) ?? []\"\n [columns]=\"columnFilterTableColumns\"\n [emptyResultsMessage]=\"'OCX_FILTER_VIEW.NO_FILTERS' | translate\"\n [paginator]=\"false\"\n [tableStyle]=\"tableStyle\"\n >\n <ng-template pTemplate=\"columnIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n [ngTemplateOutlet]=\"templates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n </ng-template>\n <ng-template pTemplate=\"valueIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container *ngIf=\"getColumn(rowObject['valueColumnId'], columns) as valueColumn\">\n <ng-container\n *ngIf=\"!valueColumn.filterType || valueColumn.filterType === FilterType.EQUAL\"\n [ngTemplateOutlet]=\"templates[valueColumn.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowForValueColumn(rowObject),\n column: valueColumn\n }\"\n >\n </ng-container>\n <ng-container\n *ngIf=\"valueColumn.filterType === FilterType.TRUTHY\"\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: resolveFieldData(rowObject, column.id)\n }\"\n >\n </ng-container>\n </ng-container>\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-overlayPanel>\n </ng-template>\n </div>\n</ng-container>\n\n<ng-template #chipTemplate let-templates=\"templates\" let-filter=\"filter\" let-column=\"column\">\n <ng-container\n *ngIf=\"templates[column.id] as template\"\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromFiterData(filter),\n column: column\n }\"\n >\n </ng-container>\n</ng-template>\n\n<ng-template #truthyTemplate let-value=\"value\">\n <ng-container *ngIf=\"value\"> {{'OCX_FILTER_VIEW.FILTER_YES' | translate}} </ng-container>\n <ng-container *ngIf=\"!value\"> {{'OCX_FILTER_VIEW.FILTER_NO' | translate}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id)}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultCustomValue\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }}</ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { BehaviorSubject, Observable, combineLatest, map, mergeMap, of } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DiagramColumn } from '../../model/diagram-column'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\n\nexport interface GroupByCountDiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\n@Component({\n selector: 'ocx-group-by-count-diagram',\n templateUrl: './group-by-count-diagram.component.html',\n})\nexport class GroupByCountDiagramComponent implements OnInit {\n @Input() sumKey = 'SEARCH.SUMMARY_TITLE'\n @Input() diagramType = DiagramType.PIE\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n /**\n * @deprecated Will be replaced by diagramType\n */\n @Input()\n get type(): DiagramType {\n return this.diagramType\n }\n set type(value: DiagramType) {\n this.diagramType = value\n }\n @Input() supportedDiagramTypes: DiagramType[] = []\n private _data$ = new BehaviorSubject<unknown[]>([])\n @Input()\n get data(): unknown[] {\n return this._data$.getValue()\n }\n set data(value: unknown[]) {\n this._data$.next(value)\n }\n diagramData$: Observable<DiagramData[]> | undefined\n\n private _columnType$ = new BehaviorSubject<ColumnType>(ColumnType.STRING)\n @Input()\n get columnType(): ColumnType {\n return this._columnType$.getValue()\n }\n set columnType(value: ColumnType) {\n this._columnType$.next(value)\n }\n\n private _columnField$ = new BehaviorSubject<string>('')\n @Input()\n get columnField(): string {\n return this._columnField$.getValue()\n }\n set columnField(value: string) {\n this._columnField$.next(value)\n }\n\n @Input()\n get column(): DiagramColumn {\n return { columnType: this.columnType, id: this.columnField }\n }\n set column(value: DiagramColumn) {\n this.columnType = value.columnType\n this.columnField = value.id\n }\n\n private _colors$ = new BehaviorSubject<Record<string, string>>({})\n @Input()\n get colors(): Record<string, string> {\n return this._colors$.getValue()\n }\n set colors(value: Record<string, string>) {\n this._colors$.next(value)\n }\n\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<GroupByCountDiagramComponentState> = new EventEmitter()\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n this.diagramData$ = combineLatest([this._data$, this._columnField$, this._columnType$, this._colors$]).pipe(\n mergeMap(([data, columnField, columnType, colors]) => {\n const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField))\n const occurrences = columnData.reduce((acc, current) => {\n return acc.some((e: { label: any }) => e.label === current)\n ? (acc.find((e: { label: any }) => e.label === current).value++, acc)\n : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }]\n }, [])\n if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {\n return this.translateService.get(occurrences.map((o: { label: any }) => o.label)).pipe(\n map((translations: { [x: string]: any }) =>\n occurrences.map((o: { label: string; value: any; backgroundColor: string | undefined }) => ({\n label: translations[o.label],\n value: o.value,\n backgroundColor: o.backgroundColor,\n }))\n )\n )\n } else {\n return of(occurrences)\n }\n })\n )\n }\n\n dataClicked(event: any) {\n this.dataSelected.emit(event)\n }\n\n onDiagramTypeChanged(newDiagramType: DiagramType) {\n this.diagramType = newDiagramType\n this.diagramTypeChanged.emit(newDiagramType)\n this.componentStateChanged.emit({\n activeDiagramType: newDiagramType,\n })\n }\n}\n","<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [fillMissingColors]=\"fillMissingColors\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n combineLatest,\n distinctUntilChanged,\n map,\n startWith,\n timestamp,\n withLatestFrom,\n} from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n ColumnGroupSelectionComponentState,\n GroupSelectionChangedEvent,\n} from '../column-group-selection/column-group-selection.component'\nimport { PrimeTemplate } from 'primeng/api'\nimport {\n ActionColumnChangedEvent,\n ColumnSelectionChangedEvent,\n CustomGroupColumnSelectorComponentState,\n} from '../custom-group-column-selector/custom-group-column-selector.component'\nimport { SlotService } from '@onecx/angular-remote-components'\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 { Filter } from '../../model/filter.model'\nimport { limit } from '../../utils/filter.utils'\nimport { FilterViewComponentState, FilterViewDisplayMode } from '../filter-view/filter-view.component'\n\nexport type InteractiveDataViewComponentState = ColumnGroupSelectionComponentState &\n CustomGroupColumnSelectorComponentState &\n DataLayoutSelectionComponentState &\n DataListGridSortingComponentState &\n DataViewComponentState &\n FilterViewComponentState\n\nexport interface ColumnGroupData {\n activeColumns: DataTableColumn[]\n groupKey: string\n}\n@Component({\n selector: 'ocx-interactive-data-view',\n templateUrl: './interactive-data-view.component.html',\n styleUrls: ['./interactive-data-view.component.css'],\n providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }],\n})\nexport class InteractiveDataViewComponent implements OnInit, AfterContentInit {\n _dataViewComponent: DataViewComponent | undefined\n @ViewChild(DataViewComponent) set dataView(ref: DataViewComponent | undefined) {\n this._dataViewComponent = ref\n this.registerEventListenerForDataView()\n }\n get dataView(): DataViewComponent | undefined {\n return this._dataViewComponent\n }\n\n columnGroupSelectionComponentState$ = new ReplaySubject<ColumnGroupSelectionComponentState>(1)\n customGroupColumnSelectorComponentState$ = new ReplaySubject<CustomGroupColumnSelectorComponentState>(1)\n dataLayoutComponentState$ = new ReplaySubject<DataLayoutSelectionComponentState>(1)\n dataListGridSortingComponentState$ = new ReplaySubject<DataListGridSortingComponentState>(1)\n dataViewComponentState$ = new ReplaySubject<DataViewComponentState>(1)\n filterViewComponentState$ = new ReplaySubject<FilterViewComponentState>(1)\n\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() name = 'Data'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() supportedViewLayouts: ('grid' | 'list' | 'table')[] = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() sortField: any = ''\n @Input() sortStates: DataSortDirection[] = [\n DataSortDirection.ASCENDING,\n DataSortDirection.DESCENDING,\n DataSortDirection.NONE,\n ]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n @Input() showAllOption = false\n @Input() totalRecordsOnServer: number | undefined\n @Input() layout: 'grid' | 'list' | 'table' = 'table'\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = 'OCX_INTERACTIVE_DATA_VIEW.CUSTOM_GROUP'\n @Input() groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() additionalActions: DataAction[] = []\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() disableFilterView = true\n @Input() filterViewDisplayMode: FilterViewDisplayMode = 'button'\n @Input() filterViewChipStyleClass = ''\n @Input() filterViewTableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() filterViewPanelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() page = 0\n @Input() selectedRows: Row[] = []\n displayedColumnKeys$ = new BehaviorSubject<string[]>([])\n displayedColumns$: Observable<DataTableColumn[]> | undefined\n @Input()\n get displayedColumnKeys(): string[] {\n return this.displayedColumnKeys$.getValue()\n }\n set displayedColumnKeys(value: string[]) {\n this.displayedColumnKeys$.next(value)\n }\n /**\n * @deprecated Use `displayedColumnKeys` and pass in column ids instead of `DataTableColumn` objects\n */\n @Input()\n get displayedColumns(): DataTableColumn[] {\n return (\n (this.displayedColumnKeys\n .map((d) => this.columns.find((c) => c.id === d))\n .filter((d) => d) as DataTableColumn[]) ?? []\n )\n }\n set displayedColumns(value: DataTableColumn[]) {\n this.displayedColumnKeys$.next(value.map((d) => d.id))\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n @ContentChild('tableCell') tableCell: TemplateRef<any> | undefined\n primeNgTableCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by dateTableCell\n */\n @ContentChild('tableDateCell') tableDateCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by primeNgDateTableCell\n */\n primeNgTableDateCell: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCell: TemplateRef<any> | undefined\n primeNgDateTableCell: TemplateRef<any> | undefined\n\n /**\n * @deprecated Will be replaced by relativeDateTableCell\n */\n @ContentChild('tableRelativeDateCell') tableRelativeDateCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by primeNgRelativeDateTableCell\n */\n primeNgTableRelativeDateCell: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableCell') relativeDateTableCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableCell: TemplateRef<any> | undefined\n\n /**\n * @deprecated Will be replaced by translationKeyTableCell\n */\n @ContentChild('tableTranslationKeyCell') tableTranslationKeyCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by primeNgTranslationKeyTableCell\n */\n primeNgTableTranslationKeyCell: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableCell') translationKeyTableCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableCell: TemplateRef<any> | undefined\n\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLines: TemplateRef<any> | undefined\n primeNgGridItemSubtitleLines: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLines: TemplateRef<any> | undefined\n primeNgListItemSubtitleLines: TemplateRef<any> | undefined\n // TODO: Implement same fix for other templates and child components\n @ContentChild('stringTableCell') stringTableCell: TemplateRef<any> | undefined\n primeNgStringTableCell: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCell: TemplateRef<any> | undefined\n primeNgNumberTableCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n @ContentChild('customTableCell') customTableCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n primeNgCustomTableCell: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItem: TemplateRef<any> | undefined\n primeNgGridItem: TemplateRef<any> | undefined\n @ContentChild('listItem') listItem: TemplateRef<any> | undefined\n primeNgListItem: TemplateRef<any> | undefined\n @ContentChild('topCenter') topCenter: TemplateRef<any> | undefined\n primeNgTopCenter: TemplateRef<any> | undefined\n @ContentChild('listValue') listValue: TemplateRef<any> | undefined\n primeNgListValue: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValue: TemplateRef<any> | undefined\n primeNgTranslationKeyListValue: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValue: TemplateRef<any> | undefined\n primeNgNumberListValue: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValue: TemplateRef<any> | undefined\n primeNgRelativeDateListValue: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' DataListGrid use pTemplate=\"statusIdListValue\"\n */\n @ContentChild('customListValue') customListValue: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' DataListGrid use pTemplate=\"statusIdListValue\"\n */\n primeNgCustomListValue: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValue: TemplateRef<any> | undefined\n primeNgStringListValue: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValue: TemplateRef<any> | undefined\n primeNgDateListValue: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCell: TemplateRef<any> | undefined\n primeNgTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('dateTableFilterCell') dateTableFilterCell: TemplateRef<any> | undefined\n primeNgDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCell: TemplateRef<any> | undefined\n primeNgStringTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCell: TemplateRef<any> | undefined\n primeNgNumberTableFilterCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n @ContentChild('customTableFilterCell') customTableFilterCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n primeNgCustomTableFilterCell: TemplateRef<any> | undefined\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() dataViewLayoutChange = new EventEmitter<'grid' | 'list' | 'table'>()\n // TODO: Remove following line once displayedColumns (deprecated) has been removed\n @Output() displayedColumnsChange = new EventEmitter<DataTableColumn[]>()\n @Output() displayedColumnKeysChange = new EventEmitter<string[]>()\n @Output() selectionChanged: EventEmitter<Row[]> = new EventEmitter()\n\n @Output() pageChanged: EventEmitter<number> = new EventEmitter()\n @Output() pageSizeChanged = new EventEmitter<number>()\n\n @Output() componentStateChanged = new EventEmitter<InteractiveDataViewComponentState>()\n\n selectedGroupKey$ = new BehaviorSubject<string | undefined>('')\n get selectedGroupKey(): string | undefined {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string | undefined) {\n this.selectedGroupKey$.next(value)\n }\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n isEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLines\n }\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLines\n }\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCell\n }\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCell\n }\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCell\n }\n get _customTableCell(): TemplateRef<any> | undefined {\n return this.customTableCell\n }\n get _tableDateCell(): TemplateRef<any> | undefined {\n return this.dateTableCell ?? this.tableDateCell\n }\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCell\n }\n get _tableRelativeDateCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCell ?? this.tableRelativeDateCell\n }\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCell\n }\n get _tableTranslationKeyCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCell ?? this.tableTranslationKeyCell\n }\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCell\n }\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItem\n }\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItem\n }\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValue\n }\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValue\n }\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValue\n }\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValue\n }\n get _customListValue(): TemplateRef<any> | undefined {\n return this.customListValue\n }\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValue\n }\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValue\n }\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCell\n }\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCell\n }\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCell\n }\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCell\n }\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCell\n }\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCell\n }\n get _customTableFilterCell(): TemplateRef<any> | undefined {\n return this.customTableFilterCell\n }\n\n _data: RowListGridData[] = []\n @Input()\n get data(): RowListGridData[] {\n return this._data\n }\n set data(value: RowListGridData[]) {\n this._data = value\n }\n\n columnGroupSlotName = 'onecx-column-group-selection'\n isColumnGroupSelectionComponentDefined$: Observable<boolean>\n groupSelectionChangedSlotEmitter = new EventEmitter<ColumnGroupData | undefined>()\n\n constructor(private slotService: SlotService) {\n this.isColumnGroupSelectionComponentDefined$ = this.slotService\n .isSomeComponentDefinedForSlot(this.columnGroupSlotName)\n .pipe(startWith(true))\n\n this.groupSelectionChangedSlotEmitter.subscribe((event: ColumnGroupData | undefined) => {\n if (event === undefined) {\n event = {\n activeColumns: this.displayedColumns,\n groupKey: this.selectedGroupKey ?? this.defaultGroupKey,\n }\n }\n this.displayedColumnKeys$.next(event.activeColumns.map((col) => col.id))\n this.selectedGroupKey$.next(event.groupKey)\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n this.columnGroupSelectionComponentState$.next({\n activeColumnGroupKey: event.groupKey,\n displayedColumns: event.activeColumns,\n })\n })\n\n this.dataViewLayoutChange\n .pipe(withLatestFrom(this.isColumnGroupSelectionComponentDefined$))\n .subscribe(([_, columnGroupComponentDefined]) => {\n if (columnGroupComponentDefined) {\n if (\n !(\n this.columns.find((c) => c.nameKey === this.selectedGroupKey) ||\n this.selectedGroupKey === this.customGroupKey\n )\n ) {\n this.selectedGroupKey$.next(undefined)\n }\n }\n })\n }\n\n ngOnInit(): void {\n this.selectedGroupKey = this.defaultGroupKey\n if (!this.displayedColumns || this.displayedColumns.length === 0) {\n this.displayedColumnKeys = this.columns.map((column) => column.id)\n }\n if (this.defaultGroupKey && this.defaultGroupKey !== this.customGroupKey) {\n this.displayedColumnKeys = this.columns\n .filter((column) => column.predefinedGroupKeys?.includes(this.defaultGroupKey))\n .map((column) => column.id)\n }\n this.displayedColumns$ = this.displayedColumnKeys$.pipe(\n distinctUntilChanged((prev, curr) => prev.length === curr.length && prev.every((v, i) => curr[i] === v)),\n map(\n (columnKeys) =>\n (columnKeys.map((key) => this.columns.find((col) => col.id === key)).filter((d) => d) as DataTableColumn[]) ??\n []\n )\n )\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n if (!this.groupSelectionNoGroupSelectedKey) {\n this.groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n }\n this.firstColumnId = this.columns[0]?.id\n\n let dataListGridSortingComponentState$: Observable<DataListGridSortingComponentState | Record<string, never>> =\n this.dataListGridSortingComponentState$\n let columnGroupSelectionComponentState$: Observable<ColumnGroupSelectionComponentState | Record<string, never>> =\n this.columnGroupSelectionComponentState$\n let customGroupColumnSelectorComponentState$: Observable<\n CustomGroupColumnSelectorComponentState | Record<string, never>\n > = this.customGroupColumnSelectorComponentState$\n\n if (this.layout === 'table') {\n dataListGridSortingComponentState$ = dataListGridSortingComponentState$.pipe(startWith({}))\n } else {\n columnGroupSelectionComponentState$ = columnGroupSelectionComponentState$.pipe(\n startWith({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: this.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 ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'tableCell':\n this.primeNgTableCell = item.template\n break\n case 'tableDateCell':\n this.primeNgTableDateCell = item.template\n break\n case 'dateTableCell':\n this.primeNgDateTableCell = item.template\n break\n case 'tableRelativeDateCell':\n this.primeNgTableRelativeDateCell = item.template\n break\n case 'relativeDateTableCell':\n this.primeNgRelativeDateTableCell = item.template\n break\n case 'tableTranslationKeyCell':\n this.primeNgTableTranslationKeyCell = item.template\n break\n case 'translationKeyTableCell':\n this.primeNgTranslationKeyTableCell = item.template\n break\n case 'gridItemSubtitleLines':\n this.primeNgGridItemSubtitleLines = item.template\n break\n case 'listItemSubtitleLines':\n this.primeNgListItemSubtitleLines = item.template\n break\n case 'stringTableCell':\n this.primeNgStringTableCell = item.template\n break\n case 'numberTableCell':\n this.primeNgNumberTableCell = item.template\n break\n case 'customTableCell':\n this.primeNgCustomTableCell = item.template\n break\n case 'gridItem':\n this.primeNgGridItem = item.template\n break\n case 'listItem':\n this.primeNgListItem = item.template\n break\n case 'topCenter':\n this.primeNgTopCenter = item.template\n break\n case 'listValue':\n this.primeNgListValue = item.template\n break\n case 'translationKeyListValue':\n this.primeNgTranslationKeyListValue = item.template\n break\n case 'numberListValue':\n this.primeNgNumberListValue = item.template\n break\n case 'relativeDateListValue':\n this.primeNgRelativeDateListValue = item.template\n break\n case 'customListValue':\n this.primeNgCustomListValue = item.template\n break\n case 'stringListValue':\n this.primeNgStringListValue = item.template\n break\n case 'dateListValue':\n this.primeNgDateListValue = item.template\n break\n case 'tableFilterCell':\n this.primeNgTableFilterCell = item.template\n break\n case 'dateTableFilterCell':\n this.primeNgDateTableFilterCell = item.template\n break\n case 'relativeDateTableFilterCell':\n this.primeNgRelativeDateTableFilterCell = item.template\n break\n case 'translationKeyTableFilterCell':\n this.primeNgTranslationKeyTableFilterCell = item.template\n break\n case 'stringTableFilterCell':\n this.primeNgStringTableFilterCell = item.template\n break\n case 'numberTableFilterCell':\n this.primeNgNumberTableFilterCell = item.template\n break\n case 'customTableFilterCell':\n this.primeNgCustomTableFilterCell = item.template\n break\n }\n })\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n onDeleteElement(element: RowListGridData) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(element)\n }\n }\n\n onViewElement(element: RowListGridData) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(element)\n }\n }\n\n onEditElement(element: RowListGridData) {\n if (this.isEditItemObserved) {\n this.editItem.emit(element)\n }\n }\n\n onDataViewLayoutChange(layout: 'grid' | 'list' | 'table') {\n this.layout = layout\n this.dataViewLayoutChange.emit(layout)\n }\n\n onSortChange($event: any) {\n this.sortField = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onSortDirectionChange($event: any) {\n this.sortDirection = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onColumnGroupSelectionChange(event: GroupSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = event.groupKey\n // TODO: Remove following line once displayedColumns (deprecated) has been removed\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n registerEventListenerForDataView() {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataViewComponent?.deleteItem.observed) {\n this._dataViewComponent?.deleteItem.subscribe((event) => {\n this.onDeleteElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataViewComponent?.viewItem.observed) {\n this._dataViewComponent?.viewItem.subscribe((event) => {\n this.onViewElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.isEditItemObserved = true\n if (!this._dataViewComponent?.editItem.observed) {\n this._dataViewComponent?.editItem.subscribe((event) => {\n this.onEditElement(event)\n })\n }\n }\n if (this.selectionChanged.observed) {\n if (!this._dataViewComponent?.selectionChanged.observed) {\n this._dataViewComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n\n onColumnSelectionChange(event: ColumnSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = this.customGroupKey\n // TODO: Remove following line once displayedColumns (deprecated) has been removed\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n onActionColumnConfigChange(event: ActionColumnChangedEvent) {\n this.frozenActionColumn = event.frozenActionColumn\n this.actionColumnPosition = event.actionColumnPosition\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChanged.observed) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n}\n","<div class=\"p-3 border-bottom-1 surface-border\">\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 <ocx-filter-view\n *ngIf=\"!disableFilterView\"\n [filters]=\"filters\"\n [columns]=\"columns\"\n [templates]=\"templates$ | async\"\n [displayMode]=\"filterViewDisplayMode\"\n [selectDisplayedChips]=\"selectDisplayedChips\"\n [chipStyleClass]=\"filterViewChipStyleClass\"\n [tableStyle]=\"filterViewTableStyle\"\n (filtered)=\"filtering($event)\"\n (componentStateChanged)=\"filterViewComponentState$.next($event)\"\n ></ocx-filter-view>\n </div>\n\n <div *ngIf=\"topCenter\">\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n\n <div *ngIf=\"layout !== 'table'\" class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n (componentStateChanged)=\"dataListGridSortingComponentState$.next($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n\n <div\n [ngStyle]=\"layout !== 'table' ? {\n 'position': 'absolute'\n } : {}\"\n class=\"flex flex-wrap justify-content-between align-items-center gap-2\"\n >\n <ng-container *ngIf=\"isColumnGroupSelectionComponentDefined$ | async; else defaultColumnGroupSelectionComponent\">\n <ng-container *ngIf=\"displayedColumnKeys$ | async as displayedColumnKeys\">\n <ocx-slot\n [ngStyle]=\"layout !== 'table' ? {'display' : 'none'} : {}\"\n *ocxIfPermission=\"searchConfigPermission; elseTemplate: defaultColumnGroupSelectionComponent\"\n name=\"{{columnGroupSlotName}}\"\n [inputs]=\"{ placeholderKey: groupSelectionNoGroupSelectedKey, defaultGroupKey: defaultGroupKey, customGroupKey: customGroupKey, columns: columns, selectedGroupKey: selectedGroupKey, layout: layout, displayedColumnsIds: displayedColumnKeys }\"\n [outputs]=\"{ groupSelectionChanged: groupSelectionChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </ng-container>\n </ng-container>\n\n <ocx-custom-group-column-selector\n *ngIf=\"layout === 'table'\"\n [columns]=\"columns\"\n [displayedColumns]=\"(displayedColumns$ | async) ?? []\"\n [customGroupKey]=\"customGroupKey\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n (componentStateChanged)=\"customGroupColumnSelectorComponentState$.next($event)\"\n ></ocx-custom-group-column-selector>\n </div>\n </div>\n</div>\n<div class=\"p-3\">\n <ocx-data-view\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [showAllOption]=\"showAllOption\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"primeNgStringTableCell ?? _stringTableCell\"\n [numberTableCellTemplate]=\"primeNgNumberTableCell ?? _numberTableCell\"\n [customTableCellTemplate]=\"primeNgCustomTableCell ?? _customTableCell\"\n [dateTableCellTemplate]=\"primeNgDateTableCell ?? _dateTableCell ?? primeNgTableDateCell ?? _tableDateCell\"\n [relativeDateTableCellTemplate]=\"primeNgRelativeDateTableCell ?? _relativeDateTableCell ?? primeNgTableRelativeDateCell ?? _tableRelativeDateCell\"\n [tableCellTemplate]=\"primeNgTableCell ?? _tableCell\"\n [translationKeyTableCellTemplate]=\"primeNgTranslationKeyTableCell ?? _translationKeyTableCell ?? primeNgTableTranslationKeyCell ?? _tableTranslationKeyCell\"\n [gridItemSubtitleLinesTemplate]=\"primeNgGridItemSubtitleLines ?? _gridItemSubtitleLines\"\n [listItemSubtitleLinesTemplate]=\"primeNgListItemSubtitleLines ?? _listItemSubtitleLines\"\n [listItemTemplate]=\"primeNgListItem ?? _listItem\"\n [listValueTemplate]=\"primeNgListValue ?? _listValue\"\n [translationKeyListValueTemplate]=\"primeNgTranslationKeyListValue ?? _translationKeyListValue\"\n [numberListValueTemplate]=\"primeNgNumberListValue ?? _numberListValue\"\n [relativeDateListValueTemplate]=\"primeNgRelativeDateListValue ?? _relativeDateListValue\"\n [customListValueTemplate]=\"primeNgCustomListValue ?? _customListValue\"\n [stringListValueTemplate]=\"primeNgStringListValue ?? _stringListValue\"\n [dateListValueTemplate]=\"primeNgDateListValue ?? _dateListValue\"\n [gridItemTemplate]=\"primeNgGridItem ?? _gridItem\"\n [tableFilterCellTemplate]=\"primeNgTableFilterCell ?? _tableFilterCell\"\n [dateTableFilterCellTemplate]=\"primeNgDateTableFilterCell ?? _dateTableFilterCell\"\n [customTableFilterCellTemplate]=\"primeNgCustomTableFilterCell ?? _customTableFilterCell\"\n [numberTableFilterCellTemplate]=\"primeNgNumberTableFilterCell ?? _numberTableFilterCell\"\n [stringTableFilterCellTemplate]=\"primeNgStringTableFilterCell ?? _stringTableFilterCell\"\n [relativeDateTableFilterCellTemplate]=\"primeNgRelativeDateTableFilterCell ?? _relativeDateTableFilterCell\"\n [translationKeyTableFilterCellTemplate]=\"primeNgTranslationKeyTableFilterCell ?? _translationKeyTableFilterCell\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n (componentStateChanged)=\"dataViewComponentState$.next($event)\"\n [parentTemplates]=\"templates$ | async\"\n [tableAllowSelectAll]=\"tableAllowSelectAll\"\n [tableSelectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-view>\n</div>\n\n<ng-template #defaultColumnGroupSelectionComponent>\n <ocx-column-group-selection\n *ngIf=\"layout === 'table'\"\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</ng-template>\n\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n <ng-template #numberTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n</ng-template>\n<ng-template #tableDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableRelativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableTranslationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container>\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n\n<ng-template #stringTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableFilterCell\"\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableFilterCell\"\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableFilterCell\"\n [ngTemplateOutlet]=\"_customTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableFilterCell\"\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableFilterCell\"\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableFilterCell\"\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n","import { Component } from '@angular/core'\n\n/**\n * Show this data not found page component if the main entity of a page could not be loaded.\n */\n@Component({\n selector: 'ocx-data-loading-error',\n template: `<div class=\"p-4\">\n <h1>{{ 'OCX_DATA_LOADING_ERROR.TITLE' | translate }}</h1>\n <div style=\"white-space: pre-line\">\n {{ 'OCX_DATA_LOADING_ERROR.MESSAGE' | translate }}\n </div>\n </div> `,\n})\nexport class DataLoadingErrorComponent {}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { Observable, filter, first, map, of, tap } from 'rxjs'\nimport { SyncableTopic } from '@onecx/accelerator'\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 TranslationCacheTopic extends SyncableTopic<string> {\n constructor() {\n super('translationCache', 2)\n }\n}\n\ndeclare global {\n interface Window {\n onecxTranslations: Record<string, any>\n }\n}\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\n@Injectable({ providedIn: 'root' })\nexport class TranslationCacheService implements OnDestroy {\n private translationTopic$ = new TranslationCacheTopic()\n constructor() {\n window['onecxTranslations'] ??= {}\n }\n ngOnDestroy(): void {\n this.translationTopic$.destroy()\n }\n\n getTranslationFile(url: string, cacheMissFunction: () => Observable<any>): Observable<any> {\n if (window['onecxTranslations'][url]) {\n return of(window['onecxTranslations'][url])\n }\n\n if (window['onecxTranslations'][url] === null) {\n return this.translationTopic$.pipe(\n filter((messageUrl) => messageUrl === url),\n map(() => window['onecxTranslations'][url]),\n first()\n )\n }\n\n window['onecxTranslations'][url] = null\n return cacheMissFunction().pipe(\n tap((t) => {\n window['onecxTranslations'][url] = t\n this.translationTopic$.publish(url)\n }),\n map(() => window['onecxTranslations'][url]),\n first()\n )\n }\n}\n","import { NgModule } from '@angular/core'\nimport { DropdownModule } from 'primeng/dropdown'\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 { OverlayPanelModule } from 'primeng/overlaypanel'\nimport { FocusTrapModule } from 'primeng/focustrap'\n\n@NgModule({\n imports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n DropdownModule,\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 OverlayPanelModule,\n FocusTrapModule,\n SharedModule,\n ],\n exports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n DropdownModule,\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 OverlayPanelModule,\n FocusTrapModule,\n SharedModule,\n ],\n})\nexport class AngularAcceleratorPrimeNgModule {}\n","import { UserService } from '@onecx/angular-integration-interface'\n\n/**\n * @deprecated use DynamicLocaleId from @onecx/angular-utils\n */\nexport class DynamicLocaleId {\n constructor(private userService: UserService) {\n Object.getOwnPropertyNames(String.prototype).forEach((k) => {\n if (k != 'valueOf' && k != 'length') {\n ;(this as any)[k] = function (...args: any[]) {\n const str = this.valueOf()\n return str[k](...args)\n }\n }\n })\n }\n\n valueOf() {\n return this.userService.lang$.getValue()\n }\n\n public get length(): number {\n return this.valueOf().length\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { APP_INITIALIZER, LOCALE_ID, NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { RouterModule } from '@angular/router'\nimport { TranslateModule } from '@ngx-translate/core'\n\nimport { AppConfigService, UserService } from '@onecx/angular-integration-interface'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\n\nimport { firstValueFrom, skip } from 'rxjs'\nimport { AngularAcceleratorPrimeNgModule } from './angular-accelerator-primeng.module'\nimport { ColumnGroupSelectionComponent } from './components/column-group-selection/column-group-selection.component'\nimport { CustomGroupColumnSelectorComponent } from './components/custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponent } from './components/data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponent } from './components/data-list-grid-sorting/data-list-grid-sorting.component'\nimport { DataListGridComponent } from './components/data-list-grid/data-list-grid.component'\nimport { DataTableComponent } from './components/data-table/data-table.component'\nimport { DataViewComponent } from './components/data-view/data-view.component'\nimport { DiagramComponent } from './components/diagram/diagram.component'\nimport { GroupByCountDiagramComponent } from './components/group-by-count-diagram/group-by-count-diagram.component'\nimport { InteractiveDataViewComponent } from './components/interactive-data-view/interactive-data-view.component'\nimport { PageHeaderComponent } from './components/page-header/page-header.component'\nimport { DataLoadingErrorComponent } from './components/data-loading-error/data-loading-error.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 MultiLanguageMissingTranslationHandler,\n providePermissionChecker,\n provideTranslationPathFromMeta,\n} from '@onecx/angular-utils'\nimport { SrcDirective } from './directives/src.directive'\nimport { TooltipOnOverflowDirective } from './directives/tooltipOnOverflow.directive'\nimport { DynamicPipe } from './pipes/dynamic.pipe'\nimport { OcxTimeAgoPipe } from './pipes/ocxtimeago.pipe'\nimport { DynamicLocaleId } from './utils/dynamic-locale-id'\nimport { FilterViewComponent } from './components/filter-view/filter-view.component'\n\nexport class AngularAcceleratorMissingTranslationHandler extends MultiLanguageMissingTranslationHandler {}\n\nfunction appInitializer(userService: UserService) {\n return async () => {\n await firstValueFrom(userService.lang$.pipe(skip(1)))\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AngularAcceleratorPrimeNgModule,\n AngularRemoteComponentsModule,\n TranslateModule,\n FormsModule,\n RouterModule,\n ReactiveFormsModule,\n ],\n declarations: [\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridSortingComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n PageHeaderComponent,\n DynamicPipe,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n DataLoadingErrorComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\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 AppConfigService,\n ],\n exports: [\n AngularRemoteComponentsModule,\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n PageHeaderComponent,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n DataLoadingErrorComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\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 { TranslateLoader } from '@ngx-translate/core'\nimport { defaultIfEmpty, first, mergeMap, Observable, of, tap } from 'rxjs'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport class AsyncTranslateLoader implements TranslateLoader {\n static lastTimerId = 0\n timerId = AsyncTranslateLoader.lastTimerId++\n\n constructor(private translateLoader$: Observable<TranslateLoader>) {}\n\n getTranslation(lang: string): Observable<any> {\n return this.translateLoader$.pipe(\n tap(() => console.time('AsyncTranslateLoader_' + this.timerId)),\n defaultIfEmpty(undefined),\n first(),\n mergeMap((translateLoader) => translateLoader?.getTranslation(lang) ?? of({})),\n tap(() => console.timeEnd('AsyncTranslateLoader_' + this.timerId))\n )\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader'\nimport { Observable } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport class CachingTranslateLoader implements TranslateLoader {\n private translateLoader: TranslateHttpLoader\n\n constructor(\n private translationCache: TranslationCacheService,\n private http: HttpClient,\n private prefix?: string,\n private suffix?: string\n ) {\n this.translateLoader = new TranslateHttpLoader(this.http, this.prefix, this.suffix)\n }\n\n getTranslation(lang: string): Observable<any> {\n const url = `${this.prefix}${lang}${this.suffix}`\n\n return this.translationCache.getTranslationFile(url, () => this.translateLoader.getTranslation(lang))\n }\n}\n","import { TranslateLoader } from '@ngx-translate/core'\nimport { Observable, catchError, forkJoin, map, of } from 'rxjs'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport class TranslateCombinedLoader implements TranslateLoader {\n private _loaders: TranslateLoader[]\n constructor(...loaders: TranslateLoader[]) {\n this._loaders = loaders\n }\n getTranslation(lang: string): Observable<object> {\n return forkJoin(\n this._loaders.map((l) =>\n l.getTranslation(lang).pipe(\n catchError(err => {\n console.error('Failed to load translation file', l, err)\n return of({})\n })\n )\n )\n ).pipe(\n map((allTranslations) => {\n let result = {}\n allTranslations.forEach((translations) => {\n result = this.mergeDeep(result, translations)\n })\n return result\n })\n )\n }\n isObject(item: any): any {\n return item && typeof item === 'object' && !Array.isArray(item)\n }\n\n mergeDeep(target: any, source: any): any {\n const output = Object.assign({}, target)\n if (this.isObject(target) && this.isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (this.isObject(source[key])) {\n if (!(key in target)) Object.assign(output, { [key]: source[key] })\n else output[key] = this.mergeDeep(target[key], source[key])\n } else {\n Object.assign(output, { [key]: source[key] })\n }\n })\n }\n return output\n }\n}\n","import { Location } from '@angular/common'\nimport { HttpClient } from '@angular/common/http'\nimport { inject } from '@angular/core'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { combineLatest, filter, map, tap } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\nimport { AsyncTranslateLoader } from './async-translate-loader.utils'\nimport { CachingTranslateLoader } from './caching-translate-loader.utils'\nimport { TranslateCombinedLoader } from './translate.combined.loader'\n\nlet lastTranslateLoaderTimerId = 0\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport function createTranslateLoader(\n http: HttpClient,\n appStateService: AppStateService,\n translationCacheService?: TranslationCacheService\n): TranslateLoader {\n const ts = translationCacheService ?? inject(TranslationCacheService)\n const timerId = lastTranslateLoaderTimerId++\n\n console.time('createTranslateLoader_' + timerId)\n return new AsyncTranslateLoader(\n combineLatest([appStateService.currentMfe$.asObservable(), appStateService.globalLoading$.asObservable()]).pipe(\n filter(([, isLoading]) => !isLoading),\n map(([currentMfe]) => {\n return new TranslateCombinedLoader(\n // translations of shell or of app in standalone mode\n new CachingTranslateLoader(ts, http, `./assets/i18n/`, '.json'),\n // translations of portal-integration-angular of app\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, `onecx-portal-lib/assets/i18n/`),\n '.json'\n ),\n // translations of portal-integration-angular of shell\n new CachingTranslateLoader(ts, http, `./onecx-portal-lib/assets/i18n/`, '.json'),\n // Primelocale Translations\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, `onecx-portal-lib/assets/i18n/primeng/`),\n '.json'\n ),\n // translations of the app\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, `assets/i18n/`),\n '.json'\n )\n )\n }),\n tap(() => console.timeEnd('createTranslateLoader_' + timerId))\n )\n )\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateUtils {\n constructor(@Inject(LOCALE_ID) protected locale: string) {}\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\n/**\n * @deprecated Will be removed. Please use isValidDate() from @onecx/accelerator\n */\nexport function isValidDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value as any);\n}\n","import { Location } from '@angular/common'\nimport { HttpClient } from '@angular/common/http'\nimport { inject } from '@angular/core'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport { map, ReplaySubject, tap } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\nimport { AsyncTranslateLoader } from './async-translate-loader.utils'\nimport { CachingTranslateLoader } from './caching-translate-loader.utils'\nimport { TranslateCombinedLoader } from './translate.combined.loader'\n\nlet lastTranslateLoaderTimerId = 0\n\nexport function createRemoteComponentTranslateLoader(\n http: HttpClient,\n baseUrlReplaySubject$: ReplaySubject<string>,\n translationCacheService?: TranslationCacheService\n): TranslateLoader {\n const ts = translationCacheService ?? inject(TranslationCacheService)\n const timerId = lastTranslateLoaderTimerId++\n\n console.time('createRemoteComponentTranslateLoader_' + timerId)\n return new AsyncTranslateLoader(\n baseUrlReplaySubject$.pipe(\n map((baseUrl) => {\n return new TranslateCombinedLoader(\n // translations of shell or of app in standalone mode\n new CachingTranslateLoader(ts, http, `./assets/i18n/`, '.json'),\n // translations of portal-integration-angular of app\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(baseUrl, `onecx-portal-lib/assets/i18n/`),\n '.json'\n ),\n // translations of portal-integration-angular of shell\n new CachingTranslateLoader(ts, http, `./onecx-portal-lib/assets/i18n/`, '.json'),\n // translations of the app\n new CachingTranslateLoader(ts, http, Location.joinWithSlash(baseUrl, `assets/i18n/`), '.json')\n )\n }),\n tap(() => console.timeEnd('createRemoteComponentTranslateLoader_' + timerId))\n )\n )\n}\n","import { HttpClient } from '@angular/common/http'\nimport { ReplaySubject, map } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { AsyncTranslateLoader } from './async-translate-loader.utils'\nimport { TranslateCombinedLoader } from './translate.combined.loader'\nimport { createRemoteComponentTranslateLoader } from './create-remote-component-translate-loader.utils'\nimport { CachingTranslateLoader } from './caching-translate-loader.utils'\nimport { Location } from '@angular/common'\n\nexport function createRemoteComponentAndMfeTranslateLoader(\n httpClient: HttpClient,\n baseUrl: ReplaySubject<string>,\n translationCacheService: TranslationCacheService,\n appStateService: AppStateService\n) {\n return new AsyncTranslateLoader(\n appStateService.currentMfe$.pipe(\n map((currentMfe) => {\n return new TranslateCombinedLoader(\n createRemoteComponentTranslateLoader(httpClient, baseUrl, translationCacheService),\n new CachingTranslateLoader(\n translationCacheService,\n httpClient,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, 'assets/i18n/'),\n '.json'\n )\n )\n })\n )\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 { Calendar } from 'primeng/calendar'\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(calendars: QueryList<Calendar>, formKey: string): boolean {\n return (\n calendars.find((c) => {\n return c.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 calendars a list of primeng calendars of the form (use `@ViewChildren(Calendar) calendars!: QueryList<Calendar>;`)\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 calendars: QueryList<Calendar>,\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(calendars, 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","// injection tokens + related utilities\nexport * from './lib/injection-tokens/has-permission-checker'\n\n// directives\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'\n\n// components\nexport * from './lib/components/column-group-selection/column-group-selection.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/page-header/page-header.component'\nexport * from './lib/components/search-header/search-header.component'\nexport * from './lib/components/data-loading-error/data-loading-error.component'\n\n// services\nexport * from './lib/services/breadcrumb.service'\nexport * from './lib/services/translation-cache.service'\n\n// pipes\nexport * from './lib/pipes/dynamic.pipe'\nexport * from './lib/pipes/ocxtimeago.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'\n// export * from './lib/model/data-column-name-id.model'\nexport * from './lib/model/data-sort-direction'\nexport * from './lib/model/data-table-column.model'\nexport * from './lib/model/diagram-column'\n// export * from './lib/model/diagram-data'\nexport * from './lib/model/diagram-type'\nexport * from './lib/model/filter.model'\n\n// core\nexport * from './lib/angular-accelerator.module'\nexport * from './lib/angular-accelerator-primeng.module'\n\n// functions\nexport * from './lib/functions/flatten-object'\nexport * from './lib/functions/at-least-one-field-filled-validator'\n\n// utils\nexport * from './lib/utils/async-translate-loader.utils'\nexport * from './lib/utils/caching-translate-loader.utils'\nexport * from './lib/utils/colorutils'\nexport * from './lib/utils/create-translate-loader.utils'\nexport * from './lib/utils/dateutils'\nexport * from './lib/utils/objectutils'\nexport * from './lib/utils/primeicon.utils'\nexport * from './lib/utils/translate.combined.loader'\nexport * from './lib/utils/create-remote-component-and-mfe-translate-loader.utils'\nexport * from './lib/utils/create-remote-component-translate-loader.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'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","switchMap","i6","i7","i8","i11.SrcDirective","i12.DynamicPipe","i3","i4","i5","i7.PageHeaderComponent","i8.IfPermissionDirective","i9","i1.SearchHeaderComponent","i11.IfPermissionDirective","i12.TooltipOnOverflowDirective","i13.OcxTimeAgoPipe","isValidDate","i10","i12","i13","i14.IfPermissionDirective","i15.OcxTimeAgoPipe","i2.DataListGridComponent","i3.DataTableComponent","i8.DataTableComponent","i9.IfBreakpointDirective","i11.OcxTimeAgoPipe","i2.DiagramComponent","i4.ColumnGroupSelectionComponent","i5.CustomGroupColumnSelectorComponent","i6.DataLayoutSelectionComponent","i7.DataListGridSortingComponent","i8.DataViewComponent","i9.IfPermissionDirective","i10.FilterViewComponent","lastTranslateLoaderTimerId"],"mappings":"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"}
1
+ {"version":3,"file":"onecx-angular-accelerator.mjs","sources":["../../../../libs/angular-accelerator/src/lib/injection-tokens/has-permission-checker.ts","../../../../libs/angular-accelerator/src/lib/directives/if-permission.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/if-breakpoint.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/src.directive.ts","../../../../libs/angular-accelerator/src/lib/services/breadcrumb.service.ts","../../../../libs/angular-accelerator/src/lib/pipes/dynamic.pipe.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/page-header/page-header.component.html","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.ts","../../../../libs/angular-accelerator/src/lib/components/search-header/search-header.component.html","../../../../libs/angular-accelerator/src/lib/directives/advanced.directive.ts","../../../../libs/angular-accelerator/src/lib/directives/tooltipOnOverflow.directive.ts","../../../../libs/angular-accelerator/src/lib/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/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/data-loading-error/data-loading-error.component.ts","../../../../libs/angular-accelerator/src/lib/services/translation-cache.service.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator-primeng.module.ts","../../../../libs/angular-accelerator/src/lib/utils/dynamic-locale-id.ts","../../../../libs/angular-accelerator/src/lib/angular-accelerator.module.ts","../../../../libs/angular-accelerator/src/lib/functions/at-least-one-field-filled-validator.ts","../../../../libs/angular-accelerator/src/lib/utils/async-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/caching-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/translate.combined.loader.ts","../../../../libs/angular-accelerator/src/lib/utils/create-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/dateutils.ts","../../../../libs/angular-accelerator/src/lib/utils/create-remote-component-translate-loader.utils.ts","../../../../libs/angular-accelerator/src/lib/utils/create-remote-component-and-mfe-translate-loader.utils.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/index.ts","../../../../libs/angular-accelerator/src/onecx-angular-accelerator.ts"],"sourcesContent":["/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport { HasPermissionChecker } from '@onecx/angular-utils'\n\n/**\n * This checker always returns true, basically disabling the permission system on the UI side\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport { AlwaysGrantPermissionChecker } from '@onecx/angular-utils'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport { HAS_PERMISSION_CHECKER } from '@onecx/angular-utils'\n","import {\n Directive,\n EmbeddedViewRef,\n Inject,\n Input,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\nimport { Observable, of, BehaviorSubject } from 'rxjs'\nimport { switchMap } from 'rxjs/operators'\n\n@Directive({ selector: '[ocxIfPermission], [ocxIfNotPermission]' })\nexport class IfPermissionDirective implements OnInit {\n @Input('ocxIfPermission') set permission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n }\n\n @Input('ocxIfNotPermission') set notPermission(value: string | string[] | undefined) {\n this.permissionSubject$.next(value)\n this.negate = true\n }\n\n @Input() ocxIfPermissionOnMissingPermission: 'hide' | 'disable' = 'hide'\n @Input() set ocxIfNotPermissionOnMissingPermission(value: 'hide' | 'disable') {\n this.ocxIfPermissionOnMissingPermission = value\n }\n @Input() onMissingPermission: 'hide' | 'disable' = 'hide'\n\n @Input() ocxIfPermissionPermissions: string[] | undefined\n @Input()\n set ocxIfNotPermissionPermissions(value: string[] | undefined) {\n this.ocxIfPermissionPermissions = value\n }\n\n @Input()\n ocxIfPermissionElseTemplate: TemplateRef<any> | undefined\n @Input()\n set ocxIfNotPermissionElseTemplate(value: TemplateRef<any> | undefined) {\n this.ocxIfPermissionElseTemplate = value\n }\n\n private permissionChecker: HasPermissionChecker\n private permissionSubject$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n private isDisabled = false\n private directiveContentRef: EmbeddedViewRef<any> | undefined\n negate = false\n\n constructor(\n private renderer: Renderer2,\n private viewContainer: ViewContainerRef,\n @Optional()\n @Inject(HAS_PERMISSION_CHECKER)\n private hasPermissionChecker?: HasPermissionChecker,\n @Optional() private templateRef?: TemplateRef<any>,\n @Optional() private userService?: UserService\n ) {\n const validChecker = hasPermissionChecker || userService\n if (!validChecker) {\n throw 'IfPermission requires UserService or HasPermissionChecker to be provided!'\n }\n\n this.permissionChecker = validChecker\n }\n\n ngOnInit() {\n this.permissionSubject$\n .pipe(\n switchMap((permission) => {\n if (!permission) {\n return of(false)\n }\n const permissionsArray = Array.isArray(permission) ? permission : [permission]\n return this.hasPermission(permissionsArray)\n })\n )\n .subscribe((hasPermission) => {\n const shouldShowTemplate = this.negate ? !hasPermission : hasPermission\n if (shouldShowTemplate) {\n return this.showTemplateOrClear()\n }\n\n return this.showElseTemplateOrDefaultView()\n })\n }\n\n private hasPermission(permission: string[]): Observable<boolean> {\n if (this.ocxIfPermissionPermissions) {\n const result = permission.every((p) => this.ocxIfPermissionPermissions?.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission in overwrites for: `', permission)\n }\n return of(result)\n }\n\n if (this.permissionChecker.getPermissions) {\n return this.permissionChecker.getPermissions().pipe(\n switchMap((permissions) => {\n const result = permission.every((p) => permissions.includes(p))\n if (!result) {\n console.log('👮‍♀️ No permission from permission checker for: `', permission)\n }\n return of(result)\n })\n )\n }\n\n return of(this.permissionChecker.hasPermission(permission))\n }\n\n private showTemplateOrClear() {\n this.resetView()\n\n if (this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n }\n }\n\n private showElseTemplateOrDefaultView() {\n this.resetView()\n if (this.ocxIfPermissionElseTemplate) {\n this.viewContainer.createEmbeddedView(this.ocxIfPermissionElseTemplate)\n return\n }\n\n if (this.ocxIfPermissionOnMissingPermission === 'disable' && this.templateRef) {\n this.directiveContentRef = this.viewContainer.createEmbeddedView(this.templateRef)\n\n const el = this.getElement()\n el && this.renderer.setAttribute(el, 'disabled', 'disabled')\n this.isDisabled = true\n }\n }\n\n private resetView() {\n this.viewContainer.clear()\n if (this.isDisabled) {\n this.isDisabled = false\n const el = this.getElement()\n el && this.renderer.removeAttribute(el, 'disabled')\n }\n }\n\n private getElement(): Node | undefined {\n return this.directiveContentRef?.rootNodes[0]\n }\n}\n","import { Directive, HostListener, Input, OnInit, Optional, TemplateRef, ViewContainerRef } from '@angular/core'\n\n@Directive({ selector: '[ocxIfBreakpoint]' })\nexport class IfBreakpointDirective implements OnInit {\n @Input('ocxIfBreakpoint') breakpoint: 'mobile' | 'desktop' | undefined\n\n @Input()\n ocxIfBreakpointElseTemplate: TemplateRef<any> | undefined\n\n state: 'mobile' | 'desktop' | undefined\n\n constructor(\n private viewContainer: ViewContainerRef,\n @Optional() private templateRef?: TemplateRef<unknown>\n ) {}\n\n ngOnInit() {\n this.onResize()\n }\n\n @HostListener('window:resize')\n onResize() {\n const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point')\n const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches\n const isDesktop = !isMobile\n const newState = isMobile ? 'mobile' : 'desktop'\n if ((this.breakpoint === 'mobile' && isMobile) || (this.breakpoint === 'desktop' && isDesktop)) {\n if (this.templateRef && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n if (this.ocxIfBreakpointElseTemplate && newState !== this.state) {\n this.viewContainer.clear()\n this.viewContainer.createEmbeddedView(this.ocxIfBreakpointElseTemplate)\n }\n }\n this.state = newState\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http'\nimport { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core'\n\n@Directive({ selector: '[ocxSrc]' })\nexport class SrcDirective {\n private _src: string | undefined\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() error = new EventEmitter<void>()\n\n @Input()\n get ocxSrc(): string | undefined {\n return this._src\n }\n set ocxSrc(value: string | undefined) {\n if (value && this._src !== value && window.location.hostname) {\n try {\n if (new URL(value, window.location.origin).hostname === window.location.hostname) {\n this.httpClient.get(value, { observe: 'response', responseType: 'blob' }).subscribe(\n (response: HttpResponse<Blob>) => {\n // ok with content\n if (response?.status === 200) {\n const url = URL.createObjectURL(response.body as Blob)\n this.el.nativeElement.addEventListener('load', () => {\n URL.revokeObjectURL(url)\n })\n this.el.nativeElement.src = url\n }\n // no content\n if (response?.status === 204) {\n this.error.emit()\n }\n },\n () => {\n // on error\n this.error.emit()\n },\n () => {\n // on complete\n this.el.nativeElement.style.visibility = 'initial'\n }\n )\n } else {\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n } catch (error) {\n console.error('Cannot parse URL ', value, error)\n this.el.nativeElement.src = value\n this.el.nativeElement.style.visibility = 'initial'\n }\n this._src = value\n }\n }\n\n constructor(\n private el: ElementRef,\n private httpClient: HttpClient\n ) {\n this.el.nativeElement.style.visibility = 'hidden'\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRoute, ActivatedRouteSnapshot, Data, NavigationEnd, ParamMap, Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'\nimport { BehaviorSubject, filter, map } from 'rxjs'\nimport { MenuItem } from 'primeng/api'\nimport { BreadCrumbMenuItem } from '../model/breadcrumb-menu-item.model'\nimport { SyncableTopic } from '@onecx/accelerator'\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 SyncableTopic<ManualBreadcrumbs> {\n constructor() {\n super('manualBreadcrumbs', 1)\n }\n}\n\n@Injectable({ providedIn: 'any' })\n@UntilDestroy()\nexport class BreadcrumbService {\n private itemsSource$ = new ManualBreadcrumbsTopic()\n generatedItemsSource = new BehaviorSubject<MenuItem[]>([])\n\n itemsHandler = this.itemsSource$.pipe(map((manualBreadcrumbs) => manualBreadcrumbs.menuItems))\n\n constructor(\n private router: Router,\n private activeRoute: ActivatedRoute,\n private translateService: TranslateService\n ) {\n this.generateBreadcrumbs(this.activeRoute.snapshot)\n this.router.events\n .pipe(\n untilDestroyed(this),\n filter((e) => e instanceof NavigationEnd)\n )\n .subscribe(() => {\n const root = this.router.routerState.snapshot.root\n this.generateBreadcrumbs(root)\n })\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null) {\n if (route?.data['mfeInfo']) {\n const breadcrumbs: MenuItem[] = [\n {\n label: route.data['mfeInfo'].productName,\n routerLink: route.data['mfeInfo'].baseHref,\n },\n ]\n const baseUrl: string[] = (route.data['mfeInfo'].baseHref as string).split('/').filter((value) => value)\n const parentUrl: string[] = route.url.map((url) => url.path)\n const isUsingMatcher = !parentUrl.every((item) => baseUrl.includes(item))\n if (isUsingMatcher) {\n this.createBreadcrumb(route, parentUrl, breadcrumbs)\n }\n this.addBreadcrumb(route.firstChild, parentUrl, breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route?.data['breadcrumb']) {\n const breadcrumbs: MenuItem[] = []\n this.addBreadcrumb(route, [], breadcrumbs)\n this.generatedItemsSource.next(breadcrumbs)\n } else if (route) {\n this.generateBreadcrumbs(route.firstChild)\n }\n }\n\n private addBreadcrumb(route: ActivatedRouteSnapshot | null, parentUrl: string[], breadcrumbs: MenuItem[]) {\n if (route && 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 || ''] || i.label,\n title: translations[i.titleKey || ''] || i.title,\n })),\n })\n })\n } else {\n this.itemsSource$.publish({\n menuItems: items,\n })\n }\n }\n}\n","import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common'\nimport { Inject, Injector, LOCALE_ID, Pipe, PipeTransform, Type } from '@angular/core'\n\n@Pipe({\n name: 'dynamicPipe',\n})\nexport class DynamicPipe implements PipeTransform {\n knownPipes: { [name: string]: PipeTransform } = {}\n public constructor(@Inject(LOCALE_ID) locale: string, private injector: Injector) {\n this.knownPipes = {\n currency: new CurrencyPipe(locale),\n decimal: new DecimalPipe(locale),\n date: new DatePipe(locale),\n }\n }\n\n transform(value: any, requiredPipe?: Type<any>, pipeArgs?: any): any {\n if (!requiredPipe) {\n return value\n }\n\n const injector = Injector.create({\n name: 'DynamicPipe',\n parent: this.injector,\n providers: [{ provide: requiredPipe }],\n })\n const pipe = injector.get(requiredPipe)\n return pipe.transform(value, pipeArgs)\n }\n\n transform2(value: any, pipeToken: any, ...pipeArgs: any[]): any {\n if (!pipeToken) {\n return value\n } else {\n // eslint-disable-next-line no-prototype-builtins\n if (pipeToken && this.knownPipes.hasOwnProperty(pipeToken)) {\n const pipe = this.knownPipes[pipeToken]\n if (Array.isArray(pipeArgs)) {\n return pipe.transform(value, ...pipeArgs)\n } else {\n return pipe.transform(value, pipeArgs)\n }\n } else {\n return value\n }\n }\n }\n}\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n} from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { MenuItem, PrimeIcons } from 'primeng/api'\nimport { BehaviorSubject, concat, map, Observable, of, switchMap } from 'rxjs'\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { BreadcrumbService } from '../../services/breadcrumb.service'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\n\n/**\n * Action definition.\n */\nexport interface Action {\n id?: string\n label?: string\n labelKey?: string\n icon?: string\n iconPos?: 'left' | 'right' | 'top' | 'bottom'\n /**\n * Permission for this action. If the current user does not have this permission, the action will not be shown.\n */\n permission?: string\n title?: string\n titleKey?: string\n ariaLabel?: string\n ariaLabelKey?: string\n btnClass?: string\n actionCallback(): void\n disabled?: boolean\n disabledTooltip?: string\n disabledTooltipKey?: string\n show?: 'always' | 'asOverflow'\n conditional?: boolean\n // Note: This currently doesn't work with dynamic values, since a passed in Action is just a copy of the original object.\n // As a workaround, you can manually update/replace the passed in Action if you wish to update a showCondition\n showCondition?: boolean\n}\n\nexport interface ObjectDetailItem {\n label: string\n value?: string\n /**\n * @deprecated Use `valueTooltip` instead\n */\n tooltip?: string\n labelTooltip?: string\n valueTooltip?: string\n icon?: PrimeIcon\n iconStyleClass?: string\n labelPipe?: Type<any>\n valuePipe?: Type<any>\n valuePipeArgs?: string\n valueCssClass?: string\n actionItemIcon?: PrimeIcon\n actionItemCallback?: () => void\n actionItemTooltip?: string\n actionItemAriaLabelKey?: string\n actionItemAriaLabel?: string\n}\n\nexport interface HomeItem {\n menuItem: MenuItem\n page?: string\n}\n\nexport type GridColumnOptions = 1 | 2 | 3 | 4 | 6 | 12\n\n@Component({\n selector: 'ocx-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageHeaderComponent implements OnInit {\n @Input()\n public header: string | undefined\n\n @Input()\n loading = false\n\n @Input()\n figureBackground = true\n\n @Input()\n showFigure = true\n\n //image fot preview in top-header left side\n @Input()\n figureImage: string | undefined\n\n @Input()\n disableDefaultActions = false\n\n @Input()\n subheader: string | undefined\n\n _actions = new BehaviorSubject<Action[]>([])\n @Input()\n get actions() {\n return this._actions.getValue()\n }\n set actions(value) {\n this._actions.next(value)\n }\n\n @Input()\n objectDetails: ObjectDetailItem[] | undefined\n\n @Input()\n showBreadcrumbs = true\n\n @Input()\n manualBreadcrumbs = false\n\n @Input()\n enableGridView: undefined | boolean\n\n @Input()\n gridLayoutDesktopColumns: undefined | GridColumnOptions\n\n @Output()\n save = new EventEmitter()\n\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n overflowActions$ = new BehaviorSubject<MenuItem[]>([])\n inlineActions$ = new BehaviorSubject<Action[]>([])\n dd = new Date()\n breadcrumbs$!: Observable<MenuItem[]>\n\n home$!: Observable<HomeItem>\n\n figureImageLoadError = false\n\n objectPanelGridLayoutClasses = 'grid row-gap-2 m-0'\n objectPanelColumnLayoutClasses = 'flex flex-row justify-content-between overflow-x-auto'\n\n objectPanelDefaultLayoutClasses = 'flex flex-column row-gap-2 md:flex-row md:justify-content-between'\n\n objectInfoGridLayoutClasses = 'col-12 flex gap-4 md:col-6 align-items-center p-0'\n objectInfoColumnLayoutClasses = 'flex flex-column align-items-center gap-2 min-w-120'\n\n objectInfoDefaultLayoutClasses = 'flex flex-row md:flex-column md:align-items-center md:gap-2'\n\n protected breadcrumbs: BreadcrumbService\n\n constructor(\n breadcrumbs: BreadcrumbService,\n private translateService: TranslateService,\n private appStateService: AppStateService,\n private userService: UserService,\n @Inject(HAS_PERMISSION_CHECKER)\n private hasPermissionChecker?: HasPermissionChecker\n ) {\n this.breadcrumbs = breadcrumbs\n this.home$ = concat(\n of({ menuItem: { icon: PrimeIcons.HOME, routerLink: '/' } }),\n this.appStateService.currentPortal$.pipe(\n map((portal) => ({\n menuItem: {\n icon: PrimeIcons.HOME,\n routerLink: portal.baseUrl,\n },\n page: portal.portalName,\n }))\n )\n )\n\n this._actions\n .pipe(\n map(this.filterInlineActions),\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions))\n )\n .subscribe(this.inlineActions$)\n\n this._actions\n .pipe(\n map(this.filterOverflowActions),\n switchMap((actions) => {\n return this.getActionTranslationKeys(actions).pipe(map((translations) => ({ actions, translations })))\n }),\n switchMap(({ actions, translations }) => {\n return this.filterActionsBasedOnPermissions(actions).pipe(\n map((filteredActions) => ({ filteredActions, translations }))\n )\n }),\n map(({ filteredActions, translations }) => this.mapOverflowActionsToMenuItems(filteredActions, translations))\n )\n .subscribe(this.overflowActions$)\n }\n\n ngOnInit(): void {\n if (!this.manualBreadcrumbs) {\n this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource\n } else {\n this.breadcrumbs$ = this.breadcrumbs.itemsHandler\n }\n }\n\n onAction(action: string) {\n switch (action) {\n case 'save':\n this.save.emit()\n break\n default:\n break\n }\n }\n\n handleImageError() {\n this.figureImageLoadError = true\n }\n\n public generateItemStyle(item: ObjectDetailItem): string {\n let style = ''\n if (item.icon) style = style.concat(style, ' ', 'gap-1 align-items-center')\n if (item.valueCssClass) style = style.concat(style, ' ', item.valueCssClass)\n return style\n }\n\n public getObjectPanelLayoutClasses() {\n if (this.enableGridView) {\n return this.objectPanelGridLayoutClasses\n }\n if (this.enableGridView === false) {\n return this.objectPanelColumnLayoutClasses\n }\n return this.objectPanelDefaultLayoutClasses\n }\n\n public getObjectInfoLayoutClasses() {\n if (this.enableGridView) {\n return `${this.objectInfoGridLayoutClasses} lg:col-${\n this.gridLayoutDesktopColumns ? 12 / this.gridLayoutDesktopColumns : 4\n }`\n }\n if (this.enableGridView === false) {\n return this.objectInfoColumnLayoutClasses\n }\n return this.objectInfoDefaultLayoutClasses\n }\n\n private filterInlineActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'always')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterOverflowActions(actions: Action[]): Action[] {\n return actions\n .filter((a) => a.show === 'asOverflow')\n .filter((a) => {\n if (a.conditional) {\n return a.showCondition\n }\n return true\n })\n }\n\n private filterActionsBasedOnPermissions(actions: Action[]): Observable<Action[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n if (action.permission) {\n return permissions.includes(action.permission!)\n }\n return true\n })\n })\n )\n }\n\n private getActionTranslationKeys(actions: Action[]): Observable<{ [key: string]: string }> {\n const translationKeys = [\n ...actions.map((a) => a.labelKey || '').filter((a) => !!a),\n ...actions.map((a) => a.titleKey || '').filter((a) => !!a),\n ]\n return translationKeys.length ? this.translateService.get(translationKeys) : of({})\n }\n\n private mapOverflowActionsToMenuItems(actions: Action[], translations: { [key: string]: string }): MenuItem[] {\n return actions.map<MenuItem>((a) => ({\n id: a.id,\n label: a.labelKey ? translations[a.labelKey] : a.label,\n icon: a.icon,\n tooltipOptions: {\n tooltipLabel: a.titleKey ? translations[a.titleKey] : a.title,\n tooltipEvent: 'hover',\n tooltipPosition: 'top',\n },\n command: a.actionCallback,\n disabled: a.disabled,\n }))\n }\n}\n","<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n *ngIf=\"breadcrumbs$ | async as items\"\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 >\n <ng-template pTemplate=\"separator\"> <span class=\"pi pi-chevron-right\" aria-hidden=\"true\"></span> </ng-template\n ></p-breadcrumb>\n </ng-container>\n\n <div class=\"p-3 title-bar flex flex-row flex-wrap justify-content-between align-items-center gap-2\">\n <div class=\"title-wrap\">\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n [alt]=\"'OCX_PAGE_HEADER.IMAGE' | translate\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <section class=\"header\" *ngIf=\"!loading; else skeletonBar\" [attr.aria-label]=\"'Page Header'\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <div id=\"page-subheader\" *ngIf=\"!!subheader\" role=\"note\">{{ subheader }}</div>\n </section>\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <ng-container *ngIf=\"inlineActions$ | async as inlineActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [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 </ng-container>\n </div>\n </ng-container>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <ng-container *ngIf=\"overflowActions$ | async as overflowActions\">\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport { Action } from '../page-header/page-header.component'\nimport { FormControlName, FormGroup, FormGroupDirective } from '@angular/forms'\nimport { Observable, combineLatest, debounceTime, map, of, startWith } from 'rxjs'\nimport { getLocation } from '@onecx/accelerator'\nimport { CONFIG_KEY, ConfigurationService } from '@onecx/angular-integration-interface'\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 selector: 'ocx-search-header',\n templateUrl: './search-header.component.html',\n providers: [],\n})\nexport class SearchHeaderComponent implements AfterContentInit, AfterViewInit {\n @Input() header = ''\n\n /**\n * @deprecated Will be replaced by header\n */\n @Input()\n get headline(): string {\n return this.header\n }\n set headline(value: string) {\n this.header = value\n }\n @Input() subheader: string | undefined\n _viewMode: 'basic' | 'advanced' = 'basic'\n @Input()\n get viewMode(): 'basic' | 'advanced' {\n return this._viewMode\n }\n set viewMode(viewMode: 'basic' | 'advanced') {\n if (this.viewMode !== viewMode) {\n this._viewMode = viewMode\n this.viewModeChanged?.emit(this.viewMode)\n this.componentStateChanged.emit({\n activeViewMode: this.viewMode,\n })\n this.updateHeaderActions()\n setTimeout(() => this.addKeyUpEventListener())\n }\n }\n @Input() manualBreadcrumbs = false\n _actions: Action[] = []\n @Input()\n get actions() {\n return this._actions\n }\n set actions(value) {\n this._actions = value\n this.updateHeaderActions()\n }\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() searchButtonDisabled = false\n @Input() resetButtonDisabled = false\n @Input() pageName: string | undefined = getLocation().applicationPath\n\n @Output() searched: EventEmitter<any> = new EventEmitter()\n @Output() resetted: EventEmitter<any> = new EventEmitter()\n @Output() selectedSearchConfigChanged: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n @Output() viewModeChanged: EventEmitter<'basic' | 'advanced'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<SearchHeaderComponentState> = new EventEmitter()\n @ContentChild('additionalToolbarContent')\n additionalToolbarContent: TemplateRef<any> | undefined\n\n get _additionalToolbarContent(): TemplateRef<any> | undefined {\n return this.additionalToolbarContent\n }\n @ContentChild('additionalToolbarContentLeft')\n additionalToolbarContentLeft: TemplateRef<any> | undefined\n\n get _additionalToolbarContentLeft(): TemplateRef<any> | undefined {\n return this.additionalToolbarContentLeft\n }\n\n get searchConfigChangeObserved(): boolean {\n return this.selectedSearchConfigChanged.observed\n }\n\n @ContentChild(FormGroupDirective) formGroup: FormGroup | undefined\n @ContentChildren(FormControlName, { descendants: true }) visibleFormControls!: QueryList<FormControlName>\n\n @ViewChild('searchParameterFields') searchParameterFields: ElementRef | undefined\n\n hasAdvanced = false\n\n simpleAdvancedAction: Action = {\n id: 'simpleAdvancedButton',\n actionCallback: () => this.toggleViewMode(),\n show: 'always',\n }\n headerActions: Action[] = []\n searchButtonsReversed = false\n fieldValues$: Observable<{ [key: string]: unknown }> | undefined = of({})\n searchConfigChangedSlotEmitter: EventEmitter<SearchConfigData | undefined> = new EventEmitter()\n\n constructor(configurationService: ConfigurationService) {\n this.searchConfigChangedSlotEmitter.subscribe((config) => {\n this.componentStateChanged.emit({\n selectedSearchConfig: config?.name ?? null,\n })\n this.selectedSearchConfigChanged.emit(config)\n })\n this.searchButtonsReversed =\n configurationService.getProperty(CONFIG_KEY.ONECX_PORTAL_SEARCH_BUTTONS_REVERSED) === 'true'\n }\n\n ngAfterContentInit(): void {\n if (this.formGroup) {\n this.fieldValues$ = combineLatest([\n this.formGroup.valueChanges.pipe(startWith({})),\n this.visibleFormControls.changes.pipe(startWith(null)),\n ]).pipe(\n debounceTime(100),\n map(([values, _]) =>\n Object.entries(values ?? {}).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: this.isVisible(key) ? value || undefined : undefined,\n }),\n {}\n )\n )\n )\n }\n }\n\n ngAfterViewInit(): void {\n this.addKeyUpEventListener()\n }\n\n toggleViewMode() {\n this.viewMode = this.viewMode === 'basic' ? 'advanced' : 'basic'\n }\n\n onResetClicked() {\n this.resetted.emit()\n }\n\n onSearchClicked() {\n this.searched.emit()\n }\n\n updateHeaderActions() {\n const headerActions: Action[] = []\n if (this.hasAdvanced) {\n this.simpleAdvancedAction.labelKey = this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT',\n this.simpleAdvancedAction.titleKey = this.viewMode === 'basic'\n ? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'\n : 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL',\n \n headerActions.push(this.simpleAdvancedAction)\n }\n this.headerActions = headerActions.concat(this.actions)\n }\n\n addKeyUpEventListener() {\n const inputElements = this.searchParameterFields?.nativeElement.querySelectorAll('input')\n inputElements.forEach((inputElement: any) => {\n if (!inputElement.listenerAdded) {\n inputElement.addEventListener('keyup', (event: any) => this.onSearchKeyup(event))\n inputElement.listenerAdded = true\n }\n })\n }\n\n onSearchKeyup(event: any) {\n if (event.code === 'Enter') {\n this.onSearchClicked()\n }\n }\n\n private isVisible(control: string) {\n return this.visibleFormControls.some(\n (formControl) => formControl.name !== null && String(formControl.name) === control\n )\n }\n}\n","<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <section #searchParameterFields [attr.aria-label]=\"'Search Criteria'\">\n <ng-content></ng-content>\n </section>\n <section\n class=\"flex flex-wrap gap-2\"\n [ngClass]=\"searchButtonsReversed ? 'flex-row-reverse' : 'flex-row'\"\n [attr.aria-label]=\"'Search Controls'\"\n >\n <p-button\n id=\"resetButton\"\n icon=\"pi pi-eraser\"\n (onClick)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n </section>\n </div>\n</ocx-page-header>\n","import { Directive, DoCheck, Optional, TemplateRef, ViewContainerRef } from '@angular/core'\nimport { SearchHeaderComponent } from '../components/search-header/search-header.component'\n\n@Directive({ selector: '[ocxAdvanced]' })\nexport class AdvancedDirective implements DoCheck {\n constructor(\n private viewContainer: ViewContainerRef,\n @Optional() private templateRef?: TemplateRef<any>,\n @Optional() private searchHeader?: SearchHeaderComponent\n ) {\n if (!searchHeader) {\n throw 'Advanced directive can only be used inside search header component'\n }\n searchHeader.hasAdvanced = true\n }\n ngDoCheck(): void {\n if (this.searchHeader?.viewMode === 'advanced') {\n if (this.templateRef && !this.viewContainer.length) {\n this.viewContainer.createEmbeddedView(this.templateRef)\n }\n } else {\n this.viewContainer.clear()\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core'\nimport { PrimeNGConfig } from 'primeng/api'\nimport { Tooltip } from 'primeng/tooltip'\n\n@Directive({ selector: '[ocxTooltipOnOverflow]' })\nexport class TooltipOnOverflowDirective extends Tooltip implements OnDestroy, AfterViewInit {\n mutationObserver = new MutationObserver(() => {\n this.zone.run(() => {\n this.disabled = this.el.nativeElement.scrollWidth <= this.el.nativeElement.offsetWidth\n this.setOption({ disabled: this.disabled })\n }, this)\n })\n\n @Input()\n get ocxTooltipOnOverflow(): string | TemplateRef<HTMLElement> | undefined {\n return this.content\n }\n set ocxTooltipOnOverflow(value: string | TemplateRef<HTMLElement> | undefined) {\n this.content = value\n this.setOption({ tooltipLabel: value })\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy()\n this.mutationObserver.disconnect()\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit()\n this.mutationObserver.observe(this.el.nativeElement, { subtree: true, characterData: true, childList: true })\n }\n\n constructor(\n @Inject(PLATFORM_ID) platformId: any,\n el: ElementRef,\n zone: NgZone,\n config: PrimeNGConfig,\n renderer: Renderer2,\n viewContainer: ViewContainerRef\n ) {\n super(platformId, el, zone, config, renderer, viewContainer)\n renderer.setStyle(this.el.nativeElement, 'text-overflow', 'ellipsis')\n renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden')\n renderer.setStyle(this.el.nativeElement, 'white-space', 'nowrap')\n this.disabled = true\n this.setOption({ disabled: this.disabled })\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type GroupSelectionChangedEvent = { activeColumns: DataTableColumn[]; groupKey: string }\nexport interface ColumnGroupSelectionComponentState {\n activeColumnGroupKey?: string\n displayedColumns?: DataTableColumn[]\n}\n@Component({\n templateUrl: './column-group-selection.component.html',\n selector: 'ocx-column-group-selection',\n styleUrls: ['./column-group-selection.component.scss'],\n})\nexport class ColumnGroupSelectionComponent implements OnInit {\n selectedGroupKey$ = new BehaviorSubject<string>('')\n @Input()\n get selectedGroupKey(): string {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string) {\n this.selectedGroupKey$.next(value)\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: value,\n })\n }\n }\n\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n }\n @Input() placeholderKey = ''\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = ''\n\n @Output() groupSelectionChanged: EventEmitter<GroupSelectionChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<ColumnGroupSelectionComponentState> = new EventEmitter()\n\n allGroupKeys$: Observable<string[]> | undefined\n\n ngOnInit() {\n this.allGroupKeys$ = combineLatest([this.columns$, this.selectedGroupKey$]).pipe(\n map(([columns, selectedGroupKey]) =>\n columns\n .map((keys) => keys.predefinedGroupKeys || [])\n .flat()\n .concat([this.defaultGroupKey])\n .concat([selectedGroupKey])\n .filter((value) => !!value)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n )\n )\n if (this.selectedGroupKey === this.customGroupKey) {\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n })\n } else {\n const activeColumns = this.columns.filter((c) =>\n c.predefinedGroupKeys?.includes(this.selectedGroupKey$.getValue() ?? this.defaultGroupKey)\n )\n this.componentStateChanged.emit({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: activeColumns,\n })\n }\n }\n\n changeGroupSelection(event: { value: string }) {\n if (event.value === this.customGroupKey) {\n return\n }\n const activeColumns = this.columns.filter((c) => c.predefinedGroupKeys?.includes(event.value))\n this.groupSelectionChanged.emit({ activeColumns, groupKey: event.value })\n this.componentStateChanged.emit({\n activeColumnGroupKey: event.value,\n displayedColumns: activeColumns,\n })\n }\n}\n","<p-floatLabel>\n <p-dropdown\n inputId=\"columnGroupSelectionDropdown\"\n id=\"columnGroupSelectionDropdownElement\"\n *ngIf=\"(allGroupKeys$ | async)?.length\"\n (onChange)=\"changeGroupSelection($event)\"\n [options]=\"(allGroupKeys$ | async) || []\"\n [placeholder]=\"placeholderKey | translate\"\n [(ngModel)]=\"selectedGroupKey\"\n [ariaLabel]=\"'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABEL' | translate\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item ? (item | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\"> {{ item ? (item | translate) : ''}} </ng-template>\n </p-dropdown>\n <label *ngIf=\"(allGroupKeys$ | async)?.length\" for=\"columnGroupSelectionDropdown\"\n >{{ (\"OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DROPDOWN_LABEL\" | translate) }}</label\n >\n</p-floatLabel>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { DataTableColumn } from '../../model/data-table-column.model'\n\nexport type ColumnSelectionChangedEvent = { activeColumns: DataTableColumn[] }\nexport type ActionColumnChangedEvent = {\n frozenActionColumn: boolean\n actionColumnPosition: 'left' | 'right'\n}\n\nexport interface CustomGroupColumnSelectorComponentState {\n actionColumnConfig?: {\n frozen: boolean\n position: 'left' | 'right'\n }\n displayedColumns?: DataTableColumn[]\n activeColumnGroupKey?: string\n}\n\n@Component({\n 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 @Input() columns: DataTableColumn[] = []\n private _displayedColumns: DataTableColumn[] = []\n @Input()\n get displayedColumns() {\n return this._displayedColumns\n }\n set displayedColumns(value: DataTableColumn[]) {\n this._displayedColumns = value\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this._displayedColumns,\n })\n }\n @Input() customGroupKey = ''\n @Input() dialogTitle = ''\n @Input() dialogTitleKey = ''\n @Input() openButtonTitle = ''\n @Input() openButtonTitleKey = ''\n @Input() openButtonAriaLabel = ''\n @Input() openButtonAriaLabelKey = ''\n @Input() saveButtonLabel = ''\n @Input() saveButtonLabelKey = ''\n @Input() saveButtonAriaLabel = ''\n @Input() saveButtonAriaLabelKey = ''\n @Input() cancelButtonLabel = ''\n @Input() cancelButtonLabelKey = ''\n @Input() cancelButtonAriaLabel = ''\n @Input() cancelButtonAriaLabelKey = ''\n @Input() activeColumnsLabel = ''\n @Input() activeColumnsLabelKey = ''\n @Input() inactiveColumnsLabel = ''\n @Input() inactiveColumnsLabelKey = ''\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() columnSelectionChanged: EventEmitter<ColumnSelectionChangedEvent> = new EventEmitter()\n @Output() actionColumnConfigChanged: EventEmitter<ActionColumnChangedEvent> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<CustomGroupColumnSelectorComponentState> = new EventEmitter()\n\n hiddenColumnsModel: DataTableColumn[] = []\n displayedColumnsModel: DataTableColumn[] = []\n frozenActionColumnModel = false\n actionColumnPositionModel: 'left' | 'right' = 'right'\n visible = false\n alignmentOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.LEFT',\n value: 'left',\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.RIGHT',\n value: 'right',\n },\n ]\n\n frozenOptions = [\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.YES',\n value: true,\n },\n {\n label: 'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.NO',\n value: false,\n },\n ]\n\n constructor(private translate: TranslateService) {}\n\n ngOnInit(): void {\n this.componentStateChanged.emit({\n actionColumnConfig: {\n frozen: this.frozenActionColumn,\n position: this.actionColumnPosition,\n },\n displayedColumns: this.displayedColumns,\n })\n }\n\n onOpenCustomGroupColumnSelectionDialogClick() {\n this.displayedColumnsModel = [...this.displayedColumns]\n this.hiddenColumnsModel = this.columns.filter(\n (column) => !this.displayedColumnsModel.map((c) => c.id).includes(column.id)\n )\n this.frozenActionColumnModel = this.frozenActionColumn\n this.actionColumnPositionModel = this.actionColumnPosition\n this.visible = true\n }\n\n onSaveClick() {\n this.visible = false\n const colIdsBefore = this.displayedColumns.map((column) => column.id)\n const colIdsAfter = this.displayedColumnsModel.map((column) => column.id)\n\n if (!colIdsAfter.every((colId, i) => colId === colIdsBefore[i]) || colIdsAfter.length != colIdsBefore.length) {\n this.columnSelectionChanged.emit({ activeColumns: [...this.displayedColumnsModel] })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n })\n }\n\n if (\n this.frozenActionColumn != this.frozenActionColumnModel ||\n this.actionColumnPosition != this.actionColumnPositionModel\n ) {\n this.actionColumnConfigChanged.emit({\n frozenActionColumn: this.frozenActionColumnModel,\n actionColumnPosition: this.actionColumnPositionModel,\n })\n this.componentStateChanged.emit({\n displayedColumns: [...this.displayedColumnsModel],\n actionColumnConfig: {\n frozen: this.frozenActionColumnModel,\n position: this.actionColumnPositionModel,\n },\n activeColumnGroupKey: this.customGroupKey,\n })\n }\n }\n\n onCancelClick() {\n this.visible = false\n }\n}\n","<p-button\n id=\"customGroupColumnSelectorButton\"\n type=\"button\"\n (onClick)=\"onOpenCustomGroupColumnSelectionDialogClick()\"\n [pTooltip]=\"openButtonTitle || (openButtonTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n tooltipPosition=\"top\"\n icon=\"pi pi-cog\"\n styleClass=\"p-button\"\n [ariaLabel]=\"(openButtonAriaLabelKey ? (openButtonAriaLabelKey | translate) : openButtonAriaLabel) || openButtonTitle || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.OPEN_BUTTON_DETAIL' | translate)\"\n [attr.aria-controls]=\"visible ? 'customGroupColumnSelectorDialog' : null\"\n [attr.aria-expanded]=\"visible ? true : false\"\n></p-button>\n\n<p-dialog\n #dialog\n id=\"customGroupColumnSelectorDialog\"\n [(visible)]=\"visible\"\n [style]=\"{ width: '70%' }\"\n [modal]=\"true\"\n [closeAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.CLOSE' | translate)\"\n>\n <ng-template pTemplate=\"header\">\n <span [id]=\"dialog.ariaLabelledBy\" class=\"text-xl font-bold\"\n >{{ dialogTitle || (dialogTitleKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.DIALOG_TITLE' | translate)\n }}</span\n >\n </ng-template>\n\n <p-pickList\n [source]=\"displayedColumnsModel\"\n [target]=\"hiddenColumnsModel\"\n [sourceHeader]=\"activeColumnsLabel || (activeColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ACTIVE_COLUMNS_LABEL' | translate)\"\n [targetHeader]=\"inactiveColumnsLabel || (inactiveColumnsLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.INACTIVE_COLUMNS_LABEL' | translate)\"\n [dragdrop]=\"true\"\n [responsive]=\"false\"\n [sourceStyle]=\"{ height: '300px' }\"\n [targetStyle]=\"{ height: '300px' }\"\n [upButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.UP' | translate)\"\n [topButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.TOP' | translate)\"\n [downButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.DOWN' | translate)\"\n [bottomButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.BOTTOM' | translate)\"\n [rightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.RIGHT' | translate)\"\n [allRightButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_RIGHT' | translate)\"\n [leftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.LEFT' | translate)\"\n [allLeftButtonAriaLabel]=\"('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.ARIA_LABELS.ALL_LEFT' | translate)\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div>{{ item.nameKey | translate }}</div>\n </ng-template>\n </p-pickList>\n\n <div class=\"pt-4\">\n <p class=\"text-xl font-bold\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.TITLE' | translate}}</p>\n <div class=\"flex gap-6 px-3\">\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.FREEZE' | translate}}</p>\n <p-selectButton\n [options]=\"frozenOptions\"\n [(ngModel)]=\"frozenActionColumnModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"frozenActionColumn\"\n name=\"frozen-action-column-select-button\"\n >\n <ng-template let-option pTemplate>\n <label id=\"{{option.label}}\">{{option.label | translate}}</label>\n </ng-template>\n </p-selectButton>\n </div>\n <div>\n <p class=\"mb-1\">{{'OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CONFIGURE_ACTION_COLUMN.POSITION' | translate}}</p>\n <p-selectButton\n [options]=\"alignmentOptions\"\n [(ngModel)]=\"actionColumnPositionModel\"\n optionLabel=\"label\"\n optionValue=\"value\"\n id=\"actionColumnPosition\"\n class=\"mt-2\"\n name=\"action-column-position-select-button\"\n >\n <ng-template let-option pTemplate>\n <label id=\"{{option.label}}\">{{option.label | translate}}</label>\n </ng-template>\n </p-selectButton>\n </div>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <p-button\n id=\"cancelButton\"\n (onClick)=\"onCancelClick()\"\n [label]=\"cancelButtonLabel || (cancelButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_LABEL' | translate)\"\n styleClass=\"p-button\"\n [ariaLabel]=\"cancelButtonLabel || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.CANCEL_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n <p-button\n id=\"saveButton\"\n (onClick)=\"onSaveClick()\"\n [label]=\"saveButtonLabel || (saveButtonLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_LABEL' | translate)\"\n [ariaLabel]=\"saveButtonAriaLabelKey || (saveButtonAriaLabelKey | translate) || ('OCX_CUSTOM_GROUP_COLUMN_SELECTOR.SAVE_BUTTON_ARIA_LABEL' | translate)\"\n ></p-button>\n </ng-template>\n</p-dialog>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { PrimeIcons } from 'primeng/api'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\ninterface ViewingLayouts {\n id: string\n icon: PrimeIcon\n layout: 'grid' | 'list' | 'table'\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nconst ALL_VIEW_LAYOUTS: ViewingLayouts[] = [\n {\n id: 'ocx-data-layout-selection-list',\n icon: PrimeIcons.LIST,\n layout: 'list',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.LIST',\n },\n {\n id: 'ocx-data-layout-selection-grid',\n icon: PrimeIcons.TH_LARGE,\n layout: 'grid',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.GRID',\n },\n {\n id: 'ocx-data-layout-selection-table',\n icon: PrimeIcons.TABLE,\n layout: 'table',\n tooltipKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n labelKey: 'OCX_DATA_LAYOUT_SELECTION.LAYOUT.TABLE',\n },\n]\n\nexport interface DataLayoutSelectionComponentState {\n layout?: 'grid' | 'list' | 'table'\n}\n@Component({\n selector: 'ocx-data-layout-selection',\n templateUrl: './data-layout-selection.component.html',\n styleUrls: ['./data-layout-selection.component.scss'],\n})\nexport class DataLayoutSelectionComponent implements OnInit {\n @Input() supportedViewLayouts: Array<string> = []\n @Input()\n set layout(value: 'grid' | 'list' | 'table') {\n this.selectedViewLayout = ALL_VIEW_LAYOUTS.find((v) => v.layout === value)\n }\n get layout(): 'grid' | 'list' | 'table' {\n return this.selectedViewLayout?.layout || 'table'\n }\n\n @Output() dataViewLayoutChange: EventEmitter<'grid' | 'list' | 'table'> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataLayoutSelectionComponentState> = new EventEmitter()\n\n viewingLayouts: ViewingLayouts[] = []\n selectedViewLayout: ViewingLayouts | undefined\n\n ngOnInit(): void {\n this.viewingLayouts = ALL_VIEW_LAYOUTS.filter((vl) => this.supportedViewLayouts.includes(vl.layout))\n this.componentStateChanged.emit({\n layout: this.layout,\n })\n }\n\n onDataViewLayoutChange(event: { icon: PrimeIcon; layout: 'grid' | 'list' | 'table' }): void {\n this.dataViewLayoutChange.emit(event.layout)\n this.componentStateChanged.emit({\n layout: event.layout,\n })\n }\n}\n","<div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <p-selectButton\n *ngIf=\"viewingLayouts.length > 1\"\n [options]=\"viewingLayouts\"\n [(ngModel)]=\"selectedViewLayout\"\n optionLabel=\"id\"\n (onChange)=\"onDataViewLayoutChange($event.value)\"\n >\n <ng-template let-item pTemplate>\n <i [class]=\"item.icon\" [pTooltip]=\"item.tooltip || (item.tooltipKey | translate)\" tooltipPosition=\"top\"></i>\n <label style=\"display: none\" id=\"{{item.id}}\">{{item.labelKey | translate}}</label>\n </ng-template>\n </p-selectButton>\n</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 * @deprecated Will be removed with the next major v6 upgrade.\n * Please use pTemplate=\"column id + IdCell\" in DataTable or\n * pTemplate=\"column id + IdTableCell\" in DataView and InteractiveDataView\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdCell\"\n */\n CUSTOM = 'CUSTOM',\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 Filter = { columnId: string; value: unknown; filterType?: FilterType }\n\nexport enum FilterType {\n EQUAL = 'EQUAL',\n TRUTHY = 'TRUTHY',\n}\n","import { TranslateService } from '@ngx-translate/core'\nimport { Observable, map, of } from 'rxjs'\nimport { flattenObject } from '../../functions/flatten-object'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { ListGridData } from '../../components/data-list-grid/data-list-grid.component'\nimport { Row } from '../../components/data-table/data-table.component'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { Filter, FilterType } from '../../model/filter.model'\n\ntype RowListGridData = ListGridData | Row\n\nexport class DataSortBase {\n constructor(\n protected locale: string,\n protected translateService: TranslateService\n ) {}\n\n translateItems(\n [items, filters, sortColumn, sortDirection]: [RowListGridData[], Filter[], string, DataSortDirection],\n columns: DataTableColumn[],\n clientSideFiltering: boolean,\n clientSideSorting: boolean\n ): Observable<[RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>]> {\n if (clientSideFiltering || clientSideSorting) {\n let translationKeys: string[] = []\n const translatedColumns = columns.filter((c) => c.columnType === ColumnType.TRANSLATION_KEY)\n translatedColumns.forEach((c) => {\n translationKeys = [\n ...translationKeys,\n ...items.map((i) => ObjectUtils.resolveFieldData(i, c.id)?.toString()).filter((v) => !!v),\n ]\n })\n if (translationKeys.length) {\n return this.translateService.get(translationKeys).pipe(\n map((translatedValues: Record<string, string>) => {\n const translations: Record<string, Record<string, string>> = {}\n translatedColumns.forEach((c) => {\n translations[c.id] = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, c.id)?.toString() || '',\n translatedValues[ObjectUtils.resolveFieldData(i, c.id)?.toString()],\n ])\n )\n })\n return [items, filters, sortColumn, sortDirection, translations]\n })\n )\n }\n }\n return of([items, filters, sortColumn, sortDirection, {}])\n }\n\n filterItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n clientSideFiltering: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideFiltering) {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n return [\n items.filter((item) =>\n filters\n .map((filter) => filter.columnId)\n .filter((value, index, self) => self.indexOf(value) === index && value != null)\n .every((filterColumnId) =>\n filters\n .filter((filter) => filter.columnId === filterColumnId)\n .some((filter) => {\n const value = (\n translations[filter.columnId]?.[ObjectUtils.resolveFieldData(item, filter.columnId)?.toString()] ||\n ObjectUtils.resolveFieldData(item, filter.columnId)\n )?.toString()\n switch (filter.filterType) {\n case undefined:\n case FilterType.EQUAL:\n return value === String(filter.value)\n case FilterType.TRUTHY: {\n return filter.value ? !!value : !value\n }\n }\n })\n )\n ),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n sortItems(\n [items, filters, sortColumn, sortDirection, translations]: [\n RowListGridData[],\n Filter[],\n string,\n DataSortDirection,\n Record<string, Record<string, string>>,\n ],\n columns: DataTableColumn[],\n clientSideSorting: boolean\n ): [RowListGridData[], Filter[], string, DataSortDirection, Record<string, Record<string, string>>] {\n if (!clientSideSorting || sortColumn === '') {\n return [items, filters, sortColumn, sortDirection, translations]\n }\n const column = columns.find((h) => h.id === sortColumn)\n let colValues: Record<string, string>\n if (column?.columnType === ColumnType.DATE || column?.columnType === ColumnType.RELATIVE_DATE) {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ObjectUtils.resolveFieldData(i, sortColumn) as Date,\n ])\n )\n } else {\n colValues = Object.fromEntries(\n items.map((i) => [\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ObjectUtils.resolveFieldData(i, sortColumn)?.toString(),\n ])\n )\n }\n if (column?.columnType === ColumnType.TRANSLATION_KEY) {\n colValues = translations[sortColumn]\n }\n return [\n [...items].sort(this.createCompareFunction(colValues, sortColumn, sortDirection)),\n filters,\n sortColumn,\n sortDirection,\n translations,\n ]\n }\n\n flattenItems(items: RowListGridData[]) {\n return items.map((i) => flattenObject(i))\n }\n\n createCompareFunction(\n translatedColValues: Record<string, string>,\n sortColumn: string,\n sortDirection: DataSortDirection\n ): (a: Record<string, any>, b: Record<string, any>) => number {\n let direction = 0\n if (sortDirection === DataSortDirection.ASCENDING) {\n direction = 1\n } else if (sortDirection === DataSortDirection.DESCENDING) {\n direction = -1\n }\n return (data1, data2) => {\n if (direction === 0) {\n return 0\n }\n let result\n const value1 = translatedColValues[ObjectUtils.resolveFieldData(data1, sortColumn)]\n const value2 = translatedColValues[ObjectUtils.resolveFieldData(data2, sortColumn)]\n\n if (value1 == null && value2 != null) result = -1\n else if (value1 != null && value2 == null) result = 1\n else if (value1 == null && value2 == null) result = 0\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, [this.locale, 'en', 'de'], { numeric: true })\n else {\n if (value1 < value2) {\n result = -1\n } else if (value1 > value2) {\n result = 1\n } else {\n result = 0\n }\n }\n return direction * result\n }\n }\n}\n","import { ChangeDetectorRef, NgZone, OnDestroy, Pipe, PipeTransform } from '@angular/core'\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core'\n\n@Pipe({\n name: 'timeago',\n})\n// eslint-disable-next-line @angular-eslint/use-pipe-transform-interface\nexport class OcxTimeAgoPipe extends TranslatePipe implements OnDestroy, PipeTransform {\n private timer: number | undefined | null\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private ngZone: NgZone,\n private translateService: TranslateService\n ) {\n super(translateService, 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 AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Inject,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\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 { BehaviorSubject, Observable, combineLatest, debounceTime, first, map, mergeMap, of, switchMap } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { Row } from '../data-table/data-table.component'\nimport { Filter } from '../../model/filter.model'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\n\nexport type ListGridData = {\n id: string | number\n imagePath: string | number\n [columnId: string]: unknown\n}\n\ntype RowListGridData = ListGridData & Row\n\nexport interface ListGridDataMenuItem extends MenuItem {\n permission: string\n}\n\nexport interface DataListGridComponentState {\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n selector: 'ocx-data-list-grid',\n templateUrl: './data-list-grid.component.html',\n styleUrls: ['./data-list-grid.component.scss'],\n})\nexport class DataListGridComponent extends DataSortBase implements OnInit, DoCheck, AfterContentInit {\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() sortStates: DataSortDirection[] = []\n\n displayedPageSizes$: Observable<(number | { showAll: string })[]>\n _pageSizes$ = new BehaviorSubject<(number | { showAll: string })[]>([10, 25, 50])\n @Input()\n get pageSizes(): (number | { showAll: string })[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: (number | { showAll: string })[]) {\n this._pageSizes$.next(value)\n }\n\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n _showAllOption$ = new BehaviorSubject<boolean>(false)\n @Input()\n set showAllOption(value: boolean) {\n this._showAllOption$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() fallbackImage = 'placeholder.png'\n @Input() layout: 'grid' | 'list' = 'grid'\n _viewPermission$ = new BehaviorSubject<string | string[] | undefined>(undefined)\n @Input()\n get viewPermission(): string | string[] | undefined {\n return this._viewPermission$.getValue()\n }\n set viewPermission(value: string | string[] | undefined) {\n this._viewPermission$.next(value)\n }\n @Input() editPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() viewMenuItemKey: string | undefined\n @Input() editMenuItemKey: string | undefined\n @Input() deleteMenuItemKey: string | undefined\n @Input() paginator = true\n @Input() page = 0\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n }\n @Input() name = ''\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n _data$ = new BehaviorSubject<RowListGridData[]>([])\n @Input()\n get data(): RowListGridData[] {\n return this._data$.getValue()\n }\n set data(value: RowListGridData[]) {\n !this._data$.getValue().length ?? this.resetPage()\n this._originalData = [...value]\n this._data$.next([...value])\n }\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n !this._filters$.getValue().length ?? this.resetPage()\n this._filters$.next(value)\n }\n _originalData: RowListGridData[] = []\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n if (value === DataSortDirection.NONE) {\n this._data$.next([...this._originalData])\n }\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdListValue\"\n */\n @Input() customListValueTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdListValue\"\n */\n @ContentChild('customListValue') customListValueChildTemplate: TemplateRef<any> | undefined\n get _customListValue(): TemplateRef<any> | undefined {\n return this.customListValueTemplate || this.customListValueChildTemplate\n }\n\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n\n inlineListActions$: Observable<DataAction[]>\n overflowListActions$: Observable<DataAction[]>\n overflowListMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n\n @Output() viewItem = new EventEmitter<ListGridData>()\n @Output() editItem = new EventEmitter<ListGridData>()\n @Output() deleteItem = new EventEmitter<ListGridData>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataListGridComponentState>()\n\n get viewItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteItem.observed\n }\n\n get sortDirectionNumber(): number {\n if (this.sortDirection === DataSortDirection.ASCENDING) return 1\n if (this.sortDirection === DataSortDirection.DESCENDING) return -1\n return 0\n }\n\n gridMenuItems$: Observable<MenuItem[]>\n _selectedItem$ = new BehaviorSubject<ListGridData | undefined>(undefined)\n observedOutputs$ = new BehaviorSubject<number>(0)\n\n displayedItems$: Observable<unknown[]> | undefined\n fallbackImagePath$!: Observable<string>\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n columnType = ColumnType\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n hasViewPermission$: Observable<boolean>\n\n constructor(\n @Inject(LOCALE_ID) locale: string,\n translateService: TranslateService,\n private userService: UserService,\n private router: Router,\n private injector: Injector,\n private appStateService: AppStateService,\n @Inject(HAS_PERMISSION_CHECKER) @Optional() private hasPermissionChecker?: HasPermissionChecker\n ) {\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.fallbackImagePath$ = this.appStateService.currentMfe$.pipe(\n map((currentMfe) => this.getFallbackImagePath(currentMfe))\n )\n this.displayedPageSizes$ = combineLatest([\n this._pageSizes$,\n this.translateService.get('OCX_DATA_TABLE.ALL'),\n this._showAllOption$,\n ]).pipe(\n map(([pageSizes, translation, showAllOption]) =>\n showAllOption ? pageSizes.concat({ showAll: translation }) : pageSizes\n )\n )\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.inlineListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowListActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.overflowListMenuItems$ = combineLatest([this.overflowListActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n this.hasViewPermission$ = this._viewPermission$.pipe(\n map((permission) => {\n if (!permission) return []\n return Array.isArray(permission) ? permission : [permission]\n }),\n switchMap((permissionArray) => {\n if (permissionArray.length === 0) {\n return of(true)\n }\n return this.getPermissions().pipe(map((permissions) => permissionArray.every((p) => permissions.includes(p))))\n })\n )\n\n this.gridMenuItems$ = combineLatest([\n this.getPermissions(),\n this._additionalActions$.asObservable(),\n this._selectedItem$.asObservable(),\n this.observedOutputs$.asObservable(),\n ]).pipe(\n switchMap(([permissions, additionalActions, selectedItem, _observedOutputs]) =>\n this.filterActionsBasedOnPermissions(additionalActions, permissions).pipe(\n map((permittedActions) => ({ permissions, additionalActions: permittedActions, selectedItem }))\n )\n ),\n switchMap(({ permissions, additionalActions, selectedItem }) => {\n return this.getGridActionsTranslations(additionalActions, permissions).pipe(\n map((translations) => ({ permissions, additionalActions, selectedItem, translations }))\n )\n }),\n map(({ permissions, additionalActions, selectedItem, translations }) =>\n this.mapGridMenuItems(permissions, additionalActions, selectedItem, translations)\n )\n )\n }\n\n ngDoCheck(): void {\n const observedOutputs = <any>this.viewItem.observed + <any>this.deleteItem.observed + <any>this.editItem.observed\n if (this.observedOutputs$.getValue() !== observedOutputs) {\n this.observedOutputs$.next(observedOutputs)\n }\n }\n\n ngOnInit(): void {\n this.displayedItems$ = combineLatest([this._data$, this._filters$, this._sortField$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([items]) => items)\n )\n\n this.emitComponentStateChanged()\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'customListValue':\n this.customListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n }\n })\n }\n\n onDeleteRow(element: ListGridData) {\n this.deleteItem.emit(element)\n }\n\n onViewRow(element: ListGridData) {\n this.viewItem.emit(element)\n }\n\n onEditRow(element: ListGridData) {\n this.editItem.emit(element)\n }\n\n imgError(item: ListGridData) {\n item.imagePath = ''\n }\n\n getFallbackImagePath(mfeInfo: MfeInfo) {\n return mfeInfo?.remoteBaseUrl\n ? `${mfeInfo.remoteBaseUrl}/onecx-portal-lib/assets/images/${this.fallbackImage}`\n : `./onecx-portal-lib/assets/images/${this.fallbackImage}`\n }\n\n setSelectedItem(item: ListGridData) {\n this._selectedItem$.next(item)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n emitComponentStateChanged(state: DataListGridComponentState = {}) {\n this.displayedPageSize$.pipe(first()).subscribe((pageSize) => {\n this.componentStateChanged.emit({\n pageSize,\n activePage: this.page,\n ...state,\n })\n })\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!this.resolveFieldData(object, key)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowListActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n getFilteredColumns() {\n let ids: string[] = [...(this.subtitleLineIds ?? [])]\n if (this.titleLineId) {\n ids = [this.titleLineId, ...(this.subtitleLineIds ?? [])]\n }\n return this.columns.filter((c) => !ids.includes(c.id))\n }\n\n findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n }\n\n getTemplate(column: DataTableColumn): Observable<TemplateRef<any> | null> {\n if (!this.templatesObservables[column.id]) {\n this.templatesObservables[column.id] = combineLatest([\n this.templates$,\n this.viewTemplates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, vt, pt]) => {\n const templates = [...(t ?? []), ...(vt ?? []), ...(pt ?? [])]\n const columnTemplate = templates.find((template) => template.name === column.id + 'IdListValue')?.template\n if (columnTemplate) {\n return columnTemplate\n }\n switch (column.columnType) {\n case ColumnType.DATE:\n return (\n this._dateListValue ??\n this.findTemplate(templates, ['dateListValue', 'defaultDateListValue'])?.template ??\n null\n )\n case ColumnType.NUMBER:\n return (\n this._numberListValue ??\n this.findTemplate(templates, ['numberListValue', 'defaultNumberListValue'])?.template ??\n null\n )\n case ColumnType.RELATIVE_DATE:\n return (\n this._relativeDateListValue ??\n this.findTemplate(templates, ['relativeDateListValue', 'defaultRelativeDateListValue'])?.template ??\n null\n )\n case ColumnType.TRANSLATION_KEY:\n return (\n this._translationKeyListValue ??\n this.findTemplate(templates, ['translationKeyListValue', 'defaultTranslationKeyListValue'])?.template ??\n null\n )\n case ColumnType.CUSTOM:\n return (\n this._customListValue ??\n this.findTemplate(templates, ['customListValue', 'defaultCustomListValue'])?.template ??\n null\n )\n default:\n return (\n this._stringListValue ??\n this.findTemplate(templates, ['stringListValue', 'defaultStringListValue'])?.template ??\n null\n )\n }\n })\n )\n }\n return this.templatesObservables[column.id]\n }\n\n private mapGridMenuItems(\n permissions: string[],\n additionalActions: DataAction[],\n selectedItem: ListGridData | undefined,\n translations: Record<string, string>\n ): MenuItem[] {\n let deleteDisabled = false\n let editDisabled = false\n let viewDisabled = false\n\n let deleteVisible = true\n let editVisible = true\n let viewVisible = true\n\n if (selectedItem) {\n viewDisabled = !!this.viewActionEnabledField && !this.fieldIsTruthy(selectedItem, this.viewActionEnabledField)\n editDisabled = !!this.editActionEnabledField && !this.fieldIsTruthy(selectedItem, this.editActionEnabledField)\n deleteDisabled =\n !!this.deleteActionEnabledField && !this.fieldIsTruthy(selectedItem, this.deleteActionEnabledField)\n\n viewVisible = !this.viewActionVisibleField || this.fieldIsTruthy(selectedItem, this.viewActionVisibleField)\n editVisible = !this.editActionVisibleField || this.fieldIsTruthy(selectedItem, this.editActionVisibleField)\n deleteVisible = !this.deleteActionVisibleField || this.fieldIsTruthy(selectedItem, this.deleteActionVisibleField)\n }\n\n const menuItems: MenuItem[] = []\n const automationId = 'data-grid-action-button'\n const automationIdHidden = 'data-grid-action-button-hidden'\n if (this.shouldDisplayAction(this.viewPermission, this.viewItem, permissions)) {\n menuItems.push({\n label: translations[this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW'],\n icon: PrimeIcons.EYE,\n command: () => this.viewItem.emit(selectedItem),\n disabled: viewDisabled,\n visible: viewVisible,\n automationId: viewVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.editPermission, this.editItem, permissions)) {\n menuItems.push({\n label: translations[this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT'],\n icon: PrimeIcons.PENCIL,\n command: () => this.editItem.emit(selectedItem),\n disabled: editDisabled,\n visible: editVisible,\n automationId: editVisible ? automationId : automationIdHidden,\n })\n }\n if (this.shouldDisplayAction(this.deletePermission, this.deleteItem, permissions)) {\n menuItems.push({\n label: translations[this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE'],\n icon: PrimeIcons.TRASH,\n command: () => this.deleteItem.emit(selectedItem),\n disabled: deleteDisabled,\n visible: deleteVisible,\n automationId: deleteVisible ? automationId : automationIdHidden,\n })\n }\n const val = menuItems.concat(\n additionalActions.map((a) => {\n const isVisible = !a.actionVisibleField || this.fieldIsTruthy(selectedItem, a.actionVisibleField)\n return {\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(selectedItem, a.actionEnabledField)),\n visible: isVisible,\n command: () => a.callback(selectedItem),\n automationId: isVisible ? automationId : automationIdHidden,\n }\n })\n )\n return val\n }\n\n private getGridActionsTranslations(\n additionalActions: DataAction[],\n permissions: string[]\n ): Observable<Record<string, string>> {\n return this.translateService.get([\n this.viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW',\n this.editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT',\n this.deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE',\n ...additionalActions\n .filter((action) => {\n const permissionsArray = Array.isArray(action.permission) ? action.permission : [action.permission]\n return permissionsArray.every((p) => permissions.includes(p))\n })\n .map((a) => a.labelKey || ''),\n ])\n }\n\n private shouldDisplayAction(\n permission: string | string[] | undefined,\n emitter: EventEmitter<any>,\n userPermissions: string[]\n ): boolean {\n const permissions = Array.isArray(permission) ? permission : permission ? [permission] : []\n return emitter.observed && permissions.every((p) => userPermissions.includes(p))\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[], permissions?: string[]): Observable<DataAction[]> {\n const permissions$ = permissions ? of(permissions) : this.getPermissions()\n return permissions$.pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n\n private getPermissions(): Observable<string[]> {\n if (this.hasPermissionChecker?.getPermissions) {\n return this.hasPermissionChecker.getPermissions()\n }\n\n return this.userService.getPermissions()\n }\n}\n","<ng-container *ngIf=\"(displayedPageSize$ | async) as displayedPageSize\">\n <p-dataView\n *ngIf=\"(columnTemplates$ | async) ?? {} as columnTemplates\"\n [value]=\"(displayedItems$ | async) ?? []\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [layout]=\"layout\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"(displayedPageSizes$ | async) ?? []\"\n id=\"dataListGrid_{{name}}\"\n paginatorDropdownAppendTo=\"body\"\n >\n <ng-template #gridItem let-rows pTemplate=\"gridItem\">\n <div class=\"p-grid p-nogutter grid grid-nogutter\">\n <ng-template ngFor let-item [ngForOf]=\"rows\">\n <ng-container\n [ngTemplateOutlet]=\"_gridItem ? _gridItem : defaultGridItem\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </ng-template>\n </div>\n </ng-template>\n\n <ng-template #listItem let-rows pTemplate=\"listItem\">\n <div class=\"p-grid p-nogutter grid grid-nogutter\">\n <ng-template ngFor let-item [ngForOf]=\"rows\">\n @defer (on viewport; on idle){\n <ng-container\n [ngTemplateOutlet]=\"_listItem ? _listItem : defaultListItem\"\n [ngTemplateOutletContext]=\"{\n $implicit:item,\n item:item,\n columnTemplates: columnTemplates\n }\"\n ></ng-container>\n } @placeholder {\n <div style=\"width: 100%; height: 80px\"></div>\n }\n </ng-template>\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</ng-container>\n\n<ng-template #defaultGridItem let-item>\n <div class=\"col-12 lg:col-6 xl:col-4 flex\">\n <div class=\"data-grid-item card flex flex-column justify-content-between w-12 lg:w-11 mb-4 mt-4 align-self-stretch\">\n <div class=\"flex justify-content-center mb-3\">\n <img\n class=\"image\"\n src=\"{{ item.imagePath || (fallbackImagePath$ | async) }}\"\n (error)=\"imgError(item)\"\n alt=\"{{resolveFieldData(item, titleLineId)|| ''}}\"\n />\n </div>\n <div class=\"flex flex-row justify-content-between align-items-center\">\n <div class=\"data-grid-items flex-row\">\n <div class=\"item-name font-medium mr-3 text-2xl\">\n <ng-container *ngIf=\"hasViewPermission$ | async as hasViewPermission; else noViewPermission\">\n <a [routerLink]=\"\" (click)=\"onViewRow(item)\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-container>\n <ng-template #noViewPermission>\n <a [routerLink]=\"\">{{ resolveFieldData(item, titleLineId) || '' }}</a>\n </ng-template>\n </div>\n <ng-container\n [ngTemplateOutlet]=\"_gridItemSubtitleLines ? _gridItemSubtitleLines : defaultGridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div *ngIf=\"(gridMenuItems$ | async) as gridMenuItems\">\n <p-menu #menu [model]=\"gridMenuItems\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n (click)=\"setSelectedItem(item); menu.toggle($event)\"\n icon=\"pi pi-ellipsis-v\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n class=\"more-actions-menu-button menu-btn\"\n [attr.name]=\"'data-grid-item-menu-button'\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n ></button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultGridItemSubtitleLines let-item>\n <div *ngFor=\"let subtitleLineId of subtitleLineIds\" class=\"subtitleLine edit-time text-xl my-3\">\n {{ resolveFieldData(item, subtitleLineId) }}\n </div>\n</ng-template>\n<ng-template #defaultListItem let-item=\"item\" let-columnTemplates=\"columnTemplates\">\n <div class=\"col-12\" *ngIf=\"columnTemplates\">\n <div class=\"data-list-items p-3\">\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 <span *ngIf=\"titleLineId\">{{ resolveFieldData(item, titleLineId) || '' }}</span>\n </div>\n <div class=\"flex flex-row\">\n <ng-container\n *ngIf=\"viewItemObserved && (!viewActionVisibleField || fieldIsTruthy(item, viewActionVisibleField))\"\n >\n <button\n id=\"{{resolveFieldData(item, 'id')}}-viewButton\"\n type=\"button\"\n icon=\"pi pi-eye\"\n pButton\n class=\"p-button-rounded p-button-text mb-1 mr-2 viewListItemButton\"\n [pTooltip]=\"(viewMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.VIEW') | translate\"\n tooltipPosition=\"top\"\n [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 </ng-container>\n <ng-container\n *ngIf=\"editItemObserved && (!editActionVisibleField || fieldIsTruthy(item, editActionVisibleField))\"\n >\n <button\n id=\"{{resolveFieldData(item, 'id')}}-editButton\"\n type=\"button\"\n class=\"p-button-rounded p-button-text mb-1 mr-2 editListItemButton\"\n icon=\"pi pi-pencil\"\n pButton\n [pTooltip]=\"(editMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.EDIT') | translate\"\n tooltipPosition=\"top\"\n [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 </ng-container>\n <ng-container\n *ngIf=\"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 [pTooltip]=\"(deleteMenuItemKey || 'OCX_DATA_LIST_GRID.MENU.DELETE') | translate\"\n tooltipPosition=\"top\"\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 </ng-container>\n <ng-container *ngFor=\"let action of inlineListActions$ | async\">\n <ng-container *ngIf=\"(!action.actionVisibleField || fieldIsTruthy(item, action.actionVisibleField))\">\n <button\n id=\"{{resolveFieldData(item, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(item)\"\n [pTooltip]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n tooltipPosition=\"top\"\n [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 </ng-container>\n </ng-container>\n <ng-container *ngIf=\"hasVisibleOverflowMenuItems(item) | async\">\n <p-menu #menu [model]=\"(overflowListMenuItems$ | async) || []\" [popup]=\"true\" appendTo=\"body\"></p-menu>\n <button\n pButton\n class=\"p-button-rounded p-button-text\"\n [icon]=\"'pi pi-ellipsis-v'\"\n (click)=\"toggleOverflowMenu($event, menu, item)\"\n [attr.aria-label]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_DATA_LIST_GRID.MORE_ACTIONS_TOOLTIP' | translate\"\n tooltipPosition=\"top\"\n [attr.name]=\"'data-list-overflow-item-menu-button'\"\n ></button>\n </ng-container>\n </div>\n </div>\n <div class=\"text-base font-light my-1\">\n <ng-container\n [ngTemplateOutlet]=\"_listItemSubtitleLines ? _listItemSubtitleLines : defaultListItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n ></ng-container>\n </div>\n <div class=\"flex flex-wrap\">\n <div *ngFor=\"let col of getFilteredColumns()\" class=\"w-12rem my-2 mr-2\">\n <div class=\"font-bold\" [ocxTooltipOnOverflow]=\"col.nameKey | translate\" tooltipPosition=\"top\">\n {{ col.nameKey | translate }}\n </div>\n <div\n [ocxTooltipOnOverflow]=\"col.columnType === columnType.TRANSLATION_KEY ? (resolveFieldData(item,col.id) | translate) : resolveFieldData(item, col.id)\"\n tooltipPosition=\"top\"\n >\n @defer(on viewport;){\n <ng-container\n [ngTemplateOutlet]=\"_listValue ? _listValue: defaultListValue\"\n [ngTemplateOutletContext]=\"{\n rowObject: item,\n column: col,\n columnTemplates: columnTemplates\n }\"\n >\n </ng-container>\n } @placeholder {\n <p-skeleton width=\"5rem\" />\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultListItemSubtitleLines let-item=\"$implicit\">\n <div *ngFor=\"let subtitleLineId of subtitleLineIds\" class=\"subtitleLine text-xl my-3\">\n {{ resolveFieldData(item, subtitleLineId) }}\n </div>\n</ng-template>\n\n<ng-template #defaultListValue let-rowObject=\"rowObject\" let-column=\"column\" let-columnTemplates=\"columnTemplates\">\n <ng-container\n *ngIf=\"columnTemplates[column.id]\"\n [ngTemplateOutlet]=\"columnTemplates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column\n }\"\n >\n </ng-container>\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=\"defaultCustomListValue\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyListValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataColumnNameId } from '../../model/data-column-name-id.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { DropdownChangeEvent } from 'primeng/dropdown'\n\nexport type ListGridSort = { sortColumn: string; sortDirection: DataSortDirection }\nexport interface DataListGridSortingComponentState {\n sorting?: ListGridSort\n}\n\n@Component({\n selector: 'ocx-data-list-grid-sorting',\n templateUrl: './data-list-grid-sorting.component.html',\n styleUrls: ['./data-list-grid-sorting.component.scss'],\n})\nexport class DataListGridSortingComponent implements OnInit {\n @Input() columns: DataTableColumn[] = []\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortField$ = new BehaviorSubject<string>('')\n @Input()\n get sortField(): string {\n return this?._sortField$.getValue()\n }\n set sortField(value: string) {\n this._sortField$.next(value)\n }\n\n @Output() sortChange: EventEmitter<string> = new EventEmitter()\n @Output() sortDirectionChange: EventEmitter<DataSortDirection> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DataListGridSortingComponentState> = new EventEmitter()\n @Output() columnsChange: EventEmitter<string[]> = new EventEmitter()\n selectedSortingOption: DataColumnNameId | undefined\n dropdownOptions: DataColumnNameId[] = []\n\n ngOnInit(): void {\n this.columns.forEach((element) => this.dropdownOptions.push({ columnId: element.id, columnName: element.nameKey }))\n this.selectedSortingOption = this.dropdownOptions.find((e) => e.columnId === this?.sortField)\n this.emitComponentStateChange()\n }\n\n selectSorting(event: DropdownChangeEvent): void {\n this._sortField$.next(event.value.columnId)\n this.sortChange.emit(event.value.columnId)\n this.emitComponentStateChange()\n }\n sortDirectionChanged(): void {\n const newSortDirection = this.nextSortDirection()\n this._sortDirection$.next(newSortDirection)\n this.sortDirectionChange.emit(newSortDirection)\n this.emitComponentStateChange()\n }\n\n nextSortDirection() {\n return this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n emitComponentStateChange() {\n this.componentStateChanged.emit({\n sorting: {\n sortColumn: this.sortField,\n sortDirection: this.sortDirection,\n },\n })\n }\n\n sortIcon() {\n switch (this.sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'pi-sort-amount-up'\n case DataSortDirection.DESCENDING:\n return 'pi-sort-amount-down'\n default:\n return 'pi-sort-alt'\n }\n }\n\n sortIconTitle() {\n return this.sortDirectionToTitle(this.sortDirection)\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.ASCENDING_TOOLTIP'\n case DataSortDirection.DESCENDING:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DESCENDING_TOOLTIP'\n default:\n return 'OCX_LIST_GRID_SORT.TOGGLE_BUTTON.DEFAULT_TOOLTIP'\n }\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n <p-dropdown\n id=\"dataListGridSortingDropdown\"\n [(ngModel)]=\"selectedSortingOption\"\n class=\"sort-dropdown\"\n [options]=\"dropdownOptions\"\n [placeholder]=\"('OCX_LIST_GRID_SORT.DROPDOWN.PLACEHOLDER' | translate)\"\n (onChange)=\"selectSorting($event)\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.DROPDOWN.ARIA_LABEL' | translate)\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ item?.columnName ? (item.columnName | translate) : ''}} </ng-template>\n <ng-template let-item pTemplate=\"selectedItem\">\n {{ item?.columnName ? (item.columnName | translate) : ''}}\n </ng-template></p-dropdown\n >\n <p-button\n id=\"dataListGridSortingButton\"\n type=\"button\"\n icon=\"pi {{sortIcon()}}\"\n styleClass=\"p-button-outlined\"\n (onClick)=\"sortDirectionChanged()\"\n [pTooltip]=\"(sortIconTitle() | translate)\"\n tooltipPosition=\"top\"\n [ariaLabel]=\"('OCX_LIST_GRID_SORT.SORTING_BUTTON_ARIA_LABEL' | translate:{direction: (sortDirectionToTitle(nextSortDirection())) | translate})\"\n ></p-button>\n</div>\n","import { PrimeTemplate } from 'primeng/api'\n\nexport function findTemplate(templates: PrimeTemplate[], names: string[]): PrimeTemplate | undefined {\n for (let index = 0; index < names.length; index++) {\n const name = names[index]\n const template = templates.find((template) => template.name === name)\n if (template) {\n return template\n }\n }\n return undefined\n}\n","import { formatDate } from '@angular/common'\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Inject,\n Injector,\n Input,\n LOCALE_ID,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core'\nimport { Router } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { isValidDate } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\nimport { MenuItem, PrimeTemplate, SelectItem } from 'primeng/api'\nimport { Menu } from 'primeng/menu'\nimport { MultiSelectItem } from 'primeng/multiselect'\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n debounceTime,\n filter,\n first,\n map,\n mergeMap,\n of,\n switchMap,\n withLatestFrom,\n} from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { findTemplate } from '../../utils/template.utils'\nimport { DataSortBase } from '../data-sort-base/data-sort-base'\nimport { HAS_PERMISSION_CHECKER, HasPermissionChecker } from '@onecx/angular-utils'\n\nexport type Primitive = number | string | boolean | bigint | Date\nexport type Row = {\n id: string | number\n [columnId: string]: unknown\n}\n\nexport enum TemplateType {\n CELL = 'CELL',\n FILTERCELL = 'FILTERCELL',\n}\n\ninterface TemplatesData {\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>>\n idSuffix: Array<string>\n templateNames: Record<ColumnType, Array<string>>\n}\n\nexport type Sort = { sortColumn: string; sortDirection: DataSortDirection }\n\nexport interface DataTableComponentState {\n filters?: Filter[]\n sorting?: Sort\n selectedRows?: Row[]\n activePage?: number\n pageSize?: number\n}\n\n@Component({\n selector: 'ocx-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent extends DataSortBase implements OnInit, AfterContentInit {\n FilterType = FilterType\n TemplateType = TemplateType\n checked = true\n _rows$ = new BehaviorSubject<Row[]>([])\n @Input()\n get rows(): Row[] {\n return this._rows$.getValue()\n }\n set rows(value: Row[]) {\n !this._rows$.getValue().length ?? this.resetPage()\n this._rows$.next(value)\n }\n _selectionIds$ = new BehaviorSubject<(string | number)[]>([])\n @Input()\n set selectedRows(value: Row[] | string[] | number[]) {\n this._selectionIds$.next(\n value.map((row) => {\n if (typeof row === 'object') {\n return row.id\n }\n return row\n })\n )\n }\n\n _filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this._filters$.getValue()\n }\n set filters(value: Filter[]) {\n !this._filters$.getValue().length ?? this.resetPage()\n this._filters$.next(value)\n }\n _sortDirection$ = new BehaviorSubject<DataSortDirection>(DataSortDirection.NONE)\n @Input()\n get sortDirection(): DataSortDirection {\n return this._sortDirection$.getValue()\n }\n set sortDirection(value: DataSortDirection) {\n this._sortDirection$.next(value)\n }\n _sortColumn$ = new BehaviorSubject<string>('')\n @Input()\n get sortColumn(): string {\n return this?._sortColumn$.getValue()\n }\n set sortColumn(value: string) {\n this?._sortColumn$.next(value)\n }\n columnTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n columnFilterTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n _columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this._columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this._columns$.next(value)\n const obs = value.map((c) => this.getTemplate(c, TemplateType.CELL))\n const filterObs = value.map((c) => this.getTemplate(c, TemplateType.FILTERCELL))\n this.columnTemplates$ = combineLatest(obs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]]))),\n debounceTime(50)\n )\n this.columnFilterTemplates$ = combineLatest(filterObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n }\n @Input() clientSideFiltering = true\n @Input() clientSideSorting = true\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n\n displayedPageSizes$: Observable<(number | { showAll: string })[]>\n _pageSizes$ = new BehaviorSubject<(number | { showAll: string })[]>([10, 25, 50])\n @Input()\n get pageSizes(): (number | { showAll: string })[] {\n return this._pageSizes$.getValue()\n }\n set pageSizes(value: (number | { showAll: string })[]) {\n this._pageSizes$.next(value)\n }\n displayedPageSize$: Observable<number>\n _pageSize$ = new BehaviorSubject<number | undefined>(undefined)\n @Input()\n get pageSize(): number | undefined {\n return this._pageSize$.getValue()\n }\n set pageSize(value: number | undefined) {\n this._pageSize$.next(value)\n }\n _showAllOption$ = new BehaviorSubject<boolean>(false)\n @Input()\n set showAllOption(value: boolean) {\n this._showAllOption$.next(value)\n }\n\n @Input() emptyResultsMessage: string | undefined\n @Input() name = ''\n @Input() deletePermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() selectionEnabledField: string | undefined\n @Input() allowSelectAll = true\n @Input() paginator = true\n\n _page$ = new BehaviorSubject<number>(0)\n @Input()\n get page(): number {\n return this._page$.getValue()\n }\n set page(value: number) {\n this._page$.next(value)\n }\n\n @Input() tableStyle: { [klass: string]: any } | undefined\n @Input()\n get totalRecordsOnServer(): number | undefined {\n return this.params['totalRecordsOnServer'] ? Number(this.params['totalRecordsOnServer']) : undefined\n }\n set totalRecordsOnServer(value: number | undefined) {\n this.params['totalRecordsOnServer'] = value?.toString() ?? '0'\n }\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n params: { [key: string]: string } = {\n currentPage: '{currentPage}',\n totalPages: '{totalPages}',\n rows: '{rows}',\n first: '{first}',\n last: '{last}',\n totalRecords: '{totalRecords}',\n }\n\n @Input() stringCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringCell') stringCellChildTemplate: TemplateRef<any> | undefined\n get _stringCell(): TemplateRef<any> | undefined {\n return this.stringCellTemplate || this.stringCellChildTemplate\n }\n\n @Input() numberCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberCell') numberCellChildTemplate: TemplateRef<any> | undefined\n get _numberCell(): TemplateRef<any> | undefined {\n return this.numberCellTemplate || this.numberCellChildTemplate\n }\n\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdCell\"\n */\n @Input() customCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdCell\"\n */\n @ContentChild('customCell') customCellChildTemplate: TemplateRef<any> | undefined\n get _customCell(): TemplateRef<any> | undefined {\n return this.customCellTemplate || this.customCellChildTemplate\n }\n\n @Input() dateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateCell') dateCellChildTemplate: TemplateRef<any> | undefined\n get _dateCell(): TemplateRef<any> | undefined {\n return this.dateCellTemplate || this.dateCellChildTemplate\n }\n\n @Input() relativeDateCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateCell') relativeDateCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateCell(): TemplateRef<any> | undefined {\n return this.relativeDateCellTemplate || this.relativeDateCellChildTemplate\n }\n\n @Input() cellTemplate: TemplateRef<any> | undefined\n @ContentChild('cell') cellChildTemplate: TemplateRef<any> | undefined\n get _cell(): TemplateRef<any> | undefined {\n return this.cellTemplate || this.cellChildTemplate\n }\n @Input() translationKeyCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyCell') translationKeyCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyCell(): TemplateRef<any> | undefined {\n return this.translationKeyCellTemplate || this.translationKeyCellChildTemplate\n }\n @Input() stringFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringFilterCell') stringFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringFilterCell(): TemplateRef<any> | undefined {\n return this.stringFilterCellTemplate || this.stringFilterCellChildTemplate\n }\n @Input() numberFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberFilterCell') numberFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberFilterCell(): TemplateRef<any> | undefined {\n return this.numberFilterCellTemplate || this.numberFilterCellChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdFilterCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdFilterCell\"\n */\n @Input() customFilterCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdFilterCell\n * e.g. for a column with the id 'status' use pTemplate=\"statusIdFilterCell\"\n */\n @ContentChild('customFilterCell') customFilterCellChildTemplate: TemplateRef<any> | undefined\n get _customFilterCell(): TemplateRef<any> | undefined {\n return this.customFilterCellTemplate || this.customFilterCellChildTemplate\n }\n @Input() dateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateFilterCell(): TemplateRef<any> | undefined {\n return this.dateFilterCellTemplate || this.dateFilterCellChildTemplate\n }\n @Input() relativeDateFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateFilterCell') relativeDateFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateFilterCellTemplate || this.relativeDateFilterCellChildTemplate\n }\n @Input() filterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('filterCell') filterCellChildTemplate: TemplateRef<any> | undefined\n get _filterCell(): TemplateRef<any> | undefined {\n return this.filterCellTemplate || this.filterCellChildTemplate\n }\n @Input() translationKeyFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyFilterCell') translationKeyFilterCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyFilterCellTemplate || this.translationKeyFilterCellChildTemplate\n }\n\n _additionalActions$ = new BehaviorSubject<DataAction[]>([])\n @Input()\n get additionalActions(): DataAction[] {\n return this._additionalActions$.getValue()\n }\n set additionalActions(value: DataAction[]) {\n this._additionalActions$.next(value)\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() viewTableRow = new EventEmitter<Row>()\n @Output() editTableRow = new EventEmitter<Row>()\n @Output() deleteTableRow = new EventEmitter<Row>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataTableComponentState>()\n\n displayedRows$: Observable<unknown[]> | undefined\n selectedRows$: Observable<unknown[]> | undefined\n\n currentFilterColumn$ = new BehaviorSubject<DataTableColumn | null>(null)\n currentEqualFilterOptions$: Observable<{ options: SelectItem[]; column: DataTableColumn | undefined }> | undefined\n currentEqualSelectedFilters$: Observable<unknown[]> | undefined\n truthyFilterOptions = [\n {\n key: 'OCX_DATA_TABLE.FILTER_YES',\n value: true,\n },\n {\n key: 'OCX_DATA_TABLE.FILTER_NO',\n value: false,\n },\n ]\n currentTruthySelectedFilters$: Observable<unknown[]> | undefined\n filterAmounts$: Observable<Record<string, number>> | undefined\n\n overflowActions$: Observable<DataAction[]>\n inlineActions$: Observable<DataAction[]>\n overflowMenuItems$: Observable<MenuItem[]>\n currentMenuRow$ = new BehaviorSubject<Row | null>(null)\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n viewTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set viewTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.viewTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n get viewTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.viewItemObserved || dv?.viewItem.observed || this.viewTableRow.observed\n }\n get editTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.editItemObserved || dv?.editItem.observed || this.editTableRow.observed\n }\n get deleteTableRowObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.deleteItemObserved || dv?.deleteItem.observed || this.deleteTableRow.observed\n }\n get anyRowActionObserved(): boolean {\n return this.viewTableRowObserved || this.editTableRowObserved || this.deleteTableRowObserved\n }\n\n get selectionChangedObserved(): boolean {\n const dv = this.injector.get('DataViewComponent', null)\n return dv?.selectionChangedObserved || dv?.selectionChanged.observed || this.selectionChanged.observed\n }\n\n templatesObservables: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n constructor(\n @Inject(LOCALE_ID) locale: string,\n translateService: TranslateService,\n private router: Router,\n private injector: Injector,\n private userService: UserService,\n @Inject(HAS_PERMISSION_CHECKER) @Optional() private hasPermissionChecker?: HasPermissionChecker\n ) {\n super(locale, translateService)\n this.name = this.name || this.router.url.replace(/[^A-Za-z0-9]/, '_')\n this.displayedPageSizes$ = combineLatest([\n this._pageSizes$,\n this.translateService.get('OCX_DATA_TABLE.ALL'),\n this._showAllOption$,\n ]).pipe(\n map(([pageSizes, translation, showAllOption]) =>\n showAllOption ? pageSizes.concat({ showAll: translation }) : pageSizes\n )\n )\n this.displayedPageSize$ = combineLatest([this._pageSize$, this._pageSizes$]).pipe(\n map(([pageSize, pageSizes]) => pageSize ?? pageSizes.find((val): val is number => typeof val === 'number') ?? 50)\n )\n this.overflowActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => action.showAsOverflow))\n )\n this.inlineActions$ = this._additionalActions$.pipe(\n map((actions) => actions.filter((action) => !action.showAsOverflow))\n )\n this.overflowMenuItems$ = combineLatest([this.overflowActions$, this.currentMenuRow$]).pipe(\n switchMap(([actions, row]) =>\n this.filterActionsBasedOnPermissions(actions).pipe(\n map((permittedActions) => ({ actions: permittedActions, row: row }))\n )\n ),\n mergeMap(({ actions, row }) => {\n if (actions.length === 0) {\n return of([])\n }\n\n return this.translateService.get([...actions.map((a) => a.labelKey || '')]).pipe(\n map((translations) => {\n return actions.map((a) => ({\n label: translations[a.labelKey || ''],\n icon: a.icon,\n styleClass: (a.classes || []).join(' '),\n disabled: a.disabled || (!!a.actionEnabledField && !this.fieldIsTruthy(row, a.actionEnabledField)),\n visible: !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField),\n command: () => a.callback(row),\n }))\n })\n )\n })\n )\n this.rowSelectable = this.rowSelectable.bind(this)\n }\n\n ngOnInit(): void {\n this.displayedRows$ = combineLatest([this._rows$, this._filters$, this._sortColumn$, this._sortDirection$]).pipe(\n mergeMap((params) => this.translateItems(params, this.columns, this.clientSideFiltering, this.clientSideSorting)),\n map((params) => this.filterItems(params, this.clientSideFiltering)),\n map((params) => this.sortItems(params, this.columns, this.clientSideSorting)),\n map(([rows]) => this.flattenItems(rows))\n )\n this.currentTruthySelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id && currentFilterColumn.filterType === FilterType.TRUTHY\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualSelectedFilters$ = combineLatest([this._filters$, this.currentFilterColumn$]).pipe(\n map(([filters, currentFilterColumn]) => {\n return filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUAL)\n )\n .map((filter) => filter.value)\n })\n )\n this.currentEqualFilterOptions$ = combineLatest([this._rows$, this.currentFilterColumn$, this._filters$]).pipe(\n filter(\n ([_, currentFilterColumn, __]) =>\n !currentFilterColumn?.filterType || currentFilterColumn.filterType === FilterType.EQUAL\n ),\n mergeMap(([rows, currentFilterColumn, filters]) => {\n if (!currentFilterColumn?.id) {\n return of({ options: [], column: undefined })\n }\n\n const currentFilters = filters\n .filter(\n (filter) =>\n filter.columnId === currentFilterColumn?.id &&\n (!currentFilterColumn.filterType || currentFilterColumn.filterType === FilterType.EQUAL)\n )\n .map((filter) => filter.value)\n\n const columnValues = rows\n .map((row) => row[currentFilterColumn?.id])\n .filter((value) => value !== null && value !== undefined && value !== '')\n\n if (currentFilterColumn.columnType === ColumnType.DATE) {\n return of({\n options: columnValues.map(\n (c) =>\n ({\n label: c,\n value: c,\n toFilterBy: formatDate(`${c}`, currentFilterColumn.dateFormat ?? 'medium', this.locale),\n }) as SelectItem\n ),\n column: currentFilterColumn,\n })\n }\n\n const translateObservable =\n this.columns.find((c) => c.id === currentFilterColumn?.id)?.columnType === ColumnType.TRANSLATION_KEY\n ? this.translateColumnValues(columnValues as string[])\n : of(Object.fromEntries(columnValues.map((cv) => [cv, cv])))\n return translateObservable.pipe(\n map((translatedValues) => {\n return Object.values(translatedValues)\n .concat(currentFilters)\n .filter((value, index, self) => self.indexOf(value) === index && value !== null && value !== '')\n .map(\n (filterOption) =>\n ({\n label: filterOption,\n value: filterOption,\n toFilterBy: filterOption,\n }) as SelectItem\n )\n }),\n map((options) => {\n return {\n options: options,\n column: currentFilterColumn,\n }\n })\n )\n })\n )\n this.filterAmounts$ = this._filters$.pipe(\n map((filters) =>\n filters\n .map((filter) => filter.columnId)\n .map((columnId) => [columnId, filters.filter((filter) => filter.columnId === columnId).length])\n ),\n map((amounts) => Object.fromEntries(amounts))\n )\n this.mapSelectionToRows()\n this.emitComponentStateChanged()\n }\n\n translateColumnValues(columnValues: string[]): Observable<any> {\n return columnValues.length ? this.translateService.get(columnValues as string[]) : of({})\n }\n\n emitComponentStateChanged(state: DataTableComponentState = {}) {\n this.displayedPageSize$\n .pipe(withLatestFrom(this._selectionIds$, this._rows$), first())\n .subscribe(([pageSize, selectedIds, rows]) => {\n this.componentStateChanged.emit({\n filters: this.filters,\n sorting: {\n sortColumn: this.sortColumn,\n sortDirection: this.sortDirection,\n },\n pageSize,\n activePage: this.page,\n selectedRows: rows.filter((row) => selectedIds.includes(row.id)),\n ...state,\n })\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringCell':\n this.stringCellChildTemplate = item.template\n break\n case 'numberCell':\n this.numberCellChildTemplate = item.template\n break\n case 'customCell':\n this.customCellChildTemplate = item.template\n break\n case 'dateCell':\n this.dateCellChildTemplate = item.template\n break\n case 'relativeDateCell':\n this.relativeDateCellChildTemplate = item.template\n break\n case 'cellTemplate':\n this.cellChildTemplate = item.template\n break\n case 'translationKeyCell':\n this.translationKeyCellChildTemplate = item.template\n break\n case 'stringFilterCell':\n this.stringFilterCellChildTemplate = item.template\n break\n case 'numberFilterCell':\n this.numberFilterCellChildTemplate = item.template\n break\n case 'customFilterCell':\n this.customFilterCellChildTemplate = item.template\n break\n case 'dateFilterCell':\n this.dateFilterCellChildTemplate = item.template\n break\n case 'relativeDateFilterCell':\n this.relativeDateFilterCellChildTemplate = item.template\n break\n case 'filterCellTemplate':\n this.filterCellChildTemplate = item.template\n break\n case 'translationKeyFilterCell':\n this.translationKeyFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n onSortColumnClick(sortColumn: string) {\n const newSortDirection = this.columnNextSortDirection(sortColumn)\n\n this._sortColumn$.next(sortColumn)\n this._sortDirection$.next(newSortDirection)\n\n this.sorted.emit({ sortColumn: sortColumn, sortDirection: newSortDirection })\n this.emitComponentStateChanged({\n sorting: {\n sortColumn: sortColumn,\n sortDirection: newSortDirection,\n },\n })\n }\n\n columnNextSortDirection(sortColumn: string) {\n return sortColumn !== this.sortColumn\n ? this.sortStates[0]\n : this.sortStates[(this.sortStates.indexOf(this.sortDirection) + 1) % this.sortStates.length]\n }\n\n onDeleteRow(selectedTableRow: Row) {\n this.deleteTableRow.emit(selectedTableRow)\n }\n\n onViewRow(selectedTableRow: Row) {\n this.viewTableRow.emit(selectedTableRow)\n }\n\n onEditRow(selectedTableRow: Row) {\n this.editTableRow.emit(selectedTableRow)\n }\n\n onFilterChosen(column: DataTableColumn) {\n this.currentFilterColumn$.next(column)\n }\n\n onMultiselectFilterChange(column: DataTableColumn, event: any) {\n const filters = this.filters\n .filter((filter) => filter.columnId !== column.id)\n .concat(\n event.value.map((value: Primitive) => ({\n columnId: column.id,\n value,\n filterType: column.filterType,\n }))\n )\n if (this.clientSideFiltering) {\n this.filters = filters\n }\n this.filtered.emit(filters)\n this.emitComponentStateChanged({\n filters,\n })\n this.resetPage()\n }\n\n getSelectedFilters(columnId: string): unknown[] | undefined {\n return this.filters.filter((filter) => filter.columnId === columnId).map((filter) => filter.value)\n }\n\n sortIconTitle(sortColumn: string) {\n return this.sortDirectionToTitle(\n sortColumn !== this.sortDirection\n ? DataSortDirection.NONE\n : this.sortStates[this.sortStates.indexOf(this.sortDirection) % this.sortStates.length]\n )\n }\n\n sortDirectionToTitle(sortDirection: DataSortDirection) {\n switch (sortDirection) {\n case DataSortDirection.ASCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.ASCENDING_TITLE'\n case DataSortDirection.DESCENDING:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DESCENDING_TITLE'\n default:\n return 'OCX_DATA_TABLE.TOGGLE_BUTTON.DEFAULT_TITLE'\n }\n }\n\n mapSelectionToRows() {\n // Include _page$ to force fresh array references on page navigation\n // to satisfy PrimeNG DataTable selection tracking, because it needs new object references to detect changes\n this.selectedRows$ = combineLatest([this._selectionIds$, this._rows$, this._page$]).pipe(\n map(([selectedRowIds, rows, _]) => {\n return selectedRowIds\n .map((rowId) => rows.find((r) => r.id === rowId))\n .filter((row): row is Row => row !== undefined)\n })\n )\n }\n\n isRowSelectionDisabled(rowObject: Row) {\n return !!this.selectionEnabledField && !this.fieldIsTruthy(rowObject, this.selectionEnabledField)\n }\n\n rowSelectable(event: any) {\n return !this.isRowSelectionDisabled(event.data)\n }\n\n onSelectionChange(selection: Row[]) {\n let newSelectionIds = selection.map((row) => row.id)\n const rows = this._rows$.getValue()\n\n if (this.selectionEnabledField) {\n const disabledRowIds = rows.filter((r) => !this.fieldIsTruthy(r, this.selectionEnabledField)).map((row) => row.id)\n if (disabledRowIds.length > 0) {\n newSelectionIds = this.mergeWithDisabledKeys(newSelectionIds, disabledRowIds)\n }\n }\n\n this._selectionIds$.next(newSelectionIds)\n this.emitSelectionChanged()\n this.emitComponentStateChanged()\n }\n\n emitSelectionChanged() {\n this.selectionChanged.emit(this._rows$.getValue().filter((row) => this._selectionIds$.getValue().includes(row.id)))\n }\n\n mergeWithDisabledKeys(newSelectionIds: (string | number)[], disabledRowIds: (string | number)[]) {\n const previousSelectionIds = this._selectionIds$.getValue()\n const previouslySelectedAndDisabled = previousSelectionIds.filter((id) => disabledRowIds.includes(id))\n const disabledAndPreviouslyDeselected = disabledRowIds.filter((id) => !previousSelectionIds.includes(id))\n const updatedSelection = [...newSelectionIds]\n\n previouslySelectedAndDisabled.forEach((id) => {\n if (!updatedSelection.includes(id)) {\n updatedSelection.push(id)\n }\n })\n\n disabledAndPreviouslyDeselected.forEach((id) => {\n const index = updatedSelection.indexOf(id)\n if (index > -1) {\n updatedSelection.splice(index, 1)\n }\n })\n\n return updatedSelection\n }\n\n isSelected(row: Row) {\n return this._selectionIds$.getValue().includes(row.id)\n }\n\n onPageChange(event: any) {\n const page = event.first / event.rows\n this.page = page\n this.pageSize = event.rows\n this.pageChanged.emit(page)\n this.pageSizeChanged.emit(event.rows)\n this.emitComponentStateChanged({\n activePage: page,\n pageSize: event.rows,\n })\n }\n\n resetPage() {\n this.page = 0\n this.pageChanged.emit(this.page)\n this.emitComponentStateChanged()\n }\n\n fieldIsTruthy(object: any, key: any) {\n return !!ObjectUtils.resolveFieldData(object, key)\n }\n\n toggleOverflowMenu(event: MouseEvent, menu: Menu, row: Row) {\n this.currentMenuRow$.next(row)\n menu.toggle(event)\n }\n\n hasVisibleOverflowMenuItems(row: any) {\n return this.overflowActions$.pipe(\n switchMap((actions) => this.filterActionsBasedOnPermissions(actions)),\n map((actions) => actions.some((a) => !a.actionVisibleField || this.fieldIsTruthy(row, a.actionVisibleField)))\n )\n }\n\n isDate(value: Date | string | number) {\n if (value instanceof Date) {\n return true\n }\n const d = new Date(value)\n return isValidDate(d)\n }\n\n cellTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: ['numberCell', 'numberTableCell', 'defaultNumberCell'],\n [ColumnType.RELATIVE_DATE]: ['relativeDateCell', 'relativeDateTableCell', 'defaultRelativeDateCell'],\n [ColumnType.TRANSLATION_KEY]: ['translationKeyCell', 'translationKeyTableCell', 'defaultTranslationKeyCell'],\n [ColumnType.CUSTOM]: ['customCell', 'customTableCell', 'defaultCustomCell'],\n [ColumnType.STRING]: ['stringCell', 'stringTableCell', 'defaultStringCell'],\n },\n }\n\n filterTemplatesData: TemplatesData = {\n templatesObservables: {},\n idSuffix: ['IdTableFilterCell', 'IdFilterCell', 'IdTableCell', 'IdCell'],\n templateNames: {\n [ColumnType.DATE]: ['dateFilterCell', 'dateTableFilterCell', 'dateCell', 'dateTableCell', 'defaultDateCell'],\n [ColumnType.NUMBER]: [\n 'numberFilterCell',\n 'numberTableFilterCell',\n 'numberCell',\n 'numberTableCell',\n 'defaultNumberCell',\n ],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterCell',\n 'relativeDateTableFilterCell',\n 'relativeDateCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateCell',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterCell',\n 'translationKeyTableFilterCell',\n 'defaultTranslationKeyCell',\n 'translationKeyCell',\n 'translationKeyTableCell',\n ],\n [ColumnType.CUSTOM]: [\n 'customFilterCell',\n 'customTableFilterCell',\n 'customCell',\n 'customTableCell',\n 'defaultCustomCell',\n ],\n [ColumnType.STRING]: [\n 'stringFilterCell',\n 'stringTableFilterCell',\n 'stringCell',\n 'stringTableCell',\n 'defaultStringCell',\n ],\n },\n }\n\n templatesDataMap: Record<TemplateType, TemplatesData> = {\n [TemplateType.CELL]: this.cellTemplatesData,\n [TemplateType.FILTERCELL]: this.filterTemplatesData,\n }\n\n getColumnTypeTemplate(templates: PrimeTemplate[], columnType: ColumnType, templateType: TemplateType) {\n let template: TemplateRef<any> | undefined\n\n switch (templateType) {\n case TemplateType.CELL:\n switch (columnType) {\n case ColumnType.DATE:\n template = this._dateCell\n break\n case ColumnType.NUMBER:\n template = this._numberCell\n break\n case ColumnType.RELATIVE_DATE:\n template = this._relativeDateCell\n break\n case ColumnType.TRANSLATION_KEY:\n template = this._translationKeyCell\n break\n case ColumnType.CUSTOM:\n template = this._customCell\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 case ColumnType.CUSTOM:\n template = this._customFilterCell\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) {\n return {\n [column.id]: value.label,\n }\n }\n\n rowTrackByFunction = (item: any) => {\n return item.id\n }\n\n private filterActionsBasedOnPermissions(actions: DataAction[]): Observable<DataAction[]> {\n const getPermissions =\n this.hasPermissionChecker?.getPermissions?.bind(this.hasPermissionChecker) ||\n this.userService.getPermissions.bind(this.userService)\n\n return getPermissions().pipe(\n map((permissions) => {\n return actions.filter((action) => {\n const actionPermissions = Array.isArray(action.permission) ? action.permission : [action.permission]\n return actionPermissions.every((p) => permissions.includes(p))\n })\n })\n )\n }\n}\n","<ng-template #actionColumn let-rowObject=\"localRowObject\">\n <ng-container\n *ngIf=\"anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0\"\n >\n <td\n class=\"actions\"\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-left' : 'action-column-right'\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n >\n <div class=\"icon-button-row-wrapper\">\n <ng-container\n *ngIf=\"viewTableRowObserved && (!viewActionVisibleField || fieldIsTruthy(rowObject, viewActionVisibleField))\"\n >\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 </ng-container>\n <ng-container\n *ngIf=\"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 </ng-container>\n <ng-container\n *ngIf=\"deleteTableRowObserved && (!deleteActionVisibleField || fieldIsTruthy(rowObject, deleteActionVisibleField))\"\n >\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 </ng-container>\n <ng-container *ngFor=\"let action of inlineActions$ | async\">\n <ng-container *ngIf=\"(!action.actionVisibleField || fieldIsTruthy(rowObject, action.actionVisibleField))\">\n <button\n id=\"{{resolveFieldData(rowObject, 'id')}}-{{action.id ? action.id.concat('ActionButton') : 'inlineActionButton'}}\"\n *ocxIfPermission=\"action.permission\"\n pButton\n class=\"p-button-rounded p-button-text\"\n [ngClass]=\"action.classes\"\n [icon]=\"action.icon || ''\"\n (click)=\"action.callback(rowObject)\"\n [title]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [attr.aria-label]=\"action.labelKey ? (action.labelKey | translate) : ''\"\n [disabled]=\"action.disabled || (!!action.actionEnabledField && !fieldIsTruthy(rowObject, action.actionEnabledField))\"\n [attr.name]=\"'data-table-action-button'\"\n ></button>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n </td>\n </ng-container>\n</ng-template>\n\n<ng-template #actionColumnHeader>\n <ng-container\n *ngIf=\"anyRowActionObserved || this.additionalActions.length > 0 || ((this.overflowActions$ | async) ?? []).length > 0\"\n >\n <th\n pFrozenColumn\n [frozen]=\"frozenActionColumn\"\n [alignFrozen]=\"actionColumnPosition\"\n [ngClass]=\"(frozenActionColumn && actionColumnPosition === 'left') ? 'border-right-1' : (frozenActionColumn && actionColumnPosition === 'right') ? 'border-left-1' : ''\"\n [attr.name]=\"actionColumnPosition === 'left' ? 'action-column-header-left' : 'action-column-header-right'\"\n >\n {{ 'OCX_DATA_TABLE.ACTIONS_COLUMN_NAME' | translate }}\n </th>\n </ng-container>\n</ng-template>\n\n<ng-container *ngIf=\"(displayedPageSize$ | async) as displayedPageSize\">\n <p-table\n *ngIf=\"(columnTemplates$ | async) ?? {} as columnTemplates\"\n [value]=\"(displayedRows$ | async) ?? []\"\n responsiveLayout=\"scroll\"\n [paginator]=\"paginator\"\n [first]=\"page * displayedPageSize\"\n (onPage)=\"onPageChange($event)\"\n [rows]=\"displayedPageSize\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"{{ (totalRecordsOnServer ? currentPageShowingWithTotalOnServerKey : currentPageShowingKey) | translate:params }}\"\n [rowsPerPageOptions]=\"(displayedPageSizes$ | async) ?? []\"\n id=\"dataTable_{{name}}\"\n (selectionChange)=\"onSelectionChange($event)\"\n [selection]=\"(selectedRows$ | async) ?? []\"\n dataKey=\"id\"\n [rowTrackBy]=\"rowTrackByFunction\"\n [scrollable]=\"true\"\n scrollHeight=\"flex\"\n [style]=\"tableStyle\"\n paginatorDropdownAppendTo=\"body\"\n [rowSelectable]=\"rowSelectable\"\n tableStyleClass=\"h-full\"\n >\n <ng-template pTemplate=\"header\">\n <tr style=\"vertical-align: top\">\n <th style=\"width: 4rem\" scope=\"col\" *ngIf=\"selectionChangedObserved\">\n <p-tableHeaderCheckbox\n *ngIf=\"allowSelectAll\"\n pTooltip=\"{{'OCX_DATA_TABLE.SELECT_ALL_TOOLTIP' | translate}}\"\n ariaLabel=\"{{'OCX_DATA_TABLE.SELECT_ALL_ARIA_LABEL' | translate}}\"\n ></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"actionColumnPosition === 'left';\">\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n </ng-container>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"column.sortable || column.filterable; else simpleHeader\" 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 <button\n *ngIf=\"column.sortable\"\n class=\"pi sortButton pl-0\"\n [class.pi-sort-alt]=\"(column?.id === sortColumn && sortDirection === 'NONE') || column?.id !== sortColumn\"\n [class.pi-sort-amount-up]=\"column?.id === sortColumn && sortDirection === 'ASCENDING'\"\n [class.pi-sort-amount-down]=\"column?.id === sortColumn && sortDirection === 'DESCENDING'\"\n (click)=\"onSortColumnClick(column.id)\"\n [title]=\"(sortIconTitle(column.id) | translate)\"\n [attr.aria-label]=\"('OCX_DATA_TABLE.TOGGLE_BUTTON.ARIA_LABEL' | translate: { column: (column.nameKey | translate), direction: (sortDirectionToTitle(columnNextSortDirection(column.id)) | translate)})\"\n ></button>\n <ng-container *ngIf=\"currentEqualFilterOptions$ | async as equalFilterOptions\">\n <ng-container *ngIf=\"columnFilterTemplates$ | async as columnFilterTemplates\">\n <p-multiSelect\n class=\"filterMultiSelect\"\n *ngIf=\"column.filterable && (!column.filterType || column.filterType === FilterType.EQUAL)\"\n [options]=\"equalFilterOptions.column?.id === column.id ? equalFilterOptions.options : []\"\n [ngModel]=\"(currentEqualSelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\"Icon\"\n appendTo=\"body\"\n filterBy=\"toFilterBy\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template pTemplate=\"selectedItems\" let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template pTemplate=\"item\" let-value>\n <ng-container\n *ngIf=\"columnFilterTemplates[column.id] as template\"\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromMultiselectItem(value, column),\n column: column\n }\"\n >\n </ng-container>\n </ng-template>\n </p-multiSelect>\n </ng-container>\n </ng-container>\n <p-multiSelect\n class=\"filterMultiSelect\"\n *ngIf=\"column.filterable && column.filterType === FilterType.TRUTHY\"\n [options]=\"truthyFilterOptions\"\n [ngModel]=\"(currentTruthySelectedFilters$ | async) || []\"\n [showToggleAll]=\"true\"\n emptyFilterMessage=\"{{ 'OCX_DATA_TABLE.EMPTY_FILTER_MESSAGE' | translate }}\"\n [displaySelectedLabel]=\"false\"\n [resetFilterOnHide]=\"true\"\n (onChange)=\"onMultiselectFilterChange(column, $event)\"\n placeholder=\"Icon\"\n appendTo=\"body\"\n (onFocus)=\"onFilterChosen(column)\"\n [title]=\"'OCX_DATA_TABLE.FILTER_TITLE' | translate\"\n [ariaLabel]=\"'OCX_DATA_TABLE.COLUMN_FILTER_ARIA_LABEL' | translate\"\n [ariaFilterLabel]=\"('OCX_DATA_TABLE.FILTER_ARIA_LABEL' | translate: { column: column.nameKey | translate})\"\n >\n <ng-template pTemplate=\"selectedItems\" let-value>\n <div\n class=\"pi\"\n [class.pi-filter]=\"!((filterAmounts$ | async) || {})[column.id]\"\n [class.pi-filter-fill]=\"((filterAmounts$ | async) || {})[column.id] > 0\"\n ></div>\n </ng-template>\n <ng-template pTemplate=\"item\" let-value> {{value.key | translate}} </ng-template>\n </p-multiSelect>\n </span>\n </div>\n </th>\n <ng-template #simpleHeader>\n <th scope=\"col\">{{ column.nameKey | translate }}</th>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"actionColumnPosition === 'right';\">\n <ng-container *ngTemplateOutlet=\"actionColumnHeader\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowObject>\n <tr *ngIf=\"columnTemplates\">\n <td *ngIf=\"selectionChangedObserved\">\n <p-checkbox\n *ngIf=\"isRowSelectionDisabled(rowObject) && isSelected(rowObject); else defaultCheckbox\"\n [(ngModel)]=\"checked\"\n [binary]=\"true\"\n [disabled]=\"true\"\n [ariaLabel]=\"'OCX_DATA_TABLE.SELECT_ARIA_LABEL' | translate: { key: rowObject.id}\"\n ></p-checkbox>\n <ng-template #defaultCheckbox>\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 </ng-template>\n </td>\n <ng-container *ngIf=\"actionColumnPosition === 'left';\">\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n </ng-container>\n <td *ngFor=\"let column of columns\">\n @defer(on viewport){\n <ng-container\n *ngIf=\"columnTemplates[column.id]\"\n [ngTemplateOutlet]=\"\n _cell ? _cell: columnTemplates[column.id]\n \"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n } @placeholder {\n <p-skeleton width=\"3rem\" />\n }\n </td>\n <ng-container *ngIf=\"actionColumnPosition === 'right';\">\n <ng-container *ngTemplateOutlet=\"actionColumn; context: {localRowObject: rowObject}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <!-- If allowSelectAll is set to true, an additional column for checkbox selection is added and\n the colSpan needs to be increased by one so that the row is rendered the whole width of the table. -->\n <td\n [colSpan]=\"columns.length + ((anyRowActionObserved || this.additionalActions.length > 0) ? 1 : 0) +\n (allowSelectAll ? 1 : 0)\"\n >\n {{ emptyResultsMessage || (\"OCX_DATA_TABLE.EMPTY_RESULT\" | translate) }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</ng-container>\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=\"defaultCustomCell\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }} </ng-container>\n</ng-template>\n","import { Timestamp } from 'rxjs'\n\nexport function orderValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n return valuesWithTimestamp.sort((a, b) => b.timestamp - a.timestamp).map((obj) => obj.value)\n}\n\nfunction mergeValues(values: any[]) {\n return values.reduce((acc, curr) => {\n return { ...acc, ...curr }\n })\n}\n\nexport function orderAndMergeValuesByTimestamp(valuesWithTimestamp: Timestamp<any>[]) {\n const sortedValues = valuesWithTimestamp.sort((a, b) => a.timestamp - b.timestamp).map((obj) => obj.value)\n return mergeValues(sortedValues)\n}\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport {\n DataListGridComponent,\n DataListGridComponentState,\n ListGridData,\n} from '../data-list-grid/data-list-grid.component'\nimport { Row, Sort, DataTableComponent, DataTableComponentState } from '../data-table/data-table.component'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataAction } from '../../model/data-action'\nimport { BehaviorSubject, ReplaySubject, timestamp, combineLatest, map, Observable, startWith } from 'rxjs'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport { PrimeTemplate } from 'primeng/api'\nimport { Filter } from '../../model/filter.model'\n\nexport type RowListGridData = ListGridData & Row\n\nexport type DataViewComponentState = DataListGridComponentState & DataTableComponentState\n\n@Component({\n selector: 'ocx-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }],\n})\nexport class DataViewComponent implements DoCheck, OnInit, AfterContentInit {\n _dataListGridComponent: DataListGridComponent | undefined\n @ViewChild(DataListGridComponent) set listGrid(ref: DataListGridComponent | undefined) {\n this._dataListGridComponent = ref\n this.registerEventListenerForListGrid()\n }\n get listGrid(): DataListGridComponent | undefined {\n return this._dataListGridComponent\n }\n\n _dataTableComponent: DataTableComponent | undefined\n @ViewChild(DataTableComponent) set dataTable(ref: DataTableComponent | undefined) {\n this._dataTableComponent = ref\n this.registerEventListenerForDataTable()\n }\n get dataTable(): DataTableComponent | undefined {\n return this._dataTableComponent\n }\n\n dataTableComponentState$ = new ReplaySubject<DataTableComponentState>(1)\n dataListGridComponentState$ = new ReplaySubject<DataListGridComponentState>(1)\n\n @Input() deletePermission: string | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() data: RowListGridData[] = []\n @Input() name = 'Data table'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() layout: any = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortField: any = ''\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() page = 0\n @Input() totalRecordsOnServer: number | undefined\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() selectedRows: Row[] = []\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n @Input() sortStates: DataSortDirection[] = [DataSortDirection.ASCENDING, DataSortDirection.DESCENDING]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n @Input() showAllOption = false\n\n @Input() stringTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableCell') stringTableCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCellTemplate || this.stringTableCellChildTemplate\n }\n\n @Input() numberTableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCellTemplate || this.numberTableCellChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n @Input() customTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n @ContentChild('customTableCell') customTableCellChildTemplate: TemplateRef<any> | undefined\n get _customTableCell(): TemplateRef<any> | undefined {\n return this.customTableCellTemplate || this.customTableCellChildTemplate\n }\n\n @Input() dateTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by dateTableCellTemplate\n */\n @Input()\n get tableDateCellTemplate(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate\n }\n set tableDateCellTemplate(value: TemplateRef<any> | undefined) {\n this.dateTableCellTemplate = value\n }\n /**\n * @deprecated Will be replaced by dateTableCellChildTemplate\n */\n @ContentChild('tableDateCell') tableDateCellChildTemplate: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCellTemplate || this.dateTableCellChildTemplate || this.tableDateCellChildTemplate\n }\n\n @Input() tableCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableCell') tableCellChildTemplate: TemplateRef<any> | undefined\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCellTemplate || this.tableCellChildTemplate\n }\n\n @Input() translationKeyTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by translationKeyTableCellTemplate\n */\n @Input()\n get tableTranslationKeyCellTemplate(): TemplateRef<any> | undefined {\n return this.translationKeyTableCellTemplate\n }\n set tableTranslationKeyCellTemplate(value: TemplateRef<any> | undefined) {\n this.translationKeyTableCellTemplate = value\n }\n /**\n * @deprecated Will be replaced by translationKeyTableCellChildTemplate\n */\n @ContentChild('tableTranslationKeyCell') tableTranslationKeyCellChildTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableCell') translationKeyTableCellChildTemplate: TemplateRef<any> | undefined\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return (\n this.translationKeyTableCellTemplate ||\n this.translationKeyTableCellChildTemplate ||\n this.tableTranslationKeyCellChildTemplate\n )\n }\n\n @Input() gridItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLinesTemplate || this.gridItemSubtitleLinesChildTemplate\n }\n\n @Input() listItemSubtitleLinesTemplate: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLinesChildTemplate: TemplateRef<any> | undefined\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLinesTemplate || this.listItemSubtitleLinesChildTemplate\n }\n @Input() gridItemTemplate: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItemChildTemplate: TemplateRef<any> | undefined\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItemTemplate || this.gridItemChildTemplate\n }\n\n @Input() listItemTemplate: TemplateRef<any> | undefined\n @ContentChild('listItem') listItemChildTemplate: TemplateRef<any> | undefined\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItemTemplate || this.listItemChildTemplate\n }\n\n @Input() relativeDateTableCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by relativeDateTableCellTemplate\n */\n @Input()\n get tableRelativeDateCellTemplate(): TemplateRef<any> | undefined {\n return this.relativeDateTableCellTemplate\n }\n set tableRelativeDateCellTemplate(value: TemplateRef<any> | undefined) {\n this.relativeDateTableCellTemplate = value\n }\n /**\n * @deprecated Will be replace by relativeDateTableCellChildTemplate\n */\n @ContentChild('tableRelativeDateCell') tableRelativeDateCellChildTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableCell') relativeDateTableCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return (\n this.relativeDateTableCellTemplate ||\n this.relativeDateTableCellChildTemplate ||\n this.tableRelativeDateCellChildTemplate\n )\n }\n\n @Input() listValueTemplate: TemplateRef<any> | undefined\n @ContentChild('listValue') listValueChildTemplate: TemplateRef<any> | undefined\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValueTemplate || this.listValueChildTemplate\n }\n @Input() translationKeyListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValueChildTemplate: TemplateRef<any> | undefined\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValueTemplate || this.translationKeyListValueChildTemplate\n }\n @Input() numberListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValueChildTemplate: TemplateRef<any> | undefined\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValueTemplate || this.numberListValueChildTemplate\n }\n @Input() relativeDateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValueChildTemplate: TemplateRef<any> | undefined\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValueTemplate || this.relativeDateListValueChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' in DataListGrid use pTemplate=\"statusIdListValue\"\n */\n @Input() customListValueTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' DataListGrid use pTemplate=\"statusIdListValue\"\n */\n @ContentChild('customListValue') customListValueChildTemplate: TemplateRef<any> | undefined\n get _customListValue(): TemplateRef<any> | undefined {\n return this.customListValueTemplate || this.customListValueChildTemplate\n }\n @Input() stringListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValueChildTemplate: TemplateRef<any> | undefined\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValueTemplate || this.stringListValueChildTemplate\n }\n @Input() dateListValueTemplate: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValueChildTemplate: TemplateRef<any> | undefined\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValueTemplate || this.dateListValueChildTemplate\n }\n @Input() tableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCellTemplate || this.tableFilterCellChildTemplate\n }\n @Input() dateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('dateFilterCell') dateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCellTemplate || this.dateTableFilterCellChildTemplate\n }\n @Input() relativeDateTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCellTemplate || this.relativeDateTableFilterCellChildTemplate\n }\n @Input() translationKeyTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCellChildTemplate:\n | TemplateRef<any>\n | undefined\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCellTemplate || this.translationKeyTableFilterCellChildTemplate\n }\n @Input() stringTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCellTemplate || this.stringTableFilterCellChildTemplate\n }\n @Input() numberTableFilterCellTemplate: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCellTemplate || this.numberTableFilterCellChildTemplate\n }\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n @Input() customTableFilterCellTemplate: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n @ContentChild('customTableFilterCell') customTableFilterCellChildTemplate: TemplateRef<any> | undefined\n get _customTableFilterCell(): TemplateRef<any> | undefined {\n return this.customTableFilterCellTemplate || this.customTableFilterCellChildTemplate\n }\n\n @Input() additionalActions: DataAction[] = []\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() selectionChanged = new EventEmitter<Row[]>()\n @Output() pageChanged = new EventEmitter<number>()\n @Output() pageSizeChanged = new EventEmitter<number>()\n @Output() componentStateChanged = new EventEmitter<DataViewComponentState>()\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n IsEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set parentTemplates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n }\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n templatesForChildren$: Observable<QueryList<PrimeTemplate> | undefined> = combineLatest([\n this.templates$,\n this.parentTemplates$,\n ]).pipe(\n map(([t, pt]) => {\n const ql = new QueryList<PrimeTemplate>()\n ql.reset([...(t?.toArray() ?? []), ...(pt?.toArray() ?? [])])\n return ql\n })\n )\n\n get viewItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.viewItem.observed || this.viewItem.observed\n }\n get editItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.editItem.observed || this.editItem.observed\n }\n get deleteItemObserved(): boolean {\n return this.injector.get('InteractiveDataViewComponent', null)?.deleteItem.observed || this.deleteItem.observed\n }\n get selectionChangedObserved(): boolean {\n return (\n this.injector.get('InteractiveDataViewComponent', null)?.selectionChanged.observed ||\n this.selectionChanged.observed\n )\n }\n\n constructor(private injector: Injector) {}\n\n ngOnInit(): void {\n this.firstColumnId = this.columns[0]?.id\n\n let dataTableComponentState$: Observable<DataTableComponentState | Record<string, never>> =\n this.dataTableComponentState$\n let dataListGridComponentState$: Observable<DataListGridComponentState | Record<string, never>> =\n this.dataListGridComponentState$\n if (this.layout === 'table') {\n dataListGridComponentState$ = dataListGridComponentState$.pipe(startWith({}))\n } else {\n dataTableComponentState$ = dataTableComponentState$.pipe(startWith({}))\n }\n\n combineLatest([dataTableComponentState$.pipe(timestamp()), dataListGridComponentState$.pipe(timestamp())])\n .pipe(\n map((componentStates) => {\n return orderAndMergeValuesByTimestamp(componentStates)\n })\n )\n .subscribe((val) => {\n this.componentStateChanged.emit(val)\n })\n }\n\n ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'stringTableCell':\n this.stringTableCellChildTemplate = item.template\n break\n case 'numberTableCell':\n this.numberTableCellChildTemplate = item.template\n break\n case 'customTableCell':\n this.customTableCellChildTemplate = item.template\n break\n case 'tableDateCell':\n this.tableDateCellChildTemplate = item.template\n break\n case 'dateTableCell':\n this.dateTableCellChildTemplate = item.template\n break\n case 'tableCell':\n this.tableCellChildTemplate = item.template\n break\n case 'tableTranslationKeyCell':\n this.tableTranslationKeyCellChildTemplate = item.template\n break\n case 'translationKeyTableCell':\n this.translationKeyTableCellChildTemplate = item.template\n break\n case 'gridItemSubtitleLines':\n this.gridItemSubtitleLinesChildTemplate = item.template\n break\n case 'listItemSubtitleLines':\n this.listItemSubtitleLinesChildTemplate = item.template\n break\n case 'gridItem':\n this.gridItemChildTemplate = item.template\n break\n case 'listItem':\n this.listItemChildTemplate = item.template\n break\n case 'tableRelativeDateCell':\n this.tableRelativeDateCellChildTemplate = item.template\n break\n case 'relativeDateTableCell':\n this.relativeDateTableCellChildTemplate = item.template\n break\n case 'listValue':\n this.listValueChildTemplate = item.template\n break\n case 'translationKeyListValue':\n this.translationKeyListValueChildTemplate = item.template\n break\n case 'numberListValue':\n this.numberListValueChildTemplate = item.template\n break\n case 'relativeDateListValue':\n this.relativeDateListValueChildTemplate = item.template\n break\n case 'customListValue':\n this.customListValueChildTemplate = item.template\n break\n case 'stringListValue':\n this.stringListValueChildTemplate = item.template\n break\n case 'dateListValue':\n this.dateListValueChildTemplate = item.template\n break\n case 'tableFilterCell':\n this.tableFilterCellChildTemplate = item.template\n break\n case 'dateTableFilterCell':\n this.dateTableFilterCellChildTemplate = item.template\n break\n case 'relativeDateTableFilterCell':\n this.relativeDateTableFilterCellChildTemplate = item.template\n break\n case 'translationKeyTableFilterCell':\n this.translationKeyTableFilterCellChildTemplate = item.template\n break\n case 'stringTableFilterCell':\n this.stringTableFilterCellChildTemplate = item.template\n break\n case 'numberTableFilterCell':\n this.numberTableFilterCellChildTemplate = item.template\n break\n case 'customTableFilterCell':\n this.customTableFilterCellChildTemplate = item.template\n break\n }\n })\n }\n\n ngDoCheck(): void {\n this.registerEventListenerForDataTable()\n this.registerEventListenerForListGrid()\n }\n\n registerEventListenerForListGrid() {\n if (this.layout !== 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataListGridComponent?.deleteItem.observed) {\n this._dataListGridComponent?.deleteItem.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataListGridComponent?.viewItem.observed) {\n this._dataListGridComponent?.viewItem.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataListGridComponent?.editItem.observed) {\n this._dataListGridComponent?.editItem.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n }\n }\n\n registerEventListenerForDataTable() {\n if (this.layout === 'table') {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataTableComponent?.deleteTableRow.observed) {\n this._dataTableComponent?.deleteTableRow.subscribe((event) => {\n this.deletingElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataTableComponent?.viewTableRow.observed) {\n this._dataTableComponent?.viewTableRow.subscribe((event) => {\n this.viewingElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.IsEditItemObserved = true\n if (!this._dataTableComponent?.editTableRow.observed) {\n this._dataTableComponent?.editTableRow.subscribe((event) => {\n this.editingElement(event)\n })\n }\n }\n if (this.selectionChangedObserved) {\n if (!this._dataTableComponent?.selectionChanged.observed) {\n this._dataTableComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n deletingElement(event: any) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(event)\n }\n }\n\n viewingElement(event: any) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(event)\n }\n }\n editingElement(event: any) {\n if (this.IsEditItemObserved) {\n this.editItem.emit(event)\n }\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChangedObserved) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n}\n","<div *ngIf=\"layout !== 'table'\">\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 [showAllOption]=\"showAllOption\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataListGridComponentState$.next($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [customListValueTemplate]=\"_customListValue ? customListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n</div>\n\n<div *ngIf=\"layout === 'table'\">\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 [showAllOption]=\"showAllOption\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n (componentStateChanged)=\"dataTableComponentState$.next($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [customCellTemplate]=\"_customTableCell ? customCell : undefined\"\n [dateCellTemplate]=\"_dateTableCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_relativeDateTableCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_translationKeyTableCell ? translationKeyCell : undefined\"\n [filterCellTemplate]=\"_tableFilterCell ? filterCell : undefined\"\n [dateFilterCellTemplate]=\"_dateTableFilterCell ? dateFilterCell : undefined\"\n [customFilterCellTemplate]=\"_customTableFilterCell ? customFilterCell : undefined\"\n [numberFilterCellTemplate]=\"_numberTableFilterCell ? numberFilterCell : undefined\"\n [stringFilterCellTemplate]=\"_stringTableFilterCell ? stringFilterCell : undefined\"\n [relativeDateFilterCellTemplate]=\"_relativeDateTableFilterCell ? relativeDateFilterCell : undefined\"\n [translationKeyFilterCellTemplate]=\"_translationKeyTableFilterCell ? translationKeyFilterCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templatesForChildren$ | async\"\n [allowSelectAll]=\"tableAllowSelectAll\"\n [selectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #customCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableCell\"\n [ngTemplateOutlet]=\"_customTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #stringFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableFilterCell\"\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #filterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableFilterCell\"\n [ngTemplateOutlet]=\"_tableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #dateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableFilterCell\"\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #customFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableFilterCell\"\n [ngTemplateOutlet]=\"_customTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #numberFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableFilterCell\"\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #relativeDateFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableFilterCell\"\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n <ng-template #translationKeyFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableFilterCell\"\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n</div>\n","export class ColorUtils {\n public static calculatePoint(\n i: number,\n intervalSize: number,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd, useEndAsStart } = colorRangeInfo\n return useEndAsStart ? colorEnd - i * intervalSize : colorStart + i * intervalSize\n }\n\n public static interpolateColors(\n dataLength: number,\n colorScale: (arg0: any) => any,\n colorRangeInfo: { colorStart: any; colorEnd: any; useEndAsStart: any }\n ): any {\n const { colorStart, colorEnd } = colorRangeInfo\n const colorRange = colorEnd - colorStart\n const intervalSize = colorRange / dataLength\n let i, colorPoint\n const colorArray = []\n\n for (i = 0; i < dataLength; i++) {\n colorPoint = this.calculatePoint(i, intervalSize, colorRangeInfo)\n colorArray.push(colorScale(colorPoint))\n }\n\n return colorArray\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { ChartData, ChartOptions } from 'chart.js'\nimport * as d3 from 'd3-scale-chromatic'\nimport { PrimeIcons } from 'primeng/api'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\nimport { ColorUtils } from '../../utils/colorutils'\nimport { PrimeIcon } from '../../utils/primeicon.utils'\n\nexport interface DiagramLayouts {\n id: string\n icon: PrimeIcon\n layout: DiagramType\n tooltip?: string\n tooltipKey: string\n label?: string\n labelKey: string\n}\n\nexport interface DiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\nconst allDiagramTypes: DiagramLayouts[] = [\n {\n id: 'diagram-pie',\n icon: PrimeIcons.CHART_PIE,\n layout: DiagramType.PIE,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.PIE',\n },\n {\n id: 'diagram-horizontal-bar',\n icon: PrimeIcons.BARS,\n layout: DiagramType.HORIZONTAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.HORIZONTAL_BAR',\n },\n {\n id: 'diagram-vertical-bar',\n icon: PrimeIcons.CHART_BAR,\n layout: DiagramType.VERTICAL_BAR,\n tooltipKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n labelKey: 'OCX_DIAGRAM.SWITCH_DIAGRAM_TYPE.VERTICAL_BAR',\n },\n]\n\n@Component({\n selector: 'ocx-diagram',\n templateUrl: './diagram.component.html',\n styleUrls: ['./diagram.component.scss'],\n})\nexport class DiagramComponent implements OnInit, OnChanges {\n @Input() data: DiagramData[] | undefined\n @Input() sumKey = 'OCX_DIAGRAM.SUM'\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n private _diagramType: DiagramType = DiagramType.PIE\n selectedDiagramType: DiagramLayouts | undefined\n public chartType: 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' = 'pie'\n @Input()\n get diagramType(): DiagramType {\n return this._diagramType\n }\n set diagramType(value: DiagramType) {\n this._diagramType = value\n this.selectedDiagramType = allDiagramTypes.find((v) => v.layout === value)\n this.chartType = this.diagramTypeToChartType(value)\n }\n private _supportedDiagramTypes: DiagramType[] = []\n @Input()\n get supportedDiagramTypes(): DiagramType[] {\n return this._supportedDiagramTypes\n }\n set supportedDiagramTypes(value: DiagramType[]) {\n this._supportedDiagramTypes = value\n this.shownDiagramTypes = allDiagramTypes.filter((vl) => this.supportedDiagramTypes.includes(vl.layout))\n }\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<DiagramComponentState> = new EventEmitter()\n chartOptions: ChartOptions | undefined\n chartData: ChartData | undefined\n amountOfData: number | undefined | null\n shownDiagramTypes: DiagramLayouts[] = []\n // Changing the colorRangeInfo, will change the range of the color palette of the diagram.\n private colorRangeInfo = {\n colorStart: 0,\n colorEnd: 1,\n useEndAsStart: false,\n }\n // Changing the colorScale, will change the thematic color appearance of the diagram.\n private colorScale = d3.interpolateCool\n\n constructor(private translateService: TranslateService) {}\n\n ngOnChanges(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n ngOnInit(): void {\n this.generateChart(this.colorScale, this.colorRangeInfo)\n }\n\n public generateChart(colorScale: any, colorRangeInfo: any) {\n if (this.data) {\n const inputData = this.data.map((diagramData) => diagramData.value)\n\n this.amountOfData = this.data.reduce((acc, current) => acc + current.value, 0)\n const COLORS = this.generateColors(this.data, colorScale, colorRangeInfo)\n this.chartData = {\n labels: this.data.map((data) => data.label),\n datasets: [\n {\n data: inputData,\n backgroundColor: COLORS,\n },\n ],\n }\n }\n\n this.chartOptions = {\n plugins: {\n legend: {\n position: 'bottom',\n },\n },\n maintainAspectRatio: false,\n ...(this._diagramType === DiagramType.VERTICAL_BAR && {\n plugins: { legend: { display: false } },\n scales: { y: { ticks: { precision: 0 } } },\n }),\n ...(this._diagramType === DiagramType.HORIZONTAL_BAR && {\n indexAxis: 'y',\n plugins: { legend: { display: false } },\n scales: { x: { ticks: { precision: 0 } } },\n }),\n }\n }\n\n generateColors(data: DiagramData[], colorScale: any, colorRangeInfo: any) {\n const dataColors = data.map((diagramData) => diagramData.backgroundColor)\n if (dataColors.filter((v) => v !== undefined).length === data.length) {\n return dataColors\n } else if (this.fillMissingColors) {\n // it is intended to generate more colors than needed, so interval for generated colors is same as amount of items on the diagram\n const interpolatedColors = interpolateColors(dataColors.length, colorScale, colorRangeInfo)\n let interpolatedIndex = 0\n return dataColors.map((color) => (color === undefined ? interpolatedColors[interpolatedIndex++] : color))\n } else {\n return interpolateColors(data.length, colorScale, colorRangeInfo)\n }\n }\n\n generateTotal(data: DiagramData[]): number {\n return data.reduce((acc, current) => acc + current.value, 0)\n }\n\n generateDiagramValueString(data: DiagramData[]): string {\n return data.map((item) => `${item.label}:${item.value}`).join(', ')\n }\n\n private diagramTypeToChartType(\n value: DiagramType\n ): 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' {\n if (value === DiagramType.PIE) return 'pie'\n else if (value === DiagramType.HORIZONTAL_BAR || value === DiagramType.VERTICAL_BAR) return 'bar'\n return 'pie'\n }\n\n dataClicked(event: []) {\n this.dataSelected.emit(event.length)\n }\n\n onDiagramTypeChanged(event: any) {\n this.diagramType = event.value.layout\n this.generateChart(this.colorScale, this.colorRangeInfo)\n this.diagramTypeChanged.emit(event.value.layout)\n this.componentStateChanged.emit({\n activeDiagramType: event.value.layout,\n })\n }\n}\nfunction interpolateColors(amountOfData: number, colorScale: any, colorRangeInfo: any) {\n return ColorUtils.interpolateColors(amountOfData, colorScale, colorRangeInfo)\n}\n","<ng-container *ngIf=\"this.data\">\n <div class=\"flex justify-content-center pb-2\" *ngIf=\"shownDiagramTypes.length > 1\">\n <p-selectButton\n [options]=\"shownDiagramTypes\"\n [(ngModel)]=\"selectedDiagramType\"\n optionLabel=\"id\"\n (onChange)=\"onDiagramTypeChanged($event)\"\n name=\"diagram-type-select-button\"\n >\n <ng-template let-item pTemplate>\n <i\n [class]=\"item.icon\"\n [pTooltip]=\"item.tooltip || (item.tooltipKey | translate)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n ></i>\n <label style=\"display: none\" id=\"{{item.id}}\"> {{item.label ? item.label : item.labelKey | translate}} </label>\n </ng-template>\n </p-selectButton>\n </div>\n <div class=\"w-full flex justify-content-center\">\n <p-chart\n id=\"diagram\"\n [type]=\"chartType\"\n [data]=\"chartData\"\n [responsive]=\"false\"\n [options]=\"chartOptions\"\n (onDataSelect)=\"dataClicked($event)\"\n [ariaLabel]=\"(data ? 'OCX_DIAGRAM.ARIA_LABEL' : 'OCX_DIAGRAM.EMPTY_ARIA_LABEL') | translate: {total: generateTotal(data), valueString: generateDiagramValueString(data)}\"\n ></p-chart>\n </div>\n <div class=\"w-full flex justify-content-center mt-2 sumKey\">\n <p class=\"text-md font-medium text-700\">\n <span name=\"sumLabel\"> {{ sumKey | translate }}</span> : <span name=\"amountOfData\">{{ amountOfData}}</span>\n </p>\n </div>\n</ng-container>\n\n<div *ngIf=\"!this.data\" class=\"w-full flex justify-content-center\">\n <p-message severity=\"info\" text=\"{{ 'OCX_DIAGRAM.NO_DATA' | translate }}\"></p-message>\n</div>\n","import { ColumnFilterDataSelectOptions, Filter } from '../model/filter.model'\n\nexport function limit(columnFilterData: Filter[], amount: number, options: ColumnFilterDataSelectOptions): Filter[] {\n return options.reverse\n ? columnFilterData.slice(-amount, columnFilterData.length).reverse()\n : columnFilterData.slice(0, amount)\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core'\nimport { Filter, FilterType } from '../../model/filter.model'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { BehaviorSubject, Observable, combineLatest, debounceTime, map } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { PrimeTemplate } from 'primeng/api'\nimport { findTemplate } from '../../utils/template.utils'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { limit } from '../../utils/filter.utils'\nimport { OverlayPanel } from 'primeng/overlaypanel'\nimport { Row } from '../data-table/data-table.component'\nimport { Button } from 'primeng/button'\n\nexport type FilterViewDisplayMode = 'chips' | 'button'\nexport type FilterViewRowDisplayData = {\n id: string\n column: string\n value: unknown\n}\nexport type FilterViewRowDetailData = FilterViewRowDisplayData & {\n valueColumnId: string\n}\n\nexport interface FilterViewComponentState {\n filters?: Filter[]\n}\n\n@Component({\n selector: 'ocx-filter-view',\n templateUrl: './filter-view.component.html',\n styleUrls: ['./filter-view.component.scss'],\n})\nexport class FilterViewComponent implements OnInit {\n ColumnType = ColumnType\n FilterType = FilterType\n filters$ = new BehaviorSubject<Filter[]>([])\n @Input()\n get filters(): Filter[] {\n return this.filters$.getValue()\n }\n set filters(value: Filter[]) {\n this.filters$.next(value)\n }\n columns$ = new BehaviorSubject<DataTableColumn[]>([])\n @Input()\n get columns(): DataTableColumn[] {\n return this.columns$.getValue()\n }\n set columns(value: DataTableColumn[]) {\n this.columns$.next(value)\n const chipObs = value.map((c) => this.getTemplate(c, this.chipTemplateNames, this.chipTemplates, this.chipIdSuffix))\n this.chipTemplates$ = combineLatest(chipObs).pipe(\n map((values) => Object.fromEntries(value.map((c, i) => [c.id, values[i]])))\n )\n\n const tableTemplateColumns = value.concat(this.columnFilterTableColumns)\n this.tableTemplates$ = combineLatest(\n tableTemplateColumns.map((c) =>\n this.getTemplate(c, this.tableTemplateNames, this.tableTemplates, this.tableIdSuffix)\n )\n ).pipe(map((values) => Object.fromEntries(tableTemplateColumns.map((c, i) => [c.id, values[i]]))))\n }\n\n columnFilterDataRows$: Observable<FilterViewRowDisplayData[]> | undefined\n\n @Input() displayMode: FilterViewDisplayMode = 'button'\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() chipStyleClass = ''\n @Input() tableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() panelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n\n @Output() filtered: EventEmitter<Filter[]> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<FilterViewComponentState> = new EventEmitter()\n\n columnFilterTableColumns: DataTableColumn[] = [\n {\n id: 'column',\n columnType: ColumnType.TRANSLATION_KEY,\n nameKey: 'OCX_FILTER_VIEW.TABLE.COLUMN_NAME',\n },\n { id: 'value', columnType: ColumnType.STRING, nameKey: 'OCX_FILTER_VIEW.TABLE.VALUE' },\n {\n id: 'actions',\n columnType: ColumnType.STRING,\n nameKey: 'OCX_FILTER_VIEW.TABLE.ACTIONS',\n },\n ]\n\n ngOnInit(): void {\n this.columnFilterDataRows$ = combineLatest([this.filters$, this.columns$]).pipe(\n map(([filters, columns]) => {\n const columnIds = columns.map((c) => c.id)\n return filters\n .map((f) => {\n const filterColumn = this.getColumnForFilter(f, columns)\n if (!filterColumn) return undefined\n return {\n id: `${f.columnId}-${f.value}`,\n column: filterColumn.nameKey,\n value: f.value,\n valueColumnId: filterColumn.id,\n } satisfies FilterViewRowDetailData\n })\n .filter((v): v is FilterViewRowDetailData => v !== undefined)\n .slice()\n .sort((a, b) => columnIds.indexOf(a.valueColumnId) - columnIds.indexOf(b.valueColumnId))\n })\n )\n this.componentStateChanged.emit({\n filters: this.filters,\n })\n }\n\n @ViewChild(OverlayPanel) panel!: OverlayPanel\n @ViewChild('manageButton') manageButton!: Button\n trigger: HTMLElement | undefined\n\n fitlerViewNoSelection: TemplateRef<any> | undefined\n get _fitlerViewNoSelection(): TemplateRef<any> | undefined {\n return this.fitlerViewNoSelection\n }\n\n filterViewChipContent: TemplateRef<any> | undefined\n get _filterViewChipContent(): TemplateRef<any> | undefined {\n return this.filterViewChipContent\n }\n\n filterViewShowMoreChip: TemplateRef<any> | undefined\n get _filterViewShowMoreChip(): TemplateRef<any> | undefined {\n return this.filterViewShowMoreChip\n }\n\n defaultTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ViewChildren(PrimeTemplate)\n set defaultTemplates(value: QueryList<PrimeTemplate> | undefined) {\n this.defaultTemplates$.next(value)\n }\n\n parentTemplates$: BehaviorSubject<QueryList<PrimeTemplate> | null | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | null | undefined\n >(undefined)\n @Input()\n set templates(value: QueryList<PrimeTemplate> | null | undefined) {\n this.parentTemplates$.next(value)\n value?.forEach((item) => {\n switch (item.getType()) {\n case 'fitlerViewNoSelection':\n this.fitlerViewNoSelection = item.template\n break\n case 'filterViewChipContent':\n this.filterViewChipContent = item.template\n break\n case 'filterViewShowMoreChip':\n this.filterViewShowMoreChip = item.template\n break\n }\n })\n }\n\n chipTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n tableTemplates$: Observable<Record<string, TemplateRef<any> | null>> | undefined\n\n chipIdSuffix: Array<string> = ['IdFilterChip', 'IdTableFilterCell', 'IdTableCell']\n chipTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterChipValue', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterChipValue', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterChipValue',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKeyFilterChipValue',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.CUSTOM]: ['customFilterChipValue', 'customTableFilterCell', 'customTableCell', 'defaultCustomValue'],\n [ColumnType.STRING]: ['stringFilterChipValue', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n chipTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n tableIdSuffix: Array<string> = ['IdFilterViewCell', 'IdTableFilterCell', 'IdTableCell']\n tableTemplateNames: Record<ColumnType, Array<string>> = {\n [ColumnType.DATE]: ['dateFilterViewCell', 'dateTableFilterCell', 'dateTableCell', 'defaultDateValue'],\n [ColumnType.NUMBER]: ['numberFilterViewCell', 'numberTableFilterCell', 'numberTableCell', 'defaultNumberValue'],\n [ColumnType.RELATIVE_DATE]: [\n 'relativeDateFilterViewCell',\n 'relativeDateTableFilterCell',\n 'relativeDateTableCell',\n 'defaultRelativeDateValue',\n ],\n [ColumnType.TRANSLATION_KEY]: [\n 'translationKey',\n 'translationKeyTableFilterCell',\n 'translationKeyTableCell',\n 'defaultTranslationKeyValue',\n ],\n [ColumnType.CUSTOM]: ['customFilterViewCell', 'customTableFilterCell', 'customTableCell', 'defaultCustomValue'],\n [ColumnType.STRING]: ['stringFilterViewCell', 'stringTableFilterCell', 'stringTableCell', 'defaultStringValue'],\n }\n tableTemplates: Record<string, Observable<TemplateRef<any> | null>> = {}\n\n getTemplate(\n column: DataTableColumn,\n templateNames: Record<ColumnType, Array<string>>,\n templates: Record<string, Observable<TemplateRef<any> | null>>,\n idSuffix: Array<string>\n ): Observable<TemplateRef<any> | null> {\n if (!templates[column.id]) {\n templates[column.id] = combineLatest([this.defaultTemplates$, this.parentTemplates$]).pipe(\n map(([dt, t]) => {\n const templates = [...(dt ?? []), ...(t ?? [])]\n const columnTemplate = findTemplate(\n templates,\n idSuffix.map((suffix) => column.id + suffix)\n )?.template\n if (columnTemplate) {\n return columnTemplate\n }\n return findTemplate(templates, templateNames[column.columnType])?.template ?? null\n }),\n debounceTime(50)\n )\n }\n return templates[column.id]\n }\n\n onResetFilersClick() {\n this.filters = []\n this.filtered.emit([])\n this.componentStateChanged.emit({\n filters: [],\n })\n }\n\n onChipRemove(filter: Filter) {\n const filters = this.filters.filter((f) => f.value !== filter.value)\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n onFilterDelete(row: Row) {\n const filters = this.filters.filter((f) => !(f.columnId === row['valueColumnId'] && f.value === row['value']))\n this.filters = filters\n this.filtered.emit(filters)\n this.componentStateChanged.emit({\n filters: filters,\n })\n }\n\n focusTrigger() {\n if (this.trigger?.id === 'ocxFilterViewShowMore') {\n this.trigger?.focus()\n } else {\n this.manageButton.focus()\n }\n }\n\n showPanel(event: any) {\n this.trigger = event.srcElement\n this.panel.toggle(event)\n }\n\n getColumnForFilter(filter: Filter, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === filter.columnId)\n }\n\n getColumn(colId: string, columns: DataTableColumn[]) {\n return columns.find((c) => c.id === colId)\n }\n\n resolveFieldData(object: any, key: any) {\n return ObjectUtils.resolveFieldData(object, key)\n }\n\n getRowObjectFromFiterData(filter: Filter) {\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","<ng-container *ngIf=\"columns$ | async as columns\">\n <div *ngIf=\"filters$ | async as filters\" class=\"flex flex-wrap align-items-center gap-2\">\n <ng-container *ngIf=\"displayMode === 'chips'; else noChipsContent\">\n <ng-container *ocxIfBreakpoint=\"'desktop'; elseTemplate: noChipsContent\">\n <ng-container *ngIf=\"selectDisplayedChips(filters, columns) as selectedFilters\">\n <p-button\n #chipFilterResetButton\n id=\"ocxFilterViewReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n <ng-container *ngIf=\"filters.length <= 0\">\n <ng-container\n *ngIf=\"_fitlerViewNoSelection; else defaultNoFilters\"\n [ngTemplateOutlet]=\"_fitlerViewNoSelection\"\n >\n </ng-container>\n <ng-template #defaultNoFilters>\n <span id=\"ocxFilterViewNoFilters\">{{ 'OCX_FILTER_VIEW.NO_FILTERS' | translate }}</span>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"(chipTemplates$ | async) ?? {} as templates\">\n <ng-container *ngFor=\"let filter of selectedFilters\">\n <ng-container *ngIf=\"getColumnForFilter(filter, columns) as column\">\n <p-chip [removable]=\"true\" (onRemove)=\"onChipRemove(filter)\" [styleClass]=\"chipStyleClass\">\n <ng-container\n *ngIf=\"_filterViewChipContent; else chipContentTemplate\"\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 <ng-template #chipContentTemplate>\n <span\n *ngIf=\"columns$ | async as columns\"\n style=\"white-space: nowrap\"\n class=\"p-chip-text flex flex-nowrap\"\n >{{column?.nameKey ?? '' | translate }}:<ng-container\n *ngIf=\"filter.filterType === FilterType.EQUAL || !filter.filterType\"\n [ngTemplateOutlet]=\"chipTemplate\"\n [ngTemplateOutletContext]=\"{\n templates: templates,\n filter: filter,\n column: column\n }\"\n ></ng-container>\n <ng-container *ngIf=\"filter.filterType === FilterType.TRUTHY\">\n <ng-container\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: filter.value\n }\"\n ></ng-container>\n </ng-container>\n </span>\n </ng-template>\n </p-chip>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"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 <ng-container\n *ngIf=\"_filterViewShowMoreChip; else showMoreChipTemplate\"\n [ngTemplateOutlet]=\"_filterViewShowMoreChip\"\n [ngTemplateOutletContext]=\"{\n $implicit: filters.length - selectedFilters.length\n }\"\n >\n </ng-container>\n <ng-template #showMoreChipTemplate>\n <span class=\"p-chip-text flex flex-nowrap\"> +{{filters.length - selectedFilters.length}} </span>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </p-chip>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template #noChipsContent>\n <p-button\n #manageButton\n id=\"ocxFilterViewManage\"\n (onClick)=\"showPanel($event)\"\n icon=\"pi pi-sliders-h\"\n label=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.LABEL' | translate }}\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [badge]=\"filters.length.toString()\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.MANAGE_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n <ng-container [ngTemplateOutlet]=\"filterTablePanel\"></ng-container>\n </ng-template>\n\n <ng-template #filterTablePanel>\n <p-overlayPanel *ngIf=\"tableTemplates$ | async as templates\" #op [style]=\"panelStyle\" (onHide)=\"focusTrigger()\">\n <ng-template pTemplate=\"content\">\n <div pFocusTrap>\n <div class=\"flex justify-content-between align-items-center mb-2\">\n <span class=\"text-2xl font-medium\">{{'OCX_FILTER_VIEW.PANEL_TITLE' | translate}}</span>\n <div>\n <p-button\n pAutoFocus\n [autofocus]=\"true\"\n id=\"ocxFilterViewOverlayReset\"\n (onClick)=\"onResetFilersClick()\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"'OCX_FILTER_VIEW.RESET_FILTERS_BUTTON.ARIA_LABEL' | translate\"\n ></p-button>\n </div>\n </div>\n <ocx-data-table\n id=\"ocxFilterViewDataTable\"\n [rows]=\"(columnFilterDataRows$ | async) ?? []\"\n [columns]=\"columnFilterTableColumns\"\n [emptyResultsMessage]=\"'OCX_FILTER_VIEW.NO_FILTERS' | translate\"\n [paginator]=\"false\"\n [tableStyle]=\"tableStyle\"\n >\n <ng-template pTemplate=\"columnIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n [ngTemplateOutlet]=\"templates[column.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: rowObject,\n column: column,\n }\"\n >\n </ng-container>\n </ng-template>\n <ng-template pTemplate=\"valueIdCell\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container *ngIf=\"getColumn(rowObject['valueColumnId'], columns) as valueColumn\">\n <ng-container\n *ngIf=\"!valueColumn.filterType || valueColumn.filterType === FilterType.EQUAL\"\n [ngTemplateOutlet]=\"templates[valueColumn.id]\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowForValueColumn(rowObject),\n column: valueColumn\n }\"\n >\n </ng-container>\n <ng-container\n *ngIf=\"valueColumn.filterType === FilterType.TRUTHY\"\n [ngTemplateOutlet]=\"truthyTemplate\"\n [ngTemplateOutletContext]=\"{\n value: resolveFieldData(rowObject, column.id)\n }\"\n >\n </ng-container>\n </ng-container>\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-overlayPanel>\n </ng-template>\n </div>\n</ng-container>\n\n<ng-template #chipTemplate let-templates=\"templates\" let-filter=\"filter\" let-column=\"column\">\n <ng-container\n *ngIf=\"templates[column.id] as template\"\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n rowObject: getRowObjectFromFiterData(filter),\n column: column\n }\"\n >\n </ng-container>\n</ng-template>\n\n<ng-template #truthyTemplate let-value=\"value\">\n <ng-container *ngIf=\"value\"> {{'OCX_FILTER_VIEW.FILTER_YES' | translate}} </ng-container>\n <ng-container *ngIf=\"!value\"> {{'OCX_FILTER_VIEW.FILTER_NO' | translate}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultStringValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id)}} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultNumberValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | number }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultCustomValue\" let-rowObject=\"rowObject\" let-column=\"column\"> </ng-template>\n\n<ng-template pTemplate=\"defaultDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | date: column.dateFormat ?? 'medium' }} </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultRelativeDateValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container>\n {{ 'OCX_DATA_TABLE.EDITED' | translate }} {{ resolveFieldData(rowObject, column.id) | timeago }}\n </ng-container>\n</ng-template>\n\n<ng-template pTemplate=\"defaultTranslationKeyValue\" let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container> {{ resolveFieldData(rowObject, column.id) | translate }}</ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { BehaviorSubject, Observable, combineLatest, map, mergeMap, of } from 'rxjs'\nimport { ColumnType } from '../../model/column-type.model'\nimport { DiagramColumn } from '../../model/diagram-column'\nimport { ObjectUtils } from '../../utils/objectutils'\nimport { DiagramData } from '../../model/diagram-data'\nimport { DiagramType } from '../../model/diagram-type'\n\nexport interface GroupByCountDiagramComponentState {\n activeDiagramType?: DiagramType\n}\n\n@Component({\n selector: 'ocx-group-by-count-diagram',\n templateUrl: './group-by-count-diagram.component.html',\n})\nexport class GroupByCountDiagramComponent implements OnInit {\n @Input() sumKey = 'SEARCH.SUMMARY_TITLE'\n @Input() diagramType = DiagramType.PIE\n /**\n * This property determines if diagram should generate the colors for the data that does not have any set.\n *\n * Setting this property to false will result in using the provided colors only if every data item has one. In the scenario where at least one item does not have a color set, diagram will generate all colors.\n */\n @Input() fillMissingColors = true\n /**\n * @deprecated Will be replaced by diagramType\n */\n @Input()\n get type(): DiagramType {\n return this.diagramType\n }\n set type(value: DiagramType) {\n this.diagramType = value\n }\n @Input() supportedDiagramTypes: DiagramType[] = []\n private _data$ = new BehaviorSubject<unknown[]>([])\n @Input()\n get data(): unknown[] {\n return this._data$.getValue()\n }\n set data(value: unknown[]) {\n this._data$.next(value)\n }\n diagramData$: Observable<DiagramData[]> | undefined\n\n private _columnType$ = new BehaviorSubject<ColumnType>(ColumnType.STRING)\n @Input()\n get columnType(): ColumnType {\n return this._columnType$.getValue()\n }\n set columnType(value: ColumnType) {\n this._columnType$.next(value)\n }\n\n private _columnField$ = new BehaviorSubject<string>('')\n @Input()\n get columnField(): string {\n return this._columnField$.getValue()\n }\n set columnField(value: string) {\n this._columnField$.next(value)\n }\n\n @Input()\n get column(): DiagramColumn {\n return { columnType: this.columnType, id: this.columnField }\n }\n set column(value: DiagramColumn) {\n this.columnType = value.columnType\n this.columnField = value.id\n }\n\n private _colors$ = new BehaviorSubject<Record<string, string>>({})\n @Input()\n get colors(): Record<string, string> {\n return this._colors$.getValue()\n }\n set colors(value: Record<string, string>) {\n this._colors$.next(value)\n }\n\n @Output() dataSelected: EventEmitter<any> = new EventEmitter()\n @Output() diagramTypeChanged: EventEmitter<DiagramType> = new EventEmitter()\n @Output() componentStateChanged: EventEmitter<GroupByCountDiagramComponentState> = new EventEmitter()\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n this.diagramData$ = combineLatest([this._data$, this._columnField$, this._columnType$, this._colors$]).pipe(\n mergeMap(([data, columnField, columnType, colors]) => {\n const columnData = data.map((d) => ObjectUtils.resolveFieldData(d, columnField))\n const occurrences = columnData.reduce((acc, current) => {\n return acc.some((e: { label: any }) => e.label === current)\n ? (acc.find((e: { label: any }) => e.label === current).value++, acc)\n : [...acc, { label: current, value: 1, backgroundColor: colors[current.toString()] }]\n }, [])\n if (columnType === ColumnType.TRANSLATION_KEY && occurrences.length > 0) {\n return this.translateService.get(occurrences.map((o: { label: any }) => o.label)).pipe(\n map((translations: { [x: string]: any }) =>\n occurrences.map((o: { label: string; value: any; backgroundColor: string | undefined }) => ({\n label: translations[o.label],\n value: o.value,\n backgroundColor: o.backgroundColor,\n }))\n )\n )\n } else {\n return of(occurrences)\n }\n })\n )\n }\n\n dataClicked(event: any) {\n this.dataSelected.emit(event)\n }\n\n onDiagramTypeChanged(newDiagramType: DiagramType) {\n this.diagramType = newDiagramType\n this.diagramTypeChanged.emit(newDiagramType)\n this.componentStateChanged.emit({\n activeDiagramType: newDiagramType,\n })\n }\n}\n","<ocx-diagram\n [data]=\"(diagramData$ | async) || []\"\n [fillMissingColors]=\"fillMissingColors\"\n [sumKey]=\"sumKey\"\n [diagramType]=\"diagramType\"\n (onDataSelect)=\"dataClicked($event)\"\n [supportedDiagramTypes]=\"supportedDiagramTypes\"\n (diagramTypeChanged)=\"onDiagramTypeChanged($event)\"\n></ocx-diagram>\n","import {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n combineLatest,\n distinctUntilChanged,\n map,\n startWith,\n timestamp,\n withLatestFrom,\n} from 'rxjs'\nimport { DataAction } from '../../model/data-action'\nimport { DataSortDirection } from '../../model/data-sort-direction'\nimport { DataTableColumn } from '../../model/data-table-column.model'\nimport { orderAndMergeValuesByTimestamp } from '../../utils/rxjs-utils'\nimport {\n ColumnGroupSelectionComponentState,\n GroupSelectionChangedEvent,\n} from '../column-group-selection/column-group-selection.component'\nimport { PrimeTemplate } from 'primeng/api'\nimport {\n ActionColumnChangedEvent,\n ColumnSelectionChangedEvent,\n CustomGroupColumnSelectorComponentState,\n} from '../custom-group-column-selector/custom-group-column-selector.component'\nimport { SlotService } from '@onecx/angular-remote-components'\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 { Filter } from '../../model/filter.model'\nimport { limit } from '../../utils/filter.utils'\nimport { FilterViewComponentState, FilterViewDisplayMode } from '../filter-view/filter-view.component'\n\nexport type InteractiveDataViewComponentState = ColumnGroupSelectionComponentState &\n CustomGroupColumnSelectorComponentState &\n DataLayoutSelectionComponentState &\n DataListGridSortingComponentState &\n DataViewComponentState &\n FilterViewComponentState\n\nexport interface ColumnGroupData {\n activeColumns: DataTableColumn[]\n groupKey: string\n}\n@Component({\n selector: 'ocx-interactive-data-view',\n templateUrl: './interactive-data-view.component.html',\n styleUrls: ['./interactive-data-view.component.css'],\n providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }],\n})\nexport class InteractiveDataViewComponent implements OnInit, AfterContentInit {\n _dataViewComponent: DataViewComponent | undefined\n @ViewChild(DataViewComponent) set dataView(ref: DataViewComponent | undefined) {\n this._dataViewComponent = ref\n this.registerEventListenerForDataView()\n }\n get dataView(): DataViewComponent | undefined {\n return this._dataViewComponent\n }\n\n columnGroupSelectionComponentState$ = new ReplaySubject<ColumnGroupSelectionComponentState>(1)\n customGroupColumnSelectorComponentState$ = new ReplaySubject<CustomGroupColumnSelectorComponentState>(1)\n dataLayoutComponentState$ = new ReplaySubject<DataLayoutSelectionComponentState>(1)\n dataListGridSortingComponentState$ = new ReplaySubject<DataListGridSortingComponentState>(1)\n dataViewComponentState$ = new ReplaySubject<DataViewComponentState>(1)\n filterViewComponentState$ = new ReplaySubject<FilterViewComponentState>(1)\n\n @Input() searchConfigPermission: string | string[] | undefined\n @Input() deletePermission: string | string[] | string[] | undefined\n @Input() editPermission: string | string[] | undefined\n @Input() viewPermission: string | string[] | undefined\n @Input() deleteActionVisibleField: string | undefined\n @Input() deleteActionEnabledField: string | undefined\n @Input() viewActionVisibleField: string | undefined\n @Input() viewActionEnabledField: string | undefined\n @Input() editActionVisibleField: string | undefined\n @Input() editActionEnabledField: string | undefined\n @Input() tableSelectionEnabledField: string | undefined\n @Input() tableAllowSelectAll = true\n @Input() name = 'Data'\n @Input() titleLineId: string | undefined\n @Input() subtitleLineIds: string[] = []\n @Input() supportedViewLayouts: ('grid' | 'list' | 'table')[] = ['grid', 'list', 'table']\n @Input() columns: DataTableColumn[] = []\n @Input() emptyResultsMessage: string | undefined\n @Input() clientSideSorting = true\n @Input() clientSideFiltering = true\n @Input() fallbackImage = 'placeholder.png'\n @Input() filters: Filter[] = []\n @Input() sortDirection: DataSortDirection = DataSortDirection.NONE\n @Input() sortField: any = ''\n @Input() sortStates: DataSortDirection[] = [\n DataSortDirection.ASCENDING,\n DataSortDirection.DESCENDING,\n DataSortDirection.NONE,\n ]\n @Input() pageSizes: number[] = [10, 25, 50]\n @Input() pageSize: number | undefined\n @Input() showAllOption = false\n @Input() totalRecordsOnServer: number | undefined\n @Input() layout: 'grid' | 'list' | 'table' = 'table'\n @Input() defaultGroupKey = ''\n @Input() customGroupKey = 'OCX_INTERACTIVE_DATA_VIEW.CUSTOM_GROUP'\n @Input() groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n @Input() currentPageShowingKey = 'OCX_DATA_TABLE.SHOWING'\n @Input() currentPageShowingWithTotalOnServerKey = 'OCX_DATA_TABLE.SHOWING_WITH_TOTAL_ON_SERVER'\n @Input() additionalActions: DataAction[] = []\n @Input() listGridPaginator = true\n @Input() tablePaginator = true\n @Input() disableFilterView = true\n @Input() filterViewDisplayMode: FilterViewDisplayMode = 'button'\n @Input() filterViewChipStyleClass = ''\n @Input() filterViewTableStyle: { [klass: string]: any } = { 'max-height': '50vh' }\n @Input() filterViewPanelStyle: { [klass: string]: any } = { 'max-width': '90%' }\n @Input() selectDisplayedChips: (filters: Filter[], columns: DataTableColumn[]) => Filter[] = (filters) =>\n limit(filters, 3, { reverse: true })\n @Input() page = 0\n @Input() selectedRows: Row[] = []\n displayedColumnKeys$ = new BehaviorSubject<string[]>([])\n displayedColumns$: Observable<DataTableColumn[]> | undefined\n @Input()\n get displayedColumnKeys(): string[] {\n return this.displayedColumnKeys$.getValue()\n }\n set displayedColumnKeys(value: string[]) {\n this.displayedColumnKeys$.next(value)\n }\n /**\n * @deprecated Use `displayedColumnKeys` and pass in column ids instead of `DataTableColumn` objects\n */\n @Input()\n get displayedColumns(): DataTableColumn[] {\n return (\n (this.displayedColumnKeys\n .map((d) => this.columns.find((c) => c.id === d))\n .filter((d) => d) as DataTableColumn[]) ?? []\n )\n }\n set displayedColumns(value: DataTableColumn[]) {\n this.displayedColumnKeys$.next(value.map((d) => d.id))\n }\n @Input() frozenActionColumn = false\n @Input() actionColumnPosition: 'left' | 'right' = 'right'\n @ContentChild('tableCell') tableCell: TemplateRef<any> | undefined\n primeNgTableCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by dateTableCell\n */\n @ContentChild('tableDateCell') tableDateCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by primeNgDateTableCell\n */\n primeNgTableDateCell: TemplateRef<any> | undefined\n @ContentChild('dateTableCell') dateTableCell: TemplateRef<any> | undefined\n primeNgDateTableCell: TemplateRef<any> | undefined\n\n /**\n * @deprecated Will be replaced by relativeDateTableCell\n */\n @ContentChild('tableRelativeDateCell') tableRelativeDateCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by primeNgRelativeDateTableCell\n */\n primeNgTableRelativeDateCell: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableCell') relativeDateTableCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableCell: TemplateRef<any> | undefined\n\n /**\n * @deprecated Will be replaced by translationKeyTableCell\n */\n @ContentChild('tableTranslationKeyCell') tableTranslationKeyCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be replaced by primeNgTranslationKeyTableCell\n */\n primeNgTableTranslationKeyCell: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableCell') translationKeyTableCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableCell: TemplateRef<any> | undefined\n\n @ContentChild('gridItemSubtitleLines') gridItemSubtitleLines: TemplateRef<any> | undefined\n primeNgGridItemSubtitleLines: TemplateRef<any> | undefined\n @ContentChild('listItemSubtitleLines') listItemSubtitleLines: TemplateRef<any> | undefined\n primeNgListItemSubtitleLines: TemplateRef<any> | undefined\n // TODO: Implement same fix for other templates and child components\n @ContentChild('stringTableCell') stringTableCell: TemplateRef<any> | undefined\n primeNgStringTableCell: TemplateRef<any> | undefined\n @ContentChild('numberTableCell') numberTableCell: TemplateRef<any> | undefined\n primeNgNumberTableCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n @ContentChild('customTableCell') customTableCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdTableCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableCell\"\n */\n primeNgCustomTableCell: TemplateRef<any> | undefined\n @ContentChild('gridItem') gridItem: TemplateRef<any> | undefined\n primeNgGridItem: TemplateRef<any> | undefined\n @ContentChild('listItem') listItem: TemplateRef<any> | undefined\n primeNgListItem: TemplateRef<any> | undefined\n @ContentChild('topCenter') topCenter: TemplateRef<any> | undefined\n primeNgTopCenter: TemplateRef<any> | undefined\n @ContentChild('listValue') listValue: TemplateRef<any> | undefined\n primeNgListValue: TemplateRef<any> | undefined\n @ContentChild('translationKeyListValue') translationKeyListValue: TemplateRef<any> | undefined\n primeNgTranslationKeyListValue: TemplateRef<any> | undefined\n @ContentChild('numberListValue') numberListValue: TemplateRef<any> | undefined\n primeNgNumberListValue: TemplateRef<any> | undefined\n @ContentChild('relativeDateListValue') relativeDateListValue: TemplateRef<any> | undefined\n primeNgRelativeDateListValue: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' DataListGrid use pTemplate=\"statusIdListValue\"\n */\n @ContentChild('customListValue') customListValue: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column\n * use the new approach instead by following the naming convention column id + IdListValue\n * e.g. for a column with the id 'status' DataListGrid use pTemplate=\"statusIdListValue\"\n */\n primeNgCustomListValue: TemplateRef<any> | undefined\n @ContentChild('stringListValue') stringListValue: TemplateRef<any> | undefined\n primeNgStringListValue: TemplateRef<any> | undefined\n @ContentChild('dateListValue') dateListValue: TemplateRef<any> | undefined\n primeNgDateListValue: TemplateRef<any> | undefined\n @ContentChild('tableFilterCell') tableFilterCell: TemplateRef<any> | undefined\n primeNgTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('dateTableFilterCell') dateTableFilterCell: TemplateRef<any> | undefined\n primeNgDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('relativeDateTableFilterCell') relativeDateTableFilterCell: TemplateRef<any> | undefined\n primeNgRelativeDateTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('translationKeyTableFilterCell') translationKeyTableFilterCell: TemplateRef<any> | undefined\n primeNgTranslationKeyTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('stringTableFilterCell') stringTableFilterCell: TemplateRef<any> | undefined\n primeNgStringTableFilterCell: TemplateRef<any> | undefined\n @ContentChild('numberTableFilterCell') numberTableFilterCell: TemplateRef<any> | undefined\n primeNgNumberTableFilterCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n @ContentChild('customTableFilterCell') customTableFilterCell: TemplateRef<any> | undefined\n /**\n * @deprecated Will be removed and instead to change the template of a specific column filter\n * use the new approach instead by following the naming convention column id + IdTableFilterCell\n * e.g. for a column with the id 'status' in DataTable use pTemplate=\"statusIdTableFilterCell\"\n */\n primeNgCustomTableFilterCell: TemplateRef<any> | undefined\n\n templates$: BehaviorSubject<QueryList<PrimeTemplate> | undefined> = new BehaviorSubject<\n QueryList<PrimeTemplate> | undefined\n >(undefined)\n @ContentChildren(PrimeTemplate)\n set templates(value: QueryList<PrimeTemplate> | undefined) {\n this.templates$.next(value)\n }\n\n @Output() filtered = new EventEmitter<Filter[]>()\n @Output() sorted = new EventEmitter<Sort>()\n @Output() deleteItem = new EventEmitter<RowListGridData>()\n @Output() viewItem = new EventEmitter<RowListGridData>()\n @Output() editItem = new EventEmitter<RowListGridData>()\n @Output() dataViewLayoutChange = new EventEmitter<'grid' | 'list' | 'table'>()\n // TODO: Remove following line once displayedColumns (deprecated) has been removed\n @Output() displayedColumnsChange = new EventEmitter<DataTableColumn[]>()\n @Output() displayedColumnKeysChange = new EventEmitter<string[]>()\n @Output() selectionChanged: EventEmitter<Row[]> = new EventEmitter()\n\n @Output() pageChanged: EventEmitter<number> = new EventEmitter()\n @Output() pageSizeChanged = new EventEmitter<number>()\n\n @Output() componentStateChanged = new EventEmitter<InteractiveDataViewComponentState>()\n\n selectedGroupKey$ = new BehaviorSubject<string | undefined>('')\n get selectedGroupKey(): string | undefined {\n return this.selectedGroupKey$.getValue()\n }\n set selectedGroupKey(value: string | undefined) {\n this.selectedGroupKey$.next(value)\n }\n isDeleteItemObserved: boolean | undefined\n isViewItemObserved: boolean | undefined\n isEditItemObserved: boolean | undefined\n firstColumnId: string | undefined\n\n @Input()\n get paginator(): boolean {\n return this.listGridPaginator && this.tablePaginator\n }\n set paginator(value: boolean) {\n this.listGridPaginator = value\n this.tablePaginator = value\n }\n\n get _gridItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.gridItemSubtitleLines\n }\n get _listItemSubtitleLines(): TemplateRef<any> | undefined {\n return this.listItemSubtitleLines\n }\n get _tableCell(): TemplateRef<any> | undefined {\n return this.tableCell\n }\n get _stringTableCell(): TemplateRef<any> | undefined {\n return this.stringTableCell\n }\n get _numberTableCell(): TemplateRef<any> | undefined {\n return this.numberTableCell\n }\n get _customTableCell(): TemplateRef<any> | undefined {\n return this.customTableCell\n }\n get _tableDateCell(): TemplateRef<any> | undefined {\n return this.dateTableCell ?? this.tableDateCell\n }\n get _dateTableCell(): TemplateRef<any> | undefined {\n return this.dateTableCell\n }\n get _tableRelativeDateCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCell ?? this.tableRelativeDateCell\n }\n get _relativeDateTableCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableCell\n }\n get _tableTranslationKeyCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCell ?? this.tableTranslationKeyCell\n }\n get _translationKeyTableCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableCell\n }\n get _gridItem(): TemplateRef<any> | undefined {\n return this.gridItem\n }\n get _listItem(): TemplateRef<any> | undefined {\n return this.listItem\n }\n get _listValue(): TemplateRef<any> | undefined {\n return this.listValue\n }\n get _translationKeyListValue(): TemplateRef<any> | undefined {\n return this.translationKeyListValue\n }\n get _numberListValue(): TemplateRef<any> | undefined {\n return this.numberListValue\n }\n get _relativeDateListValue(): TemplateRef<any> | undefined {\n return this.relativeDateListValue\n }\n get _customListValue(): TemplateRef<any> | undefined {\n return this.customListValue\n }\n get _stringListValue(): TemplateRef<any> | undefined {\n return this.stringListValue\n }\n get _dateListValue(): TemplateRef<any> | undefined {\n return this.dateListValue\n }\n get _tableFilterCell(): TemplateRef<any> | undefined {\n return this.tableFilterCell\n }\n get _dateTableFilterCell(): TemplateRef<any> | undefined {\n return this.dateTableFilterCell\n }\n get _relativeDateTableFilterCell(): TemplateRef<any> | undefined {\n return this.relativeDateTableFilterCell\n }\n get _translationKeyTableFilterCell(): TemplateRef<any> | undefined {\n return this.translationKeyTableFilterCell\n }\n get _stringTableFilterCell(): TemplateRef<any> | undefined {\n return this.stringTableFilterCell\n }\n get _numberTableFilterCell(): TemplateRef<any> | undefined {\n return this.numberTableFilterCell\n }\n get _customTableFilterCell(): TemplateRef<any> | undefined {\n return this.customTableFilterCell\n }\n\n _data: RowListGridData[] = []\n @Input()\n get data(): RowListGridData[] {\n return this._data\n }\n set data(value: RowListGridData[]) {\n this._data = value\n }\n\n columnGroupSlotName = 'onecx-column-group-selection'\n isColumnGroupSelectionComponentDefined$: Observable<boolean>\n groupSelectionChangedSlotEmitter = new EventEmitter<ColumnGroupData | undefined>()\n\n constructor(private slotService: SlotService) {\n this.isColumnGroupSelectionComponentDefined$ = this.slotService\n .isSomeComponentDefinedForSlot(this.columnGroupSlotName)\n .pipe(startWith(true))\n\n this.groupSelectionChangedSlotEmitter.subscribe((event: ColumnGroupData | undefined) => {\n if (event === undefined) {\n event = {\n activeColumns: this.displayedColumns,\n groupKey: this.selectedGroupKey ?? this.defaultGroupKey,\n }\n }\n this.displayedColumnKeys$.next(event.activeColumns.map((col) => col.id))\n this.selectedGroupKey$.next(event.groupKey)\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n this.columnGroupSelectionComponentState$.next({\n activeColumnGroupKey: event.groupKey,\n displayedColumns: event.activeColumns,\n })\n })\n\n this.dataViewLayoutChange\n .pipe(withLatestFrom(this.isColumnGroupSelectionComponentDefined$))\n .subscribe(([_, columnGroupComponentDefined]) => {\n if (columnGroupComponentDefined) {\n if (\n !(\n this.columns.find((c) => c.nameKey === this.selectedGroupKey) ||\n this.selectedGroupKey === this.customGroupKey\n )\n ) {\n this.selectedGroupKey$.next(undefined)\n }\n }\n })\n }\n\n ngOnInit(): void {\n this.selectedGroupKey = this.defaultGroupKey\n if (!this.displayedColumns || this.displayedColumns.length === 0) {\n this.displayedColumnKeys = this.columns.map((column) => column.id)\n }\n if (this.defaultGroupKey && this.defaultGroupKey !== this.customGroupKey) {\n this.displayedColumnKeys = this.columns\n .filter((column) => column.predefinedGroupKeys?.includes(this.defaultGroupKey))\n .map((column) => column.id)\n }\n this.displayedColumns$ = this.displayedColumnKeys$.pipe(\n distinctUntilChanged((prev, curr) => prev.length === curr.length && prev.every((v, i) => curr[i] === v)),\n map(\n (columnKeys) =>\n (columnKeys.map((key) => this.columns.find((col) => col.id === key)).filter((d) => d) as DataTableColumn[]) ??\n []\n )\n )\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n if (!this.groupSelectionNoGroupSelectedKey) {\n this.groupSelectionNoGroupSelectedKey = 'OCX_INTERACTIVE_DATA_VIEW.NO_GROUP_SELECTED'\n }\n this.firstColumnId = this.columns[0]?.id\n\n let dataListGridSortingComponentState$: Observable<DataListGridSortingComponentState | Record<string, never>> =\n this.dataListGridSortingComponentState$\n let columnGroupSelectionComponentState$: Observable<ColumnGroupSelectionComponentState | Record<string, never>> =\n this.columnGroupSelectionComponentState$\n let customGroupColumnSelectorComponentState$: Observable<\n CustomGroupColumnSelectorComponentState | Record<string, never>\n > = this.customGroupColumnSelectorComponentState$\n\n if (this.layout === 'table') {\n dataListGridSortingComponentState$ = dataListGridSortingComponentState$.pipe(startWith({}))\n } else {\n columnGroupSelectionComponentState$ = columnGroupSelectionComponentState$.pipe(\n startWith({\n activeColumnGroupKey: this.selectedGroupKey,\n displayedColumns: this.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 ngAfterContentInit() {\n this.templates$.value?.forEach((item) => {\n switch (item.getType()) {\n case 'tableCell':\n this.primeNgTableCell = item.template\n break\n case 'tableDateCell':\n this.primeNgTableDateCell = item.template\n break\n case 'dateTableCell':\n this.primeNgDateTableCell = item.template\n break\n case 'tableRelativeDateCell':\n this.primeNgTableRelativeDateCell = item.template\n break\n case 'relativeDateTableCell':\n this.primeNgRelativeDateTableCell = item.template\n break\n case 'tableTranslationKeyCell':\n this.primeNgTableTranslationKeyCell = item.template\n break\n case 'translationKeyTableCell':\n this.primeNgTranslationKeyTableCell = item.template\n break\n case 'gridItemSubtitleLines':\n this.primeNgGridItemSubtitleLines = item.template\n break\n case 'listItemSubtitleLines':\n this.primeNgListItemSubtitleLines = item.template\n break\n case 'stringTableCell':\n this.primeNgStringTableCell = item.template\n break\n case 'numberTableCell':\n this.primeNgNumberTableCell = item.template\n break\n case 'customTableCell':\n this.primeNgCustomTableCell = item.template\n break\n case 'gridItem':\n this.primeNgGridItem = item.template\n break\n case 'listItem':\n this.primeNgListItem = item.template\n break\n case 'topCenter':\n this.primeNgTopCenter = item.template\n break\n case 'listValue':\n this.primeNgListValue = item.template\n break\n case 'translationKeyListValue':\n this.primeNgTranslationKeyListValue = item.template\n break\n case 'numberListValue':\n this.primeNgNumberListValue = item.template\n break\n case 'relativeDateListValue':\n this.primeNgRelativeDateListValue = item.template\n break\n case 'customListValue':\n this.primeNgCustomListValue = item.template\n break\n case 'stringListValue':\n this.primeNgStringListValue = item.template\n break\n case 'dateListValue':\n this.primeNgDateListValue = item.template\n break\n case 'tableFilterCell':\n this.primeNgTableFilterCell = item.template\n break\n case 'dateTableFilterCell':\n this.primeNgDateTableFilterCell = item.template\n break\n case 'relativeDateTableFilterCell':\n this.primeNgRelativeDateTableFilterCell = item.template\n break\n case 'translationKeyTableFilterCell':\n this.primeNgTranslationKeyTableFilterCell = item.template\n break\n case 'stringTableFilterCell':\n this.primeNgStringTableFilterCell = item.template\n break\n case 'numberTableFilterCell':\n this.primeNgNumberTableFilterCell = item.template\n break\n case 'customTableFilterCell':\n this.primeNgCustomTableFilterCell = item.template\n break\n }\n })\n }\n\n filtering(event: any) {\n this.filters = event\n this.filtered.emit(event)\n }\n\n sorting(event: any) {\n this.sortDirection = event.sortDirection\n this.sortField = event.sortColumn\n this.sorted.emit(event)\n }\n\n onDeleteElement(element: RowListGridData) {\n if (this.isDeleteItemObserved) {\n this.deleteItem.emit(element)\n }\n }\n\n onViewElement(element: RowListGridData) {\n if (this.isViewItemObserved) {\n this.viewItem.emit(element)\n }\n }\n\n onEditElement(element: RowListGridData) {\n if (this.isEditItemObserved) {\n this.editItem.emit(element)\n }\n }\n\n onDataViewLayoutChange(layout: 'grid' | 'list' | 'table') {\n this.layout = layout\n this.dataViewLayoutChange.emit(layout)\n }\n\n onSortChange($event: any) {\n this.sortField = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onSortDirectionChange($event: any) {\n this.sortDirection = $event\n this.sorted.emit({ sortColumn: this.sortField, sortDirection: this.sortDirection })\n }\n\n onColumnGroupSelectionChange(event: GroupSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = event.groupKey\n // TODO: Remove following line once displayedColumns (deprecated) has been removed\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n registerEventListenerForDataView() {\n if (this.deleteItem.observed) {\n this.isDeleteItemObserved = true\n if (!this._dataViewComponent?.deleteItem.observed) {\n this._dataViewComponent?.deleteItem.subscribe((event) => {\n this.onDeleteElement(event)\n })\n }\n }\n if (this.viewItem.observed) {\n this.isViewItemObserved = true\n if (!this._dataViewComponent?.viewItem.observed) {\n this._dataViewComponent?.viewItem.subscribe((event) => {\n this.onViewElement(event)\n })\n }\n }\n if (this.editItem.observed) {\n this.isEditItemObserved = true\n if (!this._dataViewComponent?.editItem.observed) {\n this._dataViewComponent?.editItem.subscribe((event) => {\n this.onEditElement(event)\n })\n }\n }\n if (this.selectionChanged.observed) {\n if (!this._dataViewComponent?.selectionChanged.observed) {\n this._dataViewComponent?.selectionChanged.subscribe((event) => {\n this.onRowSelectionChange(event)\n })\n }\n }\n }\n\n onColumnSelectionChange(event: ColumnSelectionChangedEvent) {\n this.displayedColumnKeys = event.activeColumns.map((col) => col.id)\n this.selectedGroupKey = this.customGroupKey\n // TODO: Remove following line once displayedColumns (deprecated) has been removed\n this.displayedColumnsChange.emit(this.displayedColumns)\n this.displayedColumnKeysChange.emit(this.displayedColumnKeys)\n }\n\n onActionColumnConfigChange(event: ActionColumnChangedEvent) {\n this.frozenActionColumn = event.frozenActionColumn\n this.actionColumnPosition = event.actionColumnPosition\n }\n\n onRowSelectionChange(event: Row[]) {\n if (this.selectionChanged.observed) {\n this.selectionChanged.emit(event)\n }\n }\n\n onPageChange(event: number) {\n this.page = event\n this.pageChanged.emit(event)\n }\n\n onPageSizeChange(event: number) {\n this.pageSize = event\n this.pageSizeChanged.emit(event)\n }\n}\n","<div class=\"p-3 border-bottom-1 surface-border\">\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 <ocx-filter-view\n *ngIf=\"!disableFilterView\"\n [filters]=\"filters\"\n [columns]=\"columns\"\n [templates]=\"templates$ | async\"\n [displayMode]=\"filterViewDisplayMode\"\n [selectDisplayedChips]=\"selectDisplayedChips\"\n [chipStyleClass]=\"filterViewChipStyleClass\"\n [tableStyle]=\"filterViewTableStyle\"\n (filtered)=\"filtering($event)\"\n (componentStateChanged)=\"filterViewComponentState$.next($event)\"\n ></ocx-filter-view>\n </div>\n\n <div *ngIf=\"topCenter\">\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n\n <div *ngIf=\"layout !== 'table'\" class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n (componentStateChanged)=\"dataListGridSortingComponentState$.next($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n\n <div\n [ngStyle]=\"layout !== 'table' ? {\n 'position': 'absolute'\n } : {}\"\n class=\"flex flex-wrap justify-content-between align-items-center gap-2\"\n >\n <ng-container *ngIf=\"isColumnGroupSelectionComponentDefined$ | async; else defaultColumnGroupSelectionComponent\">\n <ng-container *ngIf=\"displayedColumnKeys$ | async as displayedColumnKeys\">\n <ocx-slot\n [ngStyle]=\"layout !== 'table' ? {'display' : 'none'} : {}\"\n *ocxIfPermission=\"searchConfigPermission; elseTemplate: defaultColumnGroupSelectionComponent\"\n name=\"{{columnGroupSlotName}}\"\n [inputs]=\"{ placeholderKey: groupSelectionNoGroupSelectedKey, defaultGroupKey: defaultGroupKey, customGroupKey: customGroupKey, columns: columns, selectedGroupKey: selectedGroupKey, layout: layout, displayedColumnsIds: displayedColumnKeys }\"\n [outputs]=\"{ groupSelectionChanged: groupSelectionChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </ng-container>\n </ng-container>\n\n <ocx-custom-group-column-selector\n *ngIf=\"layout === 'table'\"\n [columns]=\"columns\"\n [displayedColumns]=\"(displayedColumns$ | async) ?? []\"\n [customGroupKey]=\"customGroupKey\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n (componentStateChanged)=\"customGroupColumnSelectorComponentState$.next($event)\"\n ></ocx-custom-group-column-selector>\n </div>\n </div>\n</div>\n<div class=\"p-3\">\n <ocx-data-view\n [columns]=\"(displayedColumns$ | async) ?? []\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [showAllOption]=\"showAllOption\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n (pageSizeChanged)=\"onPageSizeChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"primeNgStringTableCell ?? _stringTableCell\"\n [numberTableCellTemplate]=\"primeNgNumberTableCell ?? _numberTableCell\"\n [customTableCellTemplate]=\"primeNgCustomTableCell ?? _customTableCell\"\n [dateTableCellTemplate]=\"primeNgDateTableCell ?? _dateTableCell ?? primeNgTableDateCell ?? _tableDateCell\"\n [relativeDateTableCellTemplate]=\"primeNgRelativeDateTableCell ?? _relativeDateTableCell ?? primeNgTableRelativeDateCell ?? _tableRelativeDateCell\"\n [tableCellTemplate]=\"primeNgTableCell ?? _tableCell\"\n [translationKeyTableCellTemplate]=\"primeNgTranslationKeyTableCell ?? _translationKeyTableCell ?? primeNgTableTranslationKeyCell ?? _tableTranslationKeyCell\"\n [gridItemSubtitleLinesTemplate]=\"primeNgGridItemSubtitleLines ?? _gridItemSubtitleLines\"\n [listItemSubtitleLinesTemplate]=\"primeNgListItemSubtitleLines ?? _listItemSubtitleLines\"\n [listItemTemplate]=\"primeNgListItem ?? _listItem\"\n [listValueTemplate]=\"primeNgListValue ?? _listValue\"\n [translationKeyListValueTemplate]=\"primeNgTranslationKeyListValue ?? _translationKeyListValue\"\n [numberListValueTemplate]=\"primeNgNumberListValue ?? _numberListValue\"\n [relativeDateListValueTemplate]=\"primeNgRelativeDateListValue ?? _relativeDateListValue\"\n [customListValueTemplate]=\"primeNgCustomListValue ?? _customListValue\"\n [stringListValueTemplate]=\"primeNgStringListValue ?? _stringListValue\"\n [dateListValueTemplate]=\"primeNgDateListValue ?? _dateListValue\"\n [gridItemTemplate]=\"primeNgGridItem ?? _gridItem\"\n [tableFilterCellTemplate]=\"primeNgTableFilterCell ?? _tableFilterCell\"\n [dateTableFilterCellTemplate]=\"primeNgDateTableFilterCell ?? _dateTableFilterCell\"\n [customTableFilterCellTemplate]=\"primeNgCustomTableFilterCell ?? _customTableFilterCell\"\n [numberTableFilterCellTemplate]=\"primeNgNumberTableFilterCell ?? _numberTableFilterCell\"\n [stringTableFilterCellTemplate]=\"primeNgStringTableFilterCell ?? _stringTableFilterCell\"\n [relativeDateTableFilterCellTemplate]=\"primeNgRelativeDateTableFilterCell ?? _relativeDateTableFilterCell\"\n [translationKeyTableFilterCellTemplate]=\"primeNgTranslationKeyTableFilterCell ?? _translationKeyTableFilterCell\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n (componentStateChanged)=\"dataViewComponentState$.next($event)\"\n [parentTemplates]=\"templates$ | async\"\n [tableAllowSelectAll]=\"tableAllowSelectAll\"\n [tableSelectionEnabledField]=\"tableSelectionEnabledField\"\n >\n </ocx-data-view>\n</div>\n\n<ng-template #defaultColumnGroupSelectionComponent>\n <ocx-column-group-selection\n *ngIf=\"layout === 'table'\"\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</ng-template>\n\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n <ng-template #numberTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container>\n </ng-template>\n</ng-template>\n<ng-template #tableDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableRelativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableTranslationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container>\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n\n<ng-template #stringTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableFilterCell\"\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableFilterCell\"\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableFilterCell\"\n [ngTemplateOutlet]=\"_customTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableFilterCell\"\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableFilterCell\"\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableFilterCell\"\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n","import { Component } from '@angular/core'\n\n/**\n * Show this data not found page component if the main entity of a page could not be loaded.\n */\n@Component({\n selector: 'ocx-data-loading-error',\n template: `<div class=\"p-4\">\n <h1>{{ 'OCX_DATA_LOADING_ERROR.TITLE' | translate }}</h1>\n <div style=\"white-space: pre-line\">\n {{ 'OCX_DATA_LOADING_ERROR.MESSAGE' | translate }}\n </div>\n </div> `,\n})\nexport class DataLoadingErrorComponent {}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { Observable, filter, first, map, of, tap } from 'rxjs'\nimport { SyncableTopic } from '@onecx/accelerator'\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 TranslationCacheTopic extends SyncableTopic<string> {\n constructor() {\n super('translationCache', 2)\n }\n}\n\ndeclare global {\n interface Window {\n onecxTranslations: Record<string, any>\n }\n}\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\n@Injectable({ providedIn: 'root' })\nexport class TranslationCacheService implements OnDestroy {\n private translationTopic$ = new TranslationCacheTopic()\n constructor() {\n window['onecxTranslations'] ??= {}\n }\n ngOnDestroy(): void {\n this.translationTopic$.destroy()\n }\n\n getTranslationFile(url: string, cacheMissFunction: () => Observable<any>): Observable<any> {\n if (window['onecxTranslations'][url]) {\n return of(window['onecxTranslations'][url])\n }\n\n if (window['onecxTranslations'][url] === null) {\n return this.translationTopic$.pipe(\n filter((messageUrl) => messageUrl === url),\n map(() => window['onecxTranslations'][url]),\n first()\n )\n }\n\n window['onecxTranslations'][url] = null\n return cacheMissFunction().pipe(\n tap((t) => {\n window['onecxTranslations'][url] = t\n this.translationTopic$.publish(url)\n }),\n map(() => window['onecxTranslations'][url]),\n first()\n )\n }\n}\n","import { NgModule } from '@angular/core'\nimport { DropdownModule } from 'primeng/dropdown'\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 { OverlayPanelModule } from 'primeng/overlaypanel'\nimport { FocusTrapModule } from 'primeng/focustrap'\n\n@NgModule({\n imports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n DropdownModule,\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 OverlayPanelModule,\n FocusTrapModule,\n SharedModule,\n ],\n exports: [\n BreadcrumbModule,\n ChipModule,\n CheckboxModule,\n DropdownModule,\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 OverlayPanelModule,\n FocusTrapModule,\n SharedModule,\n ],\n})\nexport class AngularAcceleratorPrimeNgModule {}\n","import { UserService } from '@onecx/angular-integration-interface'\n\n/**\n * @deprecated use DynamicLocaleId from @onecx/angular-utils\n */\nexport class DynamicLocaleId {\n constructor(private userService: UserService) {\n Object.getOwnPropertyNames(String.prototype).forEach((k) => {\n if (k != 'valueOf' && k != 'length') {\n ;(this as any)[k] = function (...args: any[]) {\n const str = this.valueOf()\n return str[k](...args)\n }\n }\n })\n }\n\n valueOf() {\n return this.userService.lang$.getValue()\n }\n\n public get length(): number {\n return this.valueOf().length\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { APP_INITIALIZER, LOCALE_ID, NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { RouterModule } from '@angular/router'\nimport { TranslateModule } from '@ngx-translate/core'\n\nimport { AppConfigService, UserService } from '@onecx/angular-integration-interface'\nimport { AngularRemoteComponentsModule } from '@onecx/angular-remote-components'\n\nimport { firstValueFrom, skip } from 'rxjs'\nimport { AngularAcceleratorPrimeNgModule } from './angular-accelerator-primeng.module'\nimport { ColumnGroupSelectionComponent } from './components/column-group-selection/column-group-selection.component'\nimport { CustomGroupColumnSelectorComponent } from './components/custom-group-column-selector/custom-group-column-selector.component'\nimport { DataLayoutSelectionComponent } from './components/data-layout-selection/data-layout-selection.component'\nimport { DataListGridSortingComponent } from './components/data-list-grid-sorting/data-list-grid-sorting.component'\nimport { DataListGridComponent } from './components/data-list-grid/data-list-grid.component'\nimport { DataTableComponent } from './components/data-table/data-table.component'\nimport { DataViewComponent } from './components/data-view/data-view.component'\nimport { DiagramComponent } from './components/diagram/diagram.component'\nimport { GroupByCountDiagramComponent } from './components/group-by-count-diagram/group-by-count-diagram.component'\nimport { InteractiveDataViewComponent } from './components/interactive-data-view/interactive-data-view.component'\nimport { PageHeaderComponent } from './components/page-header/page-header.component'\nimport { DataLoadingErrorComponent } from './components/data-loading-error/data-loading-error.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 MultiLanguageMissingTranslationHandler,\n providePermissionChecker,\n provideTranslationPathFromMeta,\n} from '@onecx/angular-utils'\nimport { SrcDirective } from './directives/src.directive'\nimport { TooltipOnOverflowDirective } from './directives/tooltipOnOverflow.directive'\nimport { DynamicPipe } from './pipes/dynamic.pipe'\nimport { OcxTimeAgoPipe } from './pipes/ocxtimeago.pipe'\nimport { DynamicLocaleId } from './utils/dynamic-locale-id'\nimport { FilterViewComponent } from './components/filter-view/filter-view.component'\n\nexport class AngularAcceleratorMissingTranslationHandler extends MultiLanguageMissingTranslationHandler {}\n\nfunction appInitializer(userService: UserService) {\n return async () => {\n await firstValueFrom(userService.lang$.pipe(skip(1)))\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n AngularAcceleratorPrimeNgModule,\n AngularRemoteComponentsModule,\n TranslateModule,\n FormsModule,\n RouterModule,\n ReactiveFormsModule,\n ],\n declarations: [\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridSortingComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n PageHeaderComponent,\n DynamicPipe,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n DataLoadingErrorComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\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 AppConfigService,\n ],\n exports: [\n AngularRemoteComponentsModule,\n ColumnGroupSelectionComponent,\n CustomGroupColumnSelectorComponent,\n DataLayoutSelectionComponent,\n DataListGridComponent,\n DataTableComponent,\n DataViewComponent,\n InteractiveDataViewComponent,\n PageHeaderComponent,\n SearchHeaderComponent,\n DiagramComponent,\n GroupByCountDiagramComponent,\n DataLoadingErrorComponent,\n IfPermissionDirective,\n IfBreakpointDirective,\n SrcDirective,\n OcxTimeAgoPipe,\n AdvancedDirective,\n TooltipOnOverflowDirective,\n FilterViewComponent,\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 { TranslateLoader } from '@ngx-translate/core'\nimport { defaultIfEmpty, first, mergeMap, Observable, of, tap } from 'rxjs'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport class AsyncTranslateLoader implements TranslateLoader {\n static lastTimerId = 0\n timerId = AsyncTranslateLoader.lastTimerId++\n\n constructor(private translateLoader$: Observable<TranslateLoader>) {}\n\n getTranslation(lang: string): Observable<any> {\n return this.translateLoader$.pipe(\n tap(() => console.time('AsyncTranslateLoader_' + this.timerId)),\n defaultIfEmpty(undefined),\n first(),\n mergeMap((translateLoader) => translateLoader?.getTranslation(lang) ?? of({})),\n tap(() => console.timeEnd('AsyncTranslateLoader_' + this.timerId))\n )\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader'\nimport { Observable } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport class CachingTranslateLoader implements TranslateLoader {\n private translateLoader: TranslateHttpLoader\n\n constructor(\n private translationCache: TranslationCacheService,\n private http: HttpClient,\n private prefix?: string,\n private suffix?: string\n ) {\n this.translateLoader = new TranslateHttpLoader(this.http, this.prefix, this.suffix)\n }\n\n getTranslation(lang: string): Observable<any> {\n const url = `${this.prefix}${lang}${this.suffix}`\n\n return this.translationCache.getTranslationFile(url, () => this.translateLoader.getTranslation(lang))\n }\n}\n","import { TranslateLoader } from '@ngx-translate/core'\nimport { Observable, catchError, forkJoin, map, of } from 'rxjs'\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport class TranslateCombinedLoader implements TranslateLoader {\n private _loaders: TranslateLoader[]\n constructor(...loaders: TranslateLoader[]) {\n this._loaders = loaders\n }\n getTranslation(lang: string): Observable<object> {\n return forkJoin(\n this._loaders.map((l) =>\n l.getTranslation(lang).pipe(\n catchError(err => {\n console.error('Failed to load translation file', l, err)\n return of({})\n })\n )\n )\n ).pipe(\n map((allTranslations) => {\n let result = {}\n allTranslations.forEach((translations) => {\n result = this.mergeDeep(result, translations)\n })\n return result\n })\n )\n }\n isObject(item: any): any {\n return item && typeof item === 'object' && !Array.isArray(item)\n }\n\n mergeDeep(target: any, source: any): any {\n const output = Object.assign({}, target)\n if (this.isObject(target) && this.isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (this.isObject(source[key])) {\n if (!(key in target)) Object.assign(output, { [key]: source[key] })\n else output[key] = this.mergeDeep(target[key], source[key])\n } else {\n Object.assign(output, { [key]: source[key] })\n }\n })\n }\n return output\n }\n}\n","import { Location } from '@angular/common'\nimport { HttpClient } from '@angular/common/http'\nimport { inject } from '@angular/core'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { combineLatest, filter, map, tap } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\nimport { AsyncTranslateLoader } from './async-translate-loader.utils'\nimport { CachingTranslateLoader } from './caching-translate-loader.utils'\nimport { TranslateCombinedLoader } from './translate.combined.loader'\n\nlet lastTranslateLoaderTimerId = 0\n\n/**\n * @deprecated Please import from `@onecx/angular-utils` instead.\n */\nexport function createTranslateLoader(\n http: HttpClient,\n appStateService: AppStateService,\n translationCacheService?: TranslationCacheService\n): TranslateLoader {\n const ts = translationCacheService ?? inject(TranslationCacheService)\n const timerId = lastTranslateLoaderTimerId++\n\n console.time('createTranslateLoader_' + timerId)\n return new AsyncTranslateLoader(\n combineLatest([appStateService.currentMfe$.asObservable(), appStateService.globalLoading$.asObservable()]).pipe(\n filter(([, isLoading]) => !isLoading),\n map(([currentMfe]) => {\n return new TranslateCombinedLoader(\n // translations of shell or of app in standalone mode\n new CachingTranslateLoader(ts, http, `./assets/i18n/`, '.json'),\n // translations of portal-integration-angular of app\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, `onecx-portal-lib/assets/i18n/`),\n '.json'\n ),\n // translations of portal-integration-angular of shell\n new CachingTranslateLoader(ts, http, `./onecx-portal-lib/assets/i18n/`, '.json'),\n // Primelocale Translations\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, `onecx-portal-lib/assets/i18n/primeng/`),\n '.json'\n ),\n // translations of the app\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, `assets/i18n/`),\n '.json'\n )\n )\n }),\n tap(() => console.timeEnd('createTranslateLoader_' + timerId))\n )\n )\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateUtils {\n constructor(@Inject(LOCALE_ID) protected locale: string) {}\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\n/**\n * @deprecated Will be removed. Please use isValidDate() from @onecx/accelerator\n */\nexport function isValidDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value as any);\n}\n","import { Location } from '@angular/common'\nimport { HttpClient } from '@angular/common/http'\nimport { inject } from '@angular/core'\nimport { TranslateLoader } from '@ngx-translate/core'\nimport { map, ReplaySubject, tap } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\nimport { AsyncTranslateLoader } from './async-translate-loader.utils'\nimport { CachingTranslateLoader } from './caching-translate-loader.utils'\nimport { TranslateCombinedLoader } from './translate.combined.loader'\n\nlet lastTranslateLoaderTimerId = 0\n\nexport function createRemoteComponentTranslateLoader(\n http: HttpClient,\n baseUrlReplaySubject$: ReplaySubject<string>,\n translationCacheService?: TranslationCacheService\n): TranslateLoader {\n const ts = translationCacheService ?? inject(TranslationCacheService)\n const timerId = lastTranslateLoaderTimerId++\n\n console.time('createRemoteComponentTranslateLoader_' + timerId)\n return new AsyncTranslateLoader(\n baseUrlReplaySubject$.pipe(\n map((baseUrl) => {\n return new TranslateCombinedLoader(\n // translations of shell or of app in standalone mode\n new CachingTranslateLoader(ts, http, `./assets/i18n/`, '.json'),\n // translations of portal-integration-angular of app\n new CachingTranslateLoader(\n ts,\n http,\n Location.joinWithSlash(baseUrl, `onecx-portal-lib/assets/i18n/`),\n '.json'\n ),\n // translations of portal-integration-angular of shell\n new CachingTranslateLoader(ts, http, `./onecx-portal-lib/assets/i18n/`, '.json'),\n // translations of the app\n new CachingTranslateLoader(ts, http, Location.joinWithSlash(baseUrl, `assets/i18n/`), '.json')\n )\n }),\n tap(() => console.timeEnd('createRemoteComponentTranslateLoader_' + timerId))\n )\n )\n}\n","import { HttpClient } from '@angular/common/http'\nimport { ReplaySubject, map } from 'rxjs'\nimport { TranslationCacheService } from '../services/translation-cache.service'\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { AsyncTranslateLoader } from './async-translate-loader.utils'\nimport { TranslateCombinedLoader } from './translate.combined.loader'\nimport { createRemoteComponentTranslateLoader } from './create-remote-component-translate-loader.utils'\nimport { CachingTranslateLoader } from './caching-translate-loader.utils'\nimport { Location } from '@angular/common'\n\nexport function createRemoteComponentAndMfeTranslateLoader(\n httpClient: HttpClient,\n baseUrl: ReplaySubject<string>,\n translationCacheService: TranslationCacheService,\n appStateService: AppStateService\n) {\n return new AsyncTranslateLoader(\n appStateService.currentMfe$.pipe(\n map((currentMfe) => {\n return new TranslateCombinedLoader(\n createRemoteComponentTranslateLoader(httpClient, baseUrl, translationCacheService),\n new CachingTranslateLoader(\n translationCacheService,\n httpClient,\n Location.joinWithSlash(currentMfe.remoteBaseUrl, 'assets/i18n/'),\n '.json'\n )\n )\n })\n )\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 { Calendar } from 'primeng/calendar'\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(calendars: QueryList<Calendar>, formKey: string): boolean {\n return (\n calendars.find((c) => {\n return c.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 calendars a list of primeng calendars of the form (use `@ViewChildren(Calendar) calendars!: QueryList<Calendar>;`)\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 calendars: QueryList<Calendar>,\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(calendars, 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","// injection tokens + related utilities\nexport * from './lib/injection-tokens/has-permission-checker'\n\n// directives\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'\n\n// components\nexport * from './lib/components/column-group-selection/column-group-selection.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/page-header/page-header.component'\nexport * from './lib/components/search-header/search-header.component'\nexport * from './lib/components/data-loading-error/data-loading-error.component'\n\n// services\nexport * from './lib/services/breadcrumb.service'\nexport * from './lib/services/translation-cache.service'\n\n// pipes\nexport * from './lib/pipes/dynamic.pipe'\nexport * from './lib/pipes/ocxtimeago.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'\n// export * from './lib/model/data-column-name-id.model'\nexport * from './lib/model/data-sort-direction'\nexport * from './lib/model/data-table-column.model'\nexport * from './lib/model/diagram-column'\n// export * from './lib/model/diagram-data'\nexport * from './lib/model/diagram-type'\nexport * from './lib/model/filter.model'\n\n// core\nexport * from './lib/angular-accelerator.module'\nexport * from './lib/angular-accelerator-primeng.module'\n\n// functions\nexport * from './lib/functions/flatten-object'\nexport * from './lib/functions/at-least-one-field-filled-validator'\n\n// utils\nexport * from './lib/utils/async-translate-loader.utils'\nexport * from './lib/utils/caching-translate-loader.utils'\nexport * from './lib/utils/colorutils'\nexport * from './lib/utils/create-translate-loader.utils'\nexport * from './lib/utils/dateutils'\nexport * from './lib/utils/objectutils'\nexport * from './lib/utils/primeicon.utils'\nexport * from './lib/utils/translate.combined.loader'\nexport * from './lib/utils/create-remote-component-and-mfe-translate-loader.utils'\nexport * from './lib/utils/create-remote-component-translate-loader.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'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","switchMap","i6","i7","i8","i11.SrcDirective","i12.DynamicPipe","i3","i4","i5","i7.PageHeaderComponent","i8.IfPermissionDirective","i9","i1.SearchHeaderComponent","i11.IfPermissionDirective","i12.TooltipOnOverflowDirective","i13.OcxTimeAgoPipe","isValidDate","i10","i12","i13","i14.IfPermissionDirective","i15.OcxTimeAgoPipe","i2.DataListGridComponent","i3.DataTableComponent","i8.DataTableComponent","i9.IfBreakpointDirective","i11.OcxTimeAgoPipe","i2.DiagramComponent","i4.ColumnGroupSelectionComponent","i5.CustomGroupColumnSelectorComponent","i6.DataLayoutSelectionComponent","i7.DataListGridSortingComponent","i8.DataViewComponent","i9.IfPermissionDirective","i10.FilterViewComponent","lastTranslateLoaderTimerId"],"mappings":"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"}