@vc-shell/framework 1.2.4-beta.7 → 2.0.0-alpha.0

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 (1227) hide show
  1. package/dist/assets/0d67e9e056b4c500.woff +0 -0
  2. package/dist/assets/131b34336aedaf47.woff +0 -0
  3. package/dist/assets/19bb1c668a5db39f.woff2 +0 -0
  4. package/dist/assets/2010ada3e82156ed.woff +0 -0
  5. package/dist/assets/3fc09a6113184f16.woff +0 -0
  6. package/dist/assets/477e1881a0394cc5.woff +0 -0
  7. package/dist/assets/b7ffde2383bb16ba.woff2 +0 -0
  8. package/dist/assets/c5195215cb712e9c.woff2 +0 -0
  9. package/dist/assets/c97328b91ac5cc66.woff +0 -0
  10. package/dist/assets/cdc69f8b549c866d.woff2 +0 -0
  11. package/dist/assets/d5eb20bcdcf5616a.woff2 +0 -0
  12. package/dist/assets/da4b7f5883fe7743.woff2 +0 -0
  13. package/dist/core/composables/useApiClient/index.d.ts +4 -3
  14. package/dist/core/composables/useApiClient/index.d.ts.map +1 -1
  15. package/dist/core/composables/useAppBarMobileButtons/index.d.ts +2 -1
  16. package/dist/core/composables/useAppBarMobileButtons/index.d.ts.map +1 -1
  17. package/dist/core/composables/useAppBarWidget/index.d.ts +2 -1
  18. package/dist/core/composables/useAppBarWidget/index.d.ts.map +1 -1
  19. package/dist/core/composables/useAppInsights/index.d.ts +4 -2
  20. package/dist/core/composables/useAppInsights/index.d.ts.map +1 -1
  21. package/dist/core/composables/useAssets/index.d.ts +4 -2
  22. package/dist/core/composables/useAssets/index.d.ts.map +1 -1
  23. package/dist/core/composables/useAsync/index.d.ts +4 -2
  24. package/dist/core/composables/useAsync/index.d.ts.map +1 -1
  25. package/dist/core/composables/useBeforeUnload/index.d.ts +4 -3
  26. package/dist/core/composables/useBeforeUnload/index.d.ts.map +1 -1
  27. package/dist/core/composables/useBlade/index.d.ts +23 -18
  28. package/dist/core/composables/useBlade/index.d.ts.map +1 -1
  29. package/dist/core/composables/useBladeRegistry/index.d.ts +6 -3
  30. package/dist/core/composables/useBladeRegistry/index.d.ts.map +1 -1
  31. package/dist/core/composables/useBreadcrumbs/index.d.ts +4 -2
  32. package/dist/core/composables/useBreadcrumbs/index.d.ts.map +1 -1
  33. package/dist/core/composables/useConnectionStatus/index.d.ts +4 -2
  34. package/dist/core/composables/useConnectionStatus/index.d.ts.map +1 -1
  35. package/dist/core/composables/useDashboard/index.d.ts +2 -1
  36. package/dist/core/composables/useDashboard/index.d.ts.map +1 -1
  37. package/dist/core/composables/useDynamicProperties/index.d.ts +4 -2
  38. package/dist/core/composables/useDynamicProperties/index.d.ts.map +1 -1
  39. package/dist/core/composables/useErrorHandler/index.d.ts +4 -3
  40. package/dist/core/composables/useErrorHandler/index.d.ts.map +1 -1
  41. package/dist/core/composables/useFunctions/index.d.ts +4 -3
  42. package/dist/core/composables/useFunctions/index.d.ts.map +1 -1
  43. package/dist/core/composables/useGlobalSearch/index.d.ts +2 -1
  44. package/dist/core/composables/useGlobalSearch/index.d.ts.map +1 -1
  45. package/dist/core/composables/useKeyboardNavigation/index.d.ts +9 -9
  46. package/dist/core/composables/useKeyboardNavigation/index.d.ts.map +1 -1
  47. package/dist/core/composables/useLanguages/index.d.ts +4 -2
  48. package/dist/core/composables/useLanguages/index.d.ts.map +1 -1
  49. package/dist/core/composables/useLoading/index.d.ts +2 -1
  50. package/dist/core/composables/useLoading/index.d.ts.map +1 -1
  51. package/dist/core/composables/useMenuService/index.d.ts +1 -0
  52. package/dist/core/composables/useMenuService/index.d.ts.map +1 -1
  53. package/dist/core/composables/useNotifications/index.d.ts +4 -3
  54. package/dist/core/composables/useNotifications/index.d.ts.map +1 -1
  55. package/dist/core/composables/usePermissions/index.d.ts +4 -3
  56. package/dist/core/composables/usePermissions/index.d.ts.map +1 -1
  57. package/dist/core/composables/useSettings/index.d.ts +4 -2
  58. package/dist/core/composables/useSettings/index.d.ts.map +1 -1
  59. package/dist/core/composables/useSettingsMenu/index.d.ts +2 -1
  60. package/dist/core/composables/useSettingsMenu/index.d.ts.map +1 -1
  61. package/dist/core/composables/useSidebarState/index.d.ts +5 -3
  62. package/dist/core/composables/useSidebarState/index.d.ts.map +1 -1
  63. package/dist/core/composables/useTheme/index.d.ts +4 -2
  64. package/dist/core/composables/useTheme/index.d.ts.map +1 -1
  65. package/dist/core/composables/useToolbar/index.d.ts +10 -9
  66. package/dist/core/composables/useToolbar/index.d.ts.map +1 -1
  67. package/dist/core/composables/useUser/index.d.ts +4 -2
  68. package/dist/core/composables/useUser/index.d.ts.map +1 -1
  69. package/dist/core/composables/useUserManagement/index.d.ts +4 -2
  70. package/dist/core/composables/useUserManagement/index.d.ts.map +1 -1
  71. package/dist/core/composables/useWebVitals/index.d.ts +1 -0
  72. package/dist/core/composables/useWebVitals/index.d.ts.map +1 -1
  73. package/dist/core/composables/useWidgets/index.d.ts +2 -1
  74. package/dist/core/composables/useWidgets/index.d.ts.map +1 -1
  75. package/dist/core/plugins/ai-agent/components/VcAiAgentPanel.vue.d.ts.map +1 -1
  76. package/dist/core/plugins/ai-agent/composables/useAiAgent.d.ts +1 -0
  77. package/dist/core/plugins/ai-agent/composables/useAiAgent.d.ts.map +1 -1
  78. package/dist/core/plugins/ai-agent/constants.d.ts +16 -0
  79. package/dist/core/plugins/ai-agent/constants.d.ts.map +1 -1
  80. package/dist/core/plugins/ai-agent/services/ai-agent-service.d.ts +2 -0
  81. package/dist/core/plugins/ai-agent/services/ai-agent-service.d.ts.map +1 -1
  82. package/dist/core/plugins/ai-agent/types.d.ts +19 -0
  83. package/dist/core/plugins/ai-agent/types.d.ts.map +1 -1
  84. package/dist/core/plugins/extension-points/defineExtensionPoint.d.ts +26 -4
  85. package/dist/core/plugins/extension-points/defineExtensionPoint.d.ts.map +1 -1
  86. package/dist/core/plugins/extension-points/index.d.ts +14 -0
  87. package/dist/core/plugins/extension-points/index.d.ts.map +1 -1
  88. package/dist/core/plugins/modularity/index.d.ts +2 -6
  89. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  90. package/dist/core/plugins/modularity/loader-mf.d.ts +17 -0
  91. package/dist/core/plugins/modularity/loader-mf.d.ts.map +1 -0
  92. package/dist/framework.css +9 -0
  93. package/dist/framework.js +36469 -464
  94. package/dist/index.d.ts +4 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/injection-keys.d.ts +39 -2
  97. package/dist/injection-keys.d.ts.map +1 -1
  98. package/dist/locales/de.json +5 -1
  99. package/dist/locales/en.json +5 -1
  100. package/dist/shared/components/app-switcher/index.d.ts +3 -1
  101. package/dist/shared/components/app-switcher/index.d.ts.map +1 -1
  102. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation-new.vue.d.ts.map +1 -1
  103. package/dist/shared/components/blade-navigation/composables/useBladeMessaging.d.ts +2 -0
  104. package/dist/shared/components/blade-navigation/composables/useBladeMessaging.d.ts.map +1 -1
  105. package/dist/shared/components/blade-navigation/composables/useBladeStack.d.ts +3 -1
  106. package/dist/shared/components/blade-navigation/composables/useBladeStack.d.ts.map +1 -1
  107. package/dist/shared/components/blade-navigation/plugin-v2.d.ts.map +1 -1
  108. package/dist/shared/components/blade-navigation/types/index.d.ts +1 -0
  109. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  110. package/dist/shared/components/blade-navigation/utils/navigateToMainRoute.d.ts +9 -0
  111. package/dist/shared/components/blade-navigation/utils/navigateToMainRoute.d.ts.map +1 -0
  112. package/dist/shared/components/blade-navigation/utils/restoreFromUrl.d.ts +4 -1
  113. package/dist/shared/components/blade-navigation/utils/restoreFromUrl.d.ts.map +1 -1
  114. package/dist/shared/components/dashboard-charts/index.d.ts +3 -6
  115. package/dist/shared/components/dashboard-charts/index.d.ts.map +1 -1
  116. package/dist/shared/components/draggable-dashboard/DraggableDashboard.vue.d.ts.map +1 -1
  117. package/dist/shared/components/multilanguage-selector/multilanguage-selector.vue.d.ts +1 -1
  118. package/dist/shared/components/notifications/components/notification-container/index.d.ts +3 -3
  119. package/dist/shared/components/notifications/components/notification-container/index.d.ts.map +1 -1
  120. package/dist/shared/components/user-dropdown-button/_internal/user-info.vue.d.ts.map +1 -1
  121. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  122. package/dist/shared/composables/useExternalWidgets.d.ts +3 -2
  123. package/dist/shared/composables/useExternalWidgets.d.ts.map +1 -1
  124. package/dist/shared/composables/useMenuExpanded.d.ts +6 -4
  125. package/dist/shared/composables/useMenuExpanded.d.ts.map +1 -1
  126. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts.map +1 -1
  127. package/dist/shared/modules/dynamic/index.d.ts +11 -5
  128. package/dist/shared/modules/dynamic/index.d.ts.map +1 -1
  129. package/dist/shared/pages/ChangePasswordPage/plugin.d.ts +3 -1
  130. package/dist/shared/pages/ChangePasswordPage/plugin.d.ts.map +1 -1
  131. package/dist/shared/pages/ForgotPasswordPage/plugin.d.ts +3 -1
  132. package/dist/shared/pages/ForgotPasswordPage/plugin.d.ts.map +1 -1
  133. package/dist/shared/pages/InvitePage/plugin.d.ts +3 -1
  134. package/dist/shared/pages/InvitePage/plugin.d.ts.map +1 -1
  135. package/dist/shared/pages/LoginPage/plugin.d.ts +3 -1
  136. package/dist/shared/pages/LoginPage/plugin.d.ts.map +1 -1
  137. package/dist/shared/pages/ResetPasswordPage/plugin.d.ts +3 -1
  138. package/dist/shared/pages/ResetPasswordPage/plugin.d.ts.map +1 -1
  139. package/dist/tailwind.config.d.ts.map +1 -1
  140. package/dist/test-helpers.d.ts +227 -0
  141. package/dist/test-helpers.d.ts.map +1 -0
  142. package/dist/tsconfig.tsbuildinfo +1 -1
  143. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts +2 -2
  144. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  145. package/dist/ui/components/atoms/vc-button/types.d.ts +1 -1
  146. package/dist/ui/components/atoms/vc-button/types.d.ts.map +1 -1
  147. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts +1 -1
  148. package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
  149. package/dist/ui/components/atoms/vc-icon/vc-material-icon.vue.d.ts +1 -1
  150. package/dist/ui/components/atoms/vc-icon/vc-material-icon.vue.d.ts.map +1 -1
  151. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts +1 -1
  152. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  153. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts +2 -2
  154. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  155. package/dist/ui/components/molecules/index.d.ts +2 -1
  156. package/dist/ui/components/molecules/index.d.ts.map +1 -1
  157. package/dist/ui/components/molecules/vc-accordion/_internal/vc-accordion-item/vc-accordion-item.vue.d.ts.map +1 -1
  158. package/dist/ui/components/molecules/vc-accordion/index.d.ts +5 -1
  159. package/dist/ui/components/molecules/vc-accordion/index.d.ts.map +1 -1
  160. package/dist/ui/components/molecules/vc-accordion/vc-accordion.vue.d.ts +9 -9
  161. package/dist/ui/components/molecules/vc-accordion/vc-accordion.vue.d.ts.map +1 -1
  162. package/dist/ui/components/molecules/vc-checkbox-group/index.d.ts +1 -1
  163. package/dist/ui/components/molecules/vc-checkbox-group/index.d.ts.map +1 -1
  164. package/dist/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.vue.d.ts +11 -17
  165. package/dist/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.vue.d.ts.map +1 -1
  166. package/dist/ui/components/molecules/vc-color-input/vc-color-input.vue.d.ts +2 -2
  167. package/dist/ui/components/molecules/vc-date-picker/vc-date-picker.vue.d.ts +3 -3
  168. package/dist/ui/components/molecules/vc-date-picker/vc-date-picker.vue.d.ts.map +1 -1
  169. package/dist/ui/components/molecules/vc-dropdown/_internal/VcDropdownItem.vue.d.ts +1 -1
  170. package/dist/ui/components/molecules/vc-dropdown/_internal/VcDropdownItem.vue.d.ts.map +1 -1
  171. package/dist/ui/components/molecules/vc-dropdown/index.d.ts +1 -0
  172. package/dist/ui/components/molecules/vc-dropdown/index.d.ts.map +1 -1
  173. package/dist/ui/components/molecules/vc-dropdown/vc-dropdown.vue.d.ts +3 -3
  174. package/dist/ui/components/molecules/vc-dropdown/vc-dropdown.vue.d.ts.map +1 -1
  175. package/dist/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.vue.d.ts +3 -3
  176. package/dist/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.vue.d.ts.map +1 -1
  177. package/dist/ui/components/molecules/vc-editor/index.d.ts +3 -3
  178. package/dist/ui/components/molecules/vc-editor/index.d.ts.map +1 -1
  179. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +7 -10
  180. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  181. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts +1 -1
  182. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
  183. package/dist/ui/components/molecules/vc-field/index.d.ts +1 -0
  184. package/dist/ui/components/molecules/vc-field/index.d.ts.map +1 -1
  185. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts +3 -3
  186. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
  187. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts +2 -1
  188. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  189. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts +8 -7
  190. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  191. package/dist/ui/components/molecules/vc-input-dropdown/index.d.ts +1 -0
  192. package/dist/ui/components/molecules/vc-input-dropdown/index.d.ts.map +1 -1
  193. package/dist/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.vue.d.ts +10 -60
  194. package/dist/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.vue.d.ts.map +1 -1
  195. package/dist/ui/components/molecules/vc-menu/constants.d.ts +3 -0
  196. package/dist/ui/components/molecules/vc-menu/constants.d.ts.map +1 -0
  197. package/dist/ui/components/molecules/vc-menu/index.d.ts +9 -0
  198. package/dist/ui/components/molecules/vc-menu/index.d.ts.map +1 -0
  199. package/dist/ui/components/molecules/vc-menu/types.d.ts +28 -0
  200. package/dist/ui/components/molecules/vc-menu/types.d.ts.map +1 -0
  201. package/dist/ui/components/molecules/vc-menu/vc-menu-group.vue.d.ts +32 -0
  202. package/dist/ui/components/molecules/vc-menu/vc-menu-group.vue.d.ts.map +1 -0
  203. package/dist/ui/components/molecules/vc-menu/vc-menu-item.vue.d.ts +34 -0
  204. package/dist/ui/components/molecules/vc-menu/vc-menu-item.vue.d.ts.map +1 -0
  205. package/dist/ui/components/molecules/vc-menu/vc-menu.vue.d.ts +19 -0
  206. package/dist/ui/components/molecules/vc-menu/vc-menu.vue.d.ts.map +1 -0
  207. package/dist/ui/components/molecules/vc-multivalue/_internal/MultivalueTrigger.vue.d.ts +2 -2
  208. package/dist/ui/components/molecules/vc-radio-button/index.d.ts +1 -0
  209. package/dist/ui/components/molecules/vc-radio-button/index.d.ts.map +1 -1
  210. package/dist/ui/components/molecules/vc-radio-button/vc-radio-button.vue.d.ts +11 -10
  211. package/dist/ui/components/molecules/vc-radio-button/vc-radio-button.vue.d.ts.map +1 -1
  212. package/dist/ui/components/molecules/vc-radio-group/index.d.ts +1 -1
  213. package/dist/ui/components/molecules/vc-radio-group/index.d.ts.map +1 -1
  214. package/dist/ui/components/molecules/vc-radio-group/vc-radio-group.vue.d.ts +10 -16
  215. package/dist/ui/components/molecules/vc-radio-group/vc-radio-group.vue.d.ts.map +1 -1
  216. package/dist/ui/components/molecules/vc-rating/index.d.ts +1 -0
  217. package/dist/ui/components/molecules/vc-rating/index.d.ts.map +1 -1
  218. package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts +4 -5
  219. package/dist/ui/components/molecules/vc-rating/vc-rating.vue.d.ts.map +1 -1
  220. package/dist/ui/components/molecules/vc-slider/index.d.ts +4 -6
  221. package/dist/ui/components/molecules/vc-slider/index.d.ts.map +1 -1
  222. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts +3 -2
  223. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  224. package/dist/ui/components/molecules/vc-toast/vc-toast.vue.d.ts +5 -1
  225. package/dist/ui/components/molecules/vc-toast/vc-toast.vue.d.ts.map +1 -1
  226. package/dist/ui/components/organisms/vc-app/_internal/layouts/DesktopLayout.vue.d.ts.map +1 -1
  227. package/dist/ui/components/organisms/vc-app/_internal/menu/VcAppMenu.vue.d.ts.map +1 -1
  228. package/dist/ui/components/organisms/vc-app/_internal/sidebar/SidebarCollapseButton.vue.d.ts.map +1 -1
  229. package/dist/ui/components/organisms/vc-app/_internal/sidebar/SidebarContent.vue.d.ts.map +1 -1
  230. package/dist/ui/components/organisms/vc-app/_internal/sidebar/SidebarHeader.vue.d.ts +1 -1
  231. package/dist/ui/components/organisms/vc-app/_internal/sidebar/SidebarHeader.vue.d.ts.map +1 -1
  232. package/dist/ui/components/organisms/vc-app/composables/useShellBootstrap.d.ts +2 -1
  233. package/dist/ui/components/organisms/vc-app/composables/useShellBootstrap.d.ts.map +1 -1
  234. package/dist/ui/components/organisms/vc-app/composables/useShellNavigation.d.ts.map +1 -1
  235. package/dist/ui/components/organisms/vc-app/composition/menu/index.d.ts +0 -2
  236. package/dist/ui/components/organisms/vc-app/composition/menu/index.d.ts.map +1 -1
  237. package/dist/ui/components/organisms/vc-blade/_internal/BladeHeader.vue.d.ts +2 -0
  238. package/dist/ui/components/organisms/vc-blade/_internal/BladeHeader.vue.d.ts.map +1 -1
  239. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts +1 -1
  240. package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
  241. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue.d.ts +2 -2
  242. package/dist/ui/components/organisms/vc-gallery/vc-gallery.vue.d.ts +2 -2
  243. package/dist/ui/components/organisms/vc-image-upload/vc-image-upload.vue.d.ts +3 -3
  244. package/dist/ui/components/organisms/vc-image-upload/vc-image-upload.vue.d.ts.map +1 -1
  245. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts +2 -2
  246. package/dist/ui/components/organisms/vc-popup/vc-popup.vue.d.ts.map +1 -1
  247. package/dist/ui/components/organisms/vc-sidebar/vc-sidebar.vue.d.ts +4 -4
  248. package/dist/ui/components/organisms/vc-sidebar/vc-sidebar.vue.d.ts.map +1 -1
  249. package/dist/ui/components/organisms/vc-table/VcDataTable.vue.d.ts +2 -2
  250. package/dist/ui/components/organisms/vc-table/VcDataTable.vue.d.ts.map +1 -1
  251. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts +1 -1
  252. package/dist/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue.d.ts.map +1 -1
  253. package/dist/ui/components/organisms/vc-table/components/DataTableCellRenderer.vue.d.ts.map +1 -1
  254. package/dist/ui/components/organisms/vc-table/components/DataTableRow.vue.d.ts +1 -1
  255. package/dist/ui/components/organisms/vc-table/components/DataTableRow.vue.d.ts.map +1 -1
  256. package/dist/ui/components/organisms/vc-table/components/GlobalFiltersPanel.vue.d.ts +2 -2
  257. package/dist/ui/components/organisms/vc-table/components/TableAddRowButton.vue.d.ts +1 -1
  258. package/dist/ui/components/organisms/vc-table/components/TableAddRowButton.vue.d.ts.map +1 -1
  259. package/dist/ui/components/organisms/vc-table/components/TableCheckbox.vue.d.ts +2 -14
  260. package/dist/ui/components/organisms/vc-table/components/TableCheckbox.vue.d.ts.map +1 -1
  261. package/dist/ui/components/organisms/vc-table/components/TableColumnSwitcher.vue.d.ts.map +1 -1
  262. package/dist/ui/components/organisms/vc-table/components/TableGroupRow.vue.d.ts +2 -2
  263. package/dist/ui/components/organisms/vc-table/components/TableGroupRow.vue.d.ts.map +1 -1
  264. package/dist/ui/components/organisms/vc-table/components/TableRow.vue.d.ts +4 -2
  265. package/dist/ui/components/organisms/vc-table/components/TableRow.vue.d.ts.map +1 -1
  266. package/dist/ui/components/organisms/vc-table/components/VcColumn.vue.d.ts +4 -4
  267. package/dist/ui/components/organisms/vc-table/components/mobile/DataTableMobileCard.vue.d.ts +3 -3
  268. package/dist/ui/components/organisms/vc-table/components/mobile/DataTableMobileView.vue.d.ts +3 -3
  269. package/dist/ui/components/organisms/vc-table/components/mobile/MobileActionSheet.vue.d.ts +2 -2
  270. package/dist/ui/components/organisms/vc-table/composables/useDataTableOrchestrator.d.ts +276 -0
  271. package/dist/ui/components/organisms/vc-table/composables/useDataTableOrchestrator.d.ts.map +1 -0
  272. package/dist/{vendor-cheerio-3JDxU-TZ.js → vendor-cheerio-DrsWhxJH.js} +4 -4
  273. package/dist/{vendor-cheerio-select-B7cQ9HP4.js → vendor-cheerio-select-jw4C2SiT.js} +2 -2
  274. package/dist/{vendor-css-select-CaVL4gMJ.js → vendor-css-select-BwGMmTuc.js} +1 -1
  275. package/dist/{vendor-dom-serializer-Sk3xHhQk.js → vendor-dom-serializer-BbVuF1MQ.js} +1 -1
  276. package/dist/{vendor-dompurify-BGaRrCfO.js → vendor-dompurify-M2Bspgo5.js} +115 -115
  277. package/dist/{vendor-domutils-o2IJSx7k.js → vendor-domutils-DDRq_ial.js} +1 -1
  278. package/dist/{vendor-entities-CCReaWqU.js → vendor-entities-J86Og8IU.js} +2 -2
  279. package/dist/{vendor-htmlparser2-nRkKyNhl.js → vendor-htmlparser2-BxKKzWLL.js} +1 -1
  280. package/dist/{vendor-lodash-es-B5DE282z.js → vendor-lodash-es-BtnfG6xF.js} +15 -12
  281. package/dist/{vendor-lucide-vue-next-DadL7o0S.js → vendor-lucide-vue-next-CPgeDcFj.js} +16164 -12841
  282. package/dist/{vendor-markdown-it-pxD-Y9qk.js → vendor-markdown-it-Bs9KEWkF.js} +1 -1
  283. package/dist/vendor-module-federation-enhanced-CV1CNdJy.js +22 -0
  284. package/dist/vendor-module-federation-error-codes-DdVwX11j.js +55 -0
  285. package/dist/vendor-module-federation-runtime-CVH_lWgu.js +91 -0
  286. package/dist/vendor-module-federation-runtime-core-D5G-s9nP.js +2202 -0
  287. package/dist/vendor-module-federation-runtime-tools-CQbtw-RJ.js +18 -0
  288. package/dist/vendor-module-federation-sdk-DM4AJRa7.js +683 -0
  289. package/dist/{vendor-prosemirror-commands-Dml_M5TN.js → vendor-prosemirror-commands-Bv4ChObl.js} +2 -2
  290. package/dist/{vendor-prosemirror-dropcursor-BpoETgOQ.js → vendor-prosemirror-dropcursor-kF5UKNFM.js} +2 -2
  291. package/dist/{vendor-prosemirror-gapcursor-VVbNCx01.js → vendor-prosemirror-gapcursor-BAwEBHgE.js} +3 -3
  292. package/dist/{vendor-prosemirror-history-CZUb2jWK.js → vendor-prosemirror-history-CQYKHz3u.js} +2 -2
  293. package/dist/{vendor-prosemirror-keymap-D5bacBom.js → vendor-prosemirror-keymap-CAfQyvJ7.js} +1 -1
  294. package/dist/{vendor-prosemirror-markdown-C-c5VoFH.js → vendor-prosemirror-markdown-rpUTSG_Q.js} +1 -1
  295. package/dist/{vendor-prosemirror-schema-list-BZ-Z46DO.js → vendor-prosemirror-schema-list-BNJkECdS.js} +1 -1
  296. package/dist/{vendor-prosemirror-state-DYjHje5i.js → vendor-prosemirror-state-IeimrELV.js} +1 -1
  297. package/dist/{vendor-prosemirror-tables-CjY-gm1w.js → vendor-prosemirror-tables-zVUKdbdQ.js} +4 -4
  298. package/dist/{vendor-prosemirror-transform-6xBwIzbI.js → vendor-prosemirror-transform-BUjWd5Tb.js} +4 -4
  299. package/dist/{vendor-prosemirror-view-CzBOGIAq.js → vendor-prosemirror-view-DFpBkGRq.js} +2 -2
  300. package/dist/{vendor-tiptap-core-BNrmxwcD.js → vendor-tiptap-core-BfrE48R3.js} +16 -16
  301. package/dist/{vendor-tiptap-extension-blockquote-DBYgJvrA.js → vendor-tiptap-extension-blockquote-DG5eEgV_.js} +1 -1
  302. package/dist/{vendor-tiptap-extension-bold-BaDsyhkA.js → vendor-tiptap-extension-bold-CqPrSfgB.js} +1 -1
  303. package/dist/{vendor-tiptap-extension-code-DmMmyuE8.js → vendor-tiptap-extension-code-Dj9HfL9x.js} +1 -1
  304. package/dist/{vendor-tiptap-extension-code-block-Cryhc4vR.js → vendor-tiptap-extension-code-block-YnlbQcbJ.js} +2 -2
  305. package/dist/{vendor-tiptap-extension-document-DTFkPYG-.js → vendor-tiptap-extension-document-DyG2LNKD.js} +1 -1
  306. package/dist/{vendor-tiptap-extension-hard-break-DLmFSWL4.js → vendor-tiptap-extension-hard-break-mzhqFFEq.js} +1 -1
  307. package/dist/{vendor-tiptap-extension-heading-DlpNyZOc.js → vendor-tiptap-extension-heading-DGnriW33.js} +1 -1
  308. package/dist/{vendor-tiptap-extension-horizontal-rule-CI2nC7l5.js → vendor-tiptap-extension-horizontal-rule-pR7MlJHI.js} +2 -2
  309. package/dist/{vendor-tiptap-extension-image-g6grWBFQ.js → vendor-tiptap-extension-image-BsXHNscz.js} +1 -1
  310. package/dist/{vendor-tiptap-extension-italic-DsMLQC-Z.js → vendor-tiptap-extension-italic-aoCbIXRj.js} +1 -1
  311. package/dist/{vendor-tiptap-extension-link-CF-euSmX.js → vendor-tiptap-extension-link-DiV7DqnY.js} +3 -3
  312. package/dist/{vendor-tiptap-extension-list-DA57LKdr.js → vendor-tiptap-extension-list-BGYRWOyu.js} +5 -5
  313. package/dist/{vendor-tiptap-extension-paragraph-CrvWamNP.js → vendor-tiptap-extension-paragraph-BEBEvW1W.js} +1 -1
  314. package/dist/vendor-tiptap-extension-placeholder-ZfoeEW0T.js +1 -0
  315. package/dist/{vendor-tiptap-extension-strike-caeBdU8d.js → vendor-tiptap-extension-strike-6vob8J1A.js} +1 -1
  316. package/dist/{vendor-tiptap-extension-table-DBQupXqd.js → vendor-tiptap-extension-table-CH-0UqG-.js} +8 -8
  317. package/dist/vendor-tiptap-extension-table-cell-_uzaJkJG.js +1 -0
  318. package/dist/vendor-tiptap-extension-table-header-_uzaJkJG.js +1 -0
  319. package/dist/vendor-tiptap-extension-table-row-_uzaJkJG.js +1 -0
  320. package/dist/{vendor-tiptap-extension-text-CYaZSxyC.js → vendor-tiptap-extension-text-CnqQVbB2.js} +1 -1
  321. package/dist/{vendor-tiptap-extension-text-style-C8Uqg46V.js → vendor-tiptap-extension-text-style-Bj4bCZI1.js} +1 -1
  322. package/dist/{vendor-tiptap-extension-underline-Ct9ZgKsw.js → vendor-tiptap-extension-underline-CVBZMhrs.js} +1 -1
  323. package/dist/{vendor-tiptap-extensions-Dg7-f1Pi.js → vendor-tiptap-extensions-2ZbpCG7T.js} +8 -8
  324. package/dist/{vendor-tiptap-markdown-DDkltz0i.js → vendor-tiptap-markdown-B7Wvo0s5.js} +4 -4
  325. package/dist/vendor-tiptap-pm-DSHuSumV.js +1 -0
  326. package/dist/{vendor-tiptap-starter-kit-C1nkrZcr.js → vendor-tiptap-starter-kit-ipneJHYV.js} +17 -17
  327. package/dist/{vendor-tiptap-vue-3-B3dwsJj3.js → vendor-tiptap-vue-3-IfJcIOl5.js} +1 -1
  328. package/dist/{vendor-truncate-html-C77Epb-R.js → vendor-truncate-html-r2r8GKvW.js} +1 -1
  329. package/dist/{vendor-vue-i18n-D0F0w-9Q.js → vendor-vue-i18n-BguHiJqH.js} +7 -4
  330. package/dist/vendor-vue-router-R3V0tq8_.js +6 -0
  331. package/dist/{vendor-vueuse-components-jqShV_Fz.js → vendor-vueuse-components-Be490f6P.js} +30 -30
  332. package/dist/{vendor-vueuse-core-D-DKRsy5.js → vendor-vueuse-core-BW8bO6-j.js} +17 -14
  333. package/dist/{vendor-vueuse-shared-Ch7WD-uK.js → vendor-vueuse-shared-bmkWEEYZ.js} +14 -14
  334. package/package.json +28 -19
  335. package/tailwind.config.ts +1 -0
  336. package/core/README.md +0 -365
  337. package/core/api/platform.ts +0 -9883
  338. package/core/composables/index.ts +0 -29
  339. package/core/composables/useApiClient/index.ts +0 -22
  340. package/core/composables/useAppBarMobileButtons/index.ts +0 -33
  341. package/core/composables/useAppBarWidget/index.test.ts +0 -86
  342. package/core/composables/useAppBarWidget/index.ts +0 -31
  343. package/core/composables/useAppInsights/index.ts +0 -56
  344. package/core/composables/useAssets/index.ts +0 -144
  345. package/core/composables/useAsync/index.test.ts +0 -137
  346. package/core/composables/useAsync/index.ts +0 -89
  347. package/core/composables/useBeforeUnload/index.ts +0 -25
  348. package/core/composables/useBlade/index.ts +0 -149
  349. package/core/composables/useBladeRegistry/index.test.ts +0 -192
  350. package/core/composables/useBladeRegistry/index.ts +0 -231
  351. package/core/composables/useBreadcrumbs/index.test.ts +0 -139
  352. package/core/composables/useBreadcrumbs/index.ts +0 -66
  353. package/core/composables/useConnectionStatus/index.ts +0 -48
  354. package/core/composables/useDashboard/index.test.ts +0 -86
  355. package/core/composables/useDashboard/index.ts +0 -51
  356. package/core/composables/useDynamicProperties/index.ts +0 -573
  357. package/core/composables/useErrorHandler/index.ts +0 -75
  358. package/core/composables/useFunctions/debounce.ts +0 -15
  359. package/core/composables/useFunctions/delay.ts +0 -3
  360. package/core/composables/useFunctions/index.ts +0 -20
  361. package/core/composables/useFunctions/once.ts +0 -11
  362. package/core/composables/useFunctions/sleep.ts +0 -3
  363. package/core/composables/useFunctions/throttle.ts +0 -13
  364. package/core/composables/useGlobalSearch/index.ts +0 -36
  365. package/core/composables/useGlobalSearch/useGlobalSearch.md +0 -263
  366. package/core/composables/useKeyboardNavigation/index.ts +0 -246
  367. package/core/composables/useLanguages/index.ts +0 -48
  368. package/core/composables/useLoading/index.ts +0 -9
  369. package/core/composables/useMenuService/index.test.ts +0 -86
  370. package/core/composables/useMenuService/index.ts +0 -43
  371. package/core/composables/useNotifications/index.ts +0 -200
  372. package/core/composables/usePermissions/index.ts +0 -30
  373. package/core/composables/useSettings/index.ts +0 -64
  374. package/core/composables/useSettingsMenu/index.test.ts +0 -86
  375. package/core/composables/useSettingsMenu/index.ts +0 -31
  376. package/core/composables/useSidebarState/index.ts +0 -90
  377. package/core/composables/useTheme/index.ts +0 -115
  378. package/core/composables/useToolbar/index.ts +0 -117
  379. package/core/composables/useUser/index.ts +0 -406
  380. package/core/composables/useUser/useUser.test.ts +0 -155
  381. package/core/composables/useUserManagement/index.ts +0 -45
  382. package/core/composables/useWebVitals/index.ts +0 -40
  383. package/core/composables/useWidgets/index.test.ts +0 -86
  384. package/core/composables/useWidgets/index.ts +0 -39
  385. package/core/constants/defaults.ts +0 -76
  386. package/core/constants/index.ts +0 -5
  387. package/core/constants/locale.ts +0 -78
  388. package/core/constants/ui.ts +0 -68
  389. package/core/directives/autofocus/index.ts +0 -9
  390. package/core/directives/index.ts +0 -2
  391. package/core/directives/loading/index.ts +0 -42
  392. package/core/directives/loading/styles.css +0 -71
  393. package/core/interceptors/index.ts +0 -142
  394. package/core/plugins/ai-agent/README.md +0 -336
  395. package/core/plugins/ai-agent/components/VcAiAgentPanel.vue +0 -125
  396. package/core/plugins/ai-agent/components/_internal/VcAiAgentHeader.vue +0 -102
  397. package/core/plugins/ai-agent/components/_internal/VcAiAgentIframe.vue +0 -107
  398. package/core/plugins/ai-agent/components/_internal/VcAiAgentLoader.vue +0 -72
  399. package/core/plugins/ai-agent/components/_internal/VcVirtoOzLogo.vue +0 -136
  400. package/core/plugins/ai-agent/components/index.ts +0 -1
  401. package/core/plugins/ai-agent/composables/index.ts +0 -4
  402. package/core/plugins/ai-agent/composables/useAiAgent.ts +0 -231
  403. package/core/plugins/ai-agent/composables/useAiAgentContext.ts +0 -285
  404. package/core/plugins/ai-agent/constants.ts +0 -89
  405. package/core/plugins/ai-agent/index.ts +0 -91
  406. package/core/plugins/ai-agent/services/ai-agent-service.ts +0 -592
  407. package/core/plugins/ai-agent/types.ts +0 -303
  408. package/core/plugins/extension-points/ExtensionPoint.vue +0 -95
  409. package/core/plugins/extension-points/defineExtensionPoint.ts +0 -29
  410. package/core/plugins/extension-points/index.ts +0 -11
  411. package/core/plugins/extension-points/store.ts +0 -54
  412. package/core/plugins/extension-points/types.ts +0 -28
  413. package/core/plugins/extension-points/useExtensionPoint.ts +0 -42
  414. package/core/plugins/global-error-handler/index.ts +0 -81
  415. package/core/plugins/i18n/index.ts +0 -11
  416. package/core/plugins/index.ts +0 -6
  417. package/core/plugins/modularity/README.md +0 -482
  418. package/core/plugins/modularity/index.ts +0 -208
  419. package/core/plugins/modularity/loader.ts +0 -631
  420. package/core/plugins/permissions/index.ts +0 -10
  421. package/core/plugins/signalR/index.ts +0 -126
  422. package/core/plugins/validation/index.ts +0 -1
  423. package/core/plugins/validation/rules.ts +0 -145
  424. package/core/services/_internal/createBladeScopedRegistry.test.ts +0 -130
  425. package/core/services/_internal/createBladeScopedRegistry.ts +0 -127
  426. package/core/services/_internal/createPreregistrationBus.test.ts +0 -227
  427. package/core/services/_internal/createPreregistrationBus.ts +0 -106
  428. package/core/services/_internal/createSimpleMapRegistry.test.ts +0 -82
  429. package/core/services/_internal/createSimpleMapRegistry.ts +0 -41
  430. package/core/services/_internal/index.ts +0 -3
  431. package/core/services/app-bar-menu-service.ts +0 -71
  432. package/core/services/app-bar-mobile-buttons-service.ts +0 -62
  433. package/core/services/app-bar-settings-service.test.ts +0 -153
  434. package/core/services/dashboard-service.ts +0 -110
  435. package/core/services/global-search-service/global-search-service.md +0 -28
  436. package/core/services/global-search-service/index.ts +0 -36
  437. package/core/services/index.ts +0 -11
  438. package/core/services/language-dashboard-service.test.ts +0 -183
  439. package/core/services/language-service.ts +0 -98
  440. package/core/services/menu-service.test.ts +0 -311
  441. package/core/services/menu-service.ts +0 -259
  442. package/core/services/settings-menu-service.ts +0 -61
  443. package/core/services/toolbar-service.ts +0 -111
  444. package/core/services/toolbar-widget-service.test.ts +0 -207
  445. package/core/services/widget-service.test.ts +0 -133
  446. package/core/services/widget-service.ts +0 -262
  447. package/core/types/index.ts +0 -312
  448. package/core/types/services.ts +0 -194
  449. package/core/utilities/camelToSnake.ts +0 -7
  450. package/core/utilities/camelize.ts +0 -5
  451. package/core/utilities/date/convertMomentFormat.test.ts +0 -60
  452. package/core/utilities/date/convertMomentFormat.ts +0 -30
  453. package/core/utilities/date/formatDate.test.ts +0 -60
  454. package/core/utilities/date/formatDate.ts +0 -31
  455. package/core/utilities/date/index.ts +0 -3
  456. package/core/utilities/date/resolveLocale.test.ts +0 -44
  457. package/core/utilities/date/resolveLocale.ts +0 -41
  458. package/core/utilities/error.ts +0 -89
  459. package/core/utilities/errorTypes.ts +0 -126
  460. package/core/utilities/generateId.ts +0 -3
  461. package/core/utilities/index.ts +0 -11
  462. package/core/utilities/kebabToCamel.ts +0 -7
  463. package/core/utilities/logger.ts +0 -120
  464. package/core/utilities/pendingErrorNotifications.ts +0 -64
  465. package/dist/DashboardBarChart-BzfKkUke.js +0 -123
  466. package/dist/DashboardDonutChart-CWfe85Xq.js +0 -89
  467. package/dist/DashboardLineChart-kdA8VnrR.js +0 -125
  468. package/dist/GridstackDashboard-CGHYkReX.js +0 -131
  469. package/dist/GridstackDashboard.css +0 -1
  470. package/dist/chart-utils-BTs6UFaZ.js +0 -83
  471. package/dist/core/composables/useAppBarWidget/index.test.d.ts +0 -2
  472. package/dist/core/composables/useAppBarWidget/index.test.d.ts.map +0 -1
  473. package/dist/core/composables/useAsync/index.test.d.ts +0 -2
  474. package/dist/core/composables/useAsync/index.test.d.ts.map +0 -1
  475. package/dist/core/composables/useBladeRegistry/index.test.d.ts +0 -2
  476. package/dist/core/composables/useBladeRegistry/index.test.d.ts.map +0 -1
  477. package/dist/core/composables/useBreadcrumbs/index.test.d.ts +0 -2
  478. package/dist/core/composables/useBreadcrumbs/index.test.d.ts.map +0 -1
  479. package/dist/core/composables/useDashboard/index.test.d.ts +0 -2
  480. package/dist/core/composables/useDashboard/index.test.d.ts.map +0 -1
  481. package/dist/core/composables/useMenuService/index.test.d.ts +0 -2
  482. package/dist/core/composables/useMenuService/index.test.d.ts.map +0 -1
  483. package/dist/core/composables/useSettingsMenu/index.test.d.ts +0 -2
  484. package/dist/core/composables/useSettingsMenu/index.test.d.ts.map +0 -1
  485. package/dist/core/composables/useUser/useUser.test.d.ts +0 -2
  486. package/dist/core/composables/useUser/useUser.test.d.ts.map +0 -1
  487. package/dist/core/composables/useWidgets/index.test.d.ts +0 -2
  488. package/dist/core/composables/useWidgets/index.test.d.ts.map +0 -1
  489. package/dist/core/plugins/modularity/loader.d.ts +0 -19
  490. package/dist/core/plugins/modularity/loader.d.ts.map +0 -1
  491. package/dist/core/services/_internal/createBladeScopedRegistry.test.d.ts +0 -2
  492. package/dist/core/services/_internal/createBladeScopedRegistry.test.d.ts.map +0 -1
  493. package/dist/core/services/_internal/createPreregistrationBus.test.d.ts +0 -2
  494. package/dist/core/services/_internal/createPreregistrationBus.test.d.ts.map +0 -1
  495. package/dist/core/services/_internal/createSimpleMapRegistry.test.d.ts +0 -2
  496. package/dist/core/services/_internal/createSimpleMapRegistry.test.d.ts.map +0 -1
  497. package/dist/core/services/app-bar-settings-service.test.d.ts +0 -2
  498. package/dist/core/services/app-bar-settings-service.test.d.ts.map +0 -1
  499. package/dist/core/services/language-dashboard-service.test.d.ts +0 -2
  500. package/dist/core/services/language-dashboard-service.test.d.ts.map +0 -1
  501. package/dist/core/services/menu-service.test.d.ts +0 -2
  502. package/dist/core/services/menu-service.test.d.ts.map +0 -1
  503. package/dist/core/services/toolbar-widget-service.test.d.ts +0 -2
  504. package/dist/core/services/toolbar-widget-service.test.d.ts.map +0 -1
  505. package/dist/core/services/widget-service.test.d.ts +0 -2
  506. package/dist/core/services/widget-service.test.d.ts.map +0 -1
  507. package/dist/core/utilities/date/convertMomentFormat.test.d.ts +0 -2
  508. package/dist/core/utilities/date/convertMomentFormat.test.d.ts.map +0 -1
  509. package/dist/core/utilities/date/formatDate.test.d.ts +0 -2
  510. package/dist/core/utilities/date/formatDate.test.d.ts.map +0 -1
  511. package/dist/core/utilities/date/resolveLocale.test.d.ts +0 -2
  512. package/dist/core/utilities/date/resolveLocale.test.d.ts.map +0 -1
  513. package/dist/index-tgmgQAD9.js +0 -33730
  514. package/dist/index.css +0 -9
  515. package/dist/shared/components/blade-navigation/composables/useBladeMessaging.test.d.ts +0 -2
  516. package/dist/shared/components/blade-navigation/composables/useBladeMessaging.test.d.ts.map +0 -1
  517. package/dist/shared/components/blade-navigation/composables/useBladeStack.test.d.ts +0 -2
  518. package/dist/shared/components/blade-navigation/composables/useBladeStack.test.d.ts.map +0 -1
  519. package/dist/shared/components/blade-navigation/utils/restoreFromUrl.test.d.ts +0 -2
  520. package/dist/shared/components/blade-navigation/utils/restoreFromUrl.test.d.ts.map +0 -1
  521. package/dist/shared/components/blade-navigation/utils/urlSync.test.d.ts +0 -2
  522. package/dist/shared/components/blade-navigation/utils/urlSync.test.d.ts.map +0 -1
  523. package/dist/shared/components/dashboard-widget-card/dashboard-stat-item.test.d.ts +0 -2
  524. package/dist/shared/components/dashboard-widget-card/dashboard-stat-item.test.d.ts.map +0 -1
  525. package/dist/shared/components/dashboard-widget-card/dashboard-widget-card.test.d.ts +0 -2
  526. package/dist/shared/components/dashboard-widget-card/dashboard-widget-card.test.d.ts.map +0 -1
  527. package/dist/shared/utilities/formatBadgeCount.test.d.ts +0 -2
  528. package/dist/shared/utilities/formatBadgeCount.test.d.ts.map +0 -1
  529. package/dist/ui/components/atoms/vc-button/vc-button.a11y.test.d.ts +0 -2
  530. package/dist/ui/components/atoms/vc-button/vc-button.a11y.test.d.ts.map +0 -1
  531. package/dist/ui/components/atoms/vc-button/vc-button.test.d.ts +0 -2
  532. package/dist/ui/components/atoms/vc-button/vc-button.test.d.ts.map +0 -1
  533. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.a11y.test.d.ts +0 -2
  534. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.a11y.test.d.ts.map +0 -1
  535. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.test.d.ts +0 -2
  536. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.test.d.ts.map +0 -1
  537. package/dist/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.test.d.ts +0 -2
  538. package/dist/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.test.d.ts.map +0 -1
  539. package/dist/ui/components/molecules/vc-dropdown/vc-dropdown-item.test.d.ts +0 -2
  540. package/dist/ui/components/molecules/vc-dropdown/vc-dropdown-item.test.d.ts.map +0 -1
  541. package/dist/ui/components/molecules/vc-dropdown/vc-dropdown.test.d.ts +0 -2
  542. package/dist/ui/components/molecules/vc-dropdown/vc-dropdown.test.d.ts.map +0 -1
  543. package/dist/ui/components/molecules/vc-input/vc-input.a11y.test.d.ts +0 -2
  544. package/dist/ui/components/molecules/vc-input/vc-input.a11y.test.d.ts.map +0 -1
  545. package/dist/ui/components/molecules/vc-input/vc-input.test.d.ts +0 -2
  546. package/dist/ui/components/molecules/vc-input/vc-input.test.d.ts.map +0 -1
  547. package/dist/ui/components/molecules/vc-input-group/vc-input-group.test.d.ts +0 -2
  548. package/dist/ui/components/molecules/vc-input-group/vc-input-group.test.d.ts.map +0 -1
  549. package/dist/ui/components/molecules/vc-radio-group/vc-radio-group.test.d.ts +0 -2
  550. package/dist/ui/components/molecules/vc-radio-group/vc-radio-group.test.d.ts.map +0 -1
  551. package/dist/ui/components/molecules/vc-select/vc-select.test.d.ts +0 -2
  552. package/dist/ui/components/molecules/vc-select/vc-select.test.d.ts.map +0 -1
  553. package/dist/ui/components/molecules/vc-textarea/vc-textarea.a11y.test.d.ts +0 -2
  554. package/dist/ui/components/molecules/vc-textarea/vc-textarea.a11y.test.d.ts.map +0 -1
  555. package/dist/ui/components/organisms/vc-app/_internal/app-bar/components/AppHubContent.test.d.ts +0 -2
  556. package/dist/ui/components/organisms/vc-app/_internal/app-bar/components/AppHubContent.test.d.ts.map +0 -1
  557. package/dist/ui/components/organisms/vc-app/_internal/layouts/MobileLayout.test.d.ts +0 -2
  558. package/dist/ui/components/organisms/vc-app/_internal/layouts/MobileLayout.test.d.ts.map +0 -1
  559. package/dist/ui/components/organisms/vc-app/_internal/menu/VcAppMenu.test.d.ts +0 -2
  560. package/dist/ui/components/organisms/vc-app/_internal/menu/VcAppMenu.test.d.ts.map +0 -1
  561. package/dist/ui/components/organisms/vc-app/_internal/menu/VcAppMenuGroup.vue.d.ts +0 -21
  562. package/dist/ui/components/organisms/vc-app/_internal/menu/VcAppMenuGroup.vue.d.ts.map +0 -1
  563. package/dist/ui/components/organisms/vc-app/_internal/menu/VcAppMenuItem.vue.d.ts +0 -32
  564. package/dist/ui/components/organisms/vc-app/_internal/menu/VcAppMenuItem.vue.d.ts.map +0 -1
  565. package/dist/ui/components/organisms/vc-app/composables/useShellBootstrap.test.d.ts +0 -2
  566. package/dist/ui/components/organisms/vc-app/composables/useShellBootstrap.test.d.ts.map +0 -1
  567. package/dist/ui/components/organisms/vc-blade/_internal/toolbar/ToolbarBaseButton.test.d.ts +0 -2
  568. package/dist/ui/components/organisms/vc-blade/_internal/toolbar/ToolbarBaseButton.test.d.ts.map +0 -1
  569. package/dist/ui/components/organisms/vc-blade/_internal/widgets/WidgetDropdownItem.test.d.ts +0 -2
  570. package/dist/ui/components/organisms/vc-blade/_internal/widgets/WidgetDropdownItem.test.d.ts.map +0 -1
  571. package/dist/ui/components/organisms/vc-blade/utils.test.d.ts +0 -2
  572. package/dist/ui/components/organisms/vc-blade/utils.test.d.ts.map +0 -1
  573. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.test.d.ts +0 -2
  574. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.test.d.ts.map +0 -1
  575. package/dist/ui/components/organisms/vc-gallery/composables/useGalleryReorder.test.d.ts +0 -2
  576. package/dist/ui/components/organisms/vc-gallery/composables/useGalleryReorder.test.d.ts.map +0 -1
  577. package/dist/ui/components/organisms/vc-gallery/composables/useGalleryUpload.test.d.ts +0 -2
  578. package/dist/ui/components/organisms/vc-gallery/composables/useGalleryUpload.test.d.ts.map +0 -1
  579. package/dist/ui/components/organisms/vc-gallery/composables/useImageLoad.test.d.ts +0 -2
  580. package/dist/ui/components/organisms/vc-gallery/composables/useImageLoad.test.d.ts.map +0 -1
  581. package/dist/ui/components/organisms/vc-gallery/vc-gallery.actions.test.d.ts +0 -2
  582. package/dist/ui/components/organisms/vc-gallery/vc-gallery.actions.test.d.ts.map +0 -1
  583. package/dist/ui/components/organisms/vc-sidebar/vc-sidebar.test.d.ts +0 -2
  584. package/dist/ui/components/organisms/vc-sidebar/vc-sidebar.test.d.ts.map +0 -1
  585. package/dist/ui/components/organisms/vc-table/composables/useDataTableState.test.d.ts +0 -2
  586. package/dist/ui/components/organisms/vc-table/composables/useDataTableState.test.d.ts.map +0 -1
  587. package/dist/ui/components/organisms/vc-table/composables/useMobileCardLayout.test.d.ts +0 -2
  588. package/dist/ui/components/organisms/vc-table/composables/useMobileCardLayout.test.d.ts.map +0 -1
  589. package/dist/ui/components/organisms/vc-table/composables/useTableFilter.test.d.ts +0 -2
  590. package/dist/ui/components/organisms/vc-table/composables/useTableFilter.test.d.ts.map +0 -1
  591. package/dist/vc-editor-BNrG1GAG.js +0 -848
  592. package/dist/vc-editor.css +0 -1
  593. package/dist/vc-slider-Ce0X1_1m.js +0 -83
  594. package/dist/vc-slider.css +0 -1
  595. package/dist/vendor-tiptap-extension-placeholder-DVCL5REL.js +0 -1
  596. package/dist/vendor-tiptap-extension-table-cell-A6UIxsTF.js +0 -1
  597. package/dist/vendor-tiptap-extension-table-header-A6UIxsTF.js +0 -1
  598. package/dist/vendor-tiptap-extension-table-row-A6UIxsTF.js +0 -1
  599. package/dist/vendor-tiptap-pm-BbD2LeB7.js +0 -1
  600. package/shared/components/app-switcher/components/index.ts +0 -1
  601. package/shared/components/app-switcher/components/vc-app-switcher/index.ts +0 -1
  602. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +0 -89
  603. package/shared/components/app-switcher/composables/index.ts +0 -1
  604. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +0 -53
  605. package/shared/components/app-switcher/index.ts +0 -14
  606. package/shared/components/blade-navigation/ARCHITECTURE.md +0 -420
  607. package/shared/components/blade-navigation/MIGRATION.md +0 -224
  608. package/shared/components/blade-navigation/components/index.ts +0 -2
  609. package/shared/components/blade-navigation/components/vc-blade-navigation/_internal/vc-mobile-back-button.vue +0 -78
  610. package/shared/components/blade-navigation/components/vc-blade-navigation/index.ts +0 -2
  611. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation-new.vue +0 -160
  612. package/shared/components/blade-navigation/components/vc-blade-slot/index.ts +0 -1
  613. package/shared/components/blade-navigation/components/vc-blade-slot/vc-blade-slot.vue +0 -143
  614. package/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.ts +0 -188
  615. package/shared/components/blade-navigation/composables/index.ts +0 -5
  616. package/shared/components/blade-navigation/composables/useBladeMessaging.test.ts +0 -189
  617. package/shared/components/blade-navigation/composables/useBladeMessaging.ts +0 -81
  618. package/shared/components/blade-navigation/composables/useBladeNavigationAdapter.ts +0 -513
  619. package/shared/components/blade-navigation/composables/useBladeStack.test.ts +0 -420
  620. package/shared/components/blade-navigation/composables/useBladeStack.ts +0 -335
  621. package/shared/components/blade-navigation/index.ts +0 -4
  622. package/shared/components/blade-navigation/plugin-v2.ts +0 -144
  623. package/shared/components/blade-navigation/types/index.ts +0 -247
  624. package/shared/components/blade-navigation/utils/restoreFromUrl.test.ts +0 -247
  625. package/shared/components/blade-navigation/utils/restoreFromUrl.ts +0 -84
  626. package/shared/components/blade-navigation/utils/urlSync.test.ts +0 -181
  627. package/shared/components/blade-navigation/utils/urlSync.ts +0 -151
  628. package/shared/components/change-password/change-password.vue +0 -231
  629. package/shared/components/change-password/index.ts +0 -10
  630. package/shared/components/change-password-button/change-password-button.stories.ts +0 -63
  631. package/shared/components/change-password-button/change-password-button.vue +0 -23
  632. package/shared/components/change-password-button/index.ts +0 -1
  633. package/shared/components/common/popup/vc-popup-base.vue +0 -133
  634. package/shared/components/common/popup/vc-popup-error.vue +0 -38
  635. package/shared/components/common/popup/vc-popup-info.vue +0 -38
  636. package/shared/components/common/popup/vc-popup-warning.vue +0 -42
  637. package/shared/components/dashboard-charts/ChartContainer.vue +0 -54
  638. package/shared/components/dashboard-charts/ChartLegend.vue +0 -40
  639. package/shared/components/dashboard-charts/ChartTooltip.vue +0 -43
  640. package/shared/components/dashboard-charts/DashboardBarChart.vue +0 -165
  641. package/shared/components/dashboard-charts/DashboardDonutChart.vue +0 -137
  642. package/shared/components/dashboard-charts/DashboardLineChart.vue +0 -170
  643. package/shared/components/dashboard-charts/chart-theme.scss +0 -19
  644. package/shared/components/dashboard-charts/chart-tooltip.scss +0 -48
  645. package/shared/components/dashboard-charts/chart-utils.ts +0 -189
  646. package/shared/components/dashboard-charts/dashboard-charts.stories.ts +0 -393
  647. package/shared/components/dashboard-charts/index.ts +0 -31
  648. package/shared/components/dashboard-charts/types.ts +0 -7
  649. package/shared/components/dashboard-widget-card/dashboard-feed-list.vue +0 -12
  650. package/shared/components/dashboard-widget-card/dashboard-feed-row.vue +0 -28
  651. package/shared/components/dashboard-widget-card/dashboard-stat-item.test.ts +0 -38
  652. package/shared/components/dashboard-widget-card/dashboard-stat-item.vue +0 -55
  653. package/shared/components/dashboard-widget-card/dashboard-widget-card.stories.ts +0 -202
  654. package/shared/components/dashboard-widget-card/dashboard-widget-card.test.ts +0 -72
  655. package/shared/components/dashboard-widget-card/dashboard-widget-card.vue +0 -163
  656. package/shared/components/dashboard-widget-card/index.ts +0 -4
  657. package/shared/components/draggable-dashboard/DraggableDashboard.vue +0 -76
  658. package/shared/components/draggable-dashboard/GridstackDashboard.vue +0 -315
  659. package/shared/components/draggable-dashboard/composables/useGridstack.ts +0 -380
  660. package/shared/components/draggable-dashboard/composables/useGridstackAdapter.ts +0 -245
  661. package/shared/components/draggable-dashboard/draggable-dashboard.stories.ts +0 -175
  662. package/shared/components/draggable-dashboard/index.ts +0 -34
  663. package/shared/components/draggable-dashboard/types.ts +0 -96
  664. package/shared/components/error-interceptor/index.ts +0 -18
  665. package/shared/components/error-interceptor/interceptor.ts +0 -66
  666. package/shared/components/generic-dropdown/generic-dropdown.vue +0 -122
  667. package/shared/components/generic-dropdown/index.ts +0 -7
  668. package/shared/components/index.ts +0 -27
  669. package/shared/components/language-selector/index.ts +0 -10
  670. package/shared/components/language-selector/language-selector.stories.ts +0 -44
  671. package/shared/components/language-selector/language-selector.vue +0 -72
  672. package/shared/components/logout-button/index.ts +0 -1
  673. package/shared/components/logout-button/logout-button.stories.ts +0 -61
  674. package/shared/components/logout-button/logout-button.vue +0 -30
  675. package/shared/components/multilanguage-selector/index.ts +0 -1
  676. package/shared/components/multilanguage-selector/multilanguage-selector.stories.ts +0 -90
  677. package/shared/components/multilanguage-selector/multilanguage-selector.vue +0 -191
  678. package/shared/components/notification-dropdown/_internal/notification/index.ts +0 -1
  679. package/shared/components/notification-dropdown/_internal/notification/notification.vue +0 -78
  680. package/shared/components/notification-dropdown/index.ts +0 -10
  681. package/shared/components/notification-dropdown/notification-dropdown.stories.ts +0 -99
  682. package/shared/components/notification-dropdown/notification-dropdown.vue +0 -40
  683. package/shared/components/notification-template/index.ts +0 -10
  684. package/shared/components/notification-template/notification-template.stories.ts +0 -95
  685. package/shared/components/notification-template/notification-template.vue +0 -131
  686. package/shared/components/notifications/components/index.ts +0 -1
  687. package/shared/components/notifications/components/notification-container/index.ts +0 -153
  688. package/shared/components/notifications/composables/index.ts +0 -2
  689. package/shared/components/notifications/composables/useContainer/index.ts +0 -292
  690. package/shared/components/notifications/composables/useInstance/index.ts +0 -79
  691. package/shared/components/notifications/core/index.ts +0 -1
  692. package/shared/components/notifications/core/notification.ts +0 -202
  693. package/shared/components/notifications/index.ts +0 -6
  694. package/shared/components/notifications/styles/index.scss +0 -133
  695. package/shared/components/notifications/types/index.ts +0 -33
  696. package/shared/components/popup-handler/components/index.ts +0 -1
  697. package/shared/components/popup-handler/components/vc-popup-container/index.ts +0 -3
  698. package/shared/components/popup-handler/components/vc-popup-container/vc-popup-container.vue +0 -49
  699. package/shared/components/popup-handler/composables/index.ts +0 -1
  700. package/shared/components/popup-handler/composables/usePopup/index.ts +0 -209
  701. package/shared/components/popup-handler/index.ts +0 -19
  702. package/shared/components/popup-handler/keys.ts +0 -4
  703. package/shared/components/popup-handler/plugin.ts +0 -25
  704. package/shared/components/popup-handler/types/index.ts +0 -25
  705. package/shared/components/popup-handler/utils/index.ts +0 -9
  706. package/shared/components/settings-menu/index.ts +0 -1
  707. package/shared/components/settings-menu/settings-menu.stories.ts +0 -104
  708. package/shared/components/settings-menu/settings-menu.vue +0 -59
  709. package/shared/components/settings-menu-item/index.ts +0 -1
  710. package/shared/components/settings-menu-item/settings-menu-item.stories.ts +0 -194
  711. package/shared/components/settings-menu-item/settings-menu-item.vue +0 -168
  712. package/shared/components/sidebar/index.ts +0 -7
  713. package/shared/components/sidebar/sidebar.vue +0 -80
  714. package/shared/components/sign-in/external-provider.vue +0 -49
  715. package/shared/components/sign-in/external-providers.vue +0 -26
  716. package/shared/components/sign-in/index.ts +0 -1
  717. package/shared/components/sign-in/useExternalProvider.ts +0 -103
  718. package/shared/components/theme-selector/index.ts +0 -1
  719. package/shared/components/theme-selector/theme-selector.stories.ts +0 -56
  720. package/shared/components/theme-selector/theme-selector.vue +0 -51
  721. package/shared/components/user-dropdown-button/_internal/user-info.vue +0 -114
  722. package/shared/components/user-dropdown-button/_internal/user-sidebar.vue +0 -50
  723. package/shared/components/user-dropdown-button/index.ts +0 -10
  724. package/shared/components/user-dropdown-button/user-dropdown-button.stories.ts +0 -153
  725. package/shared/components/user-dropdown-button/user-dropdown-button.vue +0 -142
  726. package/shared/composables/index.ts +0 -5
  727. package/shared/composables/useExternalWidgets.ts +0 -107
  728. package/shared/composables/useMenuExpanded.ts +0 -64
  729. package/shared/composables/useModificationTracker/index.ts +0 -116
  730. package/shared/composables/useTableSelection.ts +0 -151
  731. package/shared/composables/useTableSort.ts +0 -107
  732. package/shared/index.ts +0 -24
  733. package/shared/modules/assets/components/assets-details/assets-details.vue +0 -238
  734. package/shared/modules/assets/components/assets-details/index.ts +0 -3
  735. package/shared/modules/assets/components/index.ts +0 -1
  736. package/shared/modules/assets/index.ts +0 -12
  737. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +0 -442
  738. package/shared/modules/assets-manager/components/assets-manager/index.ts +0 -3
  739. package/shared/modules/assets-manager/components/index.ts +0 -1
  740. package/shared/modules/assets-manager/index.ts +0 -13
  741. package/shared/modules/dynamic/components/FIELD_MAP.ts +0 -53
  742. package/shared/modules/dynamic/components/SchemaRender.ts +0 -102
  743. package/shared/modules/dynamic/components/factories.ts +0 -242
  744. package/shared/modules/dynamic/components/fields/Button.ts +0 -44
  745. package/shared/modules/dynamic/components/fields/Card.ts +0 -119
  746. package/shared/modules/dynamic/components/fields/Checkbox.ts +0 -53
  747. package/shared/modules/dynamic/components/fields/ContentField.ts +0 -33
  748. package/shared/modules/dynamic/components/fields/CustomComponent.ts +0 -29
  749. package/shared/modules/dynamic/components/fields/DynamicProperty.ts +0 -154
  750. package/shared/modules/dynamic/components/fields/EditorField.ts +0 -46
  751. package/shared/modules/dynamic/components/fields/Fieldset.ts +0 -66
  752. package/shared/modules/dynamic/components/fields/GalleryField.ts +0 -162
  753. package/shared/modules/dynamic/components/fields/ImageField.ts +0 -35
  754. package/shared/modules/dynamic/components/fields/InputCurrency.ts +0 -79
  755. package/shared/modules/dynamic/components/fields/InputField.ts +0 -81
  756. package/shared/modules/dynamic/components/fields/MultivalueField.ts +0 -68
  757. package/shared/modules/dynamic/components/fields/RadioButtonGroup.ts +0 -83
  758. package/shared/modules/dynamic/components/fields/RatingField.ts +0 -28
  759. package/shared/modules/dynamic/components/fields/SelectField.ts +0 -72
  760. package/shared/modules/dynamic/components/fields/StatusField.ts +0 -110
  761. package/shared/modules/dynamic/components/fields/SwitchField.ts +0 -29
  762. package/shared/modules/dynamic/components/fields/Table.ts +0 -194
  763. package/shared/modules/dynamic/components/fields/TextareaField.ts +0 -46
  764. package/shared/modules/dynamic/components/fields/ValidationField.ts +0 -54
  765. package/shared/modules/dynamic/components/fields/VideoField.ts +0 -30
  766. package/shared/modules/dynamic/components/fields/props.ts +0 -39
  767. package/shared/modules/dynamic/components/index.ts +0 -4
  768. package/shared/modules/dynamic/composables/index.ts +0 -4
  769. package/shared/modules/dynamic/composables/useDynamicViewsUtils/index.ts +0 -46
  770. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +0 -441
  771. package/shared/modules/dynamic/composables/useTableTemplates/index.ts +0 -67
  772. package/shared/modules/dynamic/composables/useToolbarReducer/index.ts +0 -70
  773. package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +0 -145
  774. package/shared/modules/dynamic/factories/base/useListFactory.ts +0 -69
  775. package/shared/modules/dynamic/factories/index.ts +0 -4
  776. package/shared/modules/dynamic/factories/types/index.ts +0 -220
  777. package/shared/modules/dynamic/helpers/getters.ts +0 -12
  778. package/shared/modules/dynamic/helpers/methodHandler.ts +0 -22
  779. package/shared/modules/dynamic/helpers/nodeBuilder.ts +0 -242
  780. package/shared/modules/dynamic/helpers/override.ts +0 -153
  781. package/shared/modules/dynamic/helpers/safeIn.ts +0 -6
  782. package/shared/modules/dynamic/helpers/setters.ts +0 -24
  783. package/shared/modules/dynamic/helpers/unrefNested.ts +0 -14
  784. package/shared/modules/dynamic/helpers/unwrapInterpolation.ts +0 -16
  785. package/shared/modules/dynamic/index.ts +0 -314
  786. package/shared/modules/dynamic/keys.ts +0 -3
  787. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +0 -575
  788. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +0 -755
  789. package/shared/modules/dynamic/pages/index.ts +0 -4
  790. package/shared/modules/dynamic/types/index.ts +0 -1220
  791. package/shared/modules/dynamic/types/models.ts +0 -186
  792. package/shared/modules/index.ts +0 -3
  793. package/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue +0 -209
  794. package/shared/pages/ChangePasswordPage/components/change-password/change-password.stories.ts +0 -44
  795. package/shared/pages/ChangePasswordPage/components/change-password/index.ts +0 -3
  796. package/shared/pages/ChangePasswordPage/components/index.ts +0 -1
  797. package/shared/pages/ChangePasswordPage/index.ts +0 -1
  798. package/shared/pages/ChangePasswordPage/plugin.ts +0 -4
  799. package/shared/pages/ForgotPasswordPage/components/forgot-password/ForgotPassword.vue +0 -155
  800. package/shared/pages/ForgotPasswordPage/components/forgot-password/forgot-password.stories.ts +0 -38
  801. package/shared/pages/ForgotPasswordPage/components/forgot-password/index.ts +0 -3
  802. package/shared/pages/ForgotPasswordPage/components/index.ts +0 -1
  803. package/shared/pages/ForgotPasswordPage/index.ts +0 -1
  804. package/shared/pages/ForgotPasswordPage/plugin.ts +0 -4
  805. package/shared/pages/InvitePage/components/index.ts +0 -1
  806. package/shared/pages/InvitePage/components/invite/Invite.vue +0 -182
  807. package/shared/pages/InvitePage/components/invite/index.ts +0 -3
  808. package/shared/pages/InvitePage/components/invite/invite.stories.ts +0 -64
  809. package/shared/pages/InvitePage/index.ts +0 -1
  810. package/shared/pages/InvitePage/plugin.ts +0 -4
  811. package/shared/pages/LoginPage/components/index.ts +0 -1
  812. package/shared/pages/LoginPage/components/login/Login.vue +0 -226
  813. package/shared/pages/LoginPage/components/login/README.md +0 -52
  814. package/shared/pages/LoginPage/components/login/index.ts +0 -3
  815. package/shared/pages/LoginPage/components/login/login.stories.ts +0 -52
  816. package/shared/pages/LoginPage/index.ts +0 -1
  817. package/shared/pages/LoginPage/plugin.ts +0 -4
  818. package/shared/pages/ResetPasswordPage/components/index.ts +0 -1
  819. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +0 -176
  820. package/shared/pages/ResetPasswordPage/components/reset-password/index.ts +0 -3
  821. package/shared/pages/ResetPasswordPage/components/reset-password/reset-password.stories.ts +0 -64
  822. package/shared/pages/ResetPasswordPage/index.ts +0 -1
  823. package/shared/pages/ResetPasswordPage/plugin.ts +0 -4
  824. package/shared/pages/_storybook-helpers.ts +0 -71
  825. package/shared/pages/index.ts +0 -5
  826. package/shared/pages/plugin.ts +0 -5
  827. package/shared/utilities/assets.ts +0 -43
  828. package/shared/utilities/colorUtils.ts +0 -64
  829. package/shared/utilities/formatBadgeCount.test.ts +0 -25
  830. package/shared/utilities/formatBadgeCount.ts +0 -15
  831. package/shared/utilities/index.ts +0 -4
  832. package/shared/utilities/vueUtils.ts +0 -50
  833. package/ui/components/atoms/index.ts +0 -21
  834. package/ui/components/atoms/vc-badge/index.ts +0 -1
  835. package/ui/components/atoms/vc-badge/vc-badge.stories.ts +0 -522
  836. package/ui/components/atoms/vc-badge/vc-badge.vue +0 -353
  837. package/ui/components/atoms/vc-banner/index.ts +0 -1
  838. package/ui/components/atoms/vc-banner/vc-banner.stories.ts +0 -259
  839. package/ui/components/atoms/vc-banner/vc-banner.vue +0 -225
  840. package/ui/components/atoms/vc-button/index.ts +0 -3
  841. package/ui/components/atoms/vc-button/types.ts +0 -28
  842. package/ui/components/atoms/vc-button/vc-button-group.stories.ts +0 -172
  843. package/ui/components/atoms/vc-button/vc-button-group.vue +0 -101
  844. package/ui/components/atoms/vc-button/vc-button.a11y.test.ts +0 -46
  845. package/ui/components/atoms/vc-button/vc-button.stories.ts +0 -431
  846. package/ui/components/atoms/vc-button/vc-button.test.ts +0 -75
  847. package/ui/components/atoms/vc-button/vc-button.vue +0 -355
  848. package/ui/components/atoms/vc-card/index.ts +0 -3
  849. package/ui/components/atoms/vc-card/vc-card.stories.ts +0 -342
  850. package/ui/components/atoms/vc-card/vc-card.vue +0 -217
  851. package/ui/components/atoms/vc-col/index.ts +0 -1
  852. package/ui/components/atoms/vc-col/vc-col.stories.ts +0 -164
  853. package/ui/components/atoms/vc-col/vc-col.vue +0 -34
  854. package/ui/components/atoms/vc-container/index.ts +0 -10
  855. package/ui/components/atoms/vc-container/vc-container.stories.ts +0 -219
  856. package/ui/components/atoms/vc-container/vc-container.vue +0 -96
  857. package/ui/components/atoms/vc-hint/index.ts +0 -10
  858. package/ui/components/atoms/vc-hint/vc-hint.stories.ts +0 -144
  859. package/ui/components/atoms/vc-hint/vc-hint.vue +0 -42
  860. package/ui/components/atoms/vc-icon/README.md +0 -273
  861. package/ui/components/atoms/vc-icon/composables/index.ts +0 -2
  862. package/ui/components/atoms/vc-icon/composables/use-icon-type.ts +0 -83
  863. package/ui/components/atoms/vc-icon/composables/use-icon.ts +0 -129
  864. package/ui/components/atoms/vc-icon/icons/MenuBurgerIcon.vue +0 -24
  865. package/ui/components/atoms/vc-icon/icons/index.ts +0 -1
  866. package/ui/components/atoms/vc-icon/index.ts +0 -3
  867. package/ui/components/atoms/vc-icon/types.ts +0 -36
  868. package/ui/components/atoms/vc-icon/vc-bootstrap-icon.vue +0 -124
  869. package/ui/components/atoms/vc-icon/vc-fontawesome-icon.vue +0 -143
  870. package/ui/components/atoms/vc-icon/vc-icon.stories.ts +0 -818
  871. package/ui/components/atoms/vc-icon/vc-icon.vue +0 -609
  872. package/ui/components/atoms/vc-icon/vc-lucide-icon.vue +0 -199
  873. package/ui/components/atoms/vc-icon/vc-material-icon.vue +0 -128
  874. package/ui/components/atoms/vc-icon/vc-svg-icon.vue +0 -168
  875. package/ui/components/atoms/vc-image/index.ts +0 -1
  876. package/ui/components/atoms/vc-image/vc-image.stories.ts +0 -309
  877. package/ui/components/atoms/vc-image/vc-image.vue +0 -173
  878. package/ui/components/atoms/vc-label/index.ts +0 -1
  879. package/ui/components/atoms/vc-label/vc-label.stories.ts +0 -137
  880. package/ui/components/atoms/vc-label/vc-label.vue +0 -132
  881. package/ui/components/atoms/vc-link/index.ts +0 -10
  882. package/ui/components/atoms/vc-link/vc-link.stories.ts +0 -154
  883. package/ui/components/atoms/vc-link/vc-link.vue +0 -61
  884. package/ui/components/atoms/vc-loading/index.ts +0 -3
  885. package/ui/components/atoms/vc-loading/vc-loading.vue +0 -71
  886. package/ui/components/atoms/vc-progress/index.ts +0 -10
  887. package/ui/components/atoms/vc-progress/vc-progress.stories.ts +0 -182
  888. package/ui/components/atoms/vc-progress/vc-progress.vue +0 -74
  889. package/ui/components/atoms/vc-row/index.ts +0 -1
  890. package/ui/components/atoms/vc-row/vc-row.stories.ts +0 -143
  891. package/ui/components/atoms/vc-row/vc-row.vue +0 -27
  892. package/ui/components/atoms/vc-scrollable-container/index.ts +0 -1
  893. package/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.vue +0 -119
  894. package/ui/components/atoms/vc-skeleton/index.ts +0 -1
  895. package/ui/components/atoms/vc-skeleton/vc-skeleton.stories.ts +0 -246
  896. package/ui/components/atoms/vc-skeleton/vc-skeleton.vue +0 -115
  897. package/ui/components/atoms/vc-status/index.ts +0 -1
  898. package/ui/components/atoms/vc-status/vc-status.stories.ts +0 -235
  899. package/ui/components/atoms/vc-status/vc-status.vue +0 -131
  900. package/ui/components/atoms/vc-status-icon/index.ts +0 -1
  901. package/ui/components/atoms/vc-status-icon/vc-status-icon.stories.ts +0 -129
  902. package/ui/components/atoms/vc-status-icon/vc-status-icon.vue +0 -48
  903. package/ui/components/atoms/vc-tooltip/index.ts +0 -1
  904. package/ui/components/atoms/vc-tooltip/vc-tooltip.stories.ts +0 -409
  905. package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +0 -301
  906. package/ui/components/atoms/vc-video/index.ts +0 -1
  907. package/ui/components/atoms/vc-video/vc-video.stories.ts +0 -150
  908. package/ui/components/atoms/vc-video/vc-video.vue +0 -88
  909. package/ui/components/atoms/vc-widget/index.ts +0 -3
  910. package/ui/components/atoms/vc-widget/vc-widget.stories.ts +0 -285
  911. package/ui/components/atoms/vc-widget/vc-widget.vue +0 -174
  912. package/ui/components/index.ts +0 -8
  913. package/ui/components/molecules/index.ts +0 -26
  914. package/ui/components/molecules/vc-accordion/_internal/vc-accordion-item/vc-accordion-item.vue +0 -216
  915. package/ui/components/molecules/vc-accordion/index.ts +0 -11
  916. package/ui/components/molecules/vc-accordion/vc-accordion.stories.ts +0 -526
  917. package/ui/components/molecules/vc-accordion/vc-accordion.vue +0 -176
  918. package/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue +0 -98
  919. package/ui/components/molecules/vc-breadcrumbs/index.ts +0 -1
  920. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.stories.ts +0 -509
  921. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +0 -176
  922. package/ui/components/molecules/vc-checkbox/index.ts +0 -3
  923. package/ui/components/molecules/vc-checkbox/vc-checkbox.a11y.test.ts +0 -39
  924. package/ui/components/molecules/vc-checkbox/vc-checkbox.stories.ts +0 -356
  925. package/ui/components/molecules/vc-checkbox/vc-checkbox.test.ts +0 -75
  926. package/ui/components/molecules/vc-checkbox/vc-checkbox.vue +0 -355
  927. package/ui/components/molecules/vc-checkbox-group/index.ts +0 -2
  928. package/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.stories.ts +0 -258
  929. package/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.test.ts +0 -40
  930. package/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.vue +0 -103
  931. package/ui/components/molecules/vc-color-input/index.ts +0 -1
  932. package/ui/components/molecules/vc-color-input/vc-color-input.stories.ts +0 -152
  933. package/ui/components/molecules/vc-color-input/vc-color-input.vue +0 -398
  934. package/ui/components/molecules/vc-date-picker/index.ts +0 -1
  935. package/ui/components/molecules/vc-date-picker/vc-date-picker.stories.ts +0 -168
  936. package/ui/components/molecules/vc-date-picker/vc-date-picker.vue +0 -427
  937. package/ui/components/molecules/vc-dropdown/_internal/VcDropdownItem.vue +0 -78
  938. package/ui/components/molecules/vc-dropdown/index.ts +0 -2
  939. package/ui/components/molecules/vc-dropdown/vc-dropdown-item.test.ts +0 -59
  940. package/ui/components/molecules/vc-dropdown/vc-dropdown.stories.ts +0 -394
  941. package/ui/components/molecules/vc-dropdown/vc-dropdown.test.ts +0 -54
  942. package/ui/components/molecules/vc-dropdown/vc-dropdown.vue +0 -546
  943. package/ui/components/molecules/vc-dropdown-panel/index.ts +0 -1
  944. package/ui/components/molecules/vc-dropdown-panel/panel-anchor-registry.ts +0 -5
  945. package/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.vue +0 -326
  946. package/ui/components/molecules/vc-editor/_internal/extensions/font-size.ts +0 -59
  947. package/ui/components/molecules/vc-editor/_internal/toolbar-types.ts +0 -57
  948. package/ui/components/molecules/vc-editor/_internal/vc-editor-button.vue +0 -103
  949. package/ui/components/molecules/vc-editor/_internal/vc-editor-custom-button.vue +0 -79
  950. package/ui/components/molecules/vc-editor/_internal/vc-editor-font-selector.vue +0 -215
  951. package/ui/components/molecules/vc-editor/_internal/vc-editor-toolbar.vue +0 -316
  952. package/ui/components/molecules/vc-editor/index.ts +0 -15
  953. package/ui/components/molecules/vc-editor/vc-editor.stories.ts +0 -417
  954. package/ui/components/molecules/vc-editor/vc-editor.vue +0 -833
  955. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +0 -96
  956. package/ui/components/molecules/vc-field/index.ts +0 -1
  957. package/ui/components/molecules/vc-field/vc-field.stories.ts +0 -179
  958. package/ui/components/molecules/vc-field/vc-field.vue +0 -119
  959. package/ui/components/molecules/vc-file-upload/index.ts +0 -1
  960. package/ui/components/molecules/vc-file-upload/vc-file-upload.stories.ts +0 -472
  961. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +0 -271
  962. package/ui/components/molecules/vc-form/index.ts +0 -10
  963. package/ui/components/molecules/vc-form/vc-form.stories.ts +0 -168
  964. package/ui/components/molecules/vc-form/vc-form.vue +0 -38
  965. package/ui/components/molecules/vc-input/index.ts +0 -1
  966. package/ui/components/molecules/vc-input/vc-input.a11y.test.ts +0 -57
  967. package/ui/components/molecules/vc-input/vc-input.stories.ts +0 -1004
  968. package/ui/components/molecules/vc-input/vc-input.test.ts +0 -114
  969. package/ui/components/molecules/vc-input/vc-input.vue +0 -731
  970. package/ui/components/molecules/vc-input-currency/index.ts +0 -1
  971. package/ui/components/molecules/vc-input-currency/vc-input-currency.stories.ts +0 -532
  972. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +0 -199
  973. package/ui/components/molecules/vc-input-dropdown/index.ts +0 -3
  974. package/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.stories.ts +0 -761
  975. package/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.vue +0 -305
  976. package/ui/components/molecules/vc-input-group/context.ts +0 -10
  977. package/ui/components/molecules/vc-input-group/index.ts +0 -2
  978. package/ui/components/molecules/vc-input-group/vc-input-group.stories.ts +0 -355
  979. package/ui/components/molecules/vc-input-group/vc-input-group.test.ts +0 -39
  980. package/ui/components/molecules/vc-input-group/vc-input-group.vue +0 -173
  981. package/ui/components/molecules/vc-multivalue/_internal/MultivalueDropdown.vue +0 -216
  982. package/ui/components/molecules/vc-multivalue/_internal/MultivalueTrigger.vue +0 -207
  983. package/ui/components/molecules/vc-multivalue/composables/index.ts +0 -6
  984. package/ui/components/molecules/vc-multivalue/composables/useMultivalueColor.ts +0 -50
  985. package/ui/components/molecules/vc-multivalue/composables/useMultivalueDropdown.ts +0 -126
  986. package/ui/components/molecules/vc-multivalue/composables/useMultivalueInput.ts +0 -64
  987. package/ui/components/molecules/vc-multivalue/composables/useMultivalueMode.ts +0 -32
  988. package/ui/components/molecules/vc-multivalue/composables/useMultivalueOptions.ts +0 -27
  989. package/ui/components/molecules/vc-multivalue/composables/useMultivalueValues.ts +0 -50
  990. package/ui/components/molecules/vc-multivalue/index.ts +0 -1
  991. package/ui/components/molecules/vc-multivalue/vc-multivalue.stories.ts +0 -561
  992. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +0 -547
  993. package/ui/components/molecules/vc-pagination/index.ts +0 -3
  994. package/ui/components/molecules/vc-pagination/vc-pagination.stories.ts +0 -259
  995. package/ui/components/molecules/vc-pagination/vc-pagination.vue +0 -244
  996. package/ui/components/molecules/vc-radio-button/index.ts +0 -1
  997. package/ui/components/molecules/vc-radio-button/vc-radio-button.stories.ts +0 -283
  998. package/ui/components/molecules/vc-radio-button/vc-radio-button.vue +0 -195
  999. package/ui/components/molecules/vc-radio-group/index.ts +0 -2
  1000. package/ui/components/molecules/vc-radio-group/vc-radio-group.stories.ts +0 -248
  1001. package/ui/components/molecules/vc-radio-group/vc-radio-group.test.ts +0 -51
  1002. package/ui/components/molecules/vc-radio-group/vc-radio-group.vue +0 -92
  1003. package/ui/components/molecules/vc-rating/index.ts +0 -1
  1004. package/ui/components/molecules/vc-rating/vc-rating.stories.ts +0 -363
  1005. package/ui/components/molecules/vc-rating/vc-rating.vue +0 -128
  1006. package/ui/components/molecules/vc-select/_internal/SelectDropdown.vue +0 -200
  1007. package/ui/components/molecules/vc-select/_internal/SelectTrigger.vue +0 -301
  1008. package/ui/components/molecules/vc-select/composables/index.ts +0 -7
  1009. package/ui/components/molecules/vc-select/composables/useSelectDefaultValue.ts +0 -106
  1010. package/ui/components/molecules/vc-select/composables/useSelectDropdown.ts +0 -88
  1011. package/ui/components/molecules/vc-select/composables/useSelectOptions.ts +0 -125
  1012. package/ui/components/molecules/vc-select/composables/useSelectSearch.ts +0 -83
  1013. package/ui/components/molecules/vc-select/composables/useSelectSelection.ts +0 -170
  1014. package/ui/components/molecules/vc-select/composables/useSelectValueMapping.ts +0 -57
  1015. package/ui/components/molecules/vc-select/composables/useSelectVisibility.ts +0 -60
  1016. package/ui/components/molecules/vc-select/index.ts +0 -2
  1017. package/ui/components/molecules/vc-select/vc-select.stories.ts +0 -1730
  1018. package/ui/components/molecules/vc-select/vc-select.test.ts +0 -89
  1019. package/ui/components/molecules/vc-select/vc-select.vue +0 -862
  1020. package/ui/components/molecules/vc-slider/index.ts +0 -21
  1021. package/ui/components/molecules/vc-slider/vc-slider.stories.ts +0 -224
  1022. package/ui/components/molecules/vc-slider/vc-slider.vue +0 -148
  1023. package/ui/components/molecules/vc-switch/index.ts +0 -1
  1024. package/ui/components/molecules/vc-switch/vc-switch.stories.ts +0 -324
  1025. package/ui/components/molecules/vc-switch/vc-switch.vue +0 -237
  1026. package/ui/components/molecules/vc-textarea/index.ts +0 -1
  1027. package/ui/components/molecules/vc-textarea/vc-textarea.a11y.test.ts +0 -44
  1028. package/ui/components/molecules/vc-textarea/vc-textarea.stories.ts +0 -326
  1029. package/ui/components/molecules/vc-textarea/vc-textarea.vue +0 -229
  1030. package/ui/components/molecules/vc-toast/index.ts +0 -1
  1031. package/ui/components/molecules/vc-toast/vc-toast.stories.ts +0 -559
  1032. package/ui/components/molecules/vc-toast/vc-toast.vue +0 -649
  1033. package/ui/components/organisms/blade-navigation-v2.stories.ts +0 -611
  1034. package/ui/components/organisms/index.ts +0 -9
  1035. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppBarMobileActions.vue +0 -128
  1036. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppBarOverlay.vue +0 -91
  1037. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppBarWidgetContent.vue +0 -40
  1038. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppBarWidgetItem.vue +0 -154
  1039. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppBarWidgetsMenu.vue +0 -110
  1040. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppHubContent.test.ts +0 -174
  1041. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppHubContent.vue +0 -730
  1042. package/ui/components/organisms/vc-app/_internal/app-bar/components/AppHubPopover.vue +0 -79
  1043. package/ui/components/organisms/vc-app/_internal/app-bar/components/MenuSidebar.vue +0 -196
  1044. package/ui/components/organisms/vc-app/_internal/app-bar/composables/useAppBarMobileActions.ts +0 -50
  1045. package/ui/components/organisms/vc-app/_internal/app-bar/composables/useAppBarState.ts +0 -35
  1046. package/ui/components/organisms/vc-app/_internal/app-bar/composables/useAppBarWidgets.ts +0 -25
  1047. package/ui/components/organisms/vc-app/_internal/app-bar/composables/useAppHub.ts +0 -70
  1048. package/ui/components/organisms/vc-app/_internal/app-bar/composables/useToggleableContent.ts +0 -67
  1049. package/ui/components/organisms/vc-app/_internal/layouts/DesktopLayout.vue +0 -365
  1050. package/ui/components/organisms/vc-app/_internal/layouts/MobileLayout.test.ts +0 -151
  1051. package/ui/components/organisms/vc-app/_internal/layouts/MobileLayout.vue +0 -587
  1052. package/ui/components/organisms/vc-app/_internal/menu/VcAppMenu.test.ts +0 -43
  1053. package/ui/components/organisms/vc-app/_internal/menu/VcAppMenu.vue +0 -158
  1054. package/ui/components/organisms/vc-app/_internal/menu/VcAppMenuGroup.vue +0 -160
  1055. package/ui/components/organisms/vc-app/_internal/menu/VcAppMenuItem.vue +0 -216
  1056. package/ui/components/organisms/vc-app/_internal/menu/composables/useBadge.ts +0 -82
  1057. package/ui/components/organisms/vc-app/_internal/menu/composables/useMenuActiveState.ts +0 -41
  1058. package/ui/components/organisms/vc-app/_internal/sidebar/SidebarCollapseButton.vue +0 -47
  1059. package/ui/components/organisms/vc-app/_internal/sidebar/SidebarContent.vue +0 -123
  1060. package/ui/components/organisms/vc-app/_internal/sidebar/SidebarHeader.vue +0 -242
  1061. package/ui/components/organisms/vc-app/composables/useShellBootstrap.test.ts +0 -222
  1062. package/ui/components/organisms/vc-app/composables/useShellBootstrap.ts +0 -101
  1063. package/ui/components/organisms/vc-app/composables/useShellLifecycle.ts +0 -39
  1064. package/ui/components/organisms/vc-app/composables/useShellNavigation.ts +0 -57
  1065. package/ui/components/organisms/vc-app/composition/README.md +0 -78
  1066. package/ui/components/organisms/vc-app/composition/app-bar/index.ts +0 -6
  1067. package/ui/components/organisms/vc-app/composition/index.ts +0 -6
  1068. package/ui/components/organisms/vc-app/composition/layouts/index.ts +0 -2
  1069. package/ui/components/organisms/vc-app/composition/menu/index.ts +0 -6
  1070. package/ui/components/organisms/vc-app/composition/shell/index.ts +0 -3
  1071. package/ui/components/organisms/vc-app/composition/sidebar/index.ts +0 -3
  1072. package/ui/components/organisms/vc-app/composition/state/index.ts +0 -6
  1073. package/ui/components/organisms/vc-app/index.ts +0 -2
  1074. package/ui/components/organisms/vc-app/vc-app-shell.stories.ts +0 -762
  1075. package/ui/components/organisms/vc-app/vc-app.vue +0 -252
  1076. package/ui/components/organisms/vc-auth-layout/index.ts +0 -1
  1077. package/ui/components/organisms/vc-auth-layout/vc-auth-layout.vue +0 -193
  1078. package/ui/components/organisms/vc-blade/_internal/BladeContentSkeleton.vue +0 -113
  1079. package/ui/components/organisms/vc-blade/_internal/BladeHeader.vue +0 -263
  1080. package/ui/components/organisms/vc-blade/_internal/BladeHeaderSkeleton.vue +0 -52
  1081. package/ui/components/organisms/vc-blade/_internal/BladeStatusBanners.vue +0 -195
  1082. package/ui/components/organisms/vc-blade/_internal/BladeToolbar.vue +0 -73
  1083. package/ui/components/organisms/vc-blade/_internal/BladeToolbarSkeleton.vue +0 -34
  1084. package/ui/components/organisms/vc-blade/_internal/composables/useBladeError.ts +0 -44
  1085. package/ui/components/organisms/vc-blade/_internal/composables/useToolbarRegistration.ts +0 -116
  1086. package/ui/components/organisms/vc-blade/_internal/toolbar/ToolbarBaseButton.test.ts +0 -79
  1087. package/ui/components/organisms/vc-blade/_internal/toolbar/ToolbarBaseButton.vue +0 -135
  1088. package/ui/components/organisms/vc-blade/_internal/toolbar/ToolbarCircleButton.vue +0 -101
  1089. package/ui/components/organisms/vc-blade/_internal/toolbar/ToolbarDesktop.vue +0 -125
  1090. package/ui/components/organisms/vc-blade/_internal/toolbar/ToolbarMobile.vue +0 -417
  1091. package/ui/components/organisms/vc-blade/_internal/toolbar/toolbar-button-props.ts +0 -14
  1092. package/ui/components/organisms/vc-blade/_internal/widgets/WidgetContainer.vue +0 -38
  1093. package/ui/components/organisms/vc-blade/_internal/widgets/WidgetContainerDesktop.vue +0 -125
  1094. package/ui/components/organisms/vc-blade/_internal/widgets/WidgetContainerMobile.vue +0 -114
  1095. package/ui/components/organisms/vc-blade/_internal/widgets/WidgetDropdownItem.test.ts +0 -56
  1096. package/ui/components/organisms/vc-blade/_internal/widgets/WidgetDropdownItem.vue +0 -91
  1097. package/ui/components/organisms/vc-blade/constants.ts +0 -19
  1098. package/ui/components/organisms/vc-blade/index.ts +0 -1
  1099. package/ui/components/organisms/vc-blade/utils.test.ts +0 -82
  1100. package/ui/components/organisms/vc-blade/utils.ts +0 -48
  1101. package/ui/components/organisms/vc-blade/vc-blade.stories.ts +0 -502
  1102. package/ui/components/organisms/vc-blade/vc-blade.vue +0 -312
  1103. package/ui/components/organisms/vc-dynamic-property/index.ts +0 -1
  1104. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +0 -618
  1105. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.test.ts +0 -48
  1106. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue +0 -244
  1107. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +0 -351
  1108. package/ui/components/organisms/vc-gallery/composables/index.ts +0 -4
  1109. package/ui/components/organisms/vc-gallery/composables/useGalleryPreview.ts +0 -26
  1110. package/ui/components/organisms/vc-gallery/composables/useGalleryReorder.test.ts +0 -73
  1111. package/ui/components/organisms/vc-gallery/composables/useGalleryReorder.ts +0 -183
  1112. package/ui/components/organisms/vc-gallery/composables/useGalleryUpload.test.ts +0 -89
  1113. package/ui/components/organisms/vc-gallery/composables/useGalleryUpload.ts +0 -43
  1114. package/ui/components/organisms/vc-gallery/composables/useImageLoad.test.ts +0 -34
  1115. package/ui/components/organisms/vc-gallery/composables/useImageLoad.ts +0 -26
  1116. package/ui/components/organisms/vc-gallery/index.ts +0 -3
  1117. package/ui/components/organisms/vc-gallery/vc-gallery.actions.test.ts +0 -76
  1118. package/ui/components/organisms/vc-gallery/vc-gallery.stories.ts +0 -99
  1119. package/ui/components/organisms/vc-gallery/vc-gallery.vue +0 -424
  1120. package/ui/components/organisms/vc-image-upload/index.ts +0 -1
  1121. package/ui/components/organisms/vc-image-upload/vc-image-upload.stories.ts +0 -47
  1122. package/ui/components/organisms/vc-image-upload/vc-image-upload.vue +0 -251
  1123. package/ui/components/organisms/vc-popup/index.ts +0 -3
  1124. package/ui/components/organisms/vc-popup/vc-popup.stories.ts +0 -504
  1125. package/ui/components/organisms/vc-popup/vc-popup.vue +0 -405
  1126. package/ui/components/organisms/vc-sidebar/index.ts +0 -1
  1127. package/ui/components/organisms/vc-sidebar/vc-sidebar.stories.ts +0 -251
  1128. package/ui/components/organisms/vc-sidebar/vc-sidebar.test.ts +0 -125
  1129. package/ui/components/organisms/vc-sidebar/vc-sidebar.vue +0 -787
  1130. package/ui/components/organisms/vc-table/VcDataTable.vue +0 -1835
  1131. package/ui/components/organisms/vc-table/VcTableAdapter.vue +0 -574
  1132. package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue +0 -134
  1133. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +0 -451
  1134. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +0 -123
  1135. package/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue +0 -38
  1136. package/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue +0 -88
  1137. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +0 -238
  1138. package/ui/components/organisms/vc-table/base/BaseVcDataTable.ts +0 -541
  1139. package/ui/components/organisms/vc-table/components/ColumnFilter.vue +0 -459
  1140. package/ui/components/organisms/vc-table/components/ColumnSwitcherButton.vue +0 -43
  1141. package/ui/components/organisms/vc-table/components/DataTableBody.vue +0 -363
  1142. package/ui/components/organisms/vc-table/components/DataTableCellRenderer.vue +0 -396
  1143. package/ui/components/organisms/vc-table/components/DataTableHeader.vue +0 -373
  1144. package/ui/components/organisms/vc-table/components/DataTableRow.vue +0 -370
  1145. package/ui/components/organisms/vc-table/components/GlobalFiltersButton.vue +0 -58
  1146. package/ui/components/organisms/vc-table/components/GlobalFiltersPanel.vue +0 -440
  1147. package/ui/components/organisms/vc-table/components/Table.vue +0 -101
  1148. package/ui/components/organisms/vc-table/components/TableActions.vue +0 -125
  1149. package/ui/components/organisms/vc-table/components/TableAddRowButton.vue +0 -55
  1150. package/ui/components/organisms/vc-table/components/TableBody.vue +0 -79
  1151. package/ui/components/organisms/vc-table/components/TableCell.vue +0 -160
  1152. package/ui/components/organisms/vc-table/components/TableCheckbox.vue +0 -78
  1153. package/ui/components/organisms/vc-table/components/TableColumnSwitcher.vue +0 -150
  1154. package/ui/components/organisms/vc-table/components/TableEmpty.vue +0 -69
  1155. package/ui/components/organisms/vc-table/components/TableFooter.vue +0 -13
  1156. package/ui/components/organisms/vc-table/components/TableGroupRow.vue +0 -130
  1157. package/ui/components/organisms/vc-table/components/TableHead.vue +0 -311
  1158. package/ui/components/organisms/vc-table/components/TableHeader.vue +0 -13
  1159. package/ui/components/organisms/vc-table/components/TableResizeHandle.vue +0 -125
  1160. package/ui/components/organisms/vc-table/components/TableRow.vue +0 -283
  1161. package/ui/components/organisms/vc-table/components/TableRowActions.vue +0 -495
  1162. package/ui/components/organisms/vc-table/components/TableSearchHeader.vue +0 -233
  1163. package/ui/components/organisms/vc-table/components/TableSelectAllBar.vue +0 -135
  1164. package/ui/components/organisms/vc-table/components/VcColumn.vue +0 -255
  1165. package/ui/components/organisms/vc-table/components/_internal/SlotProxy.ts +0 -20
  1166. package/ui/components/organisms/vc-table/components/_internal/TableSkeletonRows.vue +0 -110
  1167. package/ui/components/organisms/vc-table/components/cells/CellDate.vue +0 -52
  1168. package/ui/components/organisms/vc-table/components/cells/CellDateAgo.vue +0 -48
  1169. package/ui/components/organisms/vc-table/components/cells/CellDefault.vue +0 -90
  1170. package/ui/components/organisms/vc-table/components/cells/CellEditableWrapper.vue +0 -47
  1171. package/ui/components/organisms/vc-table/components/cells/CellHtml.vue +0 -62
  1172. package/ui/components/organisms/vc-table/components/cells/CellImage.vue +0 -28
  1173. package/ui/components/organisms/vc-table/components/cells/CellLink.vue +0 -18
  1174. package/ui/components/organisms/vc-table/components/cells/CellMoney.vue +0 -120
  1175. package/ui/components/organisms/vc-table/components/cells/CellNumber.vue +0 -113
  1176. package/ui/components/organisms/vc-table/components/cells/CellStatus.vue +0 -18
  1177. package/ui/components/organisms/vc-table/components/cells/CellStatusIcon.vue +0 -20
  1178. package/ui/components/organisms/vc-table/components/cells/DynamicCellRenderer.vue +0 -164
  1179. package/ui/components/organisms/vc-table/components/cells/index.ts +0 -11
  1180. package/ui/components/organisms/vc-table/components/index.ts +0 -39
  1181. package/ui/components/organisms/vc-table/components/mobile/DataTableMobileCard.vue +0 -672
  1182. package/ui/components/organisms/vc-table/components/mobile/DataTableMobileView.vue +0 -251
  1183. package/ui/components/organisms/vc-table/components/mobile/MobileActionSheet.vue +0 -163
  1184. package/ui/components/organisms/vc-table/components/mobile/MobileCellRenderer.vue +0 -68
  1185. package/ui/components/organisms/vc-table/components/mobile/PullToRefresh.vue +0 -353
  1186. package/ui/components/organisms/vc-table/components/mobile/index.ts +0 -6
  1187. package/ui/components/organisms/vc-table/composables/index.ts +0 -49
  1188. package/ui/components/organisms/vc-table/composables/useCellBase.ts +0 -114
  1189. package/ui/components/organisms/vc-table/composables/useCellRegistry.ts +0 -130
  1190. package/ui/components/organisms/vc-table/composables/useColumnFilter.ts +0 -158
  1191. package/ui/components/organisms/vc-table/composables/useDataProcessing.ts +0 -239
  1192. package/ui/components/organisms/vc-table/composables/useDataTableState.test.ts +0 -78
  1193. package/ui/components/organisms/vc-table/composables/useDataTableState.ts +0 -343
  1194. package/ui/components/organisms/vc-table/composables/useMobileCardLayout.test.ts +0 -81
  1195. package/ui/components/organisms/vc-table/composables/useMobileCardLayout.ts +0 -345
  1196. package/ui/components/organisms/vc-table/composables/useTableColumns.ts +0 -276
  1197. package/ui/components/organisms/vc-table/composables/useTableColumnsReorder.ts +0 -175
  1198. package/ui/components/organisms/vc-table/composables/useTableColumnsResize.ts +0 -311
  1199. package/ui/components/organisms/vc-table/composables/useTableContext.ts +0 -16
  1200. package/ui/components/organisms/vc-table/composables/useTableEditing.ts +0 -385
  1201. package/ui/components/organisms/vc-table/composables/useTableExpansion.ts +0 -159
  1202. package/ui/components/organisms/vc-table/composables/useTableFilter.test.ts +0 -43
  1203. package/ui/components/organisms/vc-table/composables/useTableFilter.ts +0 -131
  1204. package/ui/components/organisms/vc-table/composables/useTableInlineEdit.ts +0 -306
  1205. package/ui/components/organisms/vc-table/composables/useTableRowGrouping.ts +0 -310
  1206. package/ui/components/organisms/vc-table/composables/useTableRowReorder.ts +0 -227
  1207. package/ui/components/organisms/vc-table/composables/useTableSelectionV2.ts +0 -388
  1208. package/ui/components/organisms/vc-table/composables/useTableSort.ts +0 -221
  1209. package/ui/components/organisms/vc-table/composables/useTableSwipe.ts +0 -32
  1210. package/ui/components/organisms/vc-table/composables/useVirtualScroll.ts +0 -286
  1211. package/ui/components/organisms/vc-table/index.ts +0 -68
  1212. package/ui/components/organisms/vc-table/keys.ts +0 -20
  1213. package/ui/components/organisms/vc-table/types.ts +0 -856
  1214. package/ui/components/organisms/vc-table/utils/ColumnCollector.ts +0 -137
  1215. package/ui/components/organisms/vc-table/utils/deepClone.ts +0 -46
  1216. package/ui/components/organisms/vc-table/utils/index.ts +0 -19
  1217. package/ui/components/organisms/vc-table/vc-data-table.stories.ts +0 -5178
  1218. package/ui/composables/README.md +0 -160
  1219. package/ui/composables/index.ts +0 -6
  1220. package/ui/composables/useAdaptiveItems.ts +0 -347
  1221. package/ui/composables/useCollapsible.ts +0 -73
  1222. package/ui/composables/useFloatingPosition.ts +0 -94
  1223. package/ui/composables/useFormField.ts +0 -57
  1224. package/ui/composables/useScrollArrows.ts +0 -64
  1225. package/ui/composables/useTeleportTarget.ts +0 -37
  1226. package/ui/types/form-field.ts +0 -44
  1227. package/ui/types/index.ts +0 -21
@@ -1,1835 +0,0 @@
1
- <template>
2
- <div
3
- ref="tableRootRef"
4
- v-loading:49="loading && !showSkeleton"
5
- class="vc-data-table"
6
- :aria-busy="loading || undefined"
7
- >
8
- <!-- Header slot -->
9
- <div
10
- v-if="$slots.header"
11
- class="vc-data-table__header"
12
- >
13
- <slot name="header" />
14
- </div>
15
-
16
- <!-- Search bar + Global Filters + Column Switcher (combined toolbar) -->
17
- <TableSearchHeader
18
- v-if="searchable || globalFilters?.length || $slots['search-header-actions']"
19
- :searchable="searchable"
20
- :model-value="internalSearchValue"
21
- :placeholder="searchPlaceholder"
22
- @update:model-value="handleSearchInput"
23
- >
24
- <template #actions>
25
- <GlobalFiltersButton
26
- v-if="globalFilters?.length"
27
- ref="globalFiltersButtonRef"
28
- :active-count="globalActiveFilterCount"
29
- @click="showGlobalFiltersPanel = !showGlobalFiltersPanel"
30
- />
31
- <!-- Custom actions from parent (e.g. adapter's filter button) -->
32
- <slot name="search-header-actions" />
33
- </template>
34
- </TableSearchHeader>
35
-
36
- <!-- Global Filters Panel (separate, teleported to body) -->
37
- <GlobalFiltersPanel
38
- v-if="globalFilters?.length"
39
- :filters="globalFilters"
40
- :model-value="globalFilterValues"
41
- :show="showGlobalFiltersPanel"
42
- :anchor-ref="globalFiltersButtonEl"
43
- @update:model-value="globalFilterValues = $event"
44
- @update:show="showGlobalFiltersPanel = $event"
45
- @apply="handleGlobalFilterApply"
46
- @clear="handleGlobalFilterClear"
47
- />
48
-
49
- <!-- Column Switcher Panel (separate, teleported to body) -->
50
- <TableColumnSwitcher
51
- v-if="columnSwitcher"
52
- :columns="switcherColumns"
53
- :visible-columns="switcherVisibleColumnIds"
54
- :show="showColumnSwitcherPanel"
55
- :anchor-ref="columnSwitcherButtonEl"
56
- @update:visible-columns="handleColumnVisibilityChange"
57
- @update:show="showColumnSwitcherPanel = $event"
58
- />
59
-
60
- <!-- Add Row Button (header position) -->
61
- <TableAddRowButton
62
- v-if="showAddRowButton && addRowPosition === 'header'"
63
- :label="addRowLabel"
64
- :icon="addRowIcon"
65
- @add="handleAddRow()"
66
- />
67
-
68
- <!-- Selection Banner -->
69
- <slot
70
- name="selection-banner"
71
- :count="selection.internalSelection.value.length"
72
- :total-count="props.totalCount"
73
- :is-select-all="selection.isSelectAllActive.value"
74
- :select-all="selection.selectAll"
75
- :clear-selection="selection.clearSelection"
76
- >
77
- <TableSelectAllBar
78
- v-if="effectiveSelectionMode === 'multiple'"
79
- :selection-count="selection.internalSelection.value.length"
80
- :total-count="props.totalCount ?? 0"
81
- :all-selected="selection.isSelectAllActive.value"
82
- :show-select-all-prompt="selection.showSelectAllChoice.value"
83
- @select-all="selection.selectAll"
84
- @cancel="selection.clearSelection"
85
- />
86
- </slot>
87
-
88
- <!-- Desktop: Main table content -->
89
- <div
90
- v-if="!isMobileView"
91
- ref="tableContainerRef"
92
- class="vc-data-table__content"
93
- :style="scrollHeight ? { height: scrollHeight } : undefined"
94
- >
95
- <Table :variant="computedVariant">
96
- <DataTableHeader
97
- ref="dataTableHeaderRef"
98
- :columns="safeColumns"
99
- :show-drag-handle="showRowDragHandle"
100
- :show-selection-cell="hasSelectionColumn && !isSelectionViaColumn"
101
- :selection-mode="effectiveSelectionMode"
102
- :all-selected="selection.allSelected.value"
103
- :some-selected="selection.someSelected.value"
104
- :get-sort-direction="sort.getSortDirection"
105
- :get-sort-index="sort.getSortIndex"
106
- :get-column-width="cols.getEffectiveColumnWidth"
107
- :get-header-align="cols.getHeaderAlign"
108
- :get-header-style="cols.getHeaderStyle"
109
- :is-column-resizable="cols.isColumnResizable"
110
- :is-column-reorderable="cols.isColumnReorderable"
111
- :is-last-resizable="cols.isLastResizableColumn"
112
- :get-sort-field="cols.getSortField"
113
- :set-header-ref="cols.setHeaderRef"
114
- :show-filter="showColumnFilter"
115
- :get-filter-type="getColumnFilterType"
116
- :get-filter-options="getColumnFilterOptions"
117
- :is-filter-multiple="isColumnFilterMultiple"
118
- :get-range-fields="getColumnRangeFields"
119
- :get-filter-value="getColumnFilterValue"
120
- :show-column-switcher="!!columnSwitcher"
121
- :column-switcher-active="showColumnSwitcherPanel"
122
- @select-all="handleSelectAllChange"
123
- @sort="handleSort"
124
- @resize-start="handleResizeStart"
125
- @reorder-start="handleColumnDragStart"
126
- @reorder-over="handleColumnDragOver"
127
- @reorder-drop="(_, event) => handleColumnDrop(event)"
128
- @filter-apply="handleColumnFilterApply"
129
- @filter-clear="handleColumnFilterClear"
130
- @column-switcher-click="showColumnSwitcherPanel = !showColumnSwitcherPanel"
131
- />
132
-
133
- <!-- Body -->
134
- <DataTableBody
135
- :items="displayItems"
136
- :loading="loading"
137
- :skeleton-rows="props.skeletonRows"
138
- :columns="safeColumns"
139
- :get-column-width="cols.getEffectiveColumnWidth"
140
- :get-cell-style="cols.getCellStyle"
141
- :show-selection-cell="hasSelectionColumn && !isSelectionViaColumn"
142
- :empty-icon="resolvedEmptyIcon"
143
- :empty-title="resolvedEmptyTitle"
144
- :empty-description="resolvedEmptyDescription"
145
- :empty-action-label="resolvedEmptyActionLabel"
146
- :empty-action-handler="resolvedEmptyActionHandler"
147
- :loading-text="loadingText"
148
- :grouping-enabled="rowGrouping.isGroupingEnabled.value"
149
- :grouped-data="rowGrouping.groupedData.value"
150
- :expandable-row-groups="expandableRowGroups"
151
- :is-group-expanded="rowGrouping.isGroupExpanded"
152
- :get-item-group-key="rowGrouping.getItemGroupKey"
153
- :get-global-index="getGlobalIndex"
154
- :get-item-key="getItemKey"
155
- :get-row-props="(getRowProps as any)"
156
- @scroll="handleContentScroll"
157
- @group-toggle="(key, e) => rowGrouping.toggleGroupExpansion(key, e!)"
158
- @row-click="handleRowClick"
159
- @row-mouseenter="handleRowMouseEnter"
160
- @row-mouseleave="handleRowMouseLeave"
161
- @selection-change="handleRowSelectionChange"
162
- @expand-toggle="(item, index, e) => handleExpandToggle(item, index, e!)"
163
- @row-edit="handleStartRowEdit"
164
- @row-save="handleSaveRowEdit"
165
- @row-cancel="handleCancelRowEdit"
166
- @edit-complete="handleCellEditComplete"
167
- @edit-cancel="handleCellEditCancel"
168
- @cell-value-change="handleCellValueChange"
169
- @cell-click="handleCellClick"
170
- @row-mousedown="
171
- (e) => {
172
- if (isRowReorderEnabled) onRowMouseDown(e);
173
- }
174
- "
175
- @row-dragstart="
176
- (e, item) => {
177
- if (isRowReorderEnabled) onRowDragStart(e, item);
178
- }
179
- "
180
- @row-dragover="
181
- (e, item) => {
182
- if (isRowReorderEnabled) onRowDragOver(e, item);
183
- }
184
- "
185
- @row-dragleave="
186
- (e) => {
187
- if (isRowReorderEnabled) onRowDragLeave(e);
188
- }
189
- "
190
- @row-dragend="
191
- (e) => {
192
- if (isRowReorderEnabled) onRowDragEnd(e);
193
- }
194
- "
195
- @row-drop="
196
- (e) => {
197
- if (isRowReorderEnabled) onRowDrop(e);
198
- }
199
- "
200
- >
201
- <template #row-actions="{ item, index }">
202
- <TableRowActions
203
- v-if="rowActions"
204
- :actions="rowActions(item)"
205
- :row-index="index"
206
- :mode="rowActionsMode"
207
- :max-quick-actions="maxQuickActions"
208
- @action="(action) => handleRowAction(action, item, index)"
209
- />
210
- </template>
211
- <template #expansion="{ data, index }">
212
- <slot
213
- name="expansion"
214
- :data="data"
215
- :index="index"
216
- />
217
- </template>
218
- <template
219
- v-if="$slots['not-found'] || $slots.empty"
220
- #empty
221
- >
222
- <slot v-if="isNotFoundState && $slots['not-found']" name="not-found" />
223
- <slot v-else name="empty" />
224
- </template>
225
- <template
226
- v-if="$slots.loading"
227
- #loading
228
- >
229
- <slot name="loading" />
230
- </template>
231
- <template
232
- v-if="$slots.groupheader"
233
- #groupheader="{ data, index }"
234
- >
235
- <slot
236
- name="groupheader"
237
- :data="data"
238
- :index="index"
239
- />
240
- </template>
241
- <template
242
- v-if="$slots.groupfooter"
243
- #groupfooter="{ data, index }"
244
- >
245
- <slot
246
- name="groupfooter"
247
- :data="data"
248
- :index="index"
249
- />
250
- </template>
251
- </DataTableBody>
252
-
253
- <!-- Footer -->
254
- <TableFooter v-if="$slots.footer && items && items.length">
255
- <slot name="footer" />
256
- </TableFooter>
257
-
258
- <!-- Add Row Button (footer position) -->
259
- <TableAddRowButton
260
- v-if="showAddRowButton && addRowPosition === 'footer'"
261
- :label="addRowLabel"
262
- :icon="addRowIcon"
263
- @add="handleAddRow()"
264
- />
265
- </Table>
266
- </div>
267
-
268
- <!-- Mobile: Card view with swipe actions (wrapped for scroll + pagination pinning) -->
269
- <div
270
- v-else
271
- class="vc-data-table__content"
272
- >
273
- <DataTableMobileView
274
- :items="displayItems"
275
- :columns="visibleColumns"
276
- :selection="selection.internalSelection.value"
277
- :selection-mode="effectiveSelectionMode"
278
- :is-row-selectable="props.isRowSelectable"
279
- :row-actions="rowActions"
280
- :loading="loading"
281
- :data-key="dataKey"
282
- :pull-to-refresh="pullToRefresh"
283
- :pull-to-refresh-text="pullToRefreshText"
284
- @click="handleMobileRowClick"
285
- @select="handleMobileRowSelect"
286
- @action="handleMobileRowAction"
287
- @refresh="emit('pull-refresh')"
288
- >
289
- <template #empty>
290
- <slot v-if="isNotFoundState && $slots['not-found']" name="not-found" />
291
- <slot v-else-if="$slots.empty" name="empty" />
292
- <TableEmpty
293
- v-else
294
- :icon="resolvedEmptyIcon"
295
- :title="resolvedEmptyTitle"
296
- :description="resolvedEmptyDescription"
297
- :action-label="resolvedEmptyActionLabel"
298
- :action-handler="resolvedEmptyActionHandler"
299
- />
300
- </template>
301
- </DataTableMobileView>
302
- </div>
303
-
304
- <!-- Pagination / Total counter (outside scroll area, works for both desktop and mobile) -->
305
- <div
306
- v-if="props.pagination"
307
- ref="paginationRef"
308
- class="vc-data-table__pagination"
309
- >
310
- <span class="vc-data-table__page-info">{{ paginationRangeText }}</span>
311
- <!-- Pagination controls -->
312
- <slot
313
- name="pagination"
314
- :pages="props.pagination.pages"
315
- :current-page="props.pagination.currentPage"
316
- :on-page-click="handlePaginationClick"
317
- >
318
- <VcPagination
319
- :pages="props.pagination.pages"
320
- :current-page="props.pagination.currentPage"
321
- :variant="props.pagination.variant"
322
- :max-pages="paginationMaxPages"
323
- :show-first-last="paginationShowFirstLast"
324
- @item-click="handlePaginationClick"
325
- />
326
- </slot>
327
- </div>
328
-
329
- <!-- VcColumn renderless components (they register themselves via inject) -->
330
- <slot />
331
- </div>
332
- </template>
333
-
334
- <script setup lang="ts" generic="T extends Record<string, any>">
335
- /**
336
- * VcDataTable - Declarative DataTable component with VcColumn support
337
- *
338
- * Refactored to use composables for better code organization.
339
- * Inspired by PrimeVue DataTable architecture.
340
- */
341
- import { ref, computed, provide, watch, onBeforeUnmount, toRef, useSlots, inject, type Ref, type VNode } from "vue";
342
- import { useElementSize } from "@vueuse/core";
343
- import { useI18n } from "vue-i18n";
344
- import {
345
- Table,
346
- TableFooter,
347
- TableEmpty,
348
- TableRowActions,
349
- DataTableHeader,
350
- DataTableBody,
351
- GlobalFiltersButton,
352
- GlobalFiltersPanel,
353
- TableColumnSwitcher,
354
- DataTableMobileView,
355
- TableAddRowButton,
356
- TableSearchHeader,
357
- TableSelectAllBar,
358
- } from "@ui/components/organisms/vc-table/components";
359
- import { VcPagination } from "@ui/components/molecules";
360
- import {
361
- useTableRowReorder,
362
- useTableColumnsResize,
363
- useTableColumnsReorder,
364
- useFilterState,
365
- useColumnFilter,
366
- useTableSort,
367
- useTableEditing,
368
- useTableExpansion,
369
- useTableSelectionV2,
370
- useTableColumns,
371
- useTableRowGrouping,
372
- useTableInlineEdit,
373
- useDataTableState,
374
- } from "@ui/components/organisms/vc-table/composables";
375
- import { ColumnCollector, type ColumnInstance } from "@ui/components/organisms/vc-table/utils/ColumnCollector";
376
- import { ColumnCollectorKey, FilterContextKey, HasFlexColumnsKey, IsColumnReorderingKey } from "@ui/components/organisms/vc-table/keys";
377
- import { IsMobileKey } from "@framework/injection-keys";
378
- import type { VcColumnProps, VcDataTableExtendedProps, FilterValue, EditChange, TableAction, SortMeta, MobileSwipeAction, TableStateConfig } from "@ui/components/organisms/vc-table/types";
379
- import type { DataTablePersistedState } from "@ui/components/organisms/vc-table/composables";
380
-
381
- const props = withDefaults(defineProps<VcDataTableExtendedProps<T>>(), {
382
- items: () => [],
383
- dataKey: "id",
384
- selectionMode: undefined,
385
- isRowSelectable: undefined,
386
- selectAll: false,
387
- editMode: undefined,
388
- sortField: undefined,
389
- sortOrder: 0,
390
- sortMode: "single",
391
- multiSortMeta: () => [],
392
- removableSort: false,
393
- striped: false,
394
- bordered: false,
395
- showGridlines: false,
396
- rowHover: true,
397
- size: "normal",
398
- variant: "default",
399
- resizableColumns: true,
400
- reorderableColumns: false,
401
- reorderableRows: false,
402
- showAllColumns: true,
403
- scrollable: false,
404
- scrollHeight: undefined,
405
- loading: false,
406
- expandedRows: () => [],
407
- expandedRowIcon: "fas fa-chevron-down",
408
- collapsedRowIcon: "fas fa-chevron-right",
409
- groupRowsBy: undefined,
410
- rowGroupMode: "subheader",
411
- expandableRowGroups: false,
412
- expandedRowGroups: undefined,
413
- rowActionsMode: "inline",
414
- maxQuickActions: 4,
415
- pullToRefresh: false,
416
- pullToRefreshText: undefined,
417
- totalCount: undefined,
418
- totalLabel: undefined,
419
- selectAllActive: false,
420
- addRow: undefined,
421
- validationRules: undefined,
422
- pagination: undefined,
423
- infiniteScroll: false,
424
- infiniteScrollDistance: 100,
425
- globalFilters: undefined,
426
- columnSwitcher: false,
427
- stateStorage: "local",
428
- searchable: false,
429
- searchValue: undefined,
430
- searchPlaceholder: "Search...",
431
- emptyState: undefined,
432
- notFoundState: undefined,
433
- searchDebounce: 300,
434
- activeItemId: undefined,
435
- });
436
-
437
- // Emits
438
- const emit = defineEmits<{
439
- // === Selection ===
440
- /** v-model update for selected item(s) */
441
- "update:selection": [value: T | T[]];
442
- /** v-model update for the "select all" checkbox state */
443
- "update:selectAll": [value: boolean];
444
- /** Emitted when a row is selected (click or checkbox) */
445
- "row-select": [event: { data: T; originalEvent: Event }];
446
- /** Emitted when a row is deselected */
447
- "row-unselect": [event: { data: T; originalEvent: Event }];
448
- /** Emitted when "select all" selects all visible rows */
449
- "row-select-all": [event: { data: T[]; originalEvent: Event }];
450
- /** Emitted when "select all" deselects all visible rows */
451
- "row-unselect-all": [event: { data: T[]; originalEvent: Event }];
452
- /** Emitted when the "select all" banner mode changes */
453
- "select-all": [event: { selected: boolean }];
454
- /** v-model update for "select all" active state (includes non-visible items) */
455
- "update:selectAllActive": [value: boolean];
456
-
457
- // === Editing ===
458
- /** v-model update for currently editing rows */
459
- "update:editingRows": [value: T[]];
460
- /** Emitted when a cell enters edit mode */
461
- "cell-edit-init": [event: { data: T; field: string; index: number }];
462
- /** Emitted when a cell edit is completed (value committed) */
463
- "cell-edit-complete": [event: { data: T; field: string; newValue: unknown; index: number }];
464
- /** Emitted when a cell edit is cancelled */
465
- "cell-edit-cancel": [event: { data: T; field: string; index: number }];
466
- /** Emitted when row edit mode is initiated */
467
- "row-edit-init": [event: { data: T; index: number }];
468
- /** Emitted when row edits are saved */
469
- "row-edit-save": [event: { data: T; newData: T; index: number }];
470
- /** Emitted when row edits are cancelled */
471
- "row-edit-cancel": [event: { data: T; index: number }];
472
-
473
- // === Inline Edit (bulk editing mode) ===
474
- /** Emitted when inline edit changes are saved */
475
- "edit-save": [event: { changes: EditChange<T>[] }];
476
- /** Emitted when inline editing is cancelled */
477
- "edit-cancel": [];
478
- /** Emitted when a new row is being added via inline edit */
479
- "row-add": [event: { defaults: Record<string, unknown>; cancel: () => void }];
480
- /** Emitted when a row is being removed via inline edit */
481
- "row-remove": [event: { data: T; index: number; cancel: () => void }];
482
-
483
- // === Sorting ===
484
- /** v-model update for the sorted field name */
485
- "update:sortField": [value: string];
486
- /** v-model update for the sort direction */
487
- "update:sortOrder": [value: number];
488
- /** v-model update for multi-sort metadata */
489
- "update:multiSortMeta": [value: SortMeta[]];
490
- /** Emitted when sort changes — use for backend sorting */
491
- sort: [event: { sortField?: string; sortOrder?: number; multiSortMeta?: SortMeta[] }];
492
-
493
- // === Filtering ===
494
- /** Emitted when filter values change — flat payload ready for backend API */
495
- filter: [event: { filters: Record<string, unknown>; filteredValue: T[] }];
496
-
497
- // === Row Interactions ===
498
- /** v-model update for active (highlighted) row ID */
499
- "update:activeItemId": [value: string | undefined];
500
- /** Emitted when a row is clicked */
501
- "row-click": [event: { data: T; index: number; originalEvent: Event }];
502
- /** Emitted when a row action button/menu item is activated */
503
- "row-action": [event: { action: TableAction | MobileSwipeAction<T>; item: T; index: number }];
504
-
505
- // === Reorder ===
506
- /** Emitted when rows are reordered via drag-and-drop */
507
- "row-reorder": [event: { dragIndex: number; dropIndex: number; value: T[] }];
508
- /** Emitted when a column resize operation ends */
509
- "column-resize-end": [event: { columns: { id: string; width: number }[] }];
510
- /** Emitted when columns are reordered via drag-and-drop */
511
- "column-reorder": [event: { columns: { id: string; [key: string]: unknown }[] }];
512
-
513
- // === State ===
514
- /** Emitted when table state is saved to storage */
515
- "state-save": [state: DataTablePersistedState];
516
- /** Emitted when table state is restored from storage */
517
- "state-restore": [state: DataTablePersistedState];
518
-
519
- // === Expandable Rows ===
520
- /** v-model update for currently expanded rows */
521
- "update:expandedRows": [value: T[]];
522
- /** Emitted when a row is expanded */
523
- "row-expand": [event: { data: T; originalEvent: Event }];
524
- /** Emitted when a row is collapsed */
525
- "row-collapse": [event: { data: T; originalEvent: Event }];
526
-
527
- // === Row Grouping ===
528
- /** v-model update for currently expanded row groups */
529
- "update:expandedRowGroups": [value: string[]];
530
- /** Emitted when a row group is expanded */
531
- "rowgroup-expand": [event: { data: string; originalEvent: Event }];
532
- /** Emitted when a row group is collapsed */
533
- "rowgroup-collapse": [event: { data: string; originalEvent: Event }];
534
-
535
- // === Pull-to-Refresh ===
536
- /** Emitted when user triggers pull-to-refresh on mobile */
537
- "pull-refresh": [];
538
-
539
- // === Infinite Scroll ===
540
- /** Emitted when user scrolls near the bottom of the table */
541
- "load-more": [];
542
-
543
- // === Pagination ===
544
- /** Emitted when a page button is clicked in the built-in pagination */
545
- "pagination-click": [page: number];
546
-
547
- // === Search ===
548
- /** v-model update for search input value */
549
- "update:searchValue": [value: string];
550
- /** Emitted (debounced) when search value changes — use for backend filtering */
551
- search: [value: string];
552
- }>();
553
-
554
- defineOptions({ inheritAttrs: false });
555
-
556
- defineSlots<{
557
- /** Default slot for VcColumn declarations */
558
- default?: () => VNode[];
559
- /** Custom header content above the table */
560
- header?: () => VNode[];
561
- /** Extra action buttons in the search header toolbar */
562
- "search-header-actions"?: () => VNode[];
563
- /** Custom selection banner replacing the default TableSelectAllBar */
564
- "selection-banner"?: (props: {
565
- count: number;
566
- totalCount: number | undefined;
567
- isSelectAll: boolean;
568
- selectAll: () => void;
569
- clearSelection: () => void;
570
- }) => VNode[];
571
- /** Custom content for expanded rows */
572
- expansion?: (props: { data: T; index: number }) => VNode[];
573
- /** Custom not-found state content (shown when search yields no results) */
574
- "not-found"?: () => VNode[];
575
- /** Custom empty state content */
576
- empty?: () => VNode[];
577
- /** Custom loading state content */
578
- loading?: () => VNode[];
579
- /** Custom row group header */
580
- groupheader?: (props: { data: T; index: number }) => VNode[];
581
- /** Custom row group footer */
582
- groupfooter?: (props: { data: T; index: number }) => VNode[];
583
- /** Custom footer content below the table body */
584
- footer?: () => VNode[];
585
- /** Custom pagination replacing the default VcPagination */
586
- pagination?: (props: { pages: number; currentPage: number; onPageClick: (page: number) => void }) => VNode[];
587
- }>();
588
-
589
- // ============================================================================
590
- // Internationalization
591
- // ============================================================================
592
-
593
- const { t } = useI18n({ useScope: "global" });
594
-
595
- const emptyTitle = computed(() => t("COMPONENTS.ORGANISMS.VC_TABLE.EMPTY_TITLE"));
596
- const emptyDescription = computed(() => t("COMPONENTS.ORGANISMS.VC_TABLE.EMPTY_DESCRIPTION"));
597
- const notFoundTitle = computed(() => t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_FOUND_TITLE"));
598
- const notFoundDescription = computed(() => t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_FOUND_DESCRIPTION"));
599
-
600
- /** Detect not-found state: items empty + active search or filters */
601
- const isNotFoundState = computed(
602
- () => displayItems.value.length === 0 && !props.loading && (internalSearchValue.value !== "" || hasActiveFilters.value),
603
- );
604
-
605
- /** Resolved title/description/icon/action for the current empty-like state */
606
- const resolvedEmptyIcon = computed(() =>
607
- isNotFoundState.value ? props.notFoundState?.icon : props.emptyState?.icon,
608
- );
609
- const resolvedEmptyTitle = computed(() =>
610
- isNotFoundState.value
611
- ? (props.notFoundState?.title ?? notFoundTitle.value)
612
- : (props.emptyState?.title ?? emptyTitle.value),
613
- );
614
- const resolvedEmptyDescription = computed(() =>
615
- isNotFoundState.value
616
- ? (props.notFoundState?.description ?? notFoundDescription.value)
617
- : (props.emptyState?.description ?? emptyDescription.value),
618
- );
619
- const resolvedEmptyActionLabel = computed(() =>
620
- isNotFoundState.value ? props.notFoundState?.actionLabel : props.emptyState?.actionLabel,
621
- );
622
- const resolvedEmptyActionHandler = computed(() =>
623
- isNotFoundState.value ? props.notFoundState?.actionHandler : props.emptyState?.actionHandler,
624
- );
625
- const loadingText = computed(() => t("COMPONENTS.ORGANISMS.VC_TABLE.LOADING"));
626
-
627
- /** Track whether data has ever been loaded — distinguishes initial load from refresh */
628
- const hasLoadedOnce = ref(false);
629
- watch(
630
- () => props.items,
631
- (items) => {
632
- if (items && items.length > 0) hasLoadedOnce.value = true;
633
- },
634
- { immediate: true },
635
- );
636
-
637
- /** True when skeleton should show instead of spinner overlay */
638
- const showSkeleton = computed(() => props.loading && !hasLoadedOnce.value);
639
-
640
- const paginationRangeText = computed(() => {
641
- const p = props.pagination;
642
- if (!p) return "";
643
- const total = props.totalCount;
644
- if (total != null && p.pages > 0) {
645
- const pageSize = Math.ceil(total / p.pages);
646
- const start = (p.currentPage - 1) * pageSize + 1;
647
- const end = Math.min(start + props.items.length - 1, total);
648
- return `${start}\u2013${end} ${t("COMPONENTS.ORGANISMS.VC_TABLE.OF", {}, "of")} ${total}`;
649
- }
650
- return `${t("COMPONENTS.ORGANISMS.VC_TABLE.PAGE", {}, "Page")} ${p.currentPage} ${t("COMPONENTS.ORGANISMS.VC_TABLE.OF", {}, "of")} ${p.pages}`;
651
- });
652
-
653
- // ============================================================================
654
- // Mobile Responsive Detection
655
- // ============================================================================
656
-
657
- const isMobile = inject(IsMobileKey, ref(false));
658
- const isMobileView = computed(() => isMobile.value);
659
-
660
- // ============================================================================
661
- // Column Collection (Hybrid approach: slots + inject/provide)
662
- // ============================================================================
663
-
664
- const slots = useSlots();
665
-
666
- // Extract columns from slot VNodes (PrimeVue-like approach)
667
- // Convert kebab-case to camelCase for props normalization
668
- const kebabToCamel = (str: string): string => {
669
- return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
670
- };
671
-
672
- // Boolean props that should be converted from "" to true
673
- const BOOLEAN_PROPS = new Set([
674
- "sortable",
675
- "editable",
676
- "visible",
677
- "alwaysVisible",
678
- "filter",
679
- "selectionMode",
680
- "rowEditor",
681
- "rowReorder",
682
- "expander",
683
- "mobileVisible",
684
- ]);
685
-
686
- // Normalize VNode props from kebab-case to camelCase
687
- // Also handles boolean attributes (e.g., `editable` becomes `editable: ""` in Vue, should be `true`)
688
- const normalizeProps = (props: Record<string, unknown>): VcColumnProps => {
689
- const normalized: Record<string, unknown> = {};
690
- for (const key of Object.keys(props)) {
691
- const camelKey = kebabToCamel(key);
692
- let value = props[key];
693
-
694
- // Handle boolean attributes: empty string "" means true in Vue templates
695
- if (BOOLEAN_PROPS.has(camelKey) && value === "") {
696
- value = true;
697
- }
698
-
699
- normalized[camelKey] = value;
700
- }
701
- return normalized as unknown as VcColumnProps;
702
- };
703
-
704
- const extractColumnsFromSlots = (): ColumnInstance[] => {
705
- const defaultSlot = slots.default?.();
706
- if (!defaultSlot) return [];
707
-
708
- const columns: ColumnInstance[] = [];
709
-
710
- const processVNode = (vnode: VNode) => {
711
- // Check if this is a VcColumn component
712
- const type = vnode.type as any;
713
- if (type && (type.name === "VcColumn" || type.__name === "VcColumn")) {
714
- // Normalize props from kebab-case to camelCase
715
- const rawProps = (vnode.props || {}) as Record<string, unknown>;
716
- const props = normalizeProps(rawProps);
717
- // Ensure id exists
718
- if (props.id) {
719
- columns.push({
720
- instance: null as any, // Not needed for slot-based approach
721
- props: props,
722
- slots: (vnode.children || {}) as any,
723
- });
724
- }
725
- }
726
- // Check Fragment or array children
727
- if (Array.isArray(vnode.children)) {
728
- (vnode.children as VNode[]).forEach(processVNode);
729
- }
730
- };
731
-
732
- defaultSlot.forEach(processVNode);
733
- return columns;
734
- };
735
-
736
- // Also keep inject/provide for backward compatibility
737
- const columnCollector = new ColumnCollector();
738
- provide(ColumnCollectorKey, columnCollector);
739
-
740
- const columnsVersion = ref(0);
741
- columnCollector.onUpdate(() => {
742
- columnsVersion.value++;
743
- });
744
-
745
- // All declared columns (before visibility filtering) — from slots or collector
746
- const declaredColumns = computed<ColumnInstance[]>(() => {
747
- columnsVersion.value;
748
- const slotCols = extractColumnsFromSlots();
749
- if (slotCols.length > 0) return slotCols;
750
- return columnCollector.getColumns();
751
- });
752
-
753
- // Column IDs hidden by user via TableColumnSwitcher (runtime toggle)
754
- const hiddenColumnIds = ref<Set<string>>(new Set());
755
- // Data-discovered columns explicitly shown by user.
756
- // Needed to persist "Show all" for auto columns across reloads.
757
- const shownDataDiscoveredColumnIds = ref<Set<string>>(new Set());
758
-
759
- // Auto-discovered columns from items keys (for columnSwitcher 'auto' mode)
760
- // These are keys in items[0] that don't have a matching declared VcColumn.
761
- // They start hidden and can be toggled on via the switcher.
762
- const dataDiscoveredColumns = computed<ColumnInstance[]>(() => {
763
- const mode = props.columnSwitcher;
764
- if (!mode || mode === "defined") return [];
765
-
766
- const items = props.items;
767
- if (!items || items.length === 0) return [];
768
-
769
- const declaredIds = new Set(declaredColumns.value.map((col) => col.props.id));
770
- const firstItem = items[0] as Record<string, unknown>;
771
- const itemKeys = Object.keys(firstItem);
772
-
773
- return itemKeys
774
- .filter((key) => !declaredIds.has(key))
775
- .map((key) => ({
776
- instance: null as any,
777
- props: {
778
- id: key,
779
- field: key,
780
- title: key.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase()),
781
- } as VcColumnProps,
782
- slots: {} as any,
783
- }));
784
- });
785
-
786
- // Use slot-based extraction as primary, fallback to inject
787
- // Reuse declaredColumns instead of re-extracting from slots to avoid creating duplicate objects
788
- const visibleColumns = computed<ColumnInstance[]>(() => {
789
- const baseCols = declaredColumns.value;
790
-
791
- const declared = baseCols.filter((col) => {
792
- if (col.props.visible === false) return false;
793
- if (hiddenColumnIds.value.size > 0 && hiddenColumnIds.value.has(col.props.id)) return false;
794
- // When showAllColumns=false, only show alwaysVisible columns (e.g. second blade opened)
795
- if (!props.showAllColumns) return !!col.props.alwaysVisible;
796
- return true;
797
- });
798
-
799
- // Data-discovered columns — only those explicitly enabled by user (not in hiddenColumnIds)
800
- const discovered = dataDiscoveredColumns.value.filter((col) => !hiddenColumnIds.value.has(col.props.id));
801
-
802
- return [...declared, ...discovered];
803
- });
804
-
805
- // ============================================================================
806
- // Helper: Get Item Key
807
- // ============================================================================
808
-
809
- const getItemKey = (item: T, index: number): string => {
810
- const key = (item as Record<string, unknown>)[props.dataKey];
811
- return key?.toString() || `row-${index}`;
812
- };
813
-
814
- // ============================================================================
815
- // Selection Composable
816
- // ============================================================================
817
-
818
- const selection = useTableSelectionV2({
819
- items: toRef(props, "items"),
820
- selection: toRef(props, "selection"),
821
- selectionMode: computed(() => effectiveSelectionMode.value),
822
- isRowSelectable: (item: T) => (props.isRowSelectable ? props.isRowSelectable(item) : true),
823
- dataKey: props.dataKey,
824
- getItemKey,
825
- totalCount: toRef(props, "totalCount") as Ref<number | undefined>,
826
- selectAllActive: toRef(props, "selectAllActive") as Ref<boolean | undefined>,
827
- onSelectAllChange: (active: boolean) => {
828
- emit("update:selectAllActive", active);
829
- emit("select-all", { selected: active });
830
- },
831
- });
832
-
833
- // Watch for selection changes and emit
834
- watch(
835
- () => selection.internalSelection.value,
836
- (newSelection) => {
837
- emit("update:selection", effectiveSelectionMode.value === "single" ? newSelection[0] : newSelection);
838
- },
839
- { deep: true },
840
- );
841
-
842
- // ============================================================================
843
- // Sort Composable
844
- // ============================================================================
845
-
846
- const sort = useTableSort({
847
- sortField: toRef(props, "sortField"),
848
- sortOrder: toRef(props, "sortOrder") as any,
849
- sortMode: toRef(props, "sortMode") as any,
850
- multiSortMeta: toRef(props, "multiSortMeta") as any,
851
- removableSort: toRef(props, "removableSort"),
852
- onSort: (event) => {
853
- if (event.sortField !== undefined) emit("update:sortField", event.sortField);
854
- if (event.sortOrder !== undefined) emit("update:sortOrder", event.sortOrder);
855
- if (event.multiSortMeta !== undefined) emit("update:multiSortMeta", event.multiSortMeta);
856
- emit("sort", event);
857
- },
858
- });
859
-
860
- // ============================================================================
861
- // Editing Composable
862
- // ============================================================================
863
-
864
- const editing = useTableEditing({
865
- editMode: toRef(props, "editMode") as any,
866
- editingRows: toRef(props, "editingRows") as any,
867
- dataKey: props.dataKey,
868
- getItemKey,
869
- });
870
-
871
- // ============================================================================
872
- // Expansion Composable
873
- // ============================================================================
874
-
875
- const expansion = useTableExpansion({
876
- expandedRows: toRef(props, "expandedRows") as any,
877
- getItemKey,
878
- });
879
-
880
- // Use a regular ref with array of keys for proper reactivity
881
- const expandedKeysArray = ref<string[]>([]);
882
-
883
- // Watch for expansion changes, update local ref and emit
884
- watch(
885
- () => expansion.internalExpandedRows.value,
886
- (newExpanded) => {
887
- // Update array of expanded keys
888
- const newKeys = newExpanded.map((item) => getItemKey(item, 0));
889
-
890
- // Only update if keys actually changed (prevent infinite loop)
891
- const currentKeys = expandedKeysArray.value.join(",");
892
- const newKeysStr = newKeys.join(",");
893
- if (currentKeys !== newKeysStr) {
894
- expandedKeysArray.value = newKeys;
895
- emit("update:expandedRows", newExpanded);
896
- }
897
- },
898
- { deep: true, immediate: true },
899
- );
900
-
901
- // Helper to check if row is expanded
902
- const isRowExpanded = (item: T): boolean => {
903
- const key = getItemKey(item, 0);
904
- return expandedKeysArray.value.includes(key);
905
- };
906
-
907
- // ============================================================================
908
- // Row Grouping Composable
909
- // ============================================================================
910
-
911
- const rowGrouping = useTableRowGrouping({
912
- items: toRef(props, "items") as any,
913
- groupRowsBy: toRef(props, "groupRowsBy") as any,
914
- rowGroupMode: toRef(props, "rowGroupMode") as any,
915
- expandableRowGroups: toRef(props, "expandableRowGroups") as any,
916
- expandedRowGroups: toRef(props, "expandedRowGroups") as any,
917
- onExpandedRowGroupsChange: (groups) => emit("update:expandedRowGroups", groups),
918
- onRowGroupExpand: (event) => emit("rowgroup-expand", event),
919
- onRowGroupCollapse: (event) => emit("rowgroup-collapse", event),
920
- });
921
-
922
- // ============================================================================
923
- // Inline Edit Composable (Row CRUD)
924
- // ============================================================================
925
-
926
- const inlineEdit = useTableInlineEdit({
927
- items: toRef(props, "items") as Ref<T[]>,
928
- rules: props.validationRules as Record<string, (value: unknown, row: T) => string | true> | undefined,
929
- onSave: (changes) => {
930
- emit("edit-save", { changes: changes as EditChange<T>[] });
931
- },
932
- onCancel: () => {
933
- emit("edit-cancel");
934
- },
935
- });
936
-
937
- // Computed for inline editing state (for use in template)
938
- // editMode="inline" makes all editable cells always active (legacy compatibility)
939
- const isInlineEditing = computed(() => inlineEdit.isEditing.value || props.editMode === "inline");
940
-
941
- // Row CRUD handlers
942
- const handleAddRow = (defaults?: Partial<T>) => {
943
- let cancelled = false;
944
- const event = {
945
- defaults: defaults ?? {},
946
- cancel: () => {
947
- cancelled = true;
948
- },
949
- };
950
- emit("row-add", event);
951
- if (!cancelled) {
952
- inlineEdit.addRow(event.defaults as Partial<T>);
953
- }
954
- };
955
-
956
- const handleRemoveRow = (rowIndex: number) => {
957
- if (rowIndex < 0 || rowIndex >= props.items.length) return;
958
- let cancelled = false;
959
- const event = {
960
- data: props.items[rowIndex],
961
- index: rowIndex,
962
- cancel: () => {
963
- cancelled = true;
964
- },
965
- };
966
- emit("row-remove", event);
967
- if (!cancelled) {
968
- inlineEdit.removeRow(rowIndex);
969
- }
970
- };
971
-
972
- // Pagination handler
973
- const handlePaginationClick = (page: number) => {
974
- emit("pagination-click", page);
975
- };
976
-
977
- // ============================================================================
978
- // Search
979
- // ============================================================================
980
-
981
- const internalSearchValue = ref(props.searchValue ?? "");
982
- let searchTimer: ReturnType<typeof setTimeout> | null = null;
983
-
984
- const handleSearchInput = (value: string) => {
985
- internalSearchValue.value = value;
986
- emit("update:searchValue", value);
987
-
988
- if (searchTimer) clearTimeout(searchTimer);
989
- searchTimer = setTimeout(() => {
990
- emit("search", value);
991
- }, props.searchDebounce ?? 300);
992
- };
993
-
994
- // Watch for external changes (controlled mode)
995
- watch(
996
- () => props.searchValue,
997
- (newVal) => {
998
- if (newVal !== undefined && newVal !== internalSearchValue.value) {
999
- internalSearchValue.value = newVal;
1000
- }
1001
- },
1002
- );
1003
-
1004
- // Infinite scroll handler
1005
- const handleContentScroll = (e: Event) => {
1006
- if (!props.infiniteScroll || props.loading) return;
1007
- const el = e.target as HTMLElement;
1008
- const threshold = props.infiniteScrollDistance ?? 100;
1009
- if (el.scrollHeight - el.scrollTop - el.clientHeight < threshold) {
1010
- emit("load-more");
1011
- }
1012
- };
1013
-
1014
- // Dev warning: totalCount > items.length without pagination
1015
- if (import.meta.env.DEV) {
1016
- watch(
1017
- () => [props.totalCount, props.items.length, props.pagination] as const,
1018
- ([total, length, pagination]) => {
1019
- if (!pagination && total && total > length) {
1020
- console.warn(
1021
- '[VcDataTable] totalCount > items.length but no "pagination" prop provided. ' +
1022
- 'Add :pagination="{ currentPage, pages }" to enable pagination.',
1023
- );
1024
- }
1025
- },
1026
- { immediate: true },
1027
- );
1028
- }
1029
-
1030
- // Add row config
1031
- const showAddRowButton = computed(() => props.addRow?.enabled === true);
1032
- const addRowPosition = computed(() => props.addRow?.position ?? "footer");
1033
- const addRowLabel = computed(() => props.addRow?.label ?? "Add row");
1034
- const addRowIcon = computed(() => props.addRow?.icon ?? "fas fa-plus");
1035
-
1036
- // ============================================================================
1037
- // Row Hover for Actions
1038
- // ============================================================================
1039
- // Note: Row hover state for action visibility is managed by Table.vue's own
1040
- // tableContext provide (selectedRowIndex + setSelectedRowIndex). TableRow.vue
1041
- // calls setSelectedRowIndex on mouseenter/mouseleave, and TableRowActions.vue
1042
- // injects from the same context. No duplicate provide needed here.
1043
-
1044
- // Handlers kept as no-ops to satisfy template bindings from DataTableBody.
1045
- // The actual hover state flows through Table.vue → TableRow → TableRowActions.
1046
- const handleRowMouseEnter = (_index: number) => {};
1047
- const handleRowMouseLeave = () => {};
1048
-
1049
- // ============================================================================
1050
- // Selection Column Detection
1051
- // ============================================================================
1052
-
1053
- const selectionColumn = computed<ColumnInstance | null>(() => {
1054
- // Use visibleColumns which works with slot-based extraction
1055
- return visibleColumns.value.find((col) => col.props.selectionMode !== undefined) || null;
1056
- });
1057
-
1058
- const hasSelectionColumn = computed(() => props.selectionMode !== undefined || selectionColumn.value !== null);
1059
- const effectiveSelectionMode = computed<"single" | "multiple" | undefined>(() => {
1060
- if (props.selectionMode) return props.selectionMode;
1061
- return selectionColumn.value?.props.selectionMode;
1062
- });
1063
- const isSelectionViaColumn = computed(() => selectionColumn.value !== null);
1064
- const computedVariant = computed(() => {
1065
- if (props.striped) return "striped";
1066
- if (props.bordered) return "bordered";
1067
- return props.variant;
1068
- });
1069
-
1070
- // ============================================================================
1071
- // Row Reorder
1072
- // ============================================================================
1073
-
1074
- const rowReorderColumn = computed<ColumnInstance | null>(() => {
1075
- // Use visibleColumns which works with slot-based extraction
1076
- return visibleColumns.value.find((col) => col.props.rowReorder === true) || null;
1077
- });
1078
-
1079
- const isRowReorderEnabled = computed(() => props.reorderableRows || rowReorderColumn.value !== null);
1080
- const showRowDragHandle = computed(() => rowReorderColumn.value !== null);
1081
-
1082
- const itemsRef = toRef(props, "items");
1083
- const {
1084
- draggedRow,
1085
- pendingReorder,
1086
- reorderedItems,
1087
- onRowMouseDown,
1088
- onRowDragStart,
1089
- onRowDragOver,
1090
- onRowDragLeave,
1091
- onRowDragEnd,
1092
- onRowDrop,
1093
- } = useTableRowReorder(itemsRef, (event) => emit("row-reorder", event));
1094
-
1095
- // ============================================================================
1096
- // Expander Column Detection
1097
- // ============================================================================
1098
-
1099
- const expanderColumn = computed<ColumnInstance | null>(() => {
1100
- // Use visibleColumns which works with slot-based extraction
1101
- return visibleColumns.value.find((col) => col.props.expander === true) || null;
1102
- });
1103
-
1104
- const hasExpanderColumn = computed(() => expanderColumn.value !== null);
1105
-
1106
- // ============================================================================
1107
- // Filtering
1108
- // ============================================================================
1109
-
1110
- // Column filter helpers (declarative `filter` prop API)
1111
- const colFilter = useColumnFilter();
1112
-
1113
- const {
1114
- filterValues,
1115
- updateFilter,
1116
- updateRangeFilter,
1117
- clearFilter,
1118
- clearAllFilters,
1119
- buildPayload,
1120
- hasActiveFilters,
1121
- activeFilterCount,
1122
- } = useFilterState({
1123
- onFilterChange: (payload) => {
1124
- emit("filter", { filters: payload, filteredValue: props.items });
1125
- },
1126
- });
1127
-
1128
- provide(FilterContextKey, {
1129
- filterValues,
1130
- updateFilter,
1131
- clearFilter,
1132
- clearAllFilters,
1133
- hasActiveFilters,
1134
- activeFilterCount,
1135
- });
1136
-
1137
- // Template helpers that bridge VcColumn instances → ColumnFilter props
1138
- const showColumnFilter = (col: ColumnInstance): boolean => {
1139
- return colFilter.hasFilter(col.props.filter);
1140
- };
1141
-
1142
- const getColumnFilterField = (col: ColumnInstance): string => {
1143
- return col.props.filterField || colFilter.getFilterField(col.props.id, col.props.filter);
1144
- };
1145
-
1146
- const getColumnFilterType = (col: ColumnInstance) => {
1147
- return colFilter.getFilterType(col.props.filter);
1148
- };
1149
-
1150
- const getColumnFilterOptions = (col: ColumnInstance) => {
1151
- return colFilter.getFilterOptions(col.props.filter);
1152
- };
1153
-
1154
- const isColumnFilterMultiple = (col: ColumnInstance): boolean => {
1155
- return colFilter.isMultipleSelect(col.props.filter);
1156
- };
1157
-
1158
- const getColumnRangeFields = (col: ColumnInstance) => {
1159
- return colFilter.getRangeFields(col.props.filter);
1160
- };
1161
-
1162
- const getColumnFilterValue = (col: ColumnInstance): FilterValue => {
1163
- const field = getColumnFilterField(col);
1164
- // For dateRange, reconstruct { start, end } from range key
1165
- if (getColumnFilterType(col) === "dateRange") {
1166
- const rangeFields = getColumnRangeFields(col);
1167
- if (rangeFields) {
1168
- const key = `__range__${rangeFields[0]}__${rangeFields[1]}`;
1169
- return filterValues.value[key] ?? null;
1170
- }
1171
- }
1172
- return filterValues.value[field] ?? null;
1173
- };
1174
-
1175
- const handleColumnFilterApply = (col: ColumnInstance, payload: Record<string, unknown>) => {
1176
- const filterType = getColumnFilterType(col);
1177
- const field = getColumnFilterField(col);
1178
-
1179
- if (filterType === "dateRange") {
1180
- const rangeFields = getColumnRangeFields(col);
1181
- if (rangeFields) {
1182
- const start = payload[rangeFields[0]] as string | undefined;
1183
- const end = payload[rangeFields[1]] as string | undefined;
1184
- updateRangeFilter(rangeFields, { start, end });
1185
- }
1186
- } else {
1187
- const value = payload[field];
1188
- updateFilter(field, value as FilterValue);
1189
- }
1190
-
1191
- // Emit combined payload
1192
- emitFilterPayload();
1193
- };
1194
-
1195
- const handleColumnFilterClear = (col: ColumnInstance) => {
1196
- const field = getColumnFilterField(col);
1197
- const filterType = getColumnFilterType(col);
1198
-
1199
- if (filterType === "dateRange") {
1200
- const rangeFields = getColumnRangeFields(col);
1201
- if (rangeFields) {
1202
- const key = `__range__${rangeFields[0]}__${rangeFields[1]}`;
1203
- clearFilter(key);
1204
- }
1205
- } else {
1206
- clearFilter(field);
1207
- }
1208
-
1209
- // Emit combined payload
1210
- emitFilterPayload();
1211
- };
1212
-
1213
- /** Emit the combined column + global filter payload */
1214
- const emitFilterPayload = () => {
1215
- const payload = buildPayload();
1216
- // Merge global filter payload (if any)
1217
- if (globalFilterPayload.value) {
1218
- Object.assign(payload, globalFilterPayload.value);
1219
- }
1220
- emit("filter", { filters: payload, filteredValue: props.items });
1221
- };
1222
-
1223
- // Global filter state
1224
- const globalFilterPayload = ref<Record<string, unknown> | null>(null);
1225
- const showGlobalFiltersPanel = ref(false);
1226
- const globalFilterValues = ref<Record<string, unknown>>({});
1227
- const globalFiltersButtonRef = ref<InstanceType<typeof GlobalFiltersButton> | null>(null);
1228
-
1229
- // Computed: get the raw element from the component ref for anchor positioning
1230
- const globalFiltersButtonEl = computed<HTMLElement | null>(() => {
1231
- return (globalFiltersButtonRef.value as unknown as { $el?: HTMLElement })?.$el ?? null;
1232
- });
1233
-
1234
- // Column switcher state
1235
- const showColumnSwitcherPanel = ref(false);
1236
- const dataTableHeaderRef = ref<InstanceType<typeof DataTableHeader> | null>(null);
1237
-
1238
- const columnSwitcherButtonEl = computed<HTMLElement | null>(() => {
1239
- return dataTableHeaderRef.value?.columnSwitcherEl ?? null;
1240
- });
1241
-
1242
- // Computed: count of active global filters
1243
- const globalActiveFilterCount = computed(() => {
1244
- let count = 0;
1245
- for (const val of Object.values(globalFilterValues.value)) {
1246
- if (val === null || val === undefined || val === "") continue;
1247
- if (Array.isArray(val) && val.length === 0) continue;
1248
- if (typeof val === "object" && !Array.isArray(val)) {
1249
- const range = val as { start?: string; end?: string };
1250
- if (range.start || range.end) count++;
1251
- continue;
1252
- }
1253
- count++;
1254
- }
1255
- return count;
1256
- });
1257
-
1258
- const handleGlobalFilterApply = (payload: Record<string, unknown>) => {
1259
- globalFilterPayload.value = payload;
1260
- emitFilterPayload();
1261
- };
1262
-
1263
- const handleGlobalFilterClear = () => {
1264
- globalFilterPayload.value = null;
1265
- globalFilterValues.value = {};
1266
- emitFilterPayload();
1267
- };
1268
-
1269
- // ============================================================================
1270
- // Display Items
1271
- // ============================================================================
1272
-
1273
- // Display items: items come pre-filtered from the backend
1274
- // Only row-reorder dragging changes display order locally
1275
- const displayItems = computed<T[]>(() => {
1276
- // During drag or waiting for parent to update items after drop
1277
- if ((draggedRow.value !== undefined || pendingReorder.value) && isRowReorderEnabled.value) {
1278
- return [...(reorderedItems.value as T[])];
1279
- }
1280
-
1281
- return props.items ?? [];
1282
- });
1283
-
1284
- // Helper to get global index of an item (for grouped mode)
1285
- const getGlobalIndex = (item: T): number => {
1286
- return displayItems.value.indexOf(item);
1287
- };
1288
-
1289
- // ============================================================================
1290
- // Column Helpers (via composable)
1291
- // ============================================================================
1292
-
1293
- const cols = useTableColumns({
1294
- visibleColumns,
1295
- resizableColumns: props.resizableColumns,
1296
- reorderableColumns: props.reorderableColumns,
1297
- hasSelectionColumn,
1298
- isSelectionViaColumn,
1299
- });
1300
-
1301
- // Provide hasFlexColumns for TableRow filler control
1302
- provide(HasFlexColumnsKey, cols.hasFlexColumns);
1303
-
1304
- // ============================================================================
1305
- // Column Switcher
1306
- // ============================================================================
1307
-
1308
- // Stable set of data-discovered column IDs.
1309
- // Uses a string key watcher so the Set is only re-created when actual IDs change
1310
- // (avoids false triggers from new array references in the computed source).
1311
- const dataDiscoveredIds = ref<Set<string>>(new Set());
1312
- watch(
1313
- () => dataDiscoveredColumns.value.map((c) => c.props.id).join(","),
1314
- () => {
1315
- dataDiscoveredIds.value = new Set(dataDiscoveredColumns.value.map((c) => c.props.id));
1316
- },
1317
- { immediate: true },
1318
- );
1319
-
1320
- const switcherColumns = computed(() => {
1321
- // Declared columns (excluding statically hidden and special columns)
1322
- const declared = declaredColumns.value
1323
- .filter((col) => col.props.visible !== false)
1324
- .filter((col) => !cols.isSpecialColumn(col.props))
1325
- .map((col) => ({
1326
- id: col.props.id,
1327
- label: col.props.title || col.props.field || col.props.id,
1328
- visible: !hiddenColumnIds.value.has(col.props.id),
1329
- defaultVisible: true,
1330
- }));
1331
-
1332
- // Data-discovered columns (from items keys, default hidden)
1333
- const discovered = dataDiscoveredColumns.value.map((col) => ({
1334
- id: col.props.id,
1335
- label: col.props.title || col.props.id,
1336
- visible: !hiddenColumnIds.value.has(col.props.id),
1337
- defaultVisible: false,
1338
- }));
1339
-
1340
- return [...declared, ...discovered];
1341
- });
1342
-
1343
- const switcherVisibleColumnIds = computed(() => {
1344
- return switcherColumns.value.filter((c) => c.visible).map((c) => c.id);
1345
- });
1346
-
1347
- // ============================================================================
1348
- // State Persistence
1349
- // ============================================================================
1350
-
1351
- const statePersistence = useDataTableState({
1352
- stateKey: toRef(props, "stateKey"),
1353
- stateStorage: computed(() => props.stateStorage ?? "local"),
1354
- columnWidths: cols.columnWidths,
1355
- hiddenColumnIds,
1356
- shownColumnIds: shownDataDiscoveredColumnIds,
1357
- onStateSave: (state) => emit("state-save", state),
1358
- onStateRestore: (state) => emit("state-restore", state),
1359
- });
1360
-
1361
- // Initialize hiddenColumnIds with data-discovered columns (they start hidden).
1362
- // Keep hidden IDs for columns that temporarily disappear between different
1363
- // datasets/views (e.g. products vs catalog). This preserves per-view visibility.
1364
- watch(
1365
- dataDiscoveredIds,
1366
- (newIds, oldIds) => {
1367
- const updatedHidden = new Set(hiddenColumnIds.value);
1368
- const updatedShown = new Set(shownDataDiscoveredColumnIds.value);
1369
- let hiddenChanged = false;
1370
- let shownChanged = false;
1371
-
1372
- // Newly discovered auto columns are hidden by default, unless user
1373
- // explicitly enabled them earlier (persisted in shownDataDiscoveredColumnIds).
1374
- for (const id of newIds) {
1375
- if ((!oldIds || !oldIds.has(id)) && !updatedHidden.has(id) && !updatedShown.has(id)) {
1376
- updatedHidden.add(id);
1377
- hiddenChanged = true;
1378
- }
1379
- }
1380
-
1381
- // If a key becomes a declared column (no longer auto-discovered), drop it
1382
- // from auto-column state sets. Do not remove IDs that simply disappeared
1383
- // due to switching datasets/views.
1384
- if (oldIds) {
1385
- const declaredIds = new Set(declaredColumns.value.map((col) => col.props.id));
1386
- for (const id of oldIds) {
1387
- if (!newIds.has(id) && declaredIds.has(id)) {
1388
- if (updatedHidden.delete(id)) {
1389
- hiddenChanged = true;
1390
- }
1391
- if (updatedShown.delete(id)) {
1392
- shownChanged = true;
1393
- }
1394
- }
1395
- }
1396
- }
1397
-
1398
- if (hiddenChanged) {
1399
- hiddenColumnIds.value = updatedHidden;
1400
- }
1401
- if (shownChanged) {
1402
- shownDataDiscoveredColumnIds.value = updatedShown;
1403
- }
1404
- },
1405
- { immediate: true },
1406
- );
1407
-
1408
- const handleColumnVisibilityChange = (visibleIds: string[]) => {
1409
- const visibleSet = new Set(visibleIds);
1410
- const allToggleableIds = switcherColumns.value.map((c) => c.id);
1411
- const discoveredToggleableIds = switcherColumns.value.filter((c) => c.defaultVisible === false).map((c) => c.id);
1412
-
1413
- // Preserve hidden IDs that are not part of the current switcher view.
1414
- // This prevents losing hidden preferences when switching datasets/views.
1415
- const toggleableSet = new Set(allToggleableIds);
1416
- const discoveredSet = new Set(discoveredToggleableIds);
1417
- const newHidden = new Set<string>([...hiddenColumnIds.value].filter((id) => !toggleableSet.has(id)));
1418
- const newShown = new Set<string>([...shownDataDiscoveredColumnIds.value].filter((id) => !discoveredSet.has(id)));
1419
-
1420
- for (const id of allToggleableIds) {
1421
- if (!visibleSet.has(id)) {
1422
- newHidden.add(id);
1423
- }
1424
- }
1425
-
1426
- for (const id of discoveredToggleableIds) {
1427
- if (visibleSet.has(id)) {
1428
- newShown.add(id);
1429
- }
1430
- }
1431
-
1432
- hiddenColumnIds.value = newHidden;
1433
- shownDataDiscoveredColumnIds.value = newShown;
1434
- };
1435
-
1436
- // Safe columns getter with null-check protection for template iteration
1437
- const safeColumns = computed(() => {
1438
- return cols.orderedVisibleColumns.value.filter(
1439
- (col): col is ColumnInstance => col != null && col.props != null && col.props.id != null,
1440
- );
1441
- });
1442
-
1443
- // ============================================================================
1444
- // Row Props Builder (for DataTableRow component)
1445
- // ============================================================================
1446
-
1447
- /**
1448
- * Builds the props object for DataTableRow component.
1449
- * This centralizes all row-related prop computation in one place.
1450
- */
1451
- const getRowProps = (item: T, index: number) => ({
1452
- item,
1453
- index,
1454
- columns: safeColumns.value,
1455
-
1456
- // Selection
1457
- isSelected: selection.isSelected(item),
1458
- isActive: props.activeItemId != null && getItemKey(item, index) === String(props.activeItemId),
1459
- isSelectable: selection.canSelect(item),
1460
- selectionMode: effectiveSelectionMode.value,
1461
- showSelectionCell: hasSelectionColumn.value && !isSelectionViaColumn.value,
1462
-
1463
- // Reorder
1464
- reorderable: isRowReorderEnabled.value,
1465
- showDragHandle: showRowDragHandle.value,
1466
- isDragging: draggedRow.value === index,
1467
-
1468
- // Expansion
1469
- expandable: hasExpanderColumn.value,
1470
- isExpanded: isRowExpanded(item),
1471
- expandedIcon: props.expandedRowIcon,
1472
- collapsedIcon: props.collapsedRowIcon,
1473
-
1474
- // Editing
1475
- editingRowData: editing.getEditingRowData(item, index),
1476
- isRowEditing: editing.isRowEditing(item),
1477
- isInlineEditing: isInlineEditing.value,
1478
- isCellEditing: editing.isCellEditing,
1479
-
1480
- // Actions
1481
- hasActions: !!props.rowActions,
1482
-
1483
- // Column helpers
1484
- getColumnWidth: cols.getEffectiveColumnWidth,
1485
- getCellAlign: cols.getCellAlign,
1486
- getCellStyle: cols.getCellStyle,
1487
-
1488
- // Custom class
1489
- rowClass: [{ "vc-data-table__row--dragging": draggedRow.value === index }, props.rowClass?.(item)],
1490
- });
1491
-
1492
- const { handleResizeStart } = useTableColumnsResize({
1493
- columns: cols.columnWidths,
1494
- minColumnWidth: 60,
1495
- getColumnElement: (id) => cols.headerRefs.get(id) ?? null,
1496
- getAllColumnElements: (id) => {
1497
- if (!tableContainerRef.value) return null;
1498
- return tableContainerRef.value.querySelectorAll(`[data-column-id="${id}"]`);
1499
- },
1500
- onResizeEnd: (colsData) => emit("column-resize-end", { columns: colsData }),
1501
- });
1502
-
1503
- const {
1504
- isDragging: isColumnReordering,
1505
- handleDragStart: handleColumnDragStart,
1506
- handleDragOver: handleColumnDragOver,
1507
- handleDrop: handleColumnDrop,
1508
- } = useTableColumnsReorder({
1509
- columns: cols.columnWidths,
1510
- onReorderEnd: (colsData) => emit("column-reorder", { columns: colsData }),
1511
- });
1512
-
1513
- // Provide column reordering state so TableRow enables FLIP animation only during drag
1514
- provide(IsColumnReorderingKey, isColumnReordering);
1515
-
1516
- // ============================================================================
1517
- // Event Handlers
1518
- // ============================================================================
1519
-
1520
- const handleSort = (col: VcColumnProps, event?: MouseEvent) => {
1521
- sort.handleSort(cols.getSortField(col), event);
1522
- };
1523
-
1524
- const handleSelectAllChange = (value: boolean) => {
1525
- const result = selection.handleSelectAllChange(value);
1526
- if (value) emit("row-select-all", result);
1527
- else emit("row-unselect-all", result);
1528
- emit("update:selectAll", value);
1529
- };
1530
-
1531
- const handleRowSelectionChange = (item: T, eventOrValue?: Event | boolean) => {
1532
- const wasSelected = selection.isSelected(item);
1533
- const result = selection.handleRowSelectionChange(item, eventOrValue);
1534
- if (result) {
1535
- if (wasSelected) emit("row-unselect", result);
1536
- else emit("row-select", result);
1537
- }
1538
- };
1539
-
1540
- const handleRowClick = (item: T, index: number, event: Event) => {
1541
- const itemKey = getItemKey(item, index);
1542
- const isSameItem = props.activeItemId != null && itemKey === String(props.activeItemId);
1543
- emit("update:activeItemId", isSameItem ? undefined : itemKey);
1544
- emit("row-click", { data: item, index, originalEvent: event });
1545
- const target = event.target as HTMLElement;
1546
- const isCheckboxClick = target.tagName === "INPUT" && target.getAttribute("type") === "checkbox";
1547
- if (effectiveSelectionMode.value === "single" && !isCheckboxClick) {
1548
- handleRowSelectionChange(item, event);
1549
- }
1550
- };
1551
-
1552
- const handleCellClick = (item: T, field: string, rowIndex: number, col: ColumnInstance) => {
1553
- if (
1554
- props.editMode === "cell" &&
1555
- (col.slots.editor || col.props.editable) &&
1556
- !editing.isCellEditing(rowIndex, field)
1557
- ) {
1558
- const event = editing.startCellEdit(item, field, rowIndex);
1559
- emit("cell-edit-init", event);
1560
- }
1561
- };
1562
-
1563
- const handleCellEditComplete = (item: T, field: string, rowIndex: number, newValue: unknown) => {
1564
- // Close the editor and emit the event
1565
- // This is called from focusout on the editor wrapper or Enter key
1566
- const event = editing.completeCellEdit(item, field, rowIndex, newValue);
1567
- emit("cell-edit-complete", { data: item, field, newValue: event.newValue, index: rowIndex });
1568
-
1569
- // If inline editing is active, also update the inlineEdit composable
1570
- if (inlineEdit.isEditing.value) {
1571
- inlineEdit.updateCell(rowIndex, field, newValue);
1572
- }
1573
- };
1574
-
1575
- const handleCellEditCancel = (item: T, field: string, rowIndex: number) => {
1576
- // Cancel editing - discard changes
1577
- editing.cancelCellEdit(item, field, rowIndex);
1578
- emit("cell-edit-cancel", { data: item, field, index: rowIndex });
1579
- };
1580
-
1581
- /**
1582
- * Handle cell value change during editing (for inline edit dirty tracking).
1583
- * Called on every keystroke/input change, not just on blur.
1584
- */
1585
- const handleCellValueChange = (field: string, rowIndex: number, newValue: unknown) => {
1586
- // If inline editing is active, update the inlineEdit composable immediately
1587
- if (inlineEdit.isEditing.value) {
1588
- inlineEdit.updateCell(rowIndex, field, newValue);
1589
- }
1590
- };
1591
-
1592
- const handleExpandToggle = (item: T, index: number, event: Event) => {
1593
- const wasExpanded = expansion.isRowExpanded(item, index);
1594
- const result = expansion.toggleRowExpansion(item, index, event);
1595
- if (wasExpanded) emit("row-collapse", result);
1596
- else emit("row-expand", result);
1597
- };
1598
-
1599
- const handleStartRowEdit = (item: T, index: number) => {
1600
- const event = editing.startRowEdit(item, index);
1601
- emit("update:editingRows", editing.internalEditingRows.value);
1602
- emit("row-edit-init", event);
1603
- };
1604
-
1605
- const handleSaveRowEdit = (item: T, index: number) => {
1606
- const event = editing.saveRowEdit(item, index);
1607
- emit("update:editingRows", editing.internalEditingRows.value);
1608
- emit("row-edit-save", event);
1609
- };
1610
-
1611
- const handleCancelRowEdit = (item: T, index: number) => {
1612
- const event = editing.cancelRowEdit(item, index);
1613
- emit("update:editingRows", editing.internalEditingRows.value);
1614
- emit("row-edit-cancel", event);
1615
- };
1616
-
1617
- const handleRowAction = (action: TableAction, item: T, index: number) => {
1618
- // Call the action's click handler with item and index (matching legacy vc-table behavior)
1619
- action.clickHandler?.(item, index);
1620
- emit("row-action", { action, item, index });
1621
- };
1622
-
1623
- // ============================================================================
1624
- // Mobile View Event Handlers
1625
- // ============================================================================
1626
-
1627
- const handleMobileRowClick = (item: T, index: number) => {
1628
- emit("row-click", { data: item, index, originalEvent: new Event("click") });
1629
- };
1630
-
1631
- const handleMobileRowSelect = (item: T, index: number) => {
1632
- handleRowSelectionChange(item);
1633
- };
1634
-
1635
- const handleMobileRowAction = (
1636
- action: MobileSwipeAction<T>,
1637
- item: T,
1638
- index: number,
1639
- ) => {
1640
- // Execute the action's click handler if provided
1641
- if (action.clickHandler) {
1642
- action.clickHandler(item, index);
1643
- }
1644
- // Also emit the row-action event for parent components
1645
- emit("row-action", { action, item, index });
1646
- };
1647
-
1648
- // ============================================================================
1649
- // Refs & Lifecycle
1650
- // ============================================================================
1651
-
1652
- const tableRootRef = ref<HTMLElement | null>(null);
1653
- const tableContainerRef = ref<HTMLElement | null>(null);
1654
- const paginationRef = ref<HTMLElement | null>(null);
1655
-
1656
- // ============================================================================
1657
- // Adaptive Pagination
1658
- // ============================================================================
1659
-
1660
- const { width: paginationWidth } = useElementSize(paginationRef);
1661
-
1662
- /** Pagination item width (29px) + gap (8px) = 37px per button */
1663
- const PAGINATION_ITEM_SLOT = 37;
1664
- /** Approximate width of the page-info text + padding */
1665
- const PAGINATION_BASE_WIDTH = 140;
1666
-
1667
- const paginationMaxPages = computed(() => {
1668
- if (!props.pagination || paginationWidth.value === 0) return 5;
1669
- const available = paginationWidth.value - PAGINATION_BASE_WIDTH;
1670
- // prev + next buttons always shown = 2 slots
1671
- const slotsForPages = Math.floor((available - 2 * PAGINATION_ITEM_SLOT) / PAGINATION_ITEM_SLOT);
1672
- if (slotsForPages >= 7) return 5; // enough room for 5 pages + first/last
1673
- if (slotsForPages >= 3) return slotsForPages;
1674
- return 0;
1675
- });
1676
-
1677
- const paginationShowFirstLast = computed(() => {
1678
- if (!props.pagination || paginationWidth.value === 0) return true;
1679
- const available = paginationWidth.value - PAGINATION_BASE_WIDTH;
1680
- // Need room for: first + prev + at least 1 page + next + last = 5 slots minimum
1681
- return available >= 5 * PAGINATION_ITEM_SLOT;
1682
- });
1683
-
1684
- // Note: Click-outside handling is done via focusout on the editor wrapper in DataTableCellRenderer.
1685
- // No need for a separate mousedown listener - focusout covers all cases.
1686
-
1687
- // ============================================================================
1688
- // Expose API
1689
- // ============================================================================
1690
-
1691
- defineExpose({
1692
- // Selection API
1693
- selectAll: selection.selectAll,
1694
- clearSelection: selection.clearSelection,
1695
- getSelectionState: selection.getSelectionState,
1696
- isSelectAllActive: selection.isSelectAllActive,
1697
- showSelectAllChoice: selection.showSelectAllChoice,
1698
- selectionInfo: selection.selectionInfo,
1699
-
1700
- // Row CRUD API
1701
- addRow: handleAddRow,
1702
- removeRow: handleRemoveRow,
1703
-
1704
- // Inline editing API
1705
- startEditing: inlineEdit.startEditing,
1706
- cancelEditing: inlineEdit.cancelEditing,
1707
- saveChanges: inlineEdit.saveChanges,
1708
- isEditing: inlineEdit.isEditing,
1709
- isValid: inlineEdit.isValid,
1710
- isDirty: inlineEdit.isDirty,
1711
- getCellError: inlineEdit.getCellError,
1712
- pendingChanges: inlineEdit.pendingChanges,
1713
-
1714
- // State persistence API
1715
- clearState: statePersistence.clearState,
1716
- saveState: statePersistence.saveState,
1717
- });
1718
-
1719
- onBeforeUnmount(() => {
1720
- columnCollector.clear();
1721
- if (searchTimer) clearTimeout(searchTimer);
1722
- });
1723
- </script>
1724
-
1725
- <style lang="scss">
1726
- // Table CSS variables are defined in Table.vue on .vc-table-composition.
1727
- // No :root fallback needed — all sub-components render inside <Table>.
1728
- .vc-data-table {
1729
- // Note: overflow-visible allows absolutely positioned elements like row actions
1730
- // to escape the container bounds. The inner __content element handles scrolling.
1731
- @apply tw-relative tw-flex tw-flex-col tw-grow tw-basis-0 tw-flex-auto tw-h-full tw-overflow-visible;
1732
-
1733
- &__header {
1734
- @apply tw-flex-shrink-0 tw-px-4 tw-py-2;
1735
- }
1736
-
1737
- &__content {
1738
- // flex-basis: 0 (tw-basis-0) is critical: with `auto` basis the element sizes to content
1739
- // first, so overflow-y never activates on mobile touch devices.
1740
- // basis-0 forces height from flex allocation → content overflows → scroll works.
1741
- @apply tw-relative tw-box-border tw-w-full tw-flex tw-flex-col tw-grow tw-shrink tw-min-h-0;
1742
- // Vertical scroll only — horizontal overflow is hidden to prevent scrollbar flash
1743
- // during animated container resize (blade expand/collapse).
1744
- // Columns use flex-shrink to fit within available width.
1745
- overflow-x: hidden;
1746
- overflow-y: auto;
1747
- // Enable momentum scrolling on iOS
1748
- -webkit-overflow-scrolling: touch;
1749
- }
1750
-
1751
- &__loading {
1752
- @apply tw-flex tw-items-center tw-justify-center tw-p-8 tw-text-neutrals-500;
1753
- }
1754
-
1755
- // Hide spinner overlay when skeleton is showing (initial load)
1756
- &--skeleton-active .vc-loading-overlay {
1757
- display: none !important;
1758
- }
1759
-
1760
- &__row--dragging {
1761
- @apply tw-opacity-50;
1762
- }
1763
-
1764
- &__expansion-row {
1765
- @apply tw-bg-neutrals-50 tw-w-full tw-border-b tw-border-[color:var(--table-border-color)];
1766
- }
1767
-
1768
- &__expansion-content {
1769
- @apply tw-p-4;
1770
- }
1771
-
1772
- &__global-filters {
1773
- @apply tw-flex tw-items-center tw-px-3 tw-py-2;
1774
- border-bottom: 1px solid var(--table-border-color, #e5e7eb);
1775
- }
1776
-
1777
- &__header-content {
1778
- @apply tw-flex tw-items-center tw-justify-between tw-gap-2 tw-w-full;
1779
- }
1780
-
1781
- &__header-title {
1782
- @apply tw-flex-1 tw-truncate;
1783
- }
1784
-
1785
- &__group-label {
1786
- @apply tw-font-semibold tw-text-sm;
1787
- color: var(--neutrals-900);
1788
- }
1789
-
1790
- &__group-count {
1791
- @apply tw-text-sm tw-ml-2;
1792
- color: var(--neutrals-500);
1793
- }
1794
-
1795
- &__group-footer {
1796
- @apply tw-bg-neutrals-50 tw-px-4 tw-py-2 tw-border-b;
1797
- border-color: var(--table-border-color);
1798
- font-size: 0.875rem;
1799
- color: var(--neutrals-600);
1800
- }
1801
-
1802
- &__rows-container {
1803
- @apply tw-flex tw-flex-col;
1804
- }
1805
-
1806
- &__selection-cell {
1807
- text-align: center;
1808
- justify-content: center;
1809
- min-width: 40px;
1810
- max-width: 40px;
1811
- width: 40px;
1812
- }
1813
-
1814
- &__pagination {
1815
- @apply tw-flex-shrink-0 tw-flex tw-justify-between tw-items-center tw-px-4 tw-py-[11px] tw-border-t;
1816
- border-color: var(--table-border-color, var(--neutrals-200));
1817
- }
1818
-
1819
- &__page-info {
1820
- @apply tw-text-sm;
1821
- color: var(--neutrals-600);
1822
- }
1823
- }
1824
-
1825
- /* FLIP move animation for row reorder */
1826
- .vc-table-row-swap-move {
1827
- transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1) !important;
1828
- }
1829
-
1830
- /* Disable transitions on enter/leave so only moves animate */
1831
- .vc-table-row-swap-enter-active,
1832
- .vc-table-row-swap-leave-active {
1833
- transition: none !important;
1834
- }
1835
- </style>