@acorex-platform/framework-client 2.0.0-next.14 → 2.0.0-next.16

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 (47) hide show
  1. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs → acorex-platform-framework-client-common-common-settings.provider-Cyr1DaiD.mjs} +19 -2
  2. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs.map → acorex-platform-framework-client-common-common-settings.provider-Cyr1DaiD.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-framework-client-common.mjs +126 -26
  4. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +221 -98
  6. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  7. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BukN_67G.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-_uPigtws.mjs} +113 -91
  8. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BukN_67G.mjs.map → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-_uPigtws.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-BbUuuGOT.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-CwsFVj6O.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-BbUuuGOT.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-CwsFVj6O.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-B2flk4OK.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-B8qVQxcv.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-B2flk4OK.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-B8qVQxcv.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-og7hv1xh.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-EUGHnp72.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-og7hv1xh.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-EUGHnp72.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BorqAr7O.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-DWSJh77C.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BorqAr7O.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-DWSJh77C.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +59 -10
  19. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +42 -158
  21. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  22. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CzhP4_OE.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-M8SZFPQx.mjs} +13 -5
  23. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-M8SZFPQx.mjs.map +1 -0
  24. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BIl416zF.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DsLgZbZA.mjs} +2 -2
  25. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BIl416zF.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DsLgZbZA.mjs.map} +1 -1
  26. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DK8XXQuT.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Vpz3itLZ.mjs} +2 -2
  27. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DK8XXQuT.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Vpz3itLZ.mjs.map} +1 -1
  28. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  29. package/fesm2022/acorex-platform-framework-client-realtime.mjs +49 -7
  30. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  31. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +14 -7
  32. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  33. package/i18n/en-AU/general.json +16 -4
  34. package/i18n/en-AU/layout.json +2 -1
  35. package/i18n/en-US/general.json +16 -4
  36. package/i18n/en-US/layout.json +2 -1
  37. package/i18n/fa-IR/general.json +16 -4
  38. package/i18n/fa-IR/layout.json +2 -1
  39. package/package.json +2 -2
  40. package/types/acorex-platform-framework-client-common.d.ts +40 -5
  41. package/types/acorex-platform-framework-client-layout-components.d.ts +9 -3
  42. package/types/acorex-platform-framework-client-layout-entity.d.ts +10 -51
  43. package/types/acorex-platform-framework-client-layout-views.d.ts +15 -0
  44. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +11 -11
  45. package/types/acorex-platform-framework-client-layout-widgets.d.ts +12 -0
  46. package/types/acorex-platform-framework-client-realtime.d.ts +5 -0
  47. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CzhP4_OE.mjs.map +0 -1
@@ -9,7 +9,7 @@ import { AXPWidgetsCatalog, runtimeCommandPayloadData, createRandomUuid, AXPRequ
9
9
  import { AXPDeviceService, AXPExpressionEvaluatorService, AXPEntityBroadcastService, AXPHookService, AXPDebugService, AXPDataGenerator, AXPContextEvalFactory, ensureRuntimeSurfaceClass, applyFilterArray, createCommandExpressionScope, toExpressionRecord, AXPDistributedEventListenerService, applySortArray, AXHighlightService, AXPColumnWidthService, objectKeyValueTransforms, setupPopupFooterKeyboardShortcuts, AXPContextStore, AXPModuleManifestRegistry, provideAppStartUpTask, AXP_APP_STARTUP_PRIORITY, defaultColumnWidthProvider, AXP_COLUMN_WIDTH_PROVIDER } from '@acorex-platform/framework-client/core';
10
10
  import { AXPLayoutBuilderService, AXPDialogOpener, LayoutBuilderModule } from '@acorex-platform/framework-client/layout/builder';
11
11
  import * as i0 from '@angular/core';
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, NgZone, DestroyRef, makeEnvironmentProviders } from '@angular/core';
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
14
  import { Subject, combineLatest, map, filter, takeUntil, distinctUntilChanged, fromEvent, auditTime, merge as merge$1 } from 'rxjs';
15
15
  import { AXPSessionService } from '@acorex-platform/framework-client/auth';
@@ -6193,7 +6193,7 @@ class AXPFileUploaderWidgetService {
6193
6193
  };
6194
6194
  let title = '';
6195
6195
  const result = await this.dialogOpener.openPopup({
6196
- load: () => import('./acorex-platform-framework-client-layout-entity-file-list-popup.component-og7hv1xh.mjs').then((m) => m.AXPFileListPopupComponent),
6196
+ load: () => import('./acorex-platform-framework-client-layout-entity-file-list-popup.component-EUGHnp72.mjs').then((m) => m.AXPFileListPopupComponent),
6197
6197
  data: {
6198
6198
  entity: entity ?? null,
6199
6199
  readonly: resolved.readonly,
@@ -14577,7 +14577,7 @@ class AXMAttachmentsPageComponentProvider {
14577
14577
  return [
14578
14578
  {
14579
14579
  key: ATTACHMENTS_PAGE_COMPONENT_KEY,
14580
- loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-BbUuuGOT.mjs').then((m) => m.AXMAttachmentsPageComponent),
14580
+ loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-CwsFVj6O.mjs').then((m) => m.AXMAttachmentsPageComponent),
14581
14581
  },
14582
14582
  ];
14583
14583
  }
@@ -15114,7 +15114,7 @@ class AXMGalleryPageComponentProvider {
15114
15114
  return [
15115
15115
  {
15116
15116
  key: GALLERY_PAGE_COMPONENT_KEY,
15117
- loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-BorqAr7O.mjs').then((m) => m.AXMGalleryPageComponent),
15117
+ loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-DWSJh77C.mjs').then((m) => m.AXMGalleryPageComponent),
15118
15118
  },
15119
15119
  ];
15120
15120
  }
@@ -22969,7 +22969,11 @@ class AXPEntityDataSelectorService {
22969
22969
  * Execute Entity:Create and return created item.
22970
22970
  * Used by lookup widget and data selector for inline create.
22971
22971
  */
22972
- async executeEntityCreate(entity, mode, initialData = {}, title) {
22972
+ async executeEntityCreate(entity, mode, initialData = {}, title, commandName) {
22973
+ const command = commandName?.trim();
22974
+ if (command) {
22975
+ return this.executeNamedCreate(entity, command, initialData);
22976
+ }
22973
22977
  return this.executeCreate(entity, mode, initialData, title);
22974
22978
  }
22975
22979
  /**
@@ -23072,7 +23076,7 @@ class AXPEntityDataSelectorService {
23072
23076
  onCreate: allowCreate !== 'none'
23073
23077
  ? async (mode) => {
23074
23078
  const data = await this.resolveCreateContext(resolvedCreate.context, options.contextStore);
23075
- return this.executeCreate(options.entity, mode, data, resolvedCreate.title);
23079
+ return this.executeEntityCreate(options.entity, mode, data, resolvedCreate.title, resolvedCreate.command);
23076
23080
  }
23077
23081
  : undefined,
23078
23082
  },
@@ -23292,6 +23296,33 @@ class AXPEntityDataSelectorService {
23292
23296
  }
23293
23297
  return null;
23294
23298
  }
23299
+ /**
23300
+ * Runs a named create command (for example Create New Location) and returns the created row.
23301
+ * `initialData` is sent as both `data` and `options.process.data` so party/owner seeds resolve.
23302
+ */
23303
+ async executeNamedCreate(entity, commandName, initialData) {
23304
+ const result = await this.commandService.execute(commandName, {
23305
+ entity: `${entity.module}.${entity.name}`,
23306
+ entityInfo: {
23307
+ name: entity.name,
23308
+ module: entity.module,
23309
+ title: entity.title,
23310
+ parentKey: entity.parentKey,
23311
+ },
23312
+ data: initialData,
23313
+ options: {
23314
+ process: {
23315
+ redirect: false,
23316
+ data: initialData,
23317
+ },
23318
+ },
23319
+ });
23320
+ if (!result?.success || result.data == null) {
23321
+ return null;
23322
+ }
23323
+ const item = Array.isArray(result.data) ? result.data[0] : result.data;
23324
+ return this.normalizeContactArrays(item);
23325
+ }
23295
23326
  /**
23296
23327
  * Normalize phones/emails from repeater form to plain arrays of { value: string }.
23297
23328
  * Repeater/ContactBox can return nested structure: { value: { label: "", value: "101010" } }
@@ -24138,10 +24169,38 @@ function resolveLookupWidgetTableColumns(entity, columns, resolveTitle, options)
24138
24169
  if (!options?.treeMode || views.length === 0) {
24139
24170
  return views;
24140
24171
  }
24141
- return views.map((column, index) => ({
24172
+ return applyLookupTreeTableColumnLayout(views, options.displayField);
24173
+ }
24174
+ function applyLookupTreeTableColumnLayout(views, displayField) {
24175
+ const expandField = displayField?.trim();
24176
+ if (!expandField) {
24177
+ return views.map((column, index) => ({
24178
+ ...column,
24179
+ expandHandler: index === 0,
24180
+ width: index === 0 ? column.width ?? 'auto' : column.width,
24181
+ }));
24182
+ }
24183
+ const expandIndex = views.findIndex((column) => column.name === expandField);
24184
+ if (expandIndex < 0) {
24185
+ return views.map((column, index) => ({
24186
+ ...column,
24187
+ expandHandler: index === 0,
24188
+ width: index === 0 ? column.width ?? 'auto' : column.width,
24189
+ }));
24190
+ }
24191
+ const ordered = [...views];
24192
+ if (expandIndex > 0) {
24193
+ const [expandColumn] = ordered.splice(expandIndex, 1);
24194
+ ordered.unshift(expandColumn);
24195
+ }
24196
+ return ordered.map((column) => ({
24142
24197
  ...column,
24143
- expandHandler: index === 0,
24144
- width: index === 0 ? column.width ?? 'auto' : column.width,
24198
+ expandHandler: column.name === expandField,
24199
+ width: column.name === expandField
24200
+ ? column.width?.trim()
24201
+ ? column.width
24202
+ : 'auto'
24203
+ : column.width,
24145
24204
  }));
24146
24205
  }
24147
24206
  //#endregion
@@ -24404,7 +24463,7 @@ class AXPLookupWidgetTablePanelComponent {
24404
24463
  #loadedItems;
24405
24464
  /** Set when a row command fires so the following row click does not select. */
24406
24465
  #skipNextRowSelection;
24407
- #ngZone;
24466
+ #totalCount;
24408
24467
  //#endregion
24409
24468
  //#region ----- Lifecycle -----
24410
24469
  constructor() {
@@ -24461,6 +24520,8 @@ class AXPLookupWidgetTablePanelComponent {
24461
24520
  this.#loadedItems = [];
24462
24521
  /** Set when a row command fires so the following row click does not select. */
24463
24522
  this.#skipNextRowSelection = false;
24523
+ this.#totalCount = signal(0, /* @ts-ignore */
24524
+ ...(ngDevMode ? [{ debugName: "#totalCount" }] : /* istanbul ignore next */ []));
24464
24525
  this.tableDataSource = new AXDataSource({
24465
24526
  pageSize: 1,
24466
24527
  key: 'id',
@@ -24470,12 +24531,23 @@ class AXPLookupWidgetTablePanelComponent {
24470
24531
  }),
24471
24532
  });
24472
24533
  /**
24473
- * Fixed popup viewport (header + `maxVisibleItems` rows). Dynamic height inside an
24474
- * animating popover left the table wrapper at 0px until a window resize forced layout.
24534
+ * Source bound to `ax-data-table`. The table only subscribes to `dataSource` in `ngOnInit`,
24535
+ * so the template re-creates it whenever this identity changes (tree mode gets a new source
24536
+ * each time the widget filter changes).
24475
24537
  */
24538
+ this.activeTableDataSource = computed(() => (this.parentField() ? this.dataSource() : this.tableDataSource), /* @ts-ignore */
24539
+ ...(ngDevMode ? [{ debugName: "activeTableDataSource" }] : /* istanbul ignore next */ []));
24476
24540
  this.tableHeight = computed(() => {
24477
24541
  const header = 40;
24478
- return header + this.maxVisibleItems() * this.itemHeight();
24542
+ const itemHeight = this.itemHeight();
24543
+ const maxVisible = this.maxVisibleItems();
24544
+ // Match ax-lookup-multi-column-tree: full viewport even before rows load.
24545
+ if (this.parentField()) {
24546
+ return header + maxVisible * itemHeight;
24547
+ }
24548
+ const total = this.#totalCount();
24549
+ const rows = total > 0 ? total : Math.min(3, maxVisible);
24550
+ return header + Math.min(rows, maxVisible) * itemHeight;
24479
24551
  }, /* @ts-ignore */
24480
24552
  ...(ngDevMode ? [{ debugName: "tableHeight" }] : /* istanbul ignore next */ []));
24481
24553
  this.loadingConfig = computed(() => ({
@@ -24484,7 +24556,6 @@ class AXPLookupWidgetTablePanelComponent {
24484
24556
  }), /* @ts-ignore */
24485
24557
  ...(ngDevMode ? [{ debugName: "loadingConfig" }] : /* istanbul ignore next */ []));
24486
24558
  this.host = inject((ElementRef));
24487
- this.#ngZone = inject(NgZone);
24488
24559
  this.getDropdownRowActionItems = (rowData) => {
24489
24560
  const handler = this.rowActions();
24490
24561
  if (!handler) {
@@ -24508,25 +24579,6 @@ class AXPLookupWidgetTablePanelComponent {
24508
24579
  }
24509
24580
  return classes.join(' ');
24510
24581
  };
24511
- // Popover content is often still animating when the table first measures; re-sync when the
24512
- // host actually receives a non-zero size (same class of bug as ax-lookup list ResizeObserver).
24513
- effect((onCleanup) => {
24514
- if (this.parentField()) {
24515
- return;
24516
- }
24517
- const element = this.host.nativeElement;
24518
- if (typeof ResizeObserver === 'undefined') {
24519
- return;
24520
- }
24521
- const observer = new ResizeObserver(() => {
24522
- if (element.clientWidth <= 0 || element.clientHeight <= 0) {
24523
- return;
24524
- }
24525
- this.#ngZone.run(() => this.syncViewport());
24526
- });
24527
- observer.observe(element);
24528
- onCleanup(() => observer.disconnect());
24529
- });
24530
24582
  effect((onCleanup) => {
24531
24583
  const source = this.dataSource();
24532
24584
  const isTreeMode = !!this.parentField();
@@ -24538,38 +24590,14 @@ class AXPLookupWidgetTablePanelComponent {
24538
24590
  this.#applyLoadedItems(source.cachedItems, source.totalCount);
24539
24591
  });
24540
24592
  const changedSub = source.onChanged.subscribe((event) => {
24541
- this.#ngZone.run(() => this.#applyLoadedItems(event.cachedItems, event.totalCount));
24542
- });
24543
- const loadingSub = source.onLoadingChanged.subscribe((isLoading) => {
24544
- if (isLoading) {
24545
- return;
24546
- }
24547
- const run = () => {
24548
- const wrapper = this.tableRef()?.getHostElement()?.querySelector('.ax-data-table-wrapper') ??
24549
- this.host.nativeElement.querySelector('.ax-data-table-wrapper');
24550
- if (wrapper) {
24551
- this.#tryLoadMore(wrapper);
24552
- }
24553
- };
24554
- if (typeof requestAnimationFrame !== 'undefined') {
24555
- requestAnimationFrame(run);
24556
- }
24557
- else {
24558
- run();
24559
- }
24593
+ this.#applyLoadedItems(event.cachedItems, event.totalCount);
24560
24594
  });
24561
24595
  queueMicrotask(() => {
24562
24596
  if (!source.cachedItems.some((item) => item != null)) {
24563
24597
  source.setPage(0);
24564
24598
  }
24565
- else {
24566
- untracked(() => this.syncViewport());
24567
- }
24568
- });
24569
- onCleanup(() => {
24570
- changedSub.unsubscribe();
24571
- loadingSub.unsubscribe();
24572
24599
  });
24600
+ onCleanup(() => changedSub.unsubscribe());
24573
24601
  });
24574
24602
  effect((onCleanup) => {
24575
24603
  if (this.parentField()) {
@@ -24594,15 +24622,6 @@ class AXPLookupWidgetTablePanelComponent {
24594
24622
  });
24595
24623
  });
24596
24624
  }
24597
- /** Re-paints cached rows after the popover has finished opening or resized. */
24598
- syncViewport() {
24599
- const source = this.dataSource();
24600
- if (!source.cachedItems.some((item) => item != null)) {
24601
- return;
24602
- }
24603
- this.#applyLoadedItems(source.cachedItems, source.totalCount);
24604
- queueMicrotask(() => this.tableRef()?.autoFitColumnsWithAutoWidth());
24605
- }
24606
24625
  //#endregion
24607
24626
  //#region ----- Event Handlers -----
24608
24627
  handleRowClick(event) {
@@ -24639,6 +24658,7 @@ class AXPLookupWidgetTablePanelComponent {
24639
24658
  #applyLoadedItems(cachedItems, totalCount) {
24640
24659
  this.#loadedItems.length = 0;
24641
24660
  this.#loadedItems.push(...cachedItems.filter((item) => item != null));
24661
+ this.#totalCount.set(totalCount);
24642
24662
  this.tableDataSource.config.pageSize = Math.max(this.#loadedItems.length, 1);
24643
24663
  this.tableDataSource.refresh({ reset: true });
24644
24664
  }
@@ -24672,7 +24692,7 @@ class AXPLookupWidgetTablePanelComponent {
24672
24692
  return Boolean(item[this.disabledField()]);
24673
24693
  }
24674
24694
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24675
- 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$6.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$6.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$6.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$5.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 }); }
24695
+ 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: "@for (tableSource of [activeTableDataSource()]; track tableSource) {\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableSource\"\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]=\"!!column.expandHandler\"\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}\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}:host.ax-lookup-multi-column-tree ax-data-table .ax-data-table-nested-indent{display:flex;align-items:center;min-width:0}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$6.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$6.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$6.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$5.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 }); }
24676
24696
  }
24677
24697
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, decorators: [{
24678
24698
  type: Component,
@@ -24680,7 +24700,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
24680
24700
  class: 'ax-lookup-multi-column block min-h-0',
24681
24701
  '[class.ax-lookup-multi-column-tree]': '!!parentField()',
24682
24702
  '[style.height.px]': 'tableHeight()',
24683
- }, 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"] }]
24703
+ }, template: "@for (tableSource of [activeTableDataSource()]; track tableSource) {\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableSource\"\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]=\"!!column.expandHandler\"\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}\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}:host.ax-lookup-multi-column-tree ax-data-table .ax-data-table-nested-indent{display:flex;align-items:center;min-width:0}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
24684
24704
  }], 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 }] }] } });
24685
24705
 
24686
24706
  //#region ----- Imports -----
@@ -24749,8 +24769,6 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
24749
24769
  ...(ngDevMode ? [{ debugName: "triggerSearchInput" }] : /* istanbul ignore next */ []));
24750
24770
  this.popoverRef = viewChild(AXPopoverComponent, /* @ts-ignore */
24751
24771
  ...(ngDevMode ? [{ debugName: "popoverRef" }] : /* istanbul ignore next */ []));
24752
- this.tablePanelRef = viewChild(AXPLookupWidgetTablePanelComponent, /* @ts-ignore */
24753
- ...(ngDevMode ? [{ debugName: "tablePanelRef" }] : /* istanbul ignore next */ []));
24754
24772
  //#endregion
24755
24773
  //#region ----- State -----
24756
24774
  this.expanded = signal(false, /* @ts-ignore */
@@ -24869,14 +24887,6 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
24869
24887
  this.#hydrationRevision++;
24870
24888
  this.treeSearchLoading.set(false);
24871
24889
  }
24872
- onPopoverOpened() {
24873
- if (typeof requestAnimationFrame !== 'undefined') {
24874
- requestAnimationFrame(() => this.tablePanelRef()?.syncViewport());
24875
- }
24876
- else {
24877
- this.tablePanelRef()?.syncViewport();
24878
- }
24879
- }
24880
24890
  onTriggerSearchInput(value) {
24881
24891
  if (!this.disabled() && !this.readonly()) {
24882
24892
  this.expanded.set(true);
@@ -25025,7 +25035,7 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
25025
25035
  { provide: AXComponent, useExisting: AXPLookupWidgetTableHostComponent },
25026
25036
  { provide: AXClearableComponent, useExisting: AXPLookupWidgetTableHostComponent },
25027
25037
  { provide: AXValuableComponent, useExisting: AXPLookupWidgetTableHostComponent },
25028
- ], viewQueries: [{ propertyName: "triggerSearchInput", first: true, predicate: ["triggerSearchInput"], descendants: true, isSignal: true }, { propertyName: "popoverRef", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }, { propertyName: "tablePanelRef", first: true, predicate: AXPLookupWidgetTablePanelComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <ng-content select=\"ax-suffix\"></ng-content>\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onOpened)=\"onPopoverOpened()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [rowActions]=\"rowActions()\"\n (itemClick)=\"handleTableItemClick($event)\"\n (rowAction)=\"handleTableRowAction($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "component", type: AXPLookupWidgetTablePanelComponent, selector: "axp-lookup-widget-table-panel", inputs: ["dataSource", "columns", "valueField", "disabledField", "selectedValues", "parentField", "hasChildrenField", "itemHeight", "maxVisibleItems", "alternate", "highlightText", "rowActions"], outputs: ["itemClick", "rowAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25038
+ ], viewQueries: [{ propertyName: "triggerSearchInput", first: true, predicate: ["triggerSearchInput"], descendants: true, isSignal: true }, { propertyName: "popoverRef", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <ng-content select=\"ax-suffix\"></ng-content>\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [rowActions]=\"rowActions()\"\n (itemClick)=\"handleTableItemClick($event)\"\n (rowAction)=\"handleTableRowAction($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "component", type: AXPLookupWidgetTablePanelComponent, selector: "axp-lookup-widget-table-panel", inputs: ["dataSource", "columns", "valueField", "disabledField", "selectedValues", "parentField", "hasChildrenField", "itemHeight", "maxVisibleItems", "alternate", "highlightText", "rowActions"], outputs: ["itemClick", "rowAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25029
25039
  }
25030
25040
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTableHostComponent, decorators: [{
25031
25041
  type: Component,
@@ -25035,8 +25045,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
25035
25045
  { provide: AXComponent, useExisting: AXPLookupWidgetTableHostComponent },
25036
25046
  { provide: AXClearableComponent, useExisting: AXPLookupWidgetTableHostComponent },
25037
25047
  { provide: AXValuableComponent, useExisting: AXPLookupWidgetTableHostComponent },
25038
- ], template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <ng-content select=\"ax-suffix\"></ng-content>\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onOpened)=\"onPopoverOpened()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [rowActions]=\"rowActions()\"\n (itemClick)=\"handleTableItemClick($event)\"\n (rowAction)=\"handleTableRowAction($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
25039
- }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], caption: [{ type: i0.Input, args: [{ isSignal: true, alias: "caption", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], treeDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "treeDataSource", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], searchFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFields", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], valueItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueItems", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], selectedTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTemplate", required: false }] }], rowActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowActions", required: false }] }], onItemSelected: [{ type: i0.Output, args: ["onItemSelected"] }], triggerSearchInput: [{ type: i0.ViewChild, args: ['triggerSearchInput', { isSignal: true }] }], popoverRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPopoverComponent), { isSignal: true }] }], tablePanelRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPLookupWidgetTablePanelComponent), { isSignal: true }] }] } });
25048
+ ], template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <ng-content select=\"ax-suffix\"></ng-content>\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [rowActions]=\"rowActions()\"\n (itemClick)=\"handleTableItemClick($event)\"\n (rowAction)=\"handleTableRowAction($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
25049
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], caption: [{ type: i0.Input, args: [{ isSignal: true, alias: "caption", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], treeDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "treeDataSource", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], searchFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFields", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], valueItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueItems", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], selectedTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTemplate", required: false }] }], rowActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowActions", required: false }] }], onItemSelected: [{ type: i0.Output, args: ["onItemSelected"] }], triggerSearchInput: [{ type: i0.ViewChild, args: ['triggerSearchInput', { isSignal: true }] }], popoverRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPopoverComponent), { isSignal: true }] }] } });
25040
25050
 
25041
25051
  //#region ----- Imports -----
25042
25052
  //#endregion
@@ -25120,15 +25130,23 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25120
25130
  }, /* @ts-ignore */
25121
25131
  ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
25122
25132
  this.customFilter = computed(() => this.options()['filter'] ?? null, { ...(ngDevMode ? { debugName: "customFilter" } : /* istanbul ignore next */ {}), equal: isEqual });
25133
+ /** When false, an empty cascade filter does not lock the editor. Explicit `disabled` is independent. */
25134
+ this.waitForCascade = computed(() => this.options()['waitForCascade'] ?? true, /* @ts-ignore */
25135
+ ...(ngDevMode ? [{ debugName: "waitForCascade" }] : /* istanbul ignore next */ []));
25123
25136
  /** Parent cascade with an empty value. Structurally empty filters and top-level not-in stay enabled. */
25124
25137
  this.hasPendingCascadeFilter = computed(() => {
25125
- if (this.filterMode()) {
25138
+ if (this.filterMode() || !this.waitForCascade()) {
25126
25139
  return false;
25127
25140
  }
25128
25141
  return isPendingCascadeFilter(this.customFilter());
25129
25142
  }, /* @ts-ignore */
25130
25143
  ...(ngDevMode ? [{ debugName: "hasPendingCascadeFilter" }] : /* istanbul ignore next */ []));
25131
- this.isLookupDisabled = computed(() => this.isDisabled() || this.hasPendingCascadeFilter(), /* @ts-ignore */
25144
+ this.isLookupDisabled = computed(() => {
25145
+ if (this.isDisabled()) {
25146
+ return true;
25147
+ }
25148
+ return this.hasPendingCascadeFilter();
25149
+ }, /* @ts-ignore */
25132
25150
  ...(ngDevMode ? [{ debugName: "isLookupDisabled" }] : /* istanbul ignore next */ []));
25133
25151
  this.placeholder = computed(() => this.options()['placeholder'] ?? '', /* @ts-ignore */
25134
25152
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
@@ -25192,7 +25210,10 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25192
25210
  ...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
25193
25211
  this.lookupWidgetTableColumns = computed(() => {
25194
25212
  const treeMode = this.lookupMode() === 'multi-column-tree';
25195
- return resolveLookupWidgetTableColumns(this.entityDef(), this.columns(), (title, fallback) => this.mlsResolver.translateSync(title || fallback), { treeMode });
25213
+ return resolveLookupWidgetTableColumns(this.entityDef(), this.columns(), (title, fallback) => this.mlsResolver.translateSync(title || fallback), {
25214
+ treeMode,
25215
+ displayField: this.displayField(),
25216
+ });
25196
25217
  }, /* @ts-ignore */
25197
25218
  ...(ngDevMode ? [{ debugName: "lookupWidgetTableColumns" }] : /* istanbul ignore next */ []));
25198
25219
  this.lookupQueryFields = computed(() => resolveLookupQueryFields(this.entityDef(), this.columns(), [this.valueField(), this.displayField(), this.entityDef()?.parentKey, 'childrenCount']), /* @ts-ignore */
@@ -25589,6 +25610,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25589
25610
  mode: resolvedCreate.mode === 'none' ? undefined : resolvedCreate.mode,
25590
25611
  context: resolvedCreate.context,
25591
25612
  title: resolvedCreate.title,
25613
+ command: resolvedCreate.command,
25592
25614
  }
25593
25615
  : { enable: false },
25594
25616
  contextStore: this.contextService,
@@ -25742,9 +25764,9 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25742
25764
  this.isLoading.set(true);
25743
25765
  this.beginHydration();
25744
25766
  try {
25745
- const { context, title } = this.resolvedCreate();
25767
+ const { context, title, command } = this.resolvedCreate();
25746
25768
  const createData = await this.entityDataSelectorService.resolveCreateContext(context, this.contextService);
25747
- const createdItem = await this.entityDataSelectorService.executeEntityCreate(entity, mode, createData, title);
25769
+ const createdItem = await this.entityDataSelectorService.executeEntityCreate(entity, mode, createData, title, command);
25748
25770
  if (createdItem) {
25749
25771
  const valueField = this.valueField();
25750
25772
  const newId = get(createdItem, valueField);
@@ -33187,7 +33209,7 @@ class AXPEntityModule {
33187
33209
  },
33188
33210
  {
33189
33211
  key: 'Entity:Bulk',
33190
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-B2flk4OK.mjs').then((c) => c.AXPBulkEntityCommand),
33212
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-B8qVQxcv.mjs').then((c) => c.AXPBulkEntityCommand),
33191
33213
  },
33192
33214
  {
33193
33215
  key: 'Entity:OpenList',
@@ -33349,7 +33371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
33349
33371
  },
33350
33372
  {
33351
33373
  key: 'Entity:Bulk',
33352
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-B2flk4OK.mjs').then((c) => c.AXPBulkEntityCommand),
33374
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-B8qVQxcv.mjs').then((c) => c.AXPBulkEntityCommand),
33353
33375
  },
33354
33376
  {
33355
33377
  key: 'Entity:OpenList',
@@ -33675,4 +33697,4 @@ function detectEntityChanges(oldObj, newObj) {
33675
33697
  */
33676
33698
 
33677
33699
  export { AXPEntityListViewCardFieldViewModel as $, AXPEntityDefinitionRegistryService as A, AXPEntityCategoryWidget as B, AXPEntityCategoryWidgetColumnComponent as C, AXPEntityCategoryWidgetEditComponent as D, AXPEntityCategoryWidgetViewComponent as E, AXPEntityCommandTriggerViewModel as F, AXPEntityCreateViewElementViewModel as G, AXPEntityCreateViewModelFactory as H, AXPEntityCreateViewSectionViewModel as I, AXPEntityDataProvider as J, AXPEntityDataProviderImpl as K, AXPEntityDataSelectorRowActionsService as L, AXPEntityDataSelectorService as M, AXPEntityDefinitionProviderWidget as N, AXPEntityDefinitionProviderWidgetEditComponent as O, AXPEntityDeletePerformService as P, AXPEntityDetailListViewModel as Q, AXPEntityDetailPopoverComponent as R, AXPEntityDetailPopoverService as S, AXPEntityDetailViewModelFactory as T, AXPEntityDetailViewModelResolver as U, AXPEntityEventDispatcherService as V, AXPEntityFormBuilderService as W, AXPEntityLifecycleHookKeys as X, AXPEntityListPersistenceModeDefault as Y, AXPEntityListTableService as Z, AXPEntityListToolbarService as _, showOperationResultToast as a, AXPUpdateEntityStatusCommand as a$, AXPEntityListViewColumnViewModel as a0, AXPEntityListViewModelFactory as a1, AXPEntityListViewModelResolver as a2, AXPEntityListWidget as a3, AXPEntityListWidgetViewComponent as a4, AXPEntityMasterCreateViewModel as a5, AXPEntityMasterListCardSelectActionName as a6, AXPEntityMasterListViewModel as a7, AXPEntityMasterListViewQueryViewModel as a8, AXPEntityMasterSingleElementViewModel as a9, AXPLookupWidget as aA, AXPLookupWidgetColumnComponent as aB, AXPLookupWidgetEditComponent as aC, AXPLookupWidgetViewComponent as aD, AXPMiddlewareAbortError as aE, AXPMiddlewareEntityStorageService as aF, AXPMultiSourceDefinitionProviderContext as aG, AXPMultiSourceDefinitionProviderService as aH, AXPMultiSourceFederatedSearchService as aI, AXPMultiSourceSelectorComponent as aJ, AXPMultiSourceSelectorService as aK, AXPMultiSourceSelectorWidget as aL, AXPMultiSourceSelectorWidgetColumnComponent as aM, AXPMultiSourceSelectorWidgetEditComponent as aN, AXPMultiSourceSelectorWidgetViewComponent as aO, AXPMultiSourceType as aP, AXPOpenEntityDetailsCommand as aQ, AXPOpenEntityListCommand as aR, AXPRelatedColumnEnrichmentService as aS, AXPRelatedColumnMetadataResolver as aT, AXPSelectorStructureWidget as aU, AXPSelectorStructureWidgetColumnComponent as aV, AXPSelectorStructureWidgetEditComponent as aW, AXPSelectorStructureWidgetViewComponent as aX, AXPShowFileUploaderPopupCommand as aY, AXPTruncatedBreadcrumbComponent as aZ, AXPUpdateEntityCommand as a_, AXPEntityMasterSingleViewGroupViewModel as aa, AXPEntityMasterSingleViewModel as ab, AXPEntityMasterUpdateElementViewModel as ac, AXPEntityMasterUpdateViewModel as ad, AXPEntityMasterUpdateViewModelFactory as ae, AXPEntityMiddlewareSkipContext as af, AXPEntityModule as ag, AXPEntityPreloadFiltersContainerComponent as ah, AXPEntityPreloadFiltersViewModel as ai, AXPEntityPreloadFiltersViewModelResolver as aj, AXPEntityResolver as ak, AXPEntityRuntimeAccessorService as al, AXPEntityService as am, AXPEntityStorageService as an, AXPEntityUpdateViewSectionViewModel as ao, AXPFileListComponent as ap, AXPFileUploaderLoadFilesQuery as aq, AXPFileUploaderSaveFilesCommand as ar, AXPFileUploaderWidget as as, AXPFileUploaderWidgetColumnComponent as at, AXPFileUploaderWidgetEditComponent as au, AXPFileUploaderWidgetService as av, AXPFileUploaderWidgetViewComponent as aw, AXPGetEntityDetailsQuery as ax, AXPLayoutOrderingConfigService as ay, AXPLookupByKeyCacheService as az, buildSelectedIdsFilter as b, defaultMultiLanguageMiddlewareProvider as b$, AXPViewEntityDetailsCommand as b0, AXP_APPEARANCE_SECTION_ORDER as b1, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY as b2, AXP_CLASSIFICATION_SECTION_ORDER as b3, AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS as b4, AXP_CLIENT_LOCAL_PLUGIN_NAME as b5, AXP_DATA_SEEDER_TOKEN as b6, AXP_ENTITY_ACTION_PLUGIN as b7, AXP_ENTITY_CONFIG_TOKEN as b8, AXP_ENTITY_DEFINITION_LOADER as b9, axpOpenEntityListCommandDefinition as bA, axpRunEntityListPageContextAction as bB, axpShowFileUploaderPopupCommandDefinition as bC, axpUpdateEntityStatusCommandDefinition as bD, buildDataSourceTraceSnapshot as bE, canPersistEntityListState as bF, clientLocalPlugin as bG, cloneLayoutArrays as bH, columnOrderingMiddleware as bI, columnOrderingMiddlewareProvider as bJ, columnWidthMiddleware as bK, columnWidthMiddlewareProvider as bL, committedAttachments as bM, composeEntityMiddlewares as bN, composeEntityStorageMiddlewares as bO, computeEntityAggregates as bP, configureEntityListColumnsSettingsMigrateDrop as bQ, configureEntityListColumnsSettingsVersion as bR, createColumnOrderingMiddlewareProvider as bS, createEntityCardDisplayScope as bT, createEntityCardLogicScope as bU, createEntityMiddlewareContext as bV, createEntityStorageContext as bW, createLayoutOrderingMiddlewareProvider as bX, defaultCardLayoutMiddleware as bY, defaultCardLayoutMiddlewareProvider as bZ, defaultMultiLanguageMiddleware as b_, AXP_ENTITY_MIDDLEWARE as ba, AXP_ENTITY_MODIFIER as bb, AXP_ENTITY_STORAGE_MIDDLEWARE as bc, AXP_LOOKUP_FILTER_DEFAULT_OPERATOR as bd, AXP_MULTI_SOURCE_DEFINITION_PROVIDER as be, DEFAULT_COLUMN_ORDER as bf, DEFAULT_PAIR_SPAN_RULES as bg, DEFAULT_PROPERTY_ORDER as bh, DEFAULT_SECTION_ORDER as bi, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE as bj, ENTITY_LIST_LAYOUT_META as bk, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY as bl, ENTITY_MASTER_LIST_TRACE_NS as bm, EntityBuilder as bn, EntityDataAccessor as bo, GALLERY_PAGE_COMPONENT_KEY as bp, TREE_CHILDREN_QUERY_TAKE as bq, actionExists as br, applyDataSourcePagingWithoutLoad as bs, attachmentFieldCount as bt, attachmentsPlugin as bu, attachmentsSemanticallyEqual as bv, axpBuildEntityListPageContextSnapshot as bw, axpCreateEntityAiToolInputDefaults as bx, axpCreateEntityCommandDefinition as by, axpDeleteEntityCommandDefinition as bz, readLiveAttachmentValue as c, provideEntityRealtimeHandlers as c$, defaultSortPresetsMiddleware as c0, defaultSortPresetsMiddlewareProvider as c1, detectEntityChanges as c2, dispatchEntityModifiedSideEffects as c3, ensureHierarchicalRootFilter as c4, ensureLayoutPropertyView as c5, ensureLayoutSection as c6, ensureListActions as c7, entityCreateBridgeMiddleware as c8, entityDeleteBridgeMiddleware as c9, getEntityListRowId as cA, getMasterInterfacePropertySortKey as cB, hasFileUploaderTitleOrDescriptionFields as cC, hydrateAttachmentFieldToFileList as cD, isAXPMiddlewareAbortError as cE, isAttachmentFieldPresentOnRow as cF, isAttachmentListEntry as cG, isAttachmentStorageRef as cH, isCategoryEntity as cI, isCategoryFilter as cJ, isFileListItem as cK, isFileUploaderEditDialogAuto as cL, isLegacyEntityDataSelectorOptions as cM, layoutOrderingMiddlewareFactory as cN, layoutOrderingMiddlewareProvider as cO, mapEntityStorageErrorToCommandResult as cP, mapLegacyEntityDataSelectorOptions as cQ, mergeEntityListViewAndPersistedFilters as cR, normalizeEntityCardHeaderDisplayValue as cS, normalizeEntityDataSelectorColumnSpecs as cT, normalizeEntityDataSelectorOptions as cU, normalizeEntityFieldToFileList as cV, normalizeEntityListPersistenceMode as cW, normalizeListPaging as cX, prefetchClientLocalRelated as cY, provideEntity as cZ, provideEntityMiddlewareBridge as c_, entityGetOneBridgeMiddleware as ca, entityListInstanceCurrentViewPath as cb, entityListInstanceFilterPath as cc, entityListStylingRulesPath as cd, entityQueryBridgeMiddleware as ce, entityStorageCreateBridgeMiddleware as cf, entityStorageDeleteBridgeMiddleware as cg, entityStorageGetOneBridgeMiddleware as ch, entityStorageQueryBridgeMiddleware as ci, entityStorageUpdateBridgeMiddleware as cj, entityUpdateBridgeMiddleware as ck, eventDispatchMiddleware as cl, filterEntityMiddlewares as cm, filterEntityStorageMiddlewares as cn, filterSortEntityRows as co, filterTouchesParentKey as cp, findEntityListRowDataInTree as cq, fingerprintAttachmentItem as cr, fingerprintAttachments as cs, fireEntityLifecycleHook as ct, formatLookupItemDisplay as cu, formatLookupItemDisplayAsync as cv, galleryPlugin as cw, getDataSourcePageIndex as cx, getEntityListColumnsSettingsMigrateDrop as cy, getEntityListColumnsSettingsVersion as cz, saveAttachmentsThroughEntityUpdate as d, provideEntityStorageMiddlewareBridge as d0, provideLocalEntityCatalog as d1, readPersistedEntityListInstanceCurrentView as d2, readPersistedEntityListInstanceFilters as d3, readPersistedEntityListStylingRules as d4, resetPagingForTreeChildrenLoad as d5, resolveAttachmentFieldPath as d6, resolveEntityCardBadgeColorValue as d7, resolveEntityCardHeaderValue as d8, resolveEntityMasterFieldStylingClass as d9, resolveEntityMasterRecordStylingClass as da, resolveEntityMasterStylingClass as db, resolveEntityPluginDetailPageOrder as dc, resolveFileUploaderEditDialog as dd, resolveFileUploaderEntityScope as de, resolveLookupDisplayField as df, resolveLookupDisplayTemplate as dg, resolveLookupEntityCacheKey as dh, resolveLookupEntityKey as di, resolveMasterInterfacePropertyOrder as dj, restoreEntityListExpandedRows as dk, runEntityMiddlewarePipeline as dl, runEntityQuery as dm, runEntityStorageMiddlewarePipeline as dn, searchResultDescriptionMiddleware as dp, searchResultDescriptionMiddlewareProvider as dq, shouldLoadEntityListStateFromStorage as dr, shouldResetEntityListStateOnRouteEntry as ds, traceEntityMasterList as dt, attachmentNeedsHydration as e, ATTACHMENTS_PAGE_COMPONENT_KEY as f, AXMEntityCrudService as g, AXMEntityCrudServiceImpl as h, AXPCategoryTreeService as i, AXPClientLocalPluginModule as j, AXPCreateEntityCommand as k, AXPDataSeederService as l, AXPDeleteEntityCommand as m, newBulkExecutionId as n, AXPDomainQueryEntityDefinitionLoader as o, persistedAttachments as p, AXPEditFileUploaderCommand as q, resolveBulkFailureBody as r, settleAfterLoadingDialog as s, AXPEntityBulkPatchPerformService as t, AXPEntityCardComponent as u, AXPEntityCardFieldsResolver as v, watchBulkProgress as w, AXPEntityCardSelectActionName as x, AXPEntityCardSkeletonComponent as y, AXPEntityCategoryTreeSelectorComponent as z };
33678
- //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BukN_67G.mjs.map
33700
+ //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-_uPigtws.mjs.map