@vc-shell/framework 1.0.119 → 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 (354) hide show
  1. package/CHANGELOG.md +15 -5771
  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 +11021 -10956
  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 +2 -2
  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 +434 -34
  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 +61 -44
  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 +3 -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 +70 -70
  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 +30 -42
  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 +4 -15
  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-filter/vc-table-filter.vue.d.ts.map +1 -1
  261. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts +15 -15
  262. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  263. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +105 -105
  264. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  265. package/package.json +5 -5
  266. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +3 -3
  267. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +1 -1
  268. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +7 -7
  269. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +80 -80
  270. package/shared/components/blade-navigation/types/index.ts +50 -18
  271. package/shared/components/change-password/change-password.vue +32 -5
  272. package/shared/components/error-interceptor/interceptor.ts +4 -4
  273. package/shared/components/notifications/composables/useContainer/index.ts +2 -2
  274. package/shared/components/notifications/composables/useInstance/index.ts +2 -2
  275. package/shared/components/notifications/core/notification.ts +2 -2
  276. package/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue +2 -2
  277. package/shared/components/popup-handler/composables/usePopup/index.ts +13 -6
  278. package/shared/components/popup-handler/types/index.ts +1 -7
  279. package/shared/components/user-dropdown-button/user-dropdown-button.vue +1 -1
  280. package/shared/modules/assets/components/assets-details/assets-details.vue +12 -6
  281. package/shared/modules/assets/components/assets-details/index.ts +1 -3
  282. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +10 -10
  283. package/shared/modules/dynamic/components/FIELD_MAP.ts +4 -2
  284. package/shared/modules/dynamic/components/SchemaRender.ts +2 -2
  285. package/shared/modules/dynamic/components/factories.ts +24 -13
  286. package/shared/modules/dynamic/components/fields/Button.ts +3 -3
  287. package/shared/modules/dynamic/components/fields/Card.ts +30 -15
  288. package/shared/modules/dynamic/components/fields/Checkbox.ts +2 -2
  289. package/shared/modules/dynamic/components/fields/ContentField.ts +2 -2
  290. package/shared/modules/dynamic/components/fields/DynamicProperty.ts +19 -9
  291. package/shared/modules/dynamic/components/fields/Fieldset.ts +7 -4
  292. package/shared/modules/dynamic/components/fields/GalleryField.ts +42 -22
  293. package/shared/modules/dynamic/components/fields/ImageField.ts +2 -2
  294. package/shared/modules/dynamic/components/fields/InputCurrency.ts +8 -4
  295. package/shared/modules/dynamic/components/fields/InputField.ts +9 -9
  296. package/shared/modules/dynamic/components/fields/SelectField.ts +6 -3
  297. package/shared/modules/dynamic/components/fields/StatusField.ts +3 -3
  298. package/shared/modules/dynamic/components/fields/TextareaField.ts +41 -0
  299. package/shared/modules/dynamic/components/fields/ValidationField.ts +9 -9
  300. package/shared/modules/dynamic/components/fields/VideoField.ts +2 -5
  301. package/shared/modules/dynamic/components/fields/props.ts +1 -2
  302. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +18 -10
  303. package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +7 -6
  304. package/shared/modules/dynamic/factories/base/useListFactory.ts +4 -4
  305. package/shared/modules/dynamic/factories/types/index.ts +11 -9
  306. package/shared/modules/dynamic/helpers/nodeBuilder.ts +97 -34
  307. package/shared/modules/dynamic/helpers/override.ts +14 -27
  308. package/shared/modules/dynamic/helpers/safeIn.ts +6 -0
  309. package/shared/modules/dynamic/helpers/setters.ts +11 -2
  310. package/shared/modules/dynamic/helpers/toolbarReducer.ts +3 -3
  311. package/shared/modules/dynamic/helpers/unwrapInterpolation.ts +2 -1
  312. package/shared/modules/dynamic/index.ts +38 -29
  313. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +33 -31
  314. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +45 -33
  315. package/shared/modules/dynamic/types/index.ts +436 -34
  316. package/shared/modules/dynamic/types/models.ts +11 -3
  317. package/shared/pages/InvitePage/components/invite/Invite.vue +17 -19
  318. package/shared/pages/LoginPage/components/login/Login.vue +6 -8
  319. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +17 -19
  320. package/shared/utilities/assets.ts +6 -4
  321. package/shared/utilities/vueUtils.ts +46 -0
  322. package/ui/components/atoms/vc-checkbox/vc-checkbox.vue +8 -2
  323. package/ui/components/atoms/vc-status-icon/index.ts +1 -3
  324. package/ui/components/atoms/vc-video/vc-video.vue +1 -14
  325. package/ui/components/molecules/vc-code-editor/vc-code-editor.vue +1 -3
  326. package/ui/components/molecules/vc-editor/vc-editor.vue +13 -7
  327. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +14 -5
  328. package/ui/components/molecules/vc-field/vc-field.vue +1 -1
  329. package/ui/components/molecules/vc-input/vc-input.vue +4 -4
  330. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +11 -11
  331. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +1 -1
  332. package/ui/components/molecules/vc-notification/index.ts +1 -3
  333. package/ui/components/molecules/vc-notification/vc-notification.vue +6 -6
  334. package/ui/components/molecules/vc-select/vc-select.vue +6 -4
  335. package/ui/components/molecules/vc-textarea/index.ts +1 -10
  336. package/ui/components/molecules/vc-textarea/vc-textarea.vue +6 -1
  337. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +0 -1
  338. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +3 -3
  339. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue +7 -7
  340. package/ui/components/organisms/vc-app/vc-app.vue +11 -19
  341. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +2 -2
  342. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +2 -2
  343. package/ui/components/organisms/vc-blade/vc-blade.vue +1 -1
  344. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +3 -3
  345. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +1 -1
  346. package/ui/components/organisms/vc-gallery/vc-gallery.vue +29 -26
  347. package/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue +3 -16
  348. package/ui/components/organisms/vc-notification-dropdown/vc-notification-dropdown.vue +1 -1
  349. package/ui/components/organisms/vc-notification-template/index.ts +1 -3
  350. package/ui/components/organisms/vc-notification-template/vc-notification-template.vue +35 -17
  351. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +6 -6
  352. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +7 -5
  353. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +11 -16
  354. package/ui/components/organisms/vc-table/vc-table.vue +45 -42
@@ -7,6 +7,7 @@ import { setModel } from "./setters";
7
7
  import { unwrapInterpolation } from "./unwrapInterpolation";
8
8
  import { DetailsBladeContext } from "../factories";
9
9
  import * as _ from "lodash-es";
10
+ import { safeIn } from "./safeIn";
10
11
 
11
12
  function disabledHandler(
12
13
  disabled: { method?: string } | boolean,
@@ -14,8 +15,9 @@ function disabledHandler(
14
15
  ): boolean {
15
16
  if (!disabled) return false;
16
17
  if (typeof disabled === "boolean") return disabled;
17
- else if (typeof context.scope[disabled.method] === "function") return context.scope[disabled.method]();
18
- else if (context.scope[disabled.method]) return context.scope[disabled.method];
18
+ else if (disabled.method && typeof context.scope?.[disabled.method] === "function")
19
+ return context.scope[disabled.method]();
20
+ else if (disabled.method && context.scope?.[disabled.method]) return context.scope[disabled.method];
19
21
  return false;
20
22
  }
21
23
 
@@ -23,45 +25,100 @@ function nodeBuilder<
23
25
  Context extends Record<string, unknown>,
24
26
  BContext extends UnwrapNestedRefs<DetailsBladeContext>,
25
27
  FormData
26
- >(args: {
28
+ >({
29
+ controlSchema,
30
+ parentId,
31
+ internalContext,
32
+ bladeContext,
33
+ currentLocale,
34
+ formData,
35
+ }: {
27
36
  controlSchema: ControlSchema;
28
37
  parentId: string | number;
29
38
  internalContext: MaybeRef<Context>;
30
39
  bladeContext: BContext;
31
40
  currentLocale: MaybeRef<string>;
32
41
  formData: FormData;
33
- }): VNode | false {
34
- const { controlSchema, parentId, internalContext, bladeContext, currentLocale, formData } = args;
35
- if (!controlSchema) return false;
42
+ }): VNode {
43
+ if (!controlSchema) throw new Error("There is no controlSchema provided");
36
44
 
37
- const baseProps = reactive<IControlBaseProps>({
38
- key: `${parentId}`,
39
- label: controlSchema.label ? unref(unwrapInterpolation(controlSchema.label, toValue(internalContext))) : undefined,
40
- disabled:
41
- ("disabled" in bladeContext.scope && bladeContext.scope.disabled) ||
42
- disabledHandler("disabled" in controlSchema && controlSchema.disabled, bladeContext),
43
- name: controlSchema.id,
44
- rules: controlSchema.rules,
45
- placeholder: controlSchema.placeholder,
46
- required: controlSchema.rules?.required,
47
- modelValue: getModel(controlSchema.property, toValue(internalContext)),
48
- "onUpdate:modelValue": (e: unknown) => {
49
- setModel({ property: controlSchema.property, value: e, context: toValue(internalContext) });
50
-
51
- if (_.has(controlSchema, "update.method")) {
52
- controlSchema.update.method in bladeContext.scope &&
53
- typeof bladeContext.scope[controlSchema.update.method] === "function"
54
- ? bladeContext.scope[controlSchema.update.method](e, controlSchema.property, toValue(internalContext))
55
- : undefined;
45
+ const name = controlSchema.id;
46
+ const rules = (safeIn("rules", controlSchema) && controlSchema.rules) || undefined;
47
+ const placeholder = (safeIn("placeholder", controlSchema) && controlSchema.placeholder) || undefined;
48
+ const required = safeIn("rules", controlSchema) && controlSchema.rules?.required;
49
+
50
+ const contextProperty =
51
+ safeIn("property", controlSchema) &&
52
+ controlSchema.property &&
53
+ _.has(toValue(internalContext), controlSchema.property) &&
54
+ getModel(controlSchema.property, toValue(internalContext));
55
+
56
+ const scopedProperty =
57
+ safeIn("property", controlSchema) &&
58
+ controlSchema.property &&
59
+ bladeContext.scope &&
60
+ _.has(bladeContext.scope, controlSchema.property) &&
61
+ bladeContext.scope[controlSchema.property];
62
+
63
+ const modelValue = contextProperty || scopedProperty || undefined;
64
+
65
+ const tooltip = (safeIn("tooltip", controlSchema) && controlSchema.tooltip) || undefined;
66
+ const multilanguage = safeIn("multilanguage", controlSchema) && controlSchema.multilanguage;
67
+
68
+ const label =
69
+ safeIn("label", controlSchema) && controlSchema.label
70
+ ? unref(unwrapInterpolation(controlSchema.label, toValue(internalContext)))
71
+ : undefined;
72
+
73
+ const disabled =
74
+ (bladeContext.scope && safeIn("disabled", bladeContext.scope) && bladeContext.scope.disabled) ||
75
+ (safeIn("disabled", controlSchema) &&
76
+ controlSchema.disabled &&
77
+ disabledHandler(controlSchema.disabled, bladeContext));
78
+
79
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
+ const onUpdateModelValue = (e: any) => {
81
+ if (safeIn("property", controlSchema) && controlSchema.property) {
82
+ setModel({
83
+ property: controlSchema.property,
84
+ value: e,
85
+ context: toValue(internalContext),
86
+ scope: bladeContext.scope,
87
+ });
88
+
89
+ if (
90
+ safeIn("update", controlSchema) &&
91
+ controlSchema.update &&
92
+ safeIn("method", controlSchema.update) &&
93
+ bladeContext.scope
94
+ ) {
95
+ const updateMethod = controlSchema.update.method;
96
+ if (safeIn(updateMethod, bladeContext.scope) && typeof bladeContext.scope[updateMethod] === "function") {
97
+ bladeContext.scope[updateMethod](e, controlSchema.property, toValue(internalContext));
98
+ }
56
99
  }
57
- },
58
- tooltip: controlSchema.tooltip,
59
- multilanguage: controlSchema.multilanguage,
100
+ }
101
+ };
102
+
103
+ const baseProps: IControlBaseProps = reactive({
104
+ key: `${parentId}`,
105
+ label,
106
+ disabled,
107
+ name,
108
+ rules,
109
+ placeholder,
110
+ required,
111
+ modelValue,
112
+ "onUpdate:modelValue": onUpdateModelValue,
113
+ tooltip,
114
+ multilanguage,
60
115
  });
61
116
 
62
- const baseOptions = reactive<IControlBaseOptions>({
117
+ const baseOptions: IControlBaseOptions = reactive({
63
118
  visibility: computed(() =>
64
- controlSchema.visibility?.method ? bladeContext.scope[controlSchema.visibility?.method] : true
119
+ safeIn("visibility", controlSchema) && controlSchema.visibility?.method
120
+ ? bladeContext.scope?.[controlSchema.visibility?.method]
121
+ : true
65
122
  ),
66
123
  });
67
124
 
@@ -69,16 +126,21 @@ function nodeBuilder<
69
126
 
70
127
  const fieldsHandler = computed(() => {
71
128
  if (!("fields" in controlSchema)) return null;
72
- const fieldsModel = getModel(controlSchema.property, toValue(internalContext));
129
+
130
+ const fieldsModel =
131
+ safeIn("property", controlSchema) &&
132
+ controlSchema.property &&
133
+ getModel(controlSchema.property, toValue(internalContext));
73
134
 
74
135
  const model = toValue(fieldsModel);
136
+
75
137
  if (model && Array.isArray(model)) {
76
- return model.map((model: { [x: string]: unknown; id: string }) =>
138
+ return model.map((modelItem: { [x: string]: unknown; id: string }) =>
77
139
  controlSchema.fields.map((fieldItem) =>
78
140
  nodeBuilder({
79
141
  controlSchema: fieldItem,
80
- parentId: `fieldset-${fieldItem.id}-${model.id}`,
81
- internalContext: model,
142
+ parentId: `fieldset-${fieldItem.id}-${modelItem.id}`,
143
+ internalContext: modelItem,
82
144
  bladeContext,
83
145
  currentLocale,
84
146
  formData,
@@ -86,6 +148,7 @@ function nodeBuilder<
86
148
  )
87
149
  );
88
150
  }
151
+
89
152
  return [
90
153
  controlSchema.fields.map((field) =>
91
154
  nodeBuilder({
@@ -1,5 +1,5 @@
1
1
  import * as _ from "lodash-es";
2
- import { DynamicSchema, OverridesSchema, OverridesUpsert } from "../types";
2
+ import { DynamicSchema, OverridesSchema } from "../types";
3
3
 
4
4
  export const handleOverrides = (overrides: OverridesSchema, schemaCopy: { [key: string]: DynamicSchema }) => {
5
5
  let schema = _.cloneDeep(schemaCopy);
@@ -21,32 +21,19 @@ const upsertHelper = (overrides: OverridesSchema, schemaCopy: { [key: string]: D
21
21
  return Object.entries(schemaCopy).reduce((obj, [name, schema]) => {
22
22
  const clonedSchema = _.cloneDeep(schema);
23
23
  overrides.upsert
24
- .filter((x) => clonedSchema.settings.id === x.id)
25
- .forEach(
26
- ({
27
- index,
28
- path,
29
- value,
30
- id,
31
- }: {
32
- index: OverridesUpsert["index"];
33
- path: OverridesUpsert["path"];
34
- value: OverridesUpsert["value"];
35
- id: OverridesUpsert["id"];
36
- }) => {
37
- const valueByPath = _.get(clonedSchema, path);
38
- if (Array.isArray(valueByPath) && valueByPath.length && typeof value === "object") {
39
- const findIndex = _.findIndex(valueByPath, { id: value.id });
24
+ ?.filter((x) => clonedSchema.settings.id === x.id)
25
+ .forEach((args) => {
26
+ const valueByPath = _.get(clonedSchema, args.path);
27
+ if (Array.isArray(valueByPath) && valueByPath.length && typeof args.value === "object" && "index" in args) {
28
+ const findIndex = _.findIndex(valueByPath, { id: args.value.id });
40
29
 
41
- const spliced = valueByPath /* @ts-ignore */
42
- .toSpliced(findIndex >= 0 ? findIndex : index, findIndex >= 0 ? 1 : 0, value);
43
- _.set(clonedSchema, path, spliced);
44
- } else {
45
- _.set(clonedSchema, path, value);
46
- }
47
- },
48
- {}
49
- );
30
+ const spliced = valueByPath /* @ts-ignore */
31
+ .toSpliced(findIndex >= 0 ? findIndex : args.index, findIndex >= 0 ? 1 : 0, args.value);
32
+ _.set(clonedSchema, args.path, spliced);
33
+ } else {
34
+ _.set(clonedSchema, args.path, args.value);
35
+ }
36
+ }, {});
50
37
  obj[name] = clonedSchema;
51
38
  return obj;
52
39
  }, {} as Record<string, DynamicSchema>);
@@ -56,7 +43,7 @@ const removeHelper = (overrides: OverridesSchema, schemaCopy: { [key: string]: D
56
43
  return Object.entries(schemaCopy).reduce((obj, [name, schema]) => {
57
44
  const clonedSchema = _.cloneDeep(schema);
58
45
  overrides.remove
59
- .filter((x) => clonedSchema.settings.id === x.id)
46
+ ?.filter((x) => clonedSchema.settings.id === x.id)
60
47
  .forEach(({ path }) => {
61
48
  if (path) {
62
49
  const parentPath = path.slice(0, path.lastIndexOf("["));
@@ -0,0 +1,6 @@
1
+ type AllKeys<T> = T extends unknown ? keyof T : never;
2
+ type FilterByKnownKey<T, K extends PropertyKey> = T extends unknown ? (K extends keyof T ? T : never) : never;
3
+
4
+ export function safeIn<K extends AllKeys<T>, T extends object>(key: K, obj: T): obj is FilterByKnownKey<T, K> {
5
+ return key in obj ?? undefined;
6
+ }
@@ -6,10 +6,19 @@ function setModel(args: {
6
6
  value: string | number | Record<string, any>;
7
7
  option?: string;
8
8
  context: Record<string, any>;
9
+ scope?: Record<string, any>;
9
10
  }) {
10
- const { property, value, option, context } = args;
11
+ const { property, value, option, context, scope } = args;
11
12
 
12
- _.set(context, property, option ? value[option as keyof typeof value] : value);
13
+ if (_.has(context, property)) {
14
+ _.set(context, property, option ? value[option as keyof typeof value] : value);
15
+ } else if (scope && _.has(scope, property)) {
16
+ if (typeof scope[property] === "function") {
17
+ scope[property](value);
18
+ } else {
19
+ scope[property] = value;
20
+ }
21
+ }
13
22
  }
14
23
 
15
24
  export { setModel };
@@ -10,7 +10,7 @@ export const toolbarReducer = (args: {
10
10
  defaultToolbarBindings: BaseBladeScope["toolbarOverrides"];
11
11
  customToolbarConfig: BaseBladeScope["toolbarOverrides"];
12
12
  context: UnwrapNestedRefs<DetailsBladeContext> | UnwrapNestedRefs<ListBladeContext>;
13
- }): UnwrapNestedRefs<ComputedRef<IBladeToolbar[]>> => {
13
+ }): UnwrapNestedRefs<ComputedRef<IBladeToolbar[]>> | undefined => {
14
14
  if (!args) return;
15
15
  const toolbarMethodsMerge = _.merge(ref({}), ref(args.defaultToolbarBindings), ref(args.customToolbarConfig));
16
16
  return computed(() =>
@@ -27,7 +27,7 @@ export const toolbarReducer = (args: {
27
27
  : {
28
28
  ...toolbarItemCtx,
29
29
  clickHandler() {
30
- return toolbarItemCtx.clickHandler.call(null, args.context);
30
+ return toolbarItemCtx.clickHandler?.call(null, args.context);
31
31
  },
32
32
  };
33
33
 
@@ -38,6 +38,6 @@ export const toolbarReducer = (args: {
38
38
  }
39
39
 
40
40
  return acc;
41
- }, [])
41
+ }, [] as IBladeToolbar[])
42
42
  );
43
43
  };
@@ -1,6 +1,7 @@
1
1
  import { getModel } from "./getters";
2
2
 
3
- function unwrapInterpolation<T>(property: string, context: T) {
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ function unwrapInterpolation<T extends Record<string, any>>(property: string, context: T) {
4
5
  const pattern = /{(.*)}/g;
5
6
 
6
7
  const match = property.match(pattern);
@@ -6,24 +6,27 @@ import * as _ from "lodash-es";
6
6
  import { handleOverrides } from "./helpers/override";
7
7
  import { reactiveComputed } from "@vueuse/core";
8
8
  import { kebabToPascal } from "../../../core/utilities";
9
- import { BladeConstructor } from "../../index";
9
+ import { BladeInstanceConstructor } from "../../index";
10
10
  import { createAppModule } from "../../../core/plugins";
11
11
  import { BladeMenu, NavigationMenu } from "../../../core/types";
12
+ import { ComponentProps } from "./../../utilities/vueUtils";
12
13
 
13
14
  interface Registered {
14
- component: BladeConstructor;
15
+ component: BladeInstanceConstructor;
15
16
  name: string;
16
17
  model: DynamicSchema;
17
18
  }
18
19
 
19
20
  const createAppModuleWrapper = (args: {
20
21
  bladeName: string;
21
- bladeComponent: BladeConstructor;
22
- appModuleContent: {
23
- locales?: { [key: string]: object };
24
- notificationTemplates?: { [key: string]: Component };
25
- moduleComponents?: { [key: string]: Component };
26
- };
22
+ bladeComponent: BladeInstanceConstructor;
23
+ appModuleContent:
24
+ | {
25
+ locales?: { [key: string]: object };
26
+ notificationTemplates?: { [key: string]: Component };
27
+ moduleComponents?: { [key: string]: Component };
28
+ }
29
+ | undefined;
27
30
  }) => {
28
31
  const { bladeName, bladeComponent, appModuleContent } = args;
29
32
  return createAppModule(
@@ -37,16 +40,18 @@ const createAppModuleWrapper = (args: {
37
40
  const register = (
38
41
  args: {
39
42
  app: App;
40
- component: BladeConstructor;
43
+ component: BladeInstanceConstructor;
41
44
  composables: { [key: string]: (...args: any[]) => any };
42
45
  json: DynamicSchema;
43
46
  options?: { router: any };
44
47
  },
45
- appModuleContent: {
46
- locales?: { [key: string]: object };
47
- notificationTemplates?: { [key: string]: Component };
48
- moduleComponents?: { [key: string]: Component };
49
- }
48
+ appModuleContent:
49
+ | {
50
+ locales?: { [key: string]: object };
51
+ notificationTemplates?: { [key: string]: Component };
52
+ moduleComponents?: { [key: string]: Component };
53
+ }
54
+ | undefined
50
55
  ): Registered => {
51
56
  const { app, component, json, options } = args;
52
57
  const bladeComponent = _.cloneDeep(component);
@@ -63,31 +68,33 @@ const register = (
63
68
  bladeComponent.permissions = json.settings.permissions;
64
69
  }
65
70
 
66
- const defineBladeComponent = defineComponent({
71
+ const BladeInstanceConstructor = defineComponent({
67
72
  ...bladeComponent,
68
73
  name: bladeName,
69
74
  isWorkspace: "isWorkspace" in json.settings && json.settings.isWorkspace,
70
- setup: (props, ctx) =>
71
- (bladeComponent as DefineComponent).setup(
72
- reactiveComputed(() => ({
73
- ...props,
74
- model: json,
75
- composables: args.composables,
76
- })),
77
- reactiveComputed(() => ctx)
78
- ),
75
+ setup: (props: ComponentProps<typeof bladeComponent>, ctx) =>
76
+ (bladeComponent?.setup &&
77
+ bladeComponent.setup(
78
+ reactiveComputed(() => ({
79
+ ...props,
80
+ model: json,
81
+ composables: args.composables,
82
+ })) as any,
83
+ reactiveComputed(() => ctx) as any
84
+ )) ??
85
+ {},
79
86
  });
80
87
 
81
88
  const module = createAppModuleWrapper({
82
89
  bladeName,
83
- bladeComponent: defineBladeComponent,
90
+ bladeComponent: BladeInstanceConstructor,
84
91
  appModuleContent,
85
92
  });
86
93
 
87
94
  module.install(app, options);
88
95
 
89
96
  return {
90
- component: defineBladeComponent,
97
+ component: BladeInstanceConstructor,
91
98
  name: bladeName,
92
99
  model: json,
93
100
  };
@@ -111,7 +118,7 @@ export const createDynamicAppModule = <T extends BladeMenu>(args: {
111
118
  notificationTemplates?: { [key: string]: Component };
112
119
  }) => {
113
120
  const moduleInitializer = _.findKey(args.schema, (o) => "isWorkspace" in o.settings && o.settings.isWorkspace);
114
- const everyHasTemplate = _.every(Object.values(args.schema), (o) => o.settings.component);
121
+ const everyHasTemplate = _.every(Object.values(args.schema), (o) => o?.settings?.component);
115
122
 
116
123
  if (!everyHasTemplate) handleError("component", args.schema, "must be included in 'settings' of every file");
117
124
  if (!moduleInitializer)
@@ -136,11 +143,13 @@ export const createDynamicAppModule = <T extends BladeMenu>(args: {
136
143
  notificationTemplates: args?.notificationTemplates,
137
144
  moduleComponents: args?.moduleComponents,
138
145
  };
139
- Object.entries(schemaCopy).forEach(([JsonName, JsonSchema], index) => {
146
+ Object.entries(schemaCopy).forEach(([, JsonSchema], index) => {
140
147
  const blade = register(
141
148
  {
142
149
  app,
143
- component: bladePages[JsonSchema.settings.component as keyof typeof bladePages],
150
+ component: bladePages[
151
+ JsonSchema.settings.component as keyof typeof bladePages
152
+ ] as BladeInstanceConstructor,
144
153
  composables: { ...args.composables },
145
154
  json: JsonSchema,
146
155
  options,
@@ -35,7 +35,7 @@
35
35
  v-model="item"
36
36
  :ui-schema="form.children"
37
37
  :context="bladeContext"
38
- :current-locale="scope.multilanguage?.currentLocale"
38
+ :current-locale="scope?.multilanguage?.currentLocale"
39
39
  ></SchemaRender>
40
40
  </VcForm>
41
41
  </div>
@@ -72,12 +72,11 @@ import {
72
72
  unref,
73
73
  watch,
74
74
  onBeforeMount,
75
- UnwrapRef,
75
+ ComputedRef,
76
+ type Component,
76
77
  } from "vue";
77
- import { DynamicDetailsSchema, FormContentSchema } from "../types";
78
- import { reactiveComputed } from "@vueuse/core";
79
- import * as _ from "lodash-es";
80
- import { IBladeToolbar } from "../../../../core/types";
78
+ import { DynamicDetailsSchema, FormContentSchema, SettingsSchema } from "../types";
79
+ import { reactiveComputed, useMounted } from "@vueuse/core";
81
80
  import { DetailsBladeContext, DetailsBaseBladeScope, IParentCallArgs, UseDetails, usePopup } from "../../../index";
82
81
  import SchemaRender from "../components/SchemaRender";
83
82
  import { VcSelect } from "../../../../ui/components";
@@ -116,15 +115,15 @@ const { t } = useI18n({ useScope: "global" });
116
115
 
117
116
  const { showConfirmation } = usePopup();
118
117
 
119
- const { loading, item, validationState, scope, load, remove, saveChanges, bladeTitle } = props.composables[
120
- props.model?.settings?.composable
121
- ]({ emit, props }) as UseDetails<Record<string, any>, DetailsBaseBladeScope>;
118
+ const { loading, item, validationState, scope, load, remove, saveChanges, bladeTitle } = props.composables?.[
119
+ props.model?.settings?.composable ?? ""
120
+ ]({ emit, props, mounted: useMounted() }) as UseDetails<Record<string, any>, DetailsBaseBladeScope>;
122
121
 
123
122
  const title = ref();
124
123
  const isReady = ref(false);
125
124
 
126
125
  const unwatchTitle = watch(
127
- () => bladeTitle.value,
126
+ () => bladeTitle?.value,
128
127
  (newVal) => {
129
128
  if (newVal) {
130
129
  title.value = newVal;
@@ -138,10 +137,10 @@ const unwatchTitle = watch(
138
137
  const settings = computed(() => props.model?.settings);
139
138
 
140
139
  const form = computed(
141
- (): FormContentSchema => props.model?.content.find((x) => x.component === "vc-form") as FormContentSchema
140
+ (): FormContentSchema => props.model?.content.find((x) => x?.component === "vc-form") as FormContentSchema
142
141
  );
143
142
 
144
- const widgets = computed(() => props.model.content.find((x) => x.component === "vc-widgets"));
143
+ const widgets = computed(() => props.model?.content.find((x) => x?.component === "vc-widgets"));
145
144
 
146
145
  const bladeContext = ref<DetailsBladeContext>({
147
146
  loading,
@@ -152,11 +151,11 @@ const bladeContext = ref<DetailsBladeContext>({
152
151
  remove,
153
152
  saveChanges,
154
153
  bladeTitle,
155
- settings,
154
+ settings: settings as ComputedRef<SettingsSchema>,
156
155
  });
157
156
 
158
157
  const bladeStatus = computed(() => {
159
- if ("status" in props.model.settings && props.model.settings.status) {
158
+ if (props.model && "status" in props.model.settings && props.model.settings.status) {
160
159
  if (!("component" in props.model.settings.status))
161
160
  throw new Error(`Component is required in status: ${props.model.settings.status}`);
162
161
  return reactive(h(resolveComponent(props.model.settings.status.component), { context: bladeContext.value }));
@@ -166,23 +165,24 @@ const bladeStatus = computed(() => {
166
165
  });
167
166
 
168
167
  const bladeMultilanguage = reactiveComputed(() => {
169
- if ("multilanguage" in toValue(scope) && toValue(scope).multilanguage) {
168
+ if (scope && "multilanguage" in toValue(scope) && toValue(scope).multilanguage) {
170
169
  return {
171
- component: () =>
172
- h(VcSelect as any, {
170
+ component: () => {
171
+ return h(VcSelect as Component, {
173
172
  name: "currentLocale",
174
- modelValue: toValue(scope).multilanguage.currentLocale,
175
- options: toValue(scope).multilanguage.localesOptions,
173
+ modelValue: toValue(scope).multilanguage?.currentLocale,
174
+ options: toValue(scope).multilanguage?.localesOptions,
176
175
  optionValue: "value",
177
176
  optionLabel: "label",
178
177
  disabled: "disabled" in toValue(scope) && toValue(scope).disabled,
179
178
  required: true,
180
179
  clearable: false,
181
180
  "onUpdate:modelValue": (e: string) => {
182
- toValue(scope).multilanguage.setLocale(e);
181
+ toValue(scope).multilanguage?.setLocale(e);
183
182
  },
184
- }),
185
- currentLocale: toValue(scope).multilanguage.currentLocale,
183
+ });
184
+ },
185
+ currentLocale: toValue(scope).multilanguage?.currentLocale,
186
186
  };
187
187
  }
188
188
 
@@ -202,17 +202,19 @@ const bladeOptions = reactive({
202
202
  });
203
203
 
204
204
  const toolbarComputed = toolbarReducer({
205
- defaultToolbarSchema: settings.value.toolbar,
205
+ defaultToolbarSchema: settings.value?.toolbar ?? [],
206
206
  defaultToolbarBindings: {
207
207
  saveChanges: {
208
208
  async clickHandler() {
209
- await saveChanges(item.value);
209
+ if (item.value) {
210
+ await saveChanges(item.value);
210
211
 
211
- emit("parent:call", {
212
- method: "reload",
213
- });
214
- if (!props.param) {
215
- emit("close:blade");
212
+ emit("parent:call", {
213
+ method: "reload",
214
+ });
215
+ if (!props.param) {
216
+ emit("close:blade");
217
+ }
216
218
  }
217
219
  },
218
220
  disabled: computed(() => !validationState.value.validated),
@@ -225,7 +227,7 @@ const toolbarComputed = toolbarReducer({
225
227
  )
226
228
  ) {
227
229
  if (props.param) {
228
- await remove({ id: props.param });
230
+ await remove?.({ id: props.param });
229
231
  emit("parent:call", {
230
232
  method: "reload",
231
233
  });
@@ -263,7 +265,7 @@ async function onBeforeClose() {
263
265
  defineExpose({
264
266
  title: bladeTitle,
265
267
  onBeforeClose,
266
- ...scope.value,
268
+ ...scope?.value,
267
269
  });
268
270
  </script>
269
271