@vc-shell/framework 1.0.68 → 1.0.70

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 (374) hide show
  1. package/CHANGELOG.md +1628 -0
  2. package/core/api/platform.ts +2762 -2225
  3. package/core/composables/index.ts +1 -0
  4. package/core/composables/useMenuComposer/index.ts +25 -0
  5. package/core/composables/useNotifications/index.ts +24 -30
  6. package/core/composables/useUser/index.ts +1 -1
  7. package/core/directives/index.ts +0 -1
  8. package/core/plugins/index.ts +1 -1
  9. package/core/plugins/modularity/index.ts +8 -1
  10. package/core/plugins/signalR/index.ts +32 -0
  11. package/core/types/index.ts +56 -17
  12. package/dist/core/api/platform.d.ts +1005 -931
  13. package/dist/core/api/platform.d.ts.map +1 -1
  14. package/dist/core/composables/index.d.ts +1 -0
  15. package/dist/core/composables/index.d.ts.map +1 -1
  16. package/dist/core/composables/useMenuComposer/index.d.ts +12 -0
  17. package/dist/core/composables/useMenuComposer/index.d.ts.map +1 -0
  18. package/dist/core/composables/useNotifications/index.d.ts +3 -5
  19. package/dist/core/composables/useNotifications/index.d.ts.map +1 -1
  20. package/dist/core/directives/autofocus/index.d.ts +1 -1
  21. package/dist/core/directives/autofocus/index.d.ts.map +1 -1
  22. package/dist/core/directives/index.d.ts +0 -1
  23. package/dist/core/directives/index.d.ts.map +1 -1
  24. package/dist/core/directives/loading/index.d.ts +1 -1
  25. package/dist/core/directives/loading/index.d.ts.map +1 -1
  26. package/dist/core/directives/permissions/index.d.ts +1 -1
  27. package/dist/core/directives/permissions/index.d.ts.map +1 -1
  28. package/dist/core/plugins/index.d.ts +1 -1
  29. package/dist/core/plugins/index.d.ts.map +1 -1
  30. package/dist/core/plugins/modularity/index.d.ts +1 -1
  31. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  32. package/dist/core/plugins/signalR/index.d.ts +4 -0
  33. package/dist/core/plugins/signalR/index.d.ts.map +1 -0
  34. package/dist/core/types/index.d.ts +46 -20
  35. package/dist/core/types/index.d.ts.map +1 -1
  36. package/dist/framework.mjs +28611 -27509
  37. package/dist/index.css +1 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/shared/components/app-switcher/components/vc-app-switcher/index.d.ts +1 -3
  40. package/dist/shared/components/app-switcher/components/vc-app-switcher/index.d.ts.map +1 -1
  41. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts +6 -3
  42. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
  43. package/dist/shared/components/app-switcher/composables/useAppSwitcher/index.d.ts.map +1 -1
  44. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/index.d.ts +13 -456
  45. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/index.d.ts.map +1 -1
  46. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts +19 -454
  47. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  48. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts +2 -3
  49. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  50. package/dist/shared/components/blade-navigation/index.d.ts +1 -9
  51. package/dist/shared/components/blade-navigation/index.d.ts.map +1 -1
  52. package/dist/shared/components/blade-navigation/plugin.d.ts +13 -0
  53. package/dist/shared/components/blade-navigation/plugin.d.ts.map +1 -0
  54. package/dist/shared/components/blade-navigation/types/index.d.ts +53 -26
  55. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  56. package/dist/{core/plugins → shared/components}/error-interceptor/index.d.ts +53 -15
  57. package/dist/shared/components/error-interceptor/index.d.ts.map +1 -0
  58. package/dist/{core/plugins → shared/components}/error-interceptor/interceptor.d.ts +1 -1
  59. package/dist/shared/components/error-interceptor/interceptor.d.ts.map +1 -0
  60. package/dist/shared/components/notifications/components/notification-container/index.d.ts +13 -13
  61. package/dist/shared/components/notifications/components/notification-container/index.d.ts.map +1 -1
  62. package/dist/shared/components/notifications/index.d.ts +0 -9
  63. package/dist/shared/components/notifications/index.d.ts.map +1 -1
  64. package/dist/shared/components/popup-handler/components/index.d.ts +2 -0
  65. package/dist/shared/components/popup-handler/components/index.d.ts.map +1 -0
  66. package/dist/shared/components/popup-handler/components/vc-popup-container/index.d.ts +2 -0
  67. package/dist/shared/components/popup-handler/components/vc-popup-container/index.d.ts.map +1 -0
  68. package/dist/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue.d.ts +3 -0
  69. package/dist/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue.d.ts.map +1 -0
  70. package/dist/shared/components/popup-handler/composables/index.d.ts +2 -0
  71. package/dist/shared/components/popup-handler/composables/index.d.ts.map +1 -0
  72. package/dist/shared/components/popup-handler/composables/usePopup/index.d.ts +12 -0
  73. package/dist/shared/components/popup-handler/composables/usePopup/index.d.ts.map +1 -0
  74. package/dist/shared/components/popup-handler/index.d.ts +16 -0
  75. package/dist/shared/components/popup-handler/index.d.ts.map +1 -0
  76. package/dist/shared/components/popup-handler/plugin.d.ts +6 -0
  77. package/dist/shared/components/popup-handler/plugin.d.ts.map +1 -0
  78. package/dist/shared/components/popup-handler/types/index.d.ts +26 -0
  79. package/dist/shared/components/popup-handler/types/index.d.ts.map +1 -0
  80. package/dist/shared/components/popup-handler/utils/index.d.ts +3 -0
  81. package/dist/shared/components/popup-handler/utils/index.d.ts.map +1 -0
  82. package/dist/shared/index.d.ts +2 -0
  83. package/dist/shared/index.d.ts.map +1 -1
  84. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts +13 -4
  85. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts.map +1 -1
  86. package/dist/shared/modules/assets/components/assets-details/index.d.ts +85 -49
  87. package/dist/shared/modules/assets/components/assets-details/index.d.ts.map +1 -1
  88. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts +15 -11
  89. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts.map +1 -1
  90. package/dist/shared/modules/assets-manager/components/assets-manager/index.d.ts +89 -64
  91. package/dist/shared/modules/assets-manager/components/assets-manager/index.d.ts.map +1 -1
  92. package/dist/tsconfig.tsbuildinfo +1 -1
  93. package/dist/ui/components/atoms/vc-badge/index.d.ts +56 -19
  94. package/dist/ui/components/atoms/vc-badge/index.d.ts.map +1 -1
  95. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts +2 -2
  96. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  97. package/dist/ui/components/atoms/vc-button/index.d.ts +68 -44
  98. package/dist/ui/components/atoms/vc-button/index.d.ts.map +1 -1
  99. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts +7 -4
  100. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
  101. package/dist/ui/components/atoms/vc-card/index.d.ts +66 -44
  102. package/dist/ui/components/atoms/vc-card/index.d.ts.map +1 -1
  103. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts +8 -6
  104. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
  105. package/dist/ui/components/atoms/vc-checkbox/index.d.ts +74 -48
  106. package/dist/ui/components/atoms/vc-checkbox/index.d.ts.map +1 -1
  107. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox.vue.d.ts +8 -5
  108. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  109. package/dist/ui/components/atoms/vc-col/index.d.ts +54 -19
  110. package/dist/ui/components/atoms/vc-col/index.d.ts.map +1 -1
  111. package/dist/ui/components/atoms/vc-col/vc-col.vue.d.ts +7 -4
  112. package/dist/ui/components/atoms/vc-col/vc-col.vue.d.ts.map +1 -1
  113. package/dist/ui/components/atoms/vc-container/index.d.ts +56 -19
  114. package/dist/ui/components/atoms/vc-container/index.d.ts.map +1 -1
  115. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts +2 -2
  116. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts.map +1 -1
  117. package/dist/ui/components/atoms/vc-hint/index.d.ts +53 -8
  118. package/dist/ui/components/atoms/vc-hint/index.d.ts.map +1 -1
  119. package/dist/ui/components/atoms/vc-hint/vc-hint.vue.d.ts +2 -2
  120. package/dist/ui/components/atoms/vc-hint/vc-hint.vue.d.ts.map +1 -1
  121. package/dist/ui/components/atoms/vc-icon/index.d.ts +4 -8
  122. package/dist/ui/components/atoms/vc-icon/index.d.ts.map +1 -1
  123. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts +7 -4
  124. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts.map +1 -1
  125. package/dist/ui/components/atoms/vc-image/index.d.ts +17 -23
  126. package/dist/ui/components/atoms/vc-image/index.d.ts.map +1 -1
  127. package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts +8 -5
  128. package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts.map +1 -1
  129. package/dist/ui/components/atoms/vc-info-row/index.d.ts +10 -12
  130. package/dist/ui/components/atoms/vc-info-row/index.d.ts.map +1 -1
  131. package/dist/ui/components/atoms/vc-info-row/vc-info-row.vue.d.ts +7 -4
  132. package/dist/ui/components/atoms/vc-info-row/vc-info-row.vue.d.ts.map +1 -1
  133. package/dist/ui/components/atoms/vc-label/index.d.ts +56 -23
  134. package/dist/ui/components/atoms/vc-label/index.d.ts.map +1 -1
  135. package/dist/ui/components/atoms/vc-label/vc-label.vue.d.ts +8 -5
  136. package/dist/ui/components/atoms/vc-label/vc-label.vue.d.ts.map +1 -1
  137. package/dist/ui/components/atoms/vc-link/index.d.ts +56 -20
  138. package/dist/ui/components/atoms/vc-link/index.d.ts.map +1 -1
  139. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts +2 -2
  140. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  141. package/dist/ui/components/atoms/vc-loading/index.d.ts +1 -1
  142. package/dist/ui/components/atoms/vc-loading/index.d.ts.map +1 -1
  143. package/dist/ui/components/atoms/vc-loading/vc-loading.vue.d.ts +1 -1
  144. package/dist/ui/components/atoms/vc-loading/vc-loading.vue.d.ts.map +1 -1
  145. package/dist/ui/components/atoms/vc-progress/index.d.ts +54 -27
  146. package/dist/ui/components/atoms/vc-progress/index.d.ts.map +1 -1
  147. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts +6 -3
  148. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  149. package/dist/ui/components/atoms/vc-row/index.d.ts +53 -8
  150. package/dist/ui/components/atoms/vc-row/index.d.ts.map +1 -1
  151. package/dist/ui/components/atoms/vc-row/vc-row.vue.d.ts +2 -2
  152. package/dist/ui/components/atoms/vc-row/vc-row.vue.d.ts.map +1 -1
  153. package/dist/ui/components/atoms/vc-status/index.d.ts +56 -31
  154. package/dist/ui/components/atoms/vc-status/index.d.ts.map +1 -1
  155. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts +7 -4
  156. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  157. package/dist/ui/components/atoms/vc-status-icon/index.d.ts +1 -1
  158. package/dist/ui/components/atoms/vc-status-icon/index.d.ts.map +1 -1
  159. package/dist/ui/components/atoms/vc-status-icon/vc-status-icon.vue.d.ts +1 -1
  160. package/dist/ui/components/atoms/vc-status-icon/vc-status-icon.vue.d.ts.map +1 -1
  161. package/dist/ui/components/atoms/vc-switch/index.d.ts +1 -1
  162. package/dist/ui/components/atoms/vc-switch/index.d.ts.map +1 -1
  163. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts +1 -1
  164. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts.map +1 -1
  165. package/dist/ui/components/atoms/vc-widget/index.d.ts +1 -1
  166. package/dist/ui/components/atoms/vc-widget/index.d.ts.map +1 -1
  167. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts +1 -1
  168. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts.map +1 -1
  169. package/dist/ui/components/index.d.ts +2 -0
  170. package/dist/ui/components/index.d.ts.map +1 -1
  171. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts +3 -3
  172. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts.map +1 -1
  173. package/dist/ui/components/molecules/vc-breadcrumbs/index.d.ts +1 -3
  174. package/dist/ui/components/molecules/vc-breadcrumbs/index.d.ts.map +1 -1
  175. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts +6 -3
  176. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  177. package/dist/ui/components/molecules/vc-code-editor/index.d.ts +79 -65
  178. package/dist/ui/components/molecules/vc-code-editor/index.d.ts.map +1 -1
  179. package/dist/ui/components/molecules/vc-code-editor/vc-code-editor.vue.d.ts +7 -4
  180. package/dist/ui/components/molecules/vc-code-editor/vc-code-editor.vue.d.ts.map +1 -1
  181. package/dist/ui/components/molecules/vc-editor/index.d.ts +80 -69
  182. package/dist/ui/components/molecules/vc-editor/index.d.ts.map +1 -1
  183. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +7 -4
  184. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  185. package/dist/ui/components/molecules/vc-file-upload/index.d.ts +77 -65
  186. package/dist/ui/components/molecules/vc-file-upload/index.d.ts.map +1 -1
  187. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts +7 -4
  188. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  189. package/dist/ui/components/molecules/vc-form/index.d.ts +53 -8
  190. package/dist/ui/components/molecules/vc-form/index.d.ts.map +1 -1
  191. package/dist/ui/components/molecules/vc-form/vc-form.vue.d.ts +2 -2
  192. package/dist/ui/components/molecules/vc-form/vc-form.vue.d.ts.map +1 -1
  193. package/dist/ui/components/molecules/vc-input/index.d.ts +116 -128
  194. package/dist/ui/components/molecules/vc-input/index.d.ts.map +1 -1
  195. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts +17 -13
  196. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  197. package/dist/ui/components/molecules/vc-input-currency/index.d.ts +125 -137
  198. package/dist/ui/components/molecules/vc-input-currency/index.d.ts.map +1 -1
  199. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts +9 -8
  200. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts.map +1 -1
  201. package/dist/ui/components/molecules/vc-notification/index.d.ts +1 -1
  202. package/dist/ui/components/molecules/vc-notification/index.d.ts.map +1 -1
  203. package/dist/ui/components/molecules/vc-notification/vc-notification.vue.d.ts +1 -1
  204. package/dist/ui/components/molecules/vc-notification/vc-notification.vue.d.ts.map +1 -1
  205. package/dist/ui/components/molecules/vc-pagination/index.d.ts +7 -11
  206. package/dist/ui/components/molecules/vc-pagination/index.d.ts.map +1 -1
  207. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts +6 -3
  208. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts.map +1 -1
  209. package/dist/ui/components/molecules/vc-rating/index.d.ts +73 -55
  210. package/dist/ui/components/molecules/vc-rating/index.d.ts.map +1 -1
  211. package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts +8 -5
  212. package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts.map +1 -1
  213. package/dist/ui/components/molecules/vc-select/index.d.ts +188 -584
  214. package/dist/ui/components/molecules/vc-select/index.d.ts.map +1 -1
  215. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +643 -119
  216. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  217. package/dist/ui/components/molecules/vc-slider/index.d.ts +70 -55
  218. package/dist/ui/components/molecules/vc-slider/index.d.ts.map +1 -1
  219. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts +10 -7
  220. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
  221. package/dist/ui/components/molecules/vc-textarea/index.d.ts +80 -68
  222. package/dist/ui/components/molecules/vc-textarea/index.d.ts.map +1 -1
  223. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts +7 -4
  224. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  225. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts +21 -7
  226. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  227. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts +8 -17
  228. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
  229. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts +19 -36
  230. 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
  231. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts +20 -13
  232. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  233. package/dist/ui/components/organisms/vc-app/index.d.ts +138 -160
  234. package/dist/ui/components/organisms/vc-app/index.d.ts.map +1 -1
  235. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +23 -24
  236. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  237. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts +4 -4
  238. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  239. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts +8 -5
  240. 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
  241. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts +7 -4
  242. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  243. package/dist/ui/components/organisms/vc-blade/index.d.ts +103 -112
  244. package/dist/ui/components/organisms/vc-blade/index.d.ts.map +1 -1
  245. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts +11 -10
  246. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
  247. package/dist/ui/components/organisms/vc-dynamic-property/index.d.ts +3 -5
  248. package/dist/ui/components/organisms/vc-dynamic-property/index.d.ts.map +1 -1
  249. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts +6 -3
  250. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
  251. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts +7 -4
  252. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts.map +1 -1
  253. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts +18 -7
  254. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
  255. package/dist/ui/components/organisms/vc-gallery/index.d.ts +37 -52
  256. package/dist/ui/components/organisms/vc-gallery/index.d.ts.map +1 -1
  257. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts +8 -8
  258. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts.map +1 -1
  259. package/dist/ui/components/organisms/vc-login-form/index.d.ts +62 -31
  260. package/dist/ui/components/organisms/vc-login-form/index.d.ts.map +1 -1
  261. package/dist/ui/components/organisms/vc-login-form/vc-login-form.vue.d.ts +7 -4
  262. package/dist/ui/components/organisms/vc-login-form/vc-login-form.vue.d.ts.map +1 -1
  263. package/dist/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue.d.ts +32 -0
  264. package/dist/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue.d.ts.map +1 -0
  265. package/dist/ui/components/organisms/vc-notification-dropdown/index.d.ts +44 -0
  266. package/dist/ui/components/organisms/vc-notification-dropdown/index.d.ts.map +1 -0
  267. package/dist/ui/components/organisms/vc-notification-dropdown/vc-notification-dropdown.vue.d.ts +22 -0
  268. package/dist/ui/components/organisms/vc-notification-dropdown/vc-notification-dropdown.vue.d.ts.map +1 -0
  269. package/dist/ui/components/organisms/vc-notification-template/index.d.ts +135 -0
  270. package/dist/ui/components/organisms/vc-notification-template/index.d.ts.map +1 -0
  271. package/dist/ui/components/organisms/vc-notification-template/vc-notification-template.vue.d.ts +24 -0
  272. package/dist/ui/components/organisms/vc-notification-template/vc-notification-template.vue.d.ts.map +1 -0
  273. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-error/vc-popup-error.vue.d.ts +17 -0
  274. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-error/vc-popup-error.vue.d.ts.map +1 -0
  275. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-warning/vc-popup-warning.vue.d.ts +20 -0
  276. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-warning/vc-popup-warning.vue.d.ts.map +1 -0
  277. package/dist/ui/components/organisms/vc-popup/index.d.ts +87 -42
  278. package/dist/ui/components/organisms/vc-popup/index.d.ts.map +1 -1
  279. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts +16 -6
  280. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts.map +1 -1
  281. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts +1 -1
  282. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  283. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts +6 -3
  284. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
  285. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts +6 -3
  286. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts.map +1 -1
  287. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +8 -5
  288. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  289. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts +48 -47
  290. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  291. package/dist/ui/components/organisms/vc-table/index.d.ts +205 -661
  292. package/dist/ui/components/organisms/vc-table/index.d.ts.map +1 -1
  293. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +185 -134
  294. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  295. package/dist/ui/types/index.d.ts +2 -0
  296. package/dist/ui/types/index.d.ts.map +1 -1
  297. package/package.json +26 -27
  298. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +3 -2
  299. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +4 -2
  300. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +25 -26
  301. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +106 -68
  302. package/shared/components/blade-navigation/index.ts +1 -12
  303. package/shared/components/blade-navigation/plugin.ts +33 -0
  304. package/shared/components/blade-navigation/types/index.ts +59 -36
  305. package/{core/plugins → shared/components}/error-interceptor/interceptor.ts +1 -1
  306. package/shared/components/notifications/composables/useContainer/index.ts +2 -2
  307. package/shared/components/notifications/core/notification.ts +1 -1
  308. package/shared/components/notifications/index.ts +0 -11
  309. package/shared/components/popup-handler/components/index.ts +1 -0
  310. package/shared/components/popup-handler/components/vc-popup-container/index.ts +3 -0
  311. package/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue +25 -0
  312. package/shared/components/popup-handler/composables/index.ts +1 -0
  313. package/shared/components/popup-handler/composables/usePopup/index.ts +129 -0
  314. package/shared/components/popup-handler/index.ts +19 -0
  315. package/shared/components/popup-handler/plugin.ts +24 -0
  316. package/shared/components/popup-handler/types/index.ts +28 -0
  317. package/shared/components/popup-handler/utils/index.ts +9 -0
  318. package/shared/index.ts +4 -2
  319. package/shared/modules/assets/components/assets-details/assets-details.vue +12 -10
  320. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +33 -30
  321. package/ui/components/atoms/vc-button/vc-button.vue +1 -1
  322. package/ui/components/atoms/vc-card/vc-card.vue +2 -2
  323. package/ui/components/atoms/vc-info-row/vc-info-row.vue +2 -2
  324. package/ui/components/atoms/vc-label/vc-label.vue +1 -1
  325. package/ui/components/atoms/vc-loading/vc-loading.vue +1 -1
  326. package/ui/components/atoms/vc-switch/vc-switch.vue +1 -1
  327. package/ui/components/index.ts +2 -0
  328. package/ui/components/molecules/vc-code-editor/vc-code-editor.vue +3 -3
  329. package/ui/components/molecules/vc-editor/vc-editor.vue +3 -3
  330. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +2 -2
  331. package/ui/components/molecules/vc-input/vc-input.vue +17 -17
  332. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +8 -8
  333. package/ui/components/molecules/vc-notification/vc-notification.vue +1 -1
  334. package/ui/components/molecules/vc-rating/vc-rating.vue +1 -1
  335. package/ui/components/molecules/vc-select/index.ts +1 -86
  336. package/ui/components/molecules/vc-select/vc-select.stories.ts +1 -1
  337. package/ui/components/molecules/vc-select/vc-select.vue +276 -198
  338. package/ui/components/molecules/vc-slider/vc-slider.vue +3 -3
  339. package/ui/components/molecules/vc-textarea/vc-textarea.vue +2 -2
  340. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +20 -15
  341. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +5 -9
  342. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue +18 -27
  343. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +22 -16
  344. package/ui/components/organisms/vc-app/vc-app.vue +20 -17
  345. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +5 -5
  346. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +4 -4
  347. package/ui/components/organisms/vc-blade/vc-blade.vue +25 -32
  348. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +84 -84
  349. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue +3 -3
  350. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +9 -3
  351. package/ui/components/organisms/vc-gallery/vc-gallery.vue +27 -23
  352. package/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue +63 -0
  353. package/ui/components/organisms/vc-notification-dropdown/index.ts +3 -0
  354. package/ui/components/organisms/vc-notification-dropdown/vc-notification-dropdown.vue +125 -0
  355. package/ui/components/organisms/vc-notification-template/index.ts +3 -0
  356. package/ui/components/organisms/vc-notification-template/vc-notification-template.vue +33 -0
  357. package/ui/components/organisms/vc-popup/_internal/vc-popup-error/vc-popup-error.vue +28 -0
  358. package/ui/components/organisms/vc-popup/_internal/vc-popup-warning/vc-popup-warning.vue +33 -0
  359. package/ui/components/organisms/vc-popup/vc-popup.vue +62 -7
  360. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +6 -6
  361. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +5 -5
  362. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +27 -24
  363. package/ui/components/organisms/vc-table/index.ts +1 -17
  364. package/ui/components/organisms/vc-table/vc-table.stories.ts +1 -1
  365. package/ui/components/organisms/vc-table/vc-table.vue +140 -132
  366. package/ui/locales/en.json +21 -10
  367. package/ui/types/index.ts +2 -0
  368. package/LICENSE +0 -12
  369. package/core/directives/click-outside/index.ts +0 -21
  370. package/dist/core/directives/click-outside/index.d.ts +0 -3
  371. package/dist/core/directives/click-outside/index.d.ts.map +0 -1
  372. package/dist/core/plugins/error-interceptor/index.d.ts.map +0 -1
  373. package/dist/core/plugins/error-interceptor/interceptor.d.ts.map +0 -1
  374. /package/{core/plugins → shared/components}/error-interceptor/index.ts +0 -0
@@ -1,31 +1,30 @@
1
1
  <template>
2
2
  <ErrorInterceptor
3
- capture
4
3
  v-slot="{ error, reset }"
4
+ capture
5
5
  >
6
6
  <router-view
7
- @vnode-before-unmount="reset"
8
- v-slot="{ Component, route }"
7
+ v-slot="{ Component }: { Component: any }"
9
8
  :key="route.path"
9
+ @vue:before-unmount="reset"
10
10
  >
11
11
  <component
12
12
  :is="Component"
13
- :closable="false"
14
13
  v-show="$isMobile.value ? !blades.length : blades.length <= 1"
15
- @open:blade="onBladeOpen($event, 0)"
14
+ :key="route.path"
15
+ :ref="(el: CoreBladeExposed) => setParentRef(el, Component)"
16
+ :closable="false"
16
17
  :options="parentBladeOptions"
17
18
  :expanded="blades.length === 0"
18
19
  :maximized="findStateById(0)"
19
20
  :blades="blades"
20
21
  :param="resolveParam"
21
- :key="route.path"
22
- :ref="(el: IBladeElement) => setParentRef(el, Component)"
23
22
  @expand:blade="handleMaximizeBlade(0, true)"
24
23
  @collapse:blade="handleMaximizeBlade(0, false)"
25
24
  >
26
25
  <template
27
- v-slot:error
28
26
  v-if="error"
27
+ #error
29
28
  >{{ error }}</template
30
29
  >
31
30
  </component>
@@ -41,24 +40,23 @@
41
40
  capture
42
41
  >
43
42
  <component
43
+ :is="blade.blade"
44
44
  v-show="i >= blades.length - ($isMobile.value ? 1 : 2)"
45
- :is="blade.component"
45
+ :ref="(el: CoreBladeExposed) => setBladesRef(el, blade)"
46
46
  :param="blade.param"
47
47
  :closable="i >= 0"
48
48
  :expanded="i === blades.length - 1"
49
49
  :maximized="findStateById(blade.idx)"
50
- :options="blade.bladeOptions"
51
- @open:blade="onBladeOpen($event, blade.idx)"
50
+ :options="blade.options"
52
51
  @close:blade="onBladeClose(i)"
53
52
  @close:children="$emit('onClose', i + 1)"
54
53
  @parent:call="$emit('onParentCall', { id: i, args: $event })"
55
54
  @expand:blade="handleMaximizeBlade(blade.idx, true)"
56
55
  @collapse:blade="handleMaximizeBlade(blade.idx, false)"
57
- :ref="(el: IBladeElement) => setBladesRef(el, blade)"
58
56
  >
59
57
  <template
60
- v-slot:error
61
58
  v-if="error"
59
+ #error
62
60
  >{{ error }}</template
63
61
  >
64
62
  </component>
@@ -69,8 +67,15 @@
69
67
  <script lang="ts" setup>
70
68
  import { computed, ref, VNode } from "vue";
71
69
  import { useRoute } from "vue-router";
72
- import { IBladeContainer, IBladeElement, IBladeEvent, IParentCallArgs, IBladeRef } from "./../../../../../shared";
73
- import { ErrorInterceptor } from "./../../../../../core/plugins/error-interceptor";
70
+ import {
71
+ IBladeContainer,
72
+ CoreBladeExposed,
73
+ IBladeEvent,
74
+ IParentCallArgs,
75
+ IBladeRef,
76
+ BladeConstructor,
77
+ } from "./../../../../../shared";
78
+ import { ErrorInterceptor } from "./../../../error-interceptor";
74
79
 
75
80
  export interface Props {
76
81
  blades: IBladeContainer[];
@@ -89,17 +94,16 @@ const emit = defineEmits<Emits>();
89
94
  const props = withDefaults(defineProps<Props>(), {
90
95
  blades: () => [],
91
96
  parentBladeOptions: () => ({}),
92
- parentBladeParam: undefined,
93
97
  });
94
98
 
95
99
  const route = useRoute();
96
100
  const bladesRefs = ref<IBladeRef[]>([]);
97
- const state = ref<(IBladeRef & { expanded: boolean })[]>([]);
101
+ const state = ref<IBladeRef[]>([]);
98
102
 
99
103
  const visibleBlades = computed(() => bladesRefs.value.slice(-2));
100
104
 
101
105
  function handleMaximizeBlade(id: number, expand: boolean) {
102
- state.value = visibleBlades.value?.map((x: IBladeRef & { expanded: boolean }) => {
106
+ state.value = visibleBlades.value?.map((x: IBladeRef) => {
103
107
  if (x.blade.idx === id) {
104
108
  x.expanded = expand;
105
109
  }
@@ -111,13 +115,13 @@ function findStateById(id: number) {
111
115
  return state.value?.find((item) => item.blade.idx === id)?.expanded;
112
116
  }
113
117
 
114
- function setParentRef(el: IBladeElement, bladeNode: VNode) {
118
+ function setParentRef(el: CoreBladeExposed, bladeNode: VNode) {
115
119
  if (el && bladeNode) {
116
120
  bladesRefs.value = [
117
121
  {
118
122
  exposed: el,
119
123
  blade: {
120
- component: bladeNode.type as VNode,
124
+ blade: bladeNode.type as BladeConstructor,
121
125
  param: bladeNode.props?.param as string,
122
126
  idx: 0,
123
127
  },
@@ -126,7 +130,7 @@ function setParentRef(el: IBladeElement, bladeNode: VNode) {
126
130
  }
127
131
  }
128
132
 
129
- function setBladesRef(el: IBladeElement, blade: IBladeContainer) {
133
+ function setBladesRef(el: CoreBladeExposed, blade: IBladeContainer) {
130
134
  if (el && el !== null && blade) {
131
135
  const isExists = bladesRefs.value.some((item) => item.blade.idx === blade.idx);
132
136
  if (!isExists) {
@@ -139,11 +143,6 @@ function onBladeClose(index: number) {
139
143
  emit("onClose", index);
140
144
  }
141
145
 
142
- function onBladeOpen(event: IBladeEvent, idx: number) {
143
- state.value = [];
144
- emit("onOpen", { blade: event, id: idx });
145
- }
146
-
147
146
  const resolveParam = computed(() => {
148
147
  return props.parentBladeParam ? props.parentBladeParam : route.params.param;
149
148
  });
@@ -1,26 +1,48 @@
1
- import { computed, ref, unref, watch, Ref, shallowRef } from "vue";
1
+ import {
2
+ computed,
3
+ ref,
4
+ unref,
5
+ watch,
6
+ Ref,
7
+ ComponentPublicInstance,
8
+ getCurrentInstance,
9
+ markRaw,
10
+ inject,
11
+ nextTick,
12
+ } from "vue";
2
13
  import * as _ from "lodash-es";
3
- import { useRouter, useRoute, NavigationFailure } from "vue-router";
14
+ import { useRouter, useRoute } from "vue-router";
4
15
  import { usePermissions } from "../../../../../core/composables";
5
- import { ExtendedComponent, IBladeContainer, IBladeRef, IBladeEvent, IParentCallArgs } from "../../../..";
16
+ import {
17
+ IBladeContainer,
18
+ IBladeRef,
19
+ IBladeEvent,
20
+ IParentCallArgs,
21
+ BladeConstructor,
22
+ BladeComponentInternalInstance,
23
+ BladeNavigationPlugin,
24
+ notification,
25
+ } from "../../../..";
26
+ import { bladeNavigationInstance } from "./../../plugin";
6
27
 
7
28
  interface IUseBladeNavigation {
8
29
  readonly blades: Ref<IBladeContainer[]>;
9
30
  readonly parentBladeOptions: Ref<Record<string, unknown>>;
10
31
  readonly parentBladeParam: Ref<string>;
11
32
  bladesRefs: Ref<IBladeRef[]>;
12
- openBlade: (
13
- { parentBlade, component, param, bladeOptions, onOpen, onClose }: IBladeEvent,
14
- index?: number,
15
- navigationCb?: () => Promise<void | NavigationFailure>
16
- ) => void;
33
+ openBlade: <Blade extends ComponentPublicInstance = ComponentPublicInstance>({
34
+ blade,
35
+ param,
36
+ options,
37
+ onOpen,
38
+ onClose,
39
+ }: IBladeEvent<Blade>) => void;
17
40
  closeBlade: (index: number) => void;
18
41
  onParentCall: (index: number, args: IParentCallArgs) => void;
19
42
  }
20
43
 
21
- const blades: Ref<IBladeContainer[]> = ref([]);
22
- const bladesRefs: Ref<IBladeRef[]> = ref([]);
23
- const parentBladeOptions: Ref<Record<string, unknown>> = ref();
44
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
+ const parentBladeOptions: Ref<Record<string, any>> = ref();
24
46
  const parentBladeParam: Ref<string> = ref();
25
47
 
26
48
  export function useBladeNavigation(): IUseBladeNavigation {
@@ -29,71 +51,80 @@ export function useBladeNavigation(): IUseBladeNavigation {
29
51
  const { checkPermission } = usePermissions();
30
52
  const isPrevented = ref(false);
31
53
 
54
+ const instance: BladeComponentInternalInstance = getCurrentInstance();
55
+ const navigationInstance =
56
+ (instance && inject<BladeNavigationPlugin>("bladeNavigationPlugin")) || bladeNavigationInstance;
57
+
58
+ const lastBladeUrl = ref();
32
59
  watch(
33
- () => blades.value,
60
+ navigationInstance.blades,
34
61
  (newVal) => {
35
62
  const lastBlade = newVal[newVal.length - 1];
36
63
 
37
- if (lastBlade && lastBlade.component.url) {
64
+ if (lastBlade && lastBlade.blade.url) {
38
65
  if (lastBlade.param) {
39
- addEntryToLocation(lastBlade.component.url + "/" + lastBlade.param);
66
+ addEntryToLocation(lastBlade.blade.url + "/" + lastBlade.param);
40
67
  } else {
41
- addEntryToLocation(lastBlade.component.url);
68
+ addEntryToLocation(lastBlade.blade.url);
42
69
  }
43
70
  } else if (!lastBlade) {
71
+ clearParentData();
44
72
  addEntryToLocation(route.path);
45
73
  }
46
74
  },
47
75
  { deep: true }
48
76
  );
49
77
 
50
- async function openBlade(
51
- { parentBlade, component: blade, param, bladeOptions, onOpen, onClose }: IBladeEvent,
52
- index?: number,
53
- navigationCb?: () => Promise<void | NavigationFailure>
54
- ) {
55
- console.debug(`openBlade called.`);
56
-
57
- const parent = unref(parentBlade);
58
- const child = unref(blade);
59
- const existingChild = findBlade(child);
60
-
61
- if (parent && parent.url) {
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;
86
+
87
+ const bladeComponent = unref(blade);
88
+ const callerIndex = navigationInstance.bladesRefs.value.findIndex((item) => {
89
+ return _.isEqual(item.blade.blade, caller);
90
+ });
91
+ const existingChild =
92
+ callerIndex >= 0 ? navigationInstance.bladesRefs.value[callerIndex + 1]?.blade.blade : undefined;
93
+ const index = caller?.idx ? caller.idx : 0;
94
+
95
+ const initiator = caller?.url && navigationInstance.bladesRefs.value.find((x) => x.blade?.blade.url === caller.url);
96
+
97
+ if (!initiator && bladeComponent.url) {
62
98
  await closeBlade(0);
63
99
 
64
100
  if (!isPrevented.value) {
65
- parentBladeOptions.value = unref(bladeOptions);
101
+ parentBladeOptions.value = unref(options);
66
102
  parentBladeParam.value = unref(param);
67
- if (navigationCb && typeof navigationCb === "function") {
68
- try {
69
- await navigationCb();
70
- } catch (e) {
71
- console.log(e);
72
- } finally {
73
- console.debug(`Navigated to: ${parent.url}`);
74
- }
75
- } else if (!navigationCb) {
76
- await router.push(parent.url);
77
- }
78
- }
79
- }
80
103
 
81
- if (child) {
104
+ await router.push(bladeComponent.url);
105
+ }
106
+ } else {
107
+ let isPrevented;
82
108
  if (existingChild === undefined) {
83
- child.idx = index + 1;
109
+ bladeComponent.idx = index ? index + 1 : 1;
84
110
  } else if (existingChild) {
85
- await closeBlade(blades.value.findIndex((x) => x.idx === existingChild.idx));
86
- child.idx = existingChild.idx;
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);
87
118
  }
88
-
89
- await addBlade(child, param, bladeOptions, onOpen, onClose, index);
90
119
  }
91
120
  }
92
121
 
93
122
  async function closeBlade(index: number) {
123
+ console.debug(`[@vc-shell/framework#useBladeNavigation] - closeBlade called.`);
94
124
  const refsIndex = index + 1;
95
- if (refsIndex < bladesRefs.value.length) {
96
- const children = bladesRefs.value.slice(refsIndex).reverse();
125
+
126
+ if (refsIndex < navigationInstance.bladesRefs.value.length) {
127
+ const children = navigationInstance.bladesRefs.value.slice(refsIndex).reverse();
97
128
 
98
129
  isPrevented.value = false;
99
130
  for (let i = 0; i < children.length; i++) {
@@ -101,35 +132,38 @@ export function useBladeNavigation(): IUseBladeNavigation {
101
132
  const result = await children[i].exposed.onBeforeClose();
102
133
  if (result === false) {
103
134
  isPrevented.value = true;
104
- break;
135
+ console.debug(`[@vc-shell/framework#useBladeNavigation] - Navigation is prevented`);
136
+ return isPrevented;
105
137
  }
106
138
  }
107
139
  }
108
140
  if (!isPrevented.value) {
109
- if (typeof blades.value[index]?.onClose === "function") {
110
- blades.value[index]?.onClose?.();
141
+ if (typeof navigationInstance.blades.value[index]?.onClose === "function") {
142
+ navigationInstance.blades.value[index]?.onClose?.();
111
143
  }
112
- blades.value.splice(index);
144
+
145
+ navigationInstance.blades.value.splice(index);
113
146
  }
114
147
  }
115
148
  }
116
149
 
117
150
  async function addBlade(
118
- blade: ExtendedComponent,
151
+ blade: BladeConstructor,
119
152
  param: string,
120
- bladeOptions: Record<string, unknown>,
153
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
154
+ options: Record<string, any>,
121
155
  onOpen: () => void,
122
156
  onClose: () => void,
123
- index: number
157
+ index?: number
124
158
  ) {
125
- if (blades.value.length > index) {
159
+ if (index && navigationInstance.blades.value.length > index) {
126
160
  await closeBlade(index);
127
161
  }
128
162
 
129
163
  if (blade && checkPermission(blade.permissions)) {
130
- blades.value.push({
131
- component: shallowRef(blade),
132
- bladeOptions,
164
+ navigationInstance.blades.value.push({
165
+ blade: markRaw(blade),
166
+ options,
133
167
  param,
134
168
  onOpen,
135
169
  onClose,
@@ -140,8 +174,9 @@ export function useBladeNavigation(): IUseBladeNavigation {
140
174
  onOpen();
141
175
  }
142
176
  } else {
143
- // TODO temporary access alert
144
- alert("Access restricted");
177
+ notification.error("Access restricted", {
178
+ timeout: 3000,
179
+ });
145
180
  }
146
181
  }
147
182
 
@@ -149,7 +184,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
149
184
  console.debug(`vc-app#onParentCall(${index}, { method: ${args.method} }) called.`);
150
185
 
151
186
  if (index >= 0) {
152
- const currentParent = unref(bladesRefs.value[index]);
187
+ const currentParent = unref(navigationInstance.bladesRefs.value[index]);
153
188
 
154
189
  if (currentParent) {
155
190
  if (args.method && typeof currentParent.exposed[args.method] === "function") {
@@ -159,7 +194,6 @@ export function useBladeNavigation(): IUseBladeNavigation {
159
194
  args.callback(result);
160
195
  }
161
196
  } else {
162
- // TODO temporary alert
163
197
  console.error(`No such method: ${args.method}.`);
164
198
  }
165
199
  }
@@ -168,17 +202,21 @@ export function useBladeNavigation(): IUseBladeNavigation {
168
202
 
169
203
  function addEntryToLocation(params: string) {
170
204
  history.pushState({}, null, "#" + params);
205
+ lastBladeUrl.value = params;
171
206
  }
172
207
 
173
- function findBlade(blade: ExtendedComponent) {
174
- return blades.value.find((x) => _.isEqual(x.component, blade));
208
+ async function clearParentData() {
209
+ nextTick(() => {
210
+ parentBladeOptions.value = undefined;
211
+ parentBladeParam.value = undefined;
212
+ });
175
213
  }
176
214
 
177
215
  return {
178
- blades: computed(() => blades.value),
216
+ blades: computed(() => navigationInstance.blades.value),
179
217
  parentBladeOptions: computed(() => parentBladeOptions.value),
180
218
  parentBladeParam: computed(() => parentBladeParam.value),
181
- bladesRefs,
219
+ bladesRefs: navigationInstance.bladesRefs,
182
220
  openBlade,
183
221
  closeBlade,
184
222
  onParentCall,
@@ -1,15 +1,4 @@
1
- import { createModule } from "../../../core/plugins/modularity";
2
- import * as components from "./components";
3
-
4
- // Declare globally
5
- declare module "@vue/runtime-core" {
6
- export interface GlobalComponents {
7
- VcBladeNavigation: (typeof components)["VcBladeNavigation"];
8
- }
9
- }
10
-
11
- export const VcBladeNavigationComponent = createModule(components);
12
-
1
+ export * from "./plugin";
13
2
  export * from "./components";
14
3
  export * from "./composables";
15
4
  export * from "./types";
@@ -0,0 +1,33 @@
1
+ import { App, ref } from "vue";
2
+ import { createModule } from "./../../../core/plugins";
3
+ import * as components from "./components";
4
+ import { BladeNavigationPlugin, IBladeContainer, IBladeRef } from "./types";
5
+
6
+ // Declare globally
7
+ declare module "@vue/runtime-core" {
8
+ export interface GlobalComponents {
9
+ VcBladeNavigation: (typeof components)["VcBladeNavigation"];
10
+ }
11
+ }
12
+
13
+ export let bladeNavigationInstance: BladeNavigationPlugin;
14
+
15
+ export const VcBladeNavigationComponent = {
16
+ install(app: App) {
17
+ // Register components
18
+ createModule(components).install(app);
19
+
20
+ // Plugin
21
+ const blades = ref<IBladeContainer[]>([]);
22
+ const bladesRefs = ref<IBladeRef[]>([]);
23
+
24
+ const bladeNavigationPlugin: BladeNavigationPlugin = {
25
+ blades,
26
+ bladesRefs,
27
+ };
28
+
29
+ app.config.globalProperties.$bladeNavigationPlugin = bladeNavigationPlugin;
30
+ app.provide("bladeNavigationPlugin", bladeNavigationPlugin);
31
+ bladeNavigationInstance = bladeNavigationPlugin;
32
+ },
33
+ };
@@ -1,57 +1,80 @@
1
- import { Component, ComponentPublicInstance, VNode } from "vue";
2
- import { IMenuItems } from "../../../../core/types";
3
- import { NavigationFailure } from "vue-router";
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { ComponentPublicInstance, VNode, ComponentInternalInstance, VNodeTypes, Ref } from "vue";
3
+ import { PushNotification } from "./../../../../core/api";
4
4
 
5
- /* onParentCall event interface */
6
- export interface IParentCallArgs {
7
- method: string;
8
- args?: unknown;
9
- callback?: (args: unknown) => void;
10
- }
5
+ export type BladeInstanceConstructor<T extends ComponentPublicInstance = any> = {
6
+ new (...args: any[]): T & { $: ComponentInternalInstance & { exposed: CoreBladeExposed & T["$"]["exposed"] } } & {
7
+ $props: T["$props"] & CoreBladeComponentProps;
8
+ };
9
+ } & CoreBladeAdditionalSettings &
10
+ CoreBladeNavigationData;
11
+
12
+ export type ComponentInstanceConstructor<T = any> = {
13
+ new (...args: any[]): T;
14
+ };
15
+
16
+ export type CoreBladeComponentProps = {
17
+ expanded?: boolean;
18
+ closable?: boolean;
19
+ param?: string;
20
+ options?: Record<string, any>;
21
+ };
22
+
23
+ export type BladePageComponent = BladeConstructor;
11
24
 
12
- /* extended component */
13
- export type ExtendedComponent = (VNode | Component) & {
25
+ export type CoreBladeAdditionalSettings = {
14
26
  url?: string;
15
27
  permissions?: string | string[];
16
- idx?: number;
28
+ scope?: {
29
+ notificationClick?: (notification: PushNotification | Record<string, any>) => IBladeEvent;
30
+ };
17
31
  };
18
32
 
19
- /* blade interface for navigation */
20
- export interface IBladeContainer extends IBladeEvent {
33
+ export type CoreBladeNavigationData = {
21
34
  idx?: number;
22
- }
35
+ };
23
36
 
24
- /* blade exposed methods */
25
- export interface IBladeElement extends ComponentPublicInstance {
26
- onBeforeClose?: () => Promise<boolean>;
37
+ export interface CoreBladeExposed {
27
38
  title?: string;
39
+ notificationClick?: (notification: PushNotification) => IBladeEvent;
40
+ onBeforeClose?: () => Promise<boolean>;
28
41
  reloadParent?: () => void;
29
- openDashboard?: () => void;
42
+ reload?: () => void;
30
43
  }
31
44
 
32
- /* emitted blade event */
33
- export interface IBladeEvent {
34
- parentBlade?: ExtendedComponent;
35
- component?: ExtendedComponent;
36
- bladeOptions?: Record<string, unknown>;
37
- param?: string;
38
- onOpen?: () => void;
39
- onClose?: () => void;
45
+ export interface IParentCallArgs {
46
+ method: string;
47
+ args?: unknown;
48
+ callback?: (args: unknown) => void;
40
49
  }
41
50
 
42
- /* menu item event */
43
- export interface IMenuClickEvent {
44
- item: IMenuItems;
45
- navigationCb: () => Promise<void | NavigationFailure>;
51
+ export interface IBladeContainer extends IBladeEvent {
52
+ idx?: number;
46
53
  }
47
54
 
48
- /* openBlade args interface */
49
- export interface IOpenBlade extends IBladeEvent {
50
- id?: number;
51
- navigationCb?: () => Promise<void | NavigationFailure>;
55
+ export interface BladeComponentInternalInstance extends ComponentInternalInstance {
56
+ vnode: VNode & { type: VNodeTypes & CoreBladeAdditionalSettings & CoreBladeNavigationData };
57
+ }
58
+
59
+ export type ExtractedBladeOptions<T, U extends keyof T> = T[U];
60
+
61
+ export type BladeConstructor<T extends ComponentPublicInstance = ComponentPublicInstance> = BladeInstanceConstructor<T>;
62
+
63
+ export interface IBladeEvent<T extends ComponentPublicInstance = ComponentPublicInstance> {
64
+ blade?: BladeConstructor<T>;
65
+ options?: ExtractedBladeOptions<InstanceType<BladeConstructor<T>>["$props"], "options">;
66
+ param?: string;
67
+ onOpen?: () => void;
68
+ onClose?: () => void;
52
69
  }
53
70
 
54
71
  export interface IBladeRef {
55
- exposed: IBladeElement;
72
+ exposed: CoreBladeExposed;
56
73
  blade: IBladeContainer;
74
+ expanded?: boolean;
75
+ }
76
+
77
+ export interface BladeNavigationPlugin {
78
+ blades: Ref<IBladeContainer[]>;
79
+ bladesRefs: Ref<IBladeRef[]>;
57
80
  }
@@ -1,4 +1,4 @@
1
- import { useErrorHandler } from "./../../composables";
1
+ import { useErrorHandler } from "./../../../core/composables";
2
2
  import { SetupContext, defineComponent, VNode } from "vue";
3
3
 
4
4
  export interface Props {
@@ -114,7 +114,7 @@ export function useContainer(): IUseContainer {
114
114
  nextTick(() => {
115
115
  notificationContainer.value?.push(options);
116
116
  if (options.onOpen && typeof options?.onOpen === "function") {
117
- options.onOpen(options.payload ?? {});
117
+ options.onOpen(options.payload);
118
118
  }
119
119
  });
120
120
  }
@@ -136,7 +136,7 @@ export function useContainer(): IUseContainer {
136
136
 
137
137
  nextTick(() => {
138
138
  if (notification?.onClose && typeof notification?.onClose === "function") {
139
- notification.onClose(notification.payload ?? {});
139
+ notification.onClose(notification.payload);
140
140
  notification = undefined;
141
141
  }
142
142
  });
@@ -18,7 +18,7 @@ function checkPending(limit?: number) {
18
18
  return limitCount > 0 && visibleCount + pending.items.length >= limitCount;
19
19
  }
20
20
 
21
- function resolvePending(options) {
21
+ function resolvePending(options: NotificationOptions) {
22
22
  if (checkPending(options.limit)) {
23
23
  pending.items.push({
24
24
  notificationId: options.notificationId,
@@ -1,16 +1,5 @@
1
- import * as components from "./components";
2
- import { createModule } from "../../../core/plugins";
3
1
  import "./styles/index.scss";
4
2
 
5
- // Declare globally
6
- declare module "@vue/runtime-core" {
7
- export interface GlobalComponents {
8
- VcNotificationContainer: (typeof components)["NotificationContainer"];
9
- }
10
- }
11
-
12
- export const VcNotificationComponent = createModule(components);
13
-
14
3
  export * from "./components";
15
4
  export * from "./composables";
16
5
  export * from "./types";
@@ -0,0 +1 @@
1
+ export * from "./vc-popup-container";
@@ -0,0 +1,3 @@
1
+ import _PopupContainer from "./vc-popup-container.vue";
2
+
3
+ export const VcPopupContainer = _PopupContainer as typeof _PopupContainer;