@acorex-platform/framework-client 2.0.0-next.15 → 2.0.0-next.17

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 (54) hide show
  1. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs → acorex-platform-framework-client-common-common-settings.provider-Cyr1DaiD.mjs} +19 -2
  2. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs.map → acorex-platform-framework-client-common-common-settings.provider-Cyr1DaiD.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-framework-client-common.mjs +126 -26
  4. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +221 -98
  6. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  7. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-RG1FLjoP.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-o8SLSxU-.mjs} +147 -41
  8. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-o8SLSxU-.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Bh8YRyxV.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-B2v5VFlL.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Bh8YRyxV.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-B2v5VFlL.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-CSfoFx99.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-DiB2ZLpg.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-CSfoFx99.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-DiB2ZLpg.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-Z2N8JZ3_.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-C9esa6dp.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-Z2N8JZ3_.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-C9esa6dp.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-ZEGLkwzi.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-CKxYno2v.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-ZEGLkwzi.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-CKxYno2v.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +59 -10
  19. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +175 -172
  21. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  22. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CzhP4_OE.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DZMgisgf.mjs} +80 -75
  23. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DZMgisgf.mjs.map +1 -0
  24. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BIl416zF.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BejeCu5q.mjs} +2 -2
  25. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BIl416zF.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BejeCu5q.mjs.map} +1 -1
  26. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DK8XXQuT.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C2XsTtkl.mjs} +2 -2
  27. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DK8XXQuT.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C2XsTtkl.mjs.map} +1 -1
  28. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  29. package/fesm2022/acorex-platform-framework-client-realtime.mjs +49 -7
  30. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  31. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-DPU6jTDk.mjs} +8 -2
  32. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DPU6jTDk.mjs.map +1 -0
  33. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-CLdQJ8e8.mjs} +8 -2
  34. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-CLdQJ8e8.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +18 -11
  36. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  37. package/i18n/en-AU/general.json +16 -4
  38. package/i18n/en-AU/layout.json +2 -1
  39. package/i18n/en-US/general.json +16 -4
  40. package/i18n/en-US/layout.json +2 -1
  41. package/i18n/fa-IR/general.json +16 -4
  42. package/i18n/fa-IR/layout.json +2 -1
  43. package/package.json +2 -2
  44. package/types/acorex-platform-framework-client-common.d.ts +40 -5
  45. package/types/acorex-platform-framework-client-layout-components.d.ts +9 -3
  46. package/types/acorex-platform-framework-client-layout-entity.d.ts +18 -1
  47. package/types/acorex-platform-framework-client-layout-views.d.ts +15 -0
  48. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +39 -14
  49. package/types/acorex-platform-framework-client-layout-widgets.d.ts +12 -0
  50. package/types/acorex-platform-framework-client-realtime.d.ts +5 -0
  51. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-RG1FLjoP.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CzhP4_OE.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs.map +0 -1
  54. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs.map +0 -1
@@ -5,7 +5,7 @@ import * as i3$1 from '@acorex/core/translation';
5
5
  import { AXTranslationService, AXTranslationModule, resolveMultiLanguageString, translateSync } from '@acorex/core/translation';
6
6
  import * as i4$4 from '@acorex-platform/framework-client/common';
7
7
  import { AXPNotFoundError, AXPSettingsService, AXPCommonSettings, resolveEntityCreateListBehavior, platformErrorI18nKey, extractRequestErrorInfo, axpNavigateAppPath, AXPFileTypeProviderService, AXPFileStorageService, resolveFileTypeDisplay, resolveEntityRowDisplayTitle, resolveEntityModifyPopupTitle, commandMessageTextForError, resolveStoredImageDisplayUrl, isStoredImageFileId, AXPFilterOperatorMiddlewareService, AXP_ENTITY_LIST_DISPLAY_MODE_DEFAULT, ENTITY_LIST_DEFAULT_INSTANCE_ID, axpNormalizeEntityListInstanceId, axpGetEntityListInstanceIdFromParamMap, axpRedirectToNotFound, CONTAINS_OPER, toExecuteCommandFailureResult, AXPLocalEntityEngine, AXPLocalEntityRealtimeBridge, AXP_LOCAL_ENTITY_DEFAULT_MAX_ITEMS, resolveSearchableText, evaluateEntityDisplayTemplate, AXPCleanNestedFilters, isPendingCascadeFilter, AXPEntityDetailsNavTrailService, axpComposeEntityDetailsNavTrail, axpIsEntityRecordNotFound, coerceAXPSettingRawValueByKind, AXPDefaultMultiLanguageConfigService, withDefaultMultiLanguageOnWidgetNodeTree, axpIsEntityListPath, axpIsEntityDetailsPath, axpParseEntityListRoute, axpParseEntityDetailsRoute, axpSaveEntityListReturnUrl, AXPMenuRouteGuard, AXP_NOT_FOUND_ROUTE, AXP_PROTECTED_ROUTE_GUARDS, AXP_ENTITY_VIEW_ACCESS, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_DEFINITION_LAZY_RESOLVER } from '@acorex-platform/framework-client/common';
8
- import { AXPWidgetsCatalog, runtimeCommandPayloadData, createRandomUuid, AXPRequestError, runtimeQueryPayloadData, runtimeQueryCollectionData, runtimeQueryFailure, runtimeQuerySuccessObject, runtimeCommandFailure, runtimeCommandSuccessObject, resolveActionLook, listThemeSurfaceClasses, parseRuntimeHexSurface, AXP_THEME_SURFACE_STYLES, AXPWidgetsList, AXPSystemActionType, coerceFilterDisplayText, AXPPlatformScope, flattenQueryFilterUserGroups, AXP_QUERY_QUICK_SEARCH_FIELD, wrapQueryFilterRoot, isPersistableFilterQuery, collectQueryFilterLeaves, isCompleteFilterCondition, resolveFilterQueryIdentityField, extractValue, setSmart, getChangedPaths, isSelectionValueEqual, toAxpGridItemWidgetOptions, runtimeQuerySuccessCollection } from '@acorex-platform/framework-shared/core';
8
+ import { AXPWidgetsCatalog, copyValidationRule, prefixContextEvalPaths, runtimeCommandPayloadData, createRandomUuid, AXPRequestError, runtimeQueryPayloadData, runtimeQueryCollectionData, runtimeQueryFailure, runtimeQuerySuccessObject, runtimeCommandFailure, runtimeCommandSuccessObject, resolveActionLook, listThemeSurfaceClasses, parseRuntimeHexSurface, AXP_THEME_SURFACE_STYLES, AXPWidgetsList, AXPSystemActionType, coerceFilterDisplayText, AXPPlatformScope, flattenQueryFilterUserGroups, AXP_QUERY_QUICK_SEARCH_FIELD, wrapQueryFilterRoot, isPersistableFilterQuery, collectQueryFilterLeaves, isCompleteFilterCondition, resolveFilterQueryIdentityField, extractValue, setSmart, getChangedPaths, isSelectionValueEqual, toAxpGridItemWidgetOptions, runtimeQuerySuccessCollection } from '@acorex-platform/framework-shared/core';
9
9
  import { AXPDeviceService, AXPExpressionEvaluatorService, AXPEntityBroadcastService, AXPHookService, AXPDebugService, AXPDataGenerator, AXPContextEvalFactory, ensureRuntimeSurfaceClass, applyFilterArray, createCommandExpressionScope, toExpressionRecord, AXPDistributedEventListenerService, applySortArray, AXHighlightService, AXPColumnWidthService, objectKeyValueTransforms, setupPopupFooterKeyboardShortcuts, AXPContextStore, AXPModuleManifestRegistry, provideAppStartUpTask, AXP_APP_STARTUP_PRIORITY, defaultColumnWidthProvider, AXP_COLUMN_WIDTH_PROVIDER } from '@acorex-platform/framework-client/core';
10
10
  import { AXPLayoutBuilderService, AXPDialogOpener, LayoutBuilderModule } from '@acorex-platform/framework-client/layout/builder';
11
11
  import * as i0 from '@angular/core';
@@ -1729,7 +1729,7 @@ class PropertyFilter {
1729
1729
  field.setOptions(hintOpts);
1730
1730
  }
1731
1731
  const widgetType = prop.schema?.interface?.type || '';
1732
- const widgetOptions = buildWidgetOptions(prop);
1732
+ const widgetOptions = buildWidgetOptions(prop, dataPath);
1733
1733
  const extendedProperties = buildWidgetExtendedProperties(prop);
1734
1734
  const finalExtendedProps = dataPath ? prefixExpressions(extendedProperties, dataPath) : extendedProperties;
1735
1735
  field.customWidget(widgetType, { ...widgetOptions, ...finalExtendedProps });
@@ -2143,13 +2143,15 @@ function toFieldLayout(layout) {
2143
2143
  },
2144
2144
  };
2145
2145
  }
2146
- function buildWidgetOptions(prop) {
2146
+ function buildWidgetOptions(prop, dataPath) {
2147
2147
  const base = prop.schema?.interface?.options || {};
2148
- const validations = (prop.validations || []).map((c) => ({
2149
- rule: c.rule,
2150
- message: c.message,
2151
- options: c.options,
2152
- }));
2148
+ const validations = (prop.validations || []).map((rule) => {
2149
+ const copied = copyValidationRule(rule);
2150
+ if (!dataPath || typeof copied.disabled !== 'string') {
2151
+ return copied;
2152
+ }
2153
+ return { ...copied, disabled: prefixContextEvalPaths(copied.disabled, dataPath) };
2154
+ });
2153
2155
  return {
2154
2156
  ...base,
2155
2157
  validations,
@@ -6193,7 +6195,7 @@ class AXPFileUploaderWidgetService {
6193
6195
  };
6194
6196
  let title = '';
6195
6197
  const result = await this.dialogOpener.openPopup({
6196
- load: () => import('./acorex-platform-framework-client-layout-entity-file-list-popup.component-Z2N8JZ3_.mjs').then((m) => m.AXPFileListPopupComponent),
6198
+ load: () => import('./acorex-platform-framework-client-layout-entity-file-list-popup.component-C9esa6dp.mjs').then((m) => m.AXPFileListPopupComponent),
6197
6199
  data: {
6198
6200
  entity: entity ?? null,
6199
6201
  readonly: resolved.readonly,
@@ -10141,8 +10143,14 @@ class AXPEntityCreateViewElementViewModel {
10141
10143
  return this.property.schema.visible ?? true;
10142
10144
  }, /* @ts-ignore */
10143
10145
  ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
10146
+ this.liveRequired = signal(null, /* @ts-ignore */
10147
+ ...(ngDevMode ? [{ debugName: "liveRequired" }] : /* istanbul ignore next */ []));
10144
10148
  this.isRequired = computed(() => {
10145
- return this.property.validations?.some((c) => c.rule == 'required') || false;
10149
+ const live = this.liveRequired();
10150
+ if (live !== null) {
10151
+ return live;
10152
+ }
10153
+ return (this.property.validations ?? []).some((rule) => rule.rule === 'required' && rule.disabled !== true);
10146
10154
  }, /* @ts-ignore */
10147
10155
  ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
10148
10156
  this.layout = computed(() => {
@@ -10164,12 +10172,21 @@ class AXPEntityCreateViewElementViewModel {
10164
10172
  defaultValue: schema.defaultValue,
10165
10173
  valueTransforms: widget.valueTransforms,
10166
10174
  options: merge({}, schema.interface?.options, {
10167
- validations: this.property.validations?.map((c) => ({ rule: c.rule, message: c.message, options: c.options })),
10175
+ validations: this.property.validations?.map((rule) => copyValidationRule(rule)),
10168
10176
  }),
10169
10177
  };
10170
10178
  }, /* @ts-ignore */
10171
10179
  ...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
10172
10180
  }
10181
+ /** `disabled` values of `required` rules, so the page label can follow the same expression as the editor. */
10182
+ requiredDisabledSources() {
10183
+ return (this.property.validations ?? [])
10184
+ .filter((rule) => rule.rule === 'required')
10185
+ .map((rule) => rule.disabled);
10186
+ }
10187
+ setLiveRequired(value) {
10188
+ this.liveRequired.set(value);
10189
+ }
10173
10190
  }
10174
10191
  class AXPEntityMasterCreateViewModel {
10175
10192
  constructor(injector, config, initialData = {}, commandOptions) {
@@ -13415,8 +13432,14 @@ class AXPEntityMasterUpdateElementViewModel {
13415
13432
  return this.property.schema.visible ?? true;
13416
13433
  }, /* @ts-ignore */
13417
13434
  ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
13435
+ this.liveRequired = signal(null, /* @ts-ignore */
13436
+ ...(ngDevMode ? [{ debugName: "liveRequired" }] : /* istanbul ignore next */ []));
13418
13437
  this.isRequired = computed(() => {
13419
- return this.property.validations?.some((c) => c.rule == 'required') || false;
13438
+ const live = this.liveRequired();
13439
+ if (live !== null) {
13440
+ return live;
13441
+ }
13442
+ return (this.property.validations ?? []).some((rule) => rule.rule === 'required' && rule.disabled !== true);
13420
13443
  }, /* @ts-ignore */
13421
13444
  ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
13422
13445
  this.layout = computed(() => {
@@ -13438,12 +13461,21 @@ class AXPEntityMasterUpdateElementViewModel {
13438
13461
  triggers: widget.triggers,
13439
13462
  valueTransforms: widget.valueTransforms,
13440
13463
  options: merge({}, schema.interface?.options, {
13441
- validations: this.property.validations?.map((c) => ({ rule: c.rule, message: c.message, options: c.options })),
13464
+ validations: this.property.validations?.map((rule) => copyValidationRule(rule)),
13442
13465
  }),
13443
13466
  };
13444
13467
  }, /* @ts-ignore */
13445
13468
  ...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
13446
13469
  }
13470
+ /** `disabled` values of `required` rules, so the page label can follow the same expression as the editor. */
13471
+ requiredDisabledSources() {
13472
+ return (this.property.validations ?? [])
13473
+ .filter((rule) => rule.rule === 'required')
13474
+ .map((rule) => rule.disabled);
13475
+ }
13476
+ setLiveRequired(value) {
13477
+ this.liveRequired.set(value);
13478
+ }
13447
13479
  }
13448
13480
  class AXPEntityMasterUpdateViewModel {
13449
13481
  // Dynamically resolve identifiers when needed
@@ -14577,7 +14609,7 @@ class AXMAttachmentsPageComponentProvider {
14577
14609
  return [
14578
14610
  {
14579
14611
  key: ATTACHMENTS_PAGE_COMPONENT_KEY,
14580
- loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-Bh8YRyxV.mjs').then((m) => m.AXMAttachmentsPageComponent),
14612
+ loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-B2v5VFlL.mjs').then((m) => m.AXMAttachmentsPageComponent),
14581
14613
  },
14582
14614
  ];
14583
14615
  }
@@ -15114,7 +15146,7 @@ class AXMGalleryPageComponentProvider {
15114
15146
  return [
15115
15147
  {
15116
15148
  key: GALLERY_PAGE_COMPONENT_KEY,
15117
- loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-ZEGLkwzi.mjs').then((m) => m.AXMGalleryPageComponent),
15149
+ loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-CKxYno2v.mjs').then((m) => m.AXMGalleryPageComponent),
15118
15150
  },
15119
15151
  ];
15120
15152
  }
@@ -18691,7 +18723,7 @@ class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetComponent {
18691
18723
  [rule]="validation.rule"
18692
18724
  [message]="$safeNavigationMigration(validation.options?.message)"
18693
18725
  [options]="validation.options"
18694
- ></ax-validation-rule>
18726
+ [disabled]="validation.disabled === true"></ax-validation-rule>
18695
18727
  }
18696
18728
  @if (selectedItems().length > 1 || allowClear()) {
18697
18729
  <ax-clear-button (click)="handleClearClick()"></ax-clear-button>
@@ -18747,7 +18779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
18747
18779
  [rule]="validation.rule"
18748
18780
  [message]="$safeNavigationMigration(validation.options?.message)"
18749
18781
  [options]="validation.options"
18750
- ></ax-validation-rule>
18782
+ [disabled]="validation.disabled === true"></ax-validation-rule>
18751
18783
  }
18752
18784
  @if (selectedItems().length > 1 || allowClear()) {
18753
18785
  <ax-clear-button (click)="handleClearClick()"></ax-clear-button>
@@ -22969,7 +23001,11 @@ class AXPEntityDataSelectorService {
22969
23001
  * Execute Entity:Create and return created item.
22970
23002
  * Used by lookup widget and data selector for inline create.
22971
23003
  */
22972
- async executeEntityCreate(entity, mode, initialData = {}, title) {
23004
+ async executeEntityCreate(entity, mode, initialData = {}, title, commandName) {
23005
+ const command = commandName?.trim();
23006
+ if (command) {
23007
+ return this.executeNamedCreate(entity, command, initialData);
23008
+ }
22973
23009
  return this.executeCreate(entity, mode, initialData, title);
22974
23010
  }
22975
23011
  /**
@@ -23072,7 +23108,7 @@ class AXPEntityDataSelectorService {
23072
23108
  onCreate: allowCreate !== 'none'
23073
23109
  ? async (mode) => {
23074
23110
  const data = await this.resolveCreateContext(resolvedCreate.context, options.contextStore);
23075
- return this.executeCreate(options.entity, mode, data, resolvedCreate.title);
23111
+ return this.executeEntityCreate(options.entity, mode, data, resolvedCreate.title, resolvedCreate.command);
23076
23112
  }
23077
23113
  : undefined,
23078
23114
  },
@@ -23292,6 +23328,33 @@ class AXPEntityDataSelectorService {
23292
23328
  }
23293
23329
  return null;
23294
23330
  }
23331
+ /**
23332
+ * Runs a named create command (for example Create New Location) and returns the created row.
23333
+ * `initialData` is sent as both `data` and `options.process.data` so party/owner seeds resolve.
23334
+ */
23335
+ async executeNamedCreate(entity, commandName, initialData) {
23336
+ const result = await this.commandService.execute(commandName, {
23337
+ entity: `${entity.module}.${entity.name}`,
23338
+ entityInfo: {
23339
+ name: entity.name,
23340
+ module: entity.module,
23341
+ title: entity.title,
23342
+ parentKey: entity.parentKey,
23343
+ },
23344
+ data: initialData,
23345
+ options: {
23346
+ process: {
23347
+ redirect: false,
23348
+ data: initialData,
23349
+ },
23350
+ },
23351
+ });
23352
+ if (!result?.success || result.data == null) {
23353
+ return null;
23354
+ }
23355
+ const item = Array.isArray(result.data) ? result.data[0] : result.data;
23356
+ return this.normalizeContactArrays(item);
23357
+ }
23295
23358
  /**
23296
23359
  * Normalize phones/emails from repeater form to plain arrays of { value: string }.
23297
23360
  * Repeater/ContactBox can return nested structure: { value: { label: "", value: "101010" } }
@@ -24138,10 +24201,38 @@ function resolveLookupWidgetTableColumns(entity, columns, resolveTitle, options)
24138
24201
  if (!options?.treeMode || views.length === 0) {
24139
24202
  return views;
24140
24203
  }
24141
- return views.map((column, index) => ({
24204
+ return applyLookupTreeTableColumnLayout(views, options.displayField);
24205
+ }
24206
+ function applyLookupTreeTableColumnLayout(views, displayField) {
24207
+ const expandField = displayField?.trim();
24208
+ if (!expandField) {
24209
+ return views.map((column, index) => ({
24210
+ ...column,
24211
+ expandHandler: index === 0,
24212
+ width: index === 0 ? column.width ?? 'auto' : column.width,
24213
+ }));
24214
+ }
24215
+ const expandIndex = views.findIndex((column) => column.name === expandField);
24216
+ if (expandIndex < 0) {
24217
+ return views.map((column, index) => ({
24218
+ ...column,
24219
+ expandHandler: index === 0,
24220
+ width: index === 0 ? column.width ?? 'auto' : column.width,
24221
+ }));
24222
+ }
24223
+ const ordered = [...views];
24224
+ if (expandIndex > 0) {
24225
+ const [expandColumn] = ordered.splice(expandIndex, 1);
24226
+ ordered.unshift(expandColumn);
24227
+ }
24228
+ return ordered.map((column) => ({
24142
24229
  ...column,
24143
- expandHandler: index === 0,
24144
- width: index === 0 ? column.width ?? 'auto' : column.width,
24230
+ expandHandler: column.name === expandField,
24231
+ width: column.name === expandField
24232
+ ? column.width?.trim()
24233
+ ? column.width
24234
+ : 'auto'
24235
+ : column.width,
24145
24236
  }));
24146
24237
  }
24147
24238
  //#endregion
@@ -24633,7 +24724,7 @@ class AXPLookupWidgetTablePanelComponent {
24633
24724
  return Boolean(item[this.disabledField()]);
24634
24725
  }
24635
24726
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24636
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTablePanelComponent, isStandalone: true, selector: "axp-lookup-widget-table-panel", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, selectedValues: { classPropertyName: "selectedValues", publicName: "selectedValues", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: "maxVisibleItems", publicName: "maxVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, alternate: { classPropertyName: "alternate", publicName: "alternate", isSignal: true, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: "highlightText", publicName: "highlightText", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", rowAction: "rowAction" }, host: { properties: { "class.ax-lookup-multi-column-tree": "!!parentField()", "style.height.px": "tableHeight()" }, classAttribute: "ax-lookup-multi-column block min-h-0" }, viewQueries: [{ propertyName: "tableRef", first: true, predicate: AXDataTableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@for (tableSource of [activeTableDataSource()]; track tableSource) {\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n </ax-data-table>\n}\n", styles: [":host ax-data-table.ax-lookup-multi-column-table tbody tr:not(.empty-row):not(.ax-state-disabled){cursor:pointer}:host ax-data-table.ax-lookup-multi-column-table tbody tr.ax-state-disabled{cursor:not-allowed}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$6.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$6.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$6.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$5.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24727
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTablePanelComponent, isStandalone: true, selector: "axp-lookup-widget-table-panel", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, selectedValues: { classPropertyName: "selectedValues", publicName: "selectedValues", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: "maxVisibleItems", publicName: "maxVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, alternate: { classPropertyName: "alternate", publicName: "alternate", isSignal: true, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: "highlightText", publicName: "highlightText", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", rowAction: "rowAction" }, host: { properties: { "class.ax-lookup-multi-column-tree": "!!parentField()", "style.height.px": "tableHeight()" }, classAttribute: "ax-lookup-multi-column block min-h-0" }, viewQueries: [{ propertyName: "tableRef", first: true, predicate: AXDataTableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@for (tableSource of [activeTableDataSource()]; track tableSource) {\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"!!column.expandHandler\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n </ax-data-table>\n}\n", styles: [":host ax-data-table.ax-lookup-multi-column-table tbody tr:not(.empty-row):not(.ax-state-disabled){cursor:pointer}:host ax-data-table.ax-lookup-multi-column-table tbody tr.ax-state-disabled{cursor:not-allowed}:host.ax-lookup-multi-column-tree ax-data-table .ax-data-table-nested-indent{display:flex;align-items:center;min-width:0}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$6.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$6.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$6.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$5.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24637
24728
  }
24638
24729
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, decorators: [{
24639
24730
  type: Component,
@@ -24641,7 +24732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
24641
24732
  class: 'ax-lookup-multi-column block min-h-0',
24642
24733
  '[class.ax-lookup-multi-column-tree]': '!!parentField()',
24643
24734
  '[style.height.px]': 'tableHeight()',
24644
- }, template: "@for (tableSource of [activeTableDataSource()]; track tableSource) {\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n </ax-data-table>\n}\n", styles: [":host ax-data-table.ax-lookup-multi-column-table tbody tr:not(.empty-row):not(.ax-state-disabled){cursor:pointer}:host ax-data-table.ax-lookup-multi-column-table tbody tr.ax-state-disabled{cursor:not-allowed}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
24735
+ }, template: "@for (tableSource of [activeTableDataSource()]; track tableSource) {\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"!!column.expandHandler\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n </ax-data-table>\n}\n", styles: [":host ax-data-table.ax-lookup-multi-column-table tbody tr:not(.empty-row):not(.ax-state-disabled){cursor:pointer}:host ax-data-table.ax-lookup-multi-column-table tbody tr.ax-state-disabled{cursor:not-allowed}:host.ax-lookup-multi-column-tree ax-data-table .ax-data-table-nested-indent{display:flex;align-items:center;min-width:0}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
24645
24736
  }], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], selectedValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedValues", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], itemHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemHeight", required: false }] }], maxVisibleItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisibleItems", required: false }] }], alternate: [{ type: i0.Input, args: [{ isSignal: true, alias: "alternate", required: false }] }], highlightText: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightText", required: false }] }], rowActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowActions", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], rowAction: [{ type: i0.Output, args: ["rowAction"] }], tableRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXDataTableComponent), { isSignal: true }] }] } });
24646
24737
 
24647
24738
  //#region ----- Imports -----
@@ -25071,15 +25162,23 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25071
25162
  }, /* @ts-ignore */
25072
25163
  ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
25073
25164
  this.customFilter = computed(() => this.options()['filter'] ?? null, { ...(ngDevMode ? { debugName: "customFilter" } : /* istanbul ignore next */ {}), equal: isEqual });
25165
+ /** When false, an empty cascade filter does not lock the editor. Explicit `disabled` is independent. */
25166
+ this.waitForCascade = computed(() => this.options()['waitForCascade'] ?? true, /* @ts-ignore */
25167
+ ...(ngDevMode ? [{ debugName: "waitForCascade" }] : /* istanbul ignore next */ []));
25074
25168
  /** Parent cascade with an empty value. Structurally empty filters and top-level not-in stay enabled. */
25075
25169
  this.hasPendingCascadeFilter = computed(() => {
25076
- if (this.filterMode()) {
25170
+ if (this.filterMode() || !this.waitForCascade()) {
25077
25171
  return false;
25078
25172
  }
25079
25173
  return isPendingCascadeFilter(this.customFilter());
25080
25174
  }, /* @ts-ignore */
25081
25175
  ...(ngDevMode ? [{ debugName: "hasPendingCascadeFilter" }] : /* istanbul ignore next */ []));
25082
- this.isLookupDisabled = computed(() => this.isDisabled() || this.hasPendingCascadeFilter(), /* @ts-ignore */
25176
+ this.isLookupDisabled = computed(() => {
25177
+ if (this.isDisabled()) {
25178
+ return true;
25179
+ }
25180
+ return this.hasPendingCascadeFilter();
25181
+ }, /* @ts-ignore */
25083
25182
  ...(ngDevMode ? [{ debugName: "isLookupDisabled" }] : /* istanbul ignore next */ []));
25084
25183
  this.placeholder = computed(() => this.options()['placeholder'] ?? '', /* @ts-ignore */
25085
25184
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
@@ -25143,7 +25242,10 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25143
25242
  ...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
25144
25243
  this.lookupWidgetTableColumns = computed(() => {
25145
25244
  const treeMode = this.lookupMode() === 'multi-column-tree';
25146
- return resolveLookupWidgetTableColumns(this.entityDef(), this.columns(), (title, fallback) => this.mlsResolver.translateSync(title || fallback), { treeMode });
25245
+ return resolveLookupWidgetTableColumns(this.entityDef(), this.columns(), (title, fallback) => this.mlsResolver.translateSync(title || fallback), {
25246
+ treeMode,
25247
+ displayField: this.displayField(),
25248
+ });
25147
25249
  }, /* @ts-ignore */
25148
25250
  ...(ngDevMode ? [{ debugName: "lookupWidgetTableColumns" }] : /* istanbul ignore next */ []));
25149
25251
  this.lookupQueryFields = computed(() => resolveLookupQueryFields(this.entityDef(), this.columns(), [this.valueField(), this.displayField(), this.entityDef()?.parentKey, 'childrenCount']), /* @ts-ignore */
@@ -25540,6 +25642,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25540
25642
  mode: resolvedCreate.mode === 'none' ? undefined : resolvedCreate.mode,
25541
25643
  context: resolvedCreate.context,
25542
25644
  title: resolvedCreate.title,
25645
+ command: resolvedCreate.command,
25543
25646
  }
25544
25647
  : { enable: false },
25545
25648
  contextStore: this.contextService,
@@ -25693,9 +25796,9 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25693
25796
  this.isLoading.set(true);
25694
25797
  this.beginHydration();
25695
25798
  try {
25696
- const { context, title } = this.resolvedCreate();
25799
+ const { context, title, command } = this.resolvedCreate();
25697
25800
  const createData = await this.entityDataSelectorService.resolveCreateContext(context, this.contextService);
25698
- const createdItem = await this.entityDataSelectorService.executeEntityCreate(entity, mode, createData, title);
25801
+ const createdItem = await this.entityDataSelectorService.executeEntityCreate(entity, mode, createData, title, command);
25699
25802
  if (createdItem) {
25700
25803
  const valueField = this.valueField();
25701
25804
  const newId = get(createdItem, valueField);
@@ -25937,7 +26040,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
25937
26040
  this.shouldFocus.set(true);
25938
26041
  }
25939
26042
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25940
- 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", "prefetch"], 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 }); }
26043
+ 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 [disabled]=\"validation.disabled === true\"></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 [disabled]=\"validation.disabled === true\"></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", "prefetch"], 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 }); }
25941
26044
  }
25942
26045
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetEditComponent, decorators: [{
25943
26046
  type: Component,
@@ -25956,7 +26059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
25956
26059
  AXTooltipDirective,
25957
26060
  AXTranslationModule,
25958
26061
  AXValidationModule,
25959
- ], 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" }]
26062
+ ], 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 [disabled]=\"validation.disabled === true\"></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 [disabled]=\"validation.disabled === true\"></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" }]
25960
26063
  }], propDecorators: { lookup: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXLookupComponent), { isSignal: true }] }], tableLookupHost: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPLookupWidgetTableHostComponent), { isSignal: true }] }] } });
25961
26064
 
25962
26065
  var lookupWidgetEdit_component = /*#__PURE__*/Object.freeze({
@@ -27677,7 +27780,7 @@ class AXPMultiSourceSelectorWidgetEditComponent extends AXPValueWidgetComponent
27677
27780
  [rule]="validation.rule"
27678
27781
  [message]="$safeNavigationMigration(validation.options?.message)"
27679
27782
  [options]="validation.options"
27680
- ></ax-validation-rule>
27783
+ [disabled]="validation.disabled === true"></ax-validation-rule>
27681
27784
  }
27682
27785
  @if (selectedItems().length > 0 && allowClear()) {
27683
27786
  <ax-clear-button (click)="handleClearClick()"></ax-clear-button>
@@ -27734,7 +27837,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
27734
27837
  [rule]="validation.rule"
27735
27838
  [message]="$safeNavigationMigration(validation.options?.message)"
27736
27839
  [options]="validation.options"
27737
- ></ax-validation-rule>
27840
+ [disabled]="validation.disabled === true"></ax-validation-rule>
27738
27841
  }
27739
27842
  @if (selectedItems().length > 0 && allowClear()) {
27740
27843
  <ax-clear-button (click)="handleClearClick()"></ax-clear-button>
@@ -31192,11 +31295,14 @@ class AXPMainEntityContentBuilder {
31192
31295
  triggers: p.schema.interface?.triggers,
31193
31296
  valueTransforms: p.schema.interface?.valueTransforms,
31194
31297
  options: merge({}, p.schema.interface?.options, {
31195
- validations: p.validations?.map((c) => ({
31196
- rule: c.rule,
31197
- message: c.message,
31198
- options: c.options,
31199
- })),
31298
+ validations: p.validations?.map((rule) => {
31299
+ const copied = copyValidationRule(rule);
31300
+ const dataPath = p.__dataPath;
31301
+ if (!dataPath || typeof copied.disabled !== 'string') {
31302
+ return copied;
31303
+ }
31304
+ return { ...copied, disabled: prefixContextEvalPaths(copied.disabled, dataPath) };
31305
+ }),
31200
31306
  // Attach dataPath for merged properties to be available in widgets/options if needed
31201
31307
  dataPath: p.__dataPath,
31202
31308
  },
@@ -33138,7 +33244,7 @@ class AXPEntityModule {
33138
33244
  },
33139
33245
  {
33140
33246
  key: 'Entity:Bulk',
33141
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-CSfoFx99.mjs').then((c) => c.AXPBulkEntityCommand),
33247
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-DiB2ZLpg.mjs').then((c) => c.AXPBulkEntityCommand),
33142
33248
  },
33143
33249
  {
33144
33250
  key: 'Entity:OpenList',
@@ -33300,7 +33406,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
33300
33406
  },
33301
33407
  {
33302
33408
  key: 'Entity:Bulk',
33303
- command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-CSfoFx99.mjs').then((c) => c.AXPBulkEntityCommand),
33409
+ command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-DiB2ZLpg.mjs').then((c) => c.AXPBulkEntityCommand),
33304
33410
  },
33305
33411
  {
33306
33412
  key: 'Entity:OpenList',
@@ -33626,4 +33732,4 @@ function detectEntityChanges(oldObj, newObj) {
33626
33732
  */
33627
33733
 
33628
33734
  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 };
33629
- //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-RG1FLjoP.mjs.map
33735
+ //# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-o8SLSxU-.mjs.map