vuetify 3.2.4 → 3.3.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 (335) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +2503 -2151
  3. package/dist/json/importMap-labs.json +12 -4
  4. package/dist/json/importMap.json +28 -28
  5. package/dist/json/tags.json +107 -9
  6. package/dist/json/web-types.json +10785 -7110
  7. package/dist/vuetify-labs.css +263 -153
  8. package/dist/vuetify-labs.d.ts +35870 -16257
  9. package/dist/vuetify-labs.esm.js +1466 -934
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1465 -933
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +246 -168
  14. package/dist/vuetify.d.ts +27883 -14061
  15. package/dist/vuetify.esm.js +477 -300
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +476 -299
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +811 -806
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/{index.d.ts → index.d.mts} +5 -1
  23. package/lib/blueprints/{md1.d.ts → md1.d.mts} +5 -1
  24. package/lib/blueprints/{md2.d.ts → md2.d.mts} +5 -1
  25. package/lib/blueprints/{md3.d.ts → md3.d.mts} +5 -1
  26. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  27. package/lib/components/VAlert/{index.d.ts → index.d.mts} +284 -69
  28. package/lib/components/VApp/{index.d.ts → index.d.mts} +80 -19
  29. package/lib/components/VAppBar/{index.d.ts → index.d.mts} +391 -119
  30. package/lib/components/VAutocomplete/VAutocomplete.css +15 -9
  31. package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -34
  32. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  33. package/lib/components/VAutocomplete/VAutocomplete.sass +15 -11
  34. package/lib/components/VAutocomplete/index.d.mts +2048 -0
  35. package/lib/components/VAvatar/{index.d.ts → index.d.mts} +85 -30
  36. package/lib/components/VBadge/_variables.scss +1 -1
  37. package/lib/components/VBadge/{index.d.ts → index.d.mts} +105 -42
  38. package/lib/components/VBanner/{index.d.ts → index.d.mts} +282 -63
  39. package/lib/components/VBottomNavigation/{index.d.ts → index.d.mts} +93 -45
  40. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
  41. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  42. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +1 -1
  43. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  44. package/lib/components/VBreadcrumbs/{index.d.ts → index.d.mts} +348 -212
  45. package/lib/components/VBtn/{index.d.ts → index.d.mts} +139 -53
  46. package/lib/components/VBtnGroup/{index.d.ts → index.d.mts} +84 -27
  47. package/lib/components/VBtnToggle/{index.d.ts → index.d.mts} +88 -35
  48. package/lib/components/VCalendar/util/props.mjs.map +1 -1
  49. package/lib/components/VCard/VCard.mjs.map +1 -1
  50. package/lib/components/VCard/{index.d.ts → index.d.mts} +957 -419
  51. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  52. package/lib/components/VCarousel/{index.d.ts → index.d.mts} +616 -111
  53. package/lib/components/VCheckbox/VCheckboxBtn.mjs +3 -3
  54. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  55. package/lib/components/VCheckbox/{index.d.ts → index.d.mts} +408 -141
  56. package/lib/components/VChip/VChip.css +4 -2
  57. package/lib/components/VChip/VChip.mjs.map +1 -1
  58. package/lib/components/VChip/VChip.sass +3 -2
  59. package/lib/components/VChip/{index.d.ts → index.d.mts} +376 -85
  60. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  61. package/lib/components/VChipGroup/index.d.mts +470 -0
  62. package/lib/components/VCode/{index.d.ts → index.d.mts} +78 -17
  63. package/lib/components/VColorPicker/VColorPicker.mjs +9 -4
  64. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  65. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  66. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +5 -4
  67. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  68. package/lib/components/VColorPicker/{index.d.ts → index.d.mts} +241 -109
  69. package/lib/components/VColorPicker/util/index.mjs +2 -22
  70. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  71. package/lib/components/VCombobox/VCombobox.css +15 -9
  72. package/lib/components/VCombobox/VCombobox.mjs +82 -37
  73. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  74. package/lib/components/VCombobox/VCombobox.sass +15 -11
  75. package/lib/components/VCombobox/index.d.mts +2060 -0
  76. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  77. package/lib/components/VCounter/{index.d.ts → index.d.mts} +105 -45
  78. package/lib/components/VDefaultsProvider/{index.d.ts → index.d.mts} +82 -20
  79. package/lib/components/VDialog/{index.d.ts → index.d.mts} +571 -305
  80. package/lib/components/VDivider/{index.d.ts → index.d.mts} +81 -21
  81. package/lib/components/VExpansionPanel/{index.d.ts → index.d.mts} +374 -110
  82. package/lib/components/VField/VField.css +49 -16
  83. package/lib/components/VField/VField.mjs +12 -2
  84. package/lib/components/VField/VField.mjs.map +1 -1
  85. package/lib/components/VField/VField.sass +40 -11
  86. package/lib/components/VField/_variables.scss +8 -2
  87. package/lib/components/VField/index.d.mts +682 -0
  88. package/lib/components/VFileInput/VFileInput.css +3 -0
  89. package/lib/components/VFileInput/VFileInput.mjs +7 -1
  90. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  91. package/lib/components/VFileInput/VFileInput.sass +6 -1
  92. package/lib/components/VFileInput/{index.d.ts → index.d.mts} +1033 -399
  93. package/lib/components/VFooter/{index.d.ts → index.d.mts} +85 -29
  94. package/lib/components/VForm/VForm.mjs.map +1 -1
  95. package/lib/components/VForm/index.d.mts +993 -0
  96. package/lib/components/VGrid/{index.d.ts → index.d.mts} +334 -100
  97. package/lib/components/VHover/VHover.mjs.map +1 -1
  98. package/lib/components/VHover/{index.d.ts → index.d.mts} +120 -37
  99. package/lib/components/VIcon/{index.d.ts → index.d.mts} +322 -81
  100. package/lib/components/VImg/VImg.css +2 -4
  101. package/lib/components/VImg/VImg.mjs +25 -24
  102. package/lib/components/VImg/VImg.mjs.map +1 -1
  103. package/lib/components/VImg/VImg.sass +4 -3
  104. package/lib/components/VImg/{index.d.ts → index.d.mts} +177 -40
  105. package/lib/components/VInput/VInput.css +10 -4
  106. package/lib/components/VInput/VInput.mjs +9 -3
  107. package/lib/components/VInput/VInput.mjs.map +1 -1
  108. package/lib/components/VInput/VInput.sass +7 -2
  109. package/lib/components/VInput/_variables.scss +1 -0
  110. package/lib/components/VInput/{index.d.ts → index.d.mts} +237 -93
  111. package/lib/components/VItemGroup/VItem.mjs +1 -1
  112. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  113. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  114. package/lib/components/VItemGroup/index.d.mts +781 -0
  115. package/lib/components/VKbd/{index.d.ts → index.d.mts} +78 -17
  116. package/lib/components/VLabel/{index.d.ts → index.d.mts} +79 -18
  117. package/lib/components/VLayout/{index.d.ts → index.d.mts} +161 -42
  118. package/lib/components/VLazy/{index.d.ts → index.d.mts} +82 -27
  119. package/lib/components/VList/VList.mjs +6 -1
  120. package/lib/components/VList/VList.mjs.map +1 -1
  121. package/lib/components/VList/VListChildren.mjs +4 -8
  122. package/lib/components/VList/VListChildren.mjs.map +1 -1
  123. package/lib/components/VList/VListGroup.mjs +3 -0
  124. package/lib/components/VList/VListGroup.mjs.map +1 -1
  125. package/lib/components/VList/VListItem.mjs +11 -6
  126. package/lib/components/VList/VListItem.mjs.map +1 -1
  127. package/lib/components/VList/{index.d.ts → index.d.mts} +1245 -619
  128. package/lib/components/VLocaleProvider/{index.d.ts → index.d.mts} +80 -19
  129. package/lib/components/VMain/{index.d.ts → index.d.mts} +79 -19
  130. package/lib/components/VMenu/{index.d.ts → index.d.mts} +567 -299
  131. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  132. package/lib/components/VMessages/{index.d.ts → index.d.mts} +87 -34
  133. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +2 -0
  134. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  135. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -0
  136. package/lib/components/VNavigationDrawer/{index.d.ts → index.d.mts} +139 -57
  137. package/lib/components/VOverlay/{index.d.ts → index.d.mts} +159 -75
  138. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  139. package/lib/components/VPagination/{index.d.ts → index.d.mts} +229 -125
  140. package/lib/components/VParallax/{index.d.ts → index.d.mts} +118 -18
  141. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  142. package/lib/components/VProgressCircular/{index.d.ts → index.d.mts} +148 -45
  143. package/lib/components/VProgressLinear/{index.d.ts → index.d.mts} +119 -52
  144. package/lib/components/VRadio/{index.d.ts → index.d.mts} +139 -40
  145. package/lib/components/VRadioGroup/{index.d.ts → index.d.mts} +265 -93
  146. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -4
  147. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  148. package/lib/components/VRangeSlider/{index.d.ts → index.d.mts} +313 -132
  149. package/lib/components/VRating/{index.d.ts → index.d.mts} +108 -49
  150. package/lib/components/VResponsive/VResponsive.css +13 -5
  151. package/lib/components/VResponsive/VResponsive.mjs +4 -1
  152. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  153. package/lib/components/VResponsive/VResponsive.sass +12 -4
  154. package/lib/components/VResponsive/{index.d.ts → index.d.mts} +99 -16
  155. package/lib/components/VSelect/VSelect.css +15 -9
  156. package/lib/components/VSelect/VSelect.mjs +23 -18
  157. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  158. package/lib/components/VSelect/VSelect.sass +14 -11
  159. package/lib/components/VSelect/index.d.mts +1986 -0
  160. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  161. package/lib/components/VSelectionControl/index.d.mts +403 -0
  162. package/lib/components/VSelectionControlGroup/{index.d.ts → index.d.mts} +90 -38
  163. package/lib/components/VSheet/{index.d.ts → index.d.mts} +81 -21
  164. package/lib/components/VSlideGroup/{index.d.ts → index.d.mts} +236 -61
  165. package/lib/components/VSlider/VSlider.mjs +2 -2
  166. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  167. package/lib/components/VSlider/VSliderThumb.mjs +1 -1
  168. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  169. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  170. package/lib/components/VSlider/{index.d.ts → index.d.mts} +308 -126
  171. package/lib/components/VSlider/slider.mjs +8 -2
  172. package/lib/components/VSlider/slider.mjs.map +1 -1
  173. package/lib/components/VSnackbar/{index.d.ts → index.d.mts} +566 -297
  174. package/lib/components/VSwitch/VSwitch.css +3 -3
  175. package/lib/components/VSwitch/VSwitch.sass +4 -3
  176. package/lib/components/VSwitch/{index.d.ts → index.d.mts} +284 -101
  177. package/lib/components/VSystemBar/{index.d.ts → index.d.mts} +84 -27
  178. package/lib/components/VTable/{index.d.ts → index.d.mts} +122 -26
  179. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  180. package/lib/components/VTabs/{index.d.ts → index.d.mts} +203 -113
  181. package/lib/components/VTextField/VTextField.css +9 -1
  182. package/lib/components/VTextField/VTextField.mjs +4 -2
  183. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  184. package/lib/components/VTextField/VTextField.sass +8 -1
  185. package/lib/components/VTextField/index.d.mts +2735 -0
  186. package/lib/components/VTextarea/VTextarea.mjs +13 -4
  187. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  188. package/lib/components/VTextarea/{index.d.ts → index.d.mts} +933 -393
  189. package/lib/components/VThemeProvider/{index.d.ts → index.d.mts} +80 -20
  190. package/lib/components/VTimeline/{index.d.ts → index.d.mts} +201 -62
  191. package/lib/components/VToolbar/{index.d.ts → index.d.mts} +325 -73
  192. package/lib/components/VTooltip/{index.d.ts → index.d.mts} +568 -297
  193. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  194. package/lib/components/VValidation/index.d.mts +634 -0
  195. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  196. package/lib/components/VVirtualScroll/index.d.mts +229 -0
  197. package/lib/components/VWindow/{index.d.ts → index.d.mts} +271 -68
  198. package/lib/components/{index.d.ts → index.d.mts} +27847 -14031
  199. package/lib/components/index.mjs +2 -3
  200. package/lib/components/index.mjs.map +1 -1
  201. package/lib/components/transitions/{index.d.ts → index.d.mts} +1330 -355
  202. package/lib/composables/display.mjs +6 -6
  203. package/lib/composables/display.mjs.map +1 -1
  204. package/lib/composables/filter.mjs +5 -4
  205. package/lib/composables/filter.mjs.map +1 -1
  206. package/lib/composables/form.mjs +2 -3
  207. package/lib/composables/form.mjs.map +1 -1
  208. package/lib/composables/forwardRefs.mjs.map +1 -1
  209. package/lib/composables/group.mjs +13 -13
  210. package/lib/composables/group.mjs.map +1 -1
  211. package/lib/composables/icons.mjs.map +1 -1
  212. package/lib/composables/{items.mjs → list-items.mjs} +9 -6
  213. package/lib/composables/list-items.mjs.map +1 -0
  214. package/lib/composables/nested/nested.mjs.map +1 -1
  215. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  216. package/lib/composables/scroll.mjs +2 -2
  217. package/lib/composables/scroll.mjs.map +1 -1
  218. package/lib/composables/validation.mjs +44 -16
  219. package/lib/composables/validation.mjs.map +1 -1
  220. package/lib/entry-bundler.mjs +1 -1
  221. package/lib/framework.mjs +1 -1
  222. package/lib/framework.mjs.map +1 -1
  223. package/lib/{index.d.ts → index.d.mts} +16 -10
  224. package/lib/labs/VBottomSheet/VBottomSheet.css +33 -0
  225. package/lib/labs/VBottomSheet/VBottomSheet.mjs +40 -0
  226. package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -0
  227. package/lib/labs/VBottomSheet/VBottomSheet.sass +37 -0
  228. package/lib/labs/VBottomSheet/_variables.scss +5 -0
  229. package/lib/labs/VBottomSheet/index.d.mts +871 -0
  230. package/lib/labs/VBottomSheet/index.mjs +2 -0
  231. package/lib/labs/VBottomSheet/index.mjs.map +1 -0
  232. package/lib/labs/VDataIterator/VDataIterator.mjs +160 -0
  233. package/lib/labs/VDataIterator/VDataIterator.mjs.map +1 -0
  234. package/lib/labs/VDataIterator/composables/items.mjs +37 -0
  235. package/lib/labs/VDataIterator/composables/items.mjs.map +1 -0
  236. package/lib/labs/VDataIterator/index.d.mts +704 -0
  237. package/lib/labs/VDataIterator/index.mjs +2 -0
  238. package/lib/labs/VDataIterator/index.mjs.map +1 -0
  239. package/lib/labs/VDataTable/VDataTable.mjs +58 -20
  240. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  241. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  242. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  243. package/lib/labs/VDataTable/VDataTableHeaders.mjs +17 -10
  244. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  245. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  246. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  247. package/lib/labs/VDataTable/VDataTableServer.mjs +50 -14
  248. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  249. package/lib/labs/VDataTable/VDataTableVirtual.mjs +50 -13
  250. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  251. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  252. package/lib/labs/VDataTable/composables/group.mjs +8 -6
  253. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  254. package/lib/labs/VDataTable/composables/headers.mjs +2 -3
  255. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
  256. package/lib/labs/VDataTable/composables/items.mjs +31 -32
  257. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  258. package/lib/labs/VDataTable/composables/paginate.mjs +14 -2
  259. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  260. package/lib/labs/VDataTable/composables/select.mjs +3 -3
  261. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  262. package/lib/labs/VDataTable/composables/sort.mjs +17 -17
  263. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  264. package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
  265. package/lib/labs/VDataTable/index.d.mts +9681 -0
  266. package/lib/labs/VDataTable/index.mjs +1 -1
  267. package/lib/labs/VDataTable/index.mjs.map +1 -1
  268. package/lib/labs/VDataTable/types.mjs.map +1 -1
  269. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  270. package/lib/labs/VInfiniteScroll/{index.d.ts → index.d.mts} +161 -54
  271. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  272. package/lib/labs/VSkeletonLoader/{index.d.ts → index.d.mts} +92 -31
  273. package/lib/labs/components.d.mts +11806 -0
  274. package/lib/labs/components.mjs +2 -0
  275. package/lib/labs/components.mjs.map +1 -1
  276. package/lib/labs/date/date.mjs.map +1 -1
  277. package/lib/labs/date/index.d.mts +70 -0
  278. package/lib/labs/date/index.mjs +1 -1
  279. package/lib/labs/date/index.mjs.map +1 -1
  280. package/lib/styles/settings/_variables.scss +3 -3
  281. package/lib/util/colorUtils.mjs +68 -3
  282. package/lib/util/colorUtils.mjs.map +1 -1
  283. package/lib/util/console.mjs +12 -81
  284. package/lib/util/console.mjs.map +1 -1
  285. package/lib/util/defineComponent.mjs.map +1 -1
  286. package/lib/util/helpers.mjs +4 -18
  287. package/lib/util/helpers.mjs.map +1 -1
  288. package/lib/util/propsFactory.mjs +2 -0
  289. package/lib/util/propsFactory.mjs.map +1 -1
  290. package/package.json +13 -9
  291. package/lib/components/VAutocomplete/index.d.ts +0 -2050
  292. package/lib/components/VBottomSheet/VBottomSheet.mjs +0 -29
  293. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +0 -1
  294. package/lib/components/VBottomSheet/VBottomSheet.sass +0 -23
  295. package/lib/components/VBottomSheet/_variables.scss +0 -3
  296. package/lib/components/VBottomSheet/index.mjs +0 -4
  297. package/lib/components/VBottomSheet/index.mjs.map +0 -1
  298. package/lib/components/VChipGroup/index.d.ts +0 -280
  299. package/lib/components/VCombobox/index.d.ts +0 -2086
  300. package/lib/components/VData/VData.mjs +0 -374
  301. package/lib/components/VData/VData.mjs.map +0 -1
  302. package/lib/components/VData/index.mjs +0 -4
  303. package/lib/components/VData/index.mjs.map +0 -1
  304. package/lib/components/VDataIterator/VDataFooter.mjs +0 -194
  305. package/lib/components/VDataIterator/VDataFooter.mjs.map +0 -1
  306. package/lib/components/VDataIterator/VDataFooter.sass +0 -71
  307. package/lib/components/VDataIterator/VDataIterator.mjs +0 -316
  308. package/lib/components/VDataIterator/VDataIterator.mjs.map +0 -1
  309. package/lib/components/VDataIterator/_variables.scss +0 -13
  310. package/lib/components/VDataIterator/index.mjs +0 -10
  311. package/lib/components/VDataIterator/index.mjs.map +0 -1
  312. package/lib/components/VField/index.d.ts +0 -563
  313. package/lib/components/VForm/index.d.ts +0 -284
  314. package/lib/components/VItemGroup/index.d.ts +0 -396
  315. package/lib/components/VSelect/index.d.ts +0 -1981
  316. package/lib/components/VSelectionControl/index.d.ts +0 -387
  317. package/lib/components/VTextField/index.d.ts +0 -2061
  318. package/lib/components/VValidation/index.d.ts +0 -243
  319. package/lib/components/VVirtualScroll/index.d.ts +0 -197
  320. package/lib/composables/items.mjs.map +0 -1
  321. package/lib/labs/VDataTable/index.d.ts +0 -5415
  322. package/lib/labs/components.d.ts +0 -5945
  323. package/lib/labs/date/index.d.ts +0 -38
  324. /package/lib/components/VNoSsr/{index.d.ts → index.d.mts} +0 -0
  325. /package/lib/directives/{index.d.ts → index.d.mts} +0 -0
  326. /package/lib/iconsets/{fa-svg.d.ts → fa-svg.d.mts} +0 -0
  327. /package/lib/iconsets/{fa.d.ts → fa.d.mts} +0 -0
  328. /package/lib/iconsets/{fa4.d.ts → fa4.d.mts} +0 -0
  329. /package/lib/iconsets/{md.d.ts → md.d.mts} +0 -0
  330. /package/lib/iconsets/{mdi-svg.d.ts → mdi-svg.d.mts} +0 -0
  331. /package/lib/iconsets/{mdi.d.ts → mdi.d.mts} +0 -0
  332. /package/lib/labs/date/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
  333. /package/lib/locale/adapters/{vue-i18n.d.ts → vue-i18n.d.mts} +0 -0
  334. /package/lib/locale/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
  335. /package/lib/locale/{index.d.ts → index.d.mts} +0 -0
@@ -56,9 +56,9 @@ export const VDataTableServer = genericComponent()({
56
56
  itemsPerPage
57
57
  } = createPagination(props);
58
58
  const itemsLength = computed(() => parseInt(props.itemsLength, 10));
59
- provideExpanded(props);
60
59
  const {
61
- columns
60
+ columns,
61
+ headers
62
62
  } = createHeaders(props, {
63
63
  groupBy,
64
64
  showSelect: toRef(props, 'showSelect'),
@@ -76,12 +76,17 @@ export const VDataTableServer = genericComponent()({
76
76
  page
77
77
  });
78
78
  const {
79
- opened
79
+ opened,
80
+ isGroupOpen,
81
+ toggleGroup
80
82
  } = provideGroupBy({
81
83
  groupBy,
82
84
  sortBy
83
85
  });
84
- providePagination({
86
+ const {
87
+ pageCount,
88
+ setItemsPerPage
89
+ } = providePagination({
85
90
  page,
86
91
  itemsPerPage,
87
92
  itemsLength
@@ -89,7 +94,18 @@ export const VDataTableServer = genericComponent()({
89
94
  const {
90
95
  flatItems
91
96
  } = useGroupedItems(items, groupBy, opened);
92
- provideSelection(props, items);
97
+ const {
98
+ isSelected,
99
+ select,
100
+ selectAll,
101
+ toggleSelect,
102
+ someSelected,
103
+ allSelected
104
+ } = provideSelection(props, items);
105
+ const {
106
+ isExpanded,
107
+ toggleExpand
108
+ } = provideExpanded(props);
93
109
  useOptions({
94
110
  page,
95
111
  itemsPerPage,
@@ -109,6 +125,28 @@ export const VDataTableServer = genericComponent()({
109
125
  loadingText: toRef(props, 'loadingText')
110
126
  }
111
127
  });
128
+ const slotProps = computed(() => ({
129
+ page: page.value,
130
+ itemsPerPage: itemsPerPage.value,
131
+ sortBy: sortBy.value,
132
+ pageCount: pageCount.value,
133
+ toggleSort,
134
+ setItemsPerPage,
135
+ someSelected: someSelected.value,
136
+ allSelected: allSelected.value,
137
+ isSelected,
138
+ select,
139
+ selectAll,
140
+ toggleSelect,
141
+ isExpanded,
142
+ toggleExpand,
143
+ isGroupOpen,
144
+ toggleGroup,
145
+ items: items.value,
146
+ groupedItems: flatItems.value,
147
+ columns: columns.value,
148
+ headers: headers.value
149
+ }));
112
150
  useRender(() => {
113
151
  const [dataTableFooterProps] = VDataTableFooter.filterProps(props);
114
152
  const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props);
@@ -120,23 +158,21 @@ export const VDataTableServer = genericComponent()({
120
158
  }, props.class],
121
159
  "style": props.style
122
160
  }, tableProps), {
123
- top: slots.top,
124
- default: slots.default ?? (() => _createVNode(_Fragment, null, [slots.colgroup?.({
125
- columns
126
- }), _createVNode("thead", {
161
+ top: () => slots.top?.(slotProps.value),
162
+ default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), _createVNode("thead", {
127
163
  "class": "v-data-table__thead",
128
164
  "role": "rowgroup"
129
165
  }, [_createVNode(VDataTableHeaders, _mergeProps(dataTableHeadersProps, {
130
166
  "sticky": props.fixedHeader
131
- }), slots)]), slots.thead?.(), _createVNode("tbody", {
167
+ }), slots)]), slots.thead?.(slotProps.value), _createVNode("tbody", {
132
168
  "class": "v-data-table__tbody",
133
169
  "role": "rowgroup"
134
- }, [slots.body ? slots.body() : _createVNode(VDataTableRows, _mergeProps(dataTableRowsProps, {
170
+ }, [slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(dataTableRowsProps, {
135
171
  "items": flatItems.value
136
- }), slots)]), slots.tbody?.(), slots.tfoot?.()])),
137
- bottom: slots.bottom ?? (() => _createVNode(VDataTableFooter, dataTableFooterProps, {
172
+ }), slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
173
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(VDataTableFooter, dataTableFooterProps, {
138
174
  prepend: slots['footer.prepend']
139
- }))
175
+ })
140
176
  });
141
177
  });
142
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VDataTableServer.mjs","names":["makeVDataTableFooterProps","VDataTableFooter","VDataTableHeaders","VDataTableRows","VTable","createGroupBy","provideGroupBy","useGroupedItems","createHeaders","createPagination","makeDataTablePaginateProps","providePagination","createSort","provideSort","makeDataTableProps","provideDefaults","provideExpanded","provideSelection","useDataTableItems","useOptions","computed","provide","toRef","genericComponent","propsFactory","useRender","makeVDataTableServerProps","itemsLength","type","Number","String","required","VDataTableServer","name","props","emits","value","page","sortBy","options","click:row","e","setup","_ref","emit","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","showSelect","showExpand","items","toggleSort","opened","flatItems","search","hideNoData","noDataText","loading","loadingText","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","default","_Fragment","colgroup","fixedHeader","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { createSort, provideSort } from './composables/sort'\nimport { makeDataTableProps } from './VDataTable'\nimport { provideDefaults } from '@/composables/defaults'\nimport { provideExpanded } from './composables/expand'\nimport { provideSelection } from './composables/select'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlots } from './VDataTable'\n\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps(),\n}, 'v-data-table-server')\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: makeVDataTableServerProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n provideExpanded(props)\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened } = provideGroupBy({ groupBy, sortBy })\n\n providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n provideSelection(props, items)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search'),\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n useRender(() => {\n const [dataTableFooterProps] = VDataTableFooter.filterProps(props)\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead class=\"v-data-table__thead\" role=\"rowgroup\">\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.() }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body() : (\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ flatItems.value }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n { ...dataTableFooterProps }\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDataTableServer.mjs","names":["makeVDataTableFooterProps","VDataTableFooter","VDataTableHeaders","VDataTableRows","VTable","createGroupBy","provideGroupBy","useGroupedItems","createHeaders","createPagination","makeDataTablePaginateProps","providePagination","createSort","provideSort","makeDataTableProps","provideDefaults","provideExpanded","provideSelection","useDataTableItems","useOptions","computed","provide","toRef","genericComponent","propsFactory","useRender","makeVDataTableServerProps","itemsLength","type","Number","String","required","VDataTableServer","name","props","emits","value","page","sortBy","options","click:row","e","setup","_ref","emit","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","headers","showSelect","showExpand","items","toggleSort","opened","isGroupOpen","toggleGroup","pageCount","setItemsPerPage","flatItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","isExpanded","toggleExpand","search","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","default","_Fragment","colgroup","fixedHeader","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { createSort, provideSort } from './composables/sort'\nimport { makeDataTableProps } from './VDataTable'\nimport { provideDefaults } from '@/composables/defaults'\nimport { provideExpanded } from './composables/expand'\nimport { provideSelection } from './composables/select'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps, VDataTableSlots } from './VDataTable'\n\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps(),\n}, 'v-data-table-server')\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: makeVDataTableServerProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, items)\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search'),\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableSlotProps>(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: items.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableFooterProps] = VDataTableFooter.filterProps(props)\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : (\n <>\n { slots.colgroup?.(slotProps.value) }\n <thead class=\"v-data-table__thead\" role=\"rowgroup\">\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.(slotProps.value) }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body(slotProps.value) : (\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ flatItems.value }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n </>\n ),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : (\n <VDataTableFooter\n { ...dataTableFooterProps }\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n ),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirectiv
3
3
  import { VDataTableHeaders } from "./VDataTableHeaders.mjs";
4
4
  import { VDataTableRows } from "./VDataTableRows.mjs";
5
5
  import { VTable } from "../../components/VTable/index.mjs"; // Composables
6
- import { createGroupBy, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
6
+ import { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
7
7
  import { createHeaders } from "./composables/headers.mjs";
8
8
  import { createSort, provideSort, useSortedItems } from "./composables/sort.mjs";
9
9
  import { makeDataTableProps } from "./VDataTable.mjs";
@@ -18,6 +18,7 @@ import { computed, shallowRef, toRef } from 'vue';
18
18
  import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
19
19
  export const makeVDataTableVirtualProps = propsFactory({
20
20
  ...makeDataTableProps(),
21
+ ...makeDataTableGroupProps(),
21
22
  ...makeDataTableVirtualProps(),
22
23
  ...makeFilterProps()
23
24
  }, 'v-data-table-virtual');
@@ -46,7 +47,8 @@ export const VDataTableVirtual = genericComponent()({
46
47
  mustSort
47
48
  } = createSort(props);
48
49
  const {
49
- columns
50
+ columns,
51
+ headers
50
52
  } = createHeaders(props, {
51
53
  groupBy,
52
54
  showSelect: toRef(props, 'showSelect'),
@@ -55,14 +57,15 @@ export const VDataTableVirtual = genericComponent()({
55
57
  const {
56
58
  items
57
59
  } = useDataTableItems(props, columns);
58
- const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key));
59
60
  const search = toRef(props, 'search');
60
61
  const {
61
62
  filteredItems
62
63
  } = useFilter(props, items, search, {
63
- filterKeys
64
+ transform: item => item.columns
64
65
  });
65
- provideSort({
66
+ const {
67
+ toggleSort
68
+ } = provideSort({
66
69
  sortBy,
67
70
  multiSort,
68
71
  mustSort
@@ -70,20 +73,32 @@ export const VDataTableVirtual = genericComponent()({
70
73
  const {
71
74
  sortByWithGroups,
72
75
  opened,
73
- extractRows
76
+ extractRows,
77
+ isGroupOpen,
78
+ toggleGroup
74
79
  } = provideGroupBy({
75
80
  groupBy,
76
81
  sortBy
77
82
  });
78
83
  const {
79
84
  sortedItems
80
- } = useSortedItems(filteredItems, sortByWithGroups, columns);
85
+ } = useSortedItems(props, filteredItems, sortByWithGroups);
81
86
  const {
82
87
  flatItems
83
88
  } = useGroupedItems(sortedItems, groupBy, opened);
84
89
  const allRows = computed(() => extractRows(flatItems.value));
85
- provideSelection(props, allRows);
86
- provideExpanded(props);
90
+ const {
91
+ isSelected,
92
+ select,
93
+ selectAll,
94
+ toggleSelect,
95
+ someSelected,
96
+ allSelected
97
+ } = provideSelection(props, allRows);
98
+ const {
99
+ isExpanded,
100
+ toggleExpand
101
+ } = provideExpanded(props);
87
102
  const {
88
103
  containerRef,
89
104
  paddingTop,
@@ -106,20 +121,42 @@ export const VDataTableVirtual = genericComponent()({
106
121
  provideDefaults({
107
122
  VDataTableRows: {
108
123
  hideNoData: toRef(props, 'hideNoData'),
109
- noDataText: toRef(props, 'noDataText')
124
+ noDataText: toRef(props, 'noDataText'),
125
+ loading: toRef(props, 'loading'),
126
+ loadingText: toRef(props, 'loadingText')
110
127
  }
111
128
  });
129
+ const slotProps = computed(() => ({
130
+ sortBy: sortBy.value,
131
+ toggleSort,
132
+ someSelected: someSelected.value,
133
+ allSelected: allSelected.value,
134
+ isSelected,
135
+ select,
136
+ selectAll,
137
+ toggleSelect,
138
+ isExpanded,
139
+ toggleExpand,
140
+ isGroupOpen,
141
+ toggleGroup,
142
+ items: items.value,
143
+ groupedItems: flatItems.value,
144
+ columns: columns.value,
145
+ headers: headers.value
146
+ }));
112
147
  useRender(() => {
113
148
  const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props);
114
149
  const [dataTableRowsProps] = VDataTableRows.filterProps(props);
115
150
  const [tableProps] = VTable.filterProps(props);
116
151
  return _createVNode(VTable, _mergeProps({
117
- "class": ['v-data-table', props.class],
152
+ "class": ['v-data-table', {
153
+ 'v-data-table--loading': props.loading
154
+ }, props.class],
118
155
  "style": [{
119
156
  '--v-table-row-height': convertToUnit(itemHeight.value)
120
157
  }, props.style]
121
158
  }, tableProps), {
122
- top: slots.top,
159
+ top: () => slots.top?.(slotProps.value),
123
160
  wrapper: () => _createVNode("div", {
124
161
  "ref": containerRef,
125
162
  "onScroll": handleScroll,
@@ -154,7 +191,7 @@ export const VDataTableVirtual = genericComponent()({
154
191
  border: 0
155
192
  }
156
193
  }, null)])])])]),
157
- bottom: slots.bottom
194
+ bottom: () => slots.bottom?.(slotProps.value)
158
195
  });
159
196
  });
160
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VDataTableVirtual.mjs","names":["VDataTableHeaders","VDataTableRows","VTable","createGroupBy","provideGroupBy","useGroupedItems","createHeaders","createSort","provideSort","useSortedItems","makeDataTableProps","makeDataTableVirtualProps","useVirtual","makeFilterProps","useFilter","provideDefaults","provideExpanded","provideSelection","useDataTableItems","useOptions","computed","shallowRef","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","click:row","e","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","columns","showSelect","showExpand","items","filterKeys","map","c","key","search","filteredItems","sortByWithGroups","opened","extractRows","sortedItems","flatItems","allRows","containerRef","paddingTop","paddingBottom","startIndex","stopIndex","itemHeight","handleScroll","visibleItems","slice","page","itemsPerPage","hideNoData","noDataText","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","wrapper","height","fixedHeader","border","length","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { makeDataTableProps } from './VDataTable'\nimport { makeDataTableVirtualProps, useVirtual } from './composables/virtual'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\nimport { provideExpanded } from './composables/expand'\nimport { provideSelection } from './composables/select'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\n\n// Utlities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & {\n top: []\n headers: []\n bottom: []\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableVirtualProps(),\n ...makeFilterProps(),\n}, 'v-data-table-virtual')\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { filterKeys })\n\n provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allRows = computed(() => extractRows(flatItems.value))\n\n provideSelection(props, allRows)\n provideExpanded(props)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n startIndex,\n stopIndex,\n itemHeight,\n handleScroll,\n } = useVirtual(props, flatItems)\n\n const visibleItems = computed(() => {\n return flatItems.value.slice(startIndex.value, stopIndex.value)\n })\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => {\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n props.class,\n ]}\n style={[\n { '--v-table-row-height': convertToUnit(itemHeight.value) },\n props.style,\n ]}\n { ...tableProps }\n >\n {{\n top: slots.top,\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ visibleItems.value }\n v-slots={ slots }\n />\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: slots.bottom,\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDataTableVirtual.mjs","names":["VDataTableHeaders","VDataTableRows","VTable","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","createSort","provideSort","useSortedItems","makeDataTableProps","makeDataTableVirtualProps","useVirtual","makeFilterProps","useFilter","provideDefaults","provideExpanded","provideSelection","useDataTableItems","useOptions","computed","shallowRef","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","click:row","e","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","columns","headers","showSelect","showExpand","items","search","filteredItems","transform","item","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","allRows","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","isExpanded","toggleExpand","containerRef","paddingTop","paddingBottom","startIndex","stopIndex","itemHeight","handleScroll","visibleItems","slice","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","wrapper","height","fixedHeader","border","length","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { makeDataTableProps } from './VDataTable'\nimport { makeDataTableVirtualProps, useVirtual } from './composables/virtual'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\nimport { provideExpanded } from './composables/expand'\nimport { provideSelection } from './composables/select'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\n\n// Utlities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\n\ntype VDataTableVirtualSlotProps = Omit<VDataTableSlotProps, 'setItemsPerPage' | 'page' | 'pageCount' | 'itemsPerPage'>\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n top: [VDataTableVirtualSlotProps]\n headers: VDataTableHeadersSlots['headers']\n bottom: [VDataTableVirtualSlotProps]\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableVirtualProps(),\n ...makeFilterProps(),\n}, 'v-data-table-virtual')\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { transform: item => item.columns })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allRows = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, allRows)\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n startIndex,\n stopIndex,\n itemHeight,\n handleScroll,\n } = useVirtual(props, flatItems)\n\n const visibleItems = computed(() => {\n return flatItems.value.slice(startIndex.value, stopIndex.value)\n })\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: items.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={[\n { '--v-table-row-height': convertToUnit(itemHeight.value) },\n props.style,\n ]}\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ visibleItems.value }\n v-slots={ slots }\n />\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":";AAAA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,cAAc;AAAA,SACdC,MAAM,6CAEf;AAAA,SACSC,aAAa,EAAEC,uBAAuB,EAAEC,cAAc,EAAEC,eAAe;AAAA,SACvEC,aAAa;AAAA,SACbC,UAAU,EAAEC,WAAW,EAAEC,cAAc;AAAA,SACvCC,kBAAkB;AAAA,SAClBC,yBAAyB,EAAEC,UAAU;AAAA,SACrCC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,eAAe;AAAA,SACfC,eAAe;AAAA,SACfC,gBAAgB;AAAA,SAChBC,iBAAiB;AAAA,SACjBC,UAAU,qCAEnB;AACA,SAASC,QAAQ,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACxCC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAEjE;AAcA,OAAO,MAAMC,0BAA0B,GAAGF,YAAY,CAAC;EACrD,GAAGf,kBAAkB,EAAE;EACvB,GAAGP,uBAAuB,EAAE;EAC5B,GAAGQ,yBAAyB,EAAE;EAC9B,GAAGE,eAAe;AACpB,CAAC,EAAE,sBAAsB,CAAC;AAE1B,OAAO,MAAMe,iBAAiB,GAAGJ,gBAAgB,EAA0B,CAAC;EAC1EK,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAEH,0BAA0B,EAAE;EAEnCI,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAY,IAAK,IAAI;IAC3C,eAAe,EAAGA,KAAU,IAAK,IAAI;IACrC,gBAAgB,EAAGA,KAAU,IAAK,IAAI;IACtC,gBAAgB,EAAGA,KAAU,IAAK,IAAI;IACtC,iBAAiB,EAAGA,KAAU,IAAK,IAAI;IACvC,WAAW,EAAEC,CAACC,CAAQ,EAAEF,KAA8B,KAAK;EAC7D,CAAC;EAEDG,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG;IAAQ,CAAC,GAAGrC,aAAa,CAAC4B,KAAK,CAAC;IACxC,MAAM;MAAEU,MAAM;MAAEC,SAAS;MAAEC;IAAS,CAAC,GAAGnC,UAAU,CAACuB,KAAK,CAAC;IAEzD,MAAM;MAAEa,OAAO;MAAEC;IAAQ,CAAC,GAAGtC,aAAa,CAACwB,KAAK,EAAE;MAChDS,OAAO;MACPM,UAAU,EAAEvB,KAAK,CAACQ,KAAK,EAAE,YAAY,CAAC;MACtCgB,UAAU,EAAExB,KAAK,CAACQ,KAAK,EAAE,YAAY;IACvC,CAAC,CAAC;IACF,MAAM;MAAEiB;IAAM,CAAC,GAAG7B,iBAAiB,CAACY,KAAK,EAAEa,OAAO,CAAC;IAEnD,MAAMK,MAAM,GAAG1B,KAAK,CAACQ,KAAK,EAAE,QAAQ,CAAC;IACrC,MAAM;MAAEmB;IAAc,CAAC,GAAGnC,SAAS,CAAgBgB,KAAK,EAAEiB,KAAK,EAAEC,MAAM,EAAE;MAAEE,SAAS,EAAEC,IAAI,IAAIA,IAAI,CAACR;IAAQ,CAAC,CAAC;IAE7G,MAAM;MAAES;IAAW,CAAC,GAAG5C,WAAW,CAAC;MAAEgC,MAAM;MAAEC,SAAS;MAAEC;IAAS,CAAC,CAAC;IACnE,MAAM;MAAEW,gBAAgB;MAAEC,MAAM;MAAEC,WAAW;MAAEC,WAAW;MAAEC;IAAY,CAAC,GAAGrD,cAAc,CAAC;MAAEmC,OAAO;MAAEC;IAAO,CAAC,CAAC;IAE/G,MAAM;MAAEkB;IAAY,CAAC,GAAGjD,cAAc,CAACqB,KAAK,EAAEmB,aAAa,EAAEI,gBAAgB,CAAC;IAC9E,MAAM;MAAEM;IAAU,CAAC,GAAGtD,eAAe,CAACqD,WAAW,EAAEnB,OAAO,EAAEe,MAAM,CAAC;IAEnE,MAAMM,OAAO,GAAGxC,QAAQ,CAAC,MAAMmC,WAAW,CAACI,SAAS,CAAC3B,KAAK,CAAC,CAAC;IAE5D,MAAM;MAAE6B,UAAU;MAAEC,MAAM;MAAEC,SAAS;MAAEC,YAAY;MAAEC,YAAY;MAAEC;IAAY,CAAC,GAAGjD,gBAAgB,CAACa,KAAK,EAAE8B,OAAO,CAAC;IACnH,MAAM;MAAEO,UAAU;MAAEC;IAAa,CAAC,GAAGpD,eAAe,CAACc,KAAK,CAAC;IAE3D,MAAM;MACJuC,YAAY;MACZC,UAAU;MACVC,aAAa;MACbC,UAAU;MACVC,SAAS;MACTC,UAAU;MACVC;IACF,CAAC,GAAG/D,UAAU,CAACkB,KAAK,EAAE6B,SAAS,CAAC;IAEhC,MAAMiB,YAAY,GAAGxD,QAAQ,CAAC,MAAM;MAClC,OAAOuC,SAAS,CAAC3B,KAAK,CAAC6C,KAAK,CAACL,UAAU,CAACxC,KAAK,EAAEyC,SAAS,CAACzC,KAAK,CAAC;IACjE,CAAC,CAAC;IAEFb,UAAU,CAAC;MACTqB,MAAM;MACNsC,IAAI,EAAEzD,UAAU,CAAC,CAAC,CAAC;MACnB0D,YAAY,EAAE1D,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5BkB,OAAO;MACPS;IACF,CAAC,CAAC;IAEFjC,eAAe,CAAC;MACdf,cAAc,EAAE;QACdgF,UAAU,EAAE1D,KAAK,CAACQ,KAAK,EAAE,YAAY,CAAC;QACtCmD,UAAU,EAAE3D,KAAK,CAACQ,KAAK,EAAE,YAAY,CAAC;QACtCoD,OAAO,EAAE5D,KAAK,CAACQ,KAAK,EAAE,SAAS,CAAC;QAChCqD,WAAW,EAAE7D,KAAK,CAACQ,KAAK,EAAE,aAAa;MACzC;IACF,CAAC,CAAC;IAEF,MAAMsD,SAAS,GAAGhE,QAAQ,CAA6B,OAAO;MAC5DoB,MAAM,EAAEA,MAAM,CAACR,KAAK;MACpBoB,UAAU;MACVa,YAAY,EAAEA,YAAY,CAACjC,KAAK;MAChCkC,WAAW,EAAEA,WAAW,CAAClC,KAAK;MAC9B6B,UAAU;MACVC,MAAM;MACNC,SAAS;MACTC,YAAY;MACZG,UAAU;MACVC,YAAY;MACZZ,WAAW;MACXC,WAAW;MACXV,KAAK,EAAEA,KAAK,CAACf,KAAK;MAClBqD,YAAY,EAAE1B,SAAS,CAAC3B,KAAK;MAC7BW,OAAO,EAAEA,OAAO,CAACX,KAAK;MACtBY,OAAO,EAAEA,OAAO,CAACZ;IACnB,CAAC,CAAC,CAAC;IAEHN,SAAS,CAAC,MAAM;MACd,MAAM,CAAC4D,qBAAqB,CAAC,GAAGvF,iBAAiB,CAACwF,WAAW,CAACzD,KAAK,CAAC;MACpE,MAAM,CAAC0D,kBAAkB,CAAC,GAAGxF,cAAc,CAACuF,WAAW,CAACzD,KAAK,CAAC;MAC9D,MAAM,CAAC2D,UAAU,CAAC,GAAGxF,MAAM,CAACsF,WAAW,CAACzD,KAAK,CAAC;MAE9C,OAAA4D,YAAA,CAAAzF,MAAA,EAAA0F,WAAA;QAAA,SAEW,CACL,cAAc,EACd;UACE,uBAAuB,EAAE7D,KAAK,CAACoD;QACjC,CAAC,EACDpD,KAAK,CAAC8D,KAAK,CACZ;QAAA,SACM,CACL;UAAE,sBAAsB,EAAErE,aAAa,CAACmD,UAAU,CAAC1C,KAAK;QAAE,CAAC,EAC3DF,KAAK,CAAC+D,KAAK;MACZ,GACIJ,UAAU;QAGbK,GAAG,EAAEA,CAAA,KAAMxD,KAAK,CAACwD,GAAG,GAAGV,SAAS,CAACpD,KAAK,CAAC;QACvC+D,OAAO,EAAEA,CAAA,KAAAL,YAAA;UAAA,OAECrB,YAAY;UAAA,YACPM,YAAY;UAAA,SACjB,kBAAkB;UAAA,SACjB;YACLqB,MAAM,EAAEzE,aAAa,CAACO,KAAK,CAACkE,MAAM;UACpC;QAAC,IAAAN,YAAA,iBAAAA,YAAA,iBAAAA,YAAA,CAAA3F,iBAAA,EAAA4F,WAAA,CAKUL,qBAAqB;UAAA,UACjBxD,KAAK,CAACmE;QAAW,IAChB3D,KAAK,KAAAoD,YAAA,iBAAAA,YAAA;UAAA,SAIN;YAAEM,MAAM,EAAEzE,aAAa,CAAC+C,UAAU,CAACtC,KAAK,CAAC;YAAEkE,MAAM,EAAE;UAAE;QAAC,IAAAR,YAAA;UAAA,WACjD/C,OAAO,CAACX,KAAK,CAACmE,MAAM;UAAA,SAAU;YAAEH,MAAM,EAAEzE,aAAa,CAAC+C,UAAU,CAACtC,KAAK,CAAC;YAAEkE,MAAM,EAAE;UAAE;QAAC,YAAAR,YAAA,CAAA1F,cAAA,EAAA2F,WAAA,CAI7FH,kBAAkB;UAAA,SACfZ,YAAY,CAAC5C;QAAK,IAChBM,KAAK,GAAAoD,YAAA;UAAA,SAGN;YAAEM,MAAM,EAAEzE,aAAa,CAACgD,aAAa,CAACvC,KAAK,CAAC;YAAEkE,MAAM,EAAE;UAAE;QAAC,IAAAR,YAAA;UAAA,WACpD/C,OAAO,CAACX,KAAK,CAACmE,MAAM;UAAA,SAAU;YAAEH,MAAM,EAAEzE,aAAa,CAACgD,aAAa,CAACvC,KAAK,CAAC;YAAEkE,MAAM,EAAE;UAAE;QAAC,gBAK9G;QACDE,MAAM,EAAEA,CAAA,KAAM9D,KAAK,CAAC8D,MAAM,GAAGhB,SAAS,CAACpD,KAAK;MAAC;IAIrD,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"expand.mjs","names":["inject","provide","toRef","propsFactory","useProxiedModel","makeDataTableExpandProps","expandOnClick","Boolean","showExpand","expanded","type","Array","default","VDataTableExpandedKey","Symbol","for","provideExpanded","props","v","Set","values","expand","item","value","newExpanded","delete","add","isExpanded","has","toggleExpand","data","useExpanded","Error"],"sources":["../../../../src/labs/VDataTable/composables/expand.ts"],"sourcesContent":["// Utilities\nimport { inject, provide, toRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem } from '../types'\n\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array as PropType<string[]>,\n default: () => ([]),\n },\n}, 'v-data-table-expand')\n\nexport const VDataTableExpandedKey: InjectionKey<{\n expand: (item: DataTableItem, value: boolean) => void\n expanded: Ref<Set<string>>\n expandOnClick: Ref<boolean | undefined>\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n}> = Symbol.for('vuetify:datatable:expanded')\n\ntype ExpandProps = {\n expandOnClick: boolean\n expanded: string[]\n 'onUpdate:expanded': ((value: any[]) => void) | undefined\n}\n\nexport function provideExpanded (props: ExpandProps) {\n const expandOnClick = toRef(props, 'expandOnClick')\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v)\n }, v => {\n return [...v.values()]\n })\n\n function expand (item: DataTableItem, value: boolean) {\n const newExpanded = new Set(expanded.value)\n\n if (!value) {\n newExpanded.delete(item.value)\n } else {\n newExpanded.add(item.value)\n }\n\n expanded.value = newExpanded\n }\n\n function isExpanded (item: DataTableItem) {\n return expanded.value.has(item.value)\n }\n\n function toggleExpand (item: DataTableItem) {\n expand(item, !isExpanded(item))\n }\n\n const data = { expand, expanded, expandOnClick, isExpanded, toggleExpand }\n\n provide(VDataTableExpandedKey, data)\n\n return data\n}\n\nexport function useExpanded () {\n const data = inject(VDataTableExpandedKey)\n\n if (!data) throw new Error('foo')\n\n return data\n}\n"],"mappings":"AAAA;AACA,SAASA,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACnCC,YAAY,mCAErB;AAAA,SACSC,eAAe,iDAExB;AAIA,OAAO,MAAMC,wBAAwB,GAAGF,YAAY,CAAC;EACnDG,aAAa,EAAEC,OAAO;EACtBC,UAAU,EAAED,OAAO;EACnBE,QAAQ,EAAE;IACRC,IAAI,EAAEC,KAA2B;IACjCC,OAAO,EAAEA,CAAA,KAAO;EAClB;AACF,CAAC,EAAE,qBAAqB,CAAC;AAEzB,OAAO,MAAMC,qBAMX,GAAGC,MAAM,CAACC,GAAG,CAAC,4BAA4B,CAAC;AAQ7C,OAAO,SAASC,eAAeA,CAAEC,KAAkB,EAAE;EACnD,MAAMX,aAAa,GAAGJ,KAAK,CAACe,KAAK,EAAE,eAAe,CAAC;EACnD,MAAMR,QAAQ,GAAGL,eAAe,CAACa,KAAK,EAAE,UAAU,EAAEA,KAAK,CAACR,QAAQ,EAAES,CAAC,IAAI;IACvE,OAAO,IAAIC,GAAG,CAACD,CAAC,CAAC;EACnB,CAAC,EAAEA,CAAC,IAAI;IACN,OAAO,CAAC,GAAGA,CAAC,CAACE,MAAM,EAAE,CAAC;EACxB,CAAC,CAAC;EAEF,SAASC,MAAMA,CAAEC,IAAmB,EAAEC,KAAc,EAAE;IACpD,MAAMC,WAAW,GAAG,IAAIL,GAAG,CAACV,QAAQ,CAACc,KAAK,CAAC;IAE3C,IAAI,CAACA,KAAK,EAAE;MACVC,WAAW,CAACC,MAAM,CAACH,IAAI,CAACC,KAAK,CAAC;IAChC,CAAC,MAAM;MACLC,WAAW,CAACE,GAAG,CAACJ,IAAI,CAACC,KAAK,CAAC;IAC7B;IAEAd,QAAQ,CAACc,KAAK,GAAGC,WAAW;EAC9B;EAEA,SAASG,UAAUA,CAAEL,IAAmB,EAAE;IACxC,OAAOb,QAAQ,CAACc,KAAK,CAACK,GAAG,CAACN,IAAI,CAACC,KAAK,CAAC;EACvC;EAEA,SAASM,YAAYA,CAAEP,IAAmB,EAAE;IAC1CD,MAAM,CAACC,IAAI,EAAE,CAACK,UAAU,CAACL,IAAI,CAAC,CAAC;EACjC;EAEA,MAAMQ,IAAI,GAAG;IAAET,MAAM;IAAEZ,QAAQ;IAAEH,aAAa;IAAEqB,UAAU;IAAEE;EAAa,CAAC;EAE1E5B,OAAO,CAACY,qBAAqB,EAAEiB,IAAI,CAAC;EAEpC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,WAAWA,CAAA,EAAI;EAC7B,MAAMD,IAAI,GAAG9B,MAAM,CAACa,qBAAqB,CAAC;EAE1C,IAAI,CAACiB,IAAI,EAAE,MAAM,IAAIE,KAAK,CAAC,KAAK,CAAC;EAEjC,OAAOF,IAAI;AACb"}
1
+ {"version":3,"file":"expand.mjs","names":["inject","provide","toRef","propsFactory","useProxiedModel","makeDataTableExpandProps","expandOnClick","Boolean","showExpand","expanded","type","Array","default","VDataTableExpandedKey","Symbol","for","provideExpanded","props","v","Set","values","expand","item","value","newExpanded","delete","add","isExpanded","has","toggleExpand","data","useExpanded","Error"],"sources":["../../../../src/labs/VDataTable/composables/expand.ts"],"sourcesContent":["// Utilities\nimport { inject, provide, toRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem } from '../types'\n\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array as PropType<readonly string[]>,\n default: () => ([]),\n },\n}, 'v-data-table-expand')\n\nexport const VDataTableExpandedKey: InjectionKey<{\n expand: (item: DataTableItem, value: boolean) => void\n expanded: Ref<Set<string>>\n expandOnClick: Ref<boolean | undefined>\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n}> = Symbol.for('vuetify:datatable:expanded')\n\ntype ExpandProps = {\n expandOnClick: boolean\n expanded: readonly string[]\n 'onUpdate:expanded': ((value: any[]) => void) | undefined\n}\n\nexport function provideExpanded (props: ExpandProps) {\n const expandOnClick = toRef(props, 'expandOnClick')\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v)\n }, v => {\n return [...v.values()]\n })\n\n function expand (item: DataTableItem, value: boolean) {\n const newExpanded = new Set(expanded.value)\n\n if (!value) {\n newExpanded.delete(item.value)\n } else {\n newExpanded.add(item.value)\n }\n\n expanded.value = newExpanded\n }\n\n function isExpanded (item: DataTableItem) {\n return expanded.value.has(item.value)\n }\n\n function toggleExpand (item: DataTableItem) {\n expand(item, !isExpanded(item))\n }\n\n const data = { expand, expanded, expandOnClick, isExpanded, toggleExpand }\n\n provide(VDataTableExpandedKey, data)\n\n return data\n}\n\nexport function useExpanded () {\n const data = inject(VDataTableExpandedKey)\n\n if (!data) throw new Error('foo')\n\n return data\n}\n"],"mappings":"AAAA;AACA,SAASA,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACnCC,YAAY,mCAErB;AAAA,SACSC,eAAe,iDAExB;AAIA,OAAO,MAAMC,wBAAwB,GAAGF,YAAY,CAAC;EACnDG,aAAa,EAAEC,OAAO;EACtBC,UAAU,EAAED,OAAO;EACnBE,QAAQ,EAAE;IACRC,IAAI,EAAEC,KAAoC;IAC1CC,OAAO,EAAEA,CAAA,KAAO;EAClB;AACF,CAAC,EAAE,qBAAqB,CAAC;AAEzB,OAAO,MAAMC,qBAMX,GAAGC,MAAM,CAACC,GAAG,CAAC,4BAA4B,CAAC;AAQ7C,OAAO,SAASC,eAAeA,CAAEC,KAAkB,EAAE;EACnD,MAAMX,aAAa,GAAGJ,KAAK,CAACe,KAAK,EAAE,eAAe,CAAC;EACnD,MAAMR,QAAQ,GAAGL,eAAe,CAACa,KAAK,EAAE,UAAU,EAAEA,KAAK,CAACR,QAAQ,EAAES,CAAC,IAAI;IACvE,OAAO,IAAIC,GAAG,CAACD,CAAC,CAAC;EACnB,CAAC,EAAEA,CAAC,IAAI;IACN,OAAO,CAAC,GAAGA,CAAC,CAACE,MAAM,EAAE,CAAC;EACxB,CAAC,CAAC;EAEF,SAASC,MAAMA,CAAEC,IAAmB,EAAEC,KAAc,EAAE;IACpD,MAAMC,WAAW,GAAG,IAAIL,GAAG,CAACV,QAAQ,CAACc,KAAK,CAAC;IAE3C,IAAI,CAACA,KAAK,EAAE;MACVC,WAAW,CAACC,MAAM,CAACH,IAAI,CAACC,KAAK,CAAC;IAChC,CAAC,MAAM;MACLC,WAAW,CAACE,GAAG,CAACJ,IAAI,CAACC,KAAK,CAAC;IAC7B;IAEAd,QAAQ,CAACc,KAAK,GAAGC,WAAW;EAC9B;EAEA,SAASG,UAAUA,CAAEL,IAAmB,EAAE;IACxC,OAAOb,QAAQ,CAACc,KAAK,CAACK,GAAG,CAACN,IAAI,CAACC,KAAK,CAAC;EACvC;EAEA,SAASM,YAAYA,CAAEP,IAAmB,EAAE;IAC1CD,MAAM,CAACC,IAAI,EAAE,CAACK,UAAU,CAACL,IAAI,CAAC,CAAC;EACjC;EAEA,MAAMQ,IAAI,GAAG;IAAET,MAAM;IAAEZ,QAAQ;IAAEH,aAAa;IAAEqB,UAAU;IAAEE;EAAa,CAAC;EAE1E5B,OAAO,CAACY,qBAAqB,EAAEiB,IAAI,CAAC;EAEpC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,WAAWA,CAAA,EAAI;EAC7B,MAAMD,IAAI,GAAG9B,MAAM,CAACa,qBAAqB,CAAC;EAE1C,IAAI,CAACiB,IAAI,EAAE,MAAM,IAAIE,KAAK,CAAC,KAAK,CAAC;EAEjC,OAAOF,IAAI;AACb"}
@@ -1,7 +1,7 @@
1
- // Utilities
1
+ // Composables
2
+ import { useProxiedModel } from "../../../composables/proxiedModel.mjs"; // Utilities
2
3
  import { computed, inject, provide, ref } from 'vue';
3
4
  import { getObjectValueByPath, propsFactory } from "../../../util/index.mjs"; // Types
4
- import { useProxiedModel } from "../../../composables/proxiedModel.mjs";
5
5
  export const makeDataTableGroupProps = propsFactory({
6
6
  groupBy: {
7
7
  type: Array,
@@ -39,14 +39,16 @@ export function provideGroupBy(options) {
39
39
  function dive(group) {
40
40
  const arr = [];
41
41
  for (const item of group.items) {
42
- if (item.type === 'item') arr.push(item);else {
42
+ if ('type' in item && item.type === 'group') {
43
43
  arr.push(...dive(item));
44
+ } else {
45
+ arr.push(item);
44
46
  }
45
47
  }
46
48
  return arr;
47
49
  }
48
50
  return dive({
49
- type: 'group-header',
51
+ type: 'group',
50
52
  items,
51
53
  id: 'dummy',
52
54
  key: 'dummy',
@@ -105,7 +107,7 @@ function groupItems(items, groupBy) {
105
107
  key,
106
108
  value,
107
109
  items: rest.length ? groupItems(items, rest, depth + 1, id) : items,
108
- type: 'group-header'
110
+ type: 'group'
109
111
  });
110
112
  });
111
113
  return groups;
@@ -114,7 +116,7 @@ function flattenItems(items, opened) {
114
116
  const flatItems = [];
115
117
  for (const item of items) {
116
118
  // TODO: make this better
117
- if (item.type === 'group-header') {
119
+ if ('type' in item && item.type === 'group') {
118
120
  if (item.value != null) {
119
121
  flatItems.push(item);
120
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"group.mjs","names":["computed","inject","provide","ref","getObjectValueByPath","propsFactory","useProxiedModel","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","provideGroupBy","options","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","isGroupOpen","group","has","id","toggleGroup","newOpened","add","delete","extractRows","items","dive","arr","item","push","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","arguments","undefined","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/labs/VDataTable/composables/group.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem, GroupHeaderItem } from '../types'\nimport type { SortItem } from './sort'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<SortItem[]>,\n default: () => ([]),\n },\n}, 'data-table-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: GroupHeaderItem) => void\n isGroupOpen: (group: GroupHeaderItem) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | GroupHeaderItem)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: { groupBy: Ref<readonly SortItem[]>, sortBy: Ref<readonly SortItem[]> }) {\n const { groupBy, sortBy } = options\n const opened = ref(new Set<string>())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map<SortItem>(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(sortBy.value)\n })\n\n function isGroupOpen (group: GroupHeaderItem) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: GroupHeaderItem) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows (items: (DataTableItem | GroupHeaderItem)[]) {\n function dive (group: GroupHeaderItem): DataTableItem[] {\n const arr = []\n\n for (const item of group.items) {\n if (item.type === 'item') arr.push(item)\n else {\n arr.push(...dive(item))\n }\n }\n\n return arr\n }\n return dive({ type: 'group-header', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty (items: DataTableItem[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, DataTableItem[]>()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems (items: DataTableItem[], groupBy: string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: GroupHeaderItem[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group-header',\n })\n })\n\n return groups\n}\n\nfunction flattenItems (items: (DataTableItem | GroupHeaderItem)[], opened: Set<string>) {\n const flatItems: (DataTableItem | GroupHeaderItem)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if (item.type === 'group-header') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems (items: Ref<DataTableItem[]>, groupBy: Ref<readonly SortItem[]>, opened: Ref<Set<string>>) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAC3CC,oBAAoB,EAAEC,YAAY,mCAE3C;AAAA,SAISC,eAAe;AAExB,OAAO,MAAMC,uBAAuB,GAAGF,YAAY,CAAC;EAClDG,OAAO,EAAE;IACPC,IAAI,EAAEC,KAA6B;IACnCC,OAAO,EAAEA,CAAA,KAAO;EAClB;AACF,CAAC,EAAE,kBAAkB,CAAC;AAEtB,MAAMC,qBAOJ,GAAGC,MAAM,CAACC,GAAG,CAAC,0BAA0B,CAAC;AAO3C,OAAO,SAASC,aAAaA,CAAEC,KAAiB,EAAE;EAChD,MAAMR,OAAO,GAAGF,eAAe,CAACU,KAAK,EAAE,SAAS,CAAC;EAEjD,OAAO;IAAER;EAAQ,CAAC;AACpB;AAEA,OAAO,SAASS,cAAcA,CAAEC,OAAgF,EAAE;EAChH,MAAM;IAAEV,OAAO;IAAEW;EAAO,CAAC,GAAGD,OAAO;EACnC,MAAME,MAAM,GAAGjB,GAAG,CAAC,IAAIkB,GAAG,EAAU,CAAC;EAErC,MAAMC,gBAAgB,GAAGtB,QAAQ,CAAC,MAAM;IACtC,OAAOQ,OAAO,CAACe,KAAK,CAACC,GAAG,CAAWC,GAAG,KAAK;MACzC,GAAGA,GAAG;MACNC,KAAK,EAAED,GAAG,CAACC,KAAK,IAAI;IACtB,CAAC,CAAC,CAAC,CAACC,MAAM,CAACR,MAAM,CAACI,KAAK,CAAC;EAC1B,CAAC,CAAC;EAEF,SAASK,WAAWA,CAAEC,KAAsB,EAAE;IAC5C,OAAOT,MAAM,CAACG,KAAK,CAACO,GAAG,CAACD,KAAK,CAACE,EAAE,CAAC;EACnC;EAEA,SAASC,WAAWA,CAAEH,KAAsB,EAAE;IAC5C,MAAMI,SAAS,GAAG,IAAIZ,GAAG,CAACD,MAAM,CAACG,KAAK,CAAC;IACvC,IAAI,CAACK,WAAW,CAACC,KAAK,CAAC,EAAEI,SAAS,CAACC,GAAG,CAACL,KAAK,CAACE,EAAE,CAAC,MAC3CE,SAAS,CAACE,MAAM,CAACN,KAAK,CAACE,EAAE,CAAC;IAE/BX,MAAM,CAACG,KAAK,GAAGU,SAAS;EAC1B;EAEA,SAASG,WAAWA,CAAEC,KAA0C,EAAE;IAChE,SAASC,IAAIA,CAAET,KAAsB,EAAmB;MACtD,MAAMU,GAAG,GAAG,EAAE;MAEd,KAAK,MAAMC,IAAI,IAAIX,KAAK,CAACQ,KAAK,EAAE;QAC9B,IAAIG,IAAI,CAAC/B,IAAI,KAAK,MAAM,EAAE8B,GAAG,CAACE,IAAI,CAACD,IAAI,CAAC,MACnC;UACHD,GAAG,CAACE,IAAI,CAAC,GAAGH,IAAI,CAACE,IAAI,CAAC,CAAC;QACzB;MACF;MAEA,OAAOD,GAAG;IACZ;IACA,OAAOD,IAAI,CAAC;MAAE7B,IAAI,EAAE,cAAc;MAAE4B,KAAK;MAAEN,EAAE,EAAE,OAAO;MAAEW,GAAG,EAAE,OAAO;MAAEnB,KAAK,EAAE,OAAO;MAAEoB,KAAK,EAAE;IAAE,CAAC,CAAC;EACnG;;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAMC,IAAI,GAAG;IAAEtB,gBAAgB;IAAEU,WAAW;IAAEZ,MAAM;IAAEZ,OAAO;IAAE4B,WAAW;IAAER;EAAY,CAAC;EAEzF1B,OAAO,CAACU,qBAAqB,EAAEgC,IAAI,CAAC;EAEpC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAI;EAC5B,MAAMD,IAAI,GAAG3C,MAAM,CAACW,qBAAqB,CAAC;EAE1C,IAAI,CAACgC,IAAI,EAAE,MAAM,IAAIE,KAAK,CAAC,gBAAgB,CAAC;EAE5C,OAAOF,IAAI;AACb;AAEA,SAASG,oBAAoBA,CAAEV,KAAsB,EAAE7B,OAAe,EAAE;EACtE,IAAI,CAAC6B,KAAK,CAACW,MAAM,EAAE,OAAO,EAAE;EAE5B,MAAMC,MAAM,GAAG,IAAIC,GAAG,EAAwB;EAC9C,KAAK,MAAMV,IAAI,IAAIH,KAAK,EAAE;IACxB,MAAMd,KAAK,GAAGnB,oBAAoB,CAACoC,IAAI,CAACW,GAAG,EAAE3C,OAAO,CAAC;IAErD,IAAI,CAACyC,MAAM,CAACnB,GAAG,CAACP,KAAK,CAAC,EAAE;MACtB0B,MAAM,CAACG,GAAG,CAAC7B,KAAK,EAAE,EAAE,CAAC;IACvB;IACA0B,MAAM,CAACI,GAAG,CAAC9B,KAAK,CAAC,CAAEkB,IAAI,CAACD,IAAI,CAAC;EAC/B;EAEA,OAAOS,MAAM;AACf;AAEA,SAASK,UAAUA,CAAEjB,KAAsB,EAAE7B,OAAiB,EAA8B;EAAA,IAA5BmC,KAAK,GAAAY,SAAA,CAAAP,MAAA,QAAAO,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC;EAAA,IAAEE,MAAM,GAAAF,SAAA,CAAAP,MAAA,QAAAO,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,MAAM;EACxF,IAAI,CAAC/C,OAAO,CAACwC,MAAM,EAAE,OAAO,EAAE;EAE9B,MAAMU,YAAY,GAAGX,oBAAoB,CAACV,KAAK,EAAE7B,OAAO,CAAC,CAAC,CAAC,CAAC;EAC5D,MAAMyC,MAAyB,GAAG,EAAE;EAEpC,MAAMU,IAAI,GAAGnD,OAAO,CAACoD,KAAK,CAAC,CAAC,CAAC;EAC7BF,YAAY,CAACG,OAAO,CAAC,CAACxB,KAAK,EAAEd,KAAK,KAAK;IACrC,MAAMmB,GAAG,GAAGlC,OAAO,CAAC,CAAC,CAAC;IACtB,MAAMuB,EAAE,GAAI,GAAE0B,MAAO,IAAGf,GAAI,IAAGnB,KAAM,EAAC;IACtC0B,MAAM,CAACR,IAAI,CAAC;MACVE,KAAK;MACLZ,EAAE;MACFW,GAAG;MACHnB,KAAK;MACLc,KAAK,EAAEsB,IAAI,CAACX,MAAM,GAAGM,UAAU,CAACjB,KAAK,EAAEsB,IAAI,EAAEhB,KAAK,GAAG,CAAC,EAAEZ,EAAE,CAAC,GAAGM,KAAK;MACnE5B,IAAI,EAAE;IACR,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAOwC,MAAM;AACf;AAEA,SAASa,YAAYA,CAAEzB,KAA0C,EAAEjB,MAAmB,EAAE;EACtF,MAAM2C,SAA8C,GAAG,EAAE;EAEzD,KAAK,MAAMvB,IAAI,IAAIH,KAAK,EAAE;IACxB;IACA,IAAIG,IAAI,CAAC/B,IAAI,KAAK,cAAc,EAAE;MAChC,IAAI+B,IAAI,CAACjB,KAAK,IAAI,IAAI,EAAE;QACtBwC,SAAS,CAACtB,IAAI,CAACD,IAAI,CAAC;MACtB;MAEA,IAAIpB,MAAM,CAACU,GAAG,CAACU,IAAI,CAACT,EAAE,CAAC,IAAIS,IAAI,CAACjB,KAAK,IAAI,IAAI,EAAE;QAC7CwC,SAAS,CAACtB,IAAI,CAAC,GAAGqB,YAAY,CAACtB,IAAI,CAACH,KAAK,EAAEjB,MAAM,CAAC,CAAC;MACrD;IACF,CAAC,MAAM;MACL2C,SAAS,CAACtB,IAAI,CAACD,IAAI,CAAC;IACtB;EACF;EAEA,OAAOuB,SAAS;AAClB;AAEA,OAAO,SAASC,eAAeA,CAAE3B,KAA2B,EAAE7B,OAAiC,EAAEY,MAAwB,EAAE;EACzH,MAAM2C,SAAS,GAAG/D,QAAQ,CAAC,MAAM;IAC/B,IAAI,CAACQ,OAAO,CAACe,KAAK,CAACyB,MAAM,EAAE,OAAOX,KAAK,CAACd,KAAK;IAE7C,MAAMmC,YAAY,GAAGJ,UAAU,CAACjB,KAAK,CAACd,KAAK,EAAEf,OAAO,CAACe,KAAK,CAACC,GAAG,CAACgB,IAAI,IAAIA,IAAI,CAACE,GAAG,CAAC,CAAC;IAEjF,OAAOoB,YAAY,CAACJ,YAAY,EAAEtC,MAAM,CAACG,KAAK,CAAC;EACjD,CAAC,CAAC;EAEF,OAAO;IAAEwC;EAAU,CAAC;AACtB"}
1
+ {"version":3,"file":"group.mjs","names":["useProxiedModel","computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","provideGroupBy","options","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","isGroupOpen","group","has","id","toggleGroup","newOpened","add","delete","extractRows","items","dive","arr","item","push","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","arguments","undefined","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/labs/VDataTable/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem } from '../types'\nimport type { SortItem } from './sort'\n\nexport interface GroupableItem<T = any> {\n type: 'item'\n raw: T\n}\n\nexport interface Group<T = any> {\n type: 'group'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group<T>)[]\n}\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n}, 'data-table-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: Group) => void\n isGroupOpen: (group: Group) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | Group<DataTableItem>)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: readonly SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: { groupBy: Ref<readonly SortItem[]>, sortBy: Ref<readonly SortItem[]> }) {\n const { groupBy, sortBy } = options\n const opened = ref(new Set<string>())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map<SortItem>(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(sortBy.value)\n })\n\n function isGroupOpen (group: Group) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: Group) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows <T extends GroupableItem> (items: readonly (T | Group<T>)[]) {\n function dive (group: Group<T>): T[] {\n const arr = []\n\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item))\n } else {\n arr.push(item as T)\n }\n }\n\n return arr\n }\n return dive({ type: 'group', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty <T extends GroupableItem> (items: readonly T[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, T[]>()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems <T extends GroupableItem> (items: readonly T[], groupBy: readonly string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: Group<T>[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group',\n })\n })\n\n return groups\n}\n\nfunction flattenItems <T extends GroupableItem> (items: readonly (T | Group<T>)[], opened: Set<string>): readonly (T | Group<T>)[] {\n const flatItems: (T | Group<T>)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems <T extends GroupableItem> (\n items: Ref<T[]>,\n groupBy: Ref<readonly SortItem[]>,\n opened: Ref<Set<string>>\n) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n"],"mappings":"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"}
@@ -95,17 +95,16 @@ export function createHeaders(props, options) {
95
95
  }
96
96
  const fixedRows = createRange(rowCount).map(() => []);
97
97
  const fixedOffsets = createRange(rowCount).fill(0);
98
- let count = 0;
99
98
  flat.forEach(_ref4 => {
100
99
  let {
101
100
  column,
102
101
  row
103
102
  } = _ref4;
104
- const id = column.key ?? `data-table-column-${count++}`;
103
+ const key = column.key;
105
104
  for (let i = row; i <= row + (column.rowspan ?? 1) - 1; i++) {
106
105
  fixedRows[i].push({
107
106
  ...column,
108
- key: id,
107
+ key,
109
108
  fixedOffset: fixedOffsets[i],
110
109
  sortable: column.sortable ?? !!column.key
111
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"headers.mjs","names":["inject","provide","ref","watch","createRange","propsFactory","makeDataTableHeaderProps","headers","type","Array","default","VDataTableHeadersSymbol","Symbol","for","createHeaders","props","options","columns","wrapped","length","isArray","flat","flatMap","row","index","map","column","rowCount","defaultHeader","title","sortable","defaultActionHeader","width","groupBy","value","findIndex","_ref","key","unshift","rowspan","splice","showSelect","_ref2","showExpand","_ref3","push","fixedRows","fixedOffsets","fill","count","forEach","_ref4","id","i","fixedOffset","fixed","lastFixed","seen","Set","filtered","has","add","at","deep","immediate","data","useHeaders","Error"],"sources":["../../../../src/labs/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { inject, provide, ref, watch } from 'vue'\nimport { createRange, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { SortItem } from './sort'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: {\n type: Array as PropType<DataTableHeader[] | DataTableHeader[][]>,\n default: () => ([]),\n },\n}, 'v-data-table-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DataTableHeader[] | DataTableHeader[][]\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n\n watch(() => props.headers, () => {\n const wrapped = !props.headers.length\n ? []\n : Array.isArray(props.headers[0])\n ? props.headers as DataTableHeader[][]\n : [props.headers as DataTableHeader[]]\n const flat = wrapped.flatMap((row, index) => row.map(column => ({ column, row: index })))\n\n const rowCount = wrapped.length\n const defaultHeader = { title: '', sortable: false }\n const defaultActionHeader = { ...defaultHeader, width: 48 }\n\n if (options?.groupBy?.value.length) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-group')\n if (index < 0) flat.unshift({ column: { ...defaultHeader, key: 'data-table-group', title: 'Group', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showSelect?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-select')\n if (index < 0) flat.unshift({ column: { ...defaultActionHeader, key: 'data-table-select', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showExpand?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-expand')\n if (index < 0) flat.push({ column: { ...defaultActionHeader, key: 'data-table-expand', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n const fixedRows: InternalDataTableHeader[][] = createRange(rowCount).map(() => [])\n const fixedOffsets = createRange(rowCount).fill(0)\n\n let count = 0\n flat.forEach(({ column, row }) => {\n const id = column.key ?? `data-table-column-${count++}`\n for (let i = row; i <= row + (column.rowspan ?? 1) - 1; i++) {\n fixedRows[i].push({\n ...column,\n key: id,\n fixedOffset: fixedOffsets[i],\n sortable: column.sortable ?? !!column.key,\n })\n\n fixedOffsets[i] += column.width ?? 0\n }\n })\n\n fixedRows.forEach(row => {\n for (let i = row.length; i--; i >= 0) {\n if (row[i].fixed) {\n row[i].lastFixed = true\n return\n }\n }\n })\n\n const seen = new Set()\n headers.value = fixedRows.map(row => {\n const filtered = []\n for (const column of row) {\n if (!seen.has(column.key)) {\n seen.add(column.key)\n filtered.push(column)\n }\n }\n\n return filtered\n })\n\n columns.value = fixedRows.at(-1) ?? []\n }, {\n deep: true,\n immediate: true,\n })\n\n const data = { headers, columns }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"headers.mjs","names":["inject","provide","ref","watch","createRange","propsFactory","makeDataTableHeaderProps","headers","type","Array","default","VDataTableHeadersSymbol","Symbol","for","createHeaders","props","options","columns","wrapped","length","isArray","flat","flatMap","row","index","map","column","rowCount","defaultHeader","title","sortable","defaultActionHeader","width","groupBy","value","findIndex","_ref","key","unshift","rowspan","splice","showSelect","_ref2","showExpand","_ref3","push","fixedRows","fixedOffsets","fill","forEach","_ref4","i","fixedOffset","fixed","lastFixed","seen","Set","filtered","has","add","at","deep","immediate","data","useHeaders","Error"],"sources":["../../../../src/labs/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { inject, provide, ref, watch } from 'vue'\nimport { createRange, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { SortItem } from './sort'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: {\n type: Array as PropType<DeepReadonly<DataTableHeader[] | DataTableHeader[][]>>,\n default: () => ([]),\n },\n}, 'v-data-table-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[] | DataTableHeader[][]>\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n\n watch(() => props.headers, () => {\n const wrapped = !props.headers.length\n ? []\n : Array.isArray(props.headers[0])\n ? props.headers as DataTableHeader[][]\n : [props.headers as DataTableHeader[]]\n const flat = wrapped.flatMap((row, index) => row.map(column => ({ column, row: index })))\n\n const rowCount = wrapped.length\n const defaultHeader = { title: '', sortable: false }\n const defaultActionHeader = { ...defaultHeader, width: 48 }\n\n if (options?.groupBy?.value.length) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-group')\n if (index < 0) flat.unshift({ column: { ...defaultHeader, key: 'data-table-group', title: 'Group', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showSelect?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-select')\n if (index < 0) flat.unshift({ column: { ...defaultActionHeader, key: 'data-table-select', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showExpand?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-expand')\n if (index < 0) flat.push({ column: { ...defaultActionHeader, key: 'data-table-expand', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n const fixedRows: InternalDataTableHeader[][] = createRange(rowCount).map(() => [])\n const fixedOffsets = createRange(rowCount).fill(0)\n\n flat.forEach(({ column, row }) => {\n const key = column.key\n for (let i = row; i <= row + (column.rowspan ?? 1) - 1; i++) {\n fixedRows[i].push({\n ...column,\n key,\n fixedOffset: fixedOffsets[i],\n sortable: column.sortable ?? !!column.key,\n })\n\n fixedOffsets[i] += column.width ?? 0\n }\n })\n\n fixedRows.forEach(row => {\n for (let i = row.length; i--; i >= 0) {\n if (row[i].fixed) {\n row[i].lastFixed = true\n return\n }\n }\n })\n\n const seen = new Set()\n headers.value = fixedRows.map(row => {\n const filtered = []\n for (const column of row) {\n if (!seen.has(column.key)) {\n seen.add(column.key)\n filtered.push(column)\n }\n }\n\n return filtered\n })\n\n columns.value = fixedRows.at(-1) ?? []\n }, {\n deep: true,\n immediate: true,\n })\n\n const data = { headers, columns }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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"}