@acorex/platform 20.8.4 → 21.0.0-beta.0

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 (125) 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-41RhWqb4.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +4 -4
  4. package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +669 -268
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +333 -140
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +557 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +539 -110
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs} +15 -15
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +3285 -1035
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +488 -284
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +16484 -12485
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +410 -170
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +548 -474
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs → acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs} +11 -11
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs → acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs} +22 -77
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs → acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs} +8 -9
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs → acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs} +17 -17
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs +116 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs} +25 -19
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs} +9 -9
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs} +7 -7
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +6396 -4058
  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 +328 -166
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs → acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs} +16 -23
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs +31 -0
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs +25 -0
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1687 -69
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs → acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs} +8 -8
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs} +8 -8
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
  66. package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs +88 -0
  68. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs +80 -0
  70. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-themes-shared.mjs +572 -465
  72. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  73. package/fesm2022/acorex-platform-workflow.mjs +276 -98
  74. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  75. package/fesm2022/acorex-platform.mjs.map +1 -1
  76. package/package.json +34 -34
  77. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +14 -2
  78. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +261 -24
  79. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +163 -42
  80. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
  81. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +137 -38
  82. package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +808 -131
  83. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
  84. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +695 -61
  85. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +80 -47
  86. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +274 -197
  87. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +583 -104
  88. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  89. package/types/acorex-platform-runtime.d.ts +565 -0
  90. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +105 -4
  91. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +14 -5
  92. package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +96 -81
  93. package/fesm2022/acorex-platform-common-common-settings.provider-41RhWqb4.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +0 -111
  100. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +0 -160
  105. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs +0 -1610
  107. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +0 -120
  109. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +0 -1
  110. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs +0 -31
  112. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs +0 -25
  114. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +0 -19
  116. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +0 -1
  119. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  120. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +0 -65
  121. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +0 -1
  122. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +0 -64
  123. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +0 -1
  124. package/runtime/index.d.ts +0 -307
  125. /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.19", ngImport: i0, type: AXPAppVersionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
59
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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.19", 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.19", ngImport: i0, type: AXPSettingDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
438
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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.19", 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.19", ngImport: i0, type: AXPSettingDefaultValuesAggregatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
471
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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.19", 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.19", ngImport: i0, type: AXPSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
680
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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.19", 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) {
@@ -882,10 +1105,10 @@ class AXPHomePageService {
882
1105
  router.navigate([current.path], { onSameUrlNavigation: 'reload' });
883
1106
  }, 100);
884
1107
  }
885
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHomePageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
886
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
887
1110
  }
888
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHomePageService, decorators: [{
1111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageService, decorators: [{
889
1112
  type: Injectable,
890
1113
  args: [{
891
1114
  providedIn: 'root',
@@ -947,17 +1170,17 @@ class AXPHomePageSettingProvider {
947
1170
  // End the 'General Settings' group
948
1171
  .endGroup();
949
1172
  }
950
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHomePageSettingProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
951
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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 }); }
952
1175
  }
953
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHomePageSettingProvider, decorators: [{
1176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageSettingProvider, decorators: [{
954
1177
  type: Injectable
955
1178
  }], ctorParameters: () => [{ type: i0.Injector }] });
956
1179
 
957
1180
  class AXPHomePageModule {
958
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHomePageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
959
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AXPHomePageModule }); }
960
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", 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: [
961
1184
  {
962
1185
  provide: AXP_SETTING_DEFINITION_PROVIDER,
963
1186
  useClass: AXPHomePageSettingProvider,
@@ -965,7 +1188,7 @@ class AXPHomePageModule {
965
1188
  },
966
1189
  ] }); }
967
1190
  }
968
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHomePageModule, decorators: [{
1191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHomePageModule, decorators: [{
969
1192
  type: NgModule,
970
1193
  args: [{
971
1194
  imports: [],
@@ -988,10 +1211,10 @@ class AXPCustomOperatorServiceImpl extends AXPCustomOperatorService {
988
1211
  getCustomOperators() {
989
1212
  return {};
990
1213
  }
991
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCustomOperatorServiceImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
992
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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 }); }
993
1216
  }
994
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCustomOperatorServiceImpl, decorators: [{
1217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCustomOperatorServiceImpl, decorators: [{
995
1218
  type: Injectable
996
1219
  }] });
997
1220
 
@@ -1036,10 +1259,10 @@ class AXPFilterOperatorMiddlewareServiceImpl extends AXPFilterOperatorMiddleware
1036
1259
  return acc;
1037
1260
  }, {});
1038
1261
  }
1039
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1040
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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 }); }
1041
1264
  }
1042
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl, decorators: [{
1265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFilterOperatorMiddlewareServiceImpl, decorators: [{
1043
1266
  type: Injectable
1044
1267
  }] });
1045
1268
 
@@ -1060,10 +1283,10 @@ class AXPErrorHandlerRegistryService {
1060
1283
  get handlers() {
1061
1284
  return this.errorHandlers;
1062
1285
  }
1063
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPErrorHandlerRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1064
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
1065
1288
  }
1066
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPErrorHandlerRegistryService, decorators: [{
1289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPErrorHandlerRegistryService, decorators: [{
1067
1290
  type: Injectable,
1068
1291
  args: [{
1069
1292
  providedIn: 'root'
@@ -1094,10 +1317,10 @@ class AXPGlobalErrorHandler extends ErrorHandler {
1094
1317
  }
1095
1318
  handleErrorRecursively(0, error);
1096
1319
  }
1097
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPGlobalErrorHandler, deps: [{ token: i0.Injector }, { token: AXPErrorHandlerRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1098
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
1099
1322
  }
1100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPGlobalErrorHandler, decorators: [{
1323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGlobalErrorHandler, decorators: [{
1101
1324
  type: Injectable,
1102
1325
  args: [{ providedIn: 'root' }]
1103
1326
  }], ctorParameters: () => [{ type: i0.Injector }, { type: AXPErrorHandlerRegistryService }] });
@@ -1168,10 +1391,10 @@ class AXPTokenDefinitionService {
1168
1391
  clearDefinitionsCache() {
1169
1392
  this.definitionsByName.clear();
1170
1393
  }
1171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPTokenDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1172
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
1173
1396
  }
1174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPTokenDefinitionService, decorators: [{
1397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTokenDefinitionService, decorators: [{
1175
1398
  type: Injectable,
1176
1399
  args: [{
1177
1400
  providedIn: 'root',
@@ -1209,32 +1432,24 @@ class AXPStickyDirective {
1209
1432
  this.stickyOffset = 100;
1210
1433
  this.isStickyChange = new EventEmitter();
1211
1434
  this._isSticky = false;
1435
+ this.onWindowResize = () => {
1436
+ this.applyStickyStateFromScrollPosition();
1437
+ };
1212
1438
  this.onParentScroll = () => {
1213
- this.zone.runOutsideAngular(() => {
1214
- const scrollTop = this.parentElement === window ? window.scrollY : this.parentElement.scrollTop;
1215
- const shouldStick = scrollTop + this.stickyOffset >= this.topOffset;
1216
- if (shouldStick !== this.isSticky) {
1217
- this.zone.run(() => {
1218
- this.isSticky = shouldStick;
1219
- this.toggleStickyClasses(shouldStick);
1220
- this.cdr.markForCheck();
1221
- });
1222
- }
1223
- });
1439
+ this.applyStickyStateFromScrollPosition();
1224
1440
  };
1225
1441
  }
1226
1442
  ngAfterViewInit() {
1227
1443
  this.initSticky();
1228
1444
  // Add mutation observer for dynamic content
1229
1445
  this.mutationObserver = new MutationObserver(() => {
1230
- this.updateTopOffset();
1446
+ this.applyStickyStateFromScrollPosition();
1231
1447
  });
1232
1448
  this.mutationObserver.observe(this.element.nativeElement, {
1233
1449
  childList: true,
1234
1450
  subtree: true,
1235
1451
  });
1236
- // Add resize event listener
1237
- window.addEventListener('resize', this.updateTopOffset.bind(this));
1452
+ window.addEventListener('resize', this.onWindowResize);
1238
1453
  }
1239
1454
  initSticky() {
1240
1455
  if (this.stickyParent instanceof HTMLElement) {
@@ -1244,13 +1459,42 @@ class AXPStickyDirective {
1244
1459
  this.parentElement = document.querySelector(this.stickyParent) || window;
1245
1460
  }
1246
1461
  this.targetElement = document.querySelector(this.stickyTarget) || this.element.nativeElement;
1247
- this.updateTopOffset();
1248
1462
  this.parentElement.addEventListener('scroll', this.onParentScroll);
1463
+ this.applyStickyStateFromScrollPosition();
1249
1464
  }
1250
- updateTopOffset() {
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;
1487
+ }
1488
+ applyStickyStateFromScrollPosition() {
1251
1489
  this.zone.runOutsideAngular(() => {
1252
- const rect = this.targetElement.getBoundingClientRect();
1253
- 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
+ }
1254
1498
  });
1255
1499
  }
1256
1500
  toggleStickyClasses(isSticky) {
@@ -1266,15 +1510,15 @@ class AXPStickyDirective {
1266
1510
  }
1267
1511
  ngOnDestroy() {
1268
1512
  this.parentElement.removeEventListener('scroll', this.onParentScroll);
1269
- window.removeEventListener('resize', this.updateTopOffset.bind(this));
1513
+ window.removeEventListener('resize', this.onWindowResize);
1270
1514
  if (this.mutationObserver) {
1271
1515
  this.mutationObserver.disconnect();
1272
1516
  }
1273
1517
  }
1274
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPStickyDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1275
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", 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 }); }
1276
1520
  }
1277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPStickyDirective, decorators: [{
1521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStickyDirective, decorators: [{
1278
1522
  type: Directive,
1279
1523
  args: [{
1280
1524
  selector: '[axpSticky]',
@@ -1617,10 +1861,10 @@ class AXPMenuMiddlewareRegistry {
1617
1861
  clear() {
1618
1862
  this.manualMiddlewares.clear();
1619
1863
  }
1620
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPMenuMiddlewareRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1621
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
1622
1866
  }
1623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPMenuMiddlewareRegistry, decorators: [{
1867
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuMiddlewareRegistry, decorators: [{
1624
1868
  type: Injectable,
1625
1869
  args: [{ providedIn: 'root' }]
1626
1870
  }] });
@@ -2049,10 +2293,10 @@ class AXPMenuProviderService {
2049
2293
  }
2050
2294
  }
2051
2295
  }
2052
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPMenuProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2053
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
2054
2298
  }
2055
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPMenuProviderService, decorators: [{
2299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuProviderService, decorators: [{
2056
2300
  type: Injectable,
2057
2301
  args: [{ providedIn: 'root' }]
2058
2302
  }] });
@@ -2072,6 +2316,90 @@ function setMenuItemMeta(items, parentIndex = '', depth = 0) {
2072
2316
  });
2073
2317
  }
2074
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
+
2075
2403
  //#region ---- Menu Middleware Provider Helper ----
2076
2404
  /**
2077
2405
  * Helper function to provide menu middlewares with proper DI setup
@@ -2366,10 +2694,10 @@ class AXPMenuVisibilityService {
2366
2694
  // Otherwise, don't render empty menu items
2367
2695
  return false;
2368
2696
  }
2369
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPMenuVisibilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2370
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
2371
2699
  }
2372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPMenuVisibilityService, decorators: [{
2700
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMenuVisibilityService, decorators: [{
2373
2701
  type: Injectable,
2374
2702
  args: [{ providedIn: 'root' }]
2375
2703
  }] });
@@ -2446,18 +2774,19 @@ class AXPMenuSearchProvider {
2446
2774
  }
2447
2775
 
2448
2776
  class AXPFooterTextSlotComponent {
2449
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFooterTextSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2450
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: AXPFooterTextSlotComponent, isStandalone: true, selector: "ng-component", inputs: { text: "text" }, ngImport: i0, template: `
2451
- <small class="ax-text-sm" [innerHTML]="text"></small>
2452
- `, isInline: true }); }
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: `
2779
+ <small class="text-sm" [innerHTML]="text"></small>
2780
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2453
2781
  }
2454
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFooterTextSlotComponent, decorators: [{
2782
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFooterTextSlotComponent, decorators: [{
2455
2783
  type: Component,
2456
2784
  args: [{
2457
2785
  template: `
2458
- <small class="ax-text-sm" [innerHTML]="text"></small>
2786
+ <small class="text-sm" [innerHTML]="text"></small>
2459
2787
  `,
2460
- standalone: true
2788
+ standalone: true,
2789
+ changeDetection: ChangeDetectionStrategy.OnPush,
2461
2790
  }]
2462
2791
  }], propDecorators: { text: [{
2463
2792
  type: Input
@@ -2468,20 +2797,20 @@ class AXPNavBarSlotComponent {
2468
2797
  // if (action)
2469
2798
  // this.store.dispatch(action)
2470
2799
  }
2471
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPNavBarSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2472
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AXPNavBarSlotComponent, isStandalone: true, selector: "ng-component", inputs: { items: "items" }, ngImport: i0, template: `
2473
- <div class="ax-flex ax-items-center ax-justify-between ax-gap-5">
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: `
2802
+ <div class="flex items-center justify-between gap-5">
2474
2803
  @for (link of items; track link) {
2475
2804
  <a (click)="handleCommand(link.command)" >{{ link.text }}</a>
2476
2805
  }
2477
2806
  </div>
2478
2807
  `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
2479
2808
  }
2480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPNavBarSlotComponent, decorators: [{
2809
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPNavBarSlotComponent, decorators: [{
2481
2810
  type: Component,
2482
2811
  args: [{
2483
2812
  template: `
2484
- <div class="ax-flex ax-items-center ax-justify-between ax-gap-5">
2813
+ <div class="flex items-center justify-between gap-5">
2485
2814
  @for (link of items; track link) {
2486
2815
  <a (click)="handleCommand(link.command)" >{{ link.text }}</a>
2487
2816
  }
@@ -2611,10 +2940,10 @@ class AXPSearchDefinitionProviderService {
2611
2940
  }
2612
2941
  return definition;
2613
2942
  }
2614
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPSearchDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2615
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
2616
2945
  }
2617
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPSearchDefinitionProviderService, decorators: [{
2946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchDefinitionProviderService, decorators: [{
2618
2947
  type: Injectable,
2619
2948
  args: [{ providedIn: 'root' }]
2620
2949
  }] });
@@ -2632,6 +2961,7 @@ class AXPSearchService {
2632
2961
  this.providers = inject(AXP_SEARCH_PROVIDER, { optional: true });
2633
2962
  this.definitionService = inject(AXPSearchDefinitionProviderService);
2634
2963
  this.formatService = inject(AXFormatService);
2964
+ this.translationService = inject(AXTranslationService);
2635
2965
  }
2636
2966
  async search(text) {
2637
2967
  //TODO better handle this
@@ -2674,10 +3004,7 @@ class AXPSearchService {
2674
3004
  (definition.format.description
2675
3005
  ? this.formatService.format(definition.format.description, 'string', result.data)
2676
3006
  : undefined),
2677
- icon: result.icon ??
2678
- (result.icon
2679
- ? this.formatService.format(definition.format.icon, 'string', result.data)
2680
- : definition.icon),
3007
+ icon: result.icon ?? definition.icon,
2681
3008
  data: result.data,
2682
3009
  command: result.command,
2683
3010
  actions: definition.actions,
@@ -2711,14 +3038,53 @@ class AXPSearchService {
2711
3038
  groupedData.sort((a, b) => a.order - b.order);
2712
3039
  return groupedData;
2713
3040
  }
2714
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPSearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2715
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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' }); }
2716
3043
  }
2717
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPSearchService, decorators: [{
3044
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSearchService, decorators: [{
2718
3045
  type: Injectable,
2719
3046
  args: [{ providedIn: 'root' }]
2720
3047
  }] });
2721
3048
 
3049
+ /**
3050
+ * Shared utility for creating Entity:Create command options used in search command providers.
3051
+ * Use with command: { name: 'Entity:Create', options: createEntityCommandOptions(...) }
3052
+ */
3053
+ function createEntityCommandOptions(entityKey, entityInfo) {
3054
+ return {
3055
+ __context__: {
3056
+ entity: entityKey,
3057
+ entityInfo: {
3058
+ name: entityInfo.name,
3059
+ module: entityInfo.module,
3060
+ title: entityInfo.title,
3061
+ parentKey: undefined,
3062
+ source: entityKey,
3063
+ },
3064
+ data: {},
3065
+ options: {},
3066
+ },
3067
+ };
3068
+ }
3069
+ /**
3070
+ * Creates a search command for "Create {Entity}" with consistent i18n pattern.
3071
+ * Use titleKey/descriptionKey from module (e.g. @module:entity.permissions.create.title).
3072
+ * Standard: "Create {Entity}" for title, "Create new {entities}" for description.
3073
+ */
3074
+ function createEntitySearchCommand(config) {
3075
+ return {
3076
+ id: config.id,
3077
+ group: 'command',
3078
+ title: config.titleKey,
3079
+ description: config.descriptionKey ?? config.titleKey,
3080
+ icon: config.icon,
3081
+ command: {
3082
+ name: 'Entity:Create',
3083
+ options: createEntityCommandOptions(config.entityKey, config.entityInfo),
3084
+ },
3085
+ };
3086
+ }
3087
+
2722
3088
  var AXPCommonSettings;
2723
3089
  (function (AXPCommonSettings) {
2724
3090
  AXPCommonSettings["EnableOperationToasts"] = "Common:Setting:Notifications.EnableOperationToasts";
@@ -2727,6 +3093,7 @@ var AXPCommonSettings;
2727
3093
  AXPCommonSettings["ApplyLayoutOrdering"] = "Common:Setting:Entity.ApplyLayoutOrdering";
2728
3094
  AXPCommonSettings["RedirectToDetailsAfterCreate"] = "Common:Setting:Entity.RedirectToDetailsAfterCreate";
2729
3095
  AXPCommonSettings["ShowPageBadge"] = "Common:Setting:Entity.ShowPageBadge";
3096
+ AXPCommonSettings["DebugMode"] = "PlatformDevTools:Setting:Developer.DebugMode";
2730
3097
  })(AXPCommonSettings || (AXPCommonSettings = {}));
2731
3098
 
2732
3099
  //TODO Loading, Redirect, Drawer, Show toast
@@ -2751,10 +3118,10 @@ class AXPWorkflowNavigateAction extends AXPWorkflowAction {
2751
3118
  this.router.navigate([payload.commands], payload.extras);
2752
3119
  }
2753
3120
  }
2754
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPWorkflowNavigateAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2755
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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 }); }
2756
3123
  }
2757
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPWorkflowNavigateAction, decorators: [{
3124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowNavigateAction, decorators: [{
2758
3125
  type: Injectable
2759
3126
  }] });
2760
3127
  class AXPDialogConfirmAction extends AXPWorkflowAction {
@@ -2770,10 +3137,10 @@ class AXPDialogConfirmAction extends AXPWorkflowAction {
2770
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');
2771
3138
  context.setOutput('result', dialogResult.result);
2772
3139
  }
2773
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDialogConfirmAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2774
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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 }); }
2775
3142
  }
2776
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDialogConfirmAction, decorators: [{
3143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDialogConfirmAction, decorators: [{
2777
3144
  type: Injectable
2778
3145
  }] });
2779
3146
  class AXPToastAction extends AXPWorkflowAction {
@@ -2796,20 +3163,20 @@ class AXPToastAction extends AXPWorkflowAction {
2796
3163
  });
2797
3164
  }
2798
3165
  }
2799
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPToastAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2800
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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 }); }
2801
3168
  }
2802
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPToastAction, decorators: [{
3169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPToastAction, decorators: [{
2803
3170
  type: Injectable
2804
3171
  }] });
2805
3172
  class AXPReloadAction extends AXPWorkflowAction {
2806
3173
  async execute(context) {
2807
3174
  this.dispatch(AXPReloadEvent({ entity: context.getVariable('entity'), meta: context.getVariable('meta') }));
2808
3175
  }
2809
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPReloadAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2810
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", 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 }); }
2811
3178
  }
2812
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPReloadAction, decorators: [{
3179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPReloadAction, decorators: [{
2813
3180
  type: Injectable
2814
3181
  }] });
2815
3182
 
@@ -2821,6 +3188,10 @@ class AXPWorkflowRouterNavigateAction extends AXPWorkflowAction {
2821
3188
  async execute(context) {
2822
3189
  const command = context.getVariable();
2823
3190
  const path = command.options.path;
3191
+ if (!path) {
3192
+ console.error('Path is required for navigate workflow');
3193
+ return;
3194
+ }
2824
3195
  if (path?.toLowerCase()?.startsWith('http') || command.options?.extras?.target === 'blank') {
2825
3196
  window.open(path, '_blank');
2826
3197
  }
@@ -2849,10 +3220,10 @@ class AXPWorkflowRouterNavigateAction extends AXPWorkflowAction {
2849
3220
  return params;
2850
3221
  }, {});
2851
3222
  }
2852
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPWorkflowRouterNavigateAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2853
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPWorkflowRouterNavigateAction }); }
3223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowRouterNavigateAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3224
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowRouterNavigateAction }); }
2854
3225
  }
2855
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPWorkflowRouterNavigateAction, decorators: [{
3226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWorkflowRouterNavigateAction, decorators: [{
2856
3227
  type: Injectable
2857
3228
  }] });
2858
3229
  const AXPNavigateWorkflow = {
@@ -2877,10 +3248,10 @@ class AXMWorkflowErrorHandler {
2877
3248
  next(error);
2878
3249
  }
2879
3250
  }
2880
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXMWorkflowErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2881
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXMWorkflowErrorHandler }); }
3251
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3252
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowErrorHandler }); }
2882
3253
  }
2883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXMWorkflowErrorHandler, decorators: [{
3254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowErrorHandler, decorators: [{
2884
3255
  type: Injectable
2885
3256
  }] });
2886
3257
 
@@ -2925,12 +3296,12 @@ class AXPCommonModule {
2925
3296
  f();
2926
3297
  });
2927
3298
  }
2928
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCommonModule, deps: [{ token: 'AXPCommonModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
2929
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AXPCommonModule, imports: [i1.AXPWorkflowModule, AXPopupModule,
3299
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, deps: [{ token: 'AXPCommonModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
3300
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, imports: [i1.AXPWorkflowModule, AXPopupModule,
2930
3301
  AXDateTimeModule,
2931
3302
  AXToastModule,
2932
3303
  AXPModuleManifestModule], exports: [RouterModule] }); }
2933
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCommonModule, providers: [
3304
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, providers: [
2934
3305
  AXPAppStartUpProvider,
2935
3306
  {
2936
3307
  provide: ErrorHandler,
@@ -2959,11 +3330,16 @@ class AXPCommonModule {
2959
3330
  useClass: AXPTokenEvaluatorScopeProvider,
2960
3331
  multi: true,
2961
3332
  },
3333
+ {
3334
+ provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
3335
+ useClass: AXPSettingsEvaluatorScopeProvider,
3336
+ multi: true,
3337
+ },
2962
3338
  {
2963
3339
  provide: AXP_SETTING_DEFINITION_PROVIDER,
2964
3340
  useFactory: async () => {
2965
3341
  const injector = inject(Injector);
2966
- const provider = (await import('./acorex-platform-common-common-settings.provider-41RhWqb4.mjs')).AXPCommonSettingProvider;
3342
+ const provider = (await import('./acorex-platform-common-common-settings.provider-G9XcXXOG.mjs')).AXPCommonSettingProvider;
2967
3343
  return new provider(injector);
2968
3344
  },
2969
3345
  multi: true,
@@ -2984,7 +3360,7 @@ class AXPCommonModule {
2984
3360
  AXToastModule,
2985
3361
  AXPModuleManifestModule, RouterModule] }); }
2986
3362
  }
2987
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCommonModule, decorators: [{
3363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCommonModule, decorators: [{
2988
3364
  type: NgModule,
2989
3365
  args: [{
2990
3366
  imports: [
@@ -3034,11 +3410,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
3034
3410
  useClass: AXPTokenEvaluatorScopeProvider,
3035
3411
  multi: true,
3036
3412
  },
3413
+ {
3414
+ provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
3415
+ useClass: AXPSettingsEvaluatorScopeProvider,
3416
+ multi: true,
3417
+ },
3037
3418
  {
3038
3419
  provide: AXP_SETTING_DEFINITION_PROVIDER,
3039
3420
  useFactory: async () => {
3040
3421
  const injector = inject(Injector);
3041
- const provider = (await import('./acorex-platform-common-common-settings.provider-41RhWqb4.mjs')).AXPCommonSettingProvider;
3422
+ const provider = (await import('./acorex-platform-common-common-settings.provider-G9XcXXOG.mjs')).AXPCommonSettingProvider;
3042
3423
  return new provider(injector);
3043
3424
  },
3044
3425
  multi: true,
@@ -3071,10 +3452,10 @@ function configPlatform(config = AXPPlatformDefaultConfigs) {
3071
3452
  const AXP_ROOT_CONFIG_TOKEN = new InjectionToken('AXP_ROOT_CONFIG_TOKEN');
3072
3453
 
3073
3454
  class AXPFileStorageService {
3074
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3075
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileStorageService }); }
3455
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3456
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileStorageService }); }
3076
3457
  }
3077
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileStorageService, decorators: [{
3458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileStorageService, decorators: [{
3078
3459
  type: Injectable
3079
3460
  }] });
3080
3461
 
@@ -3191,10 +3572,10 @@ class AXPFileActionsService {
3191
3572
  return false;
3192
3573
  });
3193
3574
  }
3194
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3195
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileActionsService, providedIn: 'root' }); }
3575
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3576
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileActionsService, providedIn: 'root' }); }
3196
3577
  }
3197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileActionsService, decorators: [{
3578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileActionsService, decorators: [{
3198
3579
  type: Injectable,
3199
3580
  args: [{
3200
3581
  providedIn: 'root',
@@ -3264,19 +3645,19 @@ class AXPFileTypeProviderService {
3264
3645
  async get(name) {
3265
3646
  return (await this.items()).find((c) => c.name == name);
3266
3647
  }
3267
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileTypeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3268
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileTypeProviderService, providedIn: 'root' }); }
3648
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileTypeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3649
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileTypeProviderService, providedIn: 'root' }); }
3269
3650
  }
3270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPFileTypeProviderService, decorators: [{
3651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFileTypeProviderService, decorators: [{
3271
3652
  type: Injectable,
3272
3653
  args: [{ providedIn: 'root' }]
3273
3654
  }] });
3274
3655
 
3275
3656
  class AXPLockService {
3276
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPLockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3277
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPLockService }); }
3657
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3658
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockService }); }
3278
3659
  }
3279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPLockService, decorators: [{
3660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLockService, decorators: [{
3280
3661
  type: Injectable
3281
3662
  }] });
3282
3663
 
@@ -3446,7 +3827,7 @@ class AXPStatusDefinitionProviderService {
3446
3827
  }
3447
3828
  else {
3448
3829
  // Use default Entity:UpdateStatus command
3449
- const entity = context['entityName'] ?? context['__meta__']?.config?.name;
3830
+ const entity = context['entity'] ?? context['entityName'] ?? context['__meta__']?.config?.name;
3450
3831
  if (!entity) {
3451
3832
  throw new Error('Entity name is required in context when using default status update command');
3452
3833
  }
@@ -3459,7 +3840,7 @@ class AXPStatusDefinitionProviderService {
3459
3840
  commandOptions = {
3460
3841
  entity,
3461
3842
  status: transition.to,
3462
- statusField: context['statusField'] ?? 'statusId',
3843
+ statusField: context['statusField'] ?? context['fieldName'] ?? 'statusId',
3463
3844
  ...(id ? { id } : {}),
3464
3845
  ...(ids ? { ids } : {}),
3465
3846
  };
@@ -3467,7 +3848,8 @@ class AXPStatusDefinitionProviderService {
3467
3848
  // Execute the command
3468
3849
  const result = await this.commandService.execute(commandName, commandOptions);
3469
3850
  if (!result?.success) {
3470
- throw new Error(result?.message?.text || 'Failed to execute status transition command');
3851
+ const text = this.commandMessageTextForError(result?.message?.text);
3852
+ throw new Error(text || 'Failed to execute status transition command');
3471
3853
  }
3472
3854
  }
3473
3855
  /**
@@ -3477,10 +3859,27 @@ class AXPStatusDefinitionProviderService {
3477
3859
  isValidTransition(provider, from, to) {
3478
3860
  return provider.transitions.some((transition) => transition.from === from && transition.to === to);
3479
3861
  }
3480
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPStatusDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3481
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPStatusDefinitionProviderService, providedIn: 'root' }); }
3862
+ /**
3863
+ * Best-effort plain string for {@link Error} messages (no i18n lookup).
3864
+ */
3865
+ commandMessageTextForError(value) {
3866
+ if (value == null) {
3867
+ return '';
3868
+ }
3869
+ if (typeof value === 'string') {
3870
+ return value;
3871
+ }
3872
+ if (typeof value === 'object' && !Array.isArray(value)) {
3873
+ const values = Object.values(value);
3874
+ const first = values.find((v) => typeof v === 'string' && v.length > 0);
3875
+ return first ?? '';
3876
+ }
3877
+ return String(value);
3878
+ }
3879
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3880
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusDefinitionProviderService, providedIn: 'root' }); }
3482
3881
  }
3483
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPStatusDefinitionProviderService, decorators: [{
3882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusDefinitionProviderService, decorators: [{
3484
3883
  type: Injectable,
3485
3884
  args: [{ providedIn: 'root' }]
3486
3885
  }] });
@@ -3827,10 +4226,10 @@ class AXPClipBoardService {
3827
4226
  navigator.clipboard.writeText(value);
3828
4227
  this.toast.success(`${title} copied!`);
3829
4228
  }
3830
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPClipBoardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3831
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPClipBoardService, providedIn: 'root' }); }
4229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClipBoardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4230
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClipBoardService, providedIn: 'root' }); }
3832
4231
  }
3833
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPClipBoardService, decorators: [{
4232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPClipBoardService, decorators: [{
3834
4233
  type: Injectable,
3835
4234
  args: [{
3836
4235
  providedIn: 'root',
@@ -3944,10 +4343,10 @@ class AXPDebugService {
3944
4343
  console.error('[AXPDebugService] Failed to display user access info:', error);
3945
4344
  }
3946
4345
  }
3947
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDebugService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3948
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDebugService, providedIn: 'root' }); }
4346
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDebugService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4347
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDebugService, providedIn: 'root' }); }
3949
4348
  }
3950
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDebugService, decorators: [{
4349
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDebugService, decorators: [{
3951
4350
  type: Injectable,
3952
4351
  args: [{
3953
4352
  providedIn: 'root',
@@ -3957,15 +4356,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
3957
4356
  class AXMOrgChartPrintPage extends AXBasePageComponent {
3958
4357
  constructor() {
3959
4358
  super(...arguments);
3960
- this.ratio = signal(false, ...(ngDevMode ? [{ debugName: "ratio" }] : []));
3961
- this.baseWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "baseWidth" }] : []));
3962
- this.baseHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "baseHeight" }] : []));
3963
- this.bgcolor = model(...(ngDevMode ? [undefined, { debugName: "bgcolor" }] : []));
3964
- this.width = model(...(ngDevMode ? [undefined, { debugName: "width" }] : []));
3965
- this.height = model(...(ngDevMode ? [undefined, { debugName: "height" }] : []));
3966
- this.quality = model(...(ngDevMode ? [undefined, { debugName: "quality" }] : []));
3967
- this.qualityComputed = linkedSignal(() => (this.data.quality ?? 1) * 100, ...(ngDevMode ? [{ debugName: "qualityComputed" }] : []));
3968
- this.scale = model(...(ngDevMode ? [undefined, { debugName: "scale" }] : []));
4359
+ this.ratio = signal(false, ...(ngDevMode ? [{ debugName: "ratio" }] : /* istanbul ignore next */ []));
4360
+ this.baseWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "baseWidth" }] : /* istanbul ignore next */ []));
4361
+ this.baseHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "baseHeight" }] : /* istanbul ignore next */ []));
4362
+ this.bgcolor = model(...(ngDevMode ? [undefined, { debugName: "bgcolor" }] : /* istanbul ignore next */ []));
4363
+ this.width = model(...(ngDevMode ? [undefined, { debugName: "width" }] : /* istanbul ignore next */ []));
4364
+ this.height = model(...(ngDevMode ? [undefined, { debugName: "height" }] : /* istanbul ignore next */ []));
4365
+ this.quality = model(...(ngDevMode ? [undefined, { debugName: "quality" }] : /* istanbul ignore next */ []));
4366
+ this.qualityComputed = linkedSignal(() => (this.data.quality ?? 1) * 100, ...(ngDevMode ? [{ debugName: "qualityComputed" }] : /* istanbul ignore next */ []));
4367
+ this.scale = model(...(ngDevMode ? [undefined, { debugName: "scale" }] : /* istanbul ignore next */ []));
3969
4368
  this.#init = afterNextRender(() => {
3970
4369
  this.bgcolor.set(this.data.bgcolor);
3971
4370
  this.width.set(this.data.width);
@@ -4002,10 +4401,10 @@ class AXMOrgChartPrintPage extends AXBasePageComponent {
4002
4401
  isCanceled,
4003
4402
  });
4004
4403
  }
4005
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXMOrgChartPrintPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4006
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.19", 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">
4404
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMOrgChartPrintPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4405
+ 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="grid grid-cols-[auto_18rem] gap-4 justify-center p-4 items-center">
4007
4406
  <ax-label>Resolution (px)</ax-label>
4008
- <div class="ax-flex ax-gap-2 ax-items-center">
4407
+ <div class="flex gap-2 items-center">
4009
4408
  <ax-number-box
4010
4409
  [changeOnScroll]="true"
4011
4410
  [decimals]="4"
@@ -4054,12 +4453,12 @@ class AXMOrgChartPrintPage extends AXBasePageComponent {
4054
4453
  </ax-suffix>
4055
4454
  </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"] }] }); }
4056
4455
  }
4057
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXMOrgChartPrintPage, decorators: [{
4456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMOrgChartPrintPage, decorators: [{
4058
4457
  type: Component,
4059
4458
  args: [{
4060
- template: ` <div class="ax-grid ax-grid-cols-[auto_18rem] ax-gap-4 ax-justify-center ax-p-4 ax-items-center">
4459
+ template: ` <div class="grid grid-cols-[auto_18rem] gap-4 justify-center p-4 items-center">
4061
4460
  <ax-label>Resolution (px)</ax-label>
4062
- <div class="ax-flex ax-gap-2 ax-items-center">
4461
+ <div class="flex gap-2 items-center">
4063
4462
  <ax-number-box
4064
4463
  [changeOnScroll]="true"
4065
4464
  [decimals]="4"
@@ -4168,10 +4567,10 @@ class AXPExportService {
4168
4567
  document.body.removeChild(link);
4169
4568
  URL.revokeObjectURL(link.href);
4170
4569
  }
4171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4172
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExportService, providedIn: 'root' }); }
4570
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4571
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExportService, providedIn: 'root' }); }
4173
4572
  }
4174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExportService, decorators: [{
4573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExportService, decorators: [{
4175
4574
  type: Injectable,
4176
4575
  args: [{
4177
4576
  providedIn: 'root',
@@ -4201,6 +4600,8 @@ function AXPCleanNestedFilters(filters) {
4201
4600
  .filter(Boolean);
4202
4601
  }
4203
4602
 
4603
+ const AXP_LOCALE_MANAGEMENT_PORT = new InjectionToken('AXP_LOCALE_MANAGEMENT_PORT');
4604
+
4204
4605
  //#region ---- Versioning Types ----
4205
4606
  var AXVChangeType;
4206
4607
  (function (AXVChangeType) {
@@ -4218,5 +4619,5 @@ class AXPVersioningService {
4218
4619
  * Generated bundle index. Do not edit.
4219
4620
  */
4220
4621
 
4221
- 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, createMenuContext, createMenuMiddleware, createQueryView, getEntityInfo, getStatusInfo, getSystemStatus, provideDynamicHomePage, provideMenuMiddleware, resolveStatusLook, systemStatusToDefinition };
4622
+ 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 };
4222
4623
  //# sourceMappingURL=acorex-platform-common.mjs.map