@acorex/modules 20.5.0-next.0 → 20.5.0-next.1

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.
package/common/index.d.ts CHANGED
@@ -1,22 +1,16 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injector, OnInit, Type, InjectionToken } from '@angular/core';
3
- import * as i1 from '@acorex/platform/workflow';
4
- import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
5
3
  import { AXPAppStartUpService } from '@acorex/platform/core';
6
- import * as i1$1 from '@acorex/platform/layout/components';
4
+ import * as i1 from '@acorex/platform/layout/components';
7
5
  import { AXPCompareViewInputs, AXPCompareViewMode } from '@acorex/platform/layout/components';
8
- import * as i5 from '@acorex/platform/layout/widgets';
6
+ import * as i1$1 from '@acorex/platform/workflow';
7
+ import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
8
+ import * as i4 from '@acorex/platform/layout/widgets';
9
9
  import { AXBasePageComponent } from '@acorex/components/page';
10
10
  import { AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult, AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext, AXPSearchDisplayGroupResult, AXPSearchDisplayResult } from '@acorex/platform/common';
11
11
  import { Subject } from 'rxjs';
12
12
  import { AXPEntityActionPlugin } from '@acorex/platform/layout/entity';
13
13
 
14
- declare class AXMLockSystemModule {
15
- static ɵfac: i0.ɵɵFactoryDeclaration<AXMLockSystemModule, never>;
16
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMLockSystemModule, never, [typeof i1.AXPWorkflowModule], never>;
17
- static ɵinj: i0.ɵɵInjectorDeclaration<AXMLockSystemModule>;
18
- }
19
-
20
14
  declare class AXPExtraPropertiesModule {
21
15
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPExtraPropertiesModule, never>;
22
16
  static ɵmod: i0.ɵɵNgModuleDeclaration<AXPExtraPropertiesModule, never, never, never>;
@@ -32,13 +26,13 @@ declare class AXPCategoryModule {
32
26
  declare class AXPGlobalSearchModule {
33
27
  constructor(appInitService: AXPAppStartUpService, injector: Injector);
34
28
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPGlobalSearchModule, never>;
35
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXPGlobalSearchModule, never, [typeof i1$1.AXPComponentSlotModule, typeof i1.AXPWorkflowModule], never>;
29
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPGlobalSearchModule, never, [typeof i1.AXPComponentSlotModule, typeof i1$1.AXPWorkflowModule], never>;
36
30
  static ɵinj: i0.ɵɵInjectorDeclaration<AXPGlobalSearchModule>;
37
31
  }
38
32
 
39
33
  declare class AXPVersionHistoryModule {
40
34
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPVersionHistoryModule, never>;
41
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXPVersionHistoryModule, never, [typeof i1.AXPWorkflowModule], never>;
35
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPVersionHistoryModule, never, [typeof i1$1.AXPWorkflowModule], never>;
42
36
  static ɵinj: i0.ɵɵInjectorDeclaration<AXPVersionHistoryModule>;
43
37
  }
44
38
 
@@ -50,19 +44,19 @@ declare class AXPComputedPropertiesModule {
50
44
 
51
45
  declare class AXPClonePluginModule {
52
46
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPClonePluginModule, never>;
53
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXPClonePluginModule, never, [typeof i1.AXPWorkflowModule], never>;
47
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPClonePluginModule, never, [typeof i1$1.AXPWorkflowModule], never>;
54
48
  static ɵinj: i0.ɵɵInjectorDeclaration<AXPClonePluginModule>;
55
49
  }
56
50
 
57
51
  declare class AXPArchivePluginModule {
58
52
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPArchivePluginModule, never>;
59
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXPArchivePluginModule, never, [typeof i1.AXPWorkflowModule], never>;
53
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPArchivePluginModule, never, [typeof i1$1.AXPWorkflowModule], never>;
60
54
  static ɵinj: i0.ɵɵInjectorDeclaration<AXPArchivePluginModule>;
61
55
  }
62
56
 
63
57
  declare class AXPDisablePluginModule {
64
58
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPDisablePluginModule, never>;
65
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXPDisablePluginModule, never, [typeof i1.AXPWorkflowModule], never>;
59
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPDisablePluginModule, never, [typeof i1$1.AXPWorkflowModule], never>;
66
60
  static ɵinj: i0.ɵɵInjectorDeclaration<AXPDisablePluginModule>;
67
61
  }
68
62
 
@@ -83,7 +77,7 @@ declare class AXPComparePopupComponent extends AXBasePageComponent implements On
83
77
 
84
78
  declare class AXPCompareModule {
85
79
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPCompareModule, never>;
86
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXPCompareModule, never, [typeof AXPComparePopupComponent, typeof i1.AXPWorkflowModule], [typeof AXPComparePopupComponent]>;
80
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPCompareModule, never, [typeof AXPComparePopupComponent, typeof i1$1.AXPWorkflowModule], [typeof AXPComparePopupComponent]>;
87
81
  static ɵinj: i0.ɵɵInjectorDeclaration<AXPCompareModule>;
88
82
  }
89
83
 
@@ -107,7 +101,7 @@ declare class AXPAvatarPluginModule {
107
101
 
108
102
  declare class AXMCommonModule {
109
103
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMCommonModule, never>;
110
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMCommonModule, never, [typeof AXMLockSystemModule, typeof AXPExtraPropertiesModule, typeof AXPCategoryModule, typeof AXPGlobalSearchModule, typeof i5.AXPWidgetsModule, typeof AXPVersionHistoryModule, typeof AXPComputedPropertiesModule, typeof AXPClonePluginModule, typeof AXPArchivePluginModule, typeof AXPDisablePluginModule, typeof AXPPrimaryPluginModule, typeof AXPCompareModule, typeof AXPIconPluginModule, typeof AXPColorPluginModule, typeof AXPAvatarPluginModule], never>;
104
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMCommonModule, never, [typeof AXPExtraPropertiesModule, typeof AXPCategoryModule, typeof AXPGlobalSearchModule, typeof i4.AXPWidgetsModule, typeof AXPVersionHistoryModule, typeof AXPComputedPropertiesModule, typeof AXPClonePluginModule, typeof AXPArchivePluginModule, typeof AXPDisablePluginModule, typeof AXPPrimaryPluginModule, typeof AXPCompareModule, typeof AXPIconPluginModule, typeof AXPColorPluginModule, typeof AXPAvatarPluginModule], never>;
111
105
  static ɵinj: i0.ɵɵInjectorDeclaration<AXMCommonModule>;
112
106
  }
113
107
 
@@ -232,33 +232,37 @@ class AXPCustomMenuMiddleware {
232
232
  context.sort();
233
233
  }
234
234
  catch (error) {
235
- // Silent fail - don't break menu rendering
235
+ console.error('Error applying menu customizations:', error);
236
236
  }
237
237
  }
238
238
  //#endregion
239
239
  //#region ---- Private Methods ----
240
240
  /**
241
241
  * Load menu customization from settings
242
- * Explicitly checks User scope first, then falls back to Tenant scope
242
+ * Merges Tenant and User scope customizations (User overrides Tenant)
243
243
  */
244
244
  async loadCustomization() {
245
245
  try {
246
- // Try User scope first
247
- const userSettings = this.settingService.scope(AXPPlatformScope.User);
248
- const userCustomization = await userSettings.get(AXP_MENU_CUSTOMIZATION_KEY);
249
- if (userCustomization && userCustomization.version) {
250
- return userCustomization;
251
- }
252
- // Fall back to Tenant scope
246
+ // Load both scopes
253
247
  const tenantSettings = this.settingService.scope(AXPPlatformScope.Tenant);
248
+ const userSettings = this.settingService.scope(AXPPlatformScope.User);
254
249
  const tenantCustomization = await tenantSettings.get(AXP_MENU_CUSTOMIZATION_KEY);
255
- if (tenantCustomization && tenantCustomization.version) {
256
- return tenantCustomization;
257
- }
258
- // No customization found at any level, return default
259
- return AXP_MENU_CUSTOMIZATION_DEFAULT;
250
+ const userCustomization = await userSettings.get(AXP_MENU_CUSTOMIZATION_KEY);
251
+ // Merge customizations: Tenant as base, User overrides
252
+ const merged = {
253
+ version: userCustomization?.version || tenantCustomization?.version || AXP_MENU_CUSTOMIZATION_DEFAULT.version,
254
+ overrides: {
255
+ ...(tenantCustomization?.overrides || {}),
256
+ ...(userCustomization?.overrides || {}), // User overrides win
257
+ },
258
+ customItems: [...(tenantCustomization?.customItems || []), ...(userCustomization?.customItems || [])],
259
+ };
260
+ // Return merged result or default if both are empty
261
+ const hasCustomizations = Object.keys(merged.overrides).length > 0 || merged.customItems.length > 0;
262
+ return hasCustomizations ? merged : AXP_MENU_CUSTOMIZATION_DEFAULT;
260
263
  }
261
264
  catch (error) {
265
+ console.error('Failed to load menu customization:', error);
262
266
  return AXP_MENU_CUSTOMIZATION_DEFAULT;
263
267
  }
264
268
  }
@@ -271,11 +275,6 @@ class AXPCustomMenuMiddleware {
271
275
  if (!finder.exists()) {
272
276
  return;
273
277
  }
274
- // Skip custom items - they're handled in addCustomItems
275
- const isCustomItem = customization.customItems.some(item => item.name === menuName);
276
- if (isCustomItem) {
277
- return;
278
- }
279
278
  // Hide menu item
280
279
  if (override.hidden) {
281
280
  finder.remove();
@@ -289,11 +288,9 @@ class AXPCustomMenuMiddleware {
289
288
  if (override.properties) {
290
289
  finder.update(override.properties);
291
290
  }
292
- // Move to different parent (check if property exists)
293
- if ('parentName' in override) {
294
- // Empty string means root level, otherwise use the actual parent name
295
- const targetParent = override.parentName === '' ? null : override.parentName;
296
- finder.moveTo(targetParent);
291
+ // Move to different parent
292
+ if (override.parentName !== undefined) {
293
+ finder.moveTo(override.parentName);
297
294
  }
298
295
  });
299
296
  }
@@ -302,22 +299,7 @@ class AXPCustomMenuMiddleware {
302
299
  */
303
300
  addCustomItems(context, customization) {
304
301
  if (customization.customItems && customization.customItems.length > 0) {
305
- // Add custom items first
306
302
  context.add(...customization.customItems);
307
- // Then apply parent overrides for custom items
308
- customization.customItems.forEach(customItem => {
309
- if (customItem.name) {
310
- const override = customization.overrides[customItem.name];
311
- if (override && 'parentName' in override) {
312
- const finder = context.findByName(customItem.name);
313
- if (finder.exists()) {
314
- // Empty string means root level, otherwise use the actual parent name
315
- const targetParent = override.parentName === '' ? null : override.parentName;
316
- finder.moveTo(targetParent);
317
- }
318
- }
319
- }
320
- });
321
303
  }
322
304
  }
323
305
  }
@@ -1791,7 +1773,7 @@ function routesFactory() {
1791
1773
  children: [
1792
1774
  {
1793
1775
  path: '',
1794
- loadComponent: () => import('./acorex-modules-application-management-menu-list.component-BMbl5rtn.mjs').then((c) => c.AXMMenuListComponent),
1776
+ loadComponent: () => import('./acorex-modules-application-management-menu-list.component-D4uW0aXY.mjs').then((c) => c.AXMMenuListComponent),
1795
1777
  data: { reuse: true },
1796
1778
  },
1797
1779
  ],
@@ -1941,4 +1923,4 @@ class AXMSettingProvider {
1941
1923
  */
1942
1924
 
1943
1925
  export { AXP_MENU_CUSTOMIZATION_KEY as A, RootConfig as R, AXP_MENU_CUSTOMIZATION_DEFAULT as a, AXMApplicationManagementModule as b, AXMApplicationManagementModuleConst as c, applicationEntityFactory as d, AXMApplicationEntityModule as e, AXMApplicationService as f, AXMApplicationServiceImpl as g, editionEntityFactory as h, AXMEditionEntityModule as i, AXMEditionService as j, AXMEditionServiceImpl as k, featureEntityFactory as l, AXMFeatureEntityModule as m, AXMFeatureService as n, AXMFeatureServiceImpl as o, moduleEntityFactory as p, AXMModuleEntityModule as q, AXMModuleService as r, AXMModuleServiceImpl as s, AXMEntityProvider as t, AXMApplicationManagmentModuleMenuProvider as u, AXMSearchCommandProvider as v, AXMSettingProvider as w };
1944
- //# sourceMappingURL=acorex-modules-application-management-acorex-modules-application-management-CQMnhxLa.mjs.map
1926
+ //# sourceMappingURL=acorex-modules-application-management-acorex-modules-application-management-BqYLpEvY.mjs.map