@vc-shell/framework 1.0.109 → 1.0.111

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 (423) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/core/composables/useApiClient/index.ts +1 -1
  3. package/core/composables/useAsync/index.ts +2 -2
  4. package/core/composables/usePermissions/index.ts +7 -18
  5. package/core/composables/useUser/index.ts +13 -11
  6. package/core/directives/loading/index.ts +5 -27
  7. package/core/directives/loading/styles.css +38 -0
  8. package/core/plugins/modularity/index.ts +41 -14
  9. package/core/plugins/permissions/index.ts +3 -3
  10. package/core/plugins/validation/rules.ts +24 -7
  11. package/core/types/index.ts +36 -3
  12. package/dist/core/composables/useApiClient/index.d.ts +1 -1
  13. package/dist/core/composables/useApiClient/index.d.ts.map +1 -1
  14. package/dist/core/composables/useAsync/index.d.ts +1 -1
  15. package/dist/core/composables/useAsync/index.d.ts.map +1 -1
  16. package/dist/core/composables/useI18n/index.d.ts +1 -1
  17. package/dist/core/composables/useI18n/index.d.ts.map +1 -1
  18. package/dist/core/composables/usePermissions/index.d.ts +1 -2
  19. package/dist/core/composables/usePermissions/index.d.ts.map +1 -1
  20. package/dist/core/composables/useUser/index.d.ts +1 -0
  21. package/dist/core/composables/useUser/index.d.ts.map +1 -1
  22. package/dist/core/directives/loading/index.d.ts +3 -2
  23. package/dist/core/directives/loading/index.d.ts.map +1 -1
  24. package/dist/core/plugins/modularity/index.d.ts +13 -4
  25. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  26. package/dist/core/plugins/validation/rules.d.ts.map +1 -1
  27. package/dist/core/types/index.d.ts +41 -2
  28. package/dist/core/types/index.d.ts.map +1 -1
  29. package/dist/framework.mjs +30057 -27524
  30. package/dist/index.css +1 -1
  31. package/dist/index.d.ts +1 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts +14 -23
  34. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
  35. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts +28 -25
  36. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  37. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  38. package/dist/shared/components/blade-navigation/types/index.d.ts +5 -2
  39. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  40. package/dist/shared/components/change-password/change-password.vue.d.ts.map +1 -1
  41. package/dist/shared/components/error-interceptor/index.d.ts +3 -3
  42. package/dist/shared/components/language-selector/language-selector.vue.d.ts +41 -26
  43. package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
  44. package/dist/shared/components/notifications/components/notification-container/index.d.ts +12 -12
  45. package/dist/shared/components/notifications/components/notification-container/index.d.ts.map +1 -1
  46. package/dist/shared/components/notifications/composables/useContainer/index.d.ts.map +1 -1
  47. package/dist/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue.d.ts.map +1 -1
  48. package/dist/shared/components/popup-handler/composables/usePopup/index.d.ts.map +1 -1
  49. package/dist/shared/components/user-dropdown-button/index.d.ts +11 -11
  50. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +35 -22
  51. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  52. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts +39 -28
  53. package/dist/shared/modules/assets/components/assets-details/assets-details.vue.d.ts.map +1 -1
  54. package/dist/shared/modules/assets/components/assets-details/index.d.ts +13 -13
  55. package/dist/shared/modules/assets/index.d.ts +3 -1
  56. package/dist/shared/modules/assets/index.d.ts.map +1 -1
  57. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts +42 -29
  58. package/dist/shared/modules/assets-manager/components/assets-manager/assets-manager.vue.d.ts.map +1 -1
  59. package/dist/shared/modules/assets-manager/components/assets-manager/index.d.ts +9 -9
  60. package/dist/shared/modules/assets-manager/index.d.ts +3 -1
  61. package/dist/shared/modules/assets-manager/index.d.ts.map +1 -1
  62. package/dist/shared/modules/dynamic/components/FIELD_MAP.d.ts +2204 -0
  63. package/dist/shared/modules/dynamic/components/FIELD_MAP.d.ts.map +1 -0
  64. package/dist/shared/modules/dynamic/components/SchemaRender.d.ts +220 -0
  65. package/dist/shared/modules/dynamic/components/SchemaRender.d.ts.map +1 -0
  66. package/dist/shared/modules/dynamic/components/factories.d.ts +15 -0
  67. package/dist/shared/modules/dynamic/components/factories.d.ts.map +1 -0
  68. package/dist/shared/modules/dynamic/components/fields/Button.d.ts +131 -0
  69. package/dist/shared/modules/dynamic/components/fields/Button.d.ts.map +1 -0
  70. package/dist/shared/modules/dynamic/components/fields/Card.d.ts +131 -0
  71. package/dist/shared/modules/dynamic/components/fields/Card.d.ts.map +1 -0
  72. package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts +131 -0
  73. package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts.map +1 -0
  74. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts +130 -0
  75. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts.map +1 -0
  76. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +128 -0
  77. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts.map +1 -0
  78. package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts +131 -0
  79. package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts.map +1 -0
  80. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts +132 -0
  81. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts.map +1 -0
  82. package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts +131 -0
  83. package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts.map +1 -0
  84. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts +131 -0
  85. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts.map +1 -0
  86. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts +131 -0
  87. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts.map +1 -0
  88. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts +131 -0
  89. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts.map +1 -0
  90. package/dist/shared/modules/dynamic/components/fields/ValidationField.d.ts +13 -0
  91. package/dist/shared/modules/dynamic/components/fields/ValidationField.d.ts.map +1 -0
  92. package/dist/shared/modules/dynamic/components/fields/props.d.ts +124 -0
  93. package/dist/shared/modules/dynamic/components/fields/props.d.ts.map +1 -0
  94. package/dist/shared/modules/dynamic/components/index.d.ts +4 -0
  95. package/dist/shared/modules/dynamic/components/index.d.ts.map +1 -0
  96. package/dist/shared/modules/dynamic/composables/index.d.ts +2 -0
  97. package/dist/shared/modules/dynamic/composables/index.d.ts.map +1 -0
  98. package/dist/shared/modules/dynamic/composables/useFilterBuilder/index.d.ts +35 -0
  99. package/dist/shared/modules/dynamic/composables/useFilterBuilder/index.d.ts.map +1 -0
  100. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts +8 -0
  101. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts.map +1 -0
  102. package/dist/shared/modules/dynamic/factories/base/useListFactory.d.ts +22 -0
  103. package/dist/shared/modules/dynamic/factories/base/useListFactory.d.ts.map +1 -0
  104. package/dist/shared/modules/dynamic/factories/index.d.ts +4 -0
  105. package/dist/shared/modules/dynamic/factories/index.d.ts.map +1 -0
  106. package/dist/shared/modules/dynamic/factories/types/index.d.ts +101 -0
  107. package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -0
  108. package/dist/shared/modules/dynamic/helpers/getters.d.ts +2 -0
  109. package/dist/shared/modules/dynamic/helpers/getters.d.ts.map +1 -0
  110. package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts +13 -0
  111. package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts.map +1 -0
  112. package/dist/shared/modules/dynamic/helpers/override.d.ts +7 -0
  113. package/dist/shared/modules/dynamic/helpers/override.d.ts.map +1 -0
  114. package/dist/shared/modules/dynamic/helpers/setters.d.ts +8 -0
  115. package/dist/shared/modules/dynamic/helpers/setters.d.ts.map +1 -0
  116. package/dist/shared/modules/dynamic/helpers/toolbarReducer.d.ts +11 -0
  117. package/dist/shared/modules/dynamic/helpers/toolbarReducer.d.ts.map +1 -0
  118. package/dist/shared/modules/dynamic/helpers/unrefNested.d.ts +2 -0
  119. package/dist/shared/modules/dynamic/helpers/unrefNested.d.ts.map +1 -0
  120. package/dist/shared/modules/dynamic/helpers/unwrapInterpolation.d.ts +3 -0
  121. package/dist/shared/modules/dynamic/helpers/unwrapInterpolation.d.ts.map +1 -0
  122. package/dist/shared/modules/dynamic/index.d.ts +32 -0
  123. package/dist/shared/modules/dynamic/index.d.ts.map +1 -0
  124. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +68 -0
  125. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -0
  126. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts +79 -0
  127. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -0
  128. package/dist/shared/modules/dynamic/pages/index.d.ts +4 -0
  129. package/dist/shared/modules/dynamic/pages/index.d.ts.map +1 -0
  130. package/dist/shared/modules/dynamic/types/index.d.ts +250 -0
  131. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -0
  132. package/dist/shared/modules/dynamic/types/models.d.ts +93 -0
  133. package/dist/shared/modules/dynamic/types/models.d.ts.map +1 -0
  134. package/dist/shared/modules/index.d.ts +1 -0
  135. package/dist/shared/modules/index.d.ts.map +1 -1
  136. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
  137. package/dist/shared/pages/InvitePage/index.d.ts +0 -3
  138. package/dist/shared/pages/InvitePage/index.d.ts.map +1 -1
  139. package/dist/shared/pages/InvitePage/plugin.d.ts +4 -0
  140. package/dist/shared/pages/InvitePage/plugin.d.ts.map +1 -0
  141. package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts +45 -9
  142. package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -1
  143. package/dist/shared/pages/LoginPage/components/login/index.d.ts +14 -0
  144. package/dist/shared/pages/LoginPage/components/login/index.d.ts.map +1 -1
  145. package/dist/shared/pages/LoginPage/index.d.ts +0 -1
  146. package/dist/shared/pages/LoginPage/index.d.ts.map +1 -1
  147. package/dist/shared/pages/LoginPage/plugin.d.ts +1 -3
  148. package/dist/shared/pages/LoginPage/plugin.d.ts.map +1 -1
  149. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
  150. package/dist/shared/pages/ResetPasswordPage/index.d.ts +0 -3
  151. package/dist/shared/pages/ResetPasswordPage/index.d.ts.map +1 -1
  152. package/dist/shared/pages/ResetPasswordPage/plugin.d.ts +4 -0
  153. package/dist/shared/pages/ResetPasswordPage/plugin.d.ts.map +1 -0
  154. package/dist/shared/pages/index.d.ts +0 -6
  155. package/dist/shared/pages/index.d.ts.map +1 -1
  156. package/dist/shared/pages/plugin.d.ts +4 -0
  157. package/dist/shared/pages/plugin.d.ts.map +1 -0
  158. package/dist/tsconfig.tsbuildinfo +1 -1
  159. package/dist/ui/components/atoms/index.d.ts +1 -0
  160. package/dist/ui/components/atoms/index.d.ts.map +1 -1
  161. package/dist/ui/components/atoms/vc-badge/index.d.ts +4 -4
  162. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts +22 -11
  163. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  164. package/dist/ui/components/atoms/vc-button/index.d.ts +1 -208
  165. package/dist/ui/components/atoms/vc-button/index.d.ts.map +1 -1
  166. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts +75 -27
  167. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
  168. package/dist/ui/components/atoms/vc-card/index.d.ts +32 -38
  169. package/dist/ui/components/atoms/vc-card/index.d.ts.map +1 -1
  170. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts +46 -27
  171. package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
  172. package/dist/ui/components/atoms/vc-checkbox/index.d.ts +72 -38
  173. package/dist/ui/components/atoms/vc-checkbox/index.d.ts.map +1 -1
  174. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox.vue.d.ts +69 -28
  175. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  176. package/dist/ui/components/atoms/vc-col/index.d.ts +1 -1
  177. package/dist/ui/components/atoms/vc-col/vc-col.vue.d.ts +11 -22
  178. package/dist/ui/components/atoms/vc-col/vc-col.vue.d.ts.map +1 -1
  179. package/dist/ui/components/atoms/vc-container/index.d.ts +5 -5
  180. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts +22 -11
  181. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts.map +1 -1
  182. package/dist/ui/components/atoms/vc-hint/index.d.ts +1 -1
  183. package/dist/ui/components/atoms/vc-hint/vc-hint.vue.d.ts.map +1 -1
  184. package/dist/ui/components/atoms/vc-icon/index.d.ts +13 -7
  185. package/dist/ui/components/atoms/vc-icon/index.d.ts.map +1 -1
  186. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts +28 -26
  187. package/dist/ui/components/atoms/vc-icon/vc-icon.vue.d.ts.map +1 -1
  188. package/dist/ui/components/atoms/vc-image/index.d.ts +16 -16
  189. package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts +54 -29
  190. package/dist/ui/components/atoms/vc-image/vc-image.vue.d.ts.map +1 -1
  191. package/dist/ui/components/atoms/vc-info-row/index.d.ts +9 -9
  192. package/dist/ui/components/atoms/vc-info-row/vc-info-row.vue.d.ts +30 -23
  193. package/dist/ui/components/atoms/vc-info-row/vc-info-row.vue.d.ts.map +1 -1
  194. package/dist/ui/components/atoms/vc-label/index.d.ts +33 -39
  195. package/dist/ui/components/atoms/vc-label/index.d.ts.map +1 -1
  196. package/dist/ui/components/atoms/vc-label/vc-label.vue.d.ts +33 -26
  197. package/dist/ui/components/atoms/vc-label/vc-label.vue.d.ts.map +1 -1
  198. package/dist/ui/components/atoms/vc-link/index.d.ts +4 -4
  199. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts +22 -11
  200. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  201. package/dist/ui/components/atoms/vc-loading/vc-loading.vue.d.ts +9 -10
  202. package/dist/ui/components/atoms/vc-loading/vc-loading.vue.d.ts.map +1 -1
  203. package/dist/ui/components/atoms/vc-progress/index.d.ts +1 -1
  204. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts +19 -24
  205. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  206. package/dist/ui/components/atoms/vc-row/index.d.ts +1 -1
  207. package/dist/ui/components/atoms/vc-row/vc-row.vue.d.ts.map +1 -1
  208. package/dist/ui/components/atoms/vc-status/index.d.ts +1 -142
  209. package/dist/ui/components/atoms/vc-status/index.d.ts.map +1 -1
  210. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts +29 -28
  211. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  212. package/dist/ui/components/atoms/vc-status-icon/vc-status-icon.vue.d.ts +9 -10
  213. package/dist/ui/components/atoms/vc-status-icon/vc-status-icon.vue.d.ts.map +1 -1
  214. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts +36 -11
  215. package/dist/ui/components/atoms/vc-switch/vc-switch.vue.d.ts.map +1 -1
  216. package/dist/ui/components/atoms/vc-video/index.d.ts +54 -0
  217. package/dist/ui/components/atoms/vc-video/index.d.ts.map +1 -0
  218. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts +67 -0
  219. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -0
  220. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts +28 -11
  221. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts.map +1 -1
  222. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts +5 -3
  223. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts.map +1 -1
  224. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts +23 -22
  225. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  226. package/dist/ui/components/molecules/vc-code-editor/index.d.ts +28 -28
  227. package/dist/ui/components/molecules/vc-code-editor/vc-code-editor.vue.d.ts +48 -23
  228. package/dist/ui/components/molecules/vc-code-editor/vc-code-editor.vue.d.ts.map +1 -1
  229. package/dist/ui/components/molecules/vc-editor/index.d.ts +1 -226
  230. package/dist/ui/components/molecules/vc-editor/index.d.ts.map +1 -1
  231. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +74 -28
  232. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  233. package/dist/ui/components/molecules/vc-file-upload/index.d.ts +23 -23
  234. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts +46 -27
  235. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  236. package/dist/ui/components/molecules/vc-form/index.d.ts +1 -1
  237. package/dist/ui/components/molecules/vc-form/vc-form.vue.d.ts.map +1 -1
  238. package/dist/ui/components/molecules/vc-input/index.d.ts +1 -390
  239. package/dist/ui/components/molecules/vc-input/index.d.ts.map +1 -1
  240. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts +181 -41
  241. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  242. package/dist/ui/components/molecules/vc-input-currency/index.d.ts +90 -90
  243. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts +143 -30
  244. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.vue.d.ts.map +1 -1
  245. package/dist/ui/components/molecules/vc-multivalue/index.d.ts +74 -10
  246. package/dist/ui/components/molecules/vc-multivalue/index.d.ts.map +1 -1
  247. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts +74 -10
  248. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
  249. package/dist/ui/components/molecules/vc-notification/vc-notification.vue.d.ts +51 -10
  250. package/dist/ui/components/molecules/vc-notification/vc-notification.vue.d.ts.map +1 -1
  251. package/dist/ui/components/molecules/vc-pagination/index.d.ts +6 -6
  252. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts +26 -25
  253. package/dist/ui/components/molecules/vc-pagination/vc-pagination.vue.d.ts.map +1 -1
  254. package/dist/ui/components/molecules/vc-rating/index.d.ts +19 -19
  255. package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts +46 -25
  256. package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts.map +1 -1
  257. package/dist/ui/components/molecules/vc-select/index.d.ts +65 -103
  258. package/dist/ui/components/molecules/vc-select/index.d.ts.map +1 -1
  259. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +65 -479
  260. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  261. package/dist/ui/components/molecules/vc-slider/index.d.ts +21 -21
  262. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts +39 -26
  263. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
  264. package/dist/ui/components/molecules/vc-textarea/index.d.ts +40 -40
  265. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts +74 -25
  266. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  267. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts +35 -12
  268. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  269. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts +40 -23
  270. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
  271. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue.d.ts +47 -28
  272. 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
  273. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts +31 -28
  274. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  275. package/dist/ui/components/organisms/vc-app/index.d.ts +67 -67
  276. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +86 -37
  277. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  278. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts +44 -11
  279. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  280. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts +61 -34
  281. 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
  282. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts +13 -22
  283. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  284. package/dist/ui/components/organisms/vc-blade/index.d.ts +39 -39
  285. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts +62 -31
  286. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
  287. package/dist/ui/components/organisms/vc-dynamic-property/index.d.ts +1 -140
  288. package/dist/ui/components/organisms/vc-dynamic-property/index.d.ts.map +1 -1
  289. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts +64 -75
  290. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
  291. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts +58 -35
  292. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts.map +1 -1
  293. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts +22 -25
  294. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
  295. package/dist/ui/components/organisms/vc-gallery/index.d.ts +37 -31
  296. package/dist/ui/components/organisms/vc-gallery/index.d.ts.map +1 -1
  297. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts +130 -46
  298. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts.map +1 -1
  299. package/dist/ui/components/organisms/vc-login-form/index.d.ts +9 -9
  300. package/dist/ui/components/organisms/vc-login-form/vc-login-form.vue.d.ts +23 -22
  301. package/dist/ui/components/organisms/vc-login-form/vc-login-form.vue.d.ts.map +1 -1
  302. package/dist/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue.d.ts +28 -22
  303. package/dist/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue.d.ts.map +1 -1
  304. package/dist/ui/components/organisms/vc-notification-dropdown/index.d.ts +0 -6
  305. package/dist/ui/components/organisms/vc-notification-dropdown/index.d.ts.map +1 -1
  306. package/dist/ui/components/organisms/vc-notification-dropdown/vc-notification-dropdown.vue.d.ts +36 -10
  307. package/dist/ui/components/organisms/vc-notification-dropdown/vc-notification-dropdown.vue.d.ts.map +1 -1
  308. package/dist/ui/components/organisms/vc-notification-template/index.d.ts +4 -4
  309. package/dist/ui/components/organisms/vc-notification-template/vc-notification-template.vue.d.ts +27 -10
  310. package/dist/ui/components/organisms/vc-notification-template/vc-notification-template.vue.d.ts.map +1 -1
  311. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-error/vc-popup-error.vue.d.ts.map +1 -1
  312. package/dist/ui/components/organisms/vc-popup/_internal/vc-popup-warning/vc-popup-warning.vue.d.ts.map +1 -1
  313. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts +38 -31
  314. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts.map +1 -1
  315. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts +18 -9
  316. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  317. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts +12 -19
  318. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
  319. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts +23 -24
  320. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts.map +1 -1
  321. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +29 -26
  322. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  323. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts +14 -14
  324. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  325. package/dist/ui/components/organisms/vc-table/index.d.ts +1 -214
  326. package/dist/ui/components/organisms/vc-table/index.d.ts.map +1 -1
  327. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +90 -105
  328. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  329. package/package.json +9 -8
  330. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +2 -2
  331. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +16 -14
  332. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +37 -30
  333. package/shared/components/blade-navigation/types/index.ts +7 -3
  334. package/shared/components/notifications/composables/useContainer/index.ts +2 -5
  335. package/shared/components/popup-handler/composables/usePopup/index.ts +0 -2
  336. package/shared/modules/assets/components/assets-details/assets-details.vue +6 -6
  337. package/shared/modules/assets/index.ts +2 -2
  338. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +3 -3
  339. package/shared/modules/assets-manager/index.ts +2 -2
  340. package/shared/modules/dynamic/components/FIELD_MAP.ts +27 -0
  341. package/shared/modules/dynamic/components/SchemaRender.ts +81 -0
  342. package/shared/modules/dynamic/components/factories.ts +159 -0
  343. package/shared/modules/dynamic/components/fields/Button.ts +31 -0
  344. package/shared/modules/dynamic/components/fields/Card.ts +86 -0
  345. package/shared/modules/dynamic/components/fields/Checkbox.ts +44 -0
  346. package/shared/modules/dynamic/components/fields/DynamicProperty.ts +99 -0
  347. package/shared/modules/dynamic/components/fields/EditorField.ts +43 -0
  348. package/shared/modules/dynamic/components/fields/Fieldset.ts +77 -0
  349. package/shared/modules/dynamic/components/fields/GalleryField.ts +121 -0
  350. package/shared/modules/dynamic/components/fields/InputCurrency.ts +49 -0
  351. package/shared/modules/dynamic/components/fields/InputField.ts +42 -0
  352. package/shared/modules/dynamic/components/fields/SelectField.ts +55 -0
  353. package/shared/modules/dynamic/components/fields/StatusField.ts +55 -0
  354. package/shared/modules/dynamic/components/fields/ValidationField.ts +53 -0
  355. package/shared/modules/dynamic/components/fields/props.ts +52 -0
  356. package/shared/modules/dynamic/components/index.ts +4 -0
  357. package/shared/modules/dynamic/composables/index.ts +1 -0
  358. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +235 -0
  359. package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +83 -0
  360. package/shared/modules/dynamic/factories/base/useListFactory.ts +68 -0
  361. package/shared/modules/dynamic/factories/index.ts +4 -0
  362. package/shared/modules/dynamic/factories/types/index.ts +103 -0
  363. package/shared/modules/dynamic/helpers/getters.ts +10 -0
  364. package/shared/modules/dynamic/helpers/nodeBuilder.ts +112 -0
  365. package/shared/modules/dynamic/helpers/override.ts +70 -0
  366. package/shared/modules/dynamic/helpers/setters.ts +15 -0
  367. package/shared/modules/dynamic/helpers/toolbarReducer.ts +41 -0
  368. package/shared/modules/dynamic/helpers/unrefNested.ts +14 -0
  369. package/shared/modules/dynamic/helpers/unwrapInterpolation.ts +15 -0
  370. package/shared/modules/dynamic/index.ts +163 -0
  371. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +292 -0
  372. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +437 -0
  373. package/shared/modules/dynamic/pages/index.ts +4 -0
  374. package/shared/modules/dynamic/types/index.ts +287 -0
  375. package/shared/modules/dynamic/types/models.ts +140 -0
  376. package/shared/modules/index.ts +1 -0
  377. package/shared/pages/InvitePage/index.ts +0 -6
  378. package/shared/pages/InvitePage/plugin.ts +5 -0
  379. package/shared/pages/LoginPage/components/login/Login.vue +5 -6
  380. package/shared/pages/LoginPage/index.ts +0 -1
  381. package/shared/pages/LoginPage/plugin.ts +1 -13
  382. package/shared/pages/ResetPasswordPage/index.ts +0 -6
  383. package/shared/pages/ResetPasswordPage/plugin.ts +5 -0
  384. package/shared/pages/index.ts +0 -9
  385. package/shared/pages/plugin.ts +3 -0
  386. package/ui/components/atoms/index.ts +1 -0
  387. package/ui/components/atoms/vc-button/index.ts +1 -10
  388. package/ui/components/atoms/vc-button/vc-button.vue +8 -2
  389. package/ui/components/atoms/vc-card/index.ts +1 -9
  390. package/ui/components/atoms/vc-card/vc-card.vue +6 -1
  391. package/ui/components/atoms/vc-checkbox/index.ts +1 -9
  392. package/ui/components/atoms/vc-checkbox/vc-checkbox.vue +32 -10
  393. package/ui/components/atoms/vc-icon/vc-icon.vue +16 -3
  394. package/ui/components/atoms/vc-label/index.ts +1 -9
  395. package/ui/components/atoms/vc-label/vc-label.vue +5 -0
  396. package/ui/components/atoms/vc-status/index.ts +1 -10
  397. package/ui/components/atoms/vc-status/vc-status.vue +5 -1
  398. package/ui/components/atoms/vc-video/index.ts +3 -0
  399. package/ui/components/atoms/vc-video/vc-video.vue +102 -0
  400. package/ui/components/atoms/vc-widget/vc-widget.vue +1 -1
  401. package/ui/components/molecules/vc-editor/index.ts +1 -10
  402. package/ui/components/molecules/vc-editor/vc-editor.vue +16 -0
  403. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +4 -4
  404. package/ui/components/molecules/vc-input/index.ts +1 -60
  405. package/ui/components/molecules/vc-input/vc-input.vue +112 -37
  406. package/ui/components/molecules/vc-input-currency/vc-input-currency.stories.ts +1 -1
  407. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +21 -17
  408. package/ui/components/molecules/vc-select/index.ts +1 -1
  409. package/ui/components/molecules/vc-select/vc-select.stories.ts +1 -1
  410. package/ui/components/molecules/vc-select/vc-select.vue +11 -37
  411. package/ui/components/organisms/vc-dynamic-property/index.ts +1 -3
  412. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +199 -257
  413. package/ui/components/organisms/vc-gallery/vc-gallery.vue +9 -7
  414. package/ui/components/organisms/vc-notification-dropdown/_internal/notification/notification.vue +10 -1
  415. package/ui/components/organisms/vc-notification-dropdown/vc-notification-dropdown.vue +1 -10
  416. package/ui/components/organisms/vc-table/index.ts +1 -3
  417. package/ui/components/organisms/vc-table/vc-table.stories.ts +3 -3
  418. package/ui/components/organisms/vc-table/vc-table.vue +29 -16
  419. package/core/api/catalog.ts +0 -8527
  420. package/dist/core/api/catalog.d.ts +0 -2522
  421. package/dist/core/api/catalog.d.ts.map +0 -1
  422. package/dist/typings/index.d.ts +0 -8
  423. package/dist/typings/index.d.ts.map +0 -1
@@ -0,0 +1,437 @@
1
+ <template>
2
+ <VcBlade
3
+ :expanded="expanded"
4
+ :closable="closable"
5
+ width="50%"
6
+ :toolbar-items="toolbarComputed"
7
+ :title="title"
8
+ @close="$emit('close:blade')"
9
+ @expand="$emit('expand:blade')"
10
+ @collapse="$emit('collapse:blade')"
11
+ >
12
+ <VcTable
13
+ class="tw-grow tw-basis-0"
14
+ :loading="loading"
15
+ :expanded="expanded"
16
+ v-bind="bladeOptions?.table"
17
+ :state-key="tableData?.id"
18
+ :items="items"
19
+ :multiselect="tableData?.multiselect"
20
+ :header="tableData?.header"
21
+ :sort="sort"
22
+ :pages="pagination?.pages"
23
+ :current-page="pagination?.currentPage"
24
+ :search-value="searchValue"
25
+ :selected-item-id="selectedItemId"
26
+ :total-label="$t(`${settings.localizationPrefix.trim().toUpperCase()}.PAGES.LIST.TABLE.TOTALS`)"
27
+ :total-count="pagination?.totalCount"
28
+ :active-filter-count="activeFilterCount"
29
+ @item-click="onItemClick"
30
+ @pagination-click="onPaginationClick"
31
+ @selection-changed="onSelectionChanged"
32
+ @header-click="onHeaderClick"
33
+ @load:change="onSearchList"
34
+ @scroll:ptr="reload"
35
+ @search:change="onSearchList"
36
+ >
37
+ <template
38
+ v-if="isFilterVisible"
39
+ #filters="{ closePanel }"
40
+ >
41
+ <filterComponent :close="closePanel" />
42
+ </template>
43
+
44
+ <!-- Not found template -->
45
+ <template #notfound>
46
+ <template v-if="bladeOptions.notFound">
47
+ <component
48
+ :is="bladeOptions.notFound"
49
+ @reset="resetSearch"
50
+ ></component>
51
+ </template>
52
+ <template v-else>
53
+ <div class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center">
54
+ <div class="tw-m-4 tw-text-xl tw-font-medium">
55
+ {{ $t(`${settings.localizationPrefix.trim().toUpperCase()}.PAGES.LIST.NOT_FOUND.EMPTY`) }}
56
+ </div>
57
+ <VcButton
58
+ v-if="isFilterVisible"
59
+ @click="resetSearch"
60
+ >{{ $t(`${settings.localizationPrefix.trim().toUpperCase()}.PAGES.LIST.NOT_FOUND.RESET`) }}</VcButton
61
+ >
62
+ </div>
63
+ </template>
64
+ </template>
65
+
66
+ <!-- Empty template -->
67
+ <template #empty>
68
+ <template v-if="bladeOptions.empty">
69
+ <component :is="bladeOptions.empty"></component>
70
+ </template>
71
+ <template v-else>
72
+ <div class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center">
73
+ <div class="tw-m-4 tw-text-xl tw-font-medium">
74
+ {{ $t(`${settings.localizationPrefix.trim().toUpperCase()}.PAGES.LIST.EMPTY.NO_ITEMS`) }}
75
+ </div>
76
+ </div>
77
+ </template>
78
+ </template>
79
+
80
+ <!-- Override table templates-->
81
+ <template
82
+ v-for="(component, key, index) in bladeOptions?.templateOverrideComponents"
83
+ #[`item_${key}`]="itemData"
84
+ :key="`template_override_${index}`"
85
+ >
86
+ <component
87
+ :is="component"
88
+ :context="itemData"
89
+ />
90
+ </template>
91
+
92
+ <!-- Override table mobile view -->
93
+
94
+ <template
95
+ v-if="bladeOptions.mobileView"
96
+ #mobile-item="itemData"
97
+ >
98
+ <component
99
+ :is="bladeOptions.mobileView"
100
+ :context="itemData"
101
+ ></component>
102
+ </template>
103
+ </VcTable>
104
+ </VcBlade>
105
+ </template>
106
+ <script setup lang="ts">
107
+ /* eslint-disable @typescript-eslint/no-explicit-any */
108
+ import {
109
+ Ref,
110
+ VNode,
111
+ computed,
112
+ inject,
113
+ onMounted,
114
+ reactive,
115
+ ref,
116
+ resolveComponent,
117
+ shallowRef,
118
+ toValue,
119
+ unref,
120
+ watch,
121
+ UnwrapRef,
122
+ } from "vue";
123
+ import { useI18n } from "vue-i18n";
124
+ import { DynamicGridSchema, ListContentSchema } from "../types";
125
+ import { useFilterBuilder } from "../composables";
126
+ import * as _ from "lodash-es";
127
+ import { useFunctions } from "../../../../core/composables";
128
+ import { IBladeToolbar, ITableColumns } from "../../../../core/types";
129
+ import { ListBladeContext, UseList, usePopup, ListBaseBladeScope } from "../../../index";
130
+ import { toolbarReducer } from "../helpers/toolbarReducer";
131
+
132
+ export interface Props {
133
+ expanded?: boolean;
134
+ closable?: boolean;
135
+ param?: string;
136
+ options?: unknown;
137
+ model?: DynamicGridSchema;
138
+ composables?: Record<string, (...args: any[]) => Record<string, any>>;
139
+ }
140
+
141
+ export interface Emits {
142
+ (event: "close:blade"): void;
143
+ (event: "collapse:blade"): void;
144
+ (event: "expand:blade"): void;
145
+ (event: "close:children"): void;
146
+ }
147
+
148
+ const props = withDefaults(defineProps<Props>(), {
149
+ expanded: true,
150
+ closable: true,
151
+ param: undefined,
152
+ });
153
+
154
+ const { t } = useI18n({ useScope: "global" });
155
+ const { showConfirmation } = usePopup();
156
+ const { debounce } = useFunctions();
157
+ const emit = defineEmits<Emits>();
158
+
159
+ defineOptions({
160
+ isBladeComponent: true,
161
+ });
162
+
163
+ const settings = computed(() => props.model?.settings);
164
+ const title = computed(() => settings.value?.titleTemplate);
165
+ const allSelected = ref(false);
166
+ const searchValue = ref();
167
+ const selectedItemId = ref();
168
+ const sort = ref("createdDate:DESC");
169
+ const selectedIds = ref<string[]>([]);
170
+ const isDesktop = inject<Ref<boolean>>("isDesktop");
171
+
172
+ const tableData = computed(() => props.model?.content.find((type: ListContentSchema) => type.component === "vc-table"));
173
+ const table = computed(() => {
174
+ const tableScope = {
175
+ columns: tableData.value?.columns,
176
+ };
177
+
178
+ return tableScope;
179
+ });
180
+
181
+ const bladeOptions = reactive({
182
+ tableData,
183
+ table,
184
+ templateOverrideComponents: templateOverrideComponents(),
185
+ mobileView: resolveTemplateComponent("mobileTemplate"),
186
+ notFound: resolveTemplateComponent("notFoundTemplate"),
187
+ empty: resolveTemplateComponent("emptyTemplate"),
188
+ });
189
+
190
+ const { load, remove, items, loading, pagination, query, scope } = props.composables[props.model?.settings?.composable](
191
+ {
192
+ emit,
193
+ props,
194
+ }
195
+ ) as UseList<Record<string, any>[], Record<string, any>, ListBaseBladeScope>;
196
+
197
+ const {
198
+ filterComponent,
199
+ activeFilterCount,
200
+ isFilterVisible,
201
+ reset: resetFilters,
202
+ filter,
203
+ } = useFilterBuilder({
204
+ data: bladeOptions.tableData?.filter,
205
+ query,
206
+ load,
207
+ });
208
+
209
+ const bladeContext = ref<ListBladeContext>({
210
+ load,
211
+ remove,
212
+ items,
213
+ loading,
214
+ pagination,
215
+ query,
216
+ scope,
217
+ settings,
218
+ });
219
+
220
+ const toolbarComputed = toolbarReducer({
221
+ defaultToolbarSchema: settings.value.toolbar,
222
+ defaultToolbarBindings: {
223
+ openAddBlade: {
224
+ async clickHandler() {
225
+ if (
226
+ "openDetailsBlade" in toValue(scope) &&
227
+ toValue(scope).openDetailsBlade &&
228
+ typeof toValue(scope).openDetailsBlade === "function"
229
+ ) {
230
+ toValue(scope).openDetailsBlade();
231
+ }
232
+ },
233
+ },
234
+ refresh: {
235
+ async clickHandler() {
236
+ await reload();
237
+ },
238
+ },
239
+ removeItems: {
240
+ async clickHandler() {
241
+ removeItems();
242
+ },
243
+ disabled: computed(() => !selectedIds.value?.length),
244
+ isVisible: isDesktop.value,
245
+ },
246
+ },
247
+ customToolbarConfig: toValue(scope)?.toolbarOverrides,
248
+ context: bladeContext.value,
249
+ });
250
+
251
+ onMounted(async () => {
252
+ await load({ ...query.value, sort: sort.value });
253
+ });
254
+
255
+ watch(sort, async (value) => {
256
+ await load({ ...query.value, sort: value });
257
+ });
258
+
259
+ watch(
260
+ () => props.param,
261
+ (newVal) => {
262
+ if (newVal) {
263
+ if (
264
+ "openDetailsBlade" in toValue(scope) &&
265
+ toValue(scope).openDetailsBlade &&
266
+ typeof toValue(scope).openDetailsBlade === "function"
267
+ ) {
268
+ toValue(scope).openDetailsBlade({
269
+ param: newVal,
270
+ onOpen() {
271
+ selectedItemId.value = newVal;
272
+ },
273
+ onClose() {
274
+ selectedItemId.value = undefined;
275
+ },
276
+ });
277
+ }
278
+ }
279
+ },
280
+ { immediate: true }
281
+ );
282
+
283
+ const onItemClick = (item: { id: string }) => {
284
+ if (
285
+ "openDetailsBlade" in toValue(scope) &&
286
+ toValue(scope).openDetailsBlade &&
287
+ typeof toValue(scope).openDetailsBlade === "function"
288
+ ) {
289
+ toValue(scope).openDetailsBlade({
290
+ param: item.id,
291
+ onOpen() {
292
+ selectedItemId.value = item.id;
293
+ },
294
+ onClose() {
295
+ selectedItemId.value = undefined;
296
+ },
297
+ });
298
+ }
299
+ };
300
+
301
+ const onSelectionChanged = (i: UnwrapRef<typeof items>) => {
302
+ const item = unref(i)
303
+ .map((item) => item.id)
304
+ .filter((x): x is string => x !== null);
305
+
306
+ selectedIds.value = item;
307
+ };
308
+
309
+ async function removeItems() {
310
+ if (
311
+ await showConfirmation(
312
+ t(`${settings.value.localizationPrefix.trim().toUpperCase()}.PAGES.LIST.DELETE_SELECTED_CONFIRMATION.MESSAGE`, {
313
+ count: allSelected.value
314
+ ? t(`${settings.value.localizationPrefix.trim().toUpperCase()}.PAGES.LIST.DELETE_SELECTED_CONFIRMATION.ALL`, {
315
+ totalCount: pagination.value.totalCount,
316
+ })
317
+ : selectedIds.value.length,
318
+ })
319
+ )
320
+ ) {
321
+ emit("close:children");
322
+ await remove({ allSelected: allSelected.value, ids: selectedIds.value });
323
+ if (query.value.skip && query.value.take) {
324
+ if (query.value.skip >= query.value.take) {
325
+ if (allSelected.value) {
326
+ query.value.skip = 0;
327
+ } else {
328
+ query.value.skip -= query.value.take;
329
+ }
330
+ }
331
+ }
332
+ await reload();
333
+ }
334
+ }
335
+
336
+ const reload = async () => {
337
+ selectedIds.value = [];
338
+ if (query.value.take) {
339
+ await load({
340
+ ...query.value,
341
+ skip: (pagination.value.currentPage - 1) * query.value.take,
342
+ sort: sort.value,
343
+ });
344
+ }
345
+ };
346
+
347
+ const onPaginationClick = async (page: number) => {
348
+ if (query.value.take) {
349
+ await load({
350
+ ...query.value,
351
+ skip: (page - 1) * query.value.take,
352
+ });
353
+ }
354
+ };
355
+
356
+ const onHeaderClick = (item: ITableColumns) => {
357
+ const sortOptions = ["DESC", "ASC", ""];
358
+
359
+ if (item.sortable) {
360
+ if (sort.value.split(":")[0] === item.id) {
361
+ const index = sortOptions.findIndex((x) => {
362
+ const sorting = sort.value.split(":")[1];
363
+ if (sorting) {
364
+ return x === sorting;
365
+ } else {
366
+ return x === "";
367
+ }
368
+ });
369
+
370
+ if (index !== -1) {
371
+ const newSort = sortOptions[(index + 1) % sortOptions.length];
372
+
373
+ if (newSort === "") {
374
+ sort.value = `${item.id}`;
375
+ } else {
376
+ sort.value = `${item.id}:${newSort}`;
377
+ }
378
+ }
379
+ } else {
380
+ sort.value = `${item.id}:${sortOptions[0]}`;
381
+ }
382
+ }
383
+ };
384
+ const onSearchList = debounce(async (keyword: string) => {
385
+ searchValue.value = keyword;
386
+ await load({
387
+ ...query.value,
388
+ keyword,
389
+ });
390
+ }, 1000);
391
+
392
+ async function resetSearch() {
393
+ searchValue.value = "";
394
+ await resetFilters();
395
+ await load({
396
+ ...query.value,
397
+ ...filter,
398
+ keyword: "",
399
+ });
400
+ }
401
+
402
+ function templateOverrideComponents(): Record<string, VNode> {
403
+ return {
404
+ ...table.value.columns?.reduce((acc, curr) => {
405
+ if ("customTemplate" in curr) {
406
+ if (!("component" in curr.customTemplate)) {
407
+ throw new Error(
408
+ `Component name must be provided in 'customTemplate' property, column: ${JSON.stringify(curr)}`
409
+ );
410
+ } else {
411
+ const component = resolveComponent(curr.customTemplate.component);
412
+
413
+ if (typeof component !== "string") {
414
+ acc[curr.id] = shallowRef(component);
415
+ }
416
+ }
417
+ }
418
+ return acc;
419
+ }, {}),
420
+ };
421
+ }
422
+
423
+ function resolveTemplateComponent(name: string) {
424
+ if (!tableData.value) return;
425
+ const componentName = tableData[name]?.component;
426
+ if (componentName) {
427
+ const component = resolveComponent(componentName);
428
+
429
+ if (component && typeof component !== "string") return shallowRef(component);
430
+ }
431
+ }
432
+
433
+ defineExpose({
434
+ reload,
435
+ title,
436
+ });
437
+ </script>
@@ -0,0 +1,4 @@
1
+ import { default as DynamicBladeList } from "./dynamic-blade-list.vue";
2
+ import { default as DynamicBladeForm } from "./dynamic-blade-form.vue";
3
+
4
+ export { DynamicBladeList, DynamicBladeForm };
@@ -0,0 +1,287 @@
1
+ import { VcButton, VcIcon, VcInput, VcStatus } from "./../../../../ui/components";
2
+ import { ITableColumns, IValidationRules } from "../../../../core/types";
3
+ import type { ComponentProps, ComponentEmit, ComponentSlots } from "vue-component-type-helpers";
4
+
5
+ export type KeysOfUnion<T> = T extends T ? keyof T : never;
6
+
7
+ export type Composable<T> = T[keyof T];
8
+
9
+ export type DynamicSchema = DynamicGridSchema | DynamicDetailsSchema;
10
+
11
+ export interface DynamicGridSchema {
12
+ /**
13
+ * @description Blade settings
14
+ */
15
+ settings: SettingsSchema;
16
+ content: [ListContentSchema];
17
+ }
18
+
19
+ export interface DynamicDetailsSchema {
20
+ /**
21
+ * @description Blade settings
22
+ */
23
+ settings: SettingsSchema;
24
+ /**
25
+ * @description Blade content
26
+ */
27
+ content: [FormContentSchema, WidgetsSchema?];
28
+ }
29
+
30
+ export type SettingsSchema = SettingsWorkspace | SettingsDetails;
31
+
32
+ export interface SettingsWorkspace extends SettingsBase {
33
+ isWorkspace: boolean;
34
+ }
35
+
36
+ export interface SettingsDetails extends SettingsBase {
37
+ status?: {
38
+ component: string;
39
+ };
40
+ }
41
+
42
+ export interface SettingsBase {
43
+ /**
44
+ * @description Blade url
45
+ */
46
+ url?: string;
47
+ /**
48
+ * @description Locale key for VueI18n locale files
49
+ */
50
+ localizationPrefix: string;
51
+ /**
52
+ * @description Required component id
53
+ */
54
+ id: string;
55
+ /**
56
+ * @description Blade default header title
57
+ */
58
+ titleTemplate: string;
59
+ /**
60
+ * @description Composable to use at {@link SettingsBase.model } blade component view
61
+ */
62
+ composable: string;
63
+ /**
64
+ * @description Toolbar items array
65
+ * @default 'save', 'delete' in {@link SettingsDetails}
66
+ * @default 'refresh', 'add' in {@link SettingsWorkspace}
67
+ */
68
+ toolbar: {
69
+ id: string;
70
+ title: string;
71
+ icon: string;
72
+ method: string;
73
+ }[];
74
+ /**
75
+ * @description Blade component
76
+ */
77
+ component: string;
78
+ /**
79
+ * @description Blade permissions
80
+ */
81
+ permissions?: string | string[];
82
+ }
83
+
84
+ export interface ListContentSchema extends SchemaBase {
85
+ component: "vc-table";
86
+ filter?: FilterSchema;
87
+ multiselect?: boolean;
88
+ header?: boolean;
89
+ columns?: (ITableColumns & {
90
+ id: string;
91
+ title: string;
92
+ sortable?: boolean;
93
+ alwaysVisible?: boolean;
94
+ type?: string;
95
+ customTemplate?: GridTemplateOverride;
96
+ })[];
97
+ mobileTemplate?: {
98
+ component: string;
99
+ };
100
+ notFoundTemplate?: {
101
+ component: string;
102
+ };
103
+ emptyTemplate?: {
104
+ component: string;
105
+ };
106
+ }
107
+
108
+ export interface FormContentSchema extends SchemaBase {
109
+ component: "vc-form";
110
+ children: ControlSchema[];
111
+ }
112
+
113
+ export interface GridTemplateOverride {
114
+ component?: string;
115
+ }
116
+
117
+ export interface VisibilityOptions {
118
+ method: string;
119
+ }
120
+ export interface SchemaBase {
121
+ id: string;
122
+ label?: string;
123
+ property?: string;
124
+ rules?: IValidationRules;
125
+ placeholder?: string;
126
+ disabled?: { method: string };
127
+ tooltip?: string;
128
+ visibility?: VisibilityOptions;
129
+ multilanguage?: boolean;
130
+ update?: { method: string };
131
+ }
132
+
133
+ export interface SelectSchema extends SchemaBase {
134
+ component: "vc-select";
135
+ optionValue: string;
136
+ optionLabel: string;
137
+ optionsMethod: string;
138
+ customTemplate?: {
139
+ component: string;
140
+ };
141
+ clearable?: boolean;
142
+ emitValue?: boolean;
143
+ }
144
+
145
+ export interface InputSchema extends SchemaBase {
146
+ component: "vc-input";
147
+ variant?: ComponentProps<typeof VcInput>["type"];
148
+ clearable?: boolean;
149
+ }
150
+
151
+ export interface StatusSchema extends SchemaBase {
152
+ component: "vc-status";
153
+ outline?: boolean;
154
+ extend?: boolean;
155
+ variant?: ComponentProps<typeof VcStatus>["variant"];
156
+ icon?: string;
157
+ iconSize?: ComponentProps<typeof VcIcon>["size"];
158
+ iconVariant?: ComponentProps<typeof VcIcon>["variant"];
159
+ title?: string;
160
+ content: {
161
+ method: string;
162
+ };
163
+ }
164
+
165
+ export interface InputCurrencySchema extends SchemaBase {
166
+ component: "vc-input-currency";
167
+ optionProperty: string;
168
+ optionValue?: string;
169
+ optionLabel?: string;
170
+ clearable?: boolean;
171
+ }
172
+
173
+ export interface EditorSchema extends SchemaBase {
174
+ component: "vc-editor";
175
+ }
176
+
177
+ export interface DynamicPropertiesSchema extends SchemaBase {
178
+ component: "vc-dynamic-properties";
179
+ exclude?: string[];
180
+ include?: string[];
181
+ }
182
+
183
+ export interface GallerySchema extends SchemaBase {
184
+ component: "vc-gallery";
185
+ uploadFolder: string;
186
+ }
187
+
188
+ export interface CardSchema extends SchemaBase {
189
+ component: "vc-card";
190
+ fields: ControlSchema[];
191
+ action?: ButtonSchema & { method: string };
192
+ collapsible?: boolean;
193
+ }
194
+
195
+ export interface WidgetsSchema extends SchemaBase {
196
+ component: "vc-widgets";
197
+ children: string[];
198
+ }
199
+
200
+ export interface CheckboxSchema extends SchemaBase {
201
+ component: "vc-checkbox";
202
+ content: string;
203
+ trueValue?: boolean;
204
+ falseValue?: boolean;
205
+ }
206
+
207
+ export interface FieldsetSchema extends SchemaBase {
208
+ component: "vc-fieldset";
209
+ columns?: number;
210
+ fields: Exclude<ControlSchema[], FieldsetSchema>;
211
+ remove?: {
212
+ method: string;
213
+ };
214
+ }
215
+
216
+ export interface ButtonSchema extends SchemaBase {
217
+ component: "vc-button";
218
+ content: string;
219
+ small?: boolean;
220
+ icon?: string;
221
+ iconSize?: ComponentProps<typeof VcIcon>["size"];
222
+ text?: boolean;
223
+ method?: string;
224
+ }
225
+
226
+ export type ControlSchema =
227
+ | SelectSchema
228
+ | InputSchema
229
+ | EditorSchema
230
+ | DynamicPropertiesSchema
231
+ | GallerySchema
232
+ | CardSchema
233
+ | WidgetsSchema
234
+ | CheckboxSchema
235
+ | FieldsetSchema
236
+ | ButtonSchema
237
+ | InputCurrencySchema
238
+ | StatusSchema;
239
+
240
+ export interface FilterBase {
241
+ columns: {
242
+ title: string;
243
+ controls: {
244
+ field: string;
245
+ component: InputSchema["component"] | CheckboxSchema["component"];
246
+ }[];
247
+ }[];
248
+ }
249
+
250
+ export type FilterCheckbox = FilterBase & {
251
+ columns: {
252
+ controls: {
253
+ data?: { value: string; displayName: string }[];
254
+ }[];
255
+ }[];
256
+ };
257
+
258
+ export type FilterDateInput = FilterBase & {
259
+ columns: {
260
+ controls: {
261
+ label?: string;
262
+ }[];
263
+ }[];
264
+ };
265
+
266
+ export type FilterSchema = FilterCheckbox | FilterDateInput;
267
+
268
+ export interface OverridesSchema {
269
+ upsert?: (OverridesUpsert | OverridesReplace)[];
270
+ remove?: OverridesRemove[];
271
+ }
272
+
273
+ export interface OverridesUpsert extends OverridesReplace {
274
+ index: number;
275
+ }
276
+
277
+ export interface OverridesReplace {
278
+ path: string;
279
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
+ value: ControlSchema | SettingsSchema["toolbar"][number] | string | boolean;
281
+ id: string;
282
+ }
283
+
284
+ export interface OverridesRemove {
285
+ path: string;
286
+ id: string;
287
+ }