@vc-shell/framework 1.1.0-alpha.6 → 1.1.0-alpha.7

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 (73) hide show
  1. package/core/composables/useGlobalSearch/index.ts +4 -4
  2. package/core/constants/index.ts +2 -0
  3. package/core/plugins/modularity/index.ts +1 -1
  4. package/core/services/menu-service.ts +292 -28
  5. package/core/types/index.ts +13 -0
  6. package/dist/core/composables/useGlobalSearch/index.d.ts +2 -2
  7. package/dist/core/constants/index.d.ts +1 -0
  8. package/dist/core/constants/index.d.ts.map +1 -1
  9. package/dist/core/services/menu-service.d.ts +36 -3
  10. package/dist/core/services/menu-service.d.ts.map +1 -1
  11. package/dist/core/types/index.d.ts +13 -0
  12. package/dist/core/types/index.d.ts.map +1 -1
  13. package/dist/framework.js +198 -197
  14. package/dist/{index-LjqdX6jw.js → index-4fNoXD3u.js} +1 -1
  15. package/dist/{index-CyuFXG83.js → index-7YHBATKO.js} +1 -1
  16. package/dist/{index-D1rpRTKf.js → index-7gQRbSrG.js} +1 -1
  17. package/dist/{index-B-nvqNbp.js → index-B1NfXGpu.js} +1 -1
  18. package/dist/{index-DZAq0B3U.js → index-B42ra4oQ.js} +21078 -21001
  19. package/dist/{index-EDF1MDtU.js → index-Bixm_Atu.js} +1 -1
  20. package/dist/{index-DvGVm1rK.js → index-C9NLyptv.js} +1 -1
  21. package/dist/{index-C7P-aBjd.js → index-CPjPhNQr.js} +1 -1
  22. package/dist/{index-CfyFpaKq.js → index-CR62_U0-.js} +1 -1
  23. package/dist/{index-DLxTAT7x.js → index-DHUS6fMi.js} +1 -1
  24. package/dist/{index-BXlxP2d2.js → index-DKMXMXmO.js} +1 -1
  25. package/dist/{index-Ci23AX3j.js → index-DxhPupsj.js} +1 -1
  26. package/dist/{index-DtkJ7xTB.js → index-DyDl-e3b.js} +1 -1
  27. package/dist/{index-DOVhosAY.js → index-IdAZC2W6.js} +1 -1
  28. package/dist/{index-BQF2-UMe.js → index-QiYxGOfR.js} +1 -1
  29. package/dist/{index-CO_2IshF.js → index-qjW_Kc_I.js} +1 -1
  30. package/dist/{index-3ySdd-mG.js → index-tHx2asQS.js} +1 -1
  31. package/dist/index.css +1 -1
  32. package/dist/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.d.ts.map +1 -1
  33. package/dist/shared/components/notification-dropdown/notification-dropdown.vue.d.ts.map +1 -1
  34. package/dist/shared/components/sidebar/sidebar.vue.d.ts.map +1 -1
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  37. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarHeader.vue.d.ts.map +1 -1
  38. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarOverlay.vue.d.ts.map +1 -1
  39. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  40. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  41. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  42. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  43. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
  44. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
  45. package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue.d.ts.map +1 -1
  46. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  47. package/dist/ui/composables/useVisibleElements.d.ts.map +1 -1
  48. package/package.json +4 -4
  49. package/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.ts +2 -2
  50. package/shared/components/blade-navigation/types/index.ts +117 -117
  51. package/shared/components/draggable-dashboard/DraggableDashboard.vue +2 -5
  52. package/shared/components/draggable-dashboard/_internal/DashboardWidget.vue +16 -32
  53. package/shared/components/notification-dropdown/notification-dropdown.vue +11 -1
  54. package/shared/components/sidebar/sidebar.vue +36 -34
  55. package/shared/pages/LoginPage/components/login/Login.vue +0 -2
  56. package/ui/components/atoms/vc-badge/vc-badge.vue +26 -10
  57. package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +2 -2
  58. package/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarHeader.vue +31 -2
  59. package/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarOverlay.vue +15 -13
  60. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +26 -15
  61. package/ui/components/organisms/vc-app/vc-app.vue +14 -2
  62. package/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue +4 -5
  63. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/_internal/vc-blade-toolbar-button/vc-blade-toolbar-circle-button.vue +2 -2
  64. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/mobile/vc-blade-toolbar-mobile.vue +1 -1
  65. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +0 -3
  66. package/ui/components/organisms/vc-blade/vc-blade.vue +7 -2
  67. package/ui/components/organisms/vc-login-form/vc-login-form.vue +99 -99
  68. package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue +5 -5
  69. package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue +1 -0
  70. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +40 -28
  71. package/ui/components/organisms/vc-table/_internal/vc-table-header/vc-table-header.vue +1 -1
  72. package/ui/components/organisms/vc-table/vc-table.vue +5 -4
  73. package/ui/composables/useVisibleElements.ts +2 -0
@@ -4,19 +4,19 @@ import { GlobalSearchKey } from "../../../injection-keys";
4
4
  export interface GlobalSearchState {
5
5
  isSearchVisible: Ref<Record<string, boolean>>;
6
6
  searchQuery: Ref<Record<string, string>>;
7
- toggleSearch: (bladeId: number) => void;
8
- setSearchQuery: (bladeId: number, query: string) => void;
7
+ toggleSearch: (bladeId: string) => void;
8
+ setSearchQuery: (bladeId: string, query: string) => void;
9
9
  }
10
10
 
11
11
  export function createGlobalSearch() {
12
12
  const isSearchVisible = ref<Record<string, boolean>>({});
13
13
  const searchQuery = ref<Record<string, string>>({});
14
14
 
15
- const toggleSearch = (bladeId: number) => {
15
+ const toggleSearch = (bladeId: string) => {
16
16
  isSearchVisible.value[bladeId] = !isSearchVisible.value[bladeId];
17
17
  };
18
18
 
19
- const setSearchQuery = (bladeId: number, query: string) => {
19
+ const setSearchQuery = (bladeId: string, query: string) => {
20
20
  searchQuery.value[bladeId] = query;
21
21
  };
22
22
 
@@ -1 +1,3 @@
1
+ export const FALLBACK_BLADE_ID = "fallback-blade-id";
2
+
1
3
  export * from "./locale";
@@ -205,7 +205,7 @@ export function createAppModule(
205
205
  icon: resolveComponent(page.menuItem.icon as string),
206
206
  url: page.url,
207
207
  routeId: routeName,
208
- permissions: page.permissions,
208
+ permissions: page.permissions || page.menuItem.permissions,
209
209
  });
210
210
  }
211
211
  }
@@ -1,23 +1,85 @@
1
- import { computed, ComputedRef, ref, watch, type Ref } from "vue";
1
+ import { computed, ComputedRef, ref, type Ref, type Component } from "vue";
2
2
  import * as _ from "lodash-es";
3
3
  import { i18n } from "./../plugins/i18n";
4
- import type { MenuItem } from "../types";
4
+ import type { MenuItem, MenuItemConfig } from "../types";
5
5
  import { createUnrefFn, useArrayFind } from "@vueuse/core";
6
+ import { usePermissions } from "../composables";
6
7
 
7
8
  // Global state for pre-registering menu items
8
9
  const preregisteredMenuItems: Ref<MenuItem[]> = ref([]);
9
10
 
11
+ // Separate interface for creating a group where id can be optional
12
+ export interface MenuItemConfigCreateOptions extends Omit<MenuItemConfig, "id"> {
13
+ id?: string;
14
+ }
15
+
16
+ /**
17
+ * Configuration for creating a group together with a menu item
18
+ */
19
+ export interface MenuItemWithGroupConfig extends Omit<MenuItemConfig, "group" | "groupId" | "groupIcon"> {
20
+ /**
21
+ * Required group configuration for automatically creating a group.
22
+ * The item will be added to this group.
23
+ */
24
+ groupConfig: MenuItemConfigCreateOptions;
25
+ }
26
+
27
+ // Global state for menu groups
28
+ const MenuItemConfigs: Ref<Record<string, MenuItemConfig>> = ref({});
29
+
30
+ /**
31
+ * Helper function to create a menu item with group in one step
32
+ * @param item - The menu item properties
33
+ * @param group - The group properties
34
+ * @param inGroupPriority - Optional priority within the group, defaults to item.priority
35
+ * @returns A menu item configuration with embedded group
36
+ */
37
+ export function createMenuItemWithGroup(
38
+ item: Omit<MenuItemConfig, "group" | "groupId">,
39
+ group: MenuItemConfigCreateOptions,
40
+ inGroupPriority?: number,
41
+ ): MenuItemWithGroupConfig {
42
+ return {
43
+ ...item,
44
+ // Use explicitly passed inGroupPriority or item.priority as a fallback
45
+ inGroupPriority: inGroupPriority ?? item.priority,
46
+ groupConfig: {
47
+ id: group.id || _.uniqueId("group_"),
48
+ ...group,
49
+ },
50
+ };
51
+ }
52
+
10
53
  /**
11
54
  * Registers a menu item before the service is initialized
12
55
  */
13
- export function addMenuItem(item: MenuItem): void {
14
- preregisteredMenuItems.value.push(item);
56
+ export function addMenuItem(item: MenuItem | MenuItemWithGroupConfig): void {
57
+ // We need to convert the type because the external function can accept MenuItemWithGroupConfig,
58
+ // but preregisteredMenuItems expects MenuItem
59
+ if ("groupConfig" in item) {
60
+ // Conversion will be performed in the addMenuItem function inside createMenuService
61
+ preregisteredMenuItems.value.push(item as unknown as MenuItem);
62
+ } else {
63
+ preregisteredMenuItems.value.push(item);
64
+ }
15
65
  }
16
66
 
17
67
  export interface MenuService {
18
- addMenuItem: (item: MenuItem) => void;
68
+ /**
69
+ * Adds a menu item to the menu.
70
+ * If the item contains a `groupConfig` property, the group will be created automatically
71
+ * if it doesn't exist yet.
72
+ * @param item - The menu item to add or a config with both item and group
73
+ */
74
+ addMenuItem: (item: MenuItem | MenuItemWithGroupConfig) => void;
19
75
  menuItems: Ref<MenuItem[]>;
20
76
  removeMenuItem: (item: MenuItem) => void;
77
+ updateMenuItem: (id: string, updatedItem: Partial<MenuItem>) => boolean;
78
+ getMenuItem: (id: string) => MenuItem | undefined;
79
+ createMenuItemConfig: (group: MenuItemConfigCreateOptions) => string;
80
+ updateMenuItemConfig: (id: string, group: Partial<MenuItemConfig>) => boolean;
81
+ removeMenuItemConfig: (id: string) => boolean;
82
+ getMenuItemConfigs: () => Record<string, MenuItemConfig>;
21
83
  }
22
84
 
23
85
  // Default priority values
@@ -34,13 +96,44 @@ const rawMenu: Ref<MenuItem[]> = ref([]);
34
96
  */
35
97
  export function createMenuService(): MenuService {
36
98
  const { t } = i18n.global;
99
+ const { hasAccess } = usePermissions();
37
100
 
38
101
  /**
39
102
  * Add a new menu item to the raw menu and rebuild the menu structure
40
- * @param item - The menu item to add
103
+ * @param item - The menu item to add, or a menu item with group configuration
41
104
  */
42
- function addMenuItem(item: MenuItem): void {
43
- rawMenu.value.push(item);
105
+ function addMenuItem(item: MenuItem | MenuItemWithGroupConfig): void {
106
+ // Check if item contains group configuration
107
+ if ("groupConfig" in item && item.groupConfig) {
108
+ // Either use existing group or create a new one
109
+ let groupId: string;
110
+ const groupConfig = item.groupConfig;
111
+
112
+ // If the group already exists with the same id, use that
113
+ if (groupConfig.id && MenuItemConfigs.value[groupConfig.id]) {
114
+ groupId = groupConfig.id;
115
+ // Optionally update the group with any new properties
116
+ updateMenuItemConfig(groupId, groupConfig);
117
+ } else {
118
+ // Create a new group
119
+ groupId = createMenuItemConfig(groupConfig);
120
+ }
121
+
122
+ // Create the menu item with the group ID
123
+ const menuItem: MenuItem = {
124
+ ..._.omit(item, ["groupConfig"]),
125
+ groupId,
126
+ // Если не указан inGroupPriority, используем priority для совместимости
127
+ inGroupPriority: item.inGroupPriority ?? item.priority,
128
+ } as MenuItem;
129
+
130
+ // Add it to the raw menu
131
+ rawMenu.value.push(menuItem);
132
+ } else {
133
+ // Regular menu item, just add it
134
+ rawMenu.value.push(item as MenuItem);
135
+ }
136
+
44
137
  constructMenu();
45
138
  }
46
139
 
@@ -49,10 +142,112 @@ export function createMenuService(): MenuService {
49
142
  * @param item - The menu item to remove
50
143
  */
51
144
  function removeMenuItem(item: MenuItem): void {
52
- const index = menuItems.value.indexOf(item);
145
+ const index = rawMenu.value.findIndex(
146
+ (menuItem) => menuItem.id === item.id || (menuItem.title === item.title && menuItem.group === item.group),
147
+ );
148
+
149
+ if (index !== -1) {
150
+ rawMenu.value.splice(index, 1);
151
+ constructMenu();
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Updates an existing menu item by id
157
+ * @param id - The id of the menu item to update
158
+ * @param updatedItem - The updated properties
159
+ * @returns true if the item was found and updated, false otherwise
160
+ */
161
+ function updateMenuItem(id: string, updatedItem: Partial<MenuItem>): boolean {
162
+ const index = rawMenu.value.findIndex((item) => item.id === id);
53
163
  if (index !== -1) {
54
- menuItems.value.splice(index, 1);
164
+ rawMenu.value[index] = { ...rawMenu.value[index], ...updatedItem };
165
+ constructMenu();
166
+ return true;
167
+ }
168
+ return false;
169
+ }
170
+
171
+ /**
172
+ * Get a menu item by id
173
+ * @param id - The id of the menu item
174
+ * @returns The menu item or undefined if not found
175
+ */
176
+ function getMenuItem(id: string): MenuItem | undefined {
177
+ // First try to find in top level menu items
178
+ const topLevelItem = menuItems.value.find((item) => item.id === id);
179
+ if (topLevelItem) return topLevelItem;
180
+
181
+ // Then look in children
182
+ for (const item of menuItems.value) {
183
+ if (item.children) {
184
+ const childItem = item.children.find((child) => child.id === id);
185
+ if (childItem) return childItem;
186
+ }
55
187
  }
188
+
189
+ return undefined;
190
+ }
191
+
192
+ /**
193
+ * Creates a new menu group
194
+ * @param group - The group to create
195
+ * @returns The id of the created group
196
+ */
197
+ function createMenuItemConfig(group: MenuItemConfigCreateOptions): string {
198
+ // Use provided id or generate a new one
199
+ const groupId = group.id || _.uniqueId("group_");
200
+
201
+ MenuItemConfigs.value[groupId] = {
202
+ ...group,
203
+ id: groupId,
204
+ } as MenuItemConfig;
205
+
206
+ // Rebuild menu to incorporate the new group
207
+ constructMenu();
208
+
209
+ return groupId;
210
+ }
211
+
212
+ /**
213
+ * Updates an existing menu group
214
+ * @param id - The id of the group to update
215
+ * @param group - The updated properties
216
+ * @returns true if the group was found and updated, false otherwise
217
+ */
218
+ function updateMenuItemConfig(id: string, group: Partial<MenuItemConfig>): boolean {
219
+ if (MenuItemConfigs.value[id]) {
220
+ MenuItemConfigs.value[id] = { ...MenuItemConfigs.value[id], ...group };
221
+ constructMenu();
222
+ return true;
223
+ }
224
+ return false;
225
+ }
226
+
227
+ /**
228
+ * Removes a menu group
229
+ * @param id - The id of the group to remove
230
+ * @returns true if the group was found and removed, false otherwise
231
+ */
232
+ function removeMenuItemConfig(id: string): boolean {
233
+ if (MenuItemConfigs.value[id]) {
234
+ delete MenuItemConfigs.value[id];
235
+
236
+ // Update menu items that belonged to this group
237
+ rawMenu.value = rawMenu.value.filter((item) => item.groupId !== id);
238
+
239
+ constructMenu();
240
+ return true;
241
+ }
242
+ return false;
243
+ }
244
+
245
+ /**
246
+ * Gets all menu groups
247
+ * @returns All menu groups
248
+ */
249
+ function getMenuItemConfigs(): Record<string, MenuItemConfig> {
250
+ return { ...MenuItemConfigs.value };
56
251
  }
57
252
 
58
253
  /**
@@ -81,7 +276,8 @@ export function createMenuService(): MenuService {
81
276
  * Sorts items within a group by their inGroupPriority
82
277
  */
83
278
  function sortByGroupPriority(a: MenuItem, b: MenuItem): number {
84
- const getGroupPriority = (item: MenuItem): number => item.inGroupPriority ?? DEFAULT_GROUP_PRIORITY;
279
+ const getGroupPriority = (item: MenuItem): number =>
280
+ item.inGroupPriority ?? item.groupConfig?.priority ?? DEFAULT_GROUP_PRIORITY;
85
281
  return getGroupPriority(a) - getGroupPriority(b);
86
282
  }
87
283
 
@@ -100,32 +296,85 @@ export function createMenuService(): MenuService {
100
296
  return computed(() => t(title));
101
297
  }
102
298
 
299
+ /**
300
+ * Checks if the current user has permission to see the menu item
301
+ * @param item - The menu item to check
302
+ * @returns true if the user has permission, false otherwise
303
+ */
304
+ function hasPermissionForItem(item: MenuItem): boolean {
305
+ // If no permissions are specified, the item is visible to everyone
306
+ if (!item.permissions || (Array.isArray(item.permissions) && item.permissions.length === 0)) {
307
+ return true;
308
+ }
309
+
310
+ // Check if user has any of the required permissions
311
+ return hasAccess(item.permissions);
312
+ }
313
+
103
314
  /**
104
315
  * Processes a menu item that belongs to a group
105
316
  */
106
317
  function processGroupItem(item: MenuItem, constructedMenu: Ref<MenuItem[]>): void {
107
- if (!item.group) return;
318
+ // Skip items the user doesn't have permission to see
319
+ if (!hasPermissionForItem(item)) return;
320
+
321
+ // Handle both legacy (group by name) and new (group by id) approaches
322
+ let groupId: string;
323
+ let groupTitle: string;
324
+ let groupIcon: string | Component = "";
325
+ let groupPriority: number = DEFAULT_PRIORITY;
326
+ let groupPermissions: string | string[] | undefined;
327
+
328
+ // If using groupId (new way)
329
+ if (item.groupId && MenuItemConfigs.value[item.groupId]) {
330
+ const group = MenuItemConfigs.value[item.groupId];
331
+ groupId = "group_" + group.id;
332
+ groupTitle = group.title;
333
+ groupIcon = group.icon || "";
334
+ groupPriority = group.priority || DEFAULT_PRIORITY;
335
+ groupPermissions = group.permissions;
336
+ }
337
+ // If using group string (legacy way)
338
+ else if (item.group) {
339
+ console.warn("Using item.group is deprecated, please use item.groupId instead");
340
+ groupId = "group_" + createItemId(item.group);
341
+ groupTitle = item.group;
342
+ groupIcon = item.groupIcon || "";
343
+ groupPriority = item.priority || DEFAULT_PRIORITY;
344
+ groupPermissions = item.permissions;
345
+ }
346
+ // Skip if no valid group reference found
347
+ else {
348
+ return;
349
+ }
108
350
 
109
- const groupId = "group_" + createItemId(item.group);
110
351
  const existingGroup = useArrayFind(constructedMenu, (m) => m.groupId === groupId);
111
352
 
112
353
  // Create the item to be added to the group
113
354
  const groupItem = {
114
- ..._.omit(item, ["group", "groupIcon", "groupPriority"]),
355
+ ..._.omit(item, ["group", "groupIcon", "priority", "groupId"]),
115
356
  title: createLocalizedTitle(item.title as string),
357
+ // Ensure inGroupPriority is preserved and used
358
+ inGroupPriority: item.inGroupPriority || item.priority || DEFAULT_GROUP_PRIORITY,
116
359
  } as MenuItem;
117
360
 
118
361
  if (existingGroup.value && existingGroup.value.children) {
119
362
  // Add to existing group
120
363
  upsert(existingGroup.value.children, groupItem);
121
364
  } else {
365
+ // Skip creating group if user doesn't have permission for the group
366
+ if (groupPermissions && !hasAccess(groupPermissions)) {
367
+ return;
368
+ }
369
+
122
370
  // Create a new group with this item
123
371
  const group = {
124
372
  groupId,
125
- groupIcon: item.groupIcon ?? "",
126
- title: createLocalizedTitle(item.group),
373
+ groupIcon,
374
+ title: createLocalizedTitle(groupTitle),
127
375
  children: [groupItem],
128
- priority: item.priority, // Use item priority since groupPriority doesn't exist
376
+ priority: groupPriority,
377
+ permissions: groupPermissions,
129
378
  } as MenuItem;
130
379
  upsert(constructedMenu.value, group);
131
380
  }
@@ -135,6 +384,9 @@ export function createMenuService(): MenuService {
135
384
  * Processes a standalone menu item (not in a group)
136
385
  */
137
386
  function processStandaloneItem(item: MenuItem, constructedMenu: Ref<MenuItem[]>): void {
387
+ // Skip items the user doesn't have permission to see
388
+ if (!hasPermissionForItem(item)) return;
389
+
138
390
  if (item.title) {
139
391
  const standaloneItem = {
140
392
  ...item,
@@ -146,18 +398,23 @@ export function createMenuService(): MenuService {
146
398
 
147
399
  /**
148
400
  * Finalizes menu items by adding IDs and sorting children
401
+ * Also filters out groups with no visible children
149
402
  */
150
403
  function finalizeMenuItems(items: MenuItem[]): MenuItem[] {
151
- return items
152
- .map(
153
- (item): MenuItem => ({
154
- ...item,
155
- title: createLocalizedTitle(item.title as string),
156
- id: item.id || createItemId(item.title as ComputedRef<string>),
157
- children: item.children?.sort(sortByGroupPriority),
158
- }),
159
- )
160
- .sort(sortByPriority);
404
+ return (
405
+ items
406
+ .map(
407
+ (item): MenuItem => ({
408
+ ...item,
409
+ title: createLocalizedTitle(item.title as string),
410
+ id: item.id || createItemId(item.title as ComputedRef<string>),
411
+ children: item.children?.filter((child) => hasPermissionForItem(child)).sort(sortByGroupPriority),
412
+ }),
413
+ )
414
+ // Filter out groups with no visible children
415
+ .filter((item) => !item.children || item.children.length > 0)
416
+ .sort(sortByPriority)
417
+ );
161
418
  }
162
419
 
163
420
  /**
@@ -168,7 +425,7 @@ export function createMenuService(): MenuService {
168
425
 
169
426
  // Process each raw menu item
170
427
  rawMenu.value.forEach((item) => {
171
- if (item.group) {
428
+ if (item.group || item.groupId) {
172
429
  processGroupItem(item, constructedMenu);
173
430
  } else {
174
431
  processStandaloneItem(item, constructedMenu);
@@ -179,6 +436,7 @@ export function createMenuService(): MenuService {
179
436
  menuItems.value = finalizeMenuItems(constructedMenu.value);
180
437
  }
181
438
 
439
+ // Process any pre-registered menu items, including those with group configurations
182
440
  preregisteredMenuItems.value.forEach((item) => {
183
441
  try {
184
442
  addMenuItem(item);
@@ -191,5 +449,11 @@ export function createMenuService(): MenuService {
191
449
  addMenuItem,
192
450
  menuItems,
193
451
  removeMenuItem,
452
+ updateMenuItem,
453
+ getMenuItem,
454
+ createMenuItemConfig,
455
+ updateMenuItemConfig,
456
+ removeMenuItemConfig,
457
+ getMenuItemConfigs,
194
458
  };
195
459
  }
@@ -195,20 +195,33 @@ export interface MenuItemConfig {
195
195
  icon: string | Component;
196
196
  /**
197
197
  * Menu group icon.
198
+ *
199
+ * @deprecated Use groupConfig.icon instead for better robustness
198
200
  */
199
201
  groupIcon?: string;
200
202
  /**
201
203
  * Menu item group. Is used to group menu items with it's provided name.
202
204
  *
203
205
  * If the path is not specified, the menu item is added to the root of the menu.
206
+ *
207
+ * @deprecated Use groupConfig instead for better robustness
204
208
  */
205
209
  group?: string;
210
+ /**
211
+ * Group configuration for creating or updating a group when adding this menu item.
212
+ * This allows creating a group and adding an item to it in one step.
213
+ * If a group with the specified ID already exists, it will be updated with the provided properties.
214
+ */
215
+ groupConfig?: Omit<MenuItemConfig, "group" | "groupId" | "groupIcon" | "groupConfig" | "inGroupPriority">;
206
216
  /**
207
217
  * Position priority.
208
218
  */
209
219
  priority: number;
210
220
  /**
211
221
  * Position priority in group
222
+ *
223
+ * @deprecated Use groupConfig.priority instead for better robustness
212
224
  */
213
225
  inGroupPriority?: number;
226
+ permissions?: string | string[];
214
227
  }
@@ -2,8 +2,8 @@ import { Ref } from "vue";
2
2
  export interface GlobalSearchState {
3
3
  isSearchVisible: Ref<Record<string, boolean>>;
4
4
  searchQuery: Ref<Record<string, string>>;
5
- toggleSearch: (bladeId: number) => void;
6
- setSearchQuery: (bladeId: number, query: string) => void;
5
+ toggleSearch: (bladeId: string) => void;
6
+ setSearchQuery: (bladeId: string, query: string) => void;
7
7
  }
8
8
  export declare function createGlobalSearch(): GlobalSearchState;
9
9
  export declare function useGlobalSearch(): GlobalSearchState;
@@ -1,2 +1,3 @@
1
+ export declare const FALLBACK_BLADE_ID = "fallback-blade-id";
1
2
  export * from "./locale";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,cAAc,UAAU,CAAC"}
@@ -1,13 +1,46 @@
1
1
  import { type Ref } from "vue";
2
- import type { MenuItem } from "../types";
2
+ import type { MenuItem, MenuItemConfig } from "../types";
3
+ export interface MenuItemConfigCreateOptions extends Omit<MenuItemConfig, "id"> {
4
+ id?: string;
5
+ }
6
+ /**
7
+ * Configuration for creating a group together with a menu item
8
+ */
9
+ export interface MenuItemWithGroupConfig extends Omit<MenuItemConfig, "group" | "groupId" | "groupIcon"> {
10
+ /**
11
+ * Required group configuration for automatically creating a group.
12
+ * The item will be added to this group.
13
+ */
14
+ groupConfig: MenuItemConfigCreateOptions;
15
+ }
16
+ /**
17
+ * Helper function to create a menu item with group in one step
18
+ * @param item - The menu item properties
19
+ * @param group - The group properties
20
+ * @param inGroupPriority - Optional priority within the group, defaults to item.priority
21
+ * @returns A menu item configuration with embedded group
22
+ */
23
+ export declare function createMenuItemWithGroup(item: Omit<MenuItemConfig, "group" | "groupId">, group: MenuItemConfigCreateOptions, inGroupPriority?: number): MenuItemWithGroupConfig;
3
24
  /**
4
25
  * Registers a menu item before the service is initialized
5
26
  */
6
- export declare function addMenuItem(item: MenuItem): void;
27
+ export declare function addMenuItem(item: MenuItem | MenuItemWithGroupConfig): void;
7
28
  export interface MenuService {
8
- addMenuItem: (item: MenuItem) => void;
29
+ /**
30
+ * Adds a menu item to the menu.
31
+ * If the item contains a `groupConfig` property, the group will be created automatically
32
+ * if it doesn't exist yet.
33
+ * @param item - The menu item to add or a config with both item and group
34
+ */
35
+ addMenuItem: (item: MenuItem | MenuItemWithGroupConfig) => void;
9
36
  menuItems: Ref<MenuItem[]>;
10
37
  removeMenuItem: (item: MenuItem) => void;
38
+ updateMenuItem: (id: string, updatedItem: Partial<MenuItem>) => boolean;
39
+ getMenuItem: (id: string) => MenuItem | undefined;
40
+ createMenuItemConfig: (group: MenuItemConfigCreateOptions) => string;
41
+ updateMenuItemConfig: (id: string, group: Partial<MenuItemConfig>) => boolean;
42
+ removeMenuItemConfig: (id: string) => boolean;
43
+ getMenuItemConfigs: () => Record<string, MenuItemConfig>;
11
44
  }
12
45
  /**
13
46
  * Menu service implementation
@@ -1 +1 @@
1
- {"version":3,"file":"menu-service.d.ts","sourceRoot":"","sources":["../../../core/services/menu-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAGlE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAMzC;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEhD;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC1C;AAUD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAgK/C"}
1
+ {"version":3,"file":"menu-service.d.ts","sourceRoot":"","sources":["../../../core/services/menu-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,GAAG,EAAkB,MAAM,KAAK,CAAC;AAG3E,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQzD,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;IACtG;;;OAGG;IACH,WAAW,EAAE,2BAA2B,CAAC;CAC1C;AAKD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC,EAC/C,KAAK,EAAE,2BAA2B,EAClC,eAAe,CAAC,EAAE,MAAM,GACvB,uBAAuB,CAUzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,uBAAuB,GAAG,IAAI,CAS1E;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,uBAAuB,KAAK,IAAI,CAAC;IAChE,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC;IACxE,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;IAClD,oBAAoB,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,MAAM,CAAC;IACrE,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC;IAC9E,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,kBAAkB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC1D;AAUD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CA0W/C"}
@@ -167,22 +167,35 @@ export interface MenuItemConfig {
167
167
  icon: string | Component;
168
168
  /**
169
169
  * Menu group icon.
170
+ *
171
+ * @deprecated Use groupConfig.icon instead for better robustness
170
172
  */
171
173
  groupIcon?: string;
172
174
  /**
173
175
  * Menu item group. Is used to group menu items with it's provided name.
174
176
  *
175
177
  * If the path is not specified, the menu item is added to the root of the menu.
178
+ *
179
+ * @deprecated Use groupConfig instead for better robustness
176
180
  */
177
181
  group?: string;
182
+ /**
183
+ * Group configuration for creating or updating a group when adding this menu item.
184
+ * This allows creating a group and adding an item to it in one step.
185
+ * If a group with the specified ID already exists, it will be updated with the provided properties.
186
+ */
187
+ groupConfig?: Omit<MenuItemConfig, "group" | "groupId" | "groupIcon" | "groupConfig" | "inGroupPriority">;
178
188
  /**
179
189
  * Position priority.
180
190
  */
181
191
  priority: number;
182
192
  /**
183
193
  * Position priority in group
194
+ *
195
+ * @deprecated Use groupConfig.priority instead for better robustness
184
196
  */
185
197
  inGroupPriority?: number;
198
+ permissions?: string | string[];
186
199
  }
187
200
  export {};
188
201
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/types/index.ts"],"names":[],"mappings":"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"}