@acorex-platform/module-common-client 0.0.18 → 0.0.24

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 (66) hide show
  1. package/fesm2022/{acorex-platform-module-common-client-acorex-platform-module-common-client-rqWzT7RI.mjs → acorex-platform-module-common-client-acorex-platform-module-common-client-CkeshVWo.mjs} +765 -417
  2. package/fesm2022/acorex-platform-module-common-client-acorex-platform-module-common-client-CkeshVWo.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-common-client-archive-entity.command-CKENj9Od.mjs → acorex-platform-module-common-client-archive-entity.command-BZgNdxFS.mjs} +9 -13
  4. package/fesm2022/acorex-platform-module-common-client-archive-entity.command-BZgNdxFS.mjs.map +1 -0
  5. package/fesm2022/{acorex-platform-module-common-client-archive-entity.command.util-BZrXDNGP.mjs → acorex-platform-module-common-client-archive-entity.command.util-BVrK8ZGy.mjs} +52 -40
  6. package/fesm2022/acorex-platform-module-common-client-archive-entity.command.util-BVrK8ZGy.mjs.map +1 -0
  7. package/fesm2022/{acorex-platform-module-common-client-audit-info-column.component-DuZUwD31.mjs → acorex-platform-module-common-client-audit-info-column.component-CsqKKwwF.mjs} +27 -16
  8. package/fesm2022/acorex-platform-module-common-client-audit-info-column.component-CsqKKwwF.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-module-common-client-audit-info-edit.component-CSsCG6Dz.mjs → acorex-platform-module-common-client-audit-info-edit.component-COMMBgsX.mjs} +20 -18
  10. package/fesm2022/acorex-platform-module-common-client-audit-info-edit.component-COMMBgsX.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-module-common-client-audit-info-view.component-WYXsZcLg.mjs → acorex-platform-module-common-client-audit-info-view.component-UOTT-ir_.mjs} +20 -18
  12. package/fesm2022/acorex-platform-module-common-client-audit-info-view.component-UOTT-ir_.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-common-client-bulk-archive-entity.command-EIlMyuII.mjs +66 -0
  14. package/fesm2022/acorex-platform-module-common-client-bulk-archive-entity.command-EIlMyuII.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-common-client-bulk-disable-entity.command-DgoZVXQA.mjs +65 -0
  16. package/fesm2022/acorex-platform-module-common-client-bulk-disable-entity.command-DgoZVXQA.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-common-client-bulk-enable-entity.command-C6fba__g.mjs +65 -0
  18. package/fesm2022/acorex-platform-module-common-client-bulk-enable-entity.command-C6fba__g.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-common-client-bulk-restore-archive-entity.command-C8T0gUAH.mjs +65 -0
  20. package/fesm2022/acorex-platform-module-common-client-bulk-restore-archive-entity.command-C8T0gUAH.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-common-client-clone-entity.command-DFgIeWxX.mjs → acorex-platform-module-common-client-clone-entity.command-rTasIhWx.mjs} +26 -27
  22. package/fesm2022/acorex-platform-module-common-client-clone-entity.command-rTasIhWx.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-common-client-contracts.mjs +420 -8
  24. package/fesm2022/acorex-platform-module-common-client-contracts.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-module-common-client-disable-entity.command-DWyqAAwo.mjs → acorex-platform-module-common-client-disable-entity.command-Bc1uH38V.mjs} +8 -13
  26. package/fesm2022/acorex-platform-module-common-client-disable-entity.command-Bc1uH38V.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-module-common-client-disable-entity.command.util-BBwY9Q30.mjs → acorex-platform-module-common-client-disable-entity.command.util-DQl6u2nj.mjs} +49 -44
  28. package/fesm2022/acorex-platform-module-common-client-disable-entity.command.util-DQl6u2nj.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-module-common-client-enable-entity.command-BP30gOku.mjs → acorex-platform-module-common-client-enable-entity.command-DeTumWIj.mjs} +8 -13
  30. package/fesm2022/acorex-platform-module-common-client-enable-entity.command-DeTumWIj.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-module-common-client-get-current-time.command-B7hJTMzT.mjs → acorex-platform-module-common-client-get-current-time.command-Ck_SC5Bu.mjs} +6 -8
  32. package/fesm2022/acorex-platform-module-common-client-get-current-time.command-Ck_SC5Bu.mjs.map +1 -0
  33. package/fesm2022/{acorex-platform-module-common-client-restore-archive-entity.command-B0JFf8ms.mjs → acorex-platform-module-common-client-restore-archive-entity.command-Dr1GcC8a.mjs} +8 -13
  34. package/fesm2022/acorex-platform-module-common-client-restore-archive-entity.command-Dr1GcC8a.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-common-client-search-popup.component-DH0OQYoQ.mjs +139 -0
  36. package/fesm2022/acorex-platform-module-common-client-search-popup.component-DH0OQYoQ.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-common-client-timeline-version-history-popup.component-BqTLeGtG.mjs +63 -0
  38. package/fesm2022/acorex-platform-module-common-client-timeline-version-history-popup.component-BqTLeGtG.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-module-common-client.mjs +1 -1
  40. package/package.json +3 -3
  41. package/types/acorex-platform-module-common-client-contracts.d.ts +207 -3
  42. package/types/acorex-platform-module-common-client.d.ts +9 -13
  43. package/fesm2022/acorex-platform-module-common-client-acorex-platform-module-common-client-rqWzT7RI.mjs.map +0 -1
  44. package/fesm2022/acorex-platform-module-common-client-archive-entity.command-CKENj9Od.mjs.map +0 -1
  45. package/fesm2022/acorex-platform-module-common-client-archive-entity.command.util-BZrXDNGP.mjs.map +0 -1
  46. package/fesm2022/acorex-platform-module-common-client-audit-info-column.component-DuZUwD31.mjs.map +0 -1
  47. package/fesm2022/acorex-platform-module-common-client-audit-info-edit.component-CSsCG6Dz.mjs.map +0 -1
  48. package/fesm2022/acorex-platform-module-common-client-audit-info-view.component-WYXsZcLg.mjs.map +0 -1
  49. package/fesm2022/acorex-platform-module-common-client-bulk-archive-entity.command-CPqLp9Ci.mjs +0 -75
  50. package/fesm2022/acorex-platform-module-common-client-bulk-archive-entity.command-CPqLp9Ci.mjs.map +0 -1
  51. package/fesm2022/acorex-platform-module-common-client-bulk-disable-entity.command-0J4vgsFL.mjs +0 -75
  52. package/fesm2022/acorex-platform-module-common-client-bulk-disable-entity.command-0J4vgsFL.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-module-common-client-bulk-enable-entity.command-DsVuaInC.mjs +0 -75
  54. package/fesm2022/acorex-platform-module-common-client-bulk-enable-entity.command-DsVuaInC.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-module-common-client-bulk-restore-archive-entity.command-D2y8h15u.mjs +0 -75
  56. package/fesm2022/acorex-platform-module-common-client-bulk-restore-archive-entity.command-D2y8h15u.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-module-common-client-clone-entity.command-DFgIeWxX.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-module-common-client-disable-entity.command-DWyqAAwo.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-module-common-client-disable-entity.command.util-BBwY9Q30.mjs.map +0 -1
  60. package/fesm2022/acorex-platform-module-common-client-enable-entity.command-BP30gOku.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-module-common-client-get-current-time.command-B7hJTMzT.mjs.map +0 -1
  62. package/fesm2022/acorex-platform-module-common-client-restore-archive-entity.command-B0JFf8ms.mjs.map +0 -1
  63. package/fesm2022/acorex-platform-module-common-client-search-popup.component-BjGrZHnB.mjs +0 -136
  64. package/fesm2022/acorex-platform-module-common-client-search-popup.component-BjGrZHnB.mjs.map +0 -1
  65. package/fesm2022/acorex-platform-module-common-client-timeline-version-history-popup.component-BwGLuNhW.mjs +0 -59
  66. package/fesm2022/acorex-platform-module-common-client-timeline-version-history-popup.component-BwGLuNhW.mjs.map +0 -1
@@ -1,16 +1,18 @@
1
- import { AXPVersioningService, AXVChangeType, AXPSettingsService, AXPCommonSettings, AXPRefreshEvent, AXPLockService, AXPStatusDefinitionProviderService, AXPHomePageService, ALL_DEFAULT_OPERATORS, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_STATUS_PROVIDERS, AXPTabNavigationService, AXPSearchService } from '@acorex-platform/framework-client/common';
1
+ import { AXP_PERMISSION_DEFINITION_PROVIDER, AXPSessionService, AXP_PERMISSION_MODULES_RESOLVER } from '@acorex-platform/framework-client/auth';
2
+ import { AXPVersioningService, AXVChangeType, AXPSettingsService, AXPCommonSettings, AXPLockService, AXPStatusDefinitionProviderService, platformErrorI18nKey, AXPHomePageService, ALL_DEFAULT_OPERATORS, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_STATUS_PROVIDERS, AXPTabNavigationService, AXPSearchService } from '@acorex-platform/framework-client/common';
2
3
  import * as i1$3 from '@acorex-platform/framework-client/core';
3
- import { AXPCatalogScopeDefinitionProviderService, AXPCatalogScopeDefinitionsDataSourceDefinition, AXP_DATASOURCE_DEFINITION_PROVIDER, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXPBroadcastEventService, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXPKeyboardShortcutRegistry, chordToKbdItemKeys, AXPComponentSlotModule } from '@acorex-platform/framework-client/core';
4
- import { provideCommandSetups, provideCommandMiddleware, AXPCommandExecutor } from '@acorex-platform/framework-client/runtime';
5
- import { RootConfig, AXPCommonCommandKeys, AXPCommonMenuKeys, AXPCommonFeatureKeys, COMMON_CATALOG_SCOPE_GENERAL } from '@acorex-platform/module-common-client/contracts';
4
+ import { AXPCatalogScopeDefinitionProviderService, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXPEntityBroadcastService, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXPKeyboardShortcutRegistry, chordToKbdItemKeys, AXPComponentSlotModule } from '@acorex-platform/framework-client/core';
5
+ import { provideCommandSetups, AXPQueryService, provideCommandMiddleware, AXPCommandExecutor } from '@acorex-platform/framework-client/runtime';
6
+ import { RootConfig, AXPCommonCommandKeys, AXPCommonMenuKeys, AXPCommonFeatureKeys, COMMON_CATALOG_SCOPE_GENERAL, resolvePermissionModules } from '@acorex-platform/module-common-client/contracts';
6
7
  import { AXPWidgetsModule } from '@acorex-platform/framework-client/layout/widgets';
7
8
  import * as i0 from '@angular/core';
8
9
  import { NgModule, InjectionToken, inject, Injectable, input, signal, computed, Injector, ChangeDetectionStrategy, Component, runInInjectionContext, ViewEncapsulation, DestroyRef } from '@angular/core';
9
- import { ensureListActions, actionExists, AXP_ENTITY_ACTION_PLUGIN, resolveEntityPluginDetailPageOrder, cloneLayoutArrays, ensureLayoutSection, ensureLayoutPropertyView, AXPEntityStorageService, AXPEntityDefinitionRegistryService, AXP_APPEARANCE_SECTION_ORDER, AXP_CLASSIFICATION_SECTION_ORDER, AXMEntityCrudServiceImpl, AXP_ENTITY_DEFINITION_LOADER, AXPMiddlewareAbortError, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_ENTITY_STORAGE_BACKEND, AXPEntityService, AXPMultiSourceType, AXP_MULTI_SOURCE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/entity';
10
- import { AXPEntityCommandScope, createQueryView, createAllQueryView, entityMasterCrudActions, entityMasterDeleteAction, AXPEntityQueryType, AXPEntityEventsKeys } from '@acorex-platform/framework-shared/entity';
11
- import { AXPWidgetsList, AXPSystemActionType, AXPWidgetsCatalog, AXPPlatformCoreDataSourceKeys, getSmart, AXPStatusProvider, AXPSystemStatuses, AXPSystemStatusType, formatAddressData, AXPKeyboardShortcutPriority, AXPPlatformScope } from '@acorex-platform/framework-shared/core';
10
+ import { ensureListActions, actionExists, AXP_ENTITY_ACTION_PLUGIN, resolveEntityPluginDetailPageOrder, cloneLayoutArrays, ensureLayoutSection, ensureLayoutPropertyView, AXPEntityDefinitionRegistryService, AXP_APPEARANCE_SECTION_ORDER, AXP_CLASSIFICATION_SECTION_ORDER, AXMEntityCrudServiceImpl, AXP_ENTITY_DEFINITION_LOADER, AXPMiddlewareAbortError, AXP_ENTITY_STORAGE_MIDDLEWARE, AXPEntityService, AXPMultiSourceType, AXP_MULTI_SOURCE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/entity';
11
+ import { AXPEntityCommandScope, createQueryView, createAllQueryView, entityMasterCrudActions, entityMasterDeleteAction, AXPEntityQueryType } from '@acorex-platform/framework-shared/entity';
12
+ import { AXPWidgetsList, runtimeQueryPayloadData, runtimeQueryCollectionData, resolveMultiLanguageString, AXPSystemActionType, AXPWidgetsCatalog, getSmart, AXPStatusProvider, AXPSystemStatuses, AXPSystemStatusType, formatAddressData, AXPKeyboardShortcutPriority, AXPPlatformScope } from '@acorex-platform/framework-shared/core';
12
13
  import { AXP_PAGE_COMPONENT_PROVIDER, AXPActivityLogComponent, AXPCompareViewComponent, AXPThemeLayoutBlockComponent, AXPResourceAppointmentComponent } from '@acorex-platform/framework-client/layout/components';
13
14
  import { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetRegistryService } from '@acorex-platform/framework-client/layout/widget-core';
15
+ import { pickInputOrOptionsField, ENTITY_GET_BY_ID_DEFAULT, ENTITY_QUERY_DEFAULT, resolveEntityActionCommandInput, entityActionDataRows, resolveEntityActionRef, ENTITY_INSERT_DEFAULT, ENTITY_UPDATE_DEFAULT, ENTITY_DELETE_DEFAULT, AUTH_SIGN_IN_DEFAULT, AUTH_REGISTER_DEFAULT, AUTH_UPDATE_SESSION_DEFAULT, AUTH_REFRESH_DEFAULT, AUTH_LOGOUT_DEFAULT } from '@acorex-platform/framework-shared/runtime';
14
16
  import { AXPopupService } from '@acorex/components/popup';
15
17
  import * as i4 from '@acorex/core/translation';
16
18
  import { AXTranslationService, AXTranslationModule, createMultiLanguageString } from '@acorex/core/translation';
@@ -21,7 +23,6 @@ import { AXDecoratorModule } from '@acorex/components/decorators';
21
23
  import { AXLoadingModule } from '@acorex/components/loading';
22
24
  import { AXPPageLayoutBaseComponent, AXPPageLayoutBase, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';
23
25
  import { isNumber, isString, get, orderBy, castArray, isArray, set, unset, isEmpty } from 'lodash';
24
- import { AXP_PERMISSION_DEFINITION_PROVIDER, AXPSessionService } from '@acorex-platform/framework-client/auth';
25
26
  import * as i1$1 from '@angular/common';
26
27
  import { CommonModule, AsyncPipe } from '@angular/common';
27
28
  import * as i2 from '@acorex/components/button';
@@ -30,12 +31,12 @@ import { AXBasePageComponent } from '@acorex/components/page';
30
31
  import { AXFormatService } from '@acorex/core/format';
31
32
  import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
32
33
  import { AXToastService } from '@acorex/components/toast';
33
- import { AXPWorkflowEventService } from '@acorex-platform/framework-client/workflow';
34
34
  import { AXDialogService } from '@acorex/components/dialog';
35
35
  import * as i1$2 from '@acorex/core/validation';
36
36
  import { AXValidationModule } from '@acorex/core/validation';
37
37
  import { AXCalendarService } from '@acorex/core/date-time';
38
38
  import { firstValueFrom, Subject } from 'rxjs';
39
+ import { AXPVersionHistorySettings, AXP_VERSION_HISTORY_SETTING_DEFAULTS } from '@acorex-platform/module-common-client/contracts';
39
40
  import { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';
40
41
 
41
42
  //#region ---- Imports ----
@@ -51,6 +52,8 @@ const CommonManifest = {
51
52
  title: RootConfig.module.title,
52
53
  icon: RootConfig.module.icon,
53
54
  i18n: RootConfig.config.i18n,
55
+ type: 'platform',
56
+ domain: 'platform',
54
57
  required: true,
55
58
  // Module dependencies (optional)
56
59
  };
@@ -256,31 +259,31 @@ const archivePlugin = {
256
259
  };
257
260
 
258
261
  class AXPArchivePluginModule {
259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPArchivePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
260
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPArchivePluginModule }); }
261
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPArchivePluginModule, providers: [
262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPArchivePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
263
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPArchivePluginModule }); }
264
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPArchivePluginModule, providers: [
262
265
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: archivePlugin },
263
266
  provideCommandSetups([
264
267
  {
265
268
  key: AXPCommonCommandKeys.Archive.Archive,
266
- command: () => import('./acorex-platform-module-common-client-archive-entity.command-CKENj9Od.mjs').then((m) => m.AXPArchiveEntityCommand),
269
+ command: () => import('./acorex-platform-module-common-client-archive-entity.command-BZgNdxFS.mjs').then((m) => m.AXPArchiveEntityCommand),
267
270
  },
268
271
  {
269
272
  key: AXPCommonCommandKeys.Archive.Restore,
270
- command: () => import('./acorex-platform-module-common-client-restore-archive-entity.command-B0JFf8ms.mjs').then((m) => m.AXPRestoreArchiveEntityCommand),
273
+ command: () => import('./acorex-platform-module-common-client-restore-archive-entity.command-Dr1GcC8a.mjs').then((m) => m.AXPRestoreArchiveEntityCommand),
271
274
  },
272
275
  {
273
276
  key: AXPCommonCommandKeys.Archive.BulkArchive,
274
- command: () => import('./acorex-platform-module-common-client-bulk-archive-entity.command-CPqLp9Ci.mjs').then((m) => m.AXPBulkArchiveEntityCommand),
277
+ command: () => import('./acorex-platform-module-common-client-bulk-archive-entity.command-EIlMyuII.mjs').then((m) => m.AXPBulkArchiveEntityCommand),
275
278
  },
276
279
  {
277
280
  key: AXPCommonCommandKeys.Archive.BulkRestore,
278
- command: () => import('./acorex-platform-module-common-client-bulk-restore-archive-entity.command-D2y8h15u.mjs').then((m) => m.AXPBulkRestoreArchiveEntityCommand),
281
+ command: () => import('./acorex-platform-module-common-client-bulk-restore-archive-entity.command-C8T0gUAH.mjs').then((m) => m.AXPBulkRestoreArchiveEntityCommand),
279
282
  },
280
283
  ]),
281
284
  ] }); }
282
285
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPArchivePluginModule, decorators: [{
286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPArchivePluginModule, decorators: [{
284
287
  type: NgModule,
285
288
  args: [{
286
289
  providers: [
@@ -288,19 +291,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
288
291
  provideCommandSetups([
289
292
  {
290
293
  key: AXPCommonCommandKeys.Archive.Archive,
291
- command: () => import('./acorex-platform-module-common-client-archive-entity.command-CKENj9Od.mjs').then((m) => m.AXPArchiveEntityCommand),
294
+ command: () => import('./acorex-platform-module-common-client-archive-entity.command-BZgNdxFS.mjs').then((m) => m.AXPArchiveEntityCommand),
292
295
  },
293
296
  {
294
297
  key: AXPCommonCommandKeys.Archive.Restore,
295
- command: () => import('./acorex-platform-module-common-client-restore-archive-entity.command-B0JFf8ms.mjs').then((m) => m.AXPRestoreArchiveEntityCommand),
298
+ command: () => import('./acorex-platform-module-common-client-restore-archive-entity.command-Dr1GcC8a.mjs').then((m) => m.AXPRestoreArchiveEntityCommand),
296
299
  },
297
300
  {
298
301
  key: AXPCommonCommandKeys.Archive.BulkArchive,
299
- command: () => import('./acorex-platform-module-common-client-bulk-archive-entity.command-CPqLp9Ci.mjs').then((m) => m.AXPBulkArchiveEntityCommand),
302
+ command: () => import('./acorex-platform-module-common-client-bulk-archive-entity.command-EIlMyuII.mjs').then((m) => m.AXPBulkArchiveEntityCommand),
300
303
  },
301
304
  {
302
305
  key: AXPCommonCommandKeys.Archive.BulkRestore,
303
- command: () => import('./acorex-platform-module-common-client-bulk-restore-archive-entity.command-D2y8h15u.mjs').then((m) => m.AXPBulkRestoreArchiveEntityCommand),
306
+ command: () => import('./acorex-platform-module-common-client-bulk-restore-archive-entity.command-C8T0gUAH.mjs').then((m) => m.AXPBulkRestoreArchiveEntityCommand),
304
307
  },
305
308
  ]),
306
309
  ],
@@ -501,7 +504,6 @@ const historyPlugin = {
501
504
 
502
505
  /**
503
506
  * Opens the version history timeline popup for a given entity reference.
504
- * Opens the version history popup for an entity record.
505
507
  */
506
508
  class ShowVersionHistoryPopupCommand {
507
509
  constructor() {
@@ -518,7 +520,7 @@ class ShowVersionHistoryPopupCommand {
518
520
  },
519
521
  };
520
522
  }
521
- const comp = (await import('./acorex-platform-module-common-client-timeline-version-history-popup.component-BwGLuNhW.mjs')).AXMTimelineVersionHistoryPopupComponent;
523
+ const comp = (await import('./acorex-platform-module-common-client-timeline-version-history-popup.component-BqTLeGtG.mjs')).AXMTimelineVersionHistoryPopupComponent;
522
524
  this.popupService.open(comp, {
523
525
  title: await this.translate.translateAsync('@activity-log:actions.view-history.title'),
524
526
  data: {
@@ -531,25 +533,23 @@ class ShowVersionHistoryPopupCommand {
531
533
  offset: opts.offset,
532
534
  },
533
535
  });
534
- return { success: true };
536
+ return { success: true, kind: 'object', data: undefined };
535
537
  }
536
538
  normalizeInput(input) {
537
- const ctx = input.__context__;
538
- const options = input.options ?? ctx?.options ?? {};
539
539
  return {
540
- refId: input.refId ?? options.refId,
541
- refType: input.refType ?? options.refType,
542
- fieldTitles: input.fieldTitles ?? options.fieldTitles,
543
- fromDate: input.fromDate ?? options.fromDate,
544
- toDate: input.toDate ?? options.toDate,
545
- limit: input.limit ?? options.limit,
546
- offset: input.offset ?? options.offset,
540
+ refId: pickInputOrOptionsField(input, 'refId'),
541
+ refType: pickInputOrOptionsField(input, 'refType'),
542
+ fieldTitles: pickInputOrOptionsField(input, 'fieldTitles'),
543
+ fromDate: pickInputOrOptionsField(input, 'fromDate'),
544
+ toDate: pickInputOrOptionsField(input, 'toDate'),
545
+ limit: pickInputOrOptionsField(input, 'limit'),
546
+ offset: pickInputOrOptionsField(input, 'offset'),
547
547
  };
548
548
  }
549
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ShowVersionHistoryPopupCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
550
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ShowVersionHistoryPopupCommand, providedIn: 'root' }); }
549
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ShowVersionHistoryPopupCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
550
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ShowVersionHistoryPopupCommand, providedIn: 'root' }); }
551
551
  }
552
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ShowVersionHistoryPopupCommand, decorators: [{
552
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ShowVersionHistoryPopupCommand, decorators: [{
553
553
  type: Injectable,
554
554
  args: [{ providedIn: 'root' }]
555
555
  }] });
@@ -569,10 +569,10 @@ class AXMVersionHistoryPageComponentProvider {
569
569
  },
570
570
  ];
571
571
  }
572
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMVersionHistoryPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
573
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMVersionHistoryPageComponentProvider }); }
572
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMVersionHistoryPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
573
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMVersionHistoryPageComponentProvider }); }
574
574
  }
575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMVersionHistoryPageComponentProvider, decorators: [{
575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMVersionHistoryPageComponentProvider, decorators: [{
576
576
  type: Injectable
577
577
  }] });
578
578
 
@@ -586,13 +586,13 @@ const AXPHistoryAuditInfoWidget = {
586
586
  properties: [],
587
587
  components: {
588
588
  view: {
589
- component: () => import('./acorex-platform-module-common-client-audit-info-view.component-WYXsZcLg.mjs').then((c) => c.AXPAuditInfoViewComponent),
589
+ component: () => import('./acorex-platform-module-common-client-audit-info-view.component-UOTT-ir_.mjs').then((c) => c.AXPAuditInfoViewComponent),
590
590
  },
591
591
  edit: {
592
- component: () => import('./acorex-platform-module-common-client-audit-info-edit.component-CSsCG6Dz.mjs').then((c) => c.AXPAuditInfoEditComponent),
592
+ component: () => import('./acorex-platform-module-common-client-audit-info-edit.component-COMMBgsX.mjs').then((c) => c.AXPAuditInfoEditComponent),
593
593
  },
594
594
  column: {
595
- component: () => import('./acorex-platform-module-common-client-audit-info-column.component-DuZUwD31.mjs').then((c) => c.AXPAuditInfoColumnComponent),
595
+ component: () => import('./acorex-platform-module-common-client-audit-info-column.component-CsqKKwwF.mjs').then((c) => c.AXPAuditInfoColumnComponent),
596
596
  },
597
597
  },
598
598
  };
@@ -603,10 +603,10 @@ class AXPAuditInfoWidgetsProvider {
603
603
  getWidgets() {
604
604
  return [AXPHistoryAuditInfoWidget];
605
605
  }
606
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAuditInfoWidgetsProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
607
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAuditInfoWidgetsProvider }); }
606
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAuditInfoWidgetsProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
607
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAuditInfoWidgetsProvider }); }
608
608
  }
609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAuditInfoWidgetsProvider, decorators: [{
609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAuditInfoWidgetsProvider, decorators: [{
610
610
  type: Injectable
611
611
  }] });
612
612
 
@@ -614,15 +614,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
614
614
  const VERSION_STREAM_ENTITY = 'Common.VersionStream';
615
615
  /** Must match {@link VERSION_ENTRY_ENTITY} on the server. */
616
616
  const VERSION_ENTRY_ENTITY = 'Common.VersionEntry';
617
+ const USER_ENTITY = 'SecurityManagement.User';
618
+ //#region ----- Client versioning service -----
617
619
  class AXPClientVersioningService extends AXPVersioningService {
618
620
  constructor() {
619
621
  super(...arguments);
620
- this.storage = inject(AXPEntityStorageService);
622
+ this.queryService = inject(AXPQueryService);
623
+ this.translation = inject(AXTranslationService);
621
624
  }
622
625
  async getStreamIdIfExists(entityType, entityId) {
623
626
  const id = `${entityType}:${entityId}`;
624
627
  try {
625
- await this.storage.getOne(VERSION_STREAM_ENTITY, id);
628
+ const result = await this.queryService.fetch(ENTITY_GET_BY_ID_DEFAULT, {
629
+ entity: VERSION_STREAM_ENTITY,
630
+ id,
631
+ });
632
+ if (runtimeQueryPayloadData(result) == null) {
633
+ return null;
634
+ }
626
635
  return id;
627
636
  }
628
637
  catch {
@@ -630,7 +639,8 @@ class AXPClientVersioningService extends AXPVersioningService {
630
639
  }
631
640
  }
632
641
  async listEntries(streamId, options) {
633
- const result = await this.storage.query(VERSION_ENTRY_ENTITY, {
642
+ const result = await this.queryService.fetch(ENTITY_QUERY_DEFAULT, {
643
+ entity: VERSION_ENTRY_ENTITY,
634
644
  skip: options?.offset ?? 0,
635
645
  take: options?.limit ?? 50,
636
646
  filter: {
@@ -640,7 +650,10 @@ class AXPClientVersioningService extends AXPVersioningService {
640
650
  },
641
651
  sort: [{ field: 'versionNumber', dir: 'desc' }],
642
652
  });
643
- return (result.items ?? []).map((item) => this.mapEntry(item));
653
+ const items = (runtimeQueryCollectionData(result)?.items ?? []);
654
+ const entries = items.map((item) => this.mapEntry(item));
655
+ // New writes carry changedByName. Legacy rows may still need a one-shot user lookup.
656
+ return this.fillMissingChangedByNames(entries);
644
657
  }
645
658
  async getUiFriendlyDiff(_streamId, _v1, _v2) {
646
659
  return [];
@@ -652,24 +665,111 @@ class AXPClientVersioningService extends AXPVersioningService {
652
665
  versionNumber: Number(item['versionNumber'] ?? 0),
653
666
  changeType: item['changeType'] ?? AXVChangeType.Update,
654
667
  changedBy: String(item['changedBy'] ?? 'system'),
668
+ changedByName: typeof item['changedByName'] === 'string' && item['changedByName'].trim()
669
+ ? item['changedByName'].trim()
670
+ : undefined,
655
671
  changedAt: String(item['changedAt'] ?? new Date().toISOString()),
656
672
  snapshotJson: item['snapshotJson'],
657
673
  patchFromPrevJson: item['patchFromPrevJson'] ?? [],
658
- summary: item['summary'] != null ? String(item['summary']) : undefined,
674
+ summary: this.resolveSummary(item['summary']),
675
+ changeLines: this.mapChangeLines(item['changeLines']),
659
676
  metadataJson: item['metadataJson'],
660
677
  };
661
678
  }
662
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClientVersioningService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
663
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClientVersioningService }); }
679
+ /**
680
+ * `undefined` = legacy entry (build from patch).
681
+ * `[]` = intentional empty sub-rows (Create/Delete).
682
+ */
683
+ mapChangeLines(raw) {
684
+ if (!Array.isArray(raw)) {
685
+ return undefined;
686
+ }
687
+ return raw
688
+ .map((line) => {
689
+ if (!line || typeof line !== 'object') {
690
+ return null;
691
+ }
692
+ const row = line;
693
+ const path = typeof row['path'] === 'string' ? row['path'] : '';
694
+ const field = row['field'];
695
+ const text = row['text'];
696
+ if (!path || field == null || text == null) {
697
+ return null;
698
+ }
699
+ return {
700
+ path,
701
+ field: field,
702
+ text: text,
703
+ };
704
+ })
705
+ .filter((line) => !!line);
706
+ }
707
+ resolveSummary(raw) {
708
+ if (raw == null) {
709
+ return undefined;
710
+ }
711
+ if (typeof raw === 'string') {
712
+ return raw;
713
+ }
714
+ if (typeof raw === 'object') {
715
+ const locale = this.translation.getActiveLang?.() ?? 'en-US';
716
+ const resolved = resolveMultiLanguageString(raw, locale);
717
+ return resolved || undefined;
718
+ }
719
+ return String(raw);
720
+ }
721
+ /** Only for legacy entries missing server-stamped `changedByName`. */
722
+ async fillMissingChangedByNames(entries) {
723
+ const missingIds = [
724
+ ...new Set(entries
725
+ .filter((entry) => !entry.changedByName && entry.changedBy && entry.changedBy !== 'system')
726
+ .map((entry) => entry.changedBy)),
727
+ ];
728
+ if (!missingIds.length) {
729
+ return entries;
730
+ }
731
+ const names = new Map();
732
+ try {
733
+ const result = await this.queryService.fetch(ENTITY_QUERY_DEFAULT, {
734
+ entity: USER_ENTITY,
735
+ skip: 0,
736
+ take: missingIds.length,
737
+ filter: {
738
+ field: 'id',
739
+ operator: { type: 'in' },
740
+ value: missingIds,
741
+ },
742
+ });
743
+ const items = (runtimeQueryCollectionData(result)?.items ?? []);
744
+ for (const item of items) {
745
+ const id = String(item['id'] ?? '');
746
+ if (!id) {
747
+ continue;
748
+ }
749
+ const display = (typeof item['displayName'] === 'string' && item['displayName'].trim()) ||
750
+ (typeof item['username'] === 'string' && item['username'].trim()) ||
751
+ id;
752
+ names.set(id, display);
753
+ }
754
+ }
755
+ catch {
756
+ return entries;
757
+ }
758
+ return entries.map((entry) => entry.changedByName || !names.has(entry.changedBy)
759
+ ? entry
760
+ : { ...entry, changedByName: names.get(entry.changedBy) });
761
+ }
762
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPClientVersioningService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
763
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPClientVersioningService }); }
664
764
  }
665
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClientVersioningService, decorators: [{
765
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPClientVersioningService, decorators: [{
666
766
  type: Injectable
667
767
  }] });
668
768
 
669
769
  class AXPHistoryModule {
670
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHistoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
671
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPHistoryModule }); }
672
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHistoryModule, providers: [
770
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPHistoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
771
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPHistoryModule }); }
772
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPHistoryModule, providers: [
673
773
  { provide: AXPVersioningService, useClass: AXPClientVersioningService },
674
774
  { provide: AXP_PAGE_COMPONENT_PROVIDER, multi: true, useClass: AXMVersionHistoryPageComponentProvider },
675
775
  { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXPAuditInfoWidgetsProvider, multi: true },
@@ -687,7 +787,7 @@ class AXPHistoryModule {
687
787
  ]),
688
788
  ] }); }
689
789
  }
690
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHistoryModule, decorators: [{
790
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPHistoryModule, decorators: [{
691
791
  type: NgModule,
692
792
  args: [{
693
793
  imports: [],
@@ -800,6 +900,7 @@ async function openActivityLogVersionCompare(injector, event) {
800
900
 
801
901
  //#region ---- Version History Utils ----
802
902
  const ACTIVITY_LOG_CHANGES_SCOPE = '@activity-log:changes';
903
+ const LOOKUP_DISPLAY_KEYS = ['title', 'name', 'displayName', 'label', 'fullName', 'code'];
803
904
  /** Removes field names from summary to avoid repetition (e.g. "Fields changed: 3 (title, desc)" → "Fields changed: 3"). */
804
905
  function stripFieldNamesFromSummary(summary) {
805
906
  return summary.replace(/Fields changed:\s*(\d+)\s*\([^)]+\)/g, 'Fields changed: $1');
@@ -908,9 +1009,47 @@ function humanizeChange(path, op, fieldTitles) {
908
1009
  return `${fieldLabel}: updated`;
909
1010
  }
910
1011
  }
911
- const MAX_SUMMARY_VALUE_LENGTH = 40;
1012
+ const MAX_SUMMARY_VALUE_LENGTH = 48;
1013
+ function isPlainObject(value) {
1014
+ return !!value && typeof value === 'object' && !Array.isArray(value);
1015
+ }
1016
+ function formatObjectDisplay(value, locale) {
1017
+ for (const key of LOOKUP_DISPLAY_KEYS) {
1018
+ const raw = value[key];
1019
+ if (raw == null) {
1020
+ continue;
1021
+ }
1022
+ if (typeof raw === 'string' || typeof raw === 'number' || typeof raw === 'boolean') {
1023
+ const text = String(raw).trim();
1024
+ if (text && text !== '[object Object]') {
1025
+ return text;
1026
+ }
1027
+ continue;
1028
+ }
1029
+ if (isPlainObject(raw)) {
1030
+ const mls = resolveMultiLanguageString(raw, locale);
1031
+ if (mls && mls !== '[object Object]') {
1032
+ return mls;
1033
+ }
1034
+ }
1035
+ }
1036
+ const asMls = resolveMultiLanguageString(value, locale);
1037
+ if (asMls && asMls !== '[object Object]') {
1038
+ return asMls;
1039
+ }
1040
+ return undefined;
1041
+ }
912
1042
  /** Converts a value to a short display string for notification-style summary. */
913
- function toShortDisplayString(val) {
1043
+ function toShortDisplayString(val, meta, side, locale = 'en-US') {
1044
+ if (side === 'old' && typeof meta?.['displayOld'] === 'string' && meta['displayOld'].trim()) {
1045
+ return trimDisplay(meta['displayOld']);
1046
+ }
1047
+ if (side === 'new' && typeof meta?.['displayNew'] === 'string' && meta['displayNew'].trim()) {
1048
+ return trimDisplay(meta['displayNew']);
1049
+ }
1050
+ if (typeof meta?.['fileName'] === 'string' && meta['fileName'].trim()) {
1051
+ return trimDisplay(meta['fileName']);
1052
+ }
914
1053
  if (val == null)
915
1054
  return '—';
916
1055
  if (typeof val === 'boolean')
@@ -918,71 +1057,141 @@ function toShortDisplayString(val) {
918
1057
  if (typeof val === 'number')
919
1058
  return String(val);
920
1059
  if (val instanceof Date)
921
- return val.toLocaleString();
922
- if (typeof val === 'object' && 'title' in val)
923
- return String(val.title);
924
- if (typeof val === 'object' && 'label' in val)
925
- return String(val.label);
926
- const str = String(val);
927
- if (str.length > MAX_SUMMARY_VALUE_LENGTH)
928
- return str.slice(0, MAX_SUMMARY_VALUE_LENGTH) + '…';
929
- return str;
1060
+ return val.toISOString();
1061
+ if (typeof val === 'string') {
1062
+ if (!val.trim() || val === '[object Object]')
1063
+ return '—';
1064
+ return trimDisplay(val);
1065
+ }
1066
+ if (Array.isArray(val)) {
1067
+ if (val.length === 0)
1068
+ return '—';
1069
+ const parts = val
1070
+ .map((item) => toShortDisplayString(item, null, undefined, locale))
1071
+ .filter((part) => part && part !== '—');
1072
+ return parts.length ? trimDisplay(parts.join(', ')) : '—';
1073
+ }
1074
+ if (isPlainObject(val)) {
1075
+ const formatted = formatObjectDisplay(val, locale);
1076
+ if (formatted) {
1077
+ return trimDisplay(formatted);
1078
+ }
1079
+ }
1080
+ return '—';
1081
+ }
1082
+ function trimDisplay(value) {
1083
+ if (value.length > MAX_SUMMARY_VALUE_LENGTH) {
1084
+ return `${value.slice(0, MAX_SUMMARY_VALUE_LENGTH)}…`;
1085
+ }
1086
+ return value;
930
1087
  }
931
1088
  /** Builds a short, human-readable notification-style summary for a change. */
932
- function buildChangeSummary(op, oldVal, newVal) {
933
- const oldStr = toShortDisplayString(oldVal);
934
- const newStr = toShortDisplayString(newVal);
1089
+ function buildChangeSummary(op, oldVal, newVal, meta, locale = 'en-US') {
1090
+ const oldStr = toShortDisplayString(oldVal, meta, 'old', locale);
1091
+ const newStr = toShortDisplayString(newVal, meta, 'new', locale);
935
1092
  switch (op) {
936
1093
  case 'add':
937
- return newStr !== '—' ? `Added: ${newStr}` : 'Added';
1094
+ return newStr !== '—' ? `Added ${newStr}` : 'Added';
938
1095
  case 'remove':
939
- return oldStr !== '—' ? `Removed: ${oldStr}` : 'Removed';
1096
+ return oldStr !== '—' ? `Removed ${oldStr}` : 'Removed';
940
1097
  case 'replace':
941
1098
  if (oldStr !== '—' && newStr !== '—')
942
1099
  return `${oldStr} → ${newStr}`;
943
1100
  if (newStr !== '—')
944
- return `Updated to: ${newStr}`;
1101
+ return `Updated to ${newStr}`;
945
1102
  if (oldStr !== '—')
946
- return `Cleared (was: ${oldStr})`;
1103
+ return `Cleared (was ${oldStr})`;
947
1104
  return 'Updated';
948
1105
  default:
949
- return newStr !== '—' ? `Updated: ${newStr}` : 'Updated';
1106
+ return newStr !== '—' ? `Updated ${newStr}` : 'Updated';
1107
+ }
1108
+ }
1109
+ function resolveActivityUser(entry) {
1110
+ const id = (entry.changedBy || 'system').trim() || 'system';
1111
+ if (id === 'system') {
1112
+ return { id: 'system', name: 'System', title: 'System' };
950
1113
  }
1114
+ const name = (entry.changedByName || id).trim() || id;
1115
+ return { id, name, title: name };
951
1116
  }
952
- function versionEntriesToActivityLogs(entries, refId, refType, fieldTitles, getHistoryLayout) {
1117
+ function resolveMls(value, locale) {
1118
+ if (typeof value === 'string') {
1119
+ return value;
1120
+ }
1121
+ return resolveMultiLanguageString(value, locale) || '';
1122
+ }
1123
+ function mapServerChangeLines(lines, getHistoryLayout, locale) {
1124
+ return lines.slice(0, 20).map((line) => {
1125
+ const pathStr = line.path;
1126
+ const layout = getHistoryLayout?.(pathStr);
1127
+ const fieldLabel = resolveMls(line.field, locale);
1128
+ const summary = resolveMls(line.text, locale);
1129
+ return {
1130
+ type: AXPSystemActionType.Update,
1131
+ description: summary || fieldLabel,
1132
+ fieldLabel: fieldLabel || undefined,
1133
+ summary: summary || undefined,
1134
+ ...(layout != null && { layout }),
1135
+ };
1136
+ });
1137
+ }
1138
+ /** Legacy fallback when older entries have no stamped changeLines. */
1139
+ function mapPatchChanges(rawChanges, fieldTitles, getHistoryLayout, locale) {
1140
+ const seenFields = new Set();
1141
+ const changes = [];
1142
+ for (const c of rawChanges.slice(0, 20)) {
1143
+ const { fieldKey, actionKey, fieldKeyParams } = humanizeChangeToKeys(c.path, c.op, fieldTitles);
1144
+ const pathStr = typeof c.path === 'string' ? c.path : String(c.path ?? '');
1145
+ const dedupeKey = `${pathStr}|${c.op}|${JSON.stringify(c.newValue ?? c.oldValue ?? null)}`;
1146
+ if (seenFields.has(dedupeKey))
1147
+ continue;
1148
+ seenFields.add(dedupeKey);
1149
+ const layout = getHistoryLayout?.(pathStr);
1150
+ const summary = buildChangeSummary(c.op, c.oldValue, c.newValue, c.meta, locale);
1151
+ const fallbackDesc = `${humanizeKeyAsFallback(resolvePathKey(c.path))}: ${c.op}`;
1152
+ const fieldLabel = (fieldKeyParams?.['name']
1153
+ ? humanizeKeyAsFallback(fieldKeyParams['name'])
1154
+ : undefined) ||
1155
+ (fieldTitles?.[toCamelCase$2(resolvePathKey(c.path))] ??
1156
+ fieldTitles?.[resolvePathKey(c.path)] ??
1157
+ humanizeKeyAsFallback(resolvePathKey(c.path)));
1158
+ changes.push({
1159
+ type: mapOpToAction(c.op),
1160
+ description: fallbackDesc,
1161
+ fieldKey,
1162
+ fieldKeyParams,
1163
+ actionKey,
1164
+ fieldLabel,
1165
+ oldValue: c.oldValue,
1166
+ newValue: c.newValue,
1167
+ summary,
1168
+ ...(layout != null && { layout }),
1169
+ });
1170
+ }
1171
+ return changes;
1172
+ }
1173
+ function versionEntriesToActivityLogs(entries, refId, refType, fieldTitles, getHistoryLayout, locale = 'en-US') {
953
1174
  return entries.map((e) => {
954
- const rawChanges = (e.patchFromPrevJson ?? []).slice(0, 20);
955
- const seenFields = new Set();
956
- const changes = [];
957
- for (const c of rawChanges) {
958
- const { fieldKey, actionKey, fieldKeyParams } = humanizeChangeToKeys(c.path, c.op, fieldTitles);
959
- const dedupeKey = fieldKeyParams ? `${fieldKey}:${fieldKeyParams['name'] ?? ''}` : fieldKey;
960
- if (seenFields.has(dedupeKey))
961
- continue;
962
- seenFields.add(dedupeKey);
963
- const pathStr = typeof c.path === 'string' ? c.path : String(c.path ?? '');
964
- const layout = getHistoryLayout?.(pathStr);
965
- const summary = buildChangeSummary(c.op, c.oldValue, c.newValue);
966
- const fallbackDesc = `${humanizeKeyAsFallback(resolvePathKey(c.path))}: ${c.op}`;
967
- changes.push({
968
- type: mapOpToAction(c.op),
969
- description: fallbackDesc,
970
- fieldKey,
971
- fieldKeyParams,
972
- actionKey,
973
- oldValue: c.oldValue,
974
- newValue: c.newValue,
975
- summary,
976
- ...(layout != null && { layout }),
977
- });
978
- }
979
- const rawTitle = e.summary ?? `${e.changeType} v${e.versionNumber}`;
1175
+ // Present (even empty) = server-stamped; missing = legacy fallback from patch.
1176
+ const hasServerLines = Array.isArray(e.changeLines);
1177
+ const changes = hasServerLines
1178
+ ? mapServerChangeLines(e.changeLines, getHistoryLayout, locale)
1179
+ : mapPatchChanges((e.patchFromPrevJson ?? []), fieldTitles, getHistoryLayout, locale);
1180
+ const rawSummary = typeof e.summary === 'string'
1181
+ ? e.summary
1182
+ : e.summary && typeof e.summary === 'object'
1183
+ ? String(e.summary[locale] ??
1184
+ e.summary['en-US'] ??
1185
+ Object.values(e.summary)[0] ??
1186
+ '')
1187
+ : '';
1188
+ const rawTitle = rawSummary || `${e.changeType} v${e.versionNumber}`;
980
1189
  const title = stripFieldNamesFromSummary(rawTitle);
981
1190
  return {
982
1191
  id: e.id,
983
1192
  title,
984
1193
  date: new Date(e.changedAt),
985
- user: { id: 'system', name: 'System', title: 'System' },
1194
+ user: resolveActivityUser(e),
986
1195
  reference: { id: refId, type: refType },
987
1196
  changeType: mapChangeType(e.changeType),
988
1197
  data: e.snapshotJson,
@@ -1000,25 +1209,34 @@ function versionEntriesToActivityLogs(entries, refId, refType, fieldTitles, getH
1000
1209
  class AXMVersionHistoryPageComponent extends AXPPageLayoutBaseComponent {
1001
1210
  constructor() {
1002
1211
  super(...arguments);
1003
- this.rootContext = input.required(...(ngDevMode ? [{ debugName: "rootContext" }] : /* istanbul ignore next */ []));
1004
- this.pageConfig = input(...(ngDevMode ? [undefined, { debugName: "pageConfig" }] : /* istanbul ignore next */ []));
1005
- this.options = input({}, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
1006
- this.isBusy = signal(false, ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
1007
- this.versions = signal([], ...(ngDevMode ? [{ debugName: "versions" }] : /* istanbul ignore next */ []));
1212
+ this.rootContext = input.required(/* @ts-ignore */
1213
+ ...(ngDevMode ? [{ debugName: "rootContext" }] : /* istanbul ignore next */ []));
1214
+ this.pageConfig = input(/* @ts-ignore */
1215
+ ...(ngDevMode ? [undefined, { debugName: "pageConfig" }] : /* istanbul ignore next */ []));
1216
+ this.options = input({}, /* @ts-ignore */
1217
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
1218
+ this.isBusy = signal(false, /* @ts-ignore */
1219
+ ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
1220
+ this.versions = signal([], /* @ts-ignore */
1221
+ ...(ngDevMode ? [{ debugName: "versions" }] : /* istanbul ignore next */ []));
1008
1222
  this.activities = computed(() => {
1009
1223
  const props = this.entityProperties();
1010
1224
  const getHistoryLayout = (path) => this.resolveHistoryLayout(path, props);
1011
- return versionEntriesToActivityLogs(this.versions(), this.refId, this.refType, this.fieldTitles, getHistoryLayout);
1012
- }, ...(ngDevMode ? [{ debugName: "activities" }] : /* istanbul ignore next */ []));
1225
+ const locale = this.translation.getActiveLang?.() ?? 'en-US';
1226
+ return versionEntriesToActivityLogs(this.versions(), this.refId, this.refType, this.fieldTitles, getHistoryLayout, locale);
1227
+ }, /* @ts-ignore */
1228
+ ...(ngDevMode ? [{ debugName: "activities" }] : /* istanbul ignore next */ []));
1013
1229
  this.refId = '';
1014
1230
  this.refType = '';
1015
1231
  this.fieldTitles = {};
1016
- this.entityProperties = signal([], ...(ngDevMode ? [{ debugName: "entityProperties" }] : /* istanbul ignore next */ []));
1232
+ this.entityProperties = signal([], /* @ts-ignore */
1233
+ ...(ngDevMode ? [{ debugName: "entityProperties" }] : /* istanbul ignore next */ []));
1017
1234
  this.versioning = inject(AXPVersioningService);
1018
1235
  this.entityRegistry = inject(AXPEntityDefinitionRegistryService);
1019
1236
  this.widgetRegistry = inject(AXPWidgetRegistryService);
1020
1237
  this.injector = inject(Injector);
1021
1238
  this.route = inject(ActivatedRoute);
1239
+ this.translation = inject(AXTranslationService);
1022
1240
  }
1023
1241
  /** Resolves custom history layout for a change path via property -> widget config -> historyLayout. */
1024
1242
  resolveHistoryLayout(path, properties) {
@@ -1104,8 +1322,8 @@ class AXMVersionHistoryPageComponent extends AXPPageLayoutBaseComponent {
1104
1322
  async onCompareRequested(event) {
1105
1323
  await openActivityLogVersionCompare(this.injector, event);
1106
1324
  }
1107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMVersionHistoryPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: AXMVersionHistoryPageComponent, isStandalone: true, selector: "axm-version-history-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: true, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
1325
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMVersionHistoryPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXMVersionHistoryPageComponent, isStandalone: true, selector: "axm-version-history-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: true, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
1109
1327
  {
1110
1328
  provide: AXPPageLayoutBase,
1111
1329
  useExisting: AXMVersionHistoryPageComponent,
@@ -1116,12 +1334,13 @@ class AXMVersionHistoryPageComponent extends AXPPageLayoutBaseComponent {
1116
1334
  [activities]="activities()"
1117
1335
  [loading]="isBusy()"
1118
1336
  [enableCompare]="true"
1337
+ [showActionType]="false"
1119
1338
  (compareRequested)="onCompareRequested($event)"
1120
1339
  ></axp-activity-log>
1121
1340
  </div>
1122
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: AXPActivityLogComponent, selector: "axp-activity-log", inputs: ["activities", "loading", "enableCompare"], outputs: ["compareRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1341
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: AXPActivityLogComponent, selector: "axp-activity-log", inputs: ["activities", "loading", "enableCompare", "showActionType"], outputs: ["compareRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1123
1342
  }
1124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMVersionHistoryPageComponent, decorators: [{
1343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMVersionHistoryPageComponent, decorators: [{
1125
1344
  type: Component,
1126
1345
  args: [{
1127
1346
  selector: 'axm-version-history-page',
@@ -1138,6 +1357,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1138
1357
  [activities]="activities()"
1139
1358
  [loading]="isBusy()"
1140
1359
  [enableCompare]="true"
1360
+ [showActionType]="false"
1141
1361
  (compareRequested)="onCompareRequested($event)"
1142
1362
  ></axp-activity-log>
1143
1363
  </div>
@@ -1368,11 +1588,11 @@ const avatarPlugin = {
1368
1588
  };
1369
1589
 
1370
1590
  class AXPAvatarPluginModule {
1371
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAvatarPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1372
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPAvatarPluginModule }); }
1373
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAvatarPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: avatarPlugin }] }); }
1591
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAvatarPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1592
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPAvatarPluginModule }); }
1593
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAvatarPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: avatarPlugin }] }); }
1374
1594
  }
1375
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAvatarPluginModule, decorators: [{
1595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAvatarPluginModule, decorators: [{
1376
1596
  type: NgModule,
1377
1597
  args: [{
1378
1598
  declarations: [],
@@ -1419,7 +1639,7 @@ const categoryPlugin = {
1419
1639
  title: '@general:terms.classification.categories',
1420
1640
  groupId: groupId,
1421
1641
  schema: {
1422
- dataType: 'string',
1642
+ dataType: 'array',
1423
1643
  interface: {
1424
1644
  type: AXPWidgetsList.Editors.EntityCategory,
1425
1645
  options: {
@@ -1623,6 +1843,16 @@ class AXMEntityCategoryProvider {
1623
1843
  groupId: 'basic-info',
1624
1844
  schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.largeText } },
1625
1845
  },
1846
+ {
1847
+ name: 'childrenCount',
1848
+ title: '@general:terms.classification.children-count',
1849
+ groupId: 'basic-info',
1850
+ schema: {
1851
+ dataType: 'number',
1852
+ readonly: true,
1853
+ interface: { type: AXPWidgetsList.Editors.NumberBox },
1854
+ },
1855
+ },
1626
1856
  // Appearance properties (only if enabled)
1627
1857
  ...(enableAppearance ? [
1628
1858
  ...(appearanceConfig?.color !== false ? [
@@ -1751,17 +1981,17 @@ class AXMEntityCategoryProvider {
1751
1981
  async list() {
1752
1982
  return Promise.resolve([]);
1753
1983
  }
1754
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMEntityCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1755
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMEntityCategoryProvider }); }
1984
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMEntityCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1985
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMEntityCategoryProvider }); }
1756
1986
  }
1757
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMEntityCategoryProvider, decorators: [{
1987
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMEntityCategoryProvider, decorators: [{
1758
1988
  type: Injectable
1759
1989
  }] });
1760
1990
 
1761
1991
  class AXPCategoryModule {
1762
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCategoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1763
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPCategoryModule }); }
1764
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCategoryModule, providers: [
1992
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCategoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1993
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPCategoryModule }); }
1994
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCategoryModule, providers: [
1765
1995
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: categoryPlugin },
1766
1996
  {
1767
1997
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
@@ -1785,7 +2015,7 @@ class AXPCategoryModule {
1785
2015
  },
1786
2016
  ] }); }
1787
2017
  }
1788
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCategoryModule, decorators: [{
2018
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCategoryModule, decorators: [{
1789
2019
  type: NgModule,
1790
2020
  args: [{
1791
2021
  providers: [
@@ -1816,16 +2046,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1816
2046
 
1817
2047
  //#region ---- Imports ----
1818
2048
  //#endregion
2049
+ //#region ---- Types ----
2050
+ const DEFAULT_CATALOG_SCOPES_QUERY = 'PlatformManagement:ListCatalogScopes';
2051
+ //#endregion
1819
2052
  //#region ---- Plugin ----
1820
2053
  const catalogScopePlugin = {
1821
2054
  name: 'catalog-scope',
1822
2055
  order: 46,
1823
2056
  apply: (ctx, options) => {
1824
- const propertyName = options?.propertyName?.trim()?.length
1825
- ? options.propertyName.trim()
1826
- : 'catalogScopeKeys';
2057
+ const propertyName = options?.propertyName?.trim()?.length ? options.propertyName.trim() : 'catalogScopeKeys';
1827
2058
  const allowMultiple = options?.allowMultiple ?? true;
1828
- const dataSource = options?.dataSource?.trim() || AXPPlatformCoreDataSourceKeys.CatalogScopes;
2059
+ const dataSource = options?.dataSource?.trim() || DEFAULT_CATALOG_SCOPES_QUERY;
1829
2060
  const showInList = options?.showInList ?? false;
1830
2061
  const groupId = options?.groupId?.trim() || 'classification';
1831
2062
  const layoutOrder = options?.layoutOrder ?? 14;
@@ -1855,9 +2086,7 @@ const catalogScopePlugin = {
1855
2086
  allowSearch: true,
1856
2087
  storeValueFieldOnly: true,
1857
2088
  dataSource,
1858
- ...(options?.allowedScopeKeys?.length
1859
- ? { allowedScopeKeys: options.allowedScopeKeys }
1860
- : {}),
2089
+ ...(options?.allowedScopeKeys?.length ? { allowedScopeKeys: options.allowedScopeKeys } : {}),
1861
2090
  },
1862
2091
  },
1863
2092
  },
@@ -1939,10 +2168,10 @@ class AXPCatalogScopeEnrichmentService {
1939
2168
  }
1940
2169
  return items;
1941
2170
  }
1942
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCatalogScopeEnrichmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1943
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCatalogScopeEnrichmentService, providedIn: 'root' }); }
2171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCatalogScopeEnrichmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2172
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCatalogScopeEnrichmentService, providedIn: 'root' }); }
1944
2173
  }
1945
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCatalogScopeEnrichmentService, decorators: [{
2174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCatalogScopeEnrichmentService, decorators: [{
1946
2175
  type: Injectable,
1947
2176
  args: [{ providedIn: 'root' }]
1948
2177
  }] });
@@ -2161,15 +2390,10 @@ const catalogScopeValidationMiddleware = {
2161
2390
  //#endregion
2162
2391
  //#region ---- Module ----
2163
2392
  class AXPCatalogScopePluginModule {
2164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCatalogScopePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2165
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPCatalogScopePluginModule }); }
2166
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCatalogScopePluginModule, providers: [
2393
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCatalogScopePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2394
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPCatalogScopePluginModule }); }
2395
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCatalogScopePluginModule, providers: [
2167
2396
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: catalogScopePlugin },
2168
- {
2169
- provide: AXP_DATASOURCE_DEFINITION_PROVIDER,
2170
- useClass: AXPCatalogScopeDefinitionsDataSourceDefinition,
2171
- multi: true,
2172
- },
2173
2397
  {
2174
2398
  provide: AXP_ENTITY_STORAGE_MIDDLEWARE,
2175
2399
  multi: true,
@@ -2182,16 +2406,11 @@ class AXPCatalogScopePluginModule {
2182
2406
  },
2183
2407
  ] }); }
2184
2408
  }
2185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCatalogScopePluginModule, decorators: [{
2409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCatalogScopePluginModule, decorators: [{
2186
2410
  type: NgModule,
2187
2411
  args: [{
2188
2412
  providers: [
2189
2413
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: catalogScopePlugin },
2190
- {
2191
- provide: AXP_DATASOURCE_DEFINITION_PROVIDER,
2192
- useClass: AXPCatalogScopeDefinitionsDataSourceDefinition,
2193
- multi: true,
2194
- },
2195
2414
  {
2196
2415
  provide: AXP_ENTITY_STORAGE_MIDDLEWARE,
2197
2416
  multi: true,
@@ -2255,19 +2474,19 @@ const clonePlugin = {
2255
2474
  };
2256
2475
 
2257
2476
  class AXPClonePluginModule {
2258
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClonePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2259
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPClonePluginModule }); }
2260
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClonePluginModule, providers: [
2477
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPClonePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2478
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPClonePluginModule }); }
2479
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPClonePluginModule, providers: [
2261
2480
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: clonePlugin },
2262
2481
  provideCommandSetups([
2263
2482
  {
2264
2483
  key: AXPCommonCommandKeys.Clone.Clone,
2265
- command: () => import('./acorex-platform-module-common-client-clone-entity.command-DFgIeWxX.mjs').then((m) => m.AXPCloneEntityCommand),
2484
+ command: () => import('./acorex-platform-module-common-client-clone-entity.command-rTasIhWx.mjs').then((m) => m.AXPCloneEntityCommand),
2266
2485
  },
2267
2486
  ]),
2268
2487
  ] }); }
2269
2488
  }
2270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClonePluginModule, decorators: [{
2489
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPClonePluginModule, decorators: [{
2271
2490
  type: NgModule,
2272
2491
  args: [{
2273
2492
  providers: [
@@ -2275,7 +2494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2275
2494
  provideCommandSetups([
2276
2495
  {
2277
2496
  key: AXPCommonCommandKeys.Clone.Clone,
2278
- command: () => import('./acorex-platform-module-common-client-clone-entity.command-DFgIeWxX.mjs').then((m) => m.AXPCloneEntityCommand),
2497
+ command: () => import('./acorex-platform-module-common-client-clone-entity.command-rTasIhWx.mjs').then((m) => m.AXPCloneEntityCommand),
2279
2498
  },
2280
2499
  ]),
2281
2500
  ],
@@ -2361,11 +2580,11 @@ const colorPlugin = {
2361
2580
  };
2362
2581
 
2363
2582
  class AXPColorPluginModule {
2364
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColorPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2365
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPColorPluginModule }); }
2366
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColorPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: colorPlugin }] }); }
2583
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColorPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2584
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPColorPluginModule }); }
2585
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColorPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: colorPlugin }] }); }
2367
2586
  }
2368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColorPluginModule, decorators: [{
2587
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColorPluginModule, decorators: [{
2369
2588
  type: NgModule,
2370
2589
  args: [{
2371
2590
  declarations: [],
@@ -2378,23 +2597,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2378
2597
  class AXPComparePopupComponent extends AXBasePageComponent {
2379
2598
  constructor() {
2380
2599
  super(...arguments);
2381
- this.inputs = input(...(ngDevMode ? [undefined, { debugName: "inputs" }] : /* istanbul ignore next */ []));
2382
- this.isBusy = signal(false, ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
2383
- this.mode = input('compare', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
2600
+ this.inputs = input(/* @ts-ignore */
2601
+ ...(ngDevMode ? [undefined, { debugName: "inputs" }] : /* istanbul ignore next */ []));
2602
+ this.isBusy = signal(false, /* @ts-ignore */
2603
+ ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
2604
+ this.mode = input('compare', /* @ts-ignore */
2605
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
2384
2606
  }
2385
2607
  ngOnInit() {
2386
2608
  super.ngOnInit();
2387
2609
  }
2388
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComparePopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2389
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: AXPComparePopupComponent, isStandalone: true, selector: "axp-compare-popup", inputs: { inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], usesInheritance: true, ngImport: i0, template: "<ax-content>\n <div class=\"p-6 min-h-[30vh] overflow-y-auto\">\n <axp-compare-view [inputs]=\"inputs()\" [mode]=\"mode()\"></axp-compare-view>\n </div>\n</ax-content>\n<ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type:
2610
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPComparePopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2611
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXPComparePopupComponent, isStandalone: true, selector: "axp-compare-popup", inputs: { inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], usesInheritance: true, ngImport: i0, template: "<ax-content>\n <div class=\"p-6 min-h-[30vh] overflow-y-auto\">\n <axp-compare-view [inputs]=\"inputs()\" [mode]=\"mode()\"></axp-compare-view>\n </div>\n</ax-content>\n<ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type:
2390
2612
  // Angular
2391
2613
  CommonModule }, { kind: "ngmodule", type:
2392
2614
  // ACoreX
2393
2615
  AXDecoratorModule }, { kind: "component", type: i1.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: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type:
2394
2616
  // Compare View
2395
- AXPCompareViewComponent, selector: "axp-compare-view", inputs: ["inputs", "mode"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
2617
+ AXPCompareViewComponent, selector: "axp-compare-view", inputs: ["inputs", "mode"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
2396
2618
  }
2397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComparePopupComponent, decorators: [{
2619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPComparePopupComponent, decorators: [{
2398
2620
  type: Component,
2399
2621
  args: [{ selector: 'axp-compare-popup', standalone: true, imports: [
2400
2622
  // Angular
@@ -2405,7 +2627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2405
2627
  AXTranslationModule,
2406
2628
  // Compare View
2407
2629
  AXPCompareViewComponent
2408
- ], encapsulation: ViewEncapsulation.None, providers: [], template: "<ax-content>\n <div class=\"p-6 min-h-[30vh] overflow-y-auto\">\n <axp-compare-view [inputs]=\"inputs()\" [mode]=\"mode()\"></axp-compare-view>\n </div>\n</ax-content>\n<ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n" }]
2630
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Eager, providers: [], template: "<ax-content>\n <div class=\"p-6 min-h-[30vh] overflow-y-auto\">\n <axp-compare-view [inputs]=\"inputs()\" [mode]=\"mode()\"></axp-compare-view>\n </div>\n</ax-content>\n<ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n" }]
2409
2631
  }], propDecorators: { inputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputs", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] } });
2410
2632
 
2411
2633
  var comparePopup_component = /*#__PURE__*/Object.freeze({
@@ -2414,22 +2636,18 @@ var comparePopup_component = /*#__PURE__*/Object.freeze({
2414
2636
  });
2415
2637
 
2416
2638
  function normalizeCompareEntityRecordsInput(input) {
2417
- const ctx = input['__context__'];
2418
- const data = ctx?.['data'] ?? input['data'] ?? input;
2419
- const records = (Array.isArray(data) ? data : data ? [data] : []);
2420
- const refType = String(input['entity'] ??
2421
- ctx?.['entity'] ??
2422
- ctx?.['entityInfo']?.['source'] ??
2423
- '');
2639
+ const resolved = resolveEntityActionCommandInput(input);
2640
+ const records = entityActionDataRows(resolved.data);
2641
+ const refType = String(resolved.entity ?? resolved.entityInfo?.source ?? '');
2424
2642
  if (!refType || records.length === 0) {
2425
2643
  return null;
2426
2644
  }
2427
2645
  return { refType, records };
2428
2646
  }
2429
2647
  function normalizeCompareEntityRecordVersionsInput(input) {
2430
- const ctx = input['__context__'];
2431
- const data = (ctx?.['data'] ?? input['data'] ?? input);
2432
- const refType = String(data['refType'] ?? input['entity'] ?? ctx?.['entity'] ?? '');
2648
+ const resolved = resolveEntityActionCommandInput(input);
2649
+ const data = (entityActionDataRows(resolved.data)[0] ?? {});
2650
+ const refType = String(data['refType'] ?? resolved.entity ?? '');
2433
2651
  const refId = String(data['refId'] ?? '');
2434
2652
  const ids = (data['ids'] ?? input['ids']);
2435
2653
  if (!refType || !refId || !ids?.length) {
@@ -2470,12 +2688,17 @@ class AXPCompareEntityRecordsCommand {
2470
2688
  const fields = await buildCompareFields({ entityRegistry }, context.refType);
2471
2689
  const objects = await buildCompareRecordObjects({ entityRegistry }, context.refType, ids);
2472
2690
  await openComparePopup({ popupService, translate }, { fields, objects }, 'compare');
2473
- return { success: true };
2691
+ return {
2692
+ success: true,
2693
+ kind: 'object',
2694
+ data: undefined,
2695
+ metadata: { refresh: false },
2696
+ };
2474
2697
  }
2475
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareEntityRecordsCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2476
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareEntityRecordsCommand }); }
2698
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareEntityRecordsCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2699
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareEntityRecordsCommand }); }
2477
2700
  }
2478
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareEntityRecordsCommand, decorators: [{
2701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareEntityRecordsCommand, decorators: [{
2479
2702
  type: Injectable
2480
2703
  }] });
2481
2704
 
@@ -2507,12 +2730,17 @@ class AXPCompareEntityRecordVersionsCommand {
2507
2730
  const fields = await buildCompareFields({ entityRegistry }, context.refType);
2508
2731
  const objects = await buildCompareVersionObjects({ versioning, translate, formatService }, context.refType, context.refId, context.ids);
2509
2732
  await openComparePopup({ popupService, translate }, { fields, objects }, 'changes');
2510
- return { success: true };
2733
+ return {
2734
+ success: true,
2735
+ kind: 'object',
2736
+ data: undefined,
2737
+ metadata: { refresh: false },
2738
+ };
2511
2739
  }
2512
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareEntityRecordVersionsCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2513
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareEntityRecordVersionsCommand }); }
2740
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareEntityRecordVersionsCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2741
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareEntityRecordVersionsCommand }); }
2514
2742
  }
2515
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareEntityRecordVersionsCommand, decorators: [{
2743
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareEntityRecordVersionsCommand, decorators: [{
2516
2744
  type: Injectable
2517
2745
  }] });
2518
2746
 
@@ -2544,9 +2772,9 @@ const comparePlugin = {
2544
2772
  };
2545
2773
 
2546
2774
  class AXPCompareModule {
2547
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2548
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareModule, imports: [AXPComparePopupComponent], exports: [AXPComparePopupComponent] }); }
2549
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareModule, providers: [
2775
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2776
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareModule, imports: [AXPComparePopupComponent], exports: [AXPComparePopupComponent] }); }
2777
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareModule, providers: [
2550
2778
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: comparePlugin },
2551
2779
  provideCommandSetups([
2552
2780
  {
@@ -2560,7 +2788,7 @@ class AXPCompareModule {
2560
2788
  ]),
2561
2789
  ], imports: [AXPComparePopupComponent] }); }
2562
2790
  }
2563
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCompareModule, decorators: [{
2791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCompareModule, decorators: [{
2564
2792
  type: NgModule,
2565
2793
  args: [{
2566
2794
  imports: [AXPComparePopupComponent],
@@ -2643,7 +2871,7 @@ function defaultIdField(dataPath) {
2643
2871
  const computedPropertiesMiddleware = {
2644
2872
  target: { ops: ['getOne', 'getAll', 'query'], order: 12 },
2645
2873
  execute: async (ctx, next) => {
2646
- const backend = inject(AXP_ENTITY_STORAGE_BACKEND);
2874
+ const backend = ctx.entities;
2647
2875
  const registry = inject(AXPEntityDefinitionRegistryService);
2648
2876
  const expressionEvaluator = inject(AXPExpressionEvaluatorService);
2649
2877
  const contextEvalFactory = inject(AXPContextEvalFactory);
@@ -2863,14 +3091,14 @@ const computedPropertiesPlugin = {
2863
3091
  //#endregion
2864
3092
 
2865
3093
  class AXPComputedPropertiesModule {
2866
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComputedPropertiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2867
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPComputedPropertiesModule }); }
2868
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComputedPropertiesModule, providers: [
3094
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPComputedPropertiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3095
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPComputedPropertiesModule }); }
3096
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPComputedPropertiesModule, providers: [
2869
3097
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: computedPropertiesPlugin },
2870
3098
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: computedPropertiesMiddleware },
2871
3099
  ] }); }
2872
3100
  }
2873
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComputedPropertiesModule, decorators: [{
3101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPComputedPropertiesModule, decorators: [{
2874
3102
  type: NgModule,
2875
3103
  args: [{
2876
3104
  providers: [
@@ -2960,11 +3188,11 @@ const descriptionPlugin = {
2960
3188
  };
2961
3189
 
2962
3190
  class AXPDescriptionPluginModule {
2963
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDescriptionPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2964
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPDescriptionPluginModule }); }
2965
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDescriptionPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: descriptionPlugin }] }); }
3191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDescriptionPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3192
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPDescriptionPluginModule }); }
3193
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDescriptionPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: descriptionPlugin }] }); }
2966
3194
  }
2967
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDescriptionPluginModule, decorators: [{
3195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDescriptionPluginModule, decorators: [{
2968
3196
  type: NgModule,
2969
3197
  args: [{
2970
3198
  declarations: [],
@@ -3215,31 +3443,31 @@ const disablePlugin = {
3215
3443
  };
3216
3444
 
3217
3445
  class AXPDisablePluginModule {
3218
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDisablePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3219
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPDisablePluginModule }); }
3220
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDisablePluginModule, providers: [
3446
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDisablePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3447
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPDisablePluginModule }); }
3448
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDisablePluginModule, providers: [
3221
3449
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: disablePlugin },
3222
3450
  provideCommandSetups([
3223
3451
  {
3224
3452
  key: AXPCommonCommandKeys.Disable.Disable,
3225
- command: () => import('./acorex-platform-module-common-client-disable-entity.command-DWyqAAwo.mjs').then((m) => m.AXPDisableEntityCommand),
3453
+ command: () => import('./acorex-platform-module-common-client-disable-entity.command-Bc1uH38V.mjs').then((m) => m.AXPDisableEntityCommand),
3226
3454
  },
3227
3455
  {
3228
3456
  key: AXPCommonCommandKeys.Disable.Enable,
3229
- command: () => import('./acorex-platform-module-common-client-enable-entity.command-BP30gOku.mjs').then((m) => m.AXPEnableEntityCommand),
3457
+ command: () => import('./acorex-platform-module-common-client-enable-entity.command-DeTumWIj.mjs').then((m) => m.AXPEnableEntityCommand),
3230
3458
  },
3231
3459
  {
3232
3460
  key: AXPCommonCommandKeys.Disable.BulkDisable,
3233
- command: () => import('./acorex-platform-module-common-client-bulk-disable-entity.command-0J4vgsFL.mjs').then((m) => m.AXPBulkDisableEntityCommand),
3461
+ command: () => import('./acorex-platform-module-common-client-bulk-disable-entity.command-DgoZVXQA.mjs').then((m) => m.AXPBulkDisableEntityCommand),
3234
3462
  },
3235
3463
  {
3236
3464
  key: AXPCommonCommandKeys.Disable.BulkEnable,
3237
- command: () => import('./acorex-platform-module-common-client-bulk-enable-entity.command-DsVuaInC.mjs').then((m) => m.AXPBulkEnableEntityCommand),
3465
+ command: () => import('./acorex-platform-module-common-client-bulk-enable-entity.command-C6fba__g.mjs').then((m) => m.AXPBulkEnableEntityCommand),
3238
3466
  },
3239
3467
  ]),
3240
3468
  ] }); }
3241
3469
  }
3242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDisablePluginModule, decorators: [{
3470
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDisablePluginModule, decorators: [{
3243
3471
  type: NgModule,
3244
3472
  args: [{
3245
3473
  providers: [
@@ -3247,19 +3475,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3247
3475
  provideCommandSetups([
3248
3476
  {
3249
3477
  key: AXPCommonCommandKeys.Disable.Disable,
3250
- command: () => import('./acorex-platform-module-common-client-disable-entity.command-DWyqAAwo.mjs').then((m) => m.AXPDisableEntityCommand),
3478
+ command: () => import('./acorex-platform-module-common-client-disable-entity.command-Bc1uH38V.mjs').then((m) => m.AXPDisableEntityCommand),
3251
3479
  },
3252
3480
  {
3253
3481
  key: AXPCommonCommandKeys.Disable.Enable,
3254
- command: () => import('./acorex-platform-module-common-client-enable-entity.command-BP30gOku.mjs').then((m) => m.AXPEnableEntityCommand),
3482
+ command: () => import('./acorex-platform-module-common-client-enable-entity.command-DeTumWIj.mjs').then((m) => m.AXPEnableEntityCommand),
3255
3483
  },
3256
3484
  {
3257
3485
  key: AXPCommonCommandKeys.Disable.BulkDisable,
3258
- command: () => import('./acorex-platform-module-common-client-bulk-disable-entity.command-0J4vgsFL.mjs').then((m) => m.AXPBulkDisableEntityCommand),
3486
+ command: () => import('./acorex-platform-module-common-client-bulk-disable-entity.command-DgoZVXQA.mjs').then((m) => m.AXPBulkDisableEntityCommand),
3259
3487
  },
3260
3488
  {
3261
3489
  key: AXPCommonCommandKeys.Disable.BulkEnable,
3262
- command: () => import('./acorex-platform-module-common-client-bulk-enable-entity.command-DsVuaInC.mjs').then((m) => m.AXPBulkEnableEntityCommand),
3490
+ command: () => import('./acorex-platform-module-common-client-bulk-enable-entity.command-C6fba__g.mjs').then((m) => m.AXPBulkEnableEntityCommand),
3263
3491
  },
3264
3492
  ]),
3265
3493
  ],
@@ -3343,11 +3571,11 @@ const defaultPlugin = {
3343
3571
  };
3344
3572
 
3345
3573
  class AXPDefaultPluginModule {
3346
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3347
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultPluginModule }); }
3348
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: defaultPlugin }] }); }
3574
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDefaultPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3575
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPDefaultPluginModule }); }
3576
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDefaultPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: defaultPlugin }] }); }
3349
3577
  }
3350
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultPluginModule, decorators: [{
3578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDefaultPluginModule, decorators: [{
3351
3579
  type: NgModule,
3352
3580
  args: [{
3353
3581
  declarations: [],
@@ -3432,11 +3660,11 @@ const derivedNamePlugin = {
3432
3660
  //#endregion
3433
3661
 
3434
3662
  class AXPDerivedNamePluginModule {
3435
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDerivedNamePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3436
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPDerivedNamePluginModule }); }
3437
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDerivedNamePluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: derivedNamePlugin }] }); }
3663
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDerivedNamePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3664
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPDerivedNamePluginModule }); }
3665
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDerivedNamePluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: derivedNamePlugin }] }); }
3438
3666
  }
3439
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDerivedNamePluginModule, decorators: [{
3667
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDerivedNamePluginModule, decorators: [{
3440
3668
  type: NgModule,
3441
3669
  args: [{
3442
3670
  providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: derivedNamePlugin }],
@@ -3509,11 +3737,11 @@ const iconPlugin = {
3509
3737
  };
3510
3738
 
3511
3739
  class AXPIconPluginModule {
3512
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3513
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule }); }
3514
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: iconPlugin }] }); }
3740
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPIconPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3741
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPIconPluginModule }); }
3742
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPIconPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: iconPlugin }] }); }
3515
3743
  }
3516
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPIconPluginModule, decorators: [{
3744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPIconPluginModule, decorators: [{
3517
3745
  type: NgModule,
3518
3746
  args: [{
3519
3747
  declarations: [],
@@ -3528,7 +3756,7 @@ class AXPLockEntityCommandHelper {
3528
3756
  this.translationService = inject(AXTranslationService);
3529
3757
  this.toastService = inject(AXToastService);
3530
3758
  this.settingsService = inject(AXPSettingsService);
3531
- this.workflowEventService = inject(AXPWorkflowEventService);
3759
+ this.entityEvents = inject(AXPEntityBroadcastService);
3532
3760
  }
3533
3761
  async showSuccessToast(titleKey, contentKey) {
3534
3762
  const enabled = await this.settingsService.get(AXPCommonSettings.EnableOperationToasts);
@@ -3542,25 +3770,22 @@ class AXPLockEntityCommandHelper {
3542
3770
  });
3543
3771
  }
3544
3772
  dispatchLockChanged(refType, meta) {
3545
- this.workflowEventService.dispatch(AXPRefreshEvent({ entity: refType, meta }));
3773
+ this.entityEvents.publishLayoutRefresh(refType, meta);
3546
3774
  }
3547
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockEntityCommandHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3548
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockEntityCommandHelper, providedIn: 'root' }); }
3775
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLockEntityCommandHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3776
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLockEntityCommandHelper, providedIn: 'root' }); }
3549
3777
  }
3550
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockEntityCommandHelper, decorators: [{
3778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLockEntityCommandHelper, decorators: [{
3551
3779
  type: Injectable,
3552
3780
  args: [{ providedIn: 'root' }]
3553
3781
  }] });
3554
3782
 
3555
3783
  function normalizeLockInput(input) {
3556
- const ctx = input['__context__'];
3557
- const options = (input['options'] ?? ctx?.['options'] ?? input);
3558
- const refType = String(options['refType'] ?? input['refType'] ?? ctx?.['entity'] ?? '');
3559
- const rawId = options['refId'] ?? input['refId'];
3560
- if (!refType || rawId == null || rawId === '') {
3784
+ const resolved = resolveEntityActionRef(input);
3785
+ if (!resolved) {
3561
3786
  return null;
3562
3787
  }
3563
- return { refId: String(rawId), refType };
3788
+ return { refId: resolved.refId, refType: resolved.refType };
3564
3789
  }
3565
3790
 
3566
3791
  class AXPLockEntityCommand {
@@ -3638,7 +3863,10 @@ class AXPLockEntityCommand {
3638
3863
  const action = dialogRef.action();
3639
3864
  if (action === 'cancel') {
3640
3865
  dialogRef.close();
3641
- return { success: false, data: { locked: false } };
3866
+ return {
3867
+ success: false,
3868
+ message: { details: { locked: false } },
3869
+ };
3642
3870
  }
3643
3871
  const form = dialogRef.context();
3644
3872
  const selected = form?.duration ?? '1h';
@@ -3660,8 +3888,7 @@ class AXPLockEntityCommand {
3660
3888
  dialogRef.close();
3661
3889
  this.helper.dispatchLockChanged(context.refType);
3662
3890
  await this.helper.showSuccessToast('@general:workflow.entity-modified-title', '@general:workflow.entity-modified-body');
3663
- return {
3664
- success: true,
3891
+ return { success: true, kind: 'object',
3665
3892
  data: {
3666
3893
  locked: true,
3667
3894
  lockDuration: form?.duration ?? '1h',
@@ -3669,10 +3896,10 @@ class AXPLockEntityCommand {
3669
3896
  },
3670
3897
  };
3671
3898
  }
3672
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockEntityCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3673
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockEntityCommand, providedIn: 'root' }); }
3899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLockEntityCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3900
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLockEntityCommand, providedIn: 'root' }); }
3674
3901
  }
3675
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockEntityCommand, decorators: [{
3902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLockEntityCommand, decorators: [{
3676
3903
  type: Injectable,
3677
3904
  args: [{ providedIn: 'root' }]
3678
3905
  }] });
@@ -3701,7 +3928,10 @@ class AXPUnlockEntityCommand {
3701
3928
  }
3702
3929
  const dialogResult = await this.dialogService.confirm(await this.translationService.translateAsync('@lock-system:components.unlock-dialog.title'), await this.translationService.translateAsync('@lock-system:components.unlock-dialog.description'), 'warning', 'horizontal', false, 'cancel');
3703
3930
  if (!dialogResult.result) {
3704
- return { success: false, data: { unlocked: false } };
3931
+ return {
3932
+ success: false,
3933
+ message: { details: { unlocked: false } },
3934
+ };
3705
3935
  }
3706
3936
  try {
3707
3937
  await this.lockService.unlock({
@@ -3711,24 +3941,23 @@ class AXPUnlockEntityCommand {
3711
3941
  });
3712
3942
  this.helper.dispatchLockChanged(context.refType);
3713
3943
  await this.helper.showSuccessToast('@general:workflow.entity-modified-title', '@general:workflow.entity-modified-body');
3714
- return { success: true, data: { unlocked: true } };
3944
+ return { success: true, kind: 'object', data: { unlocked: true } };
3715
3945
  }
3716
3946
  catch (error) {
3717
3947
  console.error('Unlock failed:', error);
3718
3948
  await this.dialogService.alert(await this.translationService.translateAsync('@lock-system:messages.error.unlock.title'), await this.translationService.translateAsync('@lock-system:messages.error.unlock.description'), 'danger');
3719
3949
  return {
3720
3950
  success: false,
3721
- data: { unlocked: false },
3722
- message: {
3951
+ message: { details: { unlocked: false },
3723
3952
  text: error instanceof Error ? error.message : 'Unlock failed',
3724
3953
  },
3725
3954
  };
3726
3955
  }
3727
3956
  }
3728
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPUnlockEntityCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3729
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPUnlockEntityCommand, providedIn: 'root' }); }
3957
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPUnlockEntityCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3958
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPUnlockEntityCommand, providedIn: 'root' }); }
3730
3959
  }
3731
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPUnlockEntityCommand, decorators: [{
3960
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPUnlockEntityCommand, decorators: [{
3732
3961
  type: Injectable,
3733
3962
  args: [{ providedIn: 'root' }]
3734
3963
  }] });
@@ -3759,29 +3988,11 @@ class AXMLockEvaluatorScopeProvider {
3759
3988
  }
3760
3989
  }
3761
3990
 
3762
- const lockGuardMiddleware = {
3763
- target: { ops: ['update', 'delete'], order: 10 },
3764
- execute: async (ctx, next) => {
3765
- const lockService = inject(AXPLockService);
3766
- const session = inject(AXPSessionService);
3767
- const lock = await lockService.check({ refId: ctx.id, refType: ctx.entityName });
3768
- if (lock) {
3769
- const info = await lockService.getInfo({ refId: ctx.id, refType: ctx.entityName });
3770
- if (info && session.user && info.lockedBy.id !== session.user.id) {
3771
- throw new Error('This record is locked and cannot be edited.');
3772
- }
3773
- }
3774
- await next();
3775
- },
3776
- };
3777
-
3778
3991
  class AXMLockSystemModule {
3779
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLockSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3780
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXMLockSystemModule }); }
3781
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLockSystemModule, providers: [
3992
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLockSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3993
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMLockSystemModule }); }
3994
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLockSystemModule, providers: [
3782
3995
  { provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, multi: true, useClass: AXMLockEvaluatorScopeProvider },
3783
- // { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: lockPlugin },
3784
- { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: lockGuardMiddleware },
3785
3996
  AXPLockEntityCommand,
3786
3997
  AXPUnlockEntityCommand,
3787
3998
  provideCommandSetups([
@@ -3796,14 +4007,12 @@ class AXMLockSystemModule {
3796
4007
  ]),
3797
4008
  ] }); }
3798
4009
  }
3799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMLockSystemModule, decorators: [{
4010
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMLockSystemModule, decorators: [{
3800
4011
  type: NgModule,
3801
4012
  args: [{
3802
4013
  imports: [],
3803
4014
  providers: [
3804
4015
  { provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, multi: true, useClass: AXMLockEvaluatorScopeProvider },
3805
- // { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: lockPlugin },
3806
- { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: lockGuardMiddleware },
3807
4016
  AXPLockEntityCommand,
3808
4017
  AXPUnlockEntityCommand,
3809
4018
  provideCommandSetups([
@@ -3905,11 +4114,11 @@ const namePlugin = {
3905
4114
  };
3906
4115
 
3907
4116
  class AXPNamePluginModule {
3908
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNamePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3909
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPNamePluginModule }); }
3910
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNamePluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: namePlugin }] }); }
4117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPNamePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4118
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPNamePluginModule }); }
4119
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPNamePluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: namePlugin }] }); }
3911
4120
  }
3912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNamePluginModule, decorators: [{
4121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPNamePluginModule, decorators: [{
3913
4122
  type: NgModule,
3914
4123
  args: [{
3915
4124
  declarations: [],
@@ -3999,11 +4208,11 @@ const notesPlugin = {
3999
4208
  };
4000
4209
 
4001
4210
  class AXPNotesPluginModule {
4002
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNotesPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4003
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPNotesPluginModule }); }
4004
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNotesPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: notesPlugin }] }); }
4211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPNotesPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4212
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPNotesPluginModule }); }
4213
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPNotesPluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: notesPlugin }] }); }
4005
4214
  }
4006
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNotesPluginModule, decorators: [{
4215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPNotesPluginModule, decorators: [{
4007
4216
  type: NgModule,
4008
4217
  args: [{
4009
4218
  declarations: [],
@@ -4151,9 +4360,9 @@ const primaryPlugin = {
4151
4360
  };
4152
4361
 
4153
4362
  class AXPPrimaryPluginModule {
4154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPPrimaryPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4155
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPPrimaryPluginModule }); }
4156
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPPrimaryPluginModule, providers: [
4363
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPPrimaryPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4364
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPPrimaryPluginModule }); }
4365
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPPrimaryPluginModule, providers: [
4157
4366
  // Register the primary plugin
4158
4367
  {
4159
4368
  provide: AXP_ENTITY_ACTION_PLUGIN,
@@ -4162,7 +4371,7 @@ class AXPPrimaryPluginModule {
4162
4371
  },
4163
4372
  ] }); }
4164
4373
  }
4165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPPrimaryPluginModule, decorators: [{
4374
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPPrimaryPluginModule, decorators: [{
4166
4375
  type: NgModule,
4167
4376
  args: [{
4168
4377
  providers: [
@@ -4351,9 +4560,9 @@ const statusPlugin = {
4351
4560
  * backend (e.g. connectivity/mock status-default.middleware) for security.
4352
4561
  */
4353
4562
  class AXPStatusPluginModule {
4354
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4355
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusPluginModule }); }
4356
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusPluginModule, providers: [
4563
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPStatusPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4564
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPStatusPluginModule }); }
4565
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPStatusPluginModule, providers: [
4357
4566
  {
4358
4567
  provide: AXP_ENTITY_ACTION_PLUGIN,
4359
4568
  multi: true,
@@ -4361,7 +4570,7 @@ class AXPStatusPluginModule {
4361
4570
  },
4362
4571
  ] }); }
4363
4572
  }
4364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusPluginModule, decorators: [{
4573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPStatusPluginModule, decorators: [{
4365
4574
  type: NgModule,
4366
4575
  args: [{
4367
4576
  declarations: [],
@@ -4693,11 +4902,11 @@ const titlePlugin = {
4693
4902
  };
4694
4903
 
4695
4904
  class AXPTitlePluginModule {
4696
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTitlePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4697
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPTitlePluginModule }); }
4698
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTitlePluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: titlePlugin }] }); }
4905
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTitlePluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4906
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPTitlePluginModule }); }
4907
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTitlePluginModule, providers: [{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: titlePlugin }] }); }
4699
4908
  }
4700
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTitlePluginModule, decorators: [{
4909
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTitlePluginModule, decorators: [{
4701
4910
  type: NgModule,
4702
4911
  args: [{
4703
4912
  declarations: [],
@@ -4754,9 +4963,16 @@ const uniqueFieldsPlugin = {
4754
4963
  console.warn('[unique-fields-plugin] Parent scope requires parentField option. Plugin will not be applied.');
4755
4964
  return;
4756
4965
  }
4757
- // Verify all fields exist in entity properties
4966
+ // Verify fields exist — dotted paths (e.g. scopeInfo.tenantId) match the root property
4967
+ // or the platform ownership bag (always valid on AXPEntityModel).
4758
4968
  const props = ctx.properties.list();
4759
- const missingFields = fields.filter(field => !props.some((p) => p.name === field));
4969
+ const missingFields = fields.filter((field) => {
4970
+ if (field === 'scopeInfo' || field.startsWith('scopeInfo.')) {
4971
+ return false;
4972
+ }
4973
+ const rootName = field.split('.')[0];
4974
+ return !props.some((p) => p.name === field || p.name === rootName);
4975
+ });
4760
4976
  if (missingFields.length > 0) {
4761
4977
  console.warn(`[unique-fields-plugin] Fields not found in entity: ${missingFields.join(', ')}. Plugin will not be applied.`);
4762
4978
  return;
@@ -4788,9 +5004,9 @@ const uniqueFieldsPlugin = {
4788
5004
  //#endregion
4789
5005
 
4790
5006
  class AXPUniqueFieldsPluginModule {
4791
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPUniqueFieldsPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4792
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPUniqueFieldsPluginModule }); }
4793
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPUniqueFieldsPluginModule, providers: [
5007
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPUniqueFieldsPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5008
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPUniqueFieldsPluginModule }); }
5009
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPUniqueFieldsPluginModule, providers: [
4794
5010
  {
4795
5011
  provide: AXP_ENTITY_ACTION_PLUGIN,
4796
5012
  useValue: uniqueFieldsPlugin,
@@ -4798,7 +5014,7 @@ class AXPUniqueFieldsPluginModule {
4798
5014
  },
4799
5015
  ] }); }
4800
5016
  }
4801
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPUniqueFieldsPluginModule, decorators: [{
5017
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPUniqueFieldsPluginModule, decorators: [{
4802
5018
  type: NgModule,
4803
5019
  args: [{
4804
5020
  providers: [
@@ -4833,10 +5049,10 @@ class AtLeastOneOfValidationRule {
4833
5049
  value,
4834
5050
  };
4835
5051
  }
4836
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AtLeastOneOfValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4837
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AtLeastOneOfValidationRule }); }
5052
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AtLeastOneOfValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5053
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AtLeastOneOfValidationRule }); }
4838
5054
  }
4839
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AtLeastOneOfValidationRule, decorators: [{
5055
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AtLeastOneOfValidationRule, decorators: [{
4840
5056
  type: Injectable
4841
5057
  }] });
4842
5058
 
@@ -4869,10 +5085,10 @@ class UniqueValidationRule {
4869
5085
  value,
4870
5086
  };
4871
5087
  }
4872
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: UniqueValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4873
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: UniqueValidationRule }); }
5088
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: UniqueValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5089
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: UniqueValidationRule }); }
4874
5090
  }
4875
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: UniqueValidationRule, decorators: [{
5091
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: UniqueValidationRule, decorators: [{
4876
5092
  type: Injectable
4877
5093
  }] });
4878
5094
 
@@ -4979,10 +5195,10 @@ class VariableNameValidationRule {
4979
5195
  value: value,
4980
5196
  };
4981
5197
  }
4982
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: VariableNameValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4983
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: VariableNameValidationRule }); }
5198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VariableNameValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5199
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VariableNameValidationRule }); }
4984
5200
  }
4985
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: VariableNameValidationRule, decorators: [{
5201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VariableNameValidationRule, decorators: [{
4986
5202
  type: Injectable
4987
5203
  }] });
4988
5204
 
@@ -5005,13 +5221,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5005
5221
  * ```
5006
5222
  */
5007
5223
  class AXPValidationRulesModule {
5008
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5009
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, imports: [i1$2.AXValidationModule] }); }
5010
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, imports: [AXValidationModule.forChild({
5224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPValidationRulesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5225
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPValidationRulesModule, imports: [i1$2.AXValidationModule] }); }
5226
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPValidationRulesModule, imports: [AXValidationModule.forChild({
5011
5227
  rules: [VariableNameValidationRule, UniqueValidationRule, AtLeastOneOfValidationRule],
5012
5228
  })] }); }
5013
5229
  }
5014
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValidationRulesModule, decorators: [{
5230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPValidationRulesModule, decorators: [{
5015
5231
  type: NgModule,
5016
5232
  args: [{
5017
5233
  imports: [
@@ -5104,58 +5320,104 @@ class AXPUtilsEvaluatorScopeProvider {
5104
5320
  }
5105
5321
  //#endregion
5106
5322
 
5323
+ //#region ---- Constants ----
5324
+ /** Low-level CRUD keys — feature commands (archive/delete/…) own their UX. */
5325
+ const SILENT_TOAST_COMMAND_KEYS = new Set([
5326
+ ENTITY_INSERT_DEFAULT,
5327
+ ENTITY_UPDATE_DEFAULT,
5328
+ ENTITY_DELETE_DEFAULT,
5329
+ // Auth session binds run while sessionService.isLoading is true; never toast / load settings here.
5330
+ AUTH_SIGN_IN_DEFAULT,
5331
+ AUTH_REGISTER_DEFAULT,
5332
+ AUTH_UPDATE_SESSION_DEFAULT,
5333
+ AUTH_REFRESH_DEFAULT,
5334
+ AUTH_LOGOUT_DEFAULT,
5335
+ ]);
5336
+ //#endregion
5107
5337
  //#region ---- Middleware ----
5108
5338
  /**
5109
5339
  * Displays a toast based on command execution outcome.
5340
+ * Prefers `message.text` (@i18n or plain); falls back to platform `message.code` → i18n.
5110
5341
  */
5111
- const commandMessageToastMiddleware = async (input, next) => {
5342
+ const commandMessageToastMiddleware = async (context, next) => {
5343
+ if (SILENT_TOAST_COMMAND_KEYS.has(context.key)) {
5344
+ return await next(context);
5345
+ }
5112
5346
  const toastService = inject(AXToastService);
5113
5347
  const translationService = inject(AXTranslationService);
5114
5348
  const settingService = inject(AXPSettingsService);
5115
- //
5116
- const enableOperationToasts = await settingService.get(AXPCommonSettings.EnableOperationToasts);
5117
- if (!enableOperationToasts) {
5118
- return await next(input);
5119
- }
5120
- const result = await next(input);
5121
- const message = result.message?.text;
5122
- const color = result.message?.type ?? (result.success ? 'success' : 'danger');
5123
- if (message) {
5349
+ // Non-blocking read only. `settingsService.get()` → ensureLoaded → awaitSessionReady waits for
5350
+ // !session.isLoading; Auth/session commands set isLoading=true, which caused a ~15s deadlock.
5351
+ const enableOperationToasts = settingService.peekCached(AXPCommonSettings.EnableOperationToasts);
5352
+ if (enableOperationToasts === false) {
5353
+ return await next(context);
5354
+ }
5355
+ const result = await next(context);
5356
+ const message = result.message;
5357
+ const color = message?.type ?? (result.success ? 'success' : 'danger');
5358
+ let content = null;
5359
+ const text = message?.text;
5360
+ if (typeof text === 'string' && text.trim()) {
5361
+ content = text.startsWith('@') ? await translationService.translateAsync(text) : text;
5362
+ }
5363
+ else if (text && typeof text === 'object') {
5364
+ content = translationService.resolve(text);
5365
+ }
5366
+ else {
5367
+ const codeKey = platformErrorI18nKey(message?.code);
5368
+ if (codeKey) {
5369
+ content = await translationService.translateAsync(codeKey);
5370
+ }
5371
+ }
5372
+ if (content) {
5124
5373
  const title = result.success
5125
5374
  ? await translationService.translateAsync('@general:messages.generic.success.title')
5126
5375
  : await translationService.translateAsync('@general:messages.generic.error.title');
5127
- const content = typeof message === 'string'
5128
- ? message.startsWith('@')
5129
- ? await translationService.translateAsync(message)
5130
- : message
5131
- : translationService.resolve(message);
5132
5376
  toastService.show({
5133
5377
  color: color,
5134
- title: title,
5135
- content: content,
5378
+ title,
5379
+ content,
5136
5380
  });
5137
5381
  }
5138
5382
  return result;
5139
5383
  };
5140
5384
  //#endregion
5141
5385
 
5386
+ //#region ---- Helpers ----
5387
+ /** True when the command completed without a persisted change that needs a list reload. */
5388
+ function shouldSkipLayoutRefresh(result) {
5389
+ if (!result.success) {
5390
+ return true;
5391
+ }
5392
+ if (result.metadata?.['refresh'] === false) {
5393
+ return true;
5394
+ }
5395
+ const metaOutcome = result.metadata?.['outcome'];
5396
+ if (typeof metaOutcome === 'string' && metaOutcome.toLowerCase() === 'cancelled') {
5397
+ return true;
5398
+ }
5399
+ const data = result.data;
5400
+ if (data != null && typeof data === 'object' && !Array.isArray(data)) {
5401
+ const outcome = data.outcome;
5402
+ if (typeof outcome === 'string' && outcome.toLowerCase() === 'cancelled') {
5403
+ return true;
5404
+ }
5405
+ }
5406
+ return false;
5407
+ }
5408
+ //#endregion
5142
5409
  //#region ---- Middleware ----
5143
5410
  /**
5144
5411
  * Dispatches an entity refresh event after successful command execution.
5412
+ * Skips cancel/dismiss and commands that opt out via `metadata.refresh: false`.
5145
5413
  */
5146
- const commandRefreshMiddleware = async (input, next) => {
5147
- const broadcastEventService = inject(AXPBroadcastEventService);
5148
- const result = await next(input);
5149
- if (result.success && result.metadata?.['refresh'] !== false) {
5150
- const payload = input;
5151
- const context = payload ? payload['__context__'] : undefined;
5152
- const entity = context ? context['entity'] : undefined;
5153
- if (entity) {
5154
- const meta = context ? context['meta'] : undefined;
5155
- broadcastEventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {
5156
- name: entity,
5157
- ...(meta !== undefined ? { meta } : {}),
5158
- });
5414
+ const commandRefreshMiddleware = async (context, next) => {
5415
+ const entityEvents = inject(AXPEntityBroadcastService);
5416
+ const result = await next(context);
5417
+ if (!shouldSkipLayoutRefresh(result)) {
5418
+ const resolved = resolveEntityActionCommandInput(context.input);
5419
+ if (resolved.entity) {
5420
+ entityEvents.publishLayoutRefresh(resolved.entity, resolved.meta);
5159
5421
  }
5160
5422
  }
5161
5423
  return result;
@@ -5163,13 +5425,13 @@ const commandRefreshMiddleware = async (input, next) => {
5163
5425
  //#endregion
5164
5426
 
5165
5427
  class AXMCommonMiddlewaresModule {
5166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonMiddlewaresModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5167
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonMiddlewaresModule }); }
5168
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonMiddlewaresModule, providers: [
5428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonMiddlewaresModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5429
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonMiddlewaresModule }); }
5430
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonMiddlewaresModule, providers: [
5169
5431
  provideCommandMiddleware([commandMessageToastMiddleware, commandRefreshMiddleware]),
5170
5432
  ] }); }
5171
5433
  }
5172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonMiddlewaresModule, decorators: [{
5434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonMiddlewaresModule, decorators: [{
5173
5435
  type: NgModule,
5174
5436
  args: [{
5175
5437
  providers: [
@@ -5310,19 +5572,7 @@ class AXMMenuProvider {
5310
5572
  },
5311
5573
  ]);
5312
5574
  }
5313
- const aiManagementConfigMenu = context.find(AXPCommonMenuKeys.AiManagementConfig);
5314
- if (!aiManagementConfigMenu.exists) {
5315
- context.find(AXPCommonMenuKeys.Configuration).addItems([
5316
- {
5317
- name: AXPCommonMenuKeys.AiManagementConfig,
5318
- priority: 8941,
5319
- text: '@general:menus.ai-management.title',
5320
- icon: 'fa-light fa-robot',
5321
- type: 'menu',
5322
- children: [],
5323
- },
5324
- ]);
5325
- }
5575
+ // Intelligence config shell is owned by ai-management (Platform Console feature policy).
5326
5576
  const contactsMenu = context.find(AXPCommonMenuKeys.Contacts);
5327
5577
  if (!contactsMenu.exists) {
5328
5578
  context.addItems([
@@ -5376,6 +5626,19 @@ class AXMMenuProvider {
5376
5626
  },
5377
5627
  ]);
5378
5628
  }
5629
+ const administrationMonitoringMenu = context.find(AXPCommonMenuKeys.Monitoring);
5630
+ if (!administrationMonitoringMenu.exists) {
5631
+ context.find(AXPCommonMenuKeys.Administration).addItems([
5632
+ {
5633
+ name: AXPCommonMenuKeys.Monitoring,
5634
+ priority: 12,
5635
+ text: '@general:menus.monitoring.title',
5636
+ icon: 'fa-light fa-chart-line',
5637
+ type: 'menu',
5638
+ children: [],
5639
+ },
5640
+ ]);
5641
+ }
5379
5642
  const administrationWorkflowsMenu = context.find(AXPCommonMenuKeys.Workflows);
5380
5643
  if (!administrationWorkflowsMenu.exists) {
5381
5644
  context.find(AXPCommonMenuKeys.Administration).addItems([
@@ -5455,14 +5718,83 @@ class AXMMenuProvider {
5455
5718
  }
5456
5719
  }
5457
5720
 
5721
+ //#region ----- Common / version history settings -----
5458
5722
  class AXMSettingProvider {
5459
- async provide(_context) {
5460
- // Lock-system settings (reserved): wire definitions here when enabled.
5723
+ async provide(context) {
5724
+ const retentionVisibility = `{{ context.eval('${AXPVersionHistorySettings.RetentionEnabled}') }}`;
5725
+ context
5726
+ .addGroup('version-history', '@common:version-history.settings.group.title', '@common:version-history.settings.group.description', 'fa-light fa-clock-rotate-left', undefined, 920)
5727
+ .addSection('retention', '@common:version-history.settings.retention.title', '@common:version-history.settings.retention.description')
5728
+ .addSetting({
5729
+ key: AXPVersionHistorySettings.RetentionEnabled,
5730
+ title: '@common:version-history.settings.retention.items.enabled.title',
5731
+ description: '@common:version-history.settings.retention.items.enabled.description',
5732
+ scope: 'P',
5733
+ overridableAt: [],
5734
+ isInherited: false,
5735
+ defaultValue: AXP_VERSION_HISTORY_SETTING_DEFAULTS[AXPVersionHistorySettings.RetentionEnabled],
5736
+ widget: { type: AXPWidgetsList.Editors.ToggleSwitch },
5737
+ })
5738
+ .addSetting({
5739
+ key: AXPVersionHistorySettings.RetentionPeriodDays,
5740
+ title: '@common:version-history.settings.retention.items.period.title',
5741
+ description: '@common:version-history.settings.retention.items.period.description',
5742
+ scope: 'P',
5743
+ overridableAt: [],
5744
+ isInherited: false,
5745
+ defaultValue: AXP_VERSION_HISTORY_SETTING_DEFAULTS[AXPVersionHistorySettings.RetentionPeriodDays],
5746
+ widget: {
5747
+ type: AXPWidgetsList.Editors.NumberBox,
5748
+ options: { minValue: 1, maxValue: 3650, visibility: retentionVisibility },
5749
+ },
5750
+ validationRules: [{ rule: 'required' }],
5751
+ })
5752
+ .addSetting({
5753
+ key: AXPVersionHistorySettings.RetentionBatchSize,
5754
+ title: '@common:version-history.settings.retention.items.batch-size.title',
5755
+ description: '@common:version-history.settings.retention.items.batch-size.description',
5756
+ scope: 'P',
5757
+ overridableAt: [],
5758
+ isInherited: false,
5759
+ defaultValue: AXP_VERSION_HISTORY_SETTING_DEFAULTS[AXPVersionHistorySettings.RetentionBatchSize],
5760
+ widget: {
5761
+ type: AXPWidgetsList.Editors.NumberBox,
5762
+ options: { minValue: 1, maxValue: 5000, visibility: retentionVisibility },
5763
+ },
5764
+ validationRules: [{ rule: 'required' }],
5765
+ })
5766
+ .addSetting({
5767
+ key: AXPVersionHistorySettings.RetentionPurgeCron,
5768
+ title: '@common:version-history.settings.retention.items.purge-cron.title',
5769
+ description: '@common:version-history.settings.retention.items.purge-cron.description',
5770
+ scope: 'P',
5771
+ overridableAt: [],
5772
+ isInherited: false,
5773
+ defaultValue: AXP_VERSION_HISTORY_SETTING_DEFAULTS[AXPVersionHistorySettings.RetentionPurgeCron],
5774
+ widget: {
5775
+ type: AXPWidgetsList.Editors.TextBox,
5776
+ options: { visibility: retentionVisibility },
5777
+ },
5778
+ })
5779
+ .endSection()
5780
+ .addSection('capture', '@common:version-history.settings.capture.title', '@common:version-history.settings.capture.description')
5781
+ .addSetting({
5782
+ key: AXPVersionHistorySettings.SkipEmptyPatches,
5783
+ title: '@common:version-history.settings.capture.items.skip-empty.title',
5784
+ description: '@common:version-history.settings.capture.items.skip-empty.description',
5785
+ scope: 'P',
5786
+ overridableAt: [],
5787
+ isInherited: false,
5788
+ defaultValue: AXP_VERSION_HISTORY_SETTING_DEFAULTS[AXPVersionHistorySettings.SkipEmptyPatches],
5789
+ widget: { type: AXPWidgetsList.Editors.ToggleSwitch },
5790
+ })
5791
+ .endSection()
5792
+ .endGroup();
5461
5793
  }
5462
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMSettingProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5463
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMSettingProvider }); }
5794
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5795
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingProvider }); }
5464
5796
  }
5465
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMSettingProvider, decorators: [{
5797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMSettingProvider, decorators: [{
5466
5798
  type: Injectable
5467
5799
  }] });
5468
5800
 
@@ -5639,10 +5971,10 @@ class AXCAssignmentMultiSourceDefinitionProvider {
5639
5971
  };
5640
5972
  context.addDefinition(definition);
5641
5973
  }
5642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXCAssignmentMultiSourceDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5643
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXCAssignmentMultiSourceDefinitionProvider }); }
5974
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXCAssignmentMultiSourceDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5975
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXCAssignmentMultiSourceDefinitionProvider }); }
5644
5976
  }
5645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXCAssignmentMultiSourceDefinitionProvider, decorators: [{
5977
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXCAssignmentMultiSourceDefinitionProvider, decorators: [{
5646
5978
  type: Injectable
5647
5979
  }] });
5648
5980
 
@@ -5674,18 +6006,18 @@ class AXPCommonCatalogScopeDefinitionProvider {
5674
6006
  },
5675
6007
  ];
5676
6008
  }
5677
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonCatalogScopeDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5678
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonCatalogScopeDefinitionProvider }); }
6009
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCommonCatalogScopeDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6010
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCommonCatalogScopeDefinitionProvider }); }
5679
6011
  }
5680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonCatalogScopeDefinitionProvider, decorators: [{
6012
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPCommonCatalogScopeDefinitionProvider, decorators: [{
5681
6013
  type: Injectable
5682
6014
  }] });
5683
6015
 
5684
6016
  //#region ---- Platform Imports ----
5685
6017
  //#endregion
5686
6018
  class AXMCommonModule {
5687
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5688
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonModule, imports: [
6019
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6020
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonModule, imports: [
5689
6021
  //#region ---- Extension & System Plugins ----
5690
6022
  AXPCategoryModule,
5691
6023
  AXPCatalogScopePluginModule,
@@ -5722,7 +6054,13 @@ class AXMCommonModule {
5722
6054
  //#region ---- Platform Modules ----
5723
6055
  AXPWidgetsModule,
5724
6056
  AXMCommonMiddlewaresModule] }); }
5725
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonModule, providers: [
6057
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonModule, providers: [
6058
+ //#region ---- Permission → module map (edition filtering) ----
6059
+ {
6060
+ provide: AXP_PERMISSION_MODULES_RESOLVER,
6061
+ useValue: resolvePermissionModules,
6062
+ },
6063
+ //#endregion
5726
6064
  //#region ---- Menu Provider ----
5727
6065
  {
5728
6066
  provide: AXP_MENU_PROVIDER,
@@ -5813,7 +6151,7 @@ class AXMCommonModule {
5813
6151
  provideCommandSetups([
5814
6152
  {
5815
6153
  key: 'common.get_current_time',
5816
- command: () => import('./acorex-platform-module-common-client-get-current-time.command-B7hJTMzT.mjs').then((m) => m.CommonGetCurrentTimeCommand),
6154
+ command: () => import('./acorex-platform-module-common-client-get-current-time.command-Ck_SC5Bu.mjs').then((m) => m.CommonGetCurrentTimeCommand),
5817
6155
  },
5818
6156
  ]),
5819
6157
  //#endregion
@@ -5855,7 +6193,7 @@ class AXMCommonModule {
5855
6193
  AXPWidgetsModule,
5856
6194
  AXMCommonMiddlewaresModule] }); }
5857
6195
  }
5858
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMCommonModule, decorators: [{
6196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCommonModule, decorators: [{
5859
6197
  type: NgModule,
5860
6198
  args: [{
5861
6199
  imports: [
@@ -5900,6 +6238,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5900
6238
  exports: [],
5901
6239
  declarations: [],
5902
6240
  providers: [
6241
+ //#region ---- Permission → module map (edition filtering) ----
6242
+ {
6243
+ provide: AXP_PERMISSION_MODULES_RESOLVER,
6244
+ useValue: resolvePermissionModules,
6245
+ },
6246
+ //#endregion
5903
6247
  //#region ---- Menu Provider ----
5904
6248
  {
5905
6249
  provide: AXP_MENU_PROVIDER,
@@ -5990,7 +6334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5990
6334
  provideCommandSetups([
5991
6335
  {
5992
6336
  key: 'common.get_current_time',
5993
- command: () => import('./acorex-platform-module-common-client-get-current-time.command-B7hJTMzT.mjs').then((m) => m.CommonGetCurrentTimeCommand),
6337
+ command: () => import('./acorex-platform-module-common-client-get-current-time.command-Ck_SC5Bu.mjs').then((m) => m.CommonGetCurrentTimeCommand),
5994
6338
  },
5995
6339
  ]),
5996
6340
  //#endregion
@@ -6002,7 +6346,6 @@ const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken('AXP_GLOBAL_SEARCH_CON
6002
6346
 
6003
6347
  /**
6004
6348
  * Opens the global search popup and executes the command selected by the user.
6005
- * Opens the global search popup and runs the selected command.
6006
6349
  */
6007
6350
  class AXPGlobalSearchCommand {
6008
6351
  constructor() {
@@ -6011,14 +6354,14 @@ class AXPGlobalSearchCommand {
6011
6354
  this.config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);
6012
6355
  }
6013
6356
  async execute(input) {
6014
- const opts = this.normalizeInput(input);
6357
+ const text = pickInputOrOptionsField(input, 'text');
6015
6358
  const component = await this.config.window();
6016
6359
  const popup = await this.popupService.open(component, {
6017
6360
  title: 'Search...',
6018
6361
  size: 'fit',
6019
6362
  closeOnBackdropClick: true,
6020
6363
  data: {
6021
- text: opts.text,
6364
+ text,
6022
6365
  },
6023
6366
  header: false,
6024
6367
  });
@@ -6030,19 +6373,12 @@ class AXPGlobalSearchCommand {
6030
6373
  await this.commandExecutor.execute(commandName, commandOptions);
6031
6374
  }
6032
6375
  }
6033
- return { success: true };
6034
- }
6035
- normalizeInput(input) {
6036
- const ctx = input.__context__;
6037
- const options = input.options ?? ctx?.options ?? {};
6038
- return {
6039
- text: input.text ?? options.text,
6040
- };
6376
+ return { success: true, kind: 'object', data: undefined };
6041
6377
  }
6042
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6043
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchCommand, providedIn: 'root' }); }
6378
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6379
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchCommand, providedIn: 'root' }); }
6044
6380
  }
6045
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchCommand, decorators: [{
6381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchCommand, decorators: [{
6046
6382
  type: Injectable,
6047
6383
  args: [{ providedIn: 'root' }]
6048
6384
  }] });
@@ -6062,7 +6398,8 @@ class AXPGlobalSearchSlotComponent {
6062
6398
  this.destroyRef = inject(DestroyRef);
6063
6399
  this.tabNavigation = inject(AXPTabNavigationService);
6064
6400
  this.searchShortcutKeys = chordToKbdItemKeys('ctrl+k');
6065
- this.compactSearch = computed(() => this.tabNavigation.effectiveMode() === 'tabular', ...(ngDevMode ? [{ debugName: "compactSearch" }] : /* istanbul ignore next */ []));
6401
+ this.compactSearch = computed(() => this.tabNavigation.effectiveMode() === 'tabular', /* @ts-ignore */
6402
+ ...(ngDevMode ? [{ debugName: "compactSearch" }] : /* istanbul ignore next */ []));
6066
6403
  this.shortcutRegistry.register({
6067
6404
  owner: this.destroyRef,
6068
6405
  id: 'global-search',
@@ -6085,8 +6422,8 @@ class AXPGlobalSearchSlotComponent {
6085
6422
  async startSearch() {
6086
6423
  await this.commandExecutor.execute(AXPCommonCommandKeys.GlobalSearch.Open, {});
6087
6424
  }
6088
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6089
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPGlobalSearchSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
6425
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6426
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPGlobalSearchSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
6090
6427
  @if (compactSearch()) {
6091
6428
  <ax-button
6092
6429
  color="primary"
@@ -6122,7 +6459,7 @@ class AXPGlobalSearchSlotComponent {
6122
6459
  }
6123
6460
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "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: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXKBDComponent, selector: "ax-kbd", inputs: ["look"] }, { kind: "component", type: AXKBDItemComponent, selector: "ax-kbd-item", inputs: ["keys", "join", "look"], outputs: ["lookChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6124
6461
  }
6125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchSlotComponent, decorators: [{
6462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchSlotComponent, decorators: [{
6126
6463
  type: Component,
6127
6464
  args: [{
6128
6465
  template: `
@@ -6173,13 +6510,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6173
6510
  }], ctorParameters: () => [] });
6174
6511
 
6175
6512
  class AXPGlobalSearchModule {
6176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6177
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, imports: [i1$3.AXPComponentSlotModule] }); }
6178
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, providers: [
6513
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6514
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchModule, imports: [i1$3.AXPComponentSlotModule] }); }
6515
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchModule, providers: [
6179
6516
  {
6180
6517
  provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
6181
6518
  useValue: {
6182
- window: () => import('./acorex-platform-module-common-client-search-popup.component-BjGrZHnB.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
6519
+ window: () => import('./acorex-platform-module-common-client-search-popup.component-DH0OQYoQ.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
6183
6520
  },
6184
6521
  },
6185
6522
  AXPGlobalSearchCommand,
@@ -6200,7 +6537,7 @@ class AXPGlobalSearchModule {
6200
6537
  ],
6201
6538
  })] }); }
6202
6539
  }
6203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalSearchModule, decorators: [{
6540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGlobalSearchModule, decorators: [{
6204
6541
  type: NgModule,
6205
6542
  args: [{
6206
6543
  imports: [
@@ -6221,7 +6558,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6221
6558
  {
6222
6559
  provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
6223
6560
  useValue: {
6224
- window: () => import('./acorex-platform-module-common-client-search-popup.component-BjGrZHnB.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
6561
+ window: () => import('./acorex-platform-module-common-client-search-popup.component-DH0OQYoQ.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
6225
6562
  },
6226
6563
  },
6227
6564
  AXPGlobalSearchCommand,
@@ -6243,20 +6580,30 @@ class AXPGlobalSearchViewModel {
6243
6580
  };
6244
6581
  this.searchService = inject(AXPSearchService);
6245
6582
  this.settingsService = inject(AXPSettingsService);
6246
- this._text = signal(null, ...(ngDevMode ? [{ debugName: "_text" }] : /* istanbul ignore next */ []));
6583
+ this._text = signal(null, /* @ts-ignore */
6584
+ ...(ngDevMode ? [{ debugName: "_text" }] : /* istanbul ignore next */ []));
6247
6585
  this.text = this._text.asReadonly();
6248
- this._results = signal([], ...(ngDevMode ? [{ debugName: "_results" }] : /* istanbul ignore next */ []));
6586
+ this._results = signal([], /* @ts-ignore */
6587
+ ...(ngDevMode ? [{ debugName: "_results" }] : /* istanbul ignore next */ []));
6249
6588
  this.results = this._results.asReadonly();
6250
- this._isBusy = signal(false, ...(ngDevMode ? [{ debugName: "_isBusy" }] : /* istanbul ignore next */ []));
6589
+ this._isBusy = signal(false, /* @ts-ignore */
6590
+ ...(ngDevMode ? [{ debugName: "_isBusy" }] : /* istanbul ignore next */ []));
6251
6591
  this.isBusy = this._isBusy.asReadonly();
6252
- this.isEmpty = computed(() => this.text() && this.results().length == 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
6253
- this.isValid = computed(() => (this.text()?.length ?? 0) > 2, ...(ngDevMode ? [{ debugName: "isValid" }] : /* istanbul ignore next */ []));
6254
- this.isStart = computed(() => !this.isEmpty() && this.results().length == 0, ...(ngDevMode ? [{ debugName: "isStart" }] : /* istanbul ignore next */ []));
6255
- this.isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0, ...(ngDevMode ? [{ debugName: "isWelcome" }] : /* istanbul ignore next */ []));
6256
- this._recentItems = signal([], ...(ngDevMode ? [{ debugName: "_recentItems" }] : /* istanbul ignore next */ []));
6257
- this._pinnedItems = signal([], ...(ngDevMode ? [{ debugName: "_pinnedItems" }] : /* istanbul ignore next */ []));
6592
+ this.isEmpty = computed(() => this.text() && this.results().length == 0, /* @ts-ignore */
6593
+ ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
6594
+ this.isValid = computed(() => (this.text()?.length ?? 0) > 2, /* @ts-ignore */
6595
+ ...(ngDevMode ? [{ debugName: "isValid" }] : /* istanbul ignore next */ []));
6596
+ this.isStart = computed(() => !this.isEmpty() && this.results().length == 0, /* @ts-ignore */
6597
+ ...(ngDevMode ? [{ debugName: "isStart" }] : /* istanbul ignore next */ []));
6598
+ this.isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0, /* @ts-ignore */
6599
+ ...(ngDevMode ? [{ debugName: "isWelcome" }] : /* istanbul ignore next */ []));
6600
+ this._recentItems = signal([], /* @ts-ignore */
6601
+ ...(ngDevMode ? [{ debugName: "_recentItems" }] : /* istanbul ignore next */ []));
6602
+ this._pinnedItems = signal([], /* @ts-ignore */
6603
+ ...(ngDevMode ? [{ debugName: "_pinnedItems" }] : /* istanbul ignore next */ []));
6258
6604
  this.pinnedItems = this._pinnedItems.asReadonly();
6259
- this.recentItems = computed(() => this.getTopRecentItems(), ...(ngDevMode ? [{ debugName: "recentItems" }] : /* istanbul ignore next */ []));
6605
+ this.recentItems = computed(() => this.getTopRecentItems(), /* @ts-ignore */
6606
+ ...(ngDevMode ? [{ debugName: "recentItems" }] : /* istanbul ignore next */ []));
6260
6607
  this.onItemSelected = new Subject();
6261
6608
  this.loadSettings();
6262
6609
  }
@@ -6354,7 +6701,8 @@ class AXPResourceAppointmentPageComponent extends AXPPageLayoutBaseComponent {
6354
6701
  //#endregion
6355
6702
  //#region ---- Route / Params ----
6356
6703
  /** Active provider name from route param 'provider-name'. */
6357
- this.providerName = signal(undefined, ...(ngDevMode ? [{ debugName: "providerName" }] : /* istanbul ignore next */ []));
6704
+ this.providerName = signal(undefined, /* @ts-ignore */
6705
+ ...(ngDevMode ? [{ debugName: "providerName" }] : /* istanbul ignore next */ []));
6358
6706
  }
6359
6707
  //#endregion
6360
6708
  //#region ---- Computed / Config ----
@@ -6406,15 +6754,15 @@ class AXPResourceAppointmentPageComponent extends AXPPageLayoutBaseComponent {
6406
6754
  async getPageBreadcrumbs() {
6407
6755
  return this.config?.breadcrumbs ?? [];
6408
6756
  }
6409
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPResourceAppointmentPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6410
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPResourceAppointmentPageComponent, isStandalone: true, selector: "axp-resource-appointment-page", providers: [
6757
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPResourceAppointmentPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6758
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPResourceAppointmentPageComponent, isStandalone: true, selector: "axp-resource-appointment-page", providers: [
6411
6759
  {
6412
6760
  provide: AXPPageLayoutBase,
6413
6761
  useExisting: AXPResourceAppointmentPageComponent,
6414
6762
  },
6415
- ], usesInheritance: true, ngImport: i0, template: "<axp-page-layout>\n <!-- <axp-layout-start-side class=\"border-e lightest-surface h-full min-w-0\">\n <axp-layout-header class=\"flex flex-row! items-center justify-center gap-2 border-b\">\n <span class=\"text-sm font-medium\">\n {{ title() || ('@general:terms.resource-appointment' | translate | async) || 'Resource appointment' }}\n </span>\n </axp-layout-header>\n </axp-layout-start-side> -->\n\n <axp-page-content class=\"flex flex-col min-h-0\">\n <axp-resource-appointment\n [showResourceHeaders]=\"showResourceHeaders\"\n [showUnassignedAppointments]=\"showUnassignedAppointments\"\n [providerName]=\"providerName()\"\n class=\"axp-resource-appointment-page__board flex-1 min-h-0\"\n />\n </axp-page-content>\n</axp-page-layout>\n", styles: [":host{display:block;height:100%}.axp-resource-appointment-page .axp-resource-appointment-page__board{display:block}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPResourceAppointmentComponent, selector: "axp-resource-appointment", inputs: ["showResourceHeaders", "showUnassignedAppointments", "providerName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6763
+ ], usesInheritance: true, ngImport: i0, template: "<axp-page-layout>\n <!-- <axp-layout-start-side class=\"border-e lightest-surface h-full min-w-0\">\n <axp-layout-header class=\"flex flex-row! items-center justify-center gap-2 border-b\">\n <span class=\"text-sm font-medium\">\n {{ title() || ('@general:terms.resource-appointment' | translate | async) || 'Resource appointment' }}\n </span>\n </axp-layout-header>\n </axp-layout-start-side> -->\n\n <axp-page-content class=\"flex flex-col min-h-0\">\n <axp-resource-appointment\n [showResourceHeaders]=\"showResourceHeaders\"\n [showUnassignedAppointments]=\"showUnassignedAppointments\"\n [providerName]=\"providerName()\"\n class=\"axp-resource-appointment-page__board flex-1 min-h-0\"\n />\n </axp-page-content>\n</axp-page-layout>\n", styles: [":host{display:block;height:100%}.axp-resource-appointment-page .axp-resource-appointment-page__board{display:block}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPResourceAppointmentComponent, selector: "axp-resource-appointment", inputs: ["showResourceHeaders", "showUnassignedAppointments", "providerName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6416
6764
  }
6417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPResourceAppointmentPageComponent, decorators: [{
6765
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPResourceAppointmentPageComponent, decorators: [{
6418
6766
  type: Component,
6419
6767
  args: [{ selector: 'axp-resource-appointment-page', imports: [
6420
6768
  AXTranslationModule,
@@ -6426,7 +6774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6426
6774
  provide: AXPPageLayoutBase,
6427
6775
  useExisting: AXPResourceAppointmentPageComponent,
6428
6776
  },
6429
- ], template: "<axp-page-layout>\n <!-- <axp-layout-start-side class=\"border-e lightest-surface h-full min-w-0\">\n <axp-layout-header class=\"flex flex-row! items-center justify-center gap-2 border-b\">\n <span class=\"text-sm font-medium\">\n {{ title() || ('@general:terms.resource-appointment' | translate | async) || 'Resource appointment' }}\n </span>\n </axp-layout-header>\n </axp-layout-start-side> -->\n\n <axp-page-content class=\"flex flex-col min-h-0\">\n <axp-resource-appointment\n [showResourceHeaders]=\"showResourceHeaders\"\n [showUnassignedAppointments]=\"showUnassignedAppointments\"\n [providerName]=\"providerName()\"\n class=\"axp-resource-appointment-page__board flex-1 min-h-0\"\n />\n </axp-page-content>\n</axp-page-layout>\n", styles: [":host{display:block;height:100%}.axp-resource-appointment-page .axp-resource-appointment-page__board{display:block}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
6777
+ ], template: "<axp-page-layout>\n <!-- <axp-layout-start-side class=\"border-e lightest-surface h-full min-w-0\">\n <axp-layout-header class=\"flex flex-row! items-center justify-center gap-2 border-b\">\n <span class=\"text-sm font-medium\">\n {{ title() || ('@general:terms.resource-appointment' | translate | async) || 'Resource appointment' }}\n </span>\n </axp-layout-header>\n </axp-layout-start-side> -->\n\n <axp-page-content class=\"flex flex-col min-h-0\">\n <axp-resource-appointment\n [showResourceHeaders]=\"showResourceHeaders\"\n [showUnassignedAppointments]=\"showUnassignedAppointments\"\n [providerName]=\"providerName()\"\n class=\"axp-resource-appointment-page__board flex-1 min-h-0\"\n />\n </axp-page-content>\n</axp-page-layout>\n", styles: [":host{display:block;height:100%}.axp-resource-appointment-page .axp-resource-appointment-page__board{display:block}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
6430
6778
  }] });
6431
6779
 
6432
6780
  /**
@@ -6434,4 +6782,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6434
6782
  */
6435
6783
 
6436
6784
  export { statusPlugin as $, AXP_ENTITY_ARCHIVE_OVERRIDES as A, StateStatusProvider as B, CommonManifest as C, VariableNameValidationRule as D, aggregateVersionHistoryBarChartItems as E, archivePlugin as F, buildEntityFieldHistoryLineChartSeries as G, HISTORY_PAGE_COMPONENT_KEY as H, buildProductBasePriceHistoryLineChartSeries as I, derivedNamePlugin as J, disablePlugin as K, getActiveStatuses as L, getFinalStatuses as M, getInitialStatuses as N, getStatusByName as O, getTransitionsFromStatus as P, getTransitionsToStatus as Q, historyPlugin as R, ShowVersionHistoryPopupCommand as S, TaskStatusProvider as T, UniqueValidationRule as U, VARIABLE_NAME_VALIDATION_PATTERN as V, humanizeChange as W, isValidTransition as X, mapChangeType as Y, mapOpToAction as Z, resolvePathKey as _, AXPGlobalSearchViewModel as a, uniqueFieldsPlugin as a0, AXMCommonModule as b, AXMMenuProvider as c, AXMSettingProvider as d, AXMVersionHistoryPageComponent as e, AXPArchivePluginModule as f, AXPCommonFeatureDefinitionProvider as g, AXPDerivedNamePluginModule as h, isValidVariableName as i, AXPDisablePluginModule as j, AXPGlobalSearchModule as k, AXPHistoryAuditInfoWidget as l, AXPHistoryModule as m, AXPLockEntityCommand as n, openActivityLogVersionCompare as o, AXPResourceAppointmentPageComponent as p, AXPStatusPluginModule as q, AXPUniqueFieldsPluginModule as r, AXPUnlockEntityCommand as s, toVariableName as t, AXPValidationRulesModule as u, versionEntriesToActivityLogs as v, AXP_GLOBAL_SEARCH_CONFIG_TOKEN as w, AXP_RESOURCE_APPOINTMENT_PAGE_CONFIG as x, ApprovalStatusProvider as y, AtLeastOneOfValidationRule as z };
6437
- //# sourceMappingURL=acorex-platform-module-common-client-acorex-platform-module-common-client-rqWzT7RI.mjs.map
6785
+ //# sourceMappingURL=acorex-platform-module-common-client-acorex-platform-module-common-client-CkeshVWo.mjs.map