@acorex-platform/framework-client 0.0.66 → 0.0.69

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.
Files changed (25) hide show
  1. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +3 -3
  2. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B4v1p1nq.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-40YjUhSy.mjs} +161 -28
  4. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-40YjUhSy.mjs.map +1 -0
  5. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CSwae4wV.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-TJwyeB27.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CSwae4wV.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-TJwyeB27.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-BRvR6D3b.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-CgLVcZHZ.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-BRvR6D3b.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-CgLVcZHZ.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-CXLCfktC.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-_ZIlTKUf.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-CXLCfktC.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-_ZIlTKUf.mjs.map} +1 -1
  11. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  12. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-BGT7odBE.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Dlk7A1vo.mjs} +13 -37
  13. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Dlk7A1vo.mjs.map +1 -0
  14. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DPrBIm8L.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cl1--FuB.mjs} +2 -2
  15. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DPrBIm8L.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cl1--FuB.mjs.map} +1 -1
  16. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-AXg36bAR.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-cgSIlPcq.mjs} +2 -2
  17. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-AXg36bAR.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-cgSIlPcq.mjs.map} +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  19. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +1 -1
  20. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  21. package/package.json +2 -2
  22. package/types/acorex-platform-framework-client-layout-entity.d.ts +12 -1
  23. package/types/acorex-platform-framework-client-layout-widgets.d.ts +4 -4
  24. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B4v1p1nq.mjs.map +0 -1
  25. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-BGT7odBE.mjs.map +0 -1
@@ -11,7 +11,7 @@ import { AXPLayoutBuilderService, AXPDialogOpener, LayoutBuilderModule } from '@
11
11
  import * as i0 from '@angular/core';
12
12
  import { InjectionToken, inject, Injector, runInInjectionContext, Injectable, signal, output, input, computed, effect, ChangeDetectionStrategy, Component, viewChild, untracked, HostBinding, model, ViewEncapsulation, ElementRef, EnvironmentInjector, NgModule, ChangeDetectorRef, Input, afterNextRender, viewChildren, linkedSignal, DestroyRef, makeEnvironmentProviders } from '@angular/core';
13
13
  import { cloneDeep, merge, get, isNil, set, isArray, isString, castArray, has, isPlainObject, orderBy, defaultTo, isEmpty, isEqual, isObjectLike } from 'lodash-es';
14
- import { Subject, filter, takeUntil, map, distinctUntilChanged, fromEvent, auditTime, merge as merge$1 } from 'rxjs';
14
+ import { Subject, filter, takeUntil, map, distinctUntilChanged, fromEvent, auditTime, merge as merge$1, combineLatest } from 'rxjs';
15
15
  import { AXPSessionService } from '@acorex-platform/framework-client/auth';
16
16
  import { Router, NavigationStart, ActivatedRoute, ROUTES } from '@angular/router';
17
17
  import { AXDialogService } from '@acorex/components/dialog';
@@ -71,7 +71,7 @@ import { AXTagBoxModule } from '@acorex/components/tag-box';
71
71
  import { AXValidationModule } from '@acorex/core/validation';
72
72
  import { AXLookupComponent } from '@acorex/components/lookup';
73
73
  import { AXHighlightTextComponent } from '@acorex/components/highlight';
74
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
74
+ import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
75
75
  import * as i1$7 from '@acorex/components/data-table';
76
76
  import { AXDataTableComponent, AXDataTableModule } from '@acorex/components/data-table';
77
77
  import * as i2$1 from '@acorex/components/tabs';
@@ -2412,6 +2412,89 @@ function sortMergedSections(mainSections, extraSections, mainSectionIds) {
2412
2412
  return [...beforeSections, ...sortedMiddleBlock, ...afterSections];
2413
2413
  }
2414
2414
 
2415
+ /**
2416
+ * Route for `/{app}/m/{module}/e/{entity}/{id}/view`, matching Entity:OpenDetails.
2417
+ * The id segment is not part of menu matching; callers may pass the real record id.
2418
+ */
2419
+ function buildEntityDetailsRoute(applicationName, entity, id) {
2420
+ const [moduleName, entityName] = entity.split('.');
2421
+ if (!applicationName || !moduleName || !entityName || !id) {
2422
+ return null;
2423
+ }
2424
+ return {
2425
+ commands: ['/', applicationName, 'm', moduleName, 'e', entityName, id, 'view'],
2426
+ queryParams: { page: entityName },
2427
+ };
2428
+ }
2429
+
2430
+ /**
2431
+ * Same menu-policy gate as Entity:OpenDetails.
2432
+ * Lookup column links and the detail popover use this before loading a related record.
2433
+ */
2434
+ class AXPEntityDetailsAccessService {
2435
+ constructor() {
2436
+ //#region ----- Services & Dependencies -----
2437
+ this.router = inject(Router);
2438
+ this.sessionService = inject(AXPSessionService);
2439
+ this.menuRouteAccess = inject(AXPMenuRouteAccessService);
2440
+ //#endregion
2441
+ //#region ----- State -----
2442
+ this.accessStamp = '';
2443
+ this.decisions = new Map();
2444
+ }
2445
+ //#endregion
2446
+ //#region ----- Public Methods -----
2447
+ /**
2448
+ * Whether the current session may open the entity details route.
2449
+ * Result is per entity key; the record id does not change menu policy.
2450
+ */
2451
+ async canOpen(entity, id = '0') {
2452
+ const applicationName = this.sessionService.application?.name;
2453
+ const route = buildEntityDetailsRoute(applicationName, entity, id);
2454
+ if (!route) {
2455
+ return false;
2456
+ }
2457
+ this.syncStamp();
2458
+ const cacheKey = entity;
2459
+ const cached = this.decisions.get(cacheKey);
2460
+ if (cached) {
2461
+ return cached;
2462
+ }
2463
+ const url = this.router.serializeUrl(this.router.createUrlTree(route.commands, { queryParams: route.queryParams }));
2464
+ const pending = this.menuRouteAccess.canAccessUrl(url);
2465
+ this.decisions.set(cacheKey, pending);
2466
+ void pending.then(() => undefined, () => {
2467
+ if (this.decisions.get(cacheKey) === pending) {
2468
+ this.decisions.delete(cacheKey);
2469
+ }
2470
+ });
2471
+ return pending;
2472
+ }
2473
+ //#endregion
2474
+ //#region ----- Private Methods -----
2475
+ /** Drop cached decisions when application, permissions, or features change. */
2476
+ syncStamp() {
2477
+ const applicationName = this.sessionService.application?.name ?? '';
2478
+ const permissions = this.sessionService.permissions.join('\n');
2479
+ const features = this.sessionService.features
2480
+ .map((feature) => `${feature.name}:${String(feature.value ?? '')}`)
2481
+ .join('\n');
2482
+ const authorized = this.sessionService.isAuthorized ? '1' : '0';
2483
+ const stamp = `${authorized}|${applicationName}|${permissions}|${features}`;
2484
+ if (stamp === this.accessStamp) {
2485
+ return;
2486
+ }
2487
+ this.accessStamp = stamp;
2488
+ this.decisions.clear();
2489
+ }
2490
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailsAccessService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2491
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailsAccessService, providedIn: 'root' }); }
2492
+ }
2493
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailsAccessService, decorators: [{
2494
+ type: Injectable,
2495
+ args: [{ providedIn: 'root' }]
2496
+ }] });
2497
+
2415
2498
  function resolveOpenEntityDetailsInput(input = {}) {
2416
2499
  const context = resolveEntityActionCommandInput(input);
2417
2500
  return {
@@ -2431,7 +2514,7 @@ class AXPOpenEntityDetailsCommand {
2431
2514
  //#region ---- Services & Dependencies ----
2432
2515
  this.router = inject(Router);
2433
2516
  this.sessionService = inject(AXPSessionService);
2434
- this.menuRouteAccess = inject(AXPMenuRouteAccessService);
2517
+ this.detailsAccess = inject(AXPEntityDetailsAccessService);
2435
2518
  }
2436
2519
  //#endregion
2437
2520
  //#region ---- Command Execution ----
@@ -2457,28 +2540,25 @@ class AXPOpenEntityDetailsCommand {
2457
2540
  },
2458
2541
  };
2459
2542
  }
2460
- const [module, entityName] = entity.split('.');
2461
- if (!module || !entityName) {
2543
+ const applicationName = this.sessionService.application?.name;
2544
+ if (!applicationName) {
2462
2545
  return {
2463
2546
  success: false,
2464
2547
  message: {
2465
- text: 'Entity must be in format "ModuleName.EntityName"',
2548
+ text: 'Application is required for opening details view',
2466
2549
  },
2467
2550
  };
2468
2551
  }
2469
- const applicationName = this.sessionService.application?.name;
2470
- if (!applicationName) {
2552
+ const route = buildEntityDetailsRoute(applicationName, entity, String(data.id));
2553
+ if (!route) {
2471
2554
  return {
2472
2555
  success: false,
2473
2556
  message: {
2474
- text: 'Application is required for opening details view',
2557
+ text: 'Entity must be in format "ModuleName.EntityName"',
2475
2558
  },
2476
2559
  };
2477
2560
  }
2478
- const commands = ['/', applicationName, 'm', module, 'e', entityName, String(data.id), 'view'];
2479
- const extras = { queryParams: { page: entityName } };
2480
- const url = this.router.serializeUrl(this.router.createUrlTree(commands, extras));
2481
- if (!(await this.menuRouteAccess.canAccessUrl(url))) {
2561
+ if (!(await this.detailsAccess.canOpen(entity, String(data.id)))) {
2482
2562
  return {
2483
2563
  success: false,
2484
2564
  message: { text: '@general:errors.codes.FORBIDDEN' },
@@ -2486,7 +2566,7 @@ class AXPOpenEntityDetailsCommand {
2486
2566
  }
2487
2567
  // Explicit segments so IDs containing `/` (and `http:` prefixes) stay one route param.
2488
2568
  // Primary page id is the entity name (`main-entity-content-builder`).
2489
- const navigated = await this.router.navigate(commands, extras);
2569
+ const navigated = await this.router.navigate(route.commands, { queryParams: route.queryParams });
2490
2570
  if (!navigated) {
2491
2571
  return {
2492
2572
  success: false,
@@ -8278,6 +8358,7 @@ class AXPEntityDetailPopoverService {
8278
8358
  this.localeService = inject(AXLocaleService);
8279
8359
  this.document = inject(DOCUMENT);
8280
8360
  this.router = inject(Router);
8361
+ this.detailsAccess = inject(AXPEntityDetailsAccessService);
8281
8362
  //#endregion
8282
8363
  //#region ---- Private Properties ----
8283
8364
  this.overlayRef = null;
@@ -8297,6 +8378,9 @@ class AXPEntityDetailPopoverService {
8297
8378
  if (!anchorElement) {
8298
8379
  return;
8299
8380
  }
8381
+ if (!(await this.detailsAccess.canOpen(options.entity, String(options.id)))) {
8382
+ return;
8383
+ }
8300
8384
  this.hide();
8301
8385
  const panelClasses = ['animate-fadeIn', 'animate-faster', 'axp-entity-detail-popover-overlay'];
8302
8386
  if (this.platform.isDark()) {
@@ -14131,7 +14215,7 @@ class AXMAttachmentsPageComponentProvider {
14131
14215
  return [
14132
14216
  {
14133
14217
  key: ATTACHMENTS_PAGE_COMPONENT_KEY,
14134
- loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-CSwae4wV.mjs').then((m) => m.AXMAttachmentsPageComponent),
14218
+ loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-TJwyeB27.mjs').then((m) => m.AXMAttachmentsPageComponent),
14135
14219
  },
14136
14220
  ];
14137
14221
  }
@@ -14668,7 +14752,7 @@ class AXMGalleryPageComponentProvider {
14668
14752
  return [
14669
14753
  {
14670
14754
  key: GALLERY_PAGE_COMPONENT_KEY,
14671
- loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-CXLCfktC.mjs').then((m) => m.AXMGalleryPageComponent),
14755
+ loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-_ZIlTKUf.mjs').then((m) => m.AXMGalleryPageComponent),
14672
14756
  },
14673
14757
  ];
14674
14758
  }
@@ -17057,6 +17141,7 @@ class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComponent {
17057
17141
  this.formatService = inject(AXFormatService);
17058
17142
  this.entityResolver = inject(AXPEntityDefinitionRegistryService);
17059
17143
  this.categoryBatchResolver = inject(AXPEntityCategoryBatchResolverService);
17144
+ this.detailsAccess = inject(AXPEntityDetailsAccessService);
17060
17145
  //#endregion
17061
17146
  //#region ---- Inputs ----
17062
17147
  this.rawValueSignal = signal(null, /* @ts-ignore */
@@ -17150,7 +17235,7 @@ class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComponent {
17150
17235
  const id = Array.isArray(columnData) ? columnData[index] : columnData;
17151
17236
  this.selectedItemIndex.set(index);
17152
17237
  const entityKey = this.entity();
17153
- if (entityKey && id) {
17238
+ if (entityKey && id && (await this.detailsAccess.canOpen(entityKey, String(id)))) {
17154
17239
  await this.entityDetailPopoverService.show(anchor ?? this.host.nativeElement, {
17155
17240
  entity: entityKey,
17156
17241
  id: id,
@@ -17415,7 +17500,7 @@ class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComponent {
17415
17500
  }
17416
17501
  </div>
17417
17502
  </ng-template>
17418
- `, isInline: true, dependencies: [{ kind: "component", type: AXPColumnItemListComponent, selector: "axp-column-item-list", inputs: ["items", "itemTemplate"], outputs: ["itemClick"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "directive", type: i3$2.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17503
+ `, isInline: true, dependencies: [{ kind: "component", type: AXPColumnItemListComponent, selector: "axp-column-item-list", inputs: ["items", "itemTemplate"], outputs: ["itemClick"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "directive", type: i3$2.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipOverflowOnly", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17419
17504
  }
17420
17505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityCategoryWidgetColumnComponent, decorators: [{
17421
17506
  type: Component,
@@ -24105,7 +24190,7 @@ class AXPLookupWidgetTablePanelComponent {
24105
24190
  return Boolean(item[this.disabledField()]);
24106
24191
  }
24107
24192
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTablePanelComponent, isStandalone: true, selector: "axp-lookup-widget-table-panel", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, selectedValues: { classPropertyName: "selectedValues", publicName: "selectedValues", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: "maxVisibleItems", publicName: "maxVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, alternate: { classPropertyName: "alternate", publicName: "alternate", isSignal: true, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: "highlightText", publicName: "highlightText", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", rowAction: "rowAction" }, host: { properties: { "class.ax-lookup-multi-column-tree": "!!parentField()", "style.height.px": "tableHeight()" }, classAttribute: "ax-lookup-multi-column block min-h-0" }, viewQueries: [{ propertyName: "tableRef", first: true, predicate: AXDataTableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$7.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$7.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$7.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$6.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTablePanelComponent, isStandalone: true, selector: "axp-lookup-widget-table-panel", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, selectedValues: { classPropertyName: "selectedValues", publicName: "selectedValues", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: "maxVisibleItems", publicName: "maxVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, alternate: { classPropertyName: "alternate", publicName: "alternate", isSignal: true, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: "highlightText", publicName: "highlightText", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", rowAction: "rowAction" }, host: { properties: { "class.ax-lookup-multi-column-tree": "!!parentField()", "style.height.px": "tableHeight()" }, classAttribute: "ax-lookup-multi-column block min-h-0" }, viewQueries: [{ propertyName: "tableRef", first: true, predicate: AXDataTableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", styles: [":host ax-data-table.ax-lookup-multi-column-table tbody tr:not(.empty-row):not(.ax-state-disabled){cursor:pointer}:host ax-data-table.ax-lookup-multi-column-table tbody tr.ax-state-disabled{cursor:not-allowed}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$7.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$7.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$7.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$6.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24109
24194
  }
24110
24195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, decorators: [{
24111
24196
  type: Component,
@@ -24113,7 +24198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
24113
24198
  class: 'ax-lookup-multi-column block min-h-0',
24114
24199
  '[class.ax-lookup-multi-column-tree]': '!!parentField()',
24115
24200
  '[style.height.px]': 'tableHeight()',
24116
- }, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n" }]
24201
+ }, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", styles: [":host ax-data-table.ax-lookup-multi-column-table tbody tr:not(.empty-row):not(.ax-state-disabled){cursor:pointer}:host ax-data-table.ax-lookup-multi-column-table tbody tr.ax-state-disabled{cursor:not-allowed}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
24117
24202
  }], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], selectedValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedValues", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], itemHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemHeight", required: false }] }], maxVisibleItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisibleItems", required: false }] }], alternate: [{ type: i0.Input, args: [{ isSignal: true, alias: "alternate", required: false }] }], highlightText: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightText", required: false }] }], rowActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowActions", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], rowAction: [{ type: i0.Output, args: ["rowAction"] }], tableRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXDataTableComponent), { isSignal: true }] }] } });
24118
24203
 
24119
24204
  //#region ----- Imports -----
@@ -25399,6 +25484,19 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25399
25484
  this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
25400
25485
  this.contextEvalFactory = inject(AXPContextEvalFactory);
25401
25486
  this.lookupByKeyCache = inject(AXPLookupByKeyCacheService);
25487
+ this.detailsAccess = inject(AXPEntityDetailsAccessService);
25488
+ this.sessionService = inject(AXPSessionService);
25489
+ /** Re-check lookup links when application, permissions, or features change. */
25490
+ this.accessRevision = toSignal(combineLatest([
25491
+ this.sessionService.application$,
25492
+ this.sessionService.permissions$,
25493
+ this.sessionService.features$,
25494
+ ]).pipe(map(([application, permissions, features]) => {
25495
+ const featureStamp = features
25496
+ .map((feature) => `${feature.name}:${String(feature.value ?? '')}`)
25497
+ .join('\n');
25498
+ return `${this.sessionService.isAuthorized ? '1' : '0'}|${application?.name ?? ''}|${permissions.join('\n')}|${featureStamp}`;
25499
+ })), { initialValue: '' });
25402
25500
  //#endregion
25403
25501
  //#region ---- View Children ----
25404
25502
  this.moreButton = viewChild('moreButton', /* @ts-ignore */
@@ -25436,6 +25534,11 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25436
25534
  return popover?.enabled !== false;
25437
25535
  }, /* @ts-ignore */
25438
25536
  ...(ngDevMode ? [{ debugName: "detailPopoverEnabled" }] : /* istanbul ignore next */ []));
25537
+ /** Menu policy for the lookup target. False until the check resolves, so the cell is not a link yet. */
25538
+ this.canOpenLinkedEntity = signal(false, /* @ts-ignore */
25539
+ ...(ngDevMode ? [{ debugName: "canOpenLinkedEntity" }] : /* istanbul ignore next */ []));
25540
+ this.linkEnabled = computed(() => this.detailPopoverEnabled() && this.canOpenLinkedEntity(), /* @ts-ignore */
25541
+ ...(ngDevMode ? [{ debugName: "linkEnabled" }] : /* istanbul ignore next */ []));
25439
25542
  //#endregion
25440
25543
  //#region ---- Signals ----
25441
25544
  this.isMorePopoverOpen = signal(false, /* @ts-ignore */
@@ -25461,6 +25564,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25461
25564
  this.hydratedDisplayItems = signal(null, /* @ts-ignore */
25462
25565
  ...(ngDevMode ? [{ debugName: "hydratedDisplayItems" }] : /* istanbul ignore next */ []));
25463
25566
  this.hydrateRequestId = 0;
25567
+ this.accessRequestId = 0;
25464
25568
  this.mainLabelsVersion = 0;
25465
25569
  this.lazyPopoverLabelsVersion = 0;
25466
25570
  //#endregion
@@ -25560,6 +25664,22 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25560
25664
  : this.displayCount();
25561
25665
  void this.refreshPopoverHeader(count);
25562
25666
  });
25667
+ effect(() => {
25668
+ this.accessRevision();
25669
+ const key = this.getEntityKey();
25670
+ const popoverEnabled = this.detailPopoverEnabled();
25671
+ if (!popoverEnabled || key.indexOf('.') <= 0) {
25672
+ this.accessRequestId++;
25673
+ this.canOpenLinkedEntity.set(false);
25674
+ return;
25675
+ }
25676
+ const requestId = ++this.accessRequestId;
25677
+ void this.detailsAccess.canOpen(key).then((allowed) => {
25678
+ if (requestId === this.accessRequestId) {
25679
+ this.canOpenLinkedEntity.set(allowed);
25680
+ }
25681
+ });
25682
+ });
25563
25683
  effect(() => {
25564
25684
  const key = this.getEntityKey();
25565
25685
  const dotIndex = key.indexOf('.');
@@ -25633,7 +25753,17 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25633
25753
  this.entityDetailPopoverService.hide();
25634
25754
  this.openPopoverFromRef(this.moreButton());
25635
25755
  }
25756
+ onLazySummaryClick(event) {
25757
+ if (!this.linkEnabled()) {
25758
+ return;
25759
+ }
25760
+ event.stopPropagation();
25761
+ this.openLazyPopover();
25762
+ }
25636
25763
  openLazyPopover() {
25764
+ if (!this.linkEnabled()) {
25765
+ return;
25766
+ }
25637
25767
  this.entityDetailPopoverService.hide();
25638
25768
  this.openPopoverFromRef(this.lazyTrigger());
25639
25769
  if (!this.isHydratedStrategy()) {
@@ -25648,7 +25778,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25648
25778
  }
25649
25779
  }
25650
25780
  async showItemDetail(item, index, anchor) {
25651
- if (!this.detailPopoverEnabled()) {
25781
+ if (!this.linkEnabled()) {
25652
25782
  return;
25653
25783
  }
25654
25784
  const detailAnchor = this.resolveStableDetailAnchor(anchor);
@@ -25707,7 +25837,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25707
25837
  });
25708
25838
  }
25709
25839
  handleItemClick(index, event) {
25710
- if (!this.detailPopoverEnabled()) {
25840
+ if (!this.linkEnabled()) {
25711
25841
  return;
25712
25842
  }
25713
25843
  const items = this.allItems();
@@ -25716,7 +25846,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25716
25846
  }
25717
25847
  }
25718
25848
  handleResolvedItemClick(index, event) {
25719
- if (!this.detailPopoverEnabled()) {
25849
+ if (!this.linkEnabled()) {
25720
25850
  return;
25721
25851
  }
25722
25852
  const items = this.resolvedPopoverItems();
@@ -25725,6 +25855,9 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
25725
25855
  }
25726
25856
  }
25727
25857
  handlePopoverItemClick(index, _event) {
25858
+ if (!this.linkEnabled()) {
25859
+ return;
25860
+ }
25728
25861
  const anchor = this.resolveMorePopoverDetailAnchor();
25729
25862
  if (this.isHydratedStrategy()) {
25730
25863
  const items = this.allItems();
@@ -26156,11 +26289,11 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
26156
26289
  return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value) || /^\d+$/.test(value);
26157
26290
  }
26158
26291
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "lazyTrigger", first: true, predicate: ["lazyTrigger"], descendants: true, isSignal: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"detailPopoverEnabled()\"\n [class.hover:text-primary]=\"detailPopoverEnabled()\"\n [class.hover:underline]=\"detailPopoverEnabled()\"\n [attr.title]=\"getItemLabel($index)\"\n (click)=\"handleItemClick($index, $event)\"\n >\n {{ getItemLabel($index) }}\n </span>\n @if ($index < visibleItems().length - 1) {\n <span class=\"text-muted\">\u2022</span>\n }\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n @if (hasMoreItems()) {\n <span\n class=\"absolute end-0 flex h-full cursor-pointer items-center px-1 hover:primary-lighter-surface\"\n (click)=\"showMoreItems(); $event.stopPropagation()\"\n #moreButton\n >\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n </div>\n} @else {\n <div class=\"flex min-w-0 items-center gap-1\">\n @if (displayCount() > 0) {\n <span\n class=\"min-w-0 truncate cursor-pointer text-primary hover:underline\"\n [attr.title]=\"summaryLabel()\"\n (click)=\"openLazyPopover(); $event.stopPropagation()\"\n #lazyTrigger\n >\n {{ summaryLabel() }}\n </span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n </div>\n}\n\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[280px] rounded-lg p-4 shadow-lg\">\n <div class=\"mb-4 border-b pb-2\">\n <h3 class=\"text-base font-semibold\">{{ popoverHeader() }}</h3>\n </div>\n\n @if (!isHydratedStrategy() && resolveStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!isHydratedStrategy() && resolveStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ resolveError() }}</div>\n } @else {\n <div class=\"flex max-h-64 flex-col gap-3\">\n @for (item of popoverListItems(); track $index) {\n <span\n [class.cursor-pointer]=\"detailPopoverEnabled()\"\n [class.hover:text-primary]=\"detailPopoverEnabled()\"\n [class.hover:underline]=\"detailPopoverEnabled()\"\n (click)=\"handlePopoverItemClick($index, $event)\"\n >\n {{ getPopoverItemLabel($index) }}\n </span>\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n </div>\n }\n </div>\n</ax-popover>\n", dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i1$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26292
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "lazyTrigger", first: true, predicate: ["lazyTrigger"], descendants: true, isSignal: true }, { propertyName: "morePopover", first: true, predicate: ["morePopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"getItemLabel($index)\"\n (click)=\"handleItemClick($index, $event)\"\n >\n {{ getItemLabel($index) }}\n </span>\n @if ($index < visibleItems().length - 1) {\n <span class=\"text-muted\">\u2022</span>\n }\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n @if (hasMoreItems()) {\n <span\n class=\"absolute end-0 flex h-full cursor-pointer items-center px-1 hover:primary-lighter-surface\"\n (click)=\"showMoreItems(); $event.stopPropagation()\"\n #moreButton\n >\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n </div>\n} @else {\n <div class=\"flex min-w-0 items-center gap-1\">\n @if (displayCount() > 0) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"summaryLabel()\"\n (click)=\"onLazySummaryClick($event)\"\n #lazyTrigger\n >\n {{ summaryLabel() }}\n </span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n </div>\n}\n\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[280px] rounded-lg p-4 shadow-lg\">\n <div class=\"mb-4 border-b pb-2\">\n <h3 class=\"text-base font-semibold\">{{ popoverHeader() }}</h3>\n </div>\n\n @if (!isHydratedStrategy() && resolveStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!isHydratedStrategy() && resolveStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ resolveError() }}</div>\n } @else {\n <div class=\"flex max-h-64 flex-col gap-3\">\n @for (item of popoverListItems(); track $index) {\n <span\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n (click)=\"handlePopoverItemClick($index, $event)\"\n >\n {{ getPopoverItemLabel($index) }}\n </span>\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n </div>\n }\n </div>\n</ax-popover>\n", dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i1$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26160
26293
  }
26161
26294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetColumnComponent, decorators: [{
26162
26295
  type: Component,
26163
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXLoadingModule, AXPopoverModule], inputs: ['rawValue', 'rowData'], template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"detailPopoverEnabled()\"\n [class.hover:text-primary]=\"detailPopoverEnabled()\"\n [class.hover:underline]=\"detailPopoverEnabled()\"\n [attr.title]=\"getItemLabel($index)\"\n (click)=\"handleItemClick($index, $event)\"\n >\n {{ getItemLabel($index) }}\n </span>\n @if ($index < visibleItems().length - 1) {\n <span class=\"text-muted\">\u2022</span>\n }\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n @if (hasMoreItems()) {\n <span\n class=\"absolute end-0 flex h-full cursor-pointer items-center px-1 hover:primary-lighter-surface\"\n (click)=\"showMoreItems(); $event.stopPropagation()\"\n #moreButton\n >\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n </div>\n} @else {\n <div class=\"flex min-w-0 items-center gap-1\">\n @if (displayCount() > 0) {\n <span\n class=\"min-w-0 truncate cursor-pointer text-primary hover:underline\"\n [attr.title]=\"summaryLabel()\"\n (click)=\"openLazyPopover(); $event.stopPropagation()\"\n #lazyTrigger\n >\n {{ summaryLabel() }}\n </span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n </div>\n}\n\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[280px] rounded-lg p-4 shadow-lg\">\n <div class=\"mb-4 border-b pb-2\">\n <h3 class=\"text-base font-semibold\">{{ popoverHeader() }}</h3>\n </div>\n\n @if (!isHydratedStrategy() && resolveStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!isHydratedStrategy() && resolveStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ resolveError() }}</div>\n } @else {\n <div class=\"flex max-h-64 flex-col gap-3\">\n @for (item of popoverListItems(); track $index) {\n <span\n [class.cursor-pointer]=\"detailPopoverEnabled()\"\n [class.hover:text-primary]=\"detailPopoverEnabled()\"\n [class.hover:underline]=\"detailPopoverEnabled()\"\n (click)=\"handlePopoverItemClick($index, $event)\"\n >\n {{ getPopoverItemLabel($index) }}\n </span>\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n </div>\n }\n </div>\n</ax-popover>\n" }]
26296
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXLoadingModule, AXPopoverModule], inputs: ['rawValue', 'rowData'], template: "@if (isHydratedStrategy()) {\n <div class=\"relative flex min-w-0 items-center gap-1\">\n @for (item of visibleItems(); track $index) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"getItemLabel($index)\"\n (click)=\"handleItemClick($index, $event)\"\n >\n {{ getItemLabel($index) }}\n </span>\n @if ($index < visibleItems().length - 1) {\n <span class=\"text-muted\">\u2022</span>\n }\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n @if (hasMoreItems()) {\n <span\n class=\"absolute end-0 flex h-full cursor-pointer items-center px-1 hover:primary-lighter-surface\"\n (click)=\"showMoreItems(); $event.stopPropagation()\"\n #moreButton\n >\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </span>\n }\n </div>\n} @else {\n <div class=\"flex min-w-0 items-center gap-1\">\n @if (displayCount() > 0) {\n <span\n class=\"min-w-0 truncate\"\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n [attr.title]=\"summaryLabel()\"\n (click)=\"onLazySummaryClick($event)\"\n #lazyTrigger\n >\n {{ summaryLabel() }}\n </span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n </div>\n}\n\n<ax-popover [openOn]=\"'manual'\" #morePopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[280px] rounded-lg p-4 shadow-lg\">\n <div class=\"mb-4 border-b pb-2\">\n <h3 class=\"text-base font-semibold\">{{ popoverHeader() }}</h3>\n </div>\n\n @if (!isHydratedStrategy() && resolveStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!isHydratedStrategy() && resolveStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ resolveError() }}</div>\n } @else {\n <div class=\"flex max-h-64 flex-col gap-3\">\n @for (item of popoverListItems(); track $index) {\n <span\n [class.cursor-pointer]=\"linkEnabled()\"\n [class.hover:text-primary]=\"linkEnabled()\"\n [class.hover:underline]=\"linkEnabled()\"\n (click)=\"handlePopoverItemClick($index, $event)\"\n >\n {{ getPopoverItemLabel($index) }}\n </span>\n } @empty {\n <span class=\"text-muted\">---</span>\n }\n </div>\n }\n </div>\n</ax-popover>\n" }]
26164
26297
  }], ctorParameters: () => [], propDecorators: { moreButton: [{ type: i0.ViewChild, args: ['moreButton', { isSignal: true }] }], lazyTrigger: [{ type: i0.ViewChild, args: ['lazyTrigger', { isSignal: true }] }], morePopover: [{ type: i0.ViewChild, args: ['morePopover', { isSignal: true }] }] } });
26165
26298
 
26166
26299
  var lookupWidgetColumn_component = /*#__PURE__*/Object.freeze({
@@ -32531,7 +32664,7 @@ class AXPEntityModule {
32531
32664
  },
32532
32665
  {
32533
32666
  key: 'Entity:Bulk',
32534
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-BRvR6D3b.mjs').then((c) => c.AXPBulkEntityCommand),
32667
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-CgLVcZHZ.mjs').then((c) => c.AXPBulkEntityCommand),
32535
32668
  },
32536
32669
  {
32537
32670
  key: 'Entity:OpenList',
@@ -32692,7 +32825,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
32692
32825
  },
32693
32826
  {
32694
32827
  key: 'Entity:Bulk',
32695
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-BRvR6D3b.mjs').then((c) => c.AXPBulkEntityCommand),
32828
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-CgLVcZHZ.mjs').then((c) => c.AXPBulkEntityCommand),
32696
32829
  },
32697
32830
  {
32698
32831
  key: 'Entity:OpenList',
@@ -33018,4 +33151,4 @@ function detectEntityChanges(oldObj, newObj) {
33018
33151
  */
33019
33152
 
33020
33153
  export { AXPEntityListViewModelResolver as $, AXPEntityDefinitionRegistryService as A, AXPEntityCategoryWidgetViewComponent as B, AXPEntityCommandTriggerViewModel as C, AXPEntityCreateViewElementViewModel as D, AXPEntityCreateViewModelFactory as E, AXPEntityCreateViewSectionViewModel as F, AXPEntityDataProvider as G, AXPEntityDataProviderImpl as H, AXPEntityDataSelectorRowActionsService as I, AXPEntityDataSelectorService as J, AXPEntityDefinitionProviderWidget as K, AXPEntityDefinitionProviderWidgetEditComponent as L, AXPEntityDeletePerformService as M, AXPEntityDetailListViewModel as N, AXPEntityDetailPopoverComponent as O, AXPEntityDetailPopoverService as P, AXPEntityDetailViewModelFactory as Q, AXPEntityDetailViewModelResolver as R, AXPEntityEventDispatcherService as S, AXPEntityFormBuilderService as T, AXPEntityLifecycleHookKeys as U, AXPEntityListPersistenceModeDefault as V, AXPEntityListTableService as W, AXPEntityListToolbarService as X, AXPEntityListViewCardFieldViewModel as Y, AXPEntityListViewColumnViewModel as Z, AXPEntityListViewModelFactory as _, showOperationResultToast as a, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY as a$, AXPEntityListWidget as a0, AXPEntityListWidgetViewComponent as a1, AXPEntityMasterCreateViewModel as a2, AXPEntityMasterListCardSelectActionName as a3, AXPEntityMasterListViewModel as a4, AXPEntityMasterListViewQueryViewModel as a5, AXPEntityMasterSingleElementViewModel as a6, AXPEntityMasterSingleViewGroupViewModel as a7, AXPEntityMasterSingleViewModel as a8, AXPEntityMasterUpdateElementViewModel as a9, AXPLookupWidgetViewComponent as aA, AXPMiddlewareAbortError as aB, AXPMiddlewareEntityStorageService as aC, AXPMultiSourceDefinitionProviderContext as aD, AXPMultiSourceDefinitionProviderService as aE, AXPMultiSourceFederatedSearchService as aF, AXPMultiSourceSelectorComponent as aG, AXPMultiSourceSelectorService as aH, AXPMultiSourceSelectorWidget as aI, AXPMultiSourceSelectorWidgetColumnComponent as aJ, AXPMultiSourceSelectorWidgetEditComponent as aK, AXPMultiSourceSelectorWidgetViewComponent as aL, AXPMultiSourceType as aM, AXPOpenEntityDetailsCommand as aN, AXPOpenEntityListCommand as aO, AXPRelatedColumnEnrichmentService as aP, AXPRelatedColumnMetadataResolver as aQ, AXPSelectorStructureWidget as aR, AXPSelectorStructureWidgetColumnComponent as aS, AXPSelectorStructureWidgetEditComponent as aT, AXPSelectorStructureWidgetViewComponent as aU, AXPShowFileUploaderPopupCommand as aV, AXPTruncatedBreadcrumbComponent as aW, AXPUpdateEntityCommand as aX, AXPUpdateEntityStatusCommand as aY, AXPViewEntityDetailsCommand as aZ, AXP_APPEARANCE_SECTION_ORDER as a_, AXPEntityMasterUpdateViewModel as aa, AXPEntityMasterUpdateViewModelFactory as ab, AXPEntityMiddlewareSkipContext as ac, AXPEntityModule as ad, AXPEntityPreloadFiltersContainerComponent as ae, AXPEntityPreloadFiltersViewModel as af, AXPEntityPreloadFiltersViewModelResolver as ag, AXPEntityResolver as ah, AXPEntityRuntimeAccessorService as ai, AXPEntityService as aj, AXPEntityStorageService as ak, AXPEntityUpdateViewSectionViewModel as al, AXPFileListComponent as am, AXPFileUploaderLoadFilesQuery as an, AXPFileUploaderSaveFilesCommand as ao, AXPFileUploaderWidget as ap, AXPFileUploaderWidgetColumnComponent as aq, AXPFileUploaderWidgetEditComponent as ar, AXPFileUploaderWidgetService as as, AXPFileUploaderWidgetViewComponent as at, AXPGetEntityDetailsQuery as au, AXPLayoutOrderingConfigService as av, AXPLookupByKeyCacheService as aw, AXPLookupWidget as ax, AXPLookupWidgetColumnComponent as ay, AXPLookupWidgetEditComponent as az, buildSelectedIdsFilter as b, defaultSortPresetsMiddlewareProvider as b$, AXP_CLASSIFICATION_SECTION_ORDER as b0, AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS as b1, AXP_CLIENT_LOCAL_PLUGIN_NAME as b2, AXP_DATA_SEEDER_TOKEN as b3, AXP_ENTITY_ACTION_PLUGIN as b4, AXP_ENTITY_CONFIG_TOKEN as b5, AXP_ENTITY_DEFINITION_LOADER as b6, AXP_ENTITY_MIDDLEWARE as b7, AXP_ENTITY_MODIFIER as b8, AXP_ENTITY_STORAGE_MIDDLEWARE as b9, axpShowFileUploaderPopupCommandDefinition as bA, axpUpdateEntityStatusCommandDefinition as bB, buildDataSourceTraceSnapshot as bC, canPersistEntityListState as bD, clientLocalPlugin as bE, cloneLayoutArrays as bF, columnOrderingMiddleware as bG, columnOrderingMiddlewareProvider as bH, columnWidthMiddleware as bI, columnWidthMiddlewareProvider as bJ, committedAttachments as bK, composeEntityMiddlewares as bL, composeEntityStorageMiddlewares as bM, computeEntityAggregates as bN, configureEntityListColumnsSettingsMigrateDrop as bO, configureEntityListColumnsSettingsVersion as bP, createColumnOrderingMiddlewareProvider as bQ, createEntityCardDisplayScope as bR, createEntityCardLogicScope as bS, createEntityMiddlewareContext as bT, createEntityStorageContext as bU, createLayoutOrderingMiddlewareProvider as bV, defaultCardLayoutMiddleware as bW, defaultCardLayoutMiddlewareProvider as bX, defaultMultiLanguageMiddleware as bY, defaultMultiLanguageMiddlewareProvider as bZ, defaultSortPresetsMiddleware as b_, AXP_LOOKUP_FILTER_DEFAULT_OPERATOR as ba, AXP_MULTI_SOURCE_DEFINITION_PROVIDER as bb, DEFAULT_COLUMN_ORDER as bc, DEFAULT_PAIR_SPAN_RULES as bd, DEFAULT_PROPERTY_ORDER as be, DEFAULT_SECTION_ORDER as bf, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE as bg, ENTITY_LIST_LAYOUT_META as bh, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY as bi, ENTITY_MASTER_LIST_TRACE_NS as bj, EntityBuilder as bk, EntityDataAccessor as bl, GALLERY_PAGE_COMPONENT_KEY as bm, TREE_CHILDREN_QUERY_TAKE as bn, actionExists as bo, applyDataSourcePagingWithoutLoad as bp, attachmentFieldCount as bq, attachmentNeedsHydration as br, attachmentsPlugin as bs, attachmentsSemanticallyEqual as bt, axpBuildEntityListPageContextSnapshot as bu, axpCreateEntityAiToolInputDefaults as bv, axpCreateEntityCommandDefinition as bw, axpDeleteEntityCommandDefinition as bx, axpOpenEntityListCommandDefinition as by, axpRunEntityListPageContextAction as bz, ATTACHMENTS_PAGE_COMPONENT_KEY as c, provideLocalEntityCatalog as c$, detectEntityChanges as c0, dispatchEntityModifiedSideEffects as c1, ensureHierarchicalRootFilter as c2, ensureLayoutPropertyView as c3, ensureLayoutSection as c4, ensureListActions as c5, entityCreateBridgeMiddleware as c6, entityDeleteBridgeMiddleware as c7, entityGetOneBridgeMiddleware as c8, entityListInstanceCurrentViewPath as c9, hasFileUploaderTitleOrDescriptionFields as cA, hydrateAttachmentFieldToFileList as cB, isAXPMiddlewareAbortError as cC, isAttachmentFieldPresentOnRow as cD, isAttachmentListEntry as cE, isAttachmentStorageRef as cF, isCategoryEntity as cG, isCategoryFilter as cH, isFileListItem as cI, isFileUploaderEditDialogAuto as cJ, isLegacyEntityDataSelectorOptions as cK, layoutOrderingMiddlewareFactory as cL, layoutOrderingMiddlewareProvider as cM, mapEntityStorageErrorToCommandResult as cN, mapLegacyEntityDataSelectorOptions as cO, mergeEntityListViewAndPersistedFilters as cP, normalizeEntityCardHeaderDisplayValue as cQ, normalizeEntityDataSelectorColumnSpecs as cR, normalizeEntityDataSelectorOptions as cS, normalizeEntityFieldToFileList as cT, normalizeEntityListPersistenceMode as cU, normalizeListPaging as cV, prefetchClientLocalRelated as cW, provideEntity as cX, provideEntityMiddlewareBridge as cY, provideEntityRealtimeHandlers as cZ, provideEntityStorageMiddlewareBridge as c_, entityListInstanceFilterPath as ca, entityListStylingRulesPath as cb, entityQueryBridgeMiddleware as cc, entityStorageCreateBridgeMiddleware as cd, entityStorageDeleteBridgeMiddleware as ce, entityStorageGetOneBridgeMiddleware as cf, entityStorageQueryBridgeMiddleware as cg, entityStorageUpdateBridgeMiddleware as ch, entityUpdateBridgeMiddleware as ci, eventDispatchMiddleware as cj, filterEntityMiddlewares as ck, filterEntityStorageMiddlewares as cl, filterSortEntityRows as cm, filterTouchesParentKey as cn, findEntityListRowDataInTree as co, fingerprintAttachmentItem as cp, fingerprintAttachments as cq, fireEntityLifecycleHook as cr, formatLookupItemDisplay as cs, formatLookupItemDisplayAsync as ct, galleryPlugin as cu, getDataSourcePageIndex as cv, getEntityListColumnsSettingsMigrateDrop as cw, getEntityListColumnsSettingsVersion as cx, getEntityListRowId as cy, getMasterInterfacePropertySortKey as cz, AXMEntityCrudService as d, readPersistedEntityListInstanceCurrentView as d0, readPersistedEntityListInstanceFilters as d1, readPersistedEntityListStylingRules as d2, resetPagingForTreeChildrenLoad as d3, resolveAttachmentFieldPath as d4, resolveEntityCardBadgeColorValue as d5, resolveEntityCardHeaderValue as d6, resolveEntityMasterFieldStylingClass as d7, resolveEntityMasterRecordStylingClass as d8, resolveEntityMasterStylingClass as d9, resolveEntityPluginDetailPageOrder as da, resolveFileUploaderEditDialog as db, resolveFileUploaderEntityScope as dc, resolveLookupDisplayField as dd, resolveLookupDisplayTemplate as de, resolveLookupEntityCacheKey as df, resolveLookupEntityKey as dg, resolveMasterInterfacePropertyOrder as dh, restoreEntityListExpandedRows as di, runEntityMiddlewarePipeline as dj, runEntityQuery as dk, runEntityStorageMiddlewarePipeline as dl, searchResultDescriptionMiddleware as dm, searchResultDescriptionMiddlewareProvider as dn, shouldLoadEntityListStateFromStorage as dp, shouldResetEntityListStateOnRouteEntry as dq, traceEntityMasterList as dr, AXMEntityCrudServiceImpl as e, AXPCategoryTreeService as f, AXPClientLocalPluginModule as g, AXPCreateEntityCommand as h, AXPDataSeederService as i, AXPDeleteEntityCommand as j, AXPDomainQueryEntityDefinitionLoader as k, AXPEditFileUploaderCommand as l, AXPEntityBulkPatchPerformService as m, newBulkExecutionId as n, AXPEntityCardComponent as o, persistedAttachments as p, AXPEntityCardFieldsResolver as q, resolveBulkFailureBody as r, settleAfterLoadingDialog as s, AXPEntityCardSelectActionName as t, AXPEntityCardSkeletonComponent as u, AXPEntityCategoryTreeSelectorComponent as v, watchBulkProgress as w, AXPEntityCategoryWidget as x, AXPEntityCategoryWidgetColumnComponent as y, AXPEntityCategoryWidgetEditComponent as z };
33021
- //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B4v1p1nq.mjs.map
33154
+ //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-40YjUhSy.mjs.map