@vc-shell/framework 1.1.0-alpha.7 → 1.1.0-alpha.9
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/core/services/menu-service.ts +60 -284
- package/core/types/index.ts +11 -5
- package/dist/core/services/menu-service.d.ts +3 -36
- package/dist/core/services/menu-service.d.ts.map +1 -1
- package/dist/core/types/index.d.ts +9 -3
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/framework.js +1 -1
- package/dist/{index-QiYxGOfR.js → index-0w9zBoWq.js} +1 -1
- package/dist/{index-DyDl-e3b.js → index-BBlIMdBJ.js} +1 -1
- package/dist/{index-tHx2asQS.js → index-BTJzbPbh.js} +1 -1
- package/dist/{index-B1NfXGpu.js → index-Box9LvQb.js} +1 -1
- package/dist/{index-B42ra4oQ.js → index-C7K2NPkM.js} +20153 -20213
- package/dist/{index-Bixm_Atu.js → index-CU_xM02H.js} +1 -1
- package/dist/{index-4fNoXD3u.js → index-DCEgSQGq.js} +1 -1
- package/dist/{index-DHUS6fMi.js → index-DL0yYr6i.js} +1 -1
- package/dist/{index-IdAZC2W6.js → index-DLSrNER4.js} +1 -1
- package/dist/{index-C9NLyptv.js → index-DONWtLck.js} +1 -1
- package/dist/{index-7YHBATKO.js → index-DRQTVkJw.js} +1 -1
- package/dist/{index-DKMXMXmO.js → index-DUfNgNp3.js} +1 -1
- package/dist/{index-DxhPupsj.js → index-DamkPpiV.js} +1 -1
- package/dist/{index-7gQRbSrG.js → index-Ddo2E7x3.js} +1 -1
- package/dist/{index-CPjPhNQr.js → index-DhmwfxeF.js} +1 -1
- package/dist/{index-CR62_U0-.js → index-DxoeM4zp.js} +1 -1
- package/dist/{index-qjW_Kc_I.js → index-dJf1vUOL.js} +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/shared/components/sidebar/sidebar.vue +4 -1
|
@@ -1,85 +1,23 @@
|
|
|
1
|
-
import { computed, ComputedRef, ref,
|
|
1
|
+
import { Component, computed, ComputedRef, ref, watch, type Ref } from "vue";
|
|
2
2
|
import * as _ from "lodash-es";
|
|
3
3
|
import { i18n } from "./../plugins/i18n";
|
|
4
|
-
import type { MenuItem
|
|
4
|
+
import type { MenuItem } from "../types";
|
|
5
5
|
import { createUnrefFn, useArrayFind } from "@vueuse/core";
|
|
6
|
-
import { usePermissions } from "../composables";
|
|
7
6
|
|
|
8
7
|
// Global state for pre-registering menu items
|
|
9
8
|
const preregisteredMenuItems: Ref<MenuItem[]> = ref([]);
|
|
10
9
|
|
|
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
|
-
|
|
53
10
|
/**
|
|
54
11
|
* Registers a menu item before the service is initialized
|
|
55
12
|
*/
|
|
56
|
-
export function addMenuItem(item: MenuItem
|
|
57
|
-
|
|
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
|
-
}
|
|
13
|
+
export function addMenuItem(item: MenuItem): void {
|
|
14
|
+
preregisteredMenuItems.value.push(item);
|
|
65
15
|
}
|
|
66
16
|
|
|
67
17
|
export interface MenuService {
|
|
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;
|
|
18
|
+
addMenuItem: (item: MenuItem) => void;
|
|
75
19
|
menuItems: Ref<MenuItem[]>;
|
|
76
20
|
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>;
|
|
83
21
|
}
|
|
84
22
|
|
|
85
23
|
// Default priority values
|
|
@@ -96,44 +34,13 @@ const rawMenu: Ref<MenuItem[]> = ref([]);
|
|
|
96
34
|
*/
|
|
97
35
|
export function createMenuService(): MenuService {
|
|
98
36
|
const { t } = i18n.global;
|
|
99
|
-
const { hasAccess } = usePermissions();
|
|
100
37
|
|
|
101
38
|
/**
|
|
102
39
|
* Add a new menu item to the raw menu and rebuild the menu structure
|
|
103
|
-
* @param item - The menu item to add
|
|
40
|
+
* @param item - The menu item to add
|
|
104
41
|
*/
|
|
105
|
-
function addMenuItem(item: MenuItem
|
|
106
|
-
|
|
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
|
-
|
|
42
|
+
function addMenuItem(item: MenuItem): void {
|
|
43
|
+
rawMenu.value.push(item);
|
|
137
44
|
constructMenu();
|
|
138
45
|
}
|
|
139
46
|
|
|
@@ -142,112 +49,10 @@ export function createMenuService(): MenuService {
|
|
|
142
49
|
* @param item - The menu item to remove
|
|
143
50
|
*/
|
|
144
51
|
function removeMenuItem(item: MenuItem): void {
|
|
145
|
-
const index =
|
|
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);
|
|
52
|
+
const index = menuItems.value.indexOf(item);
|
|
163
53
|
if (index !== -1) {
|
|
164
|
-
|
|
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
|
-
}
|
|
54
|
+
menuItems.value.splice(index, 1);
|
|
187
55
|
}
|
|
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 };
|
|
251
56
|
}
|
|
252
57
|
|
|
253
58
|
/**
|
|
@@ -273,11 +78,11 @@ export function createMenuService(): MenuService {
|
|
|
273
78
|
}
|
|
274
79
|
|
|
275
80
|
/**
|
|
276
|
-
* Sorts items within a group by their inGroupPriority
|
|
81
|
+
* Sorts items within a group by their inGroupPriority / priority
|
|
277
82
|
*/
|
|
278
83
|
function sortByGroupPriority(a: MenuItem, b: MenuItem): number {
|
|
279
84
|
const getGroupPriority = (item: MenuItem): number =>
|
|
280
|
-
item.inGroupPriority ?? item.
|
|
85
|
+
item.inGroupPriority ?? item.priority ?? DEFAULT_GROUP_PRIORITY;
|
|
281
86
|
return getGroupPriority(a) - getGroupPriority(b);
|
|
282
87
|
}
|
|
283
88
|
|
|
@@ -296,84 +101,70 @@ export function createMenuService(): MenuService {
|
|
|
296
101
|
return computed(() => t(title));
|
|
297
102
|
}
|
|
298
103
|
|
|
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
|
-
|
|
314
104
|
/**
|
|
315
105
|
* Processes a menu item that belongs to a group
|
|
316
106
|
*/
|
|
317
107
|
function processGroupItem(item: MenuItem, constructedMenu: Ref<MenuItem[]>): void {
|
|
318
|
-
// Skip
|
|
319
|
-
if (!
|
|
108
|
+
// Skip if no group information provided
|
|
109
|
+
if (!item.group && !item.groupConfig) return;
|
|
320
110
|
|
|
321
|
-
// Handle both legacy (group by name) and new (group by id) approaches
|
|
322
111
|
let groupId: string;
|
|
323
112
|
let groupTitle: string;
|
|
324
|
-
let groupIcon: string | Component
|
|
325
|
-
let groupPriority: number
|
|
113
|
+
let groupIcon: string | Component | undefined;
|
|
114
|
+
let groupPriority: number | undefined;
|
|
326
115
|
let groupPermissions: string | string[] | undefined;
|
|
327
116
|
|
|
328
|
-
//
|
|
329
|
-
if (item.
|
|
330
|
-
|
|
331
|
-
groupId =
|
|
332
|
-
groupTitle =
|
|
333
|
-
groupIcon =
|
|
334
|
-
groupPriority =
|
|
335
|
-
groupPermissions =
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
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;
|
|
117
|
+
// Prefer groupConfig over legacy group properties
|
|
118
|
+
if (item.groupConfig) {
|
|
119
|
+
// Use the explicit group ID from groupConfig
|
|
120
|
+
groupId = item.groupConfig.id;
|
|
121
|
+
groupTitle = item.groupConfig.title || groupId;
|
|
122
|
+
groupIcon = item.groupConfig.icon;
|
|
123
|
+
groupPriority = item.groupConfig.priority;
|
|
124
|
+
groupPermissions = item.groupConfig.permissions;
|
|
125
|
+
} else {
|
|
126
|
+
// Fallback to legacy group properties
|
|
127
|
+
groupId = "group_" + createItemId(item.group as string);
|
|
128
|
+
groupTitle = item.group as string;
|
|
129
|
+
groupIcon = item.groupIcon;
|
|
130
|
+
groupPriority = item.priority; // Use item priority as group priority for legacy
|
|
349
131
|
}
|
|
350
132
|
|
|
351
133
|
const existingGroup = useArrayFind(constructedMenu, (m) => m.groupId === groupId);
|
|
352
134
|
|
|
353
135
|
// Create the item to be added to the group
|
|
354
136
|
const groupItem = {
|
|
355
|
-
..._.omit(item, ["group", "groupIcon", "
|
|
137
|
+
..._.omit(item, ["group", "groupIcon", "groupPriority", "groupConfig"]),
|
|
356
138
|
title: createLocalizedTitle(item.title as string),
|
|
357
|
-
// Ensure inGroupPriority is preserved and used
|
|
358
|
-
inGroupPriority: item.inGroupPriority || item.priority || DEFAULT_GROUP_PRIORITY,
|
|
359
139
|
} as MenuItem;
|
|
360
140
|
|
|
361
141
|
if (existingGroup.value && existingGroup.value.children) {
|
|
362
142
|
// Add to existing group
|
|
363
143
|
upsert(existingGroup.value.children, groupItem);
|
|
364
|
-
} else {
|
|
365
|
-
// Skip creating group if user doesn't have permission for the group
|
|
366
|
-
if (groupPermissions && !hasAccess(groupPermissions)) {
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
144
|
|
|
145
|
+
// Update existing group properties if using groupConfig
|
|
146
|
+
if (item.groupConfig) {
|
|
147
|
+
if (item.groupConfig.title) {
|
|
148
|
+
existingGroup.value.title = createLocalizedTitle(item.groupConfig.title);
|
|
149
|
+
}
|
|
150
|
+
if (item.groupConfig.icon !== undefined) {
|
|
151
|
+
existingGroup.value.groupIcon = item.groupConfig.icon;
|
|
152
|
+
}
|
|
153
|
+
if (item.groupConfig.priority !== undefined) {
|
|
154
|
+
existingGroup.value.priority = item.groupConfig.priority;
|
|
155
|
+
}
|
|
156
|
+
if (item.groupConfig.permissions !== undefined) {
|
|
157
|
+
existingGroup.value.permissions = item.groupConfig.permissions;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
370
161
|
// Create a new group with this item
|
|
371
162
|
const group = {
|
|
372
163
|
groupId,
|
|
373
|
-
groupIcon,
|
|
164
|
+
groupIcon: groupIcon ?? "",
|
|
374
165
|
title: createLocalizedTitle(groupTitle),
|
|
375
166
|
children: [groupItem],
|
|
376
|
-
priority: groupPriority,
|
|
167
|
+
priority: groupPriority ?? item.priority ?? DEFAULT_PRIORITY,
|
|
377
168
|
permissions: groupPermissions,
|
|
378
169
|
} as MenuItem;
|
|
379
170
|
upsert(constructedMenu.value, group);
|
|
@@ -384,9 +175,6 @@ export function createMenuService(): MenuService {
|
|
|
384
175
|
* Processes a standalone menu item (not in a group)
|
|
385
176
|
*/
|
|
386
177
|
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
|
-
|
|
390
178
|
if (item.title) {
|
|
391
179
|
const standaloneItem = {
|
|
392
180
|
...item,
|
|
@@ -398,23 +186,18 @@ export function createMenuService(): MenuService {
|
|
|
398
186
|
|
|
399
187
|
/**
|
|
400
188
|
* Finalizes menu items by adding IDs and sorting children
|
|
401
|
-
* Also filters out groups with no visible children
|
|
402
189
|
*/
|
|
403
190
|
function finalizeMenuItems(items: MenuItem[]): MenuItem[] {
|
|
404
|
-
return
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
// Filter out groups with no visible children
|
|
415
|
-
.filter((item) => !item.children || item.children.length > 0)
|
|
416
|
-
.sort(sortByPriority)
|
|
417
|
-
);
|
|
191
|
+
return items
|
|
192
|
+
.map(
|
|
193
|
+
(item): MenuItem => ({
|
|
194
|
+
...item,
|
|
195
|
+
title: createLocalizedTitle(item.title as string),
|
|
196
|
+
id: item.id || createItemId(item.title as ComputedRef<string>),
|
|
197
|
+
children: item.children?.sort(sortByGroupPriority),
|
|
198
|
+
}),
|
|
199
|
+
)
|
|
200
|
+
.sort(sortByPriority);
|
|
418
201
|
}
|
|
419
202
|
|
|
420
203
|
/**
|
|
@@ -425,7 +208,7 @@ export function createMenuService(): MenuService {
|
|
|
425
208
|
|
|
426
209
|
// Process each raw menu item
|
|
427
210
|
rawMenu.value.forEach((item) => {
|
|
428
|
-
if (item.group || item.
|
|
211
|
+
if (item.group || item.groupConfig) {
|
|
429
212
|
processGroupItem(item, constructedMenu);
|
|
430
213
|
} else {
|
|
431
214
|
processStandaloneItem(item, constructedMenu);
|
|
@@ -436,7 +219,6 @@ export function createMenuService(): MenuService {
|
|
|
436
219
|
menuItems.value = finalizeMenuItems(constructedMenu.value);
|
|
437
220
|
}
|
|
438
221
|
|
|
439
|
-
// Process any pre-registered menu items, including those with group configurations
|
|
440
222
|
preregisteredMenuItems.value.forEach((item) => {
|
|
441
223
|
try {
|
|
442
224
|
addMenuItem(item);
|
|
@@ -449,11 +231,5 @@ export function createMenuService(): MenuService {
|
|
|
449
231
|
addMenuItem,
|
|
450
232
|
menuItems,
|
|
451
233
|
removeMenuItem,
|
|
452
|
-
updateMenuItem,
|
|
453
|
-
getMenuItem,
|
|
454
|
-
createMenuItemConfig,
|
|
455
|
-
updateMenuItemConfig,
|
|
456
|
-
removeMenuItemConfig,
|
|
457
|
-
getMenuItemConfigs,
|
|
458
234
|
};
|
|
459
235
|
}
|
package/core/types/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Component, ComputedRef, Ref
|
|
2
|
-
import {
|
|
1
|
+
import { Component, ComputedRef, Ref } from "vue";
|
|
2
|
+
import { CoreBladeExposed } from "../../shared";
|
|
3
3
|
import { ComponentPublicInstanceConstructor } from "../../shared/utilities/vueUtils";
|
|
4
4
|
|
|
5
5
|
// Type instead of interface here is workaround for:
|
|
@@ -176,7 +176,7 @@ export interface MenuItem extends Omit<MenuItemConfig, "title" | "id"> {
|
|
|
176
176
|
routeId?: string;
|
|
177
177
|
title: ComputedRef<string> | string;
|
|
178
178
|
url?: string;
|
|
179
|
-
groupIcon?: string;
|
|
179
|
+
groupIcon?: string | Component;
|
|
180
180
|
groupId?: string;
|
|
181
181
|
children?: MenuItem[];
|
|
182
182
|
permissions?: string | string[];
|
|
@@ -198,7 +198,7 @@ export interface MenuItemConfig {
|
|
|
198
198
|
*
|
|
199
199
|
* @deprecated Use groupConfig.icon instead for better robustness
|
|
200
200
|
*/
|
|
201
|
-
groupIcon?: string;
|
|
201
|
+
groupIcon?: string | Component;
|
|
202
202
|
/**
|
|
203
203
|
* Menu item group. Is used to group menu items with it's provided name.
|
|
204
204
|
*
|
|
@@ -212,7 +212,13 @@ export interface MenuItemConfig {
|
|
|
212
212
|
* This allows creating a group and adding an item to it in one step.
|
|
213
213
|
* If a group with the specified ID already exists, it will be updated with the provided properties.
|
|
214
214
|
*/
|
|
215
|
-
groupConfig?:
|
|
215
|
+
groupConfig?: {
|
|
216
|
+
id: string;
|
|
217
|
+
title?: string;
|
|
218
|
+
icon?: string | Component | undefined;
|
|
219
|
+
priority?: number;
|
|
220
|
+
permissions?: string | string[];
|
|
221
|
+
};
|
|
216
222
|
/**
|
|
217
223
|
* Position priority.
|
|
218
224
|
*/
|
|
@@ -1,46 +1,13 @@
|
|
|
1
1
|
import { type Ref } from "vue";
|
|
2
|
-
import type { MenuItem
|
|
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;
|
|
2
|
+
import type { MenuItem } from "../types";
|
|
24
3
|
/**
|
|
25
4
|
* Registers a menu item before the service is initialized
|
|
26
5
|
*/
|
|
27
|
-
export declare function addMenuItem(item: MenuItem
|
|
6
|
+
export declare function addMenuItem(item: MenuItem): void;
|
|
28
7
|
export interface MenuService {
|
|
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;
|
|
8
|
+
addMenuItem: (item: MenuItem) => void;
|
|
36
9
|
menuItems: Ref<MenuItem[]>;
|
|
37
10
|
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>;
|
|
44
11
|
}
|
|
45
12
|
/**
|
|
46
13
|
* Menu service implementation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-service.d.ts","sourceRoot":"","sources":["../../../core/services/menu-service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"menu-service.d.ts","sourceRoot":"","sources":["../../../core/services/menu-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAG7E,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,CAwM/C"}
|
|
@@ -149,7 +149,7 @@ export interface MenuItem extends Omit<MenuItemConfig, "title" | "id"> {
|
|
|
149
149
|
routeId?: string;
|
|
150
150
|
title: ComputedRef<string> | string;
|
|
151
151
|
url?: string;
|
|
152
|
-
groupIcon?: string;
|
|
152
|
+
groupIcon?: string | Component;
|
|
153
153
|
groupId?: string;
|
|
154
154
|
children?: MenuItem[];
|
|
155
155
|
permissions?: string | string[];
|
|
@@ -170,7 +170,7 @@ export interface MenuItemConfig {
|
|
|
170
170
|
*
|
|
171
171
|
* @deprecated Use groupConfig.icon instead for better robustness
|
|
172
172
|
*/
|
|
173
|
-
groupIcon?: string;
|
|
173
|
+
groupIcon?: string | Component;
|
|
174
174
|
/**
|
|
175
175
|
* Menu item group. Is used to group menu items with it's provided name.
|
|
176
176
|
*
|
|
@@ -184,7 +184,13 @@ export interface MenuItemConfig {
|
|
|
184
184
|
* This allows creating a group and adding an item to it in one step.
|
|
185
185
|
* If a group with the specified ID already exists, it will be updated with the provided properties.
|
|
186
186
|
*/
|
|
187
|
-
groupConfig?:
|
|
187
|
+
groupConfig?: {
|
|
188
|
+
id: string;
|
|
189
|
+
title?: string;
|
|
190
|
+
icon?: string | Component | undefined;
|
|
191
|
+
priority?: number;
|
|
192
|
+
permissions?: string | string[];
|
|
193
|
+
};
|
|
188
194
|
/**
|
|
189
195
|
* Position priority.
|
|
190
196
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,kCAAkC,EAAE,MAAM,iCAAiC,CAAC;AAOrF,MAAM,MAAM,gBAAgB,GAAG;IAE7B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,SAAS,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,IAAI,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,YAAY,CAAC,IAAI,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAElF,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;IACzE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,kCAAkC,CAAC;CAChE,GACG;IACE,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CACrC,GAAG,aAAa,GACjB,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,kCAAkC,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,+BAA+B,GAAG,kCAAkC,GAAG;IACjF,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,YAAY;IACnD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAE3B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EACD,OAAO,GACP,UAAU,GACV,MAAM,GACN,MAAM,GACN,OAAO,GACP,WAAW,GACX,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,MAAM,GACN,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAEzB,cAAc,CAAC,EAAE;QACf,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAAC;AAExH,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;QACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KACjC,CAAC;IACF;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC"}
|
package/dist/framework.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "vue-router";
|
|
2
|
-
import { d2 as o, aL as n, bK as c, Q as r, bL as d, bM as l, by as u, R as p, S as b, dc as g, db as y, de as m, dd as S, bw as V, bz as I, z as h, T as C, B as D, cV as P, bA as A, bN as L, bO as R, dD as f, dS as M, bP as B, bQ as v, bR as T, bS as w, U as E, X as N, Y as O, Z as U, $ as K, bT as x, bU as F, bV as k, a0 as W, D as q, dO as z, bB as j, bW as H, a1 as J, a2 as G, dN as _, dk as Q, dj as X, A as Y, bX as Z, cW as $, bC as aa, bY as sa, bZ as ea, b_ as ta, b$ as ia, c0 as oa, c1 as na, c2 as ca, cY as ra, c3 as da, c4 as la, c5 as ua, cX as pa, c6 as ba, dx as ga, dK as ya, bx as ma, c7 as Sa, d8 as Va, a3 as Ia, dM as ha, G as Ca, a4 as Da, c8 as Pa, c9 as Aa, dP as La, ca as Ra, bD as fa, cb as Ma, cZ as Ba, cc as va, cd as Ta, dE as wa, ce as Ea, cf as Na, cg as Oa, ch as Ua, bE as Ka, ci as xa, dQ as Fa, cj as ka, ck as Wa, a5 as qa, a6 as za, M as ja, a7 as Ha, cl as Ja, cm as Ga, cn as _a, co as Qa, bF as Xa, dt as Ya, dG as Za, dH as $a, y as as, cp as ss, cq as es, bG as ts, cr as is, c_ as os, a8 as ns, cs, ct as rs, cu as ds, c$ as ls, a9 as us, aa as ps, cv as bs, cw as gs, ab as ys, ac as ms, ad as Ss, cx as Vs, cy as Is, d0 as hs, cz as Cs, bH as Ds, cA as Ps, cB as As, dR as Ls, cC as Rs, cD as fs, cE as Ms, cF as Bs, ae as vs, bI as Ts, cG as ws, cH as Es, bJ as Ns, cI as Os, af as Us, dL as Ks, da as xs, ag as Fs, dI as ks, cJ as Ws, cK as qs, cL as zs, d1 as js, cM as Hs, cN as Js, dJ as Gs, cO as _s, cP as Qs, dF as Xs, cQ as Ys, cR as Zs, cS as $s, cT as ae, aK as se, dm as ee, dl as te, F as ie, aM as oe, dr as ne, dq as ce, au as re, H as de, V as le, aJ as ue, J as pe, K as be, aN as ge, av as ye, aH as me, ax as Se, aw as Ve, aO as Ie, O as he, P as Ce, ai as De, ay as Pe, az as Ae, aj as Le, ak as Re, al as fe, aP as Me, aG as Be, aA as ve, aB as Te, aQ as we, dA as Ee, dz as Ne, am as Oe, aI as Ue, aC as Ke, an as xe, aD as Fe, _ as ke, aE as We, ao as qe, ap as ze, aq as je, aR as He, aF as Je, at as Ge, ar as _e, as as Qe, cU as Xe, ah as Ye, W as Ze, b2 as $e, bl as at, be as st, bk as et, bm as tt, dp as it, d3 as ot, d6 as nt, bo as ct, df as rt, br as dt, bn as lt, w as ut, bq as pt, bj as bt, d7 as gt, dC as yt, bh as mt, d4 as St, d5 as Vt, d9 as It, bf as ht, bi as Ct, bg as Dt, x as Pt, dw as At, bv as Lt, dy as Rt, bb as ft, b0 as Mt, b8 as Bt, bd as vt, bs as Tt, ba as wt, bu as Et, bt as Nt, aY as Ot, b6 as Ut, dn as Kt, a$ as xt, aX as Ft, b3 as kt, ds as Wt, b5 as qt, du as zt, bc as jt, dh as Ht, bp as Jt, dg as Gt, a_ as _t, aS as Qt, dv as Xt, b4 as Yt, di as Zt, aZ as $t, b1 as ai, aU as si, aW as ei, dB as ti, aV as ii, b7 as oi, aT as ni, b9 as ci } from "./index-
|
|
2
|
+
import { d2 as o, aL as n, bK as c, Q as r, bL as d, bM as l, by as u, R as p, S as b, dc as g, db as y, de as m, dd as S, bw as V, bz as I, z as h, T as C, B as D, cV as P, bA as A, bN as L, bO as R, dD as f, dS as M, bP as B, bQ as v, bR as T, bS as w, U as E, X as N, Y as O, Z as U, $ as K, bT as x, bU as F, bV as k, a0 as W, D as q, dO as z, bB as j, bW as H, a1 as J, a2 as G, dN as _, dk as Q, dj as X, A as Y, bX as Z, cW as $, bC as aa, bY as sa, bZ as ea, b_ as ta, b$ as ia, c0 as oa, c1 as na, c2 as ca, cY as ra, c3 as da, c4 as la, c5 as ua, cX as pa, c6 as ba, dx as ga, dK as ya, bx as ma, c7 as Sa, d8 as Va, a3 as Ia, dM as ha, G as Ca, a4 as Da, c8 as Pa, c9 as Aa, dP as La, ca as Ra, bD as fa, cb as Ma, cZ as Ba, cc as va, cd as Ta, dE as wa, ce as Ea, cf as Na, cg as Oa, ch as Ua, bE as Ka, ci as xa, dQ as Fa, cj as ka, ck as Wa, a5 as qa, a6 as za, M as ja, a7 as Ha, cl as Ja, cm as Ga, cn as _a, co as Qa, bF as Xa, dt as Ya, dG as Za, dH as $a, y as as, cp as ss, cq as es, bG as ts, cr as is, c_ as os, a8 as ns, cs, ct as rs, cu as ds, c$ as ls, a9 as us, aa as ps, cv as bs, cw as gs, ab as ys, ac as ms, ad as Ss, cx as Vs, cy as Is, d0 as hs, cz as Cs, bH as Ds, cA as Ps, cB as As, dR as Ls, cC as Rs, cD as fs, cE as Ms, cF as Bs, ae as vs, bI as Ts, cG as ws, cH as Es, bJ as Ns, cI as Os, af as Us, dL as Ks, da as xs, ag as Fs, dI as ks, cJ as Ws, cK as qs, cL as zs, d1 as js, cM as Hs, cN as Js, dJ as Gs, cO as _s, cP as Qs, dF as Xs, cQ as Ys, cR as Zs, cS as $s, cT as ae, aK as se, dm as ee, dl as te, F as ie, aM as oe, dr as ne, dq as ce, au as re, H as de, V as le, aJ as ue, J as pe, K as be, aN as ge, av as ye, aH as me, ax as Se, aw as Ve, aO as Ie, O as he, P as Ce, ai as De, ay as Pe, az as Ae, aj as Le, ak as Re, al as fe, aP as Me, aG as Be, aA as ve, aB as Te, aQ as we, dA as Ee, dz as Ne, am as Oe, aI as Ue, aC as Ke, an as xe, aD as Fe, _ as ke, aE as We, ao as qe, ap as ze, aq as je, aR as He, aF as Je, at as Ge, ar as _e, as as Qe, cU as Xe, ah as Ye, W as Ze, b2 as $e, bl as at, be as st, bk as et, bm as tt, dp as it, d3 as ot, d6 as nt, bo as ct, df as rt, br as dt, bn as lt, w as ut, bq as pt, bj as bt, d7 as gt, dC as yt, bh as mt, d4 as St, d5 as Vt, d9 as It, bf as ht, bi as Ct, bg as Dt, x as Pt, dw as At, bv as Lt, dy as Rt, bb as ft, b0 as Mt, b8 as Bt, bd as vt, bs as Tt, ba as wt, bu as Et, bt as Nt, aY as Ot, b6 as Ut, dn as Kt, a$ as xt, aX as Ft, b3 as kt, ds as Wt, b5 as qt, du as zt, bc as jt, dh as Ht, bp as Jt, dg as Gt, a_ as _t, aS as Qt, dv as Xt, b4 as Yt, di as Zt, aZ as $t, b1 as ai, aU as si, aW as ei, dB as ti, aV as ii, b7 as oi, aT as ni, b9 as ci } from "./index-C7K2NPkM.js";
|
|
3
3
|
import "vue";
|
|
4
4
|
import "vee-validate";
|
|
5
5
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as te, a as ae, b as re, i as ne, f as ie, s as se, c as oe, t as i, E as le, d as ce, e as de, g as me } from "./index-
|
|
1
|
+
import { L as te, a as ae, b as re, i as ne, f as ie, s as se, c as oe, t as i, E as le, d as ce, e as de, g as me } from "./index-C7K2NPkM.js";
|
|
2
2
|
const ue = 36, X = 1, fe = 2, b = 3, C = 4, pe = 5, ge = 6, he = 7, _e = 8, be = 9, ve = 10, ye = 11, ke = 12, xe = 13, Oe = 14, we = 15, Qe = 16, Ce = 17, I = 18, Se = 19, A = 20, E = 21, R = 22, Pe = 23, qe = 24;
|
|
3
3
|
function P(t) {
|
|
4
4
|
return t >= 65 && t <= 90 || t >= 97 && t <= 122 || t >= 48 && t <= 57;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as s, s as n, t as r, L as o, b as P, i as Q, f as i, c as a, k as c } from "./index-
|
|
1
|
+
import { a as s, s as n, t as r, L as o, b as P, i as Q, f as i, c as a, k as c } from "./index-C7K2NPkM.js";
|
|
2
2
|
const g = n({
|
|
3
3
|
String: r.string,
|
|
4
4
|
Number: r.number,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as o, E as a, s as Z, t as Q, L as _, b as q, i as l, f as w, c as r, k as V } from "./index-
|
|
1
|
+
import { a as o, E as a, s as Z, t as Q, L as _, b as q, i as l, f as w, c as r, k as V } from "./index-C7K2NPkM.js";
|
|
2
2
|
const R = 1, g = 2, b = 3, y = 4, T = 5, s = 98, c = 101, v = 102, t = 114, p = 69, X = 48, W = 46, d = 43, f = 45, Y = 35, z = 34, x = 124, U = 60, h = 62;
|
|
3
3
|
function n(O) {
|
|
4
4
|
return O >= 48 && O <= 57;
|