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