@vc-shell/framework 1.0.120 → 1.0.121

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 (349) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/core/api/platform.ts +8215 -8033
  3. package/core/composables/useApiClient/index.ts +2 -1
  4. package/core/composables/useAsync/index.ts +3 -3
  5. package/core/composables/useErrorHandler/index.ts +2 -2
  6. package/core/composables/useFunctions/debounce.ts +2 -1
  7. package/core/composables/useNotifications/index.ts +4 -5
  8. package/core/composables/usePermissions/index.ts +8 -12
  9. package/core/composables/useSettings/index.ts +1 -1
  10. package/core/composables/useUser/index.ts +21 -17
  11. package/core/plugins/modularity/index.ts +7 -3
  12. package/core/plugins/moment/humanize.ts +3 -3
  13. package/core/plugins/moment/moment.ts +3 -3
  14. package/core/plugins/validation/rules.ts +1 -1
  15. package/core/types/index.ts +20 -25
  16. package/dist/core/api/platform.d.ts +5 -5
  17. package/dist/core/api/platform.d.ts.map +1 -1
  18. package/dist/core/composables/useApiClient/index.d.ts.map +1 -1
  19. package/dist/core/composables/useAsync/index.d.ts +1 -1
  20. package/dist/core/composables/useAsync/index.d.ts.map +1 -1
  21. package/dist/core/composables/useErrorHandler/index.d.ts +1 -1
  22. package/dist/core/composables/useErrorHandler/index.d.ts.map +1 -1
  23. package/dist/core/composables/useFunctions/debounce.d.ts +1 -1
  24. package/dist/core/composables/useFunctions/debounce.d.ts.map +1 -1
  25. package/dist/core/composables/useNotifications/index.d.ts.map +1 -1
  26. package/dist/core/composables/usePermissions/index.d.ts +1 -1
  27. package/dist/core/composables/usePermissions/index.d.ts.map +1 -1
  28. package/dist/core/composables/useUser/index.d.ts +5 -5
  29. package/dist/core/composables/useUser/index.d.ts.map +1 -1
  30. package/dist/core/plugins/modularity/index.d.ts +8 -6
  31. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  32. package/dist/core/plugins/moment/humanize.d.ts +1 -1
  33. package/dist/core/plugins/moment/humanize.d.ts.map +1 -1
  34. package/dist/core/plugins/moment/moment.d.ts.map +1 -1
  35. package/dist/core/types/index.d.ts +20 -19
  36. package/dist/core/types/index.d.ts.map +1 -1
  37. package/dist/framework.mjs +7866 -7825
  38. package/dist/index.css +1 -1
  39. package/dist/shared/components/app-switcher/components/vc-app-switcher/index.d.ts +3 -3
  40. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts +3 -3
  41. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/index.d.ts +21 -21
  42. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts +23 -22
  43. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  44. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts +10 -10
  45. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  46. package/dist/shared/components/blade-navigation/types/index.d.ts +34 -18
  47. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  48. package/dist/shared/components/change-password/change-password.vue.d.ts +1 -1
  49. package/dist/shared/components/change-password/index.d.ts +1 -1
  50. package/dist/shared/components/error-interceptor/index.d.ts +35 -35
  51. package/dist/shared/components/error-interceptor/interceptor.d.ts +4 -4
  52. package/dist/shared/components/error-interceptor/interceptor.d.ts.map +1 -1
  53. package/dist/shared/components/language-selector/index.d.ts +7 -7
  54. package/dist/shared/components/language-selector/language-selector.vue.d.ts +3 -3
  55. package/dist/shared/components/notifications/components/notification-container/index.d.ts +9 -9
  56. package/dist/shared/components/notifications/composables/useContainer/index.d.ts +1 -1
  57. package/dist/shared/components/notifications/composables/useContainer/index.d.ts.map +1 -1
  58. package/dist/shared/components/notifications/core/notification.d.ts +4 -4
  59. package/dist/shared/components/popup-handler/composables/usePopup/index.d.ts +2 -1
  60. package/dist/shared/components/popup-handler/composables/usePopup/index.d.ts.map +1 -1
  61. package/dist/shared/components/popup-handler/types/index.d.ts +2 -7
  62. package/dist/shared/components/popup-handler/types/index.d.ts.map +1 -1
  63. package/dist/shared/components/popup-handler/utils/index.d.ts +1 -1
  64. package/dist/shared/components/popup-handler/utils/index.d.ts.map +1 -1
  65. package/dist/shared/components/user-dropdown-button/index.d.ts +5 -5
  66. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +3 -3
  67. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts +3 -3
  68. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts.map +1 -1
  69. package/dist/shared/modules/assets/components/assets-details/index.d.ts +1 -46
  70. package/dist/shared/modules/assets/components/assets-details/index.d.ts.map +1 -1
  71. package/dist/shared/modules/assets/index.d.ts +1 -1
  72. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts +6 -6
  73. package/dist/shared/modules/assets-manager/components/assets-manager/index.d.ts +12 -12
  74. package/dist/shared/modules/assets-manager/index.d.ts +1 -1
  75. package/dist/shared/modules/dynamic/components/FIELD_MAP.d.ts +1 -2
  76. package/dist/shared/modules/dynamic/components/FIELD_MAP.d.ts.map +1 -1
  77. package/dist/shared/modules/dynamic/components/SchemaRender.d.ts +83 -82
  78. package/dist/shared/modules/dynamic/components/SchemaRender.d.ts.map +1 -1
  79. package/dist/shared/modules/dynamic/components/factories.d.ts +15 -14
  80. package/dist/shared/modules/dynamic/components/factories.d.ts.map +1 -1
  81. package/dist/shared/modules/dynamic/components/fields/Button.d.ts +39 -42
  82. package/dist/shared/modules/dynamic/components/fields/Button.d.ts.map +1 -1
  83. package/dist/shared/modules/dynamic/components/fields/Card.d.ts +39 -42
  84. package/dist/shared/modules/dynamic/components/fields/Card.d.ts.map +1 -1
  85. package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts +39 -42
  86. package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts.map +1 -1
  87. package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts +39 -42
  88. package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts.map +1 -1
  89. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts +39 -42
  90. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts.map +1 -1
  91. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +39 -42
  92. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts.map +1 -1
  93. package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts +39 -42
  94. package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts.map +1 -1
  95. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts +39 -42
  96. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts.map +1 -1
  97. package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts +39 -42
  98. package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts.map +1 -1
  99. package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts +39 -42
  100. package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts.map +1 -1
  101. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts +39 -42
  102. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts.map +1 -1
  103. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts +39 -42
  104. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts.map +1 -1
  105. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts +39 -42
  106. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts.map +1 -1
  107. package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts +132 -0
  108. package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts.map +1 -0
  109. package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts +39 -42
  110. package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts.map +1 -1
  111. package/dist/shared/modules/dynamic/components/fields/props.d.ts +38 -41
  112. package/dist/shared/modules/dynamic/components/fields/props.d.ts.map +1 -1
  113. package/dist/shared/modules/dynamic/composables/useFilterBuilder/index.d.ts +2 -2
  114. package/dist/shared/modules/dynamic/composables/useFilterBuilder/index.d.ts.map +1 -1
  115. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts +3 -3
  116. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts.map +1 -1
  117. package/dist/shared/modules/dynamic/factories/types/index.d.ts +10 -11
  118. package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
  119. package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts +1 -1
  120. package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts.map +1 -1
  121. package/dist/shared/modules/dynamic/helpers/override.d.ts.map +1 -1
  122. package/dist/shared/modules/dynamic/helpers/safeIn.d.ts +5 -0
  123. package/dist/shared/modules/dynamic/helpers/safeIn.d.ts.map +1 -0
  124. package/dist/shared/modules/dynamic/helpers/setters.d.ts +1 -0
  125. package/dist/shared/modules/dynamic/helpers/setters.d.ts.map +1 -1
  126. package/dist/shared/modules/dynamic/helpers/toolbarReducer.d.ts +1 -1
  127. package/dist/shared/modules/dynamic/helpers/toolbarReducer.d.ts.map +1 -1
  128. package/dist/shared/modules/dynamic/helpers/unwrapInterpolation.d.ts +1 -1
  129. package/dist/shared/modules/dynamic/helpers/unwrapInterpolation.d.ts.map +1 -1
  130. package/dist/shared/modules/dynamic/index.d.ts +7 -7
  131. package/dist/shared/modules/dynamic/index.d.ts.map +1 -1
  132. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +30 -30
  133. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
  134. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts +11 -10
  135. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  136. package/dist/shared/modules/dynamic/types/index.d.ts +321 -17
  137. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  138. package/dist/shared/modules/dynamic/types/models.d.ts +7 -3
  139. package/dist/shared/modules/dynamic/types/models.d.ts.map +1 -1
  140. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts +15 -28
  141. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
  142. package/dist/shared/pages/InvitePage/components/invite/index.d.ts +13 -17
  143. package/dist/shared/pages/InvitePage/components/invite/index.d.ts.map +1 -1
  144. package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -1
  145. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts +15 -28
  146. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
  147. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts +13 -17
  148. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts.map +1 -1
  149. package/dist/shared/utilities/assets.d.ts +3 -3
  150. package/dist/shared/utilities/assets.d.ts.map +1 -1
  151. package/dist/shared/utilities/vueUtils.d.ts +34 -0
  152. package/dist/shared/utilities/vueUtils.d.ts.map +1 -0
  153. package/dist/tsconfig.tsbuildinfo +1 -1
  154. package/dist/ui/components/atoms/vc-badge/index.d.ts +30 -30
  155. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts +1 -1
  156. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts +1 -1
  157. package/dist/ui/components/atoms/vc-card/index.d.ts +37 -37
  158. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts +2 -2
  159. package/dist/ui/components/atoms/vc-checkbox/index.d.ts +49 -45
  160. package/dist/ui/components/atoms/vc-checkbox/index.d.ts.map +1 -1
  161. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox.vue.d.ts +2 -2
  162. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  163. package/dist/ui/components/atoms/vc-container/index.d.ts +33 -33
  164. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts +2 -2
  165. package/dist/ui/components/atoms/vc-hint/index.d.ts +22 -22
  166. package/dist/ui/components/atoms/vc-image/index.d.ts +10 -10
  167. package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts +2 -2
  168. package/dist/ui/components/atoms/vc-info-row/index.d.ts +4 -4
  169. package/dist/ui/components/atoms/vc-label/index.d.ts +26 -26
  170. package/dist/ui/components/atoms/vc-label/vc-label.vue.d.ts +1 -1
  171. package/dist/ui/components/atoms/vc-link/index.d.ts +29 -29
  172. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts +1 -1
  173. package/dist/ui/components/atoms/vc-progress/index.d.ts +43 -43
  174. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts +1 -1
  175. package/dist/ui/components/atoms/vc-status-icon/index.d.ts +1 -9
  176. package/dist/ui/components/atoms/vc-status-icon/index.d.ts.map +1 -1
  177. package/dist/ui/components/atoms/vc-switch/index.d.ts +1 -1
  178. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts +1 -1
  179. package/dist/ui/components/atoms/vc-video/index.d.ts +1 -19
  180. package/dist/ui/components/atoms/vc-video/index.d.ts.map +1 -1
  181. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts +1 -4
  182. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  183. package/dist/ui/components/atoms/vc-widget/index.d.ts +1 -1
  184. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts +1 -1
  185. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts +9 -9
  186. package/dist/ui/components/molecules/vc-breadcrumbs/index.d.ts +8 -8
  187. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts +4 -4
  188. package/dist/ui/components/molecules/vc-code-editor/index.d.ts +65 -75
  189. package/dist/ui/components/molecules/vc-code-editor/index.d.ts.map +1 -1
  190. package/dist/ui/components/molecules/vc-code-editor/vc-code-editor.vue.d.ts +5 -16
  191. package/dist/ui/components/molecules/vc-code-editor/vc-code-editor.vue.d.ts.map +1 -1
  192. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +6 -20
  193. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  194. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts +3 -3
  195. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
  196. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts +2 -2
  197. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
  198. package/dist/ui/components/molecules/vc-file-upload/index.d.ts +59 -59
  199. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts +2 -2
  200. package/dist/ui/components/molecules/vc-form/index.d.ts +22 -22
  201. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts +8 -8
  202. package/dist/ui/components/molecules/vc-input-currency/index.d.ts +99 -99
  203. package/dist/ui/components/molecules/vc-input-currency/index.d.ts.map +1 -1
  204. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts +8 -8
  205. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts.map +1 -1
  206. package/dist/ui/components/molecules/vc-multivalue/index.d.ts +70 -70
  207. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts +70 -70
  208. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
  209. package/dist/ui/components/molecules/vc-notification/index.d.ts +1 -51
  210. package/dist/ui/components/molecules/vc-notification/index.d.ts.map +1 -1
  211. package/dist/ui/components/molecules/vc-pagination/index.d.ts +7 -7
  212. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts +1 -1
  213. package/dist/ui/components/molecules/vc-rating/index.d.ts +25 -25
  214. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +80 -80
  215. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  216. package/dist/ui/components/molecules/vc-slider/index.d.ts +40 -40
  217. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts +2 -2
  218. package/dist/ui/components/molecules/vc-textarea/index.d.ts +1 -230
  219. package/dist/ui/components/molecules/vc-textarea/index.d.ts.map +1 -1
  220. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts +6 -6
  221. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  222. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts +4 -7
  223. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  224. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts +1 -1
  225. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts +13 -13
  226. 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
  227. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts +10 -10
  228. package/dist/ui/components/organisms/vc-app/index.d.ts +93 -92
  229. package/dist/ui/components/organisms/vc-app/index.d.ts.map +1 -1
  230. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +20 -21
  231. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  232. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts +4 -4
  233. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts +9 -9
  234. 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
  235. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts +2 -2
  236. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  237. package/dist/ui/components/organisms/vc-blade/index.d.ts +70 -70
  238. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts +5 -5
  239. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts +67 -67
  240. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
  241. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts +15 -15
  242. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts +3 -3
  243. package/dist/ui/components/organisms/vc-gallery/index.d.ts +24 -36
  244. package/dist/ui/components/organisms/vc-gallery/index.d.ts.map +1 -1
  245. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts +8 -10
  246. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts.map +1 -1
  247. package/dist/ui/components/organisms/vc-login-form/index.d.ts +24 -24
  248. package/dist/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue.d.ts +1 -1
  249. package/dist/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue.d.ts.map +1 -1
  250. package/dist/ui/components/organisms/vc-notification-template/index.d.ts +1 -103
  251. package/dist/ui/components/organisms/vc-notification-template/index.d.ts.map +1 -1
  252. package/dist/ui/components/organisms/vc-notification-template/vc-notification-template.vue.d.ts +2 -0
  253. package/dist/ui/components/organisms/vc-notification-template/vc-notification-template.vue.d.ts.map +1 -1
  254. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-error/vc-popup-error.vue.d.ts +1 -1
  255. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-warning/vc-popup-warning.vue.d.ts +2 -2
  256. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts +2 -2
  257. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts +1 -1
  258. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts +1 -1
  259. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +2 -2
  260. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts +15 -15
  261. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  262. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +105 -105
  263. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  264. package/package.json +5 -5
  265. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +3 -3
  266. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +1 -1
  267. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +7 -7
  268. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +80 -80
  269. package/shared/components/blade-navigation/types/index.ts +50 -18
  270. package/shared/components/change-password/change-password.vue +32 -5
  271. package/shared/components/error-interceptor/interceptor.ts +4 -4
  272. package/shared/components/notifications/composables/useContainer/index.ts +2 -2
  273. package/shared/components/notifications/composables/useInstance/index.ts +2 -2
  274. package/shared/components/notifications/core/notification.ts +2 -2
  275. package/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue +2 -2
  276. package/shared/components/popup-handler/composables/usePopup/index.ts +13 -6
  277. package/shared/components/popup-handler/types/index.ts +1 -7
  278. package/shared/components/user-dropdown-button/user-dropdown-button.vue +1 -1
  279. package/shared/modules/assets/components/assets-details/assets-details.vue +12 -6
  280. package/shared/modules/assets/components/assets-details/index.ts +1 -3
  281. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +10 -10
  282. package/shared/modules/dynamic/components/FIELD_MAP.ts +4 -2
  283. package/shared/modules/dynamic/components/SchemaRender.ts +2 -2
  284. package/shared/modules/dynamic/components/factories.ts +24 -13
  285. package/shared/modules/dynamic/components/fields/Button.ts +3 -3
  286. package/shared/modules/dynamic/components/fields/Card.ts +30 -15
  287. package/shared/modules/dynamic/components/fields/Checkbox.ts +2 -2
  288. package/shared/modules/dynamic/components/fields/ContentField.ts +2 -2
  289. package/shared/modules/dynamic/components/fields/DynamicProperty.ts +19 -9
  290. package/shared/modules/dynamic/components/fields/Fieldset.ts +7 -4
  291. package/shared/modules/dynamic/components/fields/GalleryField.ts +42 -22
  292. package/shared/modules/dynamic/components/fields/ImageField.ts +2 -2
  293. package/shared/modules/dynamic/components/fields/InputCurrency.ts +8 -4
  294. package/shared/modules/dynamic/components/fields/InputField.ts +9 -9
  295. package/shared/modules/dynamic/components/fields/SelectField.ts +6 -3
  296. package/shared/modules/dynamic/components/fields/StatusField.ts +3 -3
  297. package/shared/modules/dynamic/components/fields/TextareaField.ts +41 -0
  298. package/shared/modules/dynamic/components/fields/ValidationField.ts +9 -9
  299. package/shared/modules/dynamic/components/fields/VideoField.ts +2 -5
  300. package/shared/modules/dynamic/components/fields/props.ts +1 -2
  301. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +18 -10
  302. package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +7 -6
  303. package/shared/modules/dynamic/factories/base/useListFactory.ts +4 -4
  304. package/shared/modules/dynamic/factories/types/index.ts +11 -9
  305. package/shared/modules/dynamic/helpers/nodeBuilder.ts +53 -27
  306. package/shared/modules/dynamic/helpers/override.ts +14 -27
  307. package/shared/modules/dynamic/helpers/safeIn.ts +6 -0
  308. package/shared/modules/dynamic/helpers/setters.ts +11 -2
  309. package/shared/modules/dynamic/helpers/toolbarReducer.ts +3 -3
  310. package/shared/modules/dynamic/helpers/unwrapInterpolation.ts +2 -1
  311. package/shared/modules/dynamic/index.ts +38 -29
  312. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +33 -31
  313. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +45 -33
  314. package/shared/modules/dynamic/types/index.ts +323 -17
  315. package/shared/modules/dynamic/types/models.ts +11 -3
  316. package/shared/pages/InvitePage/components/invite/Invite.vue +17 -19
  317. package/shared/pages/LoginPage/components/login/Login.vue +6 -8
  318. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +17 -19
  319. package/shared/utilities/assets.ts +6 -4
  320. package/shared/utilities/vueUtils.ts +46 -0
  321. package/ui/components/atoms/vc-checkbox/vc-checkbox.vue +2 -2
  322. package/ui/components/atoms/vc-status-icon/index.ts +1 -3
  323. package/ui/components/atoms/vc-video/vc-video.vue +1 -14
  324. package/ui/components/molecules/vc-code-editor/vc-code-editor.vue +1 -3
  325. package/ui/components/molecules/vc-editor/vc-editor.vue +13 -7
  326. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +14 -5
  327. package/ui/components/molecules/vc-field/vc-field.vue +1 -1
  328. package/ui/components/molecules/vc-input/vc-input.vue +4 -4
  329. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +11 -11
  330. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +1 -1
  331. package/ui/components/molecules/vc-notification/index.ts +1 -3
  332. package/ui/components/molecules/vc-notification/vc-notification.vue +6 -6
  333. package/ui/components/molecules/vc-select/vc-select.vue +6 -4
  334. package/ui/components/molecules/vc-textarea/index.ts +1 -10
  335. package/ui/components/molecules/vc-textarea/vc-textarea.vue +6 -1
  336. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +0 -1
  337. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +3 -3
  338. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue +7 -7
  339. package/ui/components/organisms/vc-app/vc-app.vue +11 -19
  340. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +2 -2
  341. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +2 -2
  342. package/ui/components/organisms/vc-blade/vc-blade.vue +1 -1
  343. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +3 -3
  344. package/ui/components/organisms/vc-gallery/vc-gallery.vue +6 -7
  345. package/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue +1 -12
  346. package/ui/components/organisms/vc-notification-template/index.ts +1 -3
  347. package/ui/components/organisms/vc-notification-template/vc-notification-template.vue +35 -17
  348. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +6 -6
  349. package/ui/components/organisms/vc-table/vc-table.vue +12 -11
@@ -1,16 +1,5 @@
1
- import {
2
- computed,
3
- ref,
4
- unref,
5
- watch,
6
- Ref,
7
- ComponentPublicInstance,
8
- getCurrentInstance,
9
- markRaw,
10
- inject,
11
- nextTick,
12
- warn,
13
- } from "vue";
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { computed, ref, unref, watch, Ref, getCurrentInstance, markRaw, inject, nextTick, warn, Component } from "vue";
14
3
  import * as _ from "lodash-es";
15
4
  import { useRouter, RouteLocationNormalized } from "vue-router";
16
5
  import { usePermissions } from "../../../../../core/composables";
@@ -19,11 +8,10 @@ import {
19
8
  IBladeRef,
20
9
  IBladeEvent,
21
10
  IParentCallArgs,
22
- BladeConstructor,
23
11
  BladeComponentInternalInstance,
24
12
  BladeNavigationPlugin,
25
13
  notification,
26
- BladePageComponent,
14
+ BladeInstanceConstructor,
27
15
  } from "../../../..";
28
16
  import { bladeNavigationInstance } from "../../plugin";
29
17
  import pattern from "url-pattern";
@@ -34,18 +22,20 @@ interface BladeData {
34
22
  param?: string;
35
23
  options?: string;
36
24
  }
25
+
37
26
  interface IUseBladeNavigation {
38
27
  readonly blades: Ref<IBladeContainer[]>;
39
- readonly workspaceOptions: Ref<Record<string, unknown>>;
40
- readonly workspaceParam: Ref<string>;
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ readonly workspaceOptions: Ref<Record<string, any>> | Ref<undefined>;
30
+ readonly workspaceParam: Ref<string> | Ref<undefined>;
41
31
  readonly lastBladeData: Ref<BladeData>;
42
32
  bladesRefs: Ref<IBladeRef[]>;
43
33
  activeBlade: Ref<IBladeContainer>;
44
- openBlade: <Blade extends ComponentPublicInstance = ComponentPublicInstance>(
34
+ openBlade: <Blade extends Component>(
45
35
  { blade, param, options, onOpen, onClose }: IBladeEvent<Blade>,
46
36
  isWorkspace?: boolean
47
37
  ) => void;
48
- closeBlade: (index: number) => Promise<boolean>;
38
+ closeBlade: (index: number) => Promise<boolean | undefined>;
49
39
  onParentCall: (index: number, args: IParentCallArgs) => void;
50
40
  /**
51
41
  * Resolves blades from vue-router's navigation guard 'to' param. Used to display blades after page reload or accessing via direct link.
@@ -53,18 +43,17 @@ interface IUseBladeNavigation {
53
43
  * @param to
54
44
  * @returns string
55
45
  */
56
- resolveBlades: (to: RouteLocationNormalized) => string;
57
- resolveLastBlade: (pages: BladePageComponent[]) => void;
58
- resolveUnknownRoutes: (to: RouteLocationNormalized) => string;
59
- resolveBladeByName: (name: string) => BladeConstructor;
46
+ resolveBlades: (to: RouteLocationNormalized) => string | unknown;
47
+ resolveLastBlade: (pages: BladeInstanceConstructor[]) => void;
48
+ resolveUnknownRoutes: (to: RouteLocationNormalized) => string | unknown;
49
+ resolveBladeByName: (name: string) => BladeInstanceConstructor<any>;
60
50
  }
61
51
 
62
52
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
- const workspaceOptions: Ref<Record<string, any>> = ref();
64
- const workspaceParam: Ref<string> = ref();
53
+ const workspaceOptions: Ref<Record<string, any>> | Ref<undefined> = ref();
54
+ const workspaceParam: Ref<string> | Ref<undefined> = ref();
65
55
  const activeBlade = ref();
66
56
  const lastBladeData = useLocalStorage<BladeData>("VC_BLADE_DATA", {});
67
- // const resolvedLastBlade = ref<BladePageComponent>();
68
57
 
69
58
  export function useBladeNavigation(): IUseBladeNavigation {
70
59
  const router = useRouter();
@@ -73,7 +62,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
73
62
  const isPrevented = ref(false);
74
63
  const routes = router.getRoutes();
75
64
 
76
- const instance: BladeComponentInternalInstance = getCurrentInstance();
65
+ const instance: BladeComponentInternalInstance = getCurrentInstance() as BladeComponentInternalInstance;
77
66
  const navigationInstance =
78
67
  (instance && inject<BladeNavigationPlugin>("bladeNavigationPlugin")) || bladeNavigationInstance;
79
68
 
@@ -84,9 +73,9 @@ export function useBladeNavigation(): IUseBladeNavigation {
84
73
  const workspace = navigationInstance.bladesRefs.value[0]?.blade;
85
74
  const lastBlade = newVal[newVal.length - 1];
86
75
 
87
- if (workspace && workspace.blade.url) {
76
+ if (workspace && workspace.blade?.url) {
88
77
  let url: string;
89
- if (lastBlade && lastBlade.blade.url) {
78
+ if (lastBlade && lastBlade.blade?.url) {
90
79
  url = urlPattern.stringify({
91
80
  workspace: workspace?.blade.url.substring(1),
92
81
  blade: lastBlade?.blade.url.substring(1),
@@ -103,13 +92,13 @@ export function useBladeNavigation(): IUseBladeNavigation {
103
92
  { deep: true }
104
93
  );
105
94
 
106
- async function openWorkspace({ blade, param, options }: IBladeEvent) {
95
+ async function openWorkspace<Blade extends Component>({ blade, param, options }: IBladeEvent<Blade>) {
107
96
  await closeBlade(0);
108
97
 
109
98
  const bladeComponent = unref(blade);
110
99
 
111
- if (!isPrevented.value) {
112
- await router.replace(bladeComponent.url);
100
+ if (!isPrevented.value && bladeComponent?.url) {
101
+ await router.replace(bladeComponent.url as string);
113
102
 
114
103
  await nextTick(() => {
115
104
  workspaceOptions.value = unref(options);
@@ -119,7 +108,9 @@ export function useBladeNavigation(): IUseBladeNavigation {
119
108
  }
120
109
 
121
110
  function isBladeComponent(
122
- component: Omit<BladeComponentInternalInstance["vnode"]["type"], "__isFragment"> | BladeConstructor
111
+ component:
112
+ | Omit<BladeComponentInternalInstance["vnode"]["type"], "__isFragment">
113
+ | InstanceType<BladeInstanceConstructor>
123
114
  ) {
124
115
  if (!instance) {
125
116
  warn("isBladeComponent can only be used in setup().");
@@ -130,7 +121,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
130
121
  return foundComponent && "isBladeComponent" in foundComponent && !!foundComponent.isBladeComponent;
131
122
  }
132
123
 
133
- async function openBlade<Blade extends ComponentPublicInstance>(
124
+ async function openBlade<Blade extends Component>(
134
125
  { blade, param, options, onOpen, onClose }: IBladeEvent<Blade>,
135
126
  isWorkspace = false
136
127
  ) {
@@ -146,37 +137,39 @@ export function useBladeNavigation(): IUseBladeNavigation {
146
137
 
147
138
  clearParentData();
148
139
 
149
- // caller blade component
150
- const instanceComponent = isBladeComponent(instance.vnode.type)
151
- ? instance.vnode.type
152
- : navigationInstance.bladesRefs.value.find((item) => item.active)?.blade?.blade;
153
-
154
- if (instanceComponent) {
155
- // Caller blade index in blades array
156
- const callerIndex = navigationInstance.bladesRefs.value.findIndex((item) => {
157
- return _.isEqual(item.blade.blade, instanceComponent);
158
- });
159
-
160
- // Trying to determine if the calling blade already has a child in order to replace it
161
- const isBladeAlreadyExist =
162
- callerIndex >= 0 ? navigationInstance.bladesRefs.value[callerIndex + 1]?.blade.blade : undefined;
163
-
164
- // Blade we want to open
165
- const bladeComponent = unref(blade);
166
-
167
- // Check if caller blade has idx
168
- const index = instanceComponent?.idx ? instanceComponent.idx : 0;
169
-
170
- if (isBladeAlreadyExist === undefined) {
171
- bladeComponent.idx = index ? index + 1 : 1;
172
- } else if (isBladeAlreadyExist) {
173
- await closeBlade(
174
- navigationInstance.blades.value.findIndex((x: IBladeContainer) => x.idx === isBladeAlreadyExist.idx)
175
- );
176
- bladeComponent.idx = isBladeAlreadyExist.idx;
177
- }
178
- if (!isPrevented.value) {
179
- await addBlade(bladeComponent, param, options, onOpen, onClose, index);
140
+ if (instance) {
141
+ // caller blade component
142
+ const instanceComponent = isBladeComponent(instance.vnode.type)
143
+ ? instance.vnode.type
144
+ : navigationInstance.bladesRefs.value.find((item) => item.active)?.blade?.blade;
145
+
146
+ if (instanceComponent) {
147
+ // Caller blade index in blades array
148
+ const callerIndex = navigationInstance.bladesRefs.value.findIndex((item) => {
149
+ return _.isEqual(item.blade.blade, instanceComponent);
150
+ });
151
+
152
+ // Trying to determine if the calling blade already has a child in order to replace it
153
+ const isBladeAlreadyExist =
154
+ callerIndex >= 0 ? navigationInstance.bladesRefs.value[callerIndex + 1]?.blade.blade : undefined;
155
+
156
+ // Blade we want to open
157
+ const bladeComponent = unref(blade);
158
+
159
+ // Check if caller blade has idx
160
+ const index = instanceComponent?.idx ? instanceComponent.idx : 0;
161
+
162
+ if (isBladeAlreadyExist === undefined) {
163
+ bladeComponent.idx = index ? index + 1 : 1;
164
+ } else if (isBladeAlreadyExist) {
165
+ await closeBlade(
166
+ navigationInstance.blades.value.findIndex((x: IBladeContainer) => x.idx === isBladeAlreadyExist.idx)
167
+ );
168
+ bladeComponent.idx = isBladeAlreadyExist.idx;
169
+ }
170
+ if (!isPrevented.value) {
171
+ await addBlade(bladeComponent, param, options, onOpen, onClose, index);
172
+ }
180
173
  }
181
174
  }
182
175
  }
@@ -191,7 +184,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
191
184
  isPrevented.value = false;
192
185
  for (let i = 0; i < children.length; i++) {
193
186
  if (children[i]?.exposed.onBeforeClose && typeof children[i].exposed.onBeforeClose === "function") {
194
- const result = await children[i].exposed.onBeforeClose();
187
+ const result = await children[i].exposed.onBeforeClose?.();
195
188
  if (result === false) {
196
189
  isPrevented.value = true;
197
190
  console.debug(`[@vc-shell/framework#useBladeNavigation] - Navigation is prevented`);
@@ -211,19 +204,19 @@ export function useBladeNavigation(): IUseBladeNavigation {
211
204
  }
212
205
 
213
206
  async function addBlade(
214
- blade: BladeConstructor,
215
- param: string,
207
+ blade: BladeInstanceConstructor,
208
+ param?: string,
216
209
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
217
- options: Record<string, any>,
218
- onOpen: () => void,
219
- onClose: () => void,
210
+ options?: Record<string, any>,
211
+ onOpen?: () => void,
212
+ onClose?: () => void,
220
213
  index?: number
221
214
  ) {
222
215
  if (index && navigationInstance.blades.value.length > index) {
223
216
  await closeBlade(index);
224
217
  }
225
218
 
226
- if (blade && hasAccess(blade.permissions)) {
219
+ if (hasAccess(blade.permissions)) {
227
220
  navigationInstance.blades.value.push({
228
221
  blade: markRaw(blade),
229
222
  options,
@@ -264,7 +257,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
264
257
  }
265
258
 
266
259
  function addEntryToLocation(params: string) {
267
- history.replaceState({}, null, "#" + params);
260
+ history.replaceState({}, "", "#" + params);
268
261
  }
269
262
 
270
263
  async function clearParentData() {
@@ -308,34 +301,41 @@ export function useBladeNavigation(): IUseBladeNavigation {
308
301
  workspaceParam.value = param;
309
302
  }
310
303
 
311
- function resolveLastBlade(pages: BladePageComponent[]) {
304
+ function resolveLastBlade(pages: BladeInstanceConstructor[]) {
312
305
  if (lastBladeData.value?.blade) {
313
306
  const blade = pages?.find((b) => b.url === lastBladeData.value?.blade);
314
307
  setParentData({ param: lastBladeData.value?.param });
315
308
 
316
- if (!isBladeAlreadyOpened({ blade, param: lastBladeData.value?.param })) {
309
+ if (blade && !isBladeAlreadyOpened({ blade, param: lastBladeData.value?.param })) {
317
310
  openBlade({ blade, param: lastBladeData.value?.param });
318
311
  clearSavedBladeData();
319
312
  }
320
313
  }
321
314
  }
322
315
 
323
- function isBladeAlreadyOpened(args: { blade: BladePageComponent; param?: string }) {
316
+ function isBladeAlreadyOpened(args: { blade: BladeInstanceConstructor; param?: string }) {
324
317
  return navigationInstance?.blades.value.some((x) => {
325
318
  return x.blade === args.blade && x.param === args.param;
326
319
  });
327
320
  }
328
321
 
329
- function resolveBladeByName(name: string) {
322
+ function resolveBladeByName(name: string): BladeInstanceConstructor<any> {
330
323
  if (!instance) {
331
324
  warn("resolveComponentByName can only be used in setup().");
332
- return;
325
+
326
+ return null as any; // Return type inferred as any due to the early return
333
327
  }
328
+
334
329
  if (!name) {
335
330
  throw new Error("blade name is required");
336
331
  }
337
- const components = instance && instance.appContext.components;
338
- return components[name] as BladeConstructor;
332
+
333
+ const components = instance?.appContext.components;
334
+ if (components[name]) {
335
+ return components[name] as BladeInstanceConstructor<any>;
336
+ } else {
337
+ throw new Error("Blade not found");
338
+ }
339
339
  }
340
340
 
341
341
  return {
@@ -1,17 +1,23 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { ComponentPublicInstance, VNode, ComponentInternalInstance, VNodeTypes, Ref } from "vue";
3
-
4
- export type BladeInstanceConstructor<T extends ComponentPublicInstance = ComponentPublicInstance> = {
5
- new (...args: any[]): T & { $: ComponentInternalInstance & { exposed: CoreBladeExposed & T["$"]["exposed"] } } & {
6
- $props: T["$props"] & CoreBladeComponentProps;
7
- };
8
- } & CoreComponentData &
9
- CoreBladeAdditionalSettings &
10
- CoreBladeNavigationData;
11
-
12
- export type ComponentInstanceConstructor<T = any> = {
13
- new (...args: any[]): T;
14
- };
2
+ import {
3
+ AppContext,
4
+ Component,
5
+ ComponentOptionsBase,
6
+ ComponentOptionsMixin,
7
+ ComponentPublicInstance,
8
+ ComputedOptions,
9
+ VNode,
10
+ ComponentInternalInstance,
11
+ VNodeTypes,
12
+ Ref,
13
+ MethodOptions,
14
+ } from "vue";
15
+ import { ComponentPublicInstanceConstructor } from "../../../utilities/vueUtils";
16
+
17
+ /**
18
+ * @deprecated use `ComponentPublicInstanceConstructor` interface instead
19
+ */
20
+ export type ComponentInstanceConstructor<T = any> = ComponentPublicInstanceConstructor<T>;
15
21
 
16
22
  export type CoreBladeComponentProps = {
17
23
  expanded?: boolean;
@@ -20,16 +26,24 @@ export type CoreBladeComponentProps = {
20
26
  options?: Record<string, any>;
21
27
  };
22
28
 
23
- export type BladePageComponent = BladeConstructor;
29
+ export type CoreDynamicBladeComponentProps = {
30
+ model?: any;
31
+ composables?: any;
32
+ };
33
+
34
+ /**
35
+ * @deprecated use `BladeInstanceConstructor` interface instead
36
+ */
37
+ export type BladePageComponent = BladeInstanceConstructor;
24
38
 
25
39
  export type CoreComponentData = {
26
40
  isBladeComponent?: boolean;
27
- isWorkspace?: boolean;
28
41
  };
29
42
 
30
43
  export type CoreBladeAdditionalSettings = {
31
44
  url?: `/${string}`;
32
45
  permissions?: string | string[];
46
+ isWorkspace?: boolean;
33
47
  };
34
48
 
35
49
  export type CoreBladeNavigationData = {
@@ -56,15 +70,33 @@ export interface IBladeContainer extends IBladeEvent {
56
70
 
57
71
  export interface BladeComponentInternalInstance extends ComponentInternalInstance {
58
72
  vnode: VNode & { type: VNodeTypes & CoreBladeAdditionalSettings & CoreBladeNavigationData };
73
+ appContext: AppContext & { components: Record<string, BladeInstanceConstructor> };
59
74
  }
60
75
 
61
76
  export type ExtractedBladeOptions<T, U extends keyof T> = T[U];
62
77
 
78
+ /**
79
+ * @deprecated use `BladeInstanceConstructor` interface instead
80
+ */
63
81
  export type BladeConstructor<T extends ComponentPublicInstance = ComponentPublicInstance> = BladeInstanceConstructor<T>;
64
82
 
65
- export interface IBladeEvent<T extends ComponentPublicInstance = ComponentPublicInstance> {
66
- blade?: BladeConstructor<T>;
67
- options?: ExtractedBladeOptions<InstanceType<BladeConstructor<T>>["$props"], "options">;
83
+ type Extractor<T> = Extract<T, ComponentPublicInstanceConstructor>;
84
+
85
+ export type BladeInstanceConstructor<T extends Component = Component> = Extractor<T> & {
86
+ new (...args: any[]): InstanceType<Extractor<T>> & {
87
+ $: ComponentInternalInstance & {
88
+ exposed: CoreBladeExposed | InstanceType<Extractor<T>>["$"]["exposed"];
89
+ };
90
+ $props: InstanceType<Extractor<T>>["$props"] & CoreBladeComponentProps;
91
+ };
92
+ } & ComponentOptionsBase<any, any, any, any, ComponentOptionsMixin, ComponentOptionsMixin, any, any, any> &
93
+ CoreComponentData &
94
+ CoreBladeAdditionalSettings &
95
+ CoreBladeNavigationData;
96
+
97
+ export interface IBladeEvent<T extends Component = Component> {
98
+ blade: BladeInstanceConstructor<T>;
99
+ options?: ExtractedBladeOptions<InstanceType<BladeInstanceConstructor<T>>["$props"], "options">;
68
100
  param?: string;
69
101
  onOpen?: () => void;
70
102
  onClose?: () => void;
@@ -4,7 +4,7 @@
4
4
  :title="t('COMPONENTS.CHANGE_PASSWORD.TITLE')"
5
5
  @close="$emit('close')"
6
6
  >
7
- <div class="tw-p-3">
7
+ <div class="change-password tw-p-3 tw-overflow-scroll">
8
8
  <VcForm>
9
9
  <Field
10
10
  v-slot="{ field, errorMessage, errors }"
@@ -144,10 +144,10 @@ const isDisabled = computed(() => {
144
144
 
145
145
  async function changePassword() {
146
146
  const result = await changeUserPassword(form.currentPassword, form.password);
147
- if (result.succeeded) {
147
+ if (result?.succeeded) {
148
148
  emit("close");
149
- } else {
150
- form.errors = result.errors;
149
+ } else if (result?.errors) {
150
+ form.errors = result?.errors;
151
151
  form.isValid = form.errors.length == 0;
152
152
  }
153
153
  }
@@ -155,7 +155,7 @@ async function changePassword() {
155
155
  function validate() {
156
156
  nextTick(async () => {
157
157
  if (form.password || form.confirmPassword) {
158
- form.errors = (await validatePassword(form.password)).errors;
158
+ form.errors = (await validatePassword(form.password)).errors ?? [];
159
159
  if (form.confirmPassword !== form.password) {
160
160
  (form.errors as IIdentityError[]).push({ code: "Repeat-password" });
161
161
  }
@@ -167,3 +167,30 @@ function validate() {
167
167
  });
168
168
  }
169
169
  </script>
170
+
171
+ <style lang="scss">
172
+ :root {
173
+ --change-password-scroll-color: #e1eff9;
174
+ --change-password-scroll-color-hover: #cce4f5;
175
+ --change-password-scroll-width: 8px;
176
+ --change-password-scroll-padding: 8px;
177
+ --change-password-scroll-shadow: 0 3px 2px rgba(0, 0, 0, 0.1) inset, 0 -3px 2px rgba(0, 0, 0, 0.1) inset;
178
+ }
179
+
180
+ .change-password {
181
+ &::-webkit-scrollbar {
182
+ @apply tw-w-[var(--change-password-scroll-width)] tw-bg-transparent;
183
+ }
184
+
185
+ &::-webkit-scrollbar-track {
186
+ @apply tw-bg-transparent;
187
+ }
188
+
189
+ &::-webkit-scrollbar-thumb {
190
+ @apply tw-bg-[color:var(--change-password-scroll-color)]
191
+ tw-rounded-[calc(var(--change-password-scroll-width)/2)]
192
+ tw-overflow-x-hidden
193
+ hover:tw-bg-[color:var(--change-password-scroll-color-hover)];
194
+ }
195
+ }
196
+ </style>
@@ -1,5 +1,5 @@
1
1
  import { useErrorHandler } from "./../../../core/composables";
2
- import { SetupContext, defineComponent, VNode } from "vue";
2
+ import { defineComponent, VNode } from "vue";
3
3
 
4
4
  export interface Props {
5
5
  capture?: boolean;
@@ -12,7 +12,7 @@ export interface Emits {
12
12
 
13
13
  export type Slots = {
14
14
  slots: {
15
- default: (args: { error: string; reset: () => void }) => VNode[];
15
+ default: (args: { error: string | null; reset: () => void }) => VNode[];
16
16
  };
17
17
  };
18
18
 
@@ -31,11 +31,11 @@ export default defineComponent({
31
31
  return true;
32
32
  },
33
33
  },
34
- setup(props, { slots }: SetupContext & Slots) {
34
+ setup(props, { slots }) {
35
35
  const { error, reset } = useErrorHandler(props.capture);
36
36
 
37
37
  return () =>
38
- slots.default({
38
+ slots.default?.({
39
39
  error: error.value,
40
40
  reset,
41
41
  });
@@ -27,7 +27,7 @@ interface IUseContainer {
27
27
  getAllNotifications(): NotificationOptions[];
28
28
  appendInstance(options: NotificationOptions): void;
29
29
  generateNotificationId(): string;
30
- getNotification(notificationId: string): NotificationOptions;
30
+ getNotification(notificationId: string | number): NotificationOptions | undefined;
31
31
  }
32
32
 
33
33
  const pending = reactive<PendingContainer>({ items: [] });
@@ -53,7 +53,7 @@ export function useContainer(): IUseContainer {
53
53
  function appendFromPending() {
54
54
  if (pending.items.length > 0) {
55
55
  const append = pending.items.shift();
56
- appendInstance(append?.notificationProps);
56
+ if (append?.notificationProps) appendInstance(append?.notificationProps);
57
57
  }
58
58
  }
59
59
 
@@ -7,7 +7,7 @@ interface IUseInstance {
7
7
  clearContainer(): void;
8
8
  }
9
9
 
10
- const containerInstance: Ref<App<Element>> = ref();
10
+ const containerInstance: Ref<App<Element> | undefined> = ref();
11
11
 
12
12
  export function useInstance(): IUseInstance {
13
13
  const { pending, notificationContainer } = useContainer();
@@ -21,7 +21,7 @@ export function useInstance(): IUseInstance {
21
21
 
22
22
  function unmountComponent() {
23
23
  try {
24
- containerInstance.value.unmount();
24
+ containerInstance.value?.unmount();
25
25
  document.getElementById("notification")?.remove();
26
26
  containerInstance.value = undefined;
27
27
  notificationContainer.value = [];
@@ -19,7 +19,7 @@ function checkPending(limit?: number) {
19
19
  }
20
20
 
21
21
  function resolvePending(options: InternalNotificationOptions) {
22
- if (checkPending(options.limit)) {
22
+ if (checkPending(options.limit) && options.notificationId) {
23
23
  pending.items.push({
24
24
  notificationId: options.notificationId,
25
25
  notificationProps: options,
@@ -89,7 +89,7 @@ notification.update = (notificationId: string | number, options: NotificationOpt
89
89
  const content = updatedOptions.content || item.content;
90
90
  delete updatedOptions.content;
91
91
 
92
- showNotification(content, updatedOptions);
92
+ if (content) showNotification(content, updatedOptions);
93
93
  }
94
94
  };
95
95
 
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <component
3
3
  :is="popup.component"
4
- v-for="popup in popupPlugin.popups"
4
+ v-for="popup in popupPlugin?.popups"
5
5
  :key="popup.id"
6
6
  v-bind="{ ...popup.props, ...popup.emits }"
7
- @close="() => popup.close()"
7
+ @close="() => popup.close?.()"
8
8
  >
9
9
  <template
10
10
  v-for="(slot, key) in popup.slots"
@@ -12,9 +12,10 @@ import {
12
12
  unref,
13
13
  DefineComponent,
14
14
  } from "vue";
15
- import { ComponentPublicInstanceConstructor, PopupPlugin, UsePopupInternal, UsePopupProps } from "./../../types";
15
+ import { PopupPlugin, UsePopupInternal, UsePopupProps } from "./../../types";
16
16
  import { popupPluginInstance } from "./../../plugin";
17
17
  import { useI18n } from "vue-i18n";
18
+ import { ComponentPublicInstanceConstructor } from "../../../../utilities/vueUtils";
18
19
 
19
20
  interface IUsePopup {
20
21
  open(): void;
@@ -29,12 +30,18 @@ export function usePopup<T extends ComponentPublicInstanceConstructor<any> = typ
29
30
  const { t } = useI18n({ useScope: "global" });
30
31
  const instance = getCurrentInstance();
31
32
  const popupInstance: PopupPlugin = (instance && inject("popupPlugin")) || popupPluginInstance;
32
- let rawPopup = createInstance(unref(options));
33
+ let rawPopup: UsePopupProps<DefineComponent> & UsePopupInternal;
34
+
35
+ if (options) {
36
+ rawPopup = createInstance(unref(options));
37
+ }
33
38
 
34
39
  watch(
35
40
  () => options,
36
41
  (newVal) => {
37
- rawPopup = createInstance(unref(newVal));
42
+ if (newVal) {
43
+ rawPopup = createInstance(unref(newVal));
44
+ }
38
45
  },
39
46
  { deep: true }
40
47
  );
@@ -46,7 +53,7 @@ export function usePopup<T extends ComponentPublicInstanceConstructor<any> = typ
46
53
  activeInstance = popupInstance;
47
54
  }
48
55
 
49
- activeInstance.popups.push(rawPopup || customInstance);
56
+ activeInstance?.popups.push(rawPopup || customInstance);
50
57
  }
51
58
 
52
59
  function close(customInstance?: UsePopupProps<DefineComponent>) {
@@ -54,8 +61,8 @@ export function usePopup<T extends ComponentPublicInstanceConstructor<any> = typ
54
61
  if (popupInstance) {
55
62
  activeInstance = popupInstance;
56
63
  }
57
- const index = activeInstance.popups.indexOf(rawPopup || customInstance);
58
- if (index !== -1) activeInstance.popups.splice(index, 1);
64
+ const index = activeInstance?.popups.indexOf(rawPopup || customInstance);
65
+ if (index !== undefined && index !== -1) activeInstance?.popups.splice(index, 1);
59
66
  }
60
67
 
61
68
  async function showConfirmation(message: string | Ref<string>): Promise<boolean> {
@@ -1,4 +1,5 @@
1
1
  import { Component, ComponentPublicInstance, DefineComponent, Slot as VueSlot } from "vue";
2
+ import { ComponentPublicInstanceConstructor } from "../../../utilities/vueUtils";
2
3
 
3
4
  export type RawProps<T extends ComponentPublicInstanceConstructor<any>> = Omit<
4
5
  InstanceType<T>["$props"],
@@ -20,13 +21,6 @@ export interface PopupPlugin {
20
21
  popups: Partial<UsePopupProps<DefineComponent> & UsePopupInternal>[];
21
22
  }
22
23
 
23
- export interface ComponentPublicInstanceConstructor<T extends ComponentPublicInstance> {
24
- __isFragment?: never;
25
- __isTeleport?: never;
26
- __isSuspense?: never;
27
- new (...args: unknown[]): T;
28
- }
29
-
30
24
  export interface UsePopupProps<T extends ComponentPublicInstanceConstructor<any>> {
31
25
  component: T;
32
26
  emits?: RawEmits<T>;
@@ -38,7 +38,7 @@
38
38
  v-for="(item, i) in menuItems"
39
39
  :key="`menu_item_${i}`"
40
40
  class="user-dropdown-button__menu-item"
41
- @click="item.hasOwnProperty('clickHandler') ? item.clickHandler() : null"
41
+ @click="item.hasOwnProperty('clickHandler') ? item.clickHandler?.() : null"
42
42
  >
43
43
  {{ item.title }}
44
44
  </div>