@vc-shell/framework 1.0.70 → 1.0.72

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 (182) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/core/composables/useNotifications/index.ts +1 -1
  3. package/core/composables/usePermissions/index.ts +21 -8
  4. package/core/composables/useUser/index.ts +180 -13
  5. package/core/plugins/modularity/index.ts +17 -2
  6. package/core/utilities/index.ts +1 -0
  7. package/core/utilities/kebabToCamel.ts +7 -0
  8. package/dist/core/composables/useNotifications/index.d.ts +1 -1
  9. package/dist/core/composables/useNotifications/index.d.ts.map +1 -1
  10. package/dist/core/composables/usePermissions/index.d.ts +1 -2
  11. package/dist/core/composables/usePermissions/index.d.ts.map +1 -1
  12. package/dist/core/composables/useUser/index.d.ts +18 -1
  13. package/dist/core/composables/useUser/index.d.ts.map +1 -1
  14. package/dist/core/plugins/modularity/index.d.ts +4 -1
  15. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  16. package/dist/core/utilities/index.d.ts +1 -0
  17. package/dist/core/utilities/index.d.ts.map +1 -1
  18. package/dist/core/utilities/kebabToCamel.d.ts +2 -0
  19. package/dist/core/utilities/kebabToCamel.d.ts.map +1 -0
  20. package/dist/framework.mjs +18205 -16332
  21. package/dist/index.css +1 -1
  22. package/dist/index.d.ts +2 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/shared/components/app-switcher/composables/useAppSwitcher/index.d.ts +1 -1
  25. package/dist/shared/components/app-switcher/composables/useAppSwitcher/index.d.ts.map +1 -1
  26. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/index.d.ts +5 -7
  27. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/index.d.ts.map +1 -1
  28. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts +5 -5
  29. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  30. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts +21 -5
  31. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  32. package/dist/shared/components/blade-navigation/types/index.d.ts +1 -1
  33. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  34. package/dist/shared/components/change-password/change-password.vue.d.ts +7 -0
  35. package/dist/shared/components/change-password/change-password.vue.d.ts.map +1 -0
  36. package/dist/shared/components/change-password/index.d.ts +11 -0
  37. package/dist/shared/components/change-password/index.d.ts.map +1 -0
  38. package/dist/shared/components/index.d.ts +9 -0
  39. package/dist/shared/components/index.d.ts.map +1 -0
  40. package/dist/shared/components/language-selector/index.d.ts +55 -0
  41. package/dist/shared/components/language-selector/index.d.ts.map +1 -0
  42. package/dist/shared/components/language-selector/language-selector.vue.d.ts +45 -0
  43. package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -0
  44. package/dist/shared/components/notifications/core/notification.d.ts.map +1 -1
  45. package/dist/shared/components/notifications/types/index.d.ts +3 -1
  46. package/dist/shared/components/notifications/types/index.d.ts.map +1 -1
  47. package/dist/shared/components/user-dropdown-button/index.d.ts +43 -0
  48. package/dist/shared/components/user-dropdown-button/index.d.ts.map +1 -0
  49. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +33 -0
  50. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -0
  51. package/dist/shared/index.d.ts +3 -7
  52. package/dist/shared/index.d.ts.map +1 -1
  53. package/dist/shared/locales/index.d.ts +3 -0
  54. package/dist/shared/locales/index.d.ts.map +1 -0
  55. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts +2 -9
  56. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts.map +1 -1
  57. package/dist/shared/modules/assets/components/assets-details/index.d.ts +23 -157
  58. package/dist/shared/modules/assets/components/assets-details/index.d.ts.map +1 -1
  59. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts +2 -9
  60. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts.map +1 -1
  61. package/dist/shared/modules/assets-manager/components/assets-manager/index.d.ts +27 -172
  62. package/dist/shared/modules/assets-manager/components/assets-manager/index.d.ts.map +1 -1
  63. package/dist/shared/modules/index.d.ts +3 -0
  64. package/dist/shared/modules/index.d.ts.map +1 -0
  65. package/dist/shared/pages/InvitePage/components/index.d.ts +2 -0
  66. package/dist/shared/pages/InvitePage/components/index.d.ts.map +1 -0
  67. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts +33 -0
  68. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -0
  69. package/dist/shared/pages/InvitePage/components/invite/index.d.ts +32 -0
  70. package/dist/shared/pages/InvitePage/components/invite/index.d.ts.map +1 -0
  71. package/dist/shared/pages/InvitePage/index.d.ts +5 -0
  72. package/dist/shared/pages/InvitePage/index.d.ts.map +1 -0
  73. package/dist/shared/pages/InvitePage/locales/index.d.ts +3 -0
  74. package/dist/shared/pages/InvitePage/locales/index.d.ts.map +1 -0
  75. package/dist/shared/pages/LoginPage/components/index.d.ts +2 -0
  76. package/dist/shared/pages/LoginPage/components/index.d.ts.map +1 -0
  77. package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts +17 -0
  78. package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -0
  79. package/dist/shared/pages/LoginPage/components/login/index.d.ts +28 -0
  80. package/dist/shared/pages/LoginPage/components/login/index.d.ts.map +1 -0
  81. package/dist/shared/pages/LoginPage/index.d.ts +3 -0
  82. package/dist/shared/pages/LoginPage/index.d.ts.map +1 -0
  83. package/dist/shared/pages/LoginPage/locales/index.d.ts +3 -0
  84. package/dist/shared/pages/LoginPage/locales/index.d.ts.map +1 -0
  85. package/dist/shared/pages/LoginPage/plugin.d.ts +6 -0
  86. package/dist/shared/pages/LoginPage/plugin.d.ts.map +1 -0
  87. package/dist/shared/pages/ResetPasswordPage/components/index.d.ts +2 -0
  88. package/dist/shared/pages/ResetPasswordPage/components/index.d.ts.map +1 -0
  89. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts +33 -0
  90. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -0
  91. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts +32 -0
  92. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts.map +1 -0
  93. package/dist/shared/pages/ResetPasswordPage/index.d.ts +5 -0
  94. package/dist/shared/pages/ResetPasswordPage/index.d.ts.map +1 -0
  95. package/dist/shared/pages/ResetPasswordPage/locales/index.d.ts +3 -0
  96. package/dist/shared/pages/ResetPasswordPage/locales/index.d.ts.map +1 -0
  97. package/dist/shared/pages/index.d.ts +10 -0
  98. package/dist/shared/pages/index.d.ts.map +1 -0
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/dist/typings/index.d.ts +8 -0
  101. package/dist/typings/index.d.ts.map +1 -0
  102. package/dist/ui/components/atoms/vc-button/index.d.ts +36 -6
  103. package/dist/ui/components/atoms/vc-button/index.d.ts.map +1 -1
  104. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts +10 -7
  105. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
  106. package/dist/ui/components/atoms/vc-link/vc-link.stories.d.ts.map +1 -1
  107. package/dist/ui/components/atoms/vc-status/index.d.ts +6 -6
  108. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts +1 -1
  109. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  110. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  111. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts +1 -1
  112. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts.map +1 -1
  113. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +2 -2
  114. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  115. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts.map +1 -1
  116. package/dist/ui/components/organisms/vc-blade/index.d.ts +1 -31
  117. package/dist/ui/components/organisms/vc-blade/index.d.ts.map +1 -1
  118. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts +1 -6
  119. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
  120. package/dist/ui/components/organisms/vc-popup/index.d.ts +6 -6
  121. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts +1 -1
  122. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts.map +1 -1
  123. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +2 -1
  124. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  125. package/dist/ui/components/organisms/vc-table/index.d.ts +7 -7
  126. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +7 -7
  127. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  128. package/package.json +11 -8
  129. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +1 -1
  130. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +10 -21
  131. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +150 -67
  132. package/shared/components/blade-navigation/types/index.ts +1 -1
  133. package/shared/components/change-password/change-password.vue +167 -0
  134. package/shared/components/change-password/index.ts +10 -0
  135. package/shared/components/index.ts +8 -0
  136. package/shared/components/language-selector/index.ts +10 -0
  137. package/shared/components/language-selector/language-selector.vue +60 -0
  138. package/shared/components/notifications/core/notification.ts +3 -3
  139. package/shared/components/notifications/types/index.ts +4 -1
  140. package/shared/components/user-dropdown-button/index.ts +10 -0
  141. package/shared/components/user-dropdown-button/user-dropdown-button.vue +124 -0
  142. package/shared/index.ts +12 -8
  143. package/shared/locales/en.json +35 -0
  144. package/shared/locales/index.ts +2 -0
  145. package/shared/modules/assets/components/assets-details/assets-details.vue +1 -7
  146. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +0 -6
  147. package/shared/modules/index.ts +2 -0
  148. package/shared/pages/InvitePage/components/index.ts +1 -0
  149. package/shared/pages/InvitePage/components/invite/Invite.vue +172 -0
  150. package/shared/pages/InvitePage/components/invite/index.ts +3 -0
  151. package/shared/pages/InvitePage/index.ts +7 -0
  152. package/shared/pages/InvitePage/locales/en.json +31 -0
  153. package/shared/pages/InvitePage/locales/index.ts +2 -0
  154. package/shared/pages/LoginPage/components/index.ts +1 -0
  155. package/shared/pages/LoginPage/components/login/Login.vue +283 -0
  156. package/shared/pages/LoginPage/components/login/index.ts +3 -0
  157. package/shared/pages/LoginPage/index.ts +2 -0
  158. package/shared/pages/LoginPage/locales/en.json +36 -0
  159. package/shared/pages/LoginPage/locales/index.ts +2 -0
  160. package/shared/pages/LoginPage/plugin.ts +17 -0
  161. package/shared/pages/ResetPasswordPage/components/index.ts +1 -0
  162. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +166 -0
  163. package/shared/pages/ResetPasswordPage/components/reset-password/index.ts +3 -0
  164. package/shared/pages/ResetPasswordPage/index.ts +7 -0
  165. package/shared/pages/ResetPasswordPage/locales/en.json +28 -0
  166. package/shared/pages/ResetPasswordPage/locales/index.ts +2 -0
  167. package/shared/pages/index.ts +12 -0
  168. package/ui/components/atoms/vc-button/vc-button.vue +109 -143
  169. package/ui/components/atoms/vc-link/vc-link.stories.ts +0 -1
  170. package/ui/components/atoms/vc-link/vc-link.vue +2 -2
  171. package/ui/components/molecules/vc-select/vc-select.vue +3 -3
  172. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +2 -1
  173. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue +3 -4
  174. package/ui/components/organisms/vc-app/vc-app.vue +12 -12
  175. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +5 -8
  176. package/ui/components/organisms/vc-blade/vc-blade.vue +14 -22
  177. package/ui/components/organisms/vc-login-form/vc-login-form.stories.ts +1 -1
  178. package/ui/components/organisms/vc-popup/_internal/vc-popup-warning/vc-popup-warning.vue +1 -1
  179. package/ui/components/organisms/vc-popup/vc-popup.vue +1 -1
  180. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +5 -8
  181. package/ui/components/organisms/vc-table/vc-table.vue +25 -18
  182. package/ui/locales/en.json +3 -3
@@ -23,7 +23,7 @@ export declare const VcTable: <T extends string | import("./vc-table.vue").Table
23
23
  reorderableColumns?: boolean;
24
24
  reorderableRows?: boolean;
25
25
  stateKey: string;
26
- bulkDelete?: boolean;
26
+ selectAll?: boolean;
27
27
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, __VLS_ctx?: Pick<{
28
28
  props: {
29
29
  columns: import("../../../..").ITableColumns[];
@@ -50,7 +50,7 @@ export declare const VcTable: <T extends string | import("./vc-table.vue").Table
50
50
  reorderableColumns?: boolean;
51
51
  reorderableRows?: boolean;
52
52
  stateKey: string;
53
- bulkDelete?: boolean;
53
+ selectAll?: boolean;
54
54
  };
55
55
  expose(exposed: {}): void;
56
56
  attrs: any;
@@ -83,7 +83,7 @@ export declare const VcTable: <T extends string | import("./vc-table.vue").Table
83
83
  dropIndex: number;
84
84
  value: T[];
85
85
  }): void;
86
- (event: "bulk:delete"): void;
86
+ (event: "select:all", values: boolean): void;
87
87
  };
88
88
  }, "slots" | "attrs" | "emit">, __VLS_setup?: {
89
89
  props: {
@@ -111,7 +111,7 @@ export declare const VcTable: <T extends string | import("./vc-table.vue").Table
111
111
  reorderableColumns?: boolean;
112
112
  reorderableRows?: boolean;
113
113
  stateKey: string;
114
- bulkDelete?: boolean;
114
+ selectAll?: boolean;
115
115
  };
116
116
  expose(exposed: {}): void;
117
117
  attrs: any;
@@ -144,7 +144,7 @@ export declare const VcTable: <T extends string | import("./vc-table.vue").Table
144
144
  dropIndex: number;
145
145
  value: T[];
146
146
  }): void;
147
- (event: "bulk:delete"): void;
147
+ (event: "select:all", values: boolean): void;
148
148
  };
149
149
  }) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
150
150
  [key: string]: any;
@@ -175,7 +175,7 @@ export declare const VcTable: <T extends string | import("./vc-table.vue").Table
175
175
  reorderableColumns?: boolean;
176
176
  reorderableRows?: boolean;
177
177
  stateKey: string;
178
- bulkDelete?: boolean;
178
+ selectAll?: boolean;
179
179
  };
180
180
  expose(exposed: {}): void;
181
181
  attrs: any;
@@ -208,7 +208,7 @@ export declare const VcTable: <T extends string | import("./vc-table.vue").Table
208
208
  dropIndex: number;
209
209
  value: T[];
210
210
  }): void;
211
- (event: "bulk:delete"): void;
211
+ (event: "select:all", values: boolean): void;
212
212
  };
213
213
  };
214
214
  };
@@ -34,7 +34,7 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
34
34
  reorderableColumns?: boolean;
35
35
  reorderableRows?: boolean;
36
36
  stateKey: string;
37
- bulkDelete?: boolean;
37
+ selectAll?: boolean;
38
38
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, __VLS_ctx?: Pick<{
39
39
  props: {
40
40
  columns: ITableColumns[];
@@ -61,7 +61,7 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
61
61
  reorderableColumns?: boolean;
62
62
  reorderableRows?: boolean;
63
63
  stateKey: string;
64
- bulkDelete?: boolean;
64
+ selectAll?: boolean;
65
65
  };
66
66
  expose(exposed: {}): void;
67
67
  attrs: any;
@@ -94,7 +94,7 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
94
94
  dropIndex: number;
95
95
  value: T[];
96
96
  }): void;
97
- (event: "bulk:delete"): void;
97
+ (event: "select:all", values: boolean): void;
98
98
  };
99
99
  }, "slots" | "attrs" | "emit">, __VLS_setup?: {
100
100
  props: {
@@ -122,7 +122,7 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
122
122
  reorderableColumns?: boolean;
123
123
  reorderableRows?: boolean;
124
124
  stateKey: string;
125
- bulkDelete?: boolean;
125
+ selectAll?: boolean;
126
126
  };
127
127
  expose(exposed: {}): void;
128
128
  attrs: any;
@@ -155,7 +155,7 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
155
155
  dropIndex: number;
156
156
  value: T[];
157
157
  }): void;
158
- (event: "bulk:delete"): void;
158
+ (event: "select:all", values: boolean): void;
159
159
  };
160
160
  }) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
161
161
  [key: string]: any;
@@ -186,7 +186,7 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
186
186
  reorderableColumns?: boolean;
187
187
  reorderableRows?: boolean;
188
188
  stateKey: string;
189
- bulkDelete?: boolean;
189
+ selectAll?: boolean;
190
190
  };
191
191
  expose(exposed: {}): void;
192
192
  attrs: any;
@@ -219,7 +219,7 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
219
219
  dropIndex: number;
220
220
  value: T[];
221
221
  }): void;
222
- (event: "bulk:delete"): void;
222
+ (event: "select:all", values: boolean): void;
223
223
  };
224
224
  };
225
225
  };
@@ -1 +1 @@
1
- {"version":3,"file":"vc-table.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-table/vc-table.vue.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI/E,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAClC;;aAy3DY,aAAa,EAAE;;qCAES,oBAAoB,EAAE;WAChD,MAAM;kBACC,OAAO;eACV,OAAO;iBACL,MAAM;iBACN,MAAM;YACX,MAAM;kBACA,MAAM;wBACA,MAAM;kBACZ,MAAM;cACV,OAAO;YACT,WAAW;eACR,WAAW;aACb,OAAO;aACP,OAAO;wBACI,MAAM;qBACT,MAAM;gBACX,OAAO;uBACA,OAAO;yBACL,OAAO;sBACV,OAAO;cACf,MAAM;iBACH,OAAO;;;iBAxBX,aAAa,EAAE;;yCAES,oBAAoB,EAAE;eAChD,MAAM;sBACC,OAAO;mBACV,OAAO;qBACL,MAAM;qBACN,MAAM;gBACX,MAAM;sBACA,MAAM;4BACA,MAAM;sBACZ,MAAM;kBACV,OAAO;gBACT,WAAW;mBACR,WAAW;iBACb,OAAO;iBACP,OAAO;4BACI,MAAM;yBACT,MAAM;oBACX,OAAO;2BACA,OAAO;6BACL,OAAO;0BACV,OAAO;kBACf,MAAM;qBACH,OAAO;;yBAce,IAAI;WACpC,GAAG;;2CA5rC2B,GAAG,KAAK,GAAG;;;kBACG,aAAa;cAAO,GAAG;wBAJxD,GAAG,KAAK,GAAG;wBACX;YAAE,UAAU,EAAE,MAAM,IAAI,CAAA;SAAE,KAAK,GAAG;;;cACZ,GAAG;0BAGvB,GAAG,KAAK,GAAG;uBACd,GAAG,KAAK,GAAG;wBACV,GAAG,KAAK,GAAG;;;gBA4qCnB,iBAAiB,QAAQ,MAAM,GAAG,IAAI;gBACtC,kBAAkB,gBAAgB,IAAI;gBACtC,eAAe,SAAS,MAAM,GAAG,IAAI;gBACrC,aAAa,SAAS,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;gBACpD,WAAW,YAAY,IAAI;gBAC3B,YAAY,GAAG,IAAI;gBACnB,aAAa;uBAAqB,MAAM;uBAAa,MAAM;;YAAiB,IAAI;gBAChF,aAAa,GAAG,IAAI;;;;iBAlCjB,aAAa,EAAE;;yCAES,oBAAoB,EAAE;eAChD,MAAM;sBACC,OAAO;mBACV,OAAO;qBACL,MAAM;qBACN,MAAM;gBACX,MAAM;sBACA,MAAM;4BACA,MAAM;sBACZ,MAAM;kBACV,OAAO;gBACT,WAAW;mBACR,WAAW;iBACb,OAAO;iBACP,OAAO;4BACI,MAAM;yBACT,MAAM;oBACX,OAAO;2BACA,OAAO;6BACL,OAAO;0BACV,OAAO;kBACf,MAAM;qBACH,OAAO;;yBAce,IAAI;WACpC,GAAG;;2CA5rC2B,GAAG,KAAK,GAAG;;;kBACG,aAAa;cAAO,GAAG;wBAJxD,GAAG,KAAK,GAAG;wBACX;YAAE,UAAU,EAAE,MAAM,IAAI,CAAA;SAAE,KAAK,GAAG;;;cACZ,GAAG;0BAGvB,GAAG,KAAK,GAAG;uBACd,GAAG,KAAK,GAAG;wBACV,GAAG,KAAK,GAAG;;;gBA4qCnB,iBAAiB,QAAQ,MAAM,GAAG,IAAI;gBACtC,kBAAkB,gBAAgB,IAAI;gBACtC,eAAe,SAAS,MAAM,GAAG,IAAI;gBACrC,aAAa,SAAS,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;gBACpD,WAAW,YAAY,IAAI;gBAC3B,YAAY,GAAG,IAAI;gBACnB,aAAa;uBAAqB,MAAM;uBAAa,MAAM;;YAAiB,IAAI;gBAChF,aAAa,GAAG,IAAI;;;;;;;qBAlCjB,aAAa,EAAE;;6CAES,oBAAoB,EAAE;mBAChD,MAAM;0BACC,OAAO;uBACV,OAAO;yBACL,MAAM;yBACN,MAAM;oBACX,MAAM;0BACA,MAAM;gCACA,MAAM;0BACZ,MAAM;sBACV,OAAO;oBACT,WAAW;uBACR,WAAW;qBACb,OAAO;qBACP,OAAO;gCACI,MAAM;6BACT,MAAM;wBACX,OAAO;+BACA,OAAO;iCACL,OAAO;8BACV,OAAO;sBACf,MAAM;yBACH,OAAO;;6BAce,IAAI;eACpC,GAAG;;+CA5rC2B,GAAG,KAAK,GAAG;;;sBACG,aAAa;kBAAO,GAAG;4BAJxD,GAAG,KAAK,GAAG;4BACX;gBAAE,UAAU,EAAE,MAAM,IAAI,CAAA;aAAE,KAAK,GAAG;;;kBACZ,GAAG;8BAGvB,GAAG,KAAK,GAAG;2BACd,GAAG,KAAK,GAAG;4BACV,GAAG,KAAK,GAAG;;;oBA4qCnB,iBAAiB,QAAQ,MAAM,GAAG,IAAI;oBACtC,kBAAkB,gBAAgB,IAAI;oBACtC,eAAe,SAAS,MAAM,GAAG,IAAI;oBACrC,aAAa,SAAS,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;oBACpD,WAAW,YAAY,IAAI;oBAC3B,YAAY,GAAG,IAAI;oBACnB,aAAa;2BAAqB,MAAM;2BAAa,MAAM;;gBAAiB,IAAI;oBAChF,aAAa,GAAG,IAAI;;;;AAz5D9B,wBAk6DkE"}
1
+ {"version":3,"file":"vc-table.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-table/vc-table.vue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/framework",
3
- "version": "1.0.70",
3
+ "version": "1.0.72",
4
4
  "main": "./dist/framework.mjs",
5
5
  "module": "./dist/framework.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -38,27 +38,30 @@
38
38
  "@vueuse/integrations": "^10.1.2",
39
39
  "buffer-esm": "^1.2.0",
40
40
  "client-oauth2": "^4.3.3",
41
+ "fetch-intercept": "^2.4.0",
41
42
  "moment": "^2.29.4",
42
43
  "normalize.css": "^8.0.1",
43
44
  "querystring-es3": "^0.2.1",
44
45
  "quill": "^1.3.7",
45
46
  "quill-image-uploader": "^1.3.0",
46
47
  "swiper": "^6.8.4",
48
+ "url-pattern": "^1.0.3",
47
49
  "vee-validate": "^4.9.3",
48
- "vue": "^3.3.3",
50
+ "vue": "^3.3.4",
49
51
  "vue-currency-input": "~2.5.1",
50
52
  "vue-i18n": "^9.2.2",
51
- "vue-router": "^4.2.0",
53
+ "vue-router": "^4.2.1",
52
54
  "vue3-ace-editor": "^2.2.2",
53
- "vue3-touch-events": "^4.1.2"
55
+ "vue3-touch-events": "^4.1.2",
56
+ "whatwg-fetch": "^3.6.2"
54
57
  },
55
58
  "devDependencies": {
56
- "@vc-shell/api-client-generator": "^1.0.70",
57
- "@vc-shell/config-generator": "^1.0.70",
59
+ "@vc-shell/api-client-generator": "^1.0.72",
60
+ "@vc-shell/config-generator": "^1.0.72",
58
61
  "@vitejs/plugin-vue": "^4.2.3",
59
62
  "sass": "^1.62.1",
60
- "typescript": "^5.0.4",
61
- "vite": "^4.3.7",
63
+ "typescript": "~5.0.4",
64
+ "vite": "^4.3.9",
62
65
  "vue-tsc": "^1.6.5"
63
66
  },
64
67
  "publishConfig": {
@@ -5,7 +5,7 @@ import { notification } from "./../../../notifications";
5
5
 
6
6
  interface IUseAppSwitcher {
7
7
  readonly appsList: Ref<AppDescriptor[]>;
8
- getApps: () => void;
8
+ getApps: () => Promise<void>;
9
9
  switchApp: (app: AppDescriptor) => void;
10
10
  }
11
11
 
@@ -4,7 +4,7 @@
4
4
  capture
5
5
  >
6
6
  <router-view
7
- v-slot="{ Component }: { Component: any }"
7
+ v-slot="{ Component }"
8
8
  :key="route.path"
9
9
  @vue:before-unmount="reset"
10
10
  >
@@ -14,19 +14,15 @@
14
14
  :key="route.path"
15
15
  :ref="(el: CoreBladeExposed) => setParentRef(el, Component)"
16
16
  :closable="false"
17
- :options="parentBladeOptions"
17
+ :options="workspaceOptions"
18
18
  :expanded="blades.length === 0"
19
19
  :maximized="findStateById(0)"
20
20
  :blades="blades"
21
- :param="resolveParam"
21
+ :param="workspaceParam"
22
+ :error="error"
22
23
  @expand:blade="handleMaximizeBlade(0, true)"
23
24
  @collapse:blade="handleMaximizeBlade(0, false)"
24
25
  >
25
- <template
26
- v-if="error"
27
- #error
28
- >{{ error }}</template
29
- >
30
26
  </component>
31
27
  </router-view>
32
28
  </ErrorInterceptor>
@@ -48,17 +44,14 @@
48
44
  :expanded="i === blades.length - 1"
49
45
  :maximized="findStateById(blade.idx)"
50
46
  :options="blade.options"
47
+ :error="error"
48
+ :blades="blades"
51
49
  @close:blade="onBladeClose(i)"
52
50
  @close:children="$emit('onClose', i + 1)"
53
51
  @parent:call="$emit('onParentCall', { id: i, args: $event })"
54
52
  @expand:blade="handleMaximizeBlade(blade.idx, true)"
55
53
  @collapse:blade="handleMaximizeBlade(blade.idx, false)"
56
54
  >
57
- <template
58
- v-if="error"
59
- #error
60
- >{{ error }}</template
61
- >
62
55
  </component>
63
56
  </ErrorInterceptor>
64
57
  </template>
@@ -79,8 +72,8 @@ import { ErrorInterceptor } from "./../../../error-interceptor";
79
72
 
80
73
  export interface Props {
81
74
  blades: IBladeContainer[];
82
- parentBladeOptions: Record<string, unknown>;
83
- parentBladeParam?: string | undefined;
75
+ workspaceOptions?: Record<string, unknown>;
76
+ workspaceParam?: string;
84
77
  }
85
78
 
86
79
  export interface Emits {
@@ -91,9 +84,9 @@ export interface Emits {
91
84
 
92
85
  const emit = defineEmits<Emits>();
93
86
 
94
- const props = withDefaults(defineProps<Props>(), {
87
+ withDefaults(defineProps<Props>(), {
95
88
  blades: () => [],
96
- parentBladeOptions: () => ({}),
89
+ workspaceOptions: () => ({}),
97
90
  });
98
91
 
99
92
  const route = useRoute();
@@ -143,10 +136,6 @@ function onBladeClose(index: number) {
143
136
  emit("onClose", index);
144
137
  }
145
138
 
146
- const resolveParam = computed(() => {
147
- return props.parentBladeParam ? props.parentBladeParam : route.params.param;
148
- });
149
-
150
139
  defineExpose({
151
140
  bladesRefs,
152
141
  });
@@ -11,7 +11,7 @@ import {
11
11
  nextTick,
12
12
  } from "vue";
13
13
  import * as _ from "lodash-es";
14
- import { useRouter, useRoute } from "vue-router";
14
+ import { useRouter, RouteLocationNormalized } from "vue-router";
15
15
  import { usePermissions } from "../../../../../core/composables";
16
16
  import {
17
17
  IBladeContainer,
@@ -22,100 +22,136 @@ import {
22
22
  BladeComponentInternalInstance,
23
23
  BladeNavigationPlugin,
24
24
  notification,
25
+ BladePageComponent,
25
26
  } from "../../../..";
26
27
  import { bladeNavigationInstance } from "./../../plugin";
28
+ import pattern from "url-pattern";
29
+ import { useLocalStorage } from "@vueuse/core";
27
30
 
31
+ interface BladeData {
32
+ blade?: string;
33
+ param?: string;
34
+ options?: string;
35
+ }
28
36
  interface IUseBladeNavigation {
29
37
  readonly blades: Ref<IBladeContainer[]>;
30
- readonly parentBladeOptions: Ref<Record<string, unknown>>;
31
- readonly parentBladeParam: Ref<string>;
38
+ readonly workspaceOptions: Ref<Record<string, unknown>>;
39
+ readonly workspaceParam: Ref<string>;
40
+ readonly lastBladeData: Ref<BladeData>;
32
41
  bladesRefs: Ref<IBladeRef[]>;
33
- openBlade: <Blade extends ComponentPublicInstance = ComponentPublicInstance>({
34
- blade,
35
- param,
36
- options,
37
- onOpen,
38
- onClose,
39
- }: IBladeEvent<Blade>) => void;
40
- closeBlade: (index: number) => void;
42
+ openBlade: <Blade extends ComponentPublicInstance = ComponentPublicInstance>(
43
+ { blade, param, options, onOpen, onClose }: IBladeEvent<Blade>,
44
+ isWorkspace?: boolean
45
+ ) => void;
46
+ closeBlade: (index: number) => Promise<boolean>;
41
47
  onParentCall: (index: number, args: IParentCallArgs) => void;
48
+ /**
49
+ * Resolves blades from vue-router's navigation guard 'to' param. Used to display blades after page reload or accessing via direct link.
50
+ * Returns a string containing the URL of the latest opened workspace.
51
+ * @param to
52
+ * @returns string
53
+ */
54
+ resolveBlades: (to: RouteLocationNormalized) => string;
55
+ resolveLastBlade: (pages: BladePageComponent[]) => void;
56
+ resolveUnknownRoutes: (to: RouteLocationNormalized) => string;
42
57
  }
43
58
 
44
59
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
- const parentBladeOptions: Ref<Record<string, any>> = ref();
46
- const parentBladeParam: Ref<string> = ref();
60
+ const workspaceOptions: Ref<Record<string, any>> = ref();
61
+ const workspaceParam: Ref<string> = ref();
62
+
63
+ const lastBladeData = useLocalStorage<BladeData>("VC_BLADE_DATA", {});
47
64
 
48
65
  export function useBladeNavigation(): IUseBladeNavigation {
49
66
  const router = useRouter();
50
- const route = useRoute();
67
+ const urlPattern = new pattern("(/:workspace(/:blade(/:param)))");
51
68
  const { checkPermission } = usePermissions();
52
69
  const isPrevented = ref(false);
70
+ const routes = router.getRoutes();
53
71
 
54
72
  const instance: BladeComponentInternalInstance = getCurrentInstance();
55
73
  const navigationInstance =
56
74
  (instance && inject<BladeNavigationPlugin>("bladeNavigationPlugin")) || bladeNavigationInstance;
57
75
 
58
- const lastBladeUrl = ref();
59
76
  watch(
60
- navigationInstance.blades,
77
+ navigationInstance?.blades,
61
78
  (newVal) => {
62
- const lastBlade = newVal[newVal.length - 1];
79
+ if (newVal) {
80
+ const workspace = navigationInstance.bladesRefs.value[0]?.blade;
81
+ const lastBlade = newVal[newVal.length - 1];
63
82
 
64
- if (lastBlade && lastBlade.blade.url) {
65
- if (lastBlade.param) {
66
- addEntryToLocation(lastBlade.blade.url + "/" + lastBlade.param);
67
- } else {
68
- addEntryToLocation(lastBlade.blade.url);
83
+ if (workspace && workspace.blade.url) {
84
+ if (lastBlade && lastBlade.blade.url) {
85
+ const url = urlPattern.stringify({
86
+ workspace: workspace?.blade.url.substring(1),
87
+ blade: lastBlade?.blade.url.substring(1),
88
+ param: lastBlade?.param,
89
+ });
90
+
91
+ addEntryToLocation(url);
92
+ } else {
93
+ const url = workspace?.blade.url;
94
+ if (url) {
95
+ clearParentData();
96
+ addEntryToLocation(url);
97
+ }
98
+ }
69
99
  }
70
- } else if (!lastBlade) {
71
- clearParentData();
72
- addEntryToLocation(route.path);
73
100
  }
74
101
  },
75
102
  { deep: true }
76
103
  );
77
104
 
78
- async function openBlade<Blade extends ComponentPublicInstance>({
79
- blade,
80
- param,
81
- options,
82
- onOpen,
83
- onClose,
84
- }: IBladeEvent<Blade>) {
85
- const caller = instance && instance.vnode.type;
105
+ async function openWorkspace({ blade, param, options }: IBladeEvent) {
106
+ await closeBlade(0);
86
107
 
87
108
  const bladeComponent = unref(blade);
109
+
110
+ if (!isPrevented.value) {
111
+ workspaceOptions.value = unref(options);
112
+ workspaceParam.value = unref(param);
113
+
114
+ await router.replace(bladeComponent.url);
115
+ }
116
+ }
117
+
118
+ async function openBlade<Blade extends ComponentPublicInstance>(
119
+ { blade, param, options, onOpen, onClose }: IBladeEvent<Blade>,
120
+ isWorkspace = false
121
+ ) {
122
+ if (isWorkspace) {
123
+ openWorkspace({ blade, param, options });
124
+ return;
125
+ }
126
+
127
+ // caller blade component from instance
128
+ const instanceComponent = instance && instance.vnode.type;
129
+
130
+ // Caller blade index in blades array
88
131
  const callerIndex = navigationInstance.bladesRefs.value.findIndex((item) => {
89
- return _.isEqual(item.blade.blade, caller);
132
+ return _.isEqual(item.blade.blade, instanceComponent);
90
133
  });
91
- const existingChild =
92
- callerIndex >= 0 ? navigationInstance.bladesRefs.value[callerIndex + 1]?.blade.blade : undefined;
93
- const index = caller?.idx ? caller.idx : 0;
94
134
 
95
- const initiator = caller?.url && navigationInstance.bladesRefs.value.find((x) => x.blade?.blade.url === caller.url);
135
+ // Trying to determine if the calling blade already has a child in order to replace it
136
+ const isBladeAlreadyExist =
137
+ callerIndex >= 0 ? navigationInstance.bladesRefs.value[callerIndex + 1]?.blade.blade : undefined;
96
138
 
97
- if (!initiator && bladeComponent.url) {
98
- await closeBlade(0);
139
+ // Blade we want to open
140
+ const bladeComponent = unref(blade);
99
141
 
100
- if (!isPrevented.value) {
101
- parentBladeOptions.value = unref(options);
102
- parentBladeParam.value = unref(param);
142
+ // Check if caller blade has idx
143
+ const index = instanceComponent?.idx ? instanceComponent.idx : 0;
103
144
 
104
- await router.push(bladeComponent.url);
105
- }
106
- } else {
107
- let isPrevented;
108
- if (existingChild === undefined) {
109
- bladeComponent.idx = index ? index + 1 : 1;
110
- } else if (existingChild) {
111
- isPrevented = await closeBlade(
112
- navigationInstance.blades.value.findIndex((x: IBladeContainer) => x.idx === existingChild.idx)
113
- );
114
- bladeComponent.idx = existingChild.idx;
115
- }
116
- if (!isPrevented) {
117
- await addBlade(bladeComponent, param, options, onOpen, onClose, index);
118
- }
145
+ if (isBladeAlreadyExist === undefined) {
146
+ bladeComponent.idx = index ? index + 1 : 1;
147
+ } else if (isBladeAlreadyExist) {
148
+ await closeBlade(
149
+ navigationInstance.blades.value.findIndex((x: IBladeContainer) => x.idx === isBladeAlreadyExist.idx)
150
+ );
151
+ bladeComponent.idx = isBladeAlreadyExist.idx;
152
+ }
153
+ if (!isPrevented.value) {
154
+ await addBlade(bladeComponent, param, options, onOpen, onClose, index);
119
155
  }
120
156
  }
121
157
 
@@ -133,13 +169,14 @@ export function useBladeNavigation(): IUseBladeNavigation {
133
169
  if (result === false) {
134
170
  isPrevented.value = true;
135
171
  console.debug(`[@vc-shell/framework#useBladeNavigation] - Navigation is prevented`);
136
- return isPrevented;
172
+ return isPrevented.value;
137
173
  }
138
174
  }
139
175
  }
140
176
  if (!isPrevented.value) {
141
- if (typeof navigationInstance.blades.value[index]?.onClose === "function") {
142
- navigationInstance.blades.value[index]?.onClose?.();
177
+ const blade = navigationInstance.blades.value[index];
178
+ if (typeof blade?.onClose === "function") {
179
+ blade?.onClose?.();
143
180
  }
144
181
 
145
182
  navigationInstance.blades.value.splice(index);
@@ -201,24 +238,70 @@ export function useBladeNavigation(): IUseBladeNavigation {
201
238
  }
202
239
 
203
240
  function addEntryToLocation(params: string) {
204
- history.pushState({}, null, "#" + params);
205
- lastBladeUrl.value = params;
241
+ history.replaceState({}, null, "#" + params);
206
242
  }
207
243
 
208
244
  async function clearParentData() {
209
245
  nextTick(() => {
210
- parentBladeOptions.value = undefined;
211
- parentBladeParam.value = undefined;
246
+ workspaceOptions.value = undefined;
247
+ workspaceParam.value = undefined;
212
248
  });
213
249
  }
214
250
 
251
+ function resolveBlades(to: RouteLocationNormalized) {
252
+ const data = urlPattern.match(to.path);
253
+
254
+ const resolvedRoute = (bladeUrl: string) => routes.find((r) => r.path === "/" + bladeUrl);
255
+
256
+ if (resolvedRoute(data?.workspace) && to.path !== "/" + data.workspace) {
257
+ if (resolvedRoute(data?.blade)) {
258
+ lastBladeData.value = {
259
+ blade: "/" + data?.blade,
260
+ param: data?.param,
261
+ };
262
+ }
263
+
264
+ return "/" + data.workspace;
265
+ }
266
+ }
267
+
268
+ function resolveUnknownRoutes(to: RouteLocationNormalized) {
269
+ if (routes.find((r) => r.path !== to.path)) {
270
+ closeBlade(0);
271
+ return "/";
272
+ }
273
+ }
274
+
275
+ function clearSavedBladeData() {
276
+ lastBladeData.value = {};
277
+ }
278
+
279
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
+ async function setParentData({ param, options }: { param?: string; options?: Record<string, any> }) {
281
+ workspaceOptions.value = options;
282
+ workspaceParam.value = param;
283
+ }
284
+
285
+ function resolveLastBlade(pages: BladePageComponent[]) {
286
+ if (lastBladeData.value?.blade) {
287
+ const blade = pages?.find((b) => b.url === lastBladeData.value?.blade);
288
+ setParentData({ param: lastBladeData.value?.param });
289
+ openBlade({ blade, param: lastBladeData.value?.param });
290
+ clearSavedBladeData();
291
+ }
292
+ }
293
+
215
294
  return {
216
295
  blades: computed(() => navigationInstance.blades.value),
217
- parentBladeOptions: computed(() => parentBladeOptions.value),
218
- parentBladeParam: computed(() => parentBladeParam.value),
296
+ workspaceOptions: computed(() => workspaceOptions.value),
297
+ workspaceParam: computed(() => workspaceParam.value),
298
+ lastBladeData: computed(() => lastBladeData.value),
219
299
  bladesRefs: navigationInstance.bladesRefs,
220
300
  openBlade,
221
301
  closeBlade,
222
302
  onParentCall,
303
+ resolveBlades,
304
+ resolveUnknownRoutes,
305
+ resolveLastBlade,
223
306
  };
224
307
  }
@@ -23,7 +23,7 @@ export type CoreBladeComponentProps = {
23
23
  export type BladePageComponent = BladeConstructor;
24
24
 
25
25
  export type CoreBladeAdditionalSettings = {
26
- url?: string;
26
+ url?: `/${string}`;
27
27
  permissions?: string | string[];
28
28
  scope?: {
29
29
  notificationClick?: (notification: PushNotification | Record<string, any>) => IBladeEvent;