@acorex/platform 21.0.0-next.24 → 21.0.0-next.33

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 (118) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +121 -27
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-gyb6ohAE.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +46 -4
  4. package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +677 -267
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +393 -111
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +554 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +345 -59
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-Cb6Lk4Ch.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs} +9 -9
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +3373 -872
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +169 -154
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +14645 -11533
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +244 -170
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +367 -408
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-Dnbx_uY7.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-B0omAUil.mjs → acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs} +30 -22
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-D-HFZHNZ.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-q30grR3z.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs +111 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BJh1QJqp.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +7 -7
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component--rzP7scF.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +5 -5
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-DHlgsHa7.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +5924 -4049
  42. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-native.mjs +8 -7
  44. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-runtime.mjs +220 -169
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-di5w_3K2.mjs → acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs} +15 -22
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +1 -0
  53. package/fesm2022/{acorex-platform-themes-default-error-401.component-D9NZ-6L_.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
  55. package/fesm2022/{acorex-platform-themes-default-error-404.component-CgB_tlPU.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1667 -61
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-Cmju9l91.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-Cp5Th57U.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
  65. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +1 -1
  66. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-BQxoUmYL.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs} +4 -4
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +1 -0
  68. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-CTGy2kjJ.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs} +9 -9
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +1 -0
  70. package/fesm2022/acorex-platform-themes-shared.mjs +231 -227
  71. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  72. package/fesm2022/acorex-platform-workflow.mjs +208 -91
  73. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  74. package/fesm2022/acorex-platform.mjs.map +1 -1
  75. package/package.json +34 -34
  76. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +14 -2
  77. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +189 -16
  78. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +178 -15
  79. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +719 -413
  80. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +91 -42
  81. package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +893 -138
  82. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +9 -3
  83. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +515 -26
  84. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +44 -9
  85. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +146 -95
  86. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +506 -98
  87. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  88. package/{runtime/index.d.ts → types/acorex-platform-runtime.d.ts} +237 -74
  89. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +104 -4
  90. package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +33 -30
  91. package/fesm2022/acorex-platform-common-common-settings.provider-gyb6ohAE.mjs.map +0 -1
  92. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-Cb6Lk4Ch.mjs.map +0 -1
  93. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dnbx_uY7.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-B0omAUil.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-D-HFZHNZ.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-q30grR3z.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-fcCirNxz.mjs +0 -111
  98. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-fcCirNxz.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-BJh1QJqp.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component--rzP7scF.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-DHlgsHa7.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D_ex0nL2.mjs +0 -160
  103. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D_ex0nL2.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BhDLyC5P.mjs +0 -1611
  105. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BhDLyC5P.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CgLUnYRq.mjs +0 -99
  107. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CgLUnYRq.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-di5w_3K2.mjs.map +0 -1
  109. package/fesm2022/acorex-platform-themes-default-error-401.component-D9NZ-6L_.mjs.map +0 -1
  110. package/fesm2022/acorex-platform-themes-default-error-404.component-CgB_tlPU.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-default-error-offline.component-DlUrqVmj.mjs +0 -19
  112. package/fesm2022/acorex-platform-themes-default-error-offline.component-DlUrqVmj.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-Cmju9l91.mjs.map +0 -1
  114. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-Cp5Th57U.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BQxoUmYL.mjs.map +0 -1
  116. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-CTGy2kjJ.mjs.map +0 -1
  117. /package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +0 -0
  118. /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable, Injector, makeEnvironmentProviders, NgModule, ErrorHandler, EventEmitter, Input, Output, Directive, Component, ViewEncapsulation, Inject, runInInjectionContext, signal, model, linkedSignal, afterNextRender } from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, Injector, signal, makeEnvironmentProviders, NgModule, ErrorHandler, EventEmitter, Input, Output, Directive, ChangeDetectionStrategy, Component, ViewEncapsulation, Inject, runInInjectionContext, model, linkedSignal, afterNextRender } from '@angular/core';
3
3
  import { kebabCase, merge, sortBy, cloneDeep, get, omit } from 'lodash-es';
4
4
  import { Router, ROUTES, RouterModule } from '@angular/router';
5
5
  import { AXPSessionService, AXPSessionStatus } from '@acorex/platform/auth';
@@ -12,6 +12,7 @@ import { AXToastService, AXToastModule } from '@acorex/components/toast';
12
12
  import { AXDateTimeModule } from '@acorex/core/date-time';
13
13
  import * as i1 from '@acorex/platform/workflow';
14
14
  import { AXPWorkflowService, createWorkFlowEvent, AXPWorkflowAction, AXPWorkflowError, AXPWorkflowModule } from '@acorex/platform/workflow';
15
+ import { AXDataSource } from '@acorex/cdk/common';
15
16
  import { AXPCommandExecutor, AXPCommandService } from '@acorex/platform/runtime';
16
17
  import { signalStore, withState, withMethods, patchState, withHooks } from '@ngrx/signals';
17
18
  import { AXFormatService } from '@acorex/core/format';
@@ -55,10 +56,10 @@ class AXPAppVersionService {
55
56
  async getAppVersion() {
56
57
  return this.provider.provider();
57
58
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPAppVersionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
59
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPAppVersionService, providedIn: 'root' }); }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAppVersionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAppVersionService, providedIn: 'root' }); }
60
61
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPAppVersionService, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAppVersionService, decorators: [{
62
63
  type: Injectable,
63
64
  args: [{
64
65
  providedIn: 'root',
@@ -127,6 +128,13 @@ function createAllQueryView(params = {
127
128
  sorts: params.sorts ?? [],
128
129
  });
129
130
  }
131
+ // new version
132
+ var AXPEntityType;
133
+ (function (AXPEntityType) {
134
+ AXPEntityType[AXPEntityType["Entity"] = 0] = "Entity";
135
+ AXPEntityType[AXPEntityType["AggregateRoot"] = 1] = "AggregateRoot";
136
+ AXPEntityType[AXPEntityType["ValueObject"] = 2] = "ValueObject";
137
+ })(AXPEntityType || (AXPEntityType = {}));
130
138
 
131
139
  const EQ_OPER = { name: 'equal', title: '@general:terms.operators.equal', hasValue: true };
132
140
  const NOT_EQ_OPER = { name: 'notEqual', title: '@general:terms.operators.not-equal', hasValue: true };
@@ -201,6 +209,120 @@ const AXP_HOME_PAGE_DEFAULT_KEY = new InjectionToken('AXP_HOME_PAGE_DEFAULT_KEY'
201
209
  factory: () => 'home'
202
210
  });
203
211
 
212
+ /**
213
+ * Regional and locale-related setting keys used by platform widgets and components.
214
+ * Most values use the `LocaleManagement:Setting:Regional.*` prefix; definitions live in the locale-management module where applicable.
215
+ */
216
+ var AXPRegionalSetting;
217
+ (function (AXPRegionalSetting) {
218
+ AXPRegionalSetting["LocaleProfile"] = "LocaleManagement:Setting:Regional.LocaleProfile";
219
+ AXPRegionalSetting["TimeZone"] = "LocaleManagement:Setting:Regional.TimeZone";
220
+ AXPRegionalSetting["Language"] = "LocaleManagement:Setting:Regional.Language";
221
+ AXPRegionalSetting["Country"] = "LocaleManagement:Setting:Regional.Country";
222
+ AXPRegionalSetting["Calendar"] = "LocaleManagement:Setting:Regional.Calendar";
223
+ AXPRegionalSetting["FirstDayOfWeek"] = "LocaleManagement:Setting:Regional.FirstDayOfWeek";
224
+ AXPRegionalSetting["WeekendDays"] = "LocaleManagement:Setting:Regional.WeekendDays";
225
+ AXPRegionalSetting["ShortDate"] = "LocaleManagement:Setting:Regional.ShortDate";
226
+ AXPRegionalSetting["MediumDate"] = "LocaleManagement:Setting:Regional.MediumDate";
227
+ AXPRegionalSetting["LongDate"] = "LocaleManagement:Setting:Regional.LongDate";
228
+ AXPRegionalSetting["ShortTime"] = "LocaleManagement:Setting:Regional.ShortTime";
229
+ AXPRegionalSetting["MediumTime"] = "LocaleManagement:Setting:Regional.MediumTime";
230
+ AXPRegionalSetting["LongTime"] = "LocaleManagement:Setting:Regional.LongTime";
231
+ AXPRegionalSetting["MeasurementUnits"] = "LocaleManagement:Setting:Regional.MeasurementUnits";
232
+ AXPRegionalSetting["TemperatureUnits"] = "LocaleManagement:Setting:Regional.TemperatureUnits";
233
+ AXPRegionalSetting["DistanceUnits"] = "LocaleManagement:Setting:Regional.DistanceUnits";
234
+ AXPRegionalSetting["WeightUnits"] = "LocaleManagement:Setting:Regional.WeightUnits";
235
+ AXPRegionalSetting["VolumeUnits"] = "LocaleManagement:Setting:Regional.VolumeUnits";
236
+ AXPRegionalSetting["SpeedUnits"] = "LocaleManagement:Setting:Regional.SpeedUnits";
237
+ AXPRegionalSetting["AreaUnits"] = "LocaleManagement:Setting:Regional.AreaUnits";
238
+ /** Default multi-language behavior for standard text field names; defined in locale-management `AXMRegionalSettingProvider`. */
239
+ AXPRegionalSetting["MultiLanguageSupport"] = "LocaleManagement:Setting:Regional.MultiLanguageSupport";
240
+ })(AXPRegionalSetting || (AXPRegionalSetting = {}));
241
+
242
+ const AXP_SETTING_VALUE_PROVIDER = new InjectionToken('AXP_SETTING_VALUE_PROVIDER', {
243
+ providedIn: 'root',
244
+ factory: () => {
245
+ const injector = inject(Injector);
246
+ return [
247
+ new AXPSettingValueProviderDefault(AXPPlatformScope.Platform, injector),
248
+ new AXPSettingValueProviderDefault(AXPPlatformScope.Tenant, injector),
249
+ new AXPSettingValueProviderDefault(AXPPlatformScope.User, injector)
250
+ ];
251
+ }
252
+ });
253
+ class AXPSettingValueProviderDefault {
254
+ constructor(_scope, injector) {
255
+ this._scope = _scope;
256
+ this.injector = injector;
257
+ this.cache = new Map();
258
+ this.localStorageKey = null;
259
+ this.sessionService = this.injector.get(AXPSessionService);
260
+ // Platform scope doesn't depend on session, initialize immediately
261
+ if (this.scope === AXPPlatformScope.Platform) {
262
+ this.localStorageKey = `AXP_SETTINGS_SCOPE(P)`;
263
+ }
264
+ else {
265
+ this.sessionService.status$.subscribe((status) => {
266
+ if (status === AXPSessionStatus.Authorized || status === AXPSessionStatus.Authenticated) {
267
+ if (this.scope === AXPPlatformScope.User) {
268
+ this.localStorageKey = `AXP_SETTINGS_SCOPE(${this.sessionService.user?.id ?? 'U'})`;
269
+ }
270
+ else if (this.scope === AXPPlatformScope.Tenant) {
271
+ this.localStorageKey = `AXP_SETTINGS_SCOPE(${this.sessionService.tenant?.id ?? 'T'})`;
272
+ }
273
+ }
274
+ });
275
+ }
276
+ }
277
+ get scope() {
278
+ return this._scope;
279
+ }
280
+ async load() {
281
+ if (!this.localStorageKey) {
282
+ return Promise.resolve([]);
283
+ }
284
+ // Load settings from localStorage as a single key
285
+ const storedSettings = localStorage.getItem(this.localStorageKey);
286
+ if (storedSettings) {
287
+ const parsedSettings = JSON.parse(storedSettings);
288
+ Object.entries(parsedSettings).forEach(([key, value]) => {
289
+ this.cache.set(key, value);
290
+ });
291
+ return Promise.resolve(Array.from(this.cache.entries()).map(c => ({ key: c[0], value: c[1] })));
292
+ }
293
+ return Promise.resolve([]);
294
+ }
295
+ async set(keyOrValues, value) {
296
+ if (typeof keyOrValues === 'string') {
297
+ // Single value update
298
+ this.cache.set(keyOrValues, value);
299
+ }
300
+ else {
301
+ // Bulk update
302
+ for (const [key, val] of Object.entries(keyOrValues)) {
303
+ this.cache.set(key, val);
304
+ }
305
+ }
306
+ await this.saveToLocalStorage();
307
+ }
308
+ async saveToLocalStorage() {
309
+ if (!this.localStorageKey) {
310
+ return;
311
+ }
312
+ const settingsObject = {};
313
+ this.cache.forEach((value, key) => {
314
+ settingsObject[key] = value;
315
+ });
316
+ localStorage.setItem(this.localStorageKey, JSON.stringify(settingsObject));
317
+ }
318
+ async clear() {
319
+ if (!this.localStorageKey) {
320
+ return;
321
+ }
322
+ localStorage.removeItem(this.localStorageKey);
323
+ }
324
+ }
325
+
204
326
  class AXPSettingDefinitionProviderContext {
205
327
  constructor() {
206
328
  this.rootGroups = [];
@@ -434,10 +556,10 @@ class AXPSettingDefinitionProviderService {
434
556
  sections: []
435
557
  };
436
558
  }
437
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
438
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingDefinitionProviderService, providedIn: 'root' }); }
559
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
560
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingDefinitionProviderService, providedIn: 'root' }); }
439
561
  }
440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingDefinitionProviderService, decorators: [{
562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingDefinitionProviderService, decorators: [{
441
563
  type: Injectable,
442
564
  args: [{ providedIn: 'root' }]
443
565
  }] });
@@ -467,98 +589,14 @@ class AXPSettingDefaultValuesAggregatorService {
467
589
  }
468
590
  return merged;
469
591
  }
470
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingDefaultValuesAggregatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
471
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingDefaultValuesAggregatorService, providedIn: 'root' }); }
592
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingDefaultValuesAggregatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
593
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingDefaultValuesAggregatorService, providedIn: 'root' }); }
472
594
  }
473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingDefaultValuesAggregatorService, decorators: [{
595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingDefaultValuesAggregatorService, decorators: [{
474
596
  type: Injectable,
475
597
  args: [{ providedIn: 'root' }]
476
598
  }] });
477
599
 
478
- const AXP_SETTING_VALUE_PROVIDER = new InjectionToken('AXP_SETTING_VALUE_PROVIDER', {
479
- providedIn: 'root',
480
- factory: () => {
481
- const injector = inject(Injector);
482
- return [
483
- new AXPSettingValueProviderDefault(AXPPlatformScope.Platform, injector),
484
- new AXPSettingValueProviderDefault(AXPPlatformScope.Tenant, injector),
485
- new AXPSettingValueProviderDefault(AXPPlatformScope.User, injector)
486
- ];
487
- }
488
- });
489
- class AXPSettingValueProviderDefault {
490
- constructor(_scope, injector) {
491
- this._scope = _scope;
492
- this.injector = injector;
493
- this.cache = new Map();
494
- this.localStorageKey = null;
495
- this.sessionService = this.injector.get(AXPSessionService);
496
- // Platform scope doesn't depend on session, initialize immediately
497
- if (this.scope === AXPPlatformScope.Platform) {
498
- this.localStorageKey = `AXP_SETTINGS_SCOPE(P)`;
499
- }
500
- else {
501
- this.sessionService.status$.subscribe((status) => {
502
- if (status === AXPSessionStatus.Authorized || status === AXPSessionStatus.Authenticated) {
503
- if (this.scope === AXPPlatformScope.User) {
504
- this.localStorageKey = `AXP_SETTINGS_SCOPE(${this.sessionService.user?.id ?? 'U'})`;
505
- }
506
- else if (this.scope === AXPPlatformScope.Tenant) {
507
- this.localStorageKey = `AXP_SETTINGS_SCOPE(${this.sessionService.tenant?.id ?? 'T'})`;
508
- }
509
- }
510
- });
511
- }
512
- }
513
- get scope() {
514
- return this._scope;
515
- }
516
- async load() {
517
- if (!this.localStorageKey) {
518
- return Promise.resolve([]);
519
- }
520
- // Load settings from localStorage as a single key
521
- const storedSettings = localStorage.getItem(this.localStorageKey);
522
- if (storedSettings) {
523
- const parsedSettings = JSON.parse(storedSettings);
524
- Object.entries(parsedSettings).forEach(([key, value]) => {
525
- this.cache.set(key, value);
526
- });
527
- return Promise.resolve(Array.from(this.cache.entries()).map(c => ({ key: c[0], value: c[1] })));
528
- }
529
- return Promise.resolve([]);
530
- }
531
- async set(keyOrValues, value) {
532
- if (typeof keyOrValues === 'string') {
533
- // Single value update
534
- this.cache.set(keyOrValues, value);
535
- }
536
- else {
537
- // Bulk update
538
- for (const [key, val] of Object.entries(keyOrValues)) {
539
- this.cache.set(key, val);
540
- }
541
- }
542
- await this.saveToLocalStorage();
543
- }
544
- async saveToLocalStorage() {
545
- if (!this.localStorageKey) {
546
- return;
547
- }
548
- const settingsObject = {};
549
- this.cache.forEach((value, key) => {
550
- settingsObject[key] = value;
551
- });
552
- localStorage.setItem(this.localStorageKey, JSON.stringify(settingsObject));
553
- }
554
- async clear() {
555
- if (!this.localStorageKey) {
556
- return;
557
- }
558
- localStorage.removeItem(this.localStorageKey);
559
- }
560
- }
561
-
562
600
  class AXPSettingsService {
563
601
  constructor() {
564
602
  this.providers = inject(AXP_SETTING_VALUE_PROVIDER);
@@ -676,10 +714,10 @@ class AXPSettingsService {
676
714
  this.onChanged.next(event);
677
715
  this.eventService.publish('AXPSettingChangedEvent', event);
678
716
  }
679
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
680
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingsService, providedIn: 'root' }); }
717
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
718
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingsService, providedIn: 'root' }); }
681
719
  }
682
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSettingsService, decorators: [{
720
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSettingsService, decorators: [{
683
721
  type: Injectable,
684
722
  args: [{
685
723
  providedIn: 'root',
@@ -735,34 +773,219 @@ class ScopedSettingService {
735
773
  }
736
774
  }
737
775
 
776
+ const DEFAULT_APPLY_DEFAULT_MULTILANGUAGE = true;
738
777
  /**
739
- * Regional settings keys for date, time, and locale formatting.
740
- * These keys are used by platform widgets and components to access regional settings.
741
- * The actual setting definitions and providers are implemented in the locale-management module.
778
+ * Synchronous access to default multi-language behavior for named entity fields and widget
779
+ * property bindings. Mirrors {@link AXPLayoutOrderingConfigService}: avoids async in entity
780
+ * modifiers and startup deadlocks.
742
781
  */
743
- var AXPRegionalSetting;
744
- (function (AXPRegionalSetting) {
745
- AXPRegionalSetting["LocaleProfile"] = "LocaleManagement:Setting:Regional.LocaleProfile";
746
- AXPRegionalSetting["TimeZone"] = "LocaleManagement:Setting:Regional.TimeZone";
747
- AXPRegionalSetting["Language"] = "LocaleManagement:Setting:Regional.Language";
748
- AXPRegionalSetting["Country"] = "LocaleManagement:Setting:Regional.Country";
749
- AXPRegionalSetting["Calendar"] = "LocaleManagement:Setting:Regional.Calendar";
750
- AXPRegionalSetting["FirstDayOfWeek"] = "LocaleManagement:Setting:Regional.FirstDayOfWeek";
751
- AXPRegionalSetting["WeekendDays"] = "LocaleManagement:Setting:Regional.WeekendDays";
752
- AXPRegionalSetting["ShortDate"] = "LocaleManagement:Setting:Regional.ShortDate";
753
- AXPRegionalSetting["MediumDate"] = "LocaleManagement:Setting:Regional.MediumDate";
754
- AXPRegionalSetting["LongDate"] = "LocaleManagement:Setting:Regional.LongDate";
755
- AXPRegionalSetting["ShortTime"] = "LocaleManagement:Setting:Regional.ShortTime";
756
- AXPRegionalSetting["MediumTime"] = "LocaleManagement:Setting:Regional.MediumTime";
757
- AXPRegionalSetting["LongTime"] = "LocaleManagement:Setting:Regional.LongTime";
758
- AXPRegionalSetting["MeasurementUnits"] = "LocaleManagement:Setting:Regional.MeasurementUnits";
759
- AXPRegionalSetting["TemperatureUnits"] = "LocaleManagement:Setting:Regional.TemperatureUnits";
760
- AXPRegionalSetting["DistanceUnits"] = "LocaleManagement:Setting:Regional.DistanceUnits";
761
- AXPRegionalSetting["WeightUnits"] = "LocaleManagement:Setting:Regional.WeightUnits";
762
- AXPRegionalSetting["VolumeUnits"] = "LocaleManagement:Setting:Regional.VolumeUnits";
763
- AXPRegionalSetting["SpeedUnits"] = "LocaleManagement:Setting:Regional.SpeedUnits";
764
- AXPRegionalSetting["AreaUnits"] = "LocaleManagement:Setting:Regional.AreaUnits";
765
- })(AXPRegionalSetting || (AXPRegionalSetting = {}));
782
+ class AXPDefaultMultiLanguageConfigService {
783
+ constructor() {
784
+ this.settingsService = inject(AXPSettingsService);
785
+ this._applyDefault = signal(DEFAULT_APPLY_DEFAULT_MULTILANGUAGE, ...(ngDevMode ? [{ debugName: "_applyDefault" }] : /* istanbul ignore next */ []));
786
+ this.syncScheduled = false;
787
+ this.settingsService.onLoaded.subscribe(() => this.syncFromSettings());
788
+ this.settingsService.onChanged.subscribe(() => this.syncFromSettings());
789
+ }
790
+ getApplyDefaultMultiLanguage() {
791
+ if (!this.syncScheduled) {
792
+ this.syncScheduled = true;
793
+ this.settingsService
794
+ .get(AXPRegionalSetting.MultiLanguageSupport)
795
+ .then((value) => this._applyDefault.set(value ?? DEFAULT_APPLY_DEFAULT_MULTILANGUAGE))
796
+ .catch(() => this._applyDefault.set(DEFAULT_APPLY_DEFAULT_MULTILANGUAGE));
797
+ }
798
+ return this._applyDefault();
799
+ }
800
+ async syncFromSettings() {
801
+ try {
802
+ const value = await this.settingsService.get(AXPRegionalSetting.MultiLanguageSupport);
803
+ this._applyDefault.set(value ?? DEFAULT_APPLY_DEFAULT_MULTILANGUAGE);
804
+ }
805
+ catch {
806
+ this._applyDefault.set(DEFAULT_APPLY_DEFAULT_MULTILANGUAGE);
807
+ }
808
+ }
809
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultMultiLanguageConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
810
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultMultiLanguageConfigService, providedIn: 'root' }); }
811
+ }
812
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultMultiLanguageConfigService, decorators: [{
813
+ type: Injectable,
814
+ args: [{ providedIn: 'root' }]
815
+ }], ctorParameters: () => [] });
816
+
817
+ //#region ---- Constants ----
818
+ /**
819
+ * Widget types that support the multiLanguage option (text / rich text editors).
820
+ */
821
+ const MULTILANGUAGE_CAPABLE_WIDGET_TYPES = new Set([
822
+ 'text-editor',
823
+ 'large-text-editor',
824
+ 'rich-text-editor',
825
+ 'template-content-editor',
826
+ ]);
827
+ /**
828
+ * Common property names / binding path segments that are usually translatable when the feature is
829
+ * enabled in settings. Explicit `multiLanguage` on the property still wins.
830
+ */
831
+ const DEFAULT_MULTILANGUAGE_FIELD_NAMES = new Set([
832
+ 'title',
833
+ 'description',
834
+ 'note',
835
+ 'content',
836
+ /** e.g. `post.summaryContent` — last path segment */
837
+ 'summaryContent',
838
+ 'question',
839
+ 'summary',
840
+ 'body',
841
+ 'caption',
842
+ 'remarks',
843
+ 'subtitle',
844
+ 'label',
845
+ 'placeholder',
846
+ 'message',
847
+ 'subject',
848
+ ]);
849
+ //#endregion
850
+ //#region ---- Helpers ----
851
+ function interfacePathLastSegment(path) {
852
+ if (path == null || typeof path !== 'string' || !path.length) {
853
+ return null;
854
+ }
855
+ const seg = path.includes('.') ? path.split('.').pop() : path;
856
+ return seg && seg.length ? seg : null;
857
+ }
858
+ function shouldApplyDefaultMultiLanguageToEntityProperty(prop) {
859
+ if (prop.schema.dataType !== 'string') {
860
+ return false;
861
+ }
862
+ if (!DEFAULT_MULTILANGUAGE_FIELD_NAMES.has(prop.name)) {
863
+ return false;
864
+ }
865
+ const widgetType = prop.schema.interface?.type;
866
+ if (typeof widgetType !== 'string' || !MULTILANGUAGE_CAPABLE_WIDGET_TYPES.has(widgetType)) {
867
+ return false;
868
+ }
869
+ const opts = prop.schema.interface?.options;
870
+ if (opts && 'multiLanguage' in opts) {
871
+ return false;
872
+ }
873
+ return true;
874
+ }
875
+ function shouldApplyDefaultMultiLanguageToWidgetProperty(prop) {
876
+ if (prop.schema.dataType !== 'string') {
877
+ return false;
878
+ }
879
+ const key = interfacePathLastSegment(prop.schema.interface.path);
880
+ if (!key || !DEFAULT_MULTILANGUAGE_FIELD_NAMES.has(key)) {
881
+ return false;
882
+ }
883
+ const widgetType = prop.schema.interface.type;
884
+ if (typeof widgetType !== 'string' || !MULTILANGUAGE_CAPABLE_WIDGET_TYPES.has(widgetType)) {
885
+ return false;
886
+ }
887
+ const opts = prop.schema.interface.options;
888
+ if (opts && 'multiLanguage' in opts) {
889
+ return false;
890
+ }
891
+ return true;
892
+ }
893
+ /**
894
+ * Leaf widget nodes in entity `schema.interface` trees (e.g. GridLayout → RichText under `pre` /
895
+ * `post`) — same path/type rules as {@link shouldApplyDefaultMultiLanguageToWidgetProperty}, without
896
+ * `schema.dataType` (nodes do not carry entity schema).
897
+ */
898
+ function shouldApplyDefaultMultiLanguageToWidgetNode(node) {
899
+ const widgetType = node.type;
900
+ if (typeof widgetType !== 'string' || !MULTILANGUAGE_CAPABLE_WIDGET_TYPES.has(widgetType)) {
901
+ return false;
902
+ }
903
+ const key = interfacePathLastSegment(node.path);
904
+ if (!key || !DEFAULT_MULTILANGUAGE_FIELD_NAMES.has(key)) {
905
+ return false;
906
+ }
907
+ const opts = node.options;
908
+ if (opts && 'multiLanguage' in opts) {
909
+ return false;
910
+ }
911
+ return true;
912
+ }
913
+ /**
914
+ * When {@link AXPDefaultMultiLanguageConfigService#getApplyDefaultMultiLanguage} is true, sets
915
+ * `options.multiLanguage` on eligible editor leaves inside an entity property's widget tree
916
+ * (including nested layouts). Used by entity middleware so object fields (e.g. `pre`, `post`) are
917
+ * covered, not only top-level string properties.
918
+ */
919
+ function withDefaultMultiLanguageOnWidgetNodeTree(root, applyDefault) {
920
+ if (root == null || !applyDefault) {
921
+ return root ?? undefined;
922
+ }
923
+ return visitWidgetNodeForDefaultMultiLanguage(root);
924
+ }
925
+ function visitWidgetNodeForDefaultMultiLanguage(node) {
926
+ let next = node;
927
+ if (node.children?.length) {
928
+ const newChildren = node.children.map((child) => visitWidgetNodeForDefaultMultiLanguage(child));
929
+ if (newChildren.some((c, i) => c !== node.children[i])) {
930
+ next = { ...node, children: newChildren };
931
+ }
932
+ }
933
+ if (shouldApplyDefaultMultiLanguageToWidgetNode(next)) {
934
+ return {
935
+ ...next,
936
+ options: {
937
+ ...(next.options ?? {}),
938
+ multiLanguage: true,
939
+ },
940
+ };
941
+ }
942
+ return next;
943
+ }
944
+ /**
945
+ * When {@link AXPDefaultMultiLanguageConfigService#getApplyDefaultMultiLanguage} is true, sets
946
+ * `schema.interface.options.multiLanguage` for eligible string widget properties (same rules as
947
+ * entity middleware), unless the property already specifies `multiLanguage`.
948
+ */
949
+ function withDefaultMultiLanguageOnWidgetProperty(prop, applyDefault) {
950
+ if (!applyDefault || !shouldApplyDefaultMultiLanguageToWidgetProperty(prop)) {
951
+ return prop;
952
+ }
953
+ const iface = prop.schema.interface;
954
+ const existingOpts = (iface.options ?? {});
955
+ return {
956
+ ...prop,
957
+ schema: {
958
+ ...prop.schema,
959
+ interface: {
960
+ ...iface,
961
+ options: {
962
+ ...existingOpts,
963
+ multiLanguage: true,
964
+ },
965
+ },
966
+ },
967
+ };
968
+ }
969
+ //#endregion
970
+
971
+ //#region ---- Settings expression scope ----
972
+ /**
973
+ * Exposes platform settings in expression strings, e.g.
974
+ * `{{ settings.get('Common:Setting:Entity.ShowPageBadge') }}`.
975
+ */
976
+ class AXPSettingsEvaluatorScopeProvider {
977
+ constructor() {
978
+ this.settingsService = inject(AXPSettingsService);
979
+ }
980
+ async provide(context) {
981
+ context.addScope('settings', {
982
+ get: async (key) => {
983
+ return await this.settingsService.get(key);
984
+ },
985
+ });
986
+ }
987
+ }
988
+ //#endregion
766
989
 
767
990
  var AXPHomePageSettings;
768
991
  (function (AXPHomePageSettings) {
@@ -820,9 +1043,7 @@ class AXPHomePageService {
820
1043
  { ...home?.route, ...{ data: { key: home?.key, title: home?.title, path: fullPath } } },
821
1044
  ];
822
1045
  }
823
- return [
824
- { path: '', redirectTo: this.loginPath, pathMatch: 'full' },
825
- ];
1046
+ return [{ path: '', redirectTo: this.loginPath, pathMatch: 'full' }];
826
1047
  }
827
1048
  getCurrent() {
828
1049
  const key = this.userHomePageKey ?? this.defaultHomePageKey;
@@ -870,30 +1091,24 @@ class AXPHomePageService {
870
1091
  // Filter the original routes to drop the old home placeholders.
871
1092
  // We know your dynamic routes always have path === '' or ':app'
872
1093
  // or carry a `data.key` matching one of your home-page keys.
873
- const otherRoutes = (this.originalConfig ?? [])
874
- .filter(r => r.path !== '' &&
875
- r.path !== ':app' &&
876
- !(r.data && typeof r.data['key'] === 'string'));
1094
+ const otherRoutes = (this.originalConfig ?? []).filter((r) => r.path !== '' && r.path !== ':app' && !(r.data && typeof r.data['key'] === 'string'));
877
1095
  // Build the new merged tree
878
- const merged = [
879
- ...newHomeRoutes,
880
- ...otherRoutes
881
- ];
1096
+ const merged = [...newHomeRoutes, ...otherRoutes];
882
1097
  // TODO: check this for custom menu like :app/terms
883
1098
  router.resetConfig(merged);
884
1099
  }
885
1100
  async navigateTo() {
886
- // wait for the router to be initialized
1101
+ // wait for the router to be initialized
887
1102
  setTimeout(() => {
888
1103
  const router = this.injector.get(Router);
889
1104
  const current = this.getCurrent();
890
1105
  router.navigate([current.path], { onSameUrlNavigation: 'reload' });
891
1106
  }, 100);
892
1107
  }
893
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
894
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageService, providedIn: 'root' }); }
1108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1109
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageService, providedIn: 'root' }); }
895
1110
  }
896
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageService, decorators: [{
1111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageService, decorators: [{
897
1112
  type: Injectable,
898
1113
  args: [{
899
1114
  providedIn: 'root',
@@ -955,17 +1170,17 @@ class AXPHomePageSettingProvider {
955
1170
  // End the 'General Settings' group
956
1171
  .endGroup();
957
1172
  }
958
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageSettingProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
959
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageSettingProvider }); }
1173
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageSettingProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1174
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageSettingProvider }); }
960
1175
  }
961
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageSettingProvider, decorators: [{
1176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageSettingProvider, decorators: [{
962
1177
  type: Injectable
963
1178
  }], ctorParameters: () => [{ type: i0.Injector }] });
964
1179
 
965
1180
  class AXPHomePageModule {
966
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
967
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageModule }); }
968
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageModule, providers: [
1181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1182
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageModule }); }
1183
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageModule, providers: [
969
1184
  {
970
1185
  provide: AXP_SETTING_DEFINITION_PROVIDER,
971
1186
  useClass: AXPHomePageSettingProvider,
@@ -973,7 +1188,7 @@ class AXPHomePageModule {
973
1188
  },
974
1189
  ] }); }
975
1190
  }
976
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPHomePageModule, decorators: [{
1191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageModule, decorators: [{
977
1192
  type: NgModule,
978
1193
  args: [{
979
1194
  imports: [],
@@ -996,10 +1211,10 @@ class AXPCustomOperatorServiceImpl extends AXPCustomOperatorService {
996
1211
  getCustomOperators() {
997
1212
  return {};
998
1213
  }
999
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPCustomOperatorServiceImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1000
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPCustomOperatorServiceImpl }); }
1214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCustomOperatorServiceImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1215
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCustomOperatorServiceImpl }); }
1001
1216
  }
1002
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPCustomOperatorServiceImpl, decorators: [{
1217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCustomOperatorServiceImpl, decorators: [{
1003
1218
  type: Injectable
1004
1219
  }] });
1005
1220
 
@@ -1044,10 +1259,10 @@ class AXPFilterOperatorMiddlewareServiceImpl extends AXPFilterOperatorMiddleware
1044
1259
  return acc;
1045
1260
  }, {});
1046
1261
  }
1047
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1048
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl }); }
1262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1263
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl }); }
1049
1264
  }
1050
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl, decorators: [{
1265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl, decorators: [{
1051
1266
  type: Injectable
1052
1267
  }] });
1053
1268
 
@@ -1068,10 +1283,10 @@ class AXPErrorHandlerRegistryService {
1068
1283
  get handlers() {
1069
1284
  return this.errorHandlers;
1070
1285
  }
1071
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPErrorHandlerRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1072
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPErrorHandlerRegistryService, providedIn: 'root' }); }
1286
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPErrorHandlerRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1287
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPErrorHandlerRegistryService, providedIn: 'root' }); }
1073
1288
  }
1074
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPErrorHandlerRegistryService, decorators: [{
1289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPErrorHandlerRegistryService, decorators: [{
1075
1290
  type: Injectable,
1076
1291
  args: [{
1077
1292
  providedIn: 'root'
@@ -1102,10 +1317,10 @@ class AXPGlobalErrorHandler extends ErrorHandler {
1102
1317
  }
1103
1318
  handleErrorRecursively(0, error);
1104
1319
  }
1105
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPGlobalErrorHandler, deps: [{ token: i0.Injector }, { token: AXPErrorHandlerRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1106
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPGlobalErrorHandler, providedIn: 'root' }); }
1320
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalErrorHandler, deps: [{ token: i0.Injector }, { token: AXPErrorHandlerRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1321
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalErrorHandler, providedIn: 'root' }); }
1107
1322
  }
1108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPGlobalErrorHandler, decorators: [{
1323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalErrorHandler, decorators: [{
1109
1324
  type: Injectable,
1110
1325
  args: [{ providedIn: 'root' }]
1111
1326
  }], ctorParameters: () => [{ type: i0.Injector }, { type: AXPErrorHandlerRegistryService }] });
@@ -1176,10 +1391,10 @@ class AXPTokenDefinitionService {
1176
1391
  clearDefinitionsCache() {
1177
1392
  this.definitionsByName.clear();
1178
1393
  }
1179
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPTokenDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1180
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPTokenDefinitionService, providedIn: 'root' }); }
1394
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTokenDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1395
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTokenDefinitionService, providedIn: 'root' }); }
1181
1396
  }
1182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPTokenDefinitionService, decorators: [{
1397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTokenDefinitionService, decorators: [{
1183
1398
  type: Injectable,
1184
1399
  args: [{
1185
1400
  providedIn: 'root',
@@ -1217,32 +1432,24 @@ class AXPStickyDirective {
1217
1432
  this.stickyOffset = 100;
1218
1433
  this.isStickyChange = new EventEmitter();
1219
1434
  this._isSticky = false;
1435
+ this.onWindowResize = () => {
1436
+ this.applyStickyStateFromScrollPosition();
1437
+ };
1220
1438
  this.onParentScroll = () => {
1221
- this.zone.runOutsideAngular(() => {
1222
- const scrollTop = this.parentElement === window ? window.scrollY : this.parentElement.scrollTop;
1223
- const shouldStick = scrollTop + this.stickyOffset >= this.topOffset;
1224
- if (shouldStick !== this.isSticky) {
1225
- this.zone.run(() => {
1226
- this.isSticky = shouldStick;
1227
- this.toggleStickyClasses(shouldStick);
1228
- this.cdr.markForCheck();
1229
- });
1230
- }
1231
- });
1439
+ this.applyStickyStateFromScrollPosition();
1232
1440
  };
1233
1441
  }
1234
1442
  ngAfterViewInit() {
1235
1443
  this.initSticky();
1236
1444
  // Add mutation observer for dynamic content
1237
1445
  this.mutationObserver = new MutationObserver(() => {
1238
- this.updateTopOffset();
1446
+ this.applyStickyStateFromScrollPosition();
1239
1447
  });
1240
1448
  this.mutationObserver.observe(this.element.nativeElement, {
1241
1449
  childList: true,
1242
1450
  subtree: true,
1243
1451
  });
1244
- // Add resize event listener
1245
- window.addEventListener('resize', this.updateTopOffset.bind(this));
1452
+ window.addEventListener('resize', this.onWindowResize);
1246
1453
  }
1247
1454
  initSticky() {
1248
1455
  if (this.stickyParent instanceof HTMLElement) {
@@ -1252,13 +1459,42 @@ class AXPStickyDirective {
1252
1459
  this.parentElement = document.querySelector(this.stickyParent) || window;
1253
1460
  }
1254
1461
  this.targetElement = document.querySelector(this.stickyTarget) || this.element.nativeElement;
1255
- this.updateTopOffset();
1256
1462
  this.parentElement.addEventListener('scroll', this.onParentScroll);
1463
+ this.applyStickyStateFromScrollPosition();
1464
+ }
1465
+ getScrollTop() {
1466
+ return this.parentElement === window ? window.scrollY : this.parentElement.scrollTop;
1467
+ }
1468
+ /**
1469
+ * Toggle stuck styling only while this element is visually pinned (matches `position: sticky; top: 0`).
1470
+ * Scroll-offset thresholds would stay true for every section already passed, so multiple stacked stickies
1471
+ * would all keep `--stuck`; geometry fixes that.
1472
+ */
1473
+ computeShouldStick() {
1474
+ if (this.getScrollTop() <= 0) {
1475
+ return false;
1476
+ }
1477
+ const tRect = this.targetElement.getBoundingClientRect();
1478
+ const epsilon = 3;
1479
+ let limitY;
1480
+ if (this.parentElement === window) {
1481
+ limitY = this.stickyOffset;
1482
+ }
1483
+ else {
1484
+ limitY = this.parentElement.getBoundingClientRect().top;
1485
+ }
1486
+ return tRect.top <= limitY + epsilon && tRect.top >= limitY - epsilon;
1257
1487
  }
1258
- updateTopOffset() {
1488
+ applyStickyStateFromScrollPosition() {
1259
1489
  this.zone.runOutsideAngular(() => {
1260
- const rect = this.targetElement.getBoundingClientRect();
1261
- this.topOffset = rect.top + (window.scrollY || 0);
1490
+ const shouldStick = this.computeShouldStick();
1491
+ if (shouldStick !== this.isSticky) {
1492
+ this.zone.run(() => {
1493
+ this.isSticky = shouldStick;
1494
+ this.toggleStickyClasses(shouldStick);
1495
+ this.cdr.markForCheck();
1496
+ });
1497
+ }
1262
1498
  });
1263
1499
  }
1264
1500
  toggleStickyClasses(isSticky) {
@@ -1274,15 +1510,15 @@ class AXPStickyDirective {
1274
1510
  }
1275
1511
  ngOnDestroy() {
1276
1512
  this.parentElement.removeEventListener('scroll', this.onParentScroll);
1277
- window.removeEventListener('resize', this.updateTopOffset.bind(this));
1513
+ window.removeEventListener('resize', this.onWindowResize);
1278
1514
  if (this.mutationObserver) {
1279
1515
  this.mutationObserver.disconnect();
1280
1516
  }
1281
1517
  }
1282
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPStickyDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1283
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: AXPStickyDirective, isStandalone: true, selector: "[axpSticky]", inputs: { stickyClass: ["axpSticky", "stickyClass"], stickyOffset: "stickyOffset", stickyParent: "stickyParent", stickyTarget: "stickyTarget" }, outputs: { isStickyChange: "isStickyChange" }, exportAs: ["axpSticky"], ngImport: i0 }); }
1518
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStickyDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1519
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: AXPStickyDirective, isStandalone: true, selector: "[axpSticky]", inputs: { stickyClass: ["axpSticky", "stickyClass"], stickyOffset: "stickyOffset", stickyParent: "stickyParent", stickyTarget: "stickyTarget" }, outputs: { isStickyChange: "isStickyChange" }, exportAs: ["axpSticky"], ngImport: i0 }); }
1284
1520
  }
1285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPStickyDirective, decorators: [{
1521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStickyDirective, decorators: [{
1286
1522
  type: Directive,
1287
1523
  args: [{
1288
1524
  selector: '[axpSticky]',
@@ -1625,10 +1861,10 @@ class AXPMenuMiddlewareRegistry {
1625
1861
  clear() {
1626
1862
  this.manualMiddlewares.clear();
1627
1863
  }
1628
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuMiddlewareRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1629
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuMiddlewareRegistry, providedIn: 'root' }); }
1864
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuMiddlewareRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1865
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuMiddlewareRegistry, providedIn: 'root' }); }
1630
1866
  }
1631
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuMiddlewareRegistry, decorators: [{
1867
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuMiddlewareRegistry, decorators: [{
1632
1868
  type: Injectable,
1633
1869
  args: [{ providedIn: 'root' }]
1634
1870
  }] });
@@ -1647,6 +1883,7 @@ class AXPMenuProviderService {
1647
1883
  this.pendingRemovals = [];
1648
1884
  this.pendingUpdates = [];
1649
1885
  this.pendingAdditions = [];
1886
+ this.pendingMoves = [];
1650
1887
  /**
1651
1888
  * Observable for menu reload events
1652
1889
  * Emits when menu cache is cleared and consumers should reload
@@ -1732,6 +1969,7 @@ class AXPMenuProviderService {
1732
1969
  this.pendingRemovals = [];
1733
1970
  this.pendingUpdates = [];
1734
1971
  this.pendingAdditions = [];
1972
+ this.pendingMoves = [];
1735
1973
  // Notify subscribers that menu should be reloaded
1736
1974
  this.menuReloadSubject.next();
1737
1975
  }
@@ -1793,7 +2031,14 @@ class AXPMenuProviderService {
1793
2031
  },
1794
2032
  addItems: (newItems) => {
1795
2033
  this.pendingAdditions.push({ target, newItems });
1796
- }
2034
+ },
2035
+ moveTo: (destination, position = 'inside') => {
2036
+ this.pendingMoves.push({
2037
+ source: target,
2038
+ destination,
2039
+ position: position ?? 'inside',
2040
+ });
2041
+ },
1797
2042
  };
1798
2043
  }
1799
2044
  };
@@ -1900,11 +2145,15 @@ class AXPMenuProviderService {
1900
2145
  }
1901
2146
  }
1902
2147
  }
2148
+ for (const move of this.pendingMoves) {
2149
+ this.applyPendingMove(items, move.source, move.destination, move.position);
2150
+ }
1903
2151
  // Clear pending operations after applying them
1904
2152
  this.pendingInserts = [];
1905
2153
  this.pendingRemovals = [];
1906
2154
  this.pendingUpdates = [];
1907
2155
  this.pendingAdditions = [];
2156
+ this.pendingMoves = [];
1908
2157
  }
1909
2158
  findItemWithParent(items, target, parentItems = items) {
1910
2159
  for (const item of items) {
@@ -1937,6 +2186,66 @@ class AXPMenuProviderService {
1937
2186
  }
1938
2187
  return null;
1939
2188
  }
2189
+ applyPendingMove(items, sourceName, destName, position) {
2190
+ if (sourceName === destName) {
2191
+ console.warn(`moveTo: source and destination are the same ("${sourceName}"), ignored.`);
2192
+ return;
2193
+ }
2194
+ const sourceInfo = this.findItemWithParent(items, sourceName);
2195
+ const { foundItem: sourceItem, parentItems: sourceParent } = sourceInfo;
2196
+ if (!sourceItem) {
2197
+ console.warn(`moveTo: source "${sourceName}" not found.`);
2198
+ return;
2199
+ }
2200
+ const destInfo = this.findItemWithParent(items, destName);
2201
+ const { foundItem: destItem, parentItems: destParent } = destInfo;
2202
+ if (!destItem) {
2203
+ console.warn(`moveTo: destination "${destName}" not found.`);
2204
+ return;
2205
+ }
2206
+ if (this.itemIsInSubtreeOf(sourceItem, destItem)) {
2207
+ console.warn(`moveTo: cannot move "${sourceName}" because "${destName}" is inside the source subtree.`);
2208
+ return;
2209
+ }
2210
+ const sourceIndex = sourceParent.indexOf(sourceItem);
2211
+ if (sourceIndex === -1) {
2212
+ console.warn(`moveTo: source "${sourceName}" not in parent list (inconsistent).`);
2213
+ return;
2214
+ }
2215
+ sourceParent.splice(sourceIndex, 1);
2216
+ if (position === 'inside') {
2217
+ if (!destItem.children) {
2218
+ destItem.children = [];
2219
+ }
2220
+ destItem.children.push(sourceItem);
2221
+ return;
2222
+ }
2223
+ const destIndexInParent = destParent.indexOf(destItem);
2224
+ if (destIndexInParent === -1) {
2225
+ console.warn(`moveTo: destination "${destName}" not in parent list, reverting source removal.`);
2226
+ sourceParent.splice(sourceIndex, 0, sourceItem);
2227
+ return;
2228
+ }
2229
+ const insertIndex = position === 'before' ? destIndexInParent : destIndexInParent + 1;
2230
+ destParent.splice(insertIndex, 0, sourceItem);
2231
+ }
2232
+ itemIsInSubtreeOf(root, candidate) {
2233
+ if (root === candidate) {
2234
+ return true;
2235
+ }
2236
+ if (!root.children?.length) {
2237
+ return false;
2238
+ }
2239
+ for (const child of root.children) {
2240
+ if (child === candidate) {
2241
+ return true;
2242
+ }
2243
+ if (this.itemIsInSubtreeOf(child, candidate)) {
2244
+ return true;
2245
+ }
2246
+ }
2247
+ return false;
2248
+ }
1940
2249
  /**
1941
2250
  * Merge new item properties into existing item, handling children merge
1942
2251
  */
@@ -1984,10 +2293,10 @@ class AXPMenuProviderService {
1984
2293
  }
1985
2294
  }
1986
2295
  }
1987
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1988
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuProviderService, providedIn: 'root' }); }
2296
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2297
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuProviderService, providedIn: 'root' }); }
1989
2298
  }
1990
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuProviderService, decorators: [{
2299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuProviderService, decorators: [{
1991
2300
  type: Injectable,
1992
2301
  args: [{ providedIn: 'root' }]
1993
2302
  }] });
@@ -2007,6 +2316,90 @@ function setMenuItemMeta(items, parentIndex = '', depth = 0) {
2007
2316
  });
2008
2317
  }
2009
2318
 
2319
+ //#region ---- Imports ----
2320
+ //#endregion
2321
+ //#region ---- Helpers ----
2322
+ function flattenMenuItems(items, depth) {
2323
+ const rows = [];
2324
+ let index = 0;
2325
+ for (const it of items) {
2326
+ const fallback = `menu-${depth}-${index}`;
2327
+ index += 1;
2328
+ const id = it.name ?? it.path ?? fallback;
2329
+ rows.push({ id, title: it.text });
2330
+ if (it.children?.length) {
2331
+ rows.push(...flattenMenuItems(it.children, depth + 1));
2332
+ }
2333
+ }
2334
+ return rows;
2335
+ }
2336
+ //#endregion
2337
+ //#region ---- Menu items data source ----
2338
+ /**
2339
+ * Registered menu items (raw tree flattened) for select widgets via dataSource name {@link MENU_ITEMS_DATASOURCE_NAME}.
2340
+ */
2341
+ const MENU_ITEMS_DATASOURCE_NAME = 'platform-menu-items';
2342
+ /**
2343
+ * Data source definition for menu items from {@link AXPMenuProviderService#rawItems}.
2344
+ */
2345
+ class AXPMenuItemsDataSourceDefinition {
2346
+ constructor() {
2347
+ //#region ---- Services & Dependencies ----
2348
+ this.menuProviderService = inject(AXPMenuProviderService);
2349
+ //#endregion
2350
+ }
2351
+ //#endregion
2352
+ //#region ---- Public API ----
2353
+ async items() {
2354
+ return [
2355
+ {
2356
+ name: MENU_ITEMS_DATASOURCE_NAME,
2357
+ title: 'Menu items',
2358
+ source: () => new AXDataSource({
2359
+ key: 'id',
2360
+ load: async () => {
2361
+ const raw = await this.menuProviderService.rawItems();
2362
+ const list = flattenMenuItems(raw, 0);
2363
+ return { items: list, total: list.length };
2364
+ },
2365
+ byKey: async (key) => {
2366
+ const raw = await this.menuProviderService.rawItems();
2367
+ const list = flattenMenuItems(raw, 0);
2368
+ return list.find((item) => item.id === key);
2369
+ },
2370
+ pageSize: 1000,
2371
+ }),
2372
+ columns: [
2373
+ {
2374
+ name: 'id',
2375
+ title: 'ID',
2376
+ datatype: 'string',
2377
+ type: AXPWidgetsCatalog.text,
2378
+ },
2379
+ {
2380
+ name: 'title',
2381
+ title: 'Title',
2382
+ datatype: 'string',
2383
+ type: AXPWidgetsCatalog.text,
2384
+ },
2385
+ ],
2386
+ filters: [
2387
+ {
2388
+ field: 'title',
2389
+ title: 'Title',
2390
+ operator: { type: 'equal' },
2391
+ widget: { type: AXPWidgetsCatalog.text },
2392
+ filterType: { advance: true, inline: true },
2393
+ },
2394
+ ],
2395
+ textField: { name: 'title', title: 'Title' },
2396
+ valueField: { name: 'id', title: 'ID' },
2397
+ },
2398
+ ];
2399
+ }
2400
+ }
2401
+ //#endregion
2402
+
2010
2403
  //#region ---- Menu Middleware Provider Helper ----
2011
2404
  /**
2012
2405
  * Helper function to provide menu middlewares with proper DI setup
@@ -2301,10 +2694,10 @@ class AXPMenuVisibilityService {
2301
2694
  // Otherwise, don't render empty menu items
2302
2695
  return false;
2303
2696
  }
2304
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuVisibilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2305
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuVisibilityService, providedIn: 'root' }); }
2697
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuVisibilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2698
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuVisibilityService, providedIn: 'root' }); }
2306
2699
  }
2307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPMenuVisibilityService, decorators: [{
2700
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuVisibilityService, decorators: [{
2308
2701
  type: Injectable,
2309
2702
  args: [{ providedIn: 'root' }]
2310
2703
  }] });
@@ -2381,18 +2774,19 @@ class AXPMenuSearchProvider {
2381
2774
  }
2382
2775
 
2383
2776
  class AXPFooterTextSlotComponent {
2384
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFooterTextSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2385
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AXPFooterTextSlotComponent, isStandalone: true, selector: "ng-component", inputs: { text: "text" }, ngImport: i0, template: `
2777
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFooterTextSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2778
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPFooterTextSlotComponent, isStandalone: true, selector: "ng-component", inputs: { text: "text" }, ngImport: i0, template: `
2386
2779
  <small class="ax-text-sm" [innerHTML]="text"></small>
2387
- `, isInline: true }); }
2780
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2388
2781
  }
2389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFooterTextSlotComponent, decorators: [{
2782
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFooterTextSlotComponent, decorators: [{
2390
2783
  type: Component,
2391
2784
  args: [{
2392
2785
  template: `
2393
2786
  <small class="ax-text-sm" [innerHTML]="text"></small>
2394
2787
  `,
2395
- standalone: true
2788
+ standalone: true,
2789
+ changeDetection: ChangeDetectionStrategy.OnPush,
2396
2790
  }]
2397
2791
  }], propDecorators: { text: [{
2398
2792
  type: Input
@@ -2403,8 +2797,8 @@ class AXPNavBarSlotComponent {
2403
2797
  // if (action)
2404
2798
  // this.store.dispatch(action)
2405
2799
  }
2406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPNavBarSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2407
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXPNavBarSlotComponent, isStandalone: true, selector: "ng-component", inputs: { items: "items" }, ngImport: i0, template: `
2800
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNavBarSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2801
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPNavBarSlotComponent, isStandalone: true, selector: "ng-component", inputs: { items: "items" }, ngImport: i0, template: `
2408
2802
  <div class="ax-flex ax-items-center ax-justify-between ax-gap-5">
2409
2803
  @for (link of items; track link) {
2410
2804
  <a (click)="handleCommand(link.command)" >{{ link.text }}</a>
@@ -2412,7 +2806,7 @@ class AXPNavBarSlotComponent {
2412
2806
  </div>
2413
2807
  `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
2414
2808
  }
2415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPNavBarSlotComponent, decorators: [{
2809
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNavBarSlotComponent, decorators: [{
2416
2810
  type: Component,
2417
2811
  args: [{
2418
2812
  template: `
@@ -2546,10 +2940,10 @@ class AXPSearchDefinitionProviderService {
2546
2940
  }
2547
2941
  return definition;
2548
2942
  }
2549
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSearchDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2550
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSearchDefinitionProviderService, providedIn: 'root' }); }
2943
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2944
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchDefinitionProviderService, providedIn: 'root' }); }
2551
2945
  }
2552
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSearchDefinitionProviderService, decorators: [{
2946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchDefinitionProviderService, decorators: [{
2553
2947
  type: Injectable,
2554
2948
  args: [{ providedIn: 'root' }]
2555
2949
  }] });
@@ -2644,10 +3038,10 @@ class AXPSearchService {
2644
3038
  groupedData.sort((a, b) => a.order - b.order);
2645
3039
  return groupedData;
2646
3040
  }
2647
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2648
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSearchService, providedIn: 'root' }); }
3041
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3042
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchService, providedIn: 'root' }); }
2649
3043
  }
2650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPSearchService, decorators: [{
3044
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchService, decorators: [{
2651
3045
  type: Injectable,
2652
3046
  args: [{ providedIn: 'root' }]
2653
3047
  }] });
@@ -2696,6 +3090,10 @@ var AXPCommonSettings;
2696
3090
  AXPCommonSettings["EnableOperationToasts"] = "Common:Setting:Notifications.EnableOperationToasts";
2697
3091
  AXPCommonSettings["EntityFilterApplyMode"] = "Common:Setting:Entity.FilterApplyMode";
2698
3092
  AXPCommonSettings["ShowCategoryColumnsByDefault"] = "Common:Setting:Entity.ShowCategoryColumnsByDefault";
3093
+ AXPCommonSettings["ApplyLayoutOrdering"] = "Common:Setting:Entity.ApplyLayoutOrdering";
3094
+ AXPCommonSettings["RedirectToDetailsAfterCreate"] = "Common:Setting:Entity.RedirectToDetailsAfterCreate";
3095
+ AXPCommonSettings["ShowPageBadge"] = "Common:Setting:Entity.ShowPageBadge";
3096
+ AXPCommonSettings["DebugMode"] = "PlatformDevTools:Setting:Developer.DebugMode";
2699
3097
  })(AXPCommonSettings || (AXPCommonSettings = {}));
2700
3098
 
2701
3099
  //TODO Loading, Redirect, Drawer, Show toast
@@ -2720,10 +3118,10 @@ class AXPWorkflowNavigateAction extends AXPWorkflowAction {
2720
3118
  this.router.navigate([payload.commands], payload.extras);
2721
3119
  }
2722
3120
  }
2723
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPWorkflowNavigateAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2724
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPWorkflowNavigateAction }); }
3121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowNavigateAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3122
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowNavigateAction }); }
2725
3123
  }
2726
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPWorkflowNavigateAction, decorators: [{
3124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowNavigateAction, decorators: [{
2727
3125
  type: Injectable
2728
3126
  }] });
2729
3127
  class AXPDialogConfirmAction extends AXPWorkflowAction {
@@ -2739,10 +3137,10 @@ class AXPDialogConfirmAction extends AXPWorkflowAction {
2739
3137
  const dialogResult = await this.dialogService.confirm(await this.translationService.translateAsync(this.title), await this.translationService.translateAsync(this.message), (await this.translationService.translateAsync(this.type)), 'horizontal', false, 'cancel');
2740
3138
  context.setOutput('result', dialogResult.result);
2741
3139
  }
2742
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPDialogConfirmAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2743
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPDialogConfirmAction }); }
3140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDialogConfirmAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3141
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDialogConfirmAction }); }
2744
3142
  }
2745
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPDialogConfirmAction, decorators: [{
3143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDialogConfirmAction, decorators: [{
2746
3144
  type: Injectable
2747
3145
  }] });
2748
3146
  class AXPToastAction extends AXPWorkflowAction {
@@ -2765,20 +3163,20 @@ class AXPToastAction extends AXPWorkflowAction {
2765
3163
  });
2766
3164
  }
2767
3165
  }
2768
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPToastAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2769
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPToastAction }); }
3166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPToastAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3167
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPToastAction }); }
2770
3168
  }
2771
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPToastAction, decorators: [{
3169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPToastAction, decorators: [{
2772
3170
  type: Injectable
2773
3171
  }] });
2774
3172
  class AXPReloadAction extends AXPWorkflowAction {
2775
3173
  async execute(context) {
2776
3174
  this.dispatch(AXPReloadEvent({ entity: context.getVariable('entity'), meta: context.getVariable('meta') }));
2777
3175
  }
2778
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPReloadAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2779
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPReloadAction }); }
3176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPReloadAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3177
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPReloadAction }); }
2780
3178
  }
2781
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPReloadAction, decorators: [{
3179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPReloadAction, decorators: [{
2782
3180
  type: Injectable
2783
3181
  }] });
2784
3182
 
@@ -2818,10 +3216,10 @@ class AXPWorkflowRouterNavigateAction extends AXPWorkflowAction {
2818
3216
  return params;
2819
3217
  }, {});
2820
3218
  }
2821
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPWorkflowRouterNavigateAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2822
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPWorkflowRouterNavigateAction }); }
3219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowRouterNavigateAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3220
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowRouterNavigateAction }); }
2823
3221
  }
2824
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPWorkflowRouterNavigateAction, decorators: [{
3222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowRouterNavigateAction, decorators: [{
2825
3223
  type: Injectable
2826
3224
  }] });
2827
3225
  const AXPNavigateWorkflow = {
@@ -2846,10 +3244,10 @@ class AXMWorkflowErrorHandler {
2846
3244
  next(error);
2847
3245
  }
2848
3246
  }
2849
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMWorkflowErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2850
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMWorkflowErrorHandler }); }
3247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3248
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowErrorHandler }); }
2851
3249
  }
2852
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMWorkflowErrorHandler, decorators: [{
3250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowErrorHandler, decorators: [{
2853
3251
  type: Injectable
2854
3252
  }] });
2855
3253
 
@@ -2894,12 +3292,12 @@ class AXPCommonModule {
2894
3292
  f();
2895
3293
  });
2896
3294
  }
2897
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPCommonModule, deps: [{ token: 'AXPCommonModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
2898
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXPCommonModule, imports: [i1.AXPWorkflowModule, AXPopupModule,
3295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, deps: [{ token: 'AXPCommonModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
3296
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, imports: [i1.AXPWorkflowModule, AXPopupModule,
2899
3297
  AXDateTimeModule,
2900
3298
  AXToastModule,
2901
3299
  AXPModuleManifestModule], exports: [RouterModule] }); }
2902
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPCommonModule, providers: [
3300
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, providers: [
2903
3301
  AXPAppStartUpProvider,
2904
3302
  {
2905
3303
  provide: ErrorHandler,
@@ -2928,11 +3326,16 @@ class AXPCommonModule {
2928
3326
  useClass: AXPTokenEvaluatorScopeProvider,
2929
3327
  multi: true,
2930
3328
  },
3329
+ {
3330
+ provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
3331
+ useClass: AXPSettingsEvaluatorScopeProvider,
3332
+ multi: true,
3333
+ },
2931
3334
  {
2932
3335
  provide: AXP_SETTING_DEFINITION_PROVIDER,
2933
3336
  useFactory: async () => {
2934
3337
  const injector = inject(Injector);
2935
- const provider = (await import('./acorex-platform-common-common-settings.provider-gyb6ohAE.mjs')).AXPCommonSettingProvider;
3338
+ const provider = (await import('./acorex-platform-common-common-settings.provider-G9XcXXOG.mjs')).AXPCommonSettingProvider;
2936
3339
  return new provider(injector);
2937
3340
  },
2938
3341
  multi: true,
@@ -2953,7 +3356,7 @@ class AXPCommonModule {
2953
3356
  AXToastModule,
2954
3357
  AXPModuleManifestModule, RouterModule] }); }
2955
3358
  }
2956
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPCommonModule, decorators: [{
3359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, decorators: [{
2957
3360
  type: NgModule,
2958
3361
  args: [{
2959
3362
  imports: [
@@ -3003,11 +3406,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3003
3406
  useClass: AXPTokenEvaluatorScopeProvider,
3004
3407
  multi: true,
3005
3408
  },
3409
+ {
3410
+ provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
3411
+ useClass: AXPSettingsEvaluatorScopeProvider,
3412
+ multi: true,
3413
+ },
3006
3414
  {
3007
3415
  provide: AXP_SETTING_DEFINITION_PROVIDER,
3008
3416
  useFactory: async () => {
3009
3417
  const injector = inject(Injector);
3010
- const provider = (await import('./acorex-platform-common-common-settings.provider-gyb6ohAE.mjs')).AXPCommonSettingProvider;
3418
+ const provider = (await import('./acorex-platform-common-common-settings.provider-G9XcXXOG.mjs')).AXPCommonSettingProvider;
3011
3419
  return new provider(injector);
3012
3420
  },
3013
3421
  multi: true,
@@ -3040,10 +3448,10 @@ function configPlatform(config = AXPPlatformDefaultConfigs) {
3040
3448
  const AXP_ROOT_CONFIG_TOKEN = new InjectionToken('AXP_ROOT_CONFIG_TOKEN');
3041
3449
 
3042
3450
  class AXPFileStorageService {
3043
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3044
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileStorageService }); }
3451
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3452
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileStorageService }); }
3045
3453
  }
3046
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileStorageService, decorators: [{
3454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileStorageService, decorators: [{
3047
3455
  type: Injectable
3048
3456
  }] });
3049
3457
 
@@ -3160,10 +3568,10 @@ class AXPFileActionsService {
3160
3568
  return false;
3161
3569
  });
3162
3570
  }
3163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3164
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileActionsService, providedIn: 'root' }); }
3571
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3572
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileActionsService, providedIn: 'root' }); }
3165
3573
  }
3166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileActionsService, decorators: [{
3574
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileActionsService, decorators: [{
3167
3575
  type: Injectable,
3168
3576
  args: [{
3169
3577
  providedIn: 'root',
@@ -3233,19 +3641,19 @@ class AXPFileTypeProviderService {
3233
3641
  async get(name) {
3234
3642
  return (await this.items()).find((c) => c.name == name);
3235
3643
  }
3236
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileTypeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3237
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileTypeProviderService, providedIn: 'root' }); }
3644
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileTypeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3645
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileTypeProviderService, providedIn: 'root' }); }
3238
3646
  }
3239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPFileTypeProviderService, decorators: [{
3647
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileTypeProviderService, decorators: [{
3240
3648
  type: Injectable,
3241
3649
  args: [{ providedIn: 'root' }]
3242
3650
  }] });
3243
3651
 
3244
3652
  class AXPLockService {
3245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPLockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3246
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPLockService }); }
3653
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3654
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockService }); }
3247
3655
  }
3248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPLockService, decorators: [{
3656
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockService, decorators: [{
3249
3657
  type: Injectable
3250
3658
  }] });
3251
3659
 
@@ -3446,10 +3854,10 @@ class AXPStatusDefinitionProviderService {
3446
3854
  isValidTransition(provider, from, to) {
3447
3855
  return provider.transitions.some((transition) => transition.from === from && transition.to === to);
3448
3856
  }
3449
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPStatusDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3450
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPStatusDefinitionProviderService, providedIn: 'root' }); }
3857
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3858
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusDefinitionProviderService, providedIn: 'root' }); }
3451
3859
  }
3452
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPStatusDefinitionProviderService, decorators: [{
3860
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusDefinitionProviderService, decorators: [{
3453
3861
  type: Injectable,
3454
3862
  args: [{ providedIn: 'root' }]
3455
3863
  }] });
@@ -3796,10 +4204,10 @@ class AXPClipBoardService {
3796
4204
  navigator.clipboard.writeText(value);
3797
4205
  this.toast.success(`${title} copied!`);
3798
4206
  }
3799
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPClipBoardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3800
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPClipBoardService, providedIn: 'root' }); }
4207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClipBoardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4208
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClipBoardService, providedIn: 'root' }); }
3801
4209
  }
3802
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPClipBoardService, decorators: [{
4210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClipBoardService, decorators: [{
3803
4211
  type: Injectable,
3804
4212
  args: [{
3805
4213
  providedIn: 'root',
@@ -3913,10 +4321,10 @@ class AXPDebugService {
3913
4321
  console.error('[AXPDebugService] Failed to display user access info:', error);
3914
4322
  }
3915
4323
  }
3916
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPDebugService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3917
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPDebugService, providedIn: 'root' }); }
4324
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDebugService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4325
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDebugService, providedIn: 'root' }); }
3918
4326
  }
3919
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPDebugService, decorators: [{
4327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDebugService, decorators: [{
3920
4328
  type: Injectable,
3921
4329
  args: [{
3922
4330
  providedIn: 'root',
@@ -3926,15 +4334,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3926
4334
  class AXMOrgChartPrintPage extends AXBasePageComponent {
3927
4335
  constructor() {
3928
4336
  super(...arguments);
3929
- this.ratio = signal(false, ...(ngDevMode ? [{ debugName: "ratio" }] : []));
3930
- this.baseWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "baseWidth" }] : []));
3931
- this.baseHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "baseHeight" }] : []));
3932
- this.bgcolor = model(...(ngDevMode ? [undefined, { debugName: "bgcolor" }] : []));
3933
- this.width = model(...(ngDevMode ? [undefined, { debugName: "width" }] : []));
3934
- this.height = model(...(ngDevMode ? [undefined, { debugName: "height" }] : []));
3935
- this.quality = model(...(ngDevMode ? [undefined, { debugName: "quality" }] : []));
3936
- this.qualityComputed = linkedSignal(() => (this.data.quality ?? 1) * 100, ...(ngDevMode ? [{ debugName: "qualityComputed" }] : []));
3937
- this.scale = model(...(ngDevMode ? [undefined, { debugName: "scale" }] : []));
4337
+ this.ratio = signal(false, ...(ngDevMode ? [{ debugName: "ratio" }] : /* istanbul ignore next */ []));
4338
+ this.baseWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "baseWidth" }] : /* istanbul ignore next */ []));
4339
+ this.baseHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "baseHeight" }] : /* istanbul ignore next */ []));
4340
+ this.bgcolor = model(...(ngDevMode ? [undefined, { debugName: "bgcolor" }] : /* istanbul ignore next */ []));
4341
+ this.width = model(...(ngDevMode ? [undefined, { debugName: "width" }] : /* istanbul ignore next */ []));
4342
+ this.height = model(...(ngDevMode ? [undefined, { debugName: "height" }] : /* istanbul ignore next */ []));
4343
+ this.quality = model(...(ngDevMode ? [undefined, { debugName: "quality" }] : /* istanbul ignore next */ []));
4344
+ this.qualityComputed = linkedSignal(() => (this.data.quality ?? 1) * 100, ...(ngDevMode ? [{ debugName: "qualityComputed" }] : /* istanbul ignore next */ []));
4345
+ this.scale = model(...(ngDevMode ? [undefined, { debugName: "scale" }] : /* istanbul ignore next */ []));
3938
4346
  this.#init = afterNextRender(() => {
3939
4347
  this.bgcolor.set(this.data.bgcolor);
3940
4348
  this.width.set(this.data.width);
@@ -3971,8 +4379,8 @@ class AXMOrgChartPrintPage extends AXBasePageComponent {
3971
4379
  isCanceled,
3972
4380
  });
3973
4381
  }
3974
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMOrgChartPrintPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3975
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: AXMOrgChartPrintPage, isStandalone: true, selector: "ng-component", inputs: { bgcolor: { classPropertyName: "bgcolor", publicName: "bgcolor", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, quality: { classPropertyName: "quality", publicName: "quality", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { bgcolor: "bgcolorChange", width: "widthChange", height: "heightChange", quality: "qualityChange", scale: "scaleChange" }, usesInheritance: true, ngImport: i0, template: ` <div class="ax-grid ax-grid-cols-[auto_18rem] ax-gap-4 ax-justify-center ax-p-4 ax-items-center">
4382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMOrgChartPrintPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4383
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: AXMOrgChartPrintPage, isStandalone: true, selector: "ng-component", inputs: { bgcolor: { classPropertyName: "bgcolor", publicName: "bgcolor", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, quality: { classPropertyName: "quality", publicName: "quality", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { bgcolor: "bgcolorChange", width: "widthChange", height: "heightChange", quality: "qualityChange", scale: "scaleChange" }, usesInheritance: true, ngImport: i0, template: ` <div class="ax-grid ax-grid-cols-[auto_18rem] ax-gap-4 ax-justify-center ax-p-4 ax-items-center">
3976
4384
  <ax-label>Resolution (px)</ax-label>
3977
4385
  <div class="ax-flex ax-gap-2 ax-items-center">
3978
4386
  <ax-number-box
@@ -4023,7 +4431,7 @@ class AXMOrgChartPrintPage extends AXBasePageComponent {
4023
4431
  </ax-suffix>
4024
4432
  </ax-footer>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i2.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "minValue", "maxValue", "showSpinButtons", "thousandsSeparator", "decimals", "changeOnScroll", "step"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "thousandsSeparatorChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.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: i5.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: AXColorBoxModule }, { kind: "component", type: i6.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "showBadge", "showValue", "showClearButton", "showIcon"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }] }); }
4025
4433
  }
4026
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMOrgChartPrintPage, decorators: [{
4434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMOrgChartPrintPage, decorators: [{
4027
4435
  type: Component,
4028
4436
  args: [{
4029
4437
  template: ` <div class="ax-grid ax-grid-cols-[auto_18rem] ax-gap-4 ax-justify-center ax-p-4 ax-items-center">
@@ -4137,10 +4545,10 @@ class AXPExportService {
4137
4545
  document.body.removeChild(link);
4138
4546
  URL.revokeObjectURL(link.href);
4139
4547
  }
4140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4141
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPExportService, providedIn: 'root' }); }
4548
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4549
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExportService, providedIn: 'root' }); }
4142
4550
  }
4143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPExportService, decorators: [{
4551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExportService, decorators: [{
4144
4552
  type: Injectable,
4145
4553
  args: [{
4146
4554
  providedIn: 'root',
@@ -4170,6 +4578,8 @@ function AXPCleanNestedFilters(filters) {
4170
4578
  .filter(Boolean);
4171
4579
  }
4172
4580
 
4581
+ const AXP_LOCALE_MANAGEMENT_PORT = new InjectionToken('AXP_LOCALE_MANAGEMENT_PORT');
4582
+
4173
4583
  //#region ---- Versioning Types ----
4174
4584
  var AXVChangeType;
4175
4585
  (function (AXVChangeType) {
@@ -4187,5 +4597,5 @@ class AXPVersioningService {
4187
4597
  * Generated bundle index. Do not edit.
4188
4598
  */
4189
4599
 
4190
- export { ALL_DEFAULT_OPERATORS, AXMWorkflowErrorHandler, AXPAppVersionService, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDebugService, AXPDialogConfirmAction, AXPEntityCommandScope, AXPEntityQueryType, AXPErrorHandlerRegistryService, AXPExportService, AXPFileActionsService, AXPFileStorageService, AXPFileStorageStatus, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPHomePageModule, AXPHomePageService, AXPLockService, AXPMenuMiddlewareRegistry, AXPMenuProviderService, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPMenuVisibilityService, AXPNavBarSlotComponent, AXPNavigateWorkflow, AXPPlatformDefaultConfigs, AXPRedirectEvent, AXPRefreshEvent, AXPRegionalSetting, AXPRelationshipCardinality, AXPRelationshipKind, AXPReloadAction, AXPReloadEvent, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingsService, AXPStatusDefinitionProviderService, AXPStatusProvider, AXPStickyDirective, AXPSystemStatusType, AXPSystemStatuses, AXPToastAction, AXPTokenDefinitionService, AXPTokenEvaluatorScopeProvider, AXPVersioningService, AXPWorkflowNavigateAction, AXPWorkflowRouterNavigateAction, AXP_APP_VERSION_PROVIDER, AXP_FILE_ACTION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER, AXP_PLATFORM_CONFIG_TOKEN, AXP_ROOT_CONFIG_TOKEN, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_VALUE_PROVIDER, AXP_STATUS_PROVIDERS, AXP_TOKEN_DEFINITION_PROVIDER, AXVChangeType, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, ENDS_WITH_OPER, ENVIRONMENT, EQ_OPER, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, STARTS_WITH_OPER, STRING_OPERATORS, UploadFromComputerActionProvider, configPlatform, createAllQueryView, createEntityCommandOptions, createEntitySearchCommand, createMenuContext, createMenuMiddleware, createQueryView, getEntityInfo, getStatusInfo, getSystemStatus, provideDynamicHomePage, provideMenuMiddleware, resolveStatusLook, systemStatusToDefinition };
4600
+ export { ALL_DEFAULT_OPERATORS, AXMWorkflowErrorHandler, AXPAppVersionService, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDebugService, AXPDefaultMultiLanguageConfigService, AXPDialogConfirmAction, AXPEntityCommandScope, AXPEntityQueryType, AXPEntityType, AXPErrorHandlerRegistryService, AXPExportService, AXPFileActionsService, AXPFileStorageService, AXPFileStorageStatus, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPHomePageModule, AXPHomePageService, AXPLockService, AXPMenuItemsDataSourceDefinition, AXPMenuMiddlewareRegistry, AXPMenuProviderService, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPMenuVisibilityService, AXPNavBarSlotComponent, AXPNavigateWorkflow, AXPPlatformDefaultConfigs, AXPRedirectEvent, AXPRefreshEvent, AXPRegionalSetting, AXPRelationshipCardinality, AXPRelationshipKind, AXPReloadAction, AXPReloadEvent, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingsEvaluatorScopeProvider, AXPSettingsService, AXPStatusDefinitionProviderService, AXPStatusProvider, AXPStickyDirective, AXPSystemStatusType, AXPSystemStatuses, AXPToastAction, AXPTokenDefinitionService, AXPTokenEvaluatorScopeProvider, AXPVersioningService, AXPWorkflowNavigateAction, AXPWorkflowRouterNavigateAction, AXP_APP_VERSION_PROVIDER, AXP_FILE_ACTION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_LOCALE_MANAGEMENT_PORT, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER, AXP_PLATFORM_CONFIG_TOKEN, AXP_ROOT_CONFIG_TOKEN, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_VALUE_PROVIDER, AXP_STATUS_PROVIDERS, AXP_TOKEN_DEFINITION_PROVIDER, AXVChangeType, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, DEFAULT_MULTILANGUAGE_FIELD_NAMES, ENDS_WITH_OPER, ENVIRONMENT, EQ_OPER, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, MENU_ITEMS_DATASOURCE_NAME, MULTILANGUAGE_CAPABLE_WIDGET_TYPES, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, STARTS_WITH_OPER, STRING_OPERATORS, UploadFromComputerActionProvider, configPlatform, createAllQueryView, createEntityCommandOptions, createEntitySearchCommand, createMenuContext, createMenuMiddleware, createQueryView, getEntityInfo, getStatusInfo, getSystemStatus, provideDynamicHomePage, provideMenuMiddleware, resolveStatusLook, shouldApplyDefaultMultiLanguageToEntityProperty, shouldApplyDefaultMultiLanguageToWidgetNode, shouldApplyDefaultMultiLanguageToWidgetProperty, systemStatusToDefinition, withDefaultMultiLanguageOnWidgetNodeTree, withDefaultMultiLanguageOnWidgetProperty };
4191
4601
  //# sourceMappingURL=acorex-platform-common.mjs.map