@acorex-platform/framework-client 2.0.0-next.7 → 2.0.0-next.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/fesm2022/acorex-platform-framework-client-common.mjs +1 -1
  2. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +104 -13
  4. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  5. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Cjt2Ba4b.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B5-EWZbC.mjs} +156 -88
  6. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B5-EWZbC.mjs.map +1 -0
  7. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-C2qkYwYY.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-NqoqvVNH.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-C2qkYwYY.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-NqoqvVNH.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-CwZi8hU1.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-4dFHTjF9.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-CwZi8hU1.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-4dFHTjF9.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-DMrq49xG.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-CoHxHyUT.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-DMrq49xG.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-CoHxHyUT.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-DFKZ98s2.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-Dy9LQN8x.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-DFKZ98s2.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-Dy9LQN8x.mjs.map} +1 -1
  15. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  16. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-C7KwK4o1.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-oCW8lNBQ.mjs} +41 -26
  17. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-oCW8lNBQ.mjs.map +1 -0
  18. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CZOhXdsC.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BDUSKUb4.mjs} +3 -3
  19. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CZOhXdsC.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BDUSKUb4.mjs.map} +1 -1
  20. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-CXivatRL.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-CibUqnLG.mjs} +2 -2
  21. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-CXivatRL.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-CibUqnLG.mjs.map} +1 -1
  22. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  23. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +2 -2
  24. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  25. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +1 -1
  26. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  27. package/package.json +2 -2
  28. package/types/acorex-platform-framework-client-layout-components.d.ts +26 -1
  29. package/types/acorex-platform-framework-client-layout-entity.d.ts +31 -27
  30. package/types/acorex-platform-framework-client-layout-widgets.d.ts +2 -1
  31. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Cjt2Ba4b.mjs.map +0 -1
  32. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-C7KwK4o1.mjs.map +0 -1
@@ -44,7 +44,7 @@ import * as i1$5 from '@angular/forms';
44
44
  import { FormsModule } from '@angular/forms';
45
45
  import { AXUploaderModule } from '@acorex/components/uploader';
46
46
  import { createStringProperty, createBooleanProperty, createNumberProperty, AXPWidgetGroupEnum, AXPPageStatus, AXPWidgetStatus, createSelectProperty } from '@acorex-platform/framework-shared/widget-core';
47
- import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_READONLY_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_SELECT_COLUMN_RESOLVE_QUERY, AXP_DISABLED_PROPERTY, AXP_ALLOW_CLEAR_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_PLACEHOLDER_PROPERTY, AXPProviderSelectWidgetEditBase, flattenDataListWidgetColumns, isDataListColumnBand, AXP_ROW_EXPR_PREFIX, applyLeafVisibilityToDataListColumnTree, AXP_REPEATER_ENTITY_BY_KEY_LOOKUP } from '@acorex-platform/framework-client/layout/widgets';
47
+ import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_READONLY_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_SELECT_COLUMN_RESOLVE_QUERY, AXP_DISABLED_PROPERTY, AXP_ALLOW_CLEAR_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_PLACEHOLDER_PROPERTY, flattenDataListWidgetColumns, isDataListColumnBand, AXP_ROW_EXPR_PREFIX, applyLeafVisibilityToDataListColumnTree, AXP_REPEATER_ENTITY_BY_KEY_LOOKUP } from '@acorex-platform/framework-client/layout/widgets';
48
48
  import { AXPopupService } from '@acorex/components/popup';
49
49
  import * as i1$4 from '@acorex/components/skeleton';
50
50
  import { AXSkeletonModule } from '@acorex/components/skeleton';
@@ -66,7 +66,7 @@ import * as i4$1 from '@acorex/components/search-box';
66
66
  import { AXSearchBoxModule } from '@acorex/components/search-box';
67
67
  import { AXTreeViewComponent } from '@acorex/components/tree-view';
68
68
  import * as i3$2 from '@acorex/components/tooltip';
69
- import { AXTooltipModule } from '@acorex/components/tooltip';
69
+ import { AXTooltipModule, AXTooltipDirective } from '@acorex/components/tooltip';
70
70
  import * as i6$1 from '@acorex/components/tag-box';
71
71
  import { AXTagBoxModule } from '@acorex/components/tag-box';
72
72
  import { AXValidationModule } from '@acorex/core/validation';
@@ -5209,7 +5209,7 @@ class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent {
5209
5209
  return false;
5210
5210
  }
5211
5211
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFileUploaderWidgetColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPFileUploaderWidgetColumnComponent, isStandalone: true, selector: "axp-file-uploader-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "fileListTrigger", first: true, predicate: ["fileListTrigger"], descendants: true, isSignal: true }, { propertyName: "fileListPopover", first: true, predicate: ["fileListPopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (fileCount() > 0) {\n <span\n class=\"cursor-pointer text-primary underline\"\n (click)=\"openFileListPopover(); $event.stopPropagation()\"\n #fileListTrigger\n >\n {{\n '@general:widgets.file-uploader.column.files-count'\n | translate: { params: { count: fileCount() } }\n | async\n }}\n </span>\n} @else if (showAttachmentsLink()) {\n <span\n class=\"cursor-pointer text-primary underline\"\n (click)=\"openFileListPopover(); $event.stopPropagation()\"\n #fileListTrigger\n >\n {{ '@general:widgets.file-uploader.attachments.title' | translate | async }}\n </span>\n} @else {\n <span class=\"text-muted\">---</span>\n}\n\n<ax-popover [openOn]=\"'manual'\" #fileListPopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[17.5rem] max-w-[26rem] overflow-hidden\">\n <div class=\"border-b border-surface px-4 py-3\">\n <h3 class=\"m-0 text-sm font-semibold leading-normal text-on-lightest-surface\">\n {{ popoverTitle() | translate | async }}\n </h3>\n </div>\n <div class=\"max-h-64 overflow-y-auto px-3 py-3\" style=\"max-height: max(30dvh, 12rem)\">\n @if (loadStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (loadStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ loadError() }}</div>\n } @else if (popoverFiles().length === 0) {\n <p class=\"axp-file-uploader-column-popover__empty\">\n {{ '@general:widgets.file-uploader.empty-state.title' | translate | async }}\n </p>\n } @else {\n <axp-file-list\n [files]=\"popoverFiles()\"\n look=\"rows\"\n [showActions]=\"false\"\n />\n }\n </div>\n </div>\n</ax-popover>\n", styles: ["@layer properties;.axp-file-uploader-column-popover__empty{margin:0;padding-block:calc(var(--spacing, .25rem) * 2);text-align:center;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);color:rgb(var(--ax-sys-color-on-lighter-surface))}@property --tw-leading{syntax: \"*\"; inherits: false;}@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-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { 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"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readonly", "fileEditable", "enableTitleDescription", "multiple", "look", "showActions", "titleKey", "showLabel", "linksLayout", "files", "accept", "maxFileSize", "showUploadZoneHint", "plugins", "excludePlugins", "capabilities"], outputs: ["onRemove", "onRevert", "onRename"] }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPFileUploaderWidgetColumnComponent, isStandalone: true, selector: "axp-file-uploader-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, viewQueries: [{ propertyName: "fileListTrigger", first: true, predicate: ["fileListTrigger"], descendants: true, isSignal: true }, { propertyName: "fileListPopover", first: true, predicate: ["fileListPopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (fileCount() > 0) {\n <span\n class=\"cursor-pointer text-primary underline\"\n (click)=\"openFileListPopover(); $event.stopPropagation()\"\n #fileListTrigger\n >\n {{\n '@general:widgets.file-uploader.column.files-count'\n | translate: { params: { count: fileCount() } }\n | async\n }}\n </span>\n} @else if (showAttachmentsLink()) {\n <span\n class=\"cursor-pointer text-primary underline\"\n (click)=\"openFileListPopover(); $event.stopPropagation()\"\n #fileListTrigger\n >\n {{ '@general:widgets.file-uploader.attachments.title' | translate | async }}\n </span>\n} @else {\n <span class=\"text-muted\">---</span>\n}\n\n<ax-popover [openOn]=\"'manual'\" #fileListPopover (openChange)=\"onPopoverOpenChange($event)\">\n <div class=\"lightest-surface dark:dark-surface min-w-[17.5rem] max-w-[26rem] overflow-hidden\">\n <div class=\"border-b border-surface px-4 py-3\">\n <h3 class=\"m-0 text-sm font-semibold leading-normal text-on-lightest-surface\">\n {{ popoverTitle() | translate | async }}\n </h3>\n </div>\n <div class=\"max-h-64 overflow-y-auto px-3 py-3\" style=\"max-height: max(30dvh, 12rem)\">\n @if (loadStatus() === 'loading') {\n <div class=\"flex min-h-[120px] items-center justify-center\">\n <ax-loading></ax-loading>\n </div>\n } @else if (loadStatus() === 'error') {\n <div class=\"text-danger text-sm\">{{ loadError() }}</div>\n } @else if (popoverFiles().length === 0) {\n <p class=\"axp-file-uploader-column-popover__empty\">\n {{ '@general:widgets.file-uploader.empty-state.title' | translate | async }}\n </p>\n } @else {\n <axp-file-list\n [files]=\"popoverFiles()\"\n look=\"rows\"\n [showActions]=\"false\"\n />\n }\n </div>\n </div>\n</ax-popover>\n", styles: ["@layer properties;.axp-file-uploader-column-popover__empty{margin:0;padding-block:calc(var(--spacing, .25rem) * 2);text-align:center;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);color:rgb(var(--ax-sys-color-on-lighter-surface))}@property --tw-leading{syntax: \"*\"; inherits: false;}@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-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { 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", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readonly", "fileEditable", "enableTitleDescription", "multiple", "look", "showActions", "titleKey", "showLabel", "linksLayout", "files", "accept", "maxFileSize", "showUploadZoneHint", "plugins", "excludePlugins", "capabilities"], outputs: ["onRemove", "onRevert", "onRename"] }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5213
5213
  }
5214
5214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFileUploaderWidgetColumnComponent, decorators: [{
5215
5215
  type: Component,
@@ -6027,7 +6027,7 @@ class AXPFileUploaderWidgetService {
6027
6027
  };
6028
6028
  let title = '';
6029
6029
  const result = await this.dialogOpener.openPopup({
6030
- load: () => import('./acorex-platform-framework-client-layout-entity-file-list-popup.component-DMrq49xG.mjs').then((m) => m.AXPFileListPopupComponent),
6030
+ load: () => import('./acorex-platform-framework-client-layout-entity-file-list-popup.component-CoHxHyUT.mjs').then((m) => m.AXPFileListPopupComponent),
6031
6031
  data: {
6032
6032
  entity: entity ?? null,
6033
6033
  readonly: resolved.readonly,
@@ -14335,7 +14335,7 @@ class AXMAttachmentsPageComponentProvider {
14335
14335
  return [
14336
14336
  {
14337
14337
  key: ATTACHMENTS_PAGE_COMPONENT_KEY,
14338
- loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-C2qkYwYY.mjs').then((m) => m.AXMAttachmentsPageComponent),
14338
+ loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-NqoqvVNH.mjs').then((m) => m.AXMAttachmentsPageComponent),
14339
14339
  },
14340
14340
  ];
14341
14341
  }
@@ -14872,7 +14872,7 @@ class AXMGalleryPageComponentProvider {
14872
14872
  return [
14873
14873
  {
14874
14874
  key: GALLERY_PAGE_COMPONENT_KEY,
14875
- loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-DFKZ98s2.mjs').then((m) => m.AXMGalleryPageComponent),
14875
+ loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-Dy9LQN8x.mjs').then((m) => m.AXMGalleryPageComponent),
14876
14876
  },
14877
14877
  ];
14878
14878
  }
@@ -18833,106 +18833,173 @@ const AXPEntityDefinitionProviderWidget = {
18833
18833
  },
18834
18834
  };
18835
18835
 
18836
- class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
18836
+ /** One line. Must match the dropdown row so virtual scroll does not clip the first or last item. */
18837
+ const ENTITY_KEY_ROW_HEIGHT = 40;
18838
+ /** One page holds the catalog so unloaded virtual pages are not shown as missing entities. */
18839
+ const ENTITY_KEY_PAGE_SIZE = 500;
18840
+ //#endregion
18841
+ //#region ---- Component ----
18842
+ /**
18843
+ * Picks a registered entity key (`module.name`).
18844
+ * Does not use the data-list widget base: that base writes `options.dataSource`
18845
+ * while the property dialog is opening and remounts the dialog until the browser hangs.
18846
+ */
18847
+ class AXPEntityDefinitionProviderWidgetEditComponent extends AXPValueWidgetComponent {
18837
18848
  constructor() {
18838
18849
  super(...arguments);
18839
18850
  //#region ---- Services & Dependencies ----
18840
18851
  this.entityRegistry = inject(AXPEntityDefinitionRegistryService);
18852
+ this.entityResolver = inject(AXPEntityResolver);
18853
+ this.translationService = inject(AXTranslationService);
18841
18854
  /**
18842
- * Last applied module filter (from context) to avoid redundant reloads.
18855
+ * Replaced after {@link AXPEntityResolver.listAll}. `getAll()` only has entities
18856
+ * already opened in this session, so the dropdown would hide the rest.
18843
18857
  */
18844
- this.lastModuleFilterKey = signal(undefined, /* @ts-ignore */
18845
- ...(ngDevMode ? [{ debugName: "lastModuleFilterKey" }] : /* istanbul ignore next */ []));
18858
+ this.rows = [];
18859
+ /** Bumped when {@link rows} is replaced so the selected label can resolve. */
18860
+ this.rowsVersion = signal(0, /* @ts-ignore */
18861
+ ...(ngDevMode ? [{ debugName: "rowsVersion" }] : /* istanbul ignore next */ []));
18862
+ /** Drops the lookup's initial value echo so the property dialog is not rebuilt. */
18863
+ this.acceptSelection = false;
18846
18864
  //#endregion
18847
- //#region ---- React to sibling module field (context signal) ----
18848
- /**
18849
- * Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
18850
- */
18851
- this.reloadWhenModuleContextChanges = effect(() => {
18852
- this.options();
18853
- const filterField = this.options()['filterModuleField'];
18854
- if (!filterField) {
18855
- return;
18856
- }
18857
- this.contextService.data();
18858
- this.parentPath();
18859
- const data = this.contextService.data();
18860
- const path = this.resolveSiblingContextPath(filterField);
18861
- const modRaw = get(data, path) ?? get(data, filterField);
18862
- const modStr = modRaw != null && String(modRaw).trim() !== '' ? String(modRaw).trim() : null;
18863
- if (modStr === this.lastModuleFilterKey()) {
18864
- return;
18865
+ //#region ---- State ----
18866
+ this.rowHeight = ENTITY_KEY_ROW_HEIGHT;
18867
+ this.dataSource = new AXDataSource({
18868
+ key: 'value',
18869
+ pageSize: ENTITY_KEY_PAGE_SIZE,
18870
+ load: async (query) => {
18871
+ const needle = readLookupFilterText(query.filter);
18872
+ const matched = needle
18873
+ ? this.rows.filter((row) => row.searchText.includes(needle))
18874
+ : this.rows;
18875
+ const skip = query.skip ?? 0;
18876
+ const take = query.take ?? matched.length;
18877
+ return {
18878
+ items: matched.slice(skip, skip + take),
18879
+ total: matched.length,
18880
+ };
18881
+ },
18882
+ byKey: (key) => {
18883
+ const found = this.rows.find((row) => row.value === key);
18884
+ const text = key == null ? '' : String(key);
18885
+ return Promise.resolve(found ?? { value: text, title: text, searchText: text.toLocaleLowerCase() });
18886
+ },
18887
+ });
18888
+ this.selectedKey = computed(() => {
18889
+ const value = this.getValue();
18890
+ return typeof value === 'string' && value.trim() !== '' ? value : null;
18891
+ }, /* @ts-ignore */
18892
+ ...(ngDevMode ? [{ debugName: "selectedKey" }] : /* istanbul ignore next */ []));
18893
+ this.selectedItems = computed(() => {
18894
+ this.rowsVersion();
18895
+ const key = this.selectedKey();
18896
+ if (!key) {
18897
+ return [];
18865
18898
  }
18866
- this.lastModuleFilterKey.set(modStr);
18867
- untracked(() => {
18868
- void this.reloadProviderData();
18869
- });
18899
+ const found = this.rows.find((row) => row.value === key);
18900
+ return [found ?? { value: key, title: key, searchText: key.toLocaleLowerCase() }];
18870
18901
  }, /* @ts-ignore */
18871
- ...(ngDevMode ? [{ debugName: "reloadWhenModuleContextChanges" }] : /* istanbul ignore next */ []));
18872
- }
18873
- //#endregion
18874
- //#region ---- Data loading ----
18875
- /**
18876
- * Options:
18877
- * - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
18878
- * - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
18879
- */
18880
- async loadDataSourceRows() {
18881
- const entities = this.entityRegistry.getAll();
18882
- const filterModuleField = this.options()['filterModuleField'];
18883
- const valueFormat = this.options()['valueFormat'] ?? 'fullKey';
18884
- let list = entities;
18885
- if (filterModuleField) {
18886
- const mod = this.readModuleFromContext(filterModuleField);
18887
- list = mod ? entities.filter((e) => e.module === mod) : [];
18888
- }
18889
- return list.map((e) => ({
18890
- value: valueFormat === 'entityName' ? e.name : `${e.module}.${e.name}`,
18891
- title: `${e.title} (${e.module}.${e.name})`,
18892
- }));
18902
+ ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
18893
18903
  }
18894
18904
  //#endregion
18895
- //#region ---- Refresh (e.g. when sibling module field changes) ----
18896
- refresh() {
18897
- void this.reloadProviderData().then(() => {
18898
- super.refresh();
18905
+ //#region ---- Lifecycle ----
18906
+ async ngOnInit() {
18907
+ super.ngOnInit();
18908
+ try {
18909
+ const catalog = await this.entityResolver.listAll();
18910
+ this.rows = await this.toRows(catalog, this.entityRegistry.getAll());
18911
+ }
18912
+ catch {
18913
+ this.rows = await this.toRows([], this.entityRegistry.getAll());
18914
+ }
18915
+ this.rowsVersion.update((version) => version + 1);
18916
+ this.dataSource.refresh();
18917
+ setTimeout(() => {
18918
+ this.acceptSelection = true;
18899
18919
  });
18900
18920
  }
18901
18921
  //#endregion
18902
- //#region ---- Utility Methods ----
18903
- /**
18904
- * Reads sibling field from context store data (same shape as `lodash/get` paths).
18905
- */
18906
- readModuleFromContext(field) {
18907
- const data = this.contextService.data();
18908
- if (data == null || typeof data !== 'object') {
18909
- return null;
18922
+ //#region ---- Event Handlers ----
18923
+ onLookupValueChanged(event) {
18924
+ if (!this.acceptSelection || !event.isUserInteraction) {
18925
+ return;
18926
+ }
18927
+ const next = typeof event.value === 'string' ? event.value : null;
18928
+ if (next === this.selectedKey()) {
18929
+ return;
18910
18930
  }
18911
- const path = this.resolveSiblingContextPath(field);
18912
- const modRaw = get(data, path) ?? get(data, field);
18913
- return modRaw != null && String(modRaw).trim() !== '' ? String(modRaw).trim() : null;
18931
+ this.setValue(next);
18914
18932
  }
18915
- /**
18916
- * Resolves a sibling field path relative to the current widget's parent path.
18917
- */
18918
- resolveSiblingContextPath(fieldName) {
18919
- const parent = this.parentPath();
18920
- return parent ? `${parent}.${fieldName}` : fieldName;
18933
+ //#endregion
18934
+ //#region ---- Data ----
18935
+ async toRows(catalog, loaded) {
18936
+ const titles = new Map();
18937
+ for (const entity of loaded) {
18938
+ const key = `${entity.module}.${entity.name}`;
18939
+ titles.set(key, entityTitle(entity));
18940
+ }
18941
+ const byValue = new Map();
18942
+ for (const entry of catalog) {
18943
+ byValue.set(entry.fullName, titles.get(entry.fullName) ?? entry.name);
18944
+ }
18945
+ for (const entity of loaded) {
18946
+ const key = `${entity.module}.${entity.name}`;
18947
+ if (!byValue.has(key)) {
18948
+ byValue.set(key, titles.get(key) ?? entity.name);
18949
+ }
18950
+ }
18951
+ const locale = this.translationService.getActiveLang();
18952
+ const labeled = await Promise.all([...byValue.entries()].map(async ([value, title]) => {
18953
+ const translated = (await this.translationService.translateAsync(title)).trim() || title;
18954
+ return {
18955
+ value,
18956
+ title,
18957
+ searchText: `${translated} ${value}`.toLocaleLowerCase(),
18958
+ sortLabel: translated,
18959
+ };
18960
+ }));
18961
+ labeled.sort((a, b) => a.sortLabel.localeCompare(b.sortLabel, locale, { sensitivity: 'base' }));
18962
+ return labeled.map(({ value, title, searchText }) => ({ value, title, searchText }));
18921
18963
  }
18922
18964
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDefinitionProviderWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18923
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityDefinitionProviderWidgetEditComponent, isStandalone: true, selector: "axp-entity-definition-provider-widget-edit", usesInheritance: true, ngImport: i0, template: "<ax-lookup\n [mode]=\"lookupMode()\"\n [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n [caption]=\"(placeholder() | translate | async) ?? ''\"\n [dataSource]=\"dataSource()\"\n [disabled]=\"disabled()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [valueItems]=\"selectedItems()\"\n [readonly]=\"readonly()\"\n [searchable]=\"allowSearch()\"\n [itemTemplate]=\"providerItemTemplate\"\n [selectedTemplate]=\"providerItemTemplate\"\n [ngModel]=\"filterMode() ? selectFilterDisplayValue() : getValue()\"\n (onValueChanged)=\"handleValueChange($event)\"\n (onSelectionChanged)=\"handleSelectionChanged($event)\"\n>\n @if (hasClearButton() && !filterMode()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n</ax-lookup>\n\n<!-- ----- Provider row label (textTemplate or textField) ----- -->\n<ng-template #providerItemTemplate let-item>\n <span class=\"ax-lookup-option-text\">{{ getProviderLookupLabel(item) | translate | async }}</span>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i5.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18965
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPEntityDefinitionProviderWidgetEditComponent, isStandalone: true, selector: "axp-entity-definition-provider-widget-edit", host: { classAttribute: "block flex-1" }, usesInheritance: true, ngImport: i0, template: "<ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"dataSource\"\n valueField=\"value\"\n textField=\"title\"\n [searchable]=\"true\"\n [itemHeight]=\"rowHeight\"\n [maxVisibleItems]=\"8\"\n [valueItems]=\"selectedItems()\"\n [ngModel]=\"selectedKey()\"\n [itemTemplate]=\"entityItemTemplate\"\n [selectedTemplate]=\"entitySelectedTemplate\"\n (onValueChanged)=\"onLookupValueChanged($event)\"\n>\n</ax-lookup>\n\n<!-- ----- Dropdown row. Custom itemTemplate skips the library option padding, so px-3 lives here. ----- -->\n<ng-template #entityItemTemplate let-item>\n <span class=\"flex h-full w-full min-w-0 items-center px-3 text-sm\">\n <span class=\"min-w-0 flex-1 truncate\">\n {{ item?.title | translate | async }}\n <span class=\"text-neutral-500\">({{ item?.value }})</span>\n </span>\n </span>\n</ng-template>\n\n<!-- ----- Selected value stays inside the input padding ----- -->\n<ng-template #entitySelectedTemplate let-item>\n <span class=\"block min-w-0 truncate text-sm\">\n {{ item?.title | translate | async }}\n <span class=\"text-neutral-500\">({{ item?.value }})</span>\n </span>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "allowSelectAll", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18924
18966
  }
18925
18967
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDefinitionProviderWidgetEditComponent, decorators: [{
18926
18968
  type: Component,
18927
- args: [{ selector: 'axp-entity-definition-provider-widget-edit', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
18969
+ args: [{ selector: 'axp-entity-definition-provider-widget-edit', changeDetection: ChangeDetectionStrategy.OnPush, host: {
18970
+ class: 'block flex-1',
18971
+ }, imports: [
18928
18972
  FormsModule,
18929
18973
  AXLookupComponent,
18930
18974
  AXFormModule,
18931
18975
  AXDecoratorModule,
18932
18976
  AXTranslationModule,
18933
18977
  AsyncPipe,
18934
- ], template: "<ax-lookup\n [mode]=\"lookupMode()\"\n [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n [caption]=\"(placeholder() | translate | async) ?? ''\"\n [dataSource]=\"dataSource()\"\n [disabled]=\"disabled()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [valueItems]=\"selectedItems()\"\n [readonly]=\"readonly()\"\n [searchable]=\"allowSearch()\"\n [itemTemplate]=\"providerItemTemplate\"\n [selectedTemplate]=\"providerItemTemplate\"\n [ngModel]=\"filterMode() ? selectFilterDisplayValue() : getValue()\"\n (onValueChanged)=\"handleValueChange($event)\"\n (onSelectionChanged)=\"handleSelectionChanged($event)\"\n>\n @if (hasClearButton() && !filterMode()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n</ax-lookup>\n\n<!-- ----- Provider row label (textTemplate or textField) ----- -->\n<ng-template #providerItemTemplate let-item>\n <span class=\"ax-lookup-option-text\">{{ getProviderLookupLabel(item) | translate | async }}</span>\n</ng-template>\n" }]
18978
+ ], template: "<ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"dataSource\"\n valueField=\"value\"\n textField=\"title\"\n [searchable]=\"true\"\n [itemHeight]=\"rowHeight\"\n [maxVisibleItems]=\"8\"\n [valueItems]=\"selectedItems()\"\n [ngModel]=\"selectedKey()\"\n [itemTemplate]=\"entityItemTemplate\"\n [selectedTemplate]=\"entitySelectedTemplate\"\n (onValueChanged)=\"onLookupValueChanged($event)\"\n>\n</ax-lookup>\n\n<!-- ----- Dropdown row. Custom itemTemplate skips the library option padding, so px-3 lives here. ----- -->\n<ng-template #entityItemTemplate let-item>\n <span class=\"flex h-full w-full min-w-0 items-center px-3 text-sm\">\n <span class=\"min-w-0 flex-1 truncate\">\n {{ item?.title | translate | async }}\n <span class=\"text-neutral-500\">({{ item?.value }})</span>\n </span>\n </span>\n</ng-template>\n\n<!-- ----- Selected value stays inside the input padding ----- -->\n<ng-template #entitySelectedTemplate let-item>\n <span class=\"block min-w-0 truncate text-sm\">\n {{ item?.title | translate | async }}\n <span class=\"text-neutral-500\">({{ item?.value }})</span>\n </span>\n</ng-template>\n" }]
18935
18979
  }] });
18980
+ //#endregion
18981
+ //#region ---- Helpers ----
18982
+ function entityTitle(entity) {
18983
+ return typeof entity.title === 'string' && entity.title.trim() !== '' ? entity.title : entity.name;
18984
+ }
18985
+ function readLookupFilterText(filter) {
18986
+ if (!filter || typeof filter !== 'object') {
18987
+ return '';
18988
+ }
18989
+ const candidate = filter;
18990
+ if (candidate.operator?.type === 'contains' && candidate.value != null) {
18991
+ return String(candidate.value).trim().toLocaleLowerCase();
18992
+ }
18993
+ if (Array.isArray(candidate.filters)) {
18994
+ for (const nested of candidate.filters) {
18995
+ const text = readLookupFilterText(nested);
18996
+ if (text) {
18997
+ return text;
18998
+ }
18999
+ }
19000
+ }
19001
+ return '';
19002
+ }
18936
19003
 
18937
19004
  var entityDefinitionProviderWidgetEdit_component = /*#__PURE__*/Object.freeze({
18938
19005
  __proto__: null,
@@ -22027,7 +22094,7 @@ const AXPLookupWidget = {
22027
22094
  name: 'lookup-editor',
22028
22095
  title: 'Lookup',
22029
22096
  categories: [],
22030
- groups: [AXPWidgetGroupEnum.EntityWidget],
22097
+ groups: [AXPWidgetGroupEnum.EntityWidget, AXPWidgetGroupEnum.FormElement],
22031
22098
  defaultFilterWidgetName: 'lookup-filter',
22032
22099
  type: 'editor',
22033
22100
  icon: 'fa-light fa-list-radio',
@@ -22058,7 +22125,7 @@ const AXPLookupWidget = {
22058
22125
  interface: {
22059
22126
  name: 'entity',
22060
22127
  path: 'options.entity',
22061
- type: AXPWidgetsCatalog.text,
22128
+ type: AXPWidgetsCatalog.entityDefinitionProvider,
22062
22129
  },
22063
22130
  },
22064
22131
  visible: true,
@@ -24660,7 +24727,7 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
24660
24727
  { provide: AXComponent, useExisting: AXPLookupWidgetTableHostComponent },
24661
24728
  { provide: AXClearableComponent, useExisting: AXPLookupWidgetTableHostComponent },
24662
24729
  { provide: AXValuableComponent, useExisting: AXPLookupWidgetTableHostComponent },
24663
- ], 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", "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 }); }
24730
+ ], 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 }); }
24664
24731
  }
24665
24732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTableHostComponent, decorators: [{
24666
24733
  type: Component,
@@ -25621,7 +25688,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25621
25688
  this.shouldFocus.set(true);
25622
25689
  }
25623
25690
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25624
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetEditComponent, isStandalone: true, selector: "axp-lookup-widget-edit", host: { classAttribute: "w-full" }, viewQueries: [{ propertyName: "lookup", first: true, predicate: AXLookupComponent, descendants: true, isSignal: true }, { propertyName: "tableLookupHost", first: true, predicate: AXPLookupWidgetTableHostComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Inline ax-lookup / table host (popup look adds magnifier suffix) ----- -->\n @if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n [rowActions]=\"rowActionsHandler()\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"\n $any(\n multiple()\n ? hasRowActionPrimary()\n ? lookupListItemWithActionsTemplate\n : lookupItemTemplate\n : lookupDropDownListItemTemplate\n )\n \"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </ax-lookup>\n }\n }\n <!--------------------------------------------------------------->\n <!-- ----- Inline create for the lookup entity ----- -->\n @if (resolvedCreate().enabled) {\n <ax-button\n color=\"primary\"\n look=\"twotone\"\n [disabled]=\"isLookupDisabled() || isLoading()\"\n (onClick)=\"handleCreateClick($event)\"\n [title]=\"'@general:actions.create.title' | translate | async\"\n >\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n\n<!-- ----- Lookup item and selected-value label ----- -->\n<ng-template #lookupItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"ax-lookup-option-text\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n</ng-template>\n<!-- ----- Drop-down-list rows: library skips .ax-lookup-option chrome when itemTemplate is set ----- -->\n<ng-template #lookupDropDownListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex h-full w-full min-w-0 items-center gap-1 px-3 text-sm\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <!-- ----- Primary row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n<!-- ----- Multi-select list rows with row actions ----- -->\n<ng-template #lookupListItemWithActionsTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex w-full min-w-0 items-center gap-1\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n </span>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { 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: AXFormModule }, { kind: "directive", type: i5.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "component", type: AXHighlightTextComponent, selector: "ax-highlight-text", inputs: ["text", "query", "highlightDisabled", "highlightOptions"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "component", type: AXPLookupWidgetTableHostComponent, selector: "axp-lookup-widget-table-host", inputs: ["name", "placeholder", "caption", "searchPlaceholder", "dataSource", "treeDataSource", "columns", "valueField", "textField", "disabledField", "parentField", "hasChildrenField", "searchFields", "value", "valueItems", "disabled", "readonly", "searchable", "selectedTemplate", "rowActions"], outputs: ["valueChange", "onItemSelected"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25691
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetEditComponent, isStandalone: true, selector: "axp-lookup-widget-edit", host: { classAttribute: "w-full" }, viewQueries: [{ propertyName: "lookup", first: true, predicate: AXLookupComponent, descendants: true, isSignal: true }, { propertyName: "tableLookupHost", first: true, predicate: AXPLookupWidgetTableHostComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Inline ax-lookup / table host (popup look adds magnifier suffix) ----- -->\n @if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n [rowActions]=\"rowActionsHandler()\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"$any(multiple() ? lookupListItemTemplate : lookupDropDownListItemTemplate)\"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </ax-lookup>\n }\n }\n <!--------------------------------------------------------------->\n <!-- ----- Inline create for the lookup entity ----- -->\n @if (resolvedCreate().enabled) {\n <ax-button\n color=\"primary\"\n look=\"twotone\"\n [disabled]=\"isLookupDisabled() || isLoading()\"\n (onClick)=\"handleCreateClick($event)\"\n [title]=\"'@general:actions.create.title' | translate | async\"\n >\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n\n<!-- ----- Lookup item and selected-value label ----- -->\n<ng-template #lookupItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"ax-lookup-option-text\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n</ng-template>\n<!-- ----- Drop-down-list rows: library skips .ax-lookup-option chrome when itemTemplate is set ----- -->\n<ng-template #lookupDropDownListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex h-full w-full min-w-0 items-center gap-1 px-3 text-sm\">\n @let label = (getLookupItemLabel(item) | translate | async) ?? '';\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\" [axTooltip]=\"label\" [axTooltipOverflowOnly]=\"true\">\n <ax-highlight-text [text]=\"label\" [query]=\"highlightText ?? ''\"></ax-highlight-text>\n </span>\n <!-- ----- Primary row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n<!-- ----- Multi-select list rows: fixed row height, so long labels truncate (tooltip on overflow) ----- -->\n<ng-template #lookupListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex w-full min-w-0 items-center gap-1\">\n @let label = (getLookupItemLabel(item) | translate | async) ?? '';\n <!-- Not `.ax-lookup-option-text`: the library's multi-select rule makes it `display: flex`, which drops the ellipsis. -->\n <span class=\"block min-w-0 flex-1 truncate\" [axTooltip]=\"label\" [axTooltipOverflowOnly]=\"true\">\n <ax-highlight-text [text]=\"label\" [query]=\"highlightText ?? ''\"></ax-highlight-text>\n </span>\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { 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: AXFormModule }, { kind: "directive", type: i5.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "component", type: AXHighlightTextComponent, selector: "ax-highlight-text", inputs: ["text", "query", "highlightDisabled", "highlightOptions"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "allowSelectAll", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "component", type: AXPLookupWidgetTableHostComponent, selector: "axp-lookup-widget-table-host", inputs: ["name", "placeholder", "caption", "searchPlaceholder", "dataSource", "treeDataSource", "columns", "valueField", "textField", "disabledField", "parentField", "hasChildrenField", "searchFields", "value", "valueItems", "disabled", "readonly", "searchable", "selectedTemplate", "rowActions"], outputs: ["valueChange", "onItemSelected"] }, { kind: "directive", type: AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipOverflowOnly", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25625
25692
  }
25626
25693
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetEditComponent, decorators: [{
25627
25694
  type: Component,
@@ -25637,9 +25704,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
25637
25704
  AXLoadingModule,
25638
25705
  AXLookupComponent,
25639
25706
  AXPLookupWidgetTableHostComponent,
25707
+ AXTooltipDirective,
25640
25708
  AXTranslationModule,
25641
25709
  AXValidationModule,
25642
- ], template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Inline ax-lookup / table host (popup look adds magnifier suffix) ----- -->\n @if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n [rowActions]=\"rowActionsHandler()\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"\n $any(\n multiple()\n ? hasRowActionPrimary()\n ? lookupListItemWithActionsTemplate\n : lookupItemTemplate\n : lookupDropDownListItemTemplate\n )\n \"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </ax-lookup>\n }\n }\n <!--------------------------------------------------------------->\n <!-- ----- Inline create for the lookup entity ----- -->\n @if (resolvedCreate().enabled) {\n <ax-button\n color=\"primary\"\n look=\"twotone\"\n [disabled]=\"isLookupDisabled() || isLoading()\"\n (onClick)=\"handleCreateClick($event)\"\n [title]=\"'@general:actions.create.title' | translate | async\"\n >\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n\n<!-- ----- Lookup item and selected-value label ----- -->\n<ng-template #lookupItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"ax-lookup-option-text\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n</ng-template>\n<!-- ----- Drop-down-list rows: library skips .ax-lookup-option chrome when itemTemplate is set ----- -->\n<ng-template #lookupDropDownListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex h-full w-full min-w-0 items-center gap-1 px-3 text-sm\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <!-- ----- Primary row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n<!-- ----- Multi-select list rows with row actions ----- -->\n<ng-template #lookupListItemWithActionsTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex w-full min-w-0 items-center gap-1\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n </span>\n</ng-template>\n" }]
25710
+ ], template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Inline ax-lookup / table host (popup look adds magnifier suffix) ----- -->\n @if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n [rowActions]=\"rowActionsHandler()\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"$any(multiple() ? lookupListItemTemplate : lookupDropDownListItemTemplate)\"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (isPopupLook()) {\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Magnifier opens full entity data selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n }\n </ax-lookup>\n }\n }\n <!--------------------------------------------------------------->\n <!-- ----- Inline create for the lookup entity ----- -->\n @if (resolvedCreate().enabled) {\n <ax-button\n color=\"primary\"\n look=\"twotone\"\n [disabled]=\"isLookupDisabled() || isLoading()\"\n (onClick)=\"handleCreateClick($event)\"\n [title]=\"'@general:actions.create.title' | translate | async\"\n >\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n\n<!-- ----- Lookup item and selected-value label ----- -->\n<ng-template #lookupItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"ax-lookup-option-text\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n</ng-template>\n<!-- ----- Drop-down-list rows: library skips .ax-lookup-option chrome when itemTemplate is set ----- -->\n<ng-template #lookupDropDownListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex h-full w-full min-w-0 items-center gap-1 px-3 text-sm\">\n @let label = (getLookupItemLabel(item) | translate | async) ?? '';\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\" [axTooltip]=\"label\" [axTooltipOverflowOnly]=\"true\">\n <ax-highlight-text [text]=\"label\" [query]=\"highlightText ?? ''\"></ax-highlight-text>\n </span>\n <!-- ----- Primary row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n<!-- ----- Multi-select list rows: fixed row height, so long labels truncate (tooltip on overflow) ----- -->\n<ng-template #lookupListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex w-full min-w-0 items-center gap-1\">\n @let label = (getLookupItemLabel(item) | translate | async) ?? '';\n <!-- Not `.ax-lookup-option-text`: the library's multi-select rule makes it `display: flex`, which drops the ellipsis. -->\n <span class=\"block min-w-0 flex-1 truncate\" [axTooltip]=\"label\" [axTooltipOverflowOnly]=\"true\">\n <ax-highlight-text [text]=\"label\" [query]=\"highlightText ?? ''\"></ax-highlight-text>\n </span>\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n" }]
25643
25711
  }], propDecorators: { lookup: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXLookupComponent), { isSignal: true }] }], tableLookupHost: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPLookupWidgetTableHostComponent), { isSignal: true }] }] } });
25644
25712
 
25645
25713
  var lookupWidgetEdit_component = /*#__PURE__*/Object.freeze({
@@ -26433,7 +26501,7 @@ class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent {
26433
26501
  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);
26434
26502
  }
26435
26503
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26436
- 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 }); }
26504
+ 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", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26437
26505
  }
26438
26506
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetColumnComponent, decorators: [{
26439
26507
  type: Component,
@@ -28664,7 +28732,7 @@ class AXPSelectorStructureWidgetEditComponent extends AXPValueWidgetComponent {
28664
28732
  } @else {
28665
28733
  <span class="text-muted">{{ disabledHint() }}</span>
28666
28734
  }
28667
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXAccordionModule }, { kind: "component", type: i3$3.AXAccordionItemComponent, selector: "ax-accordion-item", inputs: ["isCollapsed", "icon", "textdecoration", "caption", "isLoading", "headerTemplate", "look", "disabled"], outputs: ["isCollapsedChange", "isLoadingChange", "onClick"] }, { kind: "component", type: i3$3.AXAccordionGroupComponent, selector: "ax-accordion-group", inputs: ["accordion", "activeIndex", "look", "collapsedOnItemClick"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4$2.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i1$6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i6$2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28735
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "allowSelectAll", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXAccordionModule }, { kind: "component", type: i3$3.AXAccordionItemComponent, selector: "ax-accordion-item", inputs: ["isCollapsed", "icon", "textdecoration", "caption", "isLoading", "headerTemplate", "look", "disabled"], outputs: ["isCollapsedChange", "isLoadingChange", "onClick"] }, { kind: "component", type: i3$3.AXAccordionGroupComponent, selector: "ax-accordion-group", inputs: ["accordion", "activeIndex", "look", "collapsedOnItemClick"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4$2.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i1$6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i6$2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28668
28736
  }
28669
28737
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPSelectorStructureWidgetEditComponent, decorators: [{
28670
28738
  type: Component,
@@ -32808,7 +32876,7 @@ class AXPEntityModule {
32808
32876
  },
32809
32877
  {
32810
32878
  key: 'Entity:Bulk',
32811
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-CwZi8hU1.mjs').then((c) => c.AXPBulkEntityCommand),
32879
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-4dFHTjF9.mjs').then((c) => c.AXPBulkEntityCommand),
32812
32880
  },
32813
32881
  {
32814
32882
  key: 'Entity:OpenList',
@@ -32970,7 +33038,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
32970
33038
  },
32971
33039
  {
32972
33040
  key: 'Entity:Bulk',
32973
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-CwZi8hU1.mjs').then((c) => c.AXPBulkEntityCommand),
33041
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-4dFHTjF9.mjs').then((c) => c.AXPBulkEntityCommand),
32974
33042
  },
32975
33043
  {
32976
33044
  key: 'Entity:OpenList',
@@ -33296,4 +33364,4 @@ function detectEntityChanges(oldObj, newObj) {
33296
33364
  */
33297
33365
 
33298
33366
  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 };
33299
- //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Cjt2Ba4b.mjs.map
33367
+ //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-B5-EWZbC.mjs.map