vuetify 3.2.2 → 3.2.3

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 (299) hide show
  1. package/dist/json/attributes.json +538 -242
  2. package/dist/json/importMap.json +8 -8
  3. package/dist/json/tags.json +77 -2
  4. package/dist/json/web-types.json +1284 -558
  5. package/dist/vuetify-labs.css +123 -119
  6. package/dist/vuetify-labs.d.ts +2222 -11380
  7. package/dist/vuetify-labs.esm.js +2230 -2144
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +2230 -2144
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +39 -35
  12. package/dist/vuetify.d.ts +1225 -11178
  13. package/dist/vuetify.esm.js +1691 -1591
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +1691 -1591
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +597 -597
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/index.d.ts +1 -3
  21. package/lib/blueprints/md1.d.ts +1 -3
  22. package/lib/blueprints/md2.d.ts +1 -3
  23. package/lib/blueprints/md3.d.ts +1 -3
  24. package/lib/components/VAlert/VAlert.mjs +47 -46
  25. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  26. package/lib/components/VAlert/index.d.ts +2 -2
  27. package/lib/components/VApp/VApp.mjs +9 -8
  28. package/lib/components/VApp/VApp.mjs.map +1 -1
  29. package/lib/components/VAppBar/VAppBar.mjs +21 -20
  30. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  31. package/lib/components/VAppBar/VAppBarNavIcon.mjs +8 -5
  32. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  33. package/lib/components/VAppBar/index.d.ts +4 -4
  34. package/lib/components/VAutocomplete/VAutocomplete.css +0 -4
  35. package/lib/components/VAutocomplete/VAutocomplete.mjs +28 -33
  36. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  37. package/lib/components/VAutocomplete/VAutocomplete.sass +0 -5
  38. package/lib/components/VAutocomplete/index.d.ts +67 -1174
  39. package/lib/components/VBadge/VBadge.mjs +33 -32
  40. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  41. package/lib/components/VBanner/VBanner.mjs +21 -20
  42. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  43. package/lib/components/VBanner/VBannerActions.mjs +7 -6
  44. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  45. package/lib/components/VBanner/index.d.ts +2 -2
  46. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +35 -34
  47. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  48. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +24 -23
  49. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  50. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +6 -5
  51. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  52. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +15 -14
  53. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  54. package/lib/components/VBreadcrumbs/index.d.ts +1 -0
  55. package/lib/components/VBtnToggle/VBtnToggle.mjs +6 -5
  56. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  57. package/lib/components/VCard/VCard.mjs +38 -37
  58. package/lib/components/VCard/VCard.mjs.map +1 -1
  59. package/lib/components/VCard/VCardItem.mjs +12 -11
  60. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  61. package/lib/components/VCard/index.d.ts +4 -4
  62. package/lib/components/VCarousel/VCarousel.mjs +28 -27
  63. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  64. package/lib/components/VCarousel/VCarouselItem.mjs +18 -16
  65. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  66. package/lib/components/VCarousel/index.d.ts +170 -20
  67. package/lib/components/VCheckbox/VCheckbox.mjs +6 -5
  68. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  69. package/lib/components/VCheckbox/index.d.ts +24 -12
  70. package/lib/components/VChip/VChip.css +8 -0
  71. package/lib/components/VChip/VChip.mjs +60 -57
  72. package/lib/components/VChip/VChip.mjs.map +1 -1
  73. package/lib/components/VChip/VChip.sass +10 -0
  74. package/lib/components/VChip/index.d.ts +8 -8
  75. package/lib/components/VChipGroup/VChipGroup.mjs +19 -18
  76. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  77. package/lib/components/VColorPicker/VColorPicker.mjs +44 -39
  78. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  79. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +21 -20
  80. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  81. package/lib/components/VColorPicker/VColorPickerEdit.mjs +17 -16
  82. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  83. package/lib/components/VColorPicker/VColorPickerPreview.mjs +10 -9
  84. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  85. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +12 -11
  86. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  87. package/lib/components/VColorPicker/index.d.ts +4 -4
  88. package/lib/components/VColorPicker/util/index.mjs +2 -2
  89. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  90. package/lib/components/VCombobox/VCombobox.mjs +32 -36
  91. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  92. package/lib/components/VCombobox/index.d.ts +67 -1171
  93. package/lib/components/VCounter/VCounter.mjs +16 -15
  94. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  95. package/lib/components/VCounter/index.d.ts +25 -1774
  96. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +9 -8
  97. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  98. package/lib/components/VDialog/VDialog.mjs +18 -17
  99. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  100. package/lib/components/VDialog/index.d.ts +130 -1120
  101. package/lib/components/VDivider/VDivider.mjs +11 -10
  102. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  103. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +15 -15
  104. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  105. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +6 -5
  106. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  107. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +3 -5
  108. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  109. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +15 -14
  110. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  111. package/lib/components/VExpansionPanel/index.d.ts +15 -15
  112. package/lib/components/VField/VField.mjs +6 -2
  113. package/lib/components/VField/VField.mjs.map +1 -1
  114. package/lib/components/VField/VFieldLabel.mjs +6 -5
  115. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  116. package/lib/components/VFileInput/VFileInput.mjs +35 -34
  117. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  118. package/lib/components/VFileInput/index.d.ts +3 -3
  119. package/lib/components/VFooter/VFooter.mjs +19 -18
  120. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  121. package/lib/components/VForm/VForm.mjs +6 -5
  122. package/lib/components/VForm/VForm.mjs.map +1 -1
  123. package/lib/components/VForm/index.d.ts +3 -3
  124. package/lib/components/VGrid/VCol.mjs +26 -25
  125. package/lib/components/VGrid/VCol.mjs.map +1 -1
  126. package/lib/components/VGrid/VContainer.mjs +16 -11
  127. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  128. package/lib/components/VGrid/VRow.mjs +26 -25
  129. package/lib/components/VGrid/VRow.mjs.map +1 -1
  130. package/lib/components/VHover/VHover.mjs +10 -9
  131. package/lib/components/VHover/VHover.mjs.map +1 -1
  132. package/lib/components/VImg/VImg.mjs +29 -28
  133. package/lib/components/VImg/VImg.mjs.map +1 -1
  134. package/lib/components/VItemGroup/VItemGroup.mjs +10 -9
  135. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  136. package/lib/components/VLabel/VLabel.mjs +8 -7
  137. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  138. package/lib/components/VLayout/VLayout.mjs +6 -5
  139. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  140. package/lib/components/VLayout/VLayoutItem.mjs +15 -14
  141. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  142. package/lib/components/VLazy/VLazy.mjs +21 -20
  143. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  144. package/lib/components/VList/VList.mjs +33 -32
  145. package/lib/components/VList/VList.mjs.map +1 -1
  146. package/lib/components/VList/VListChildren.mjs +5 -4
  147. package/lib/components/VList/VListChildren.mjs.map +1 -1
  148. package/lib/components/VList/VListGroup.mjs +2 -4
  149. package/lib/components/VList/VListGroup.mjs.map +1 -1
  150. package/lib/components/VList/VListItem.mjs +42 -41
  151. package/lib/components/VList/VListItem.mjs.map +1 -1
  152. package/lib/components/VList/VListItemAction.mjs +8 -7
  153. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  154. package/lib/components/VList/VListItemMedia.mjs +8 -7
  155. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  156. package/lib/components/VList/VListSubheader.mjs +10 -9
  157. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  158. package/lib/components/VList/index.d.ts +30 -30
  159. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +12 -11
  160. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  161. package/lib/components/VMain/VMain.mjs +9 -8
  162. package/lib/components/VMain/VMain.mjs.map +1 -1
  163. package/lib/components/VMenu/VMenu.mjs +18 -17
  164. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  165. package/lib/components/VMenu/index.d.ts +40 -1030
  166. package/lib/components/VMessages/VMessages.mjs +18 -17
  167. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  168. package/lib/components/VMessages/index.d.ts +25 -1774
  169. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +48 -47
  170. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  171. package/lib/components/VNavigationDrawer/sticky.mjs +9 -3
  172. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  173. package/lib/components/VOverlay/locationStrategies.mjs +5 -3
  174. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  175. package/lib/components/VPagination/VPagination.mjs +82 -81
  176. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  177. package/lib/components/VPagination/index.d.ts +8 -8
  178. package/lib/components/VParallax/VParallax.mjs +9 -8
  179. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  180. package/lib/components/VProgressCircular/VProgressCircular.mjs +25 -24
  181. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  182. package/lib/components/VProgressLinear/VProgressLinear.mjs +44 -42
  183. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  184. package/lib/components/VProgressLinear/index.d.ts +8 -8
  185. package/lib/components/VRadio/VRadio.mjs +8 -7
  186. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  187. package/lib/components/VRadio/index.d.ts +18 -12
  188. package/lib/components/VRadioGroup/VRadioGroup.mjs +22 -21
  189. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  190. package/lib/components/VRadioGroup/index.d.ts +16 -10
  191. package/lib/components/VRangeSlider/VRangeSlider.mjs +18 -13
  192. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  193. package/lib/components/VRating/VRating.mjs +44 -43
  194. package/lib/components/VRating/VRating.mjs.map +1 -1
  195. package/lib/components/VRating/index.d.ts +8 -8
  196. package/lib/components/VResponsive/VResponsive.mjs +8 -7
  197. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  198. package/lib/components/VSelect/VSelect.mjs +20 -19
  199. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  200. package/lib/components/VSelect/index.d.ts +64 -2506
  201. package/lib/components/VSelectionControl/index.d.ts +42 -36
  202. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +10 -10
  203. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  204. package/lib/components/VSelectionControlGroup/index.d.ts +28 -28
  205. package/lib/components/VSheet/VSheet.mjs +1 -3
  206. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  207. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +1 -3
  208. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  209. package/lib/components/VSlider/VSlider.mjs +18 -13
  210. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  211. package/lib/components/VSlider/VSliderThumb.mjs +26 -25
  212. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  213. package/lib/components/VSlider/VSliderTrack.mjs +13 -12
  214. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  215. package/lib/components/VSnackbar/VSnackbar.mjs +20 -19
  216. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  217. package/lib/components/VSwitch/VSwitch.mjs +13 -12
  218. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  219. package/lib/components/VSwitch/index.d.ts +18 -12
  220. package/lib/components/VSystemBar/VSystemBar.mjs +13 -12
  221. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  222. package/lib/components/VTable/VTable.mjs +12 -11
  223. package/lib/components/VTable/VTable.mjs.map +1 -1
  224. package/lib/components/VTabs/VTab.mjs +15 -14
  225. package/lib/components/VTabs/VTab.mjs.map +1 -1
  226. package/lib/components/VTabs/VTabs.mjs +28 -27
  227. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  228. package/lib/components/VTabs/index.d.ts +12 -12
  229. package/lib/components/VTextField/index.d.ts +3 -3
  230. package/lib/components/VTextarea/VTextarea.mjs +26 -25
  231. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  232. package/lib/components/VTextarea/index.d.ts +3 -3
  233. package/lib/components/VThemeProvider/VThemeProvider.mjs +8 -7
  234. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  235. package/lib/components/VTimeline/VTimeline.mjs +46 -41
  236. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  237. package/lib/components/VTimeline/VTimelineDivider.mjs +14 -13
  238. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  239. package/lib/components/VTimeline/VTimelineItem.mjs +21 -20
  240. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  241. package/lib/components/VToolbar/VToolbar.mjs +6 -2
  242. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  243. package/lib/components/VToolbar/VToolbarItems.mjs +8 -7
  244. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  245. package/lib/components/VToolbar/index.d.ts +11 -11
  246. package/lib/components/VTooltip/VTooltip.mjs +20 -19
  247. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  248. package/lib/components/VValidation/VValidation.mjs +1 -3
  249. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  250. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +11 -10
  251. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  252. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +6 -5
  253. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  254. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  255. package/lib/components/VWindow/VWindowItem.mjs +15 -14
  256. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  257. package/lib/components/VWindow/index.d.ts +9 -9
  258. package/lib/components/index.d.ts +1301 -11252
  259. package/lib/components/transitions/createTransition.mjs +16 -15
  260. package/lib/components/transitions/createTransition.mjs.map +1 -1
  261. package/lib/components/transitions/dialog-transition.mjs +5 -4
  262. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  263. package/lib/components/transitions/index.d.ts +143 -143
  264. package/lib/composables/forwardRefs.mjs.map +1 -1
  265. package/lib/composables/theme.mjs +3 -3
  266. package/lib/composables/theme.mjs.map +1 -1
  267. package/lib/directives/click-outside/index.mjs +1 -1
  268. package/lib/directives/click-outside/index.mjs.map +1 -1
  269. package/lib/entry-bundler.mjs +1 -1
  270. package/lib/framework.mjs +1 -1
  271. package/lib/index.d.ts +3 -5
  272. package/lib/labs/VDataTable/VDataTable.mjs +53 -59
  273. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  274. package/lib/labs/VDataTable/VDataTableFooter.mjs +64 -63
  275. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  276. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +8 -7
  277. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  278. package/lib/labs/VDataTable/VDataTableHeaders.mjs +16 -15
  279. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  280. package/lib/labs/VDataTable/VDataTableRow.mjs +7 -6
  281. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  282. package/lib/labs/VDataTable/VDataTableRows.mjs +20 -19
  283. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  284. package/lib/labs/VDataTable/VDataTableServer.mjs +53 -64
  285. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  286. package/lib/labs/VDataTable/VDataTableVirtual.mjs +65 -72
  287. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  288. package/lib/labs/VDataTable/index.d.ts +991 -206
  289. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +54 -48
  290. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  291. package/lib/labs/VInfiniteScroll/index.d.ts +16 -1
  292. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +18 -17
  293. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  294. package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
  295. package/lib/labs/components.d.ts +1011 -211
  296. package/lib/labs/date/date.mjs +7 -7
  297. package/lib/labs/date/date.mjs.map +1 -1
  298. package/lib/labs/date/index.d.ts +1 -3
  299. package/package.json +2 -2
@@ -7,9 +7,39 @@ import { VBtn } from "../../components/VBtn/index.mjs";
7
7
  import { VProgressCircular } from "../../components/VProgressCircular/index.mjs"; // Composables
8
8
  import { makeDimensionProps, useDimension } from "../../composables/dimensions.mjs";
9
9
  import { useIntersectionObserver } from "../../composables/intersectionObserver.mjs";
10
- import { useLocale } from "../../composables/locale.mjs"; // Utilities
10
+ import { useLocale } from "../../composables/locale.mjs";
11
+ import { makeTagProps } from "../../composables/tag.mjs"; // Utilities
11
12
  import { computed, nextTick, onMounted, ref, watch } from 'vue';
12
- import { convertToUnit, defineComponent, genericComponent, useRender } from "../../util/index.mjs"; // Types
13
+ import { convertToUnit, defineComponent, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
14
+ export const makeVInfiniteScrollProps = propsFactory({
15
+ color: String,
16
+ direction: {
17
+ type: String,
18
+ default: 'vertical',
19
+ validator: v => ['vertical', 'horizontal'].includes(v)
20
+ },
21
+ side: {
22
+ type: String,
23
+ default: 'end',
24
+ validator: v => ['start', 'end', 'both'].includes(v)
25
+ },
26
+ mode: {
27
+ type: String,
28
+ default: 'intersect',
29
+ validator: v => ['intersect', 'manual'].includes(v)
30
+ },
31
+ margin: [Number, String],
32
+ loadMoreText: {
33
+ type: String,
34
+ default: '$vuetify.infiniteScroll.loadMore'
35
+ },
36
+ emptyText: {
37
+ type: String,
38
+ default: '$vuetify.infiniteScroll.empty'
39
+ },
40
+ ...makeDimensionProps(),
41
+ ...makeTagProps()
42
+ }, 'v-infinite-scroll');
13
43
  export const VInfiniteScrollIntersect = defineComponent({
14
44
  name: 'VInfiniteScrollIntersect',
15
45
  props: {
@@ -46,34 +76,7 @@ export const VInfiniteScrollIntersect = defineComponent({
46
76
  });
47
77
  export const VInfiniteScroll = genericComponent()({
48
78
  name: 'VInfiniteScroll',
49
- props: {
50
- color: String,
51
- direction: {
52
- type: String,
53
- default: 'vertical',
54
- validator: v => ['vertical', 'horizontal'].includes(v)
55
- },
56
- side: {
57
- type: String,
58
- default: 'end',
59
- validator: v => ['start', 'end', 'both'].includes(v)
60
- },
61
- mode: {
62
- type: String,
63
- default: 'intersect',
64
- validator: v => ['intersect', 'manual'].includes(v)
65
- },
66
- margin: [Number, String],
67
- loadMoreText: {
68
- type: String,
69
- default: '$vuetify.infiniteScroll.loadMore'
70
- },
71
- emptyText: {
72
- type: String,
73
- default: '$vuetify.infiniteScroll.empty'
74
- },
75
- ...makeDimensionProps()
76
- },
79
+ props: makeVInfiniteScrollProps(),
77
80
  emits: {
78
81
  load: options => true
79
82
  },
@@ -182,33 +185,36 @@ export const VInfiniteScroll = genericComponent()({
182
185
  dimensionStyles
183
186
  } = useDimension(props);
184
187
  useRender(() => {
188
+ const Tag = props.tag;
185
189
  const hasStartIntersect = props.side === 'start' || props.side === 'both';
186
190
  const hasEndIntersect = props.side === 'end' || props.side === 'both';
187
191
  const intersectMode = props.mode === 'intersect';
188
- return _createVNode("div", {
192
+ return _createVNode(Tag, {
189
193
  "ref": rootEl,
190
194
  "class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
191
195
  'v-infinite-scroll--start': hasStartIntersect,
192
196
  'v-infinite-scroll--end': hasEndIntersect
193
197
  }],
194
198
  "style": dimensionStyles.value
195
- }, [_createVNode("div", {
196
- "class": "v-infinite-scroll__side"
197
- }, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {
198
- "key": "start",
199
- "side": "start",
200
- "onIntersect": handleIntersect,
201
- "rootRef": rootEl.value,
202
- "rootMargin": margin.value
203
- }, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {
204
- "key": "end",
205
- "side": "end",
206
- "onIntersect": handleIntersect,
207
- "rootRef": rootEl.value,
208
- "rootMargin": margin.value
209
- }, null), _createVNode("div", {
210
- "class": "v-infinite-scroll__side"
211
- }, [renderSide('end', endStatus.value)])]);
199
+ }, {
200
+ default: () => [_createVNode("div", {
201
+ "class": "v-infinite-scroll__side"
202
+ }, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {
203
+ "key": "start",
204
+ "side": "start",
205
+ "onIntersect": handleIntersect,
206
+ "rootRef": rootEl.value,
207
+ "rootMargin": margin.value
208
+ }, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {
209
+ "key": "end",
210
+ "side": "end",
211
+ "onIntersect": handleIntersect,
212
+ "rootRef": rootEl.value,
213
+ "rootMargin": margin.value
214
+ }, null), _createVNode("div", {
215
+ "class": "v-infinite-scroll__side"
216
+ }, [renderSide('end', endStatus.value)])]
217
+ });
212
218
  });
213
219
  }
214
220
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VInfiniteScroll.mjs","names":["VBtn","VProgressCircular","makeDimensionProps","useDimension","useIntersectionObserver","useLocale","computed","nextTick","onMounted","ref","watch","convertToUnit","defineComponent","genericComponent","useRender","VInfiniteScrollIntersect","name","props","side","type","String","required","rootRef","rootMargin","emits","intersect","setup","_ref","emit","intersectionRef","isIntersecting","entries","root","undefined","val","_createVNode","_createTextVNode","VInfiniteScroll","color","direction","default","validator","v","includes","mode","margin","Number","loadMoreText","emptyText","load","options","_ref2","slots","rootEl","startStatus","endStatus","setScrollAmount","amount","value","property","getScrollAmount","getScrollSize","getContainerSize","setStatus","status","getStatus","previousScrollSize","handleIntersect","done","t","renderSide","onClick","slotProps","error","empty","loading","dimensionStyles","hasStartIntersect","hasEndIntersect","intersectMode"],"sources":["../../../src/labs/VInfiniteScroll/VInfiniteScroll.tsx"],"sourcesContent":["// Styles\nimport './VInfiniteScroll.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { convertToUnit, defineComponent, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type InfiniteScrollSide = 'start' | 'end' | 'both'\nexport type InfiniteScrollStatus = 'ok' | 'empty' | 'loading' | 'error'\n\ntype InfiniteScrollSlot = {\n side: InfiniteScrollSide\n props: {\n onClick: () => (side: InfiniteScrollSide) => void\n color: string | undefined\n }\n}\n\ntype VInfiniteScrollSlots = {\n default: [InfiniteScrollSlot]\n loading: [InfiniteScrollSlot]\n error: [InfiniteScrollSlot]\n empty: [InfiniteScrollSlot]\n 'load-more': [InfiniteScrollSlot]\n}\n\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n\n props: {\n side: {\n type: String as PropType<InfiniteScrollSide>,\n required: true,\n },\n rootRef: null,\n rootMargin: String,\n },\n\n emits: {\n intersect: (side: InfiniteScrollSide) => true,\n },\n\n setup (props, { emit }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver(entries => {\n }, props.rootMargin ? {\n root: props.rootRef,\n rootMargin: props.rootMargin,\n } : undefined)\n\n watch(isIntersecting, async val => {\n if (val) emit('intersect', props.side)\n })\n\n useRender(() => (\n <div class=\"v-infinite-scroll-intersect\" ref={ intersectionRef }>&nbsp;</div>\n ))\n\n return {}\n },\n})\n\nexport const VInfiniteScroll = genericComponent<VInfiniteScrollSlots>()({\n name: 'VInfiniteScroll',\n\n props: {\n color: String,\n direction: {\n type: String as PropType<'vertical' | 'horizontal'>,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n side: {\n type: String as PropType<InfiniteScrollSide>,\n default: 'end',\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n },\n mode: {\n type: String as PropType<'intersect' | 'manual'>,\n default: 'intersect',\n validator: (v: any) => ['intersect', 'manual'].includes(v),\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore',\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty',\n },\n\n ...makeDimensionProps(),\n },\n\n emits: {\n load: (options: { side: InfiniteScrollSide, done: (status: InfiniteScrollStatus) => void }) => true,\n },\n\n setup (props, { slots, emit }) {\n const rootEl = ref<HTMLDivElement>()\n const startStatus = ref<InfiniteScrollStatus>('ok')\n const endStatus = ref<InfiniteScrollStatus>('ok')\n const margin = computed(() => convertToUnit(props.margin))\n\n function setScrollAmount (amount: number) {\n if (!rootEl.value) return\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n rootEl.value[property] = amount\n }\n\n function getScrollAmount () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n return rootEl.value[property]\n }\n\n function getScrollSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth'\n return rootEl.value[property]\n }\n\n function getContainerSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth'\n return rootEl.value[property]\n }\n\n onMounted(() => {\n if (!rootEl.value) return\n\n if (props.side === 'start') {\n setScrollAmount(getScrollSize())\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2)\n }\n })\n\n function setStatus (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (side === 'start') {\n startStatus.value = status\n } else if (side === 'end') {\n endStatus.value = status\n }\n }\n\n function getStatus (side: string) {\n return side === 'start' ? startStatus.value : endStatus.value\n }\n\n let previousScrollSize = 0\n function handleIntersect (side: InfiniteScrollSide) {\n const status = getStatus(side)\n if (!rootEl.value || status === 'loading') return\n\n previousScrollSize = getScrollSize()\n setStatus(side, 'loading')\n\n function done (status: InfiniteScrollStatus) {\n setStatus(side, status)\n\n nextTick(() => {\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount())\n }\n })\n }\n\n emit('load', { side, done })\n }\n\n const { t } = useLocale()\n\n function renderSide (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (props.side !== side && props.side !== 'both') return\n\n const onClick = () => handleIntersect(side)\n const slotProps = { side, props: { onClick, color: props.color } }\n\n if (status === 'error') return slots.error?.(slotProps)\n\n if (status === 'empty') return slots.empty?.(slotProps) ?? <div>{ t(props.emptyText) }</div>\n\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? (\n <VProgressCircular indeterminate color={ props.color } />\n )\n }\n\n return slots['load-more']?.(slotProps) ?? (\n <VBtn variant=\"outlined\" color={ props.color } onClick={ onClick }>\n { t(props.loadMoreText) }\n </VBtn>\n )\n }\n\n return slots.loading?.(slotProps) ?? (\n <VProgressCircular indeterminate color={ props.color } />\n )\n }\n\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => {\n const hasStartIntersect = props.side === 'start' || props.side === 'both'\n const hasEndIntersect = props.side === 'end' || props.side === 'both'\n const intersectMode = props.mode === 'intersect'\n\n return (\n <div\n ref={ rootEl }\n class={[\n 'v-infinite-scroll',\n `v-infinite-scroll--${props.direction}`,\n {\n 'v-infinite-scroll--start': hasStartIntersect,\n 'v-infinite-scroll--end': hasEndIntersect,\n },\n ]}\n style={ dimensionStyles.value }\n >\n <div class=\"v-infinite-scroll__side\">\n { renderSide('start', startStatus.value) }\n </div>\n\n { rootEl.value && hasStartIntersect && intersectMode && (\n <VInfiniteScrollIntersect\n key=\"start\"\n side=\"start\"\n onIntersect={ handleIntersect }\n rootRef={ rootEl.value }\n rootMargin={ margin.value }\n />\n )}\n\n { slots.default?.() }\n\n { rootEl.value && hasEndIntersect && intersectMode && (\n <VInfiniteScrollIntersect\n key=\"end\"\n side=\"end\"\n onIntersect={ handleIntersect }\n rootRef={ rootEl.value }\n rootMargin={ margin.value }\n />\n )}\n\n <div class=\"v-infinite-scroll__side\">\n { renderSide('end', endStatus.value) }\n </div>\n </div>\n )\n })\n },\n})\n\nexport type VInfiniteScroll = InstanceType<typeof VInfiniteScroll>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,iBAAiB,wDAE1B;AAAA,SACSC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,uBAAuB;AAAA,SACvBC,SAAS,wCAElB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACtDC,aAAa,EAAEC,eAAe,EAAEC,gBAAgB,EAAEC,SAAS,gCAEpE;AAsBA,OAAO,MAAMC,wBAAwB,GAAGH,eAAe,CAAC;EACtDI,IAAI,EAAE,0BAA0B;EAEhCC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAsC;MAC5CC,QAAQ,EAAE;IACZ,CAAC;IACDC,OAAO,EAAE,IAAI;IACbC,UAAU,EAAEH;EACd,CAAC;EAEDI,KAAK,EAAE;IACLC,SAAS,EAAGP,IAAwB,IAAK;EAC3C,CAAC;EAEDQ,KAAKA,CAAET,KAAK,EAAAU,IAAA,EAAY;IAAA,IAAV;MAAEC;IAAK,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE,eAAe;MAAEC;IAAe,CAAC,GAAG1B,uBAAuB,CAAC2B,OAAO,IAAI,CAC/E,CAAC,EAAEd,KAAK,CAACM,UAAU,GAAG;MACpBS,IAAI,EAAEf,KAAK,CAACK,OAAO;MACnBC,UAAU,EAAEN,KAAK,CAACM;IACpB,CAAC,GAAGU,SAAS,CAAC;IAEdvB,KAAK,CAACoB,cAAc,EAAE,MAAMI,GAAG,IAAI;MACjC,IAAIA,GAAG,EAAEN,IAAI,CAAC,WAAW,EAAEX,KAAK,CAACC,IAAI,CAAC;IACxC,CAAC,CAAC;IAEFJ,SAAS,CAAC,MAAAqB,YAAA;MAAA,SACG,6BAA6B;MAAA,OAAON;IAAe,IAAAO,gBAAA,UAC/D,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAe,GAAGxB,gBAAgB,EAAwB,CAAC;EACtEG,IAAI,EAAE,iBAAiB;EAEvBC,KAAK,EAAE;IACLqB,KAAK,EAAElB,MAAM;IACbmB,SAAS,EAAE;MACTpB,IAAI,EAAEC,MAA6C;MACnDoB,OAAO,EAAE,UAAU;MACnBC,SAAS,EAAGC,CAAM,IAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAACC,QAAQ,CAACD,CAAC;IAC9D,CAAC;IACDxB,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAsC;MAC5CoB,OAAO,EAAE,KAAK;MACdC,SAAS,EAAGC,CAAM,IAAK,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAACC,QAAQ,CAACD,CAAC;IAC5D,CAAC;IACDE,IAAI,EAAE;MACJzB,IAAI,EAAEC,MAA0C;MAChDoB,OAAO,EAAE,WAAW;MACpBC,SAAS,EAAGC,CAAM,IAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAACC,QAAQ,CAACD,CAAC;IAC3D,CAAC;IACDG,MAAM,EAAE,CAACC,MAAM,EAAE1B,MAAM,CAAC;IACxB2B,YAAY,EAAE;MACZ5B,IAAI,EAAEC,MAAM;MACZoB,OAAO,EAAE;IACX,CAAC;IACDQ,SAAS,EAAE;MACT7B,IAAI,EAAEC,MAAM;MACZoB,OAAO,EAAE;IACX,CAAC;IAED,GAAGtC,kBAAkB;EACvB,CAAC;EAEDsB,KAAK,EAAE;IACLyB,IAAI,EAAGC,OAAmF,IAAK;EACjG,CAAC;EAEDxB,KAAKA,CAAET,KAAK,EAAAkC,KAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAExB;IAAK,CAAC,GAAAuB,KAAA;IAC3B,MAAME,MAAM,GAAG5C,GAAG,EAAkB;IACpC,MAAM6C,WAAW,GAAG7C,GAAG,CAAuB,IAAI,CAAC;IACnD,MAAM8C,SAAS,GAAG9C,GAAG,CAAuB,IAAI,CAAC;IACjD,MAAMoC,MAAM,GAAGvC,QAAQ,CAAC,MAAMK,aAAa,CAACM,KAAK,CAAC4B,MAAM,CAAC,CAAC;IAE1D,SAASW,eAAeA,CAAEC,MAAc,EAAE;MACxC,IAAI,CAACJ,MAAM,CAACK,KAAK,EAAE;MAEnB,MAAMC,QAAQ,GAAG1C,KAAK,CAACsB,SAAS,KAAK,UAAU,GAAG,WAAW,GAAG,YAAY;MAC5Ec,MAAM,CAACK,KAAK,CAACC,QAAQ,CAAC,GAAGF,MAAM;IACjC;IAEA,SAASG,eAAeA,CAAA,EAAI;MAC1B,IAAI,CAACP,MAAM,CAACK,KAAK,EAAE,OAAO,CAAC;MAE3B,MAAMC,QAAQ,GAAG1C,KAAK,CAACsB,SAAS,KAAK,UAAU,GAAG,WAAW,GAAG,YAAY;MAC5E,OAAOc,MAAM,CAACK,KAAK,CAACC,QAAQ,CAAC;IAC/B;IAEA,SAASE,aAAaA,CAAA,EAAI;MACxB,IAAI,CAACR,MAAM,CAACK,KAAK,EAAE,OAAO,CAAC;MAE3B,MAAMC,QAAQ,GAAG1C,KAAK,CAACsB,SAAS,KAAK,UAAU,GAAG,cAAc,GAAG,aAAa;MAChF,OAAOc,MAAM,CAACK,KAAK,CAACC,QAAQ,CAAC;IAC/B;IAEA,SAASG,gBAAgBA,CAAA,EAAI;MAC3B,IAAI,CAACT,MAAM,CAACK,KAAK,EAAE,OAAO,CAAC;MAE3B,MAAMC,QAAQ,GAAG1C,KAAK,CAACsB,SAAS,KAAK,UAAU,GAAG,cAAc,GAAG,aAAa;MAChF,OAAOc,MAAM,CAACK,KAAK,CAACC,QAAQ,CAAC;IAC/B;IAEAnD,SAAS,CAAC,MAAM;MACd,IAAI,CAAC6C,MAAM,CAACK,KAAK,EAAE;MAEnB,IAAIzC,KAAK,CAACC,IAAI,KAAK,OAAO,EAAE;QAC1BsC,eAAe,CAACK,aAAa,EAAE,CAAC;MAClC,CAAC,MAAM,IAAI5C,KAAK,CAACC,IAAI,KAAK,MAAM,EAAE;QAChCsC,eAAe,CAACK,aAAa,EAAE,GAAG,CAAC,GAAGC,gBAAgB,EAAE,GAAG,CAAC,CAAC;MAC/D;IACF,CAAC,CAAC;IAEF,SAASC,SAASA,CAAE7C,IAAwB,EAAE8C,MAA4B,EAAE;MAC1E,IAAI9C,IAAI,KAAK,OAAO,EAAE;QACpBoC,WAAW,CAACI,KAAK,GAAGM,MAAM;MAC5B,CAAC,MAAM,IAAI9C,IAAI,KAAK,KAAK,EAAE;QACzBqC,SAAS,CAACG,KAAK,GAAGM,MAAM;MAC1B;IACF;IAEA,SAASC,SAASA,CAAE/C,IAAY,EAAE;MAChC,OAAOA,IAAI,KAAK,OAAO,GAAGoC,WAAW,CAACI,KAAK,GAAGH,SAAS,CAACG,KAAK;IAC/D;IAEA,IAAIQ,kBAAkB,GAAG,CAAC;IAC1B,SAASC,eAAeA,CAAEjD,IAAwB,EAAE;MAClD,MAAM8C,MAAM,GAAGC,SAAS,CAAC/C,IAAI,CAAC;MAC9B,IAAI,CAACmC,MAAM,CAACK,KAAK,IAAIM,MAAM,KAAK,SAAS,EAAE;MAE3CE,kBAAkB,GAAGL,aAAa,EAAE;MACpCE,SAAS,CAAC7C,IAAI,EAAE,SAAS,CAAC;MAE1B,SAASkD,IAAIA,CAAEJ,MAA4B,EAAE;QAC3CD,SAAS,CAAC7C,IAAI,EAAE8C,MAAM,CAAC;QAEvBzD,QAAQ,CAAC,MAAM;UACb,IAAIyD,MAAM,KAAK,IAAI,IAAI9C,IAAI,KAAK,OAAO,EAAE;YACvCsC,eAAe,CAACK,aAAa,EAAE,GAAGK,kBAAkB,GAAGN,eAAe,EAAE,CAAC;UAC3E;QACF,CAAC,CAAC;MACJ;MAEAhC,IAAI,CAAC,MAAM,EAAE;QAAEV,IAAI;QAAEkD;MAAK,CAAC,CAAC;IAC9B;IAEA,MAAM;MAAEC;IAAE,CAAC,GAAGhE,SAAS,EAAE;IAEzB,SAASiE,UAAUA,CAAEpD,IAAwB,EAAE8C,MAA4B,EAAE;MAC3E,IAAI/C,KAAK,CAACC,IAAI,KAAKA,IAAI,IAAID,KAAK,CAACC,IAAI,KAAK,MAAM,EAAE;MAElD,MAAMqD,OAAO,GAAGA,CAAA,KAAMJ,eAAe,CAACjD,IAAI,CAAC;MAC3C,MAAMsD,SAAS,GAAG;QAAEtD,IAAI;QAAED,KAAK,EAAE;UAAEsD,OAAO;UAAEjC,KAAK,EAAErB,KAAK,CAACqB;QAAM;MAAE,CAAC;MAElE,IAAI0B,MAAM,KAAK,OAAO,EAAE,OAAOZ,KAAK,CAACqB,KAAK,GAAGD,SAAS,CAAC;MAEvD,IAAIR,MAAM,KAAK,OAAO,EAAE,OAAOZ,KAAK,CAACsB,KAAK,GAAGF,SAAS,CAAC,IAAArC,YAAA,eAAWkC,CAAC,CAACpD,KAAK,CAAC+B,SAAS,CAAC,EAAQ;MAE5F,IAAI/B,KAAK,CAAC2B,IAAI,KAAK,QAAQ,EAAE;QAC3B,IAAIoB,MAAM,KAAK,SAAS,EAAE;UACxB,OAAOZ,KAAK,CAACuB,OAAO,GAAGH,SAAS,CAAC,IAAArC,YAAA,CAAAlC,iBAAA;YAAA;YAAA,SACUgB,KAAK,CAACqB;UAAK,QACrD;QACH;QAEA,OAAOc,KAAK,CAAC,WAAW,CAAC,GAAGoB,SAAS,CAAC,IAAArC,YAAA,CAAAnC,IAAA;UAAA,WACtB,UAAU;UAAA,SAASiB,KAAK,CAACqB,KAAK;UAAA,WAAaiC;QAAO;UAAA/B,OAAA,EAAAA,CAAA,MAC5D6B,CAAC,CAACpD,KAAK,CAAC8B,YAAY,CAAC;QAAA,EAE1B;MACH;MAEA,OAAOK,KAAK,CAACuB,OAAO,GAAGH,SAAS,CAAC,IAAArC,YAAA,CAAAlC,iBAAA;QAAA;QAAA,SACUgB,KAAK,CAACqB;MAAK,QACrD;IACH;IAEA,MAAM;MAAEsC;IAAgB,CAAC,GAAGzE,YAAY,CAACc,KAAK,CAAC;IAE/CH,SAAS,CAAC,MAAM;MACd,MAAM+D,iBAAiB,GAAG5D,KAAK,CAACC,IAAI,KAAK,OAAO,IAAID,KAAK,CAACC,IAAI,KAAK,MAAM;MACzE,MAAM4D,eAAe,GAAG7D,KAAK,CAACC,IAAI,KAAK,KAAK,IAAID,KAAK,CAACC,IAAI,KAAK,MAAM;MACrE,MAAM6D,aAAa,GAAG9D,KAAK,CAAC2B,IAAI,KAAK,WAAW;MAEhD,OAAAT,YAAA;QAAA,OAEUkB,MAAM;QAAA,SACL,CACL,mBAAmB,EAClB,sBAAqBpC,KAAK,CAACsB,SAAU,EAAC,EACvC;UACE,0BAA0B,EAAEsC,iBAAiB;UAC7C,wBAAwB,EAAEC;QAC5B,CAAC,CACF;QAAA,SACOF,eAAe,CAAClB;MAAK,IAAAvB,YAAA;QAAA,SAElB;MAAyB,IAChCmC,UAAU,CAAC,OAAO,EAAEhB,WAAW,CAACI,KAAK,CAAC,IAGxCL,MAAM,CAACK,KAAK,IAAImB,iBAAiB,IAAIE,aAAa,IAAA5C,YAAA,CAAApB,wBAAA;QAAA,OAE5C,OAAO;QAAA,QACN,OAAO;QAAA,eACEoD,eAAe;QAAA,WACnBd,MAAM,CAACK,KAAK;QAAA,cACTb,MAAM,CAACa;MAAK,QAE5B,EAECN,KAAK,CAACZ,OAAO,IAAI,EAEjBa,MAAM,CAACK,KAAK,IAAIoB,eAAe,IAAIC,aAAa,IAAA5C,YAAA,CAAApB,wBAAA;QAAA,OAE1C,KAAK;QAAA,QACJ,KAAK;QAAA,eACIoD,eAAe;QAAA,WACnBd,MAAM,CAACK,KAAK;QAAA,cACTb,MAAM,CAACa;MAAK,QAE5B,EAAAvB,YAAA;QAAA,SAEU;MAAyB,IAChCmC,UAAU,CAAC,KAAK,EAAEf,SAAS,CAACG,KAAK,CAAC;IAI5C,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VInfiniteScroll.mjs","names":["VBtn","VProgressCircular","makeDimensionProps","useDimension","useIntersectionObserver","useLocale","makeTagProps","computed","nextTick","onMounted","ref","watch","convertToUnit","defineComponent","genericComponent","propsFactory","useRender","makeVInfiniteScrollProps","color","String","direction","type","default","validator","v","includes","side","mode","margin","Number","loadMoreText","emptyText","VInfiniteScrollIntersect","name","props","required","rootRef","rootMargin","emits","intersect","setup","_ref","emit","intersectionRef","isIntersecting","entries","root","undefined","val","_createVNode","_createTextVNode","VInfiniteScroll","load","options","_ref2","slots","rootEl","startStatus","endStatus","setScrollAmount","amount","value","property","getScrollAmount","getScrollSize","getContainerSize","setStatus","status","getStatus","previousScrollSize","handleIntersect","done","t","renderSide","onClick","slotProps","error","empty","loading","dimensionStyles","Tag","tag","hasStartIntersect","hasEndIntersect","intersectMode"],"sources":["../../../src/labs/VInfiniteScroll/VInfiniteScroll.tsx"],"sourcesContent":["// Styles\nimport './VInfiniteScroll.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { convertToUnit, defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type InfiniteScrollSide = 'start' | 'end' | 'both'\nexport type InfiniteScrollStatus = 'ok' | 'empty' | 'loading' | 'error'\n\ntype InfiniteScrollSlot = {\n side: InfiniteScrollSide\n props: {\n onClick: () => (side: InfiniteScrollSide) => void\n color: string | undefined\n }\n}\n\ntype VInfiniteScrollSlots = {\n default: [InfiniteScrollSlot]\n loading: [InfiniteScrollSlot]\n error: [InfiniteScrollSlot]\n empty: [InfiniteScrollSlot]\n 'load-more': [InfiniteScrollSlot]\n}\n\nexport const makeVInfiniteScrollProps = propsFactory({\n color: String,\n direction: {\n type: String as PropType<'vertical' | 'horizontal'>,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n side: {\n type: String as PropType<InfiniteScrollSide>,\n default: 'end',\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n },\n mode: {\n type: String as PropType<'intersect' | 'manual'>,\n default: 'intersect',\n validator: (v: any) => ['intersect', 'manual'].includes(v),\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore',\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty',\n },\n\n ...makeDimensionProps(),\n ...makeTagProps(),\n}, 'v-infinite-scroll')\n\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n\n props: {\n side: {\n type: String as PropType<InfiniteScrollSide>,\n required: true,\n },\n rootRef: null,\n rootMargin: String,\n },\n\n emits: {\n intersect: (side: InfiniteScrollSide) => true,\n },\n\n setup (props, { emit }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver(entries => {\n }, props.rootMargin ? {\n root: props.rootRef,\n rootMargin: props.rootMargin,\n } : undefined)\n\n watch(isIntersecting, async val => {\n if (val) emit('intersect', props.side)\n })\n\n useRender(() => (\n <div class=\"v-infinite-scroll-intersect\" ref={ intersectionRef }>&nbsp;</div>\n ))\n\n return {}\n },\n})\n\nexport const VInfiniteScroll = genericComponent<VInfiniteScrollSlots>()({\n name: 'VInfiniteScroll',\n\n props: makeVInfiniteScrollProps(),\n\n emits: {\n load: (options: { side: InfiniteScrollSide, done: (status: InfiniteScrollStatus) => void }) => true,\n },\n\n setup (props, { slots, emit }) {\n const rootEl = ref<HTMLDivElement>()\n const startStatus = ref<InfiniteScrollStatus>('ok')\n const endStatus = ref<InfiniteScrollStatus>('ok')\n const margin = computed(() => convertToUnit(props.margin))\n\n function setScrollAmount (amount: number) {\n if (!rootEl.value) return\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n rootEl.value[property] = amount\n }\n\n function getScrollAmount () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n return rootEl.value[property]\n }\n\n function getScrollSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth'\n return rootEl.value[property]\n }\n\n function getContainerSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth'\n return rootEl.value[property]\n }\n\n onMounted(() => {\n if (!rootEl.value) return\n\n if (props.side === 'start') {\n setScrollAmount(getScrollSize())\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2)\n }\n })\n\n function setStatus (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (side === 'start') {\n startStatus.value = status\n } else if (side === 'end') {\n endStatus.value = status\n }\n }\n\n function getStatus (side: string) {\n return side === 'start' ? startStatus.value : endStatus.value\n }\n\n let previousScrollSize = 0\n function handleIntersect (side: InfiniteScrollSide) {\n const status = getStatus(side)\n if (!rootEl.value || status === 'loading') return\n\n previousScrollSize = getScrollSize()\n setStatus(side, 'loading')\n\n function done (status: InfiniteScrollStatus) {\n setStatus(side, status)\n\n nextTick(() => {\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount())\n }\n })\n }\n\n emit('load', { side, done })\n }\n\n const { t } = useLocale()\n\n function renderSide (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (props.side !== side && props.side !== 'both') return\n\n const onClick = () => handleIntersect(side)\n const slotProps = { side, props: { onClick, color: props.color } }\n\n if (status === 'error') return slots.error?.(slotProps)\n\n if (status === 'empty') return slots.empty?.(slotProps) ?? <div>{ t(props.emptyText) }</div>\n\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? (\n <VProgressCircular indeterminate color={ props.color } />\n )\n }\n\n return slots['load-more']?.(slotProps) ?? (\n <VBtn variant=\"outlined\" color={ props.color } onClick={ onClick }>\n { t(props.loadMoreText) }\n </VBtn>\n )\n }\n\n return slots.loading?.(slotProps) ?? (\n <VProgressCircular indeterminate color={ props.color } />\n )\n }\n\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => {\n const Tag = props.tag\n const hasStartIntersect = props.side === 'start' || props.side === 'both'\n const hasEndIntersect = props.side === 'end' || props.side === 'both'\n const intersectMode = props.mode === 'intersect'\n\n return (\n <Tag\n ref={ rootEl }\n class={[\n 'v-infinite-scroll',\n `v-infinite-scroll--${props.direction}`,\n {\n 'v-infinite-scroll--start': hasStartIntersect,\n 'v-infinite-scroll--end': hasEndIntersect,\n },\n ]}\n style={ dimensionStyles.value }\n >\n <div class=\"v-infinite-scroll__side\">\n { renderSide('start', startStatus.value) }\n </div>\n\n { rootEl.value && hasStartIntersect && intersectMode && (\n <VInfiniteScrollIntersect\n key=\"start\"\n side=\"start\"\n onIntersect={ handleIntersect }\n rootRef={ rootEl.value }\n rootMargin={ margin.value }\n />\n )}\n\n { slots.default?.() }\n\n { rootEl.value && hasEndIntersect && intersectMode && (\n <VInfiniteScrollIntersect\n key=\"end\"\n side=\"end\"\n onIntersect={ handleIntersect }\n rootRef={ rootEl.value }\n rootMargin={ margin.value }\n />\n )}\n\n <div class=\"v-infinite-scroll__side\">\n { renderSide('end', endStatus.value) }\n </div>\n </Tag>\n )\n })\n },\n})\n\nexport type VInfiniteScroll = InstanceType<typeof VInfiniteScroll>\n"],"mappings":"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"}
@@ -20,12 +20,14 @@ declare const VInfiniteScroll: {
20
20
  $data: {};
21
21
  $props: Partial<{
22
22
  direction: "horizontal" | "vertical";
23
+ tag: string;
23
24
  mode: "manual" | "intersect";
24
25
  side: InfiniteScrollSide;
25
26
  loadMoreText: string;
26
27
  emptyText: string;
27
28
  }> & Omit<{
28
29
  direction: "horizontal" | "vertical";
30
+ tag: string;
29
31
  mode: "manual" | "intersect";
30
32
  side: InfiniteScrollSide;
31
33
  loadMoreText: string;
@@ -65,7 +67,7 @@ declare const VInfiniteScroll: {
65
67
  side: InfiniteScrollSide;
66
68
  done: (status: InfiniteScrollStatus) => void;
67
69
  }) => any) | undefined;
68
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "direction" | "mode" | "side" | "loadMoreText" | "emptyText">;
70
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "direction" | "tag" | "mode" | "side" | "loadMoreText" | "emptyText">;
69
71
  $attrs: {
70
72
  [x: string]: unknown;
71
73
  };
@@ -84,6 +86,7 @@ declare const VInfiniteScroll: {
84
86
  $el: any;
85
87
  $options: vue.ComponentOptionsBase<{
86
88
  direction: "horizontal" | "vertical";
89
+ tag: string;
87
90
  mode: "manual" | "intersect";
88
91
  side: InfiniteScrollSide;
89
92
  loadMoreText: string;
@@ -130,6 +133,7 @@ declare const VInfiniteScroll: {
130
133
  }) => true;
131
134
  }, string, {
132
135
  direction: "horizontal" | "vertical";
136
+ tag: string;
133
137
  mode: "manual" | "intersect";
134
138
  side: InfiniteScrollSide;
135
139
  loadMoreText: string;
@@ -156,6 +160,7 @@ declare const VInfiniteScroll: {
156
160
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
157
161
  } & {
158
162
  direction: "horizontal" | "vertical";
163
+ tag: string;
159
164
  mode: "manual" | "intersect";
160
165
  side: InfiniteScrollSide;
161
166
  loadMoreText: string;
@@ -201,6 +206,7 @@ declare const VInfiniteScroll: {
201
206
  __isSuspense?: undefined;
202
207
  } & vue.ComponentOptionsBase<{
203
208
  direction: "horizontal" | "vertical";
209
+ tag: string;
204
210
  mode: "manual" | "intersect";
205
211
  side: InfiniteScrollSide;
206
212
  loadMoreText: string;
@@ -247,11 +253,16 @@ declare const VInfiniteScroll: {
247
253
  }) => true;
248
254
  }, string, {
249
255
  direction: "horizontal" | "vertical";
256
+ tag: string;
250
257
  mode: "manual" | "intersect";
251
258
  side: InfiniteScrollSide;
252
259
  loadMoreText: string;
253
260
  emptyText: string;
254
261
  }, {}, string> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
262
+ tag: {
263
+ type: StringConstructor;
264
+ default: string;
265
+ };
255
266
  height: (StringConstructor | NumberConstructor)[];
256
267
  maxHeight: (StringConstructor | NumberConstructor)[];
257
268
  maxWidth: (StringConstructor | NumberConstructor)[];
@@ -284,6 +295,10 @@ declare const VInfiniteScroll: {
284
295
  default: string;
285
296
  };
286
297
  }, vue.ExtractPropTypes<{
298
+ tag: {
299
+ type: StringConstructor;
300
+ default: string;
301
+ };
287
302
  height: (StringConstructor | NumberConstructor)[];
288
303
  maxHeight: (StringConstructor | NumberConstructor)[];
289
304
  maxWidth: (StringConstructor | NumberConstructor)[];
@@ -9,7 +9,7 @@ import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
9
9
  import { useBackgroundColor } from "../../composables/color.mjs";
10
10
  import { useLocale } from "../../composables/locale.mjs"; // Utilities
11
11
  import { computed, toRef } from 'vue';
12
- import { genericComponent, useRender, wrapInArray } from "../../util/index.mjs"; // Types
12
+ import { genericComponent, propsFactory, useRender, wrapInArray } from "../../util/index.mjs"; // Types
13
13
  export const rootTypes = {
14
14
  actions: 'button@2',
15
15
  article: 'heading, paragraph',
@@ -84,24 +84,25 @@ function mapBones(bones) {
84
84
  // Remove spaces and return array of structures
85
85
  return bones.replace(/\s/g, '').split(',').map(genStructure);
86
86
  }
87
+ export const makeVSkeletonLoaderProps = propsFactory({
88
+ boilerplate: Boolean,
89
+ color: String,
90
+ loading: Boolean,
91
+ loadingText: {
92
+ type: String,
93
+ default: '$vuetify.loading'
94
+ },
95
+ type: {
96
+ type: [String, Array],
97
+ default: 'image'
98
+ },
99
+ ...makeDimensionProps(),
100
+ ...makeElevationProps(),
101
+ ...makeThemeProps()
102
+ }, 'v-skeleton-loader');
87
103
  export const VSkeletonLoader = genericComponent()({
88
104
  name: 'VSkeletonLoader',
89
- props: {
90
- boilerplate: Boolean,
91
- color: String,
92
- loading: Boolean,
93
- loadingText: {
94
- type: String,
95
- default: '$vuetify.loading'
96
- },
97
- type: {
98
- type: [String, Array],
99
- default: 'image'
100
- },
101
- ...makeDimensionProps(),
102
- ...makeElevationProps(),
103
- ...makeThemeProps()
104
- },
105
+ props: makeVSkeletonLoaderProps(),
105
106
  setup(props, _ref) {
106
107
  let {
107
108
  slots
@@ -1 +1 @@
1
- {"version":3,"file":"VSkeletonLoader.mjs","names":["makeDimensionProps","useDimension","makeElevationProps","useElevation","makeThemeProps","provideTheme","useBackgroundColor","useLocale","computed","toRef","genericComponent","useRender","wrapInArray","rootTypes","actions","article","avatar","button","card","chip","divider","heading","image","paragraph","sentences","subtitle","table","text","genBone","type","children","arguments","length","undefined","_createVNode","genBones","bone","split","Array","from","map","genStructure","includes","mapBones","push","bones","replace","VSkeletonLoader","name","props","boilerplate","Boolean","color","String","loading","loadingText","default","setup","_ref","slots","backgroundColorClasses","backgroundColorStyles","dimensionStyles","elevationClasses","themeClasses","t","items","join","isLoading","value"],"sources":["../../../src/labs/VSkeletonLoader/VSkeletonLoader.tsx"],"sourcesContent":["// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone<T> = T | VSkeletonBone<T>[]\n\nexport type VSkeletonBones = VSkeletonBone<VNode>\nexport type VSkeletonLoaderType = keyof typeof rootTypes\nexport type VSkeletonLoaderSlots = {\n default: []\n}\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n <div\n class={[\n 'v-skeleton-loader__bone',\n `v-skeleton-loader__${type}`,\n ]}\n >\n { children }\n </div>\n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record<string, string>)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const VSkeletonLoader = genericComponent<VSkeletonLoaderSlots>()({\n name: 'VSkeletonLoader',\n\n props: {\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<VSkeletonLoaderType | VSkeletonLoaderType[]>,\n default: 'image',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n\n return (\n <div\n class={[\n 'v-skeleton-loader',\n {\n 'v-skeleton-loader--boilerplate': props.boilerplate,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n isLoading ? dimensionStyles.value : {},\n ]}\n aria-busy={ !props.boilerplate ? isLoading : undefined }\n aria-live={ !props.boilerplate ? 'polite' : undefined }\n aria-label={ !props.boilerplate ? t(props.loadingText) : undefined }\n role={ !props.boilerplate ? 'alert' : undefined }\n >\n { isLoading ? items.value : slots.default?.() }\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType<typeof VSkeletonLoader>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSkeletonLoader.mjs","names":["makeDimensionProps","useDimension","makeElevationProps","useElevation","makeThemeProps","provideTheme","useBackgroundColor","useLocale","computed","toRef","genericComponent","propsFactory","useRender","wrapInArray","rootTypes","actions","article","avatar","button","card","chip","divider","heading","image","paragraph","sentences","subtitle","table","text","genBone","type","children","arguments","length","undefined","_createVNode","genBones","bone","split","Array","from","map","genStructure","includes","mapBones","push","bones","replace","makeVSkeletonLoaderProps","boilerplate","Boolean","color","String","loading","loadingText","default","VSkeletonLoader","name","props","setup","_ref","slots","backgroundColorClasses","backgroundColorStyles","dimensionStyles","elevationClasses","themeClasses","t","items","join","isLoading","value"],"sources":["../../../src/labs/VSkeletonLoader/VSkeletonLoader.tsx"],"sourcesContent":["// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone<T> = T | VSkeletonBone<T>[]\n\nexport type VSkeletonBones = VSkeletonBone<VNode>\nexport type VSkeletonLoaderType = keyof typeof rootTypes\nexport type VSkeletonLoaderSlots = {\n default: []\n}\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n <div\n class={[\n 'v-skeleton-loader__bone',\n `v-skeleton-loader__${type}`,\n ]}\n >\n { children }\n </div>\n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record<string, string>)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<VSkeletonLoaderType | VSkeletonLoaderType[]>,\n default: 'image',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'v-skeleton-loader')\n\nexport const VSkeletonLoader = genericComponent<VSkeletonLoaderSlots>()({\n name: 'VSkeletonLoader',\n\n props: makeVSkeletonLoaderProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n\n return (\n <div\n class={[\n 'v-skeleton-loader',\n {\n 'v-skeleton-loader--boilerplate': props.boilerplate,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n elevationClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n isLoading ? dimensionStyles.value : {},\n ]}\n aria-busy={ !props.boilerplate ? isLoading : undefined }\n aria-live={ !props.boilerplate ? 'polite' : undefined }\n aria-label={ !props.boilerplate ? t(props.loadingText) : undefined }\n role={ !props.boilerplate ? 'alert' : undefined }\n >\n { isLoading ? items.value : slots.default?.() }\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType<typeof VSkeletonLoader>\n"],"mappings":"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"}
@@ -10,12 +10,12 @@ declare const VSkeletonLoader: {
10
10
  $: vue.ComponentInternalInstance;
11
11
  $data: {};
12
12
  $props: Partial<{
13
- type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
13
+ type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
14
14
  loading: boolean;
15
15
  loadingText: string;
16
16
  boilerplate: boolean;
17
17
  }> & Omit<{
18
- type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
18
+ type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
19
19
  loading: boolean;
20
20
  loadingText: string;
21
21
  boilerplate: boolean;
@@ -53,7 +53,7 @@ declare const VSkeletonLoader: {
53
53
  $emit: (event: string, ...args: any[]) => void;
54
54
  $el: any;
55
55
  $options: vue.ComponentOptionsBase<{
56
- type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
56
+ type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
57
57
  loading: boolean;
58
58
  loadingText: string;
59
59
  boilerplate: boolean;
@@ -77,7 +77,7 @@ declare const VSkeletonLoader: {
77
77
  } & {
78
78
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
79
79
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
80
- type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
80
+ type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
81
81
  loading: boolean;
82
82
  loadingText: string;
83
83
  boilerplate: boolean;
@@ -102,7 +102,7 @@ declare const VSkeletonLoader: {
102
102
  $nextTick: typeof vue.nextTick;
103
103
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
104
104
  } & {
105
- type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
105
+ type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
106
106
  loading: boolean;
107
107
  loadingText: string;
108
108
  boilerplate: boolean;
@@ -130,7 +130,7 @@ declare const VSkeletonLoader: {
130
130
  __isTeleport?: undefined;
131
131
  __isSuspense?: undefined;
132
132
  } & vue.ComponentOptionsBase<{
133
- type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
133
+ type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
134
134
  loading: boolean;
135
135
  loadingText: string;
136
136
  boilerplate: boolean;
@@ -154,7 +154,7 @@ declare const VSkeletonLoader: {
154
154
  } & {
155
155
  "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
156
156
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
157
- type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
157
+ type: "button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[];
158
158
  loading: boolean;
159
159
  loadingText: string;
160
160
  boilerplate: boolean;
@@ -178,7 +178,7 @@ declare const VSkeletonLoader: {
178
178
  default: string;
179
179
  };
180
180
  type: {
181
- type: PropType<"button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[]>;
181
+ type: PropType<"button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[]>;
182
182
  default: string;
183
183
  };
184
184
  }, vue.ExtractPropTypes<{
@@ -201,7 +201,7 @@ declare const VSkeletonLoader: {
201
201
  default: string;
202
202
  };
203
203
  type: {
204
- type: PropType<"button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "actions" | "avatar" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[]>;
204
+ type: PropType<"button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot" | ("button" | "article" | "table" | "image" | "text" | "table-row" | "list-item" | "sentences" | "heading" | "subtitle" | "divider" | "chip" | "avatar" | "actions" | "paragraph" | "card" | "card-avatar" | "date-picker" | "date-picker-options" | "date-picker-days" | "list-item-avatar" | "list-item-two-line" | "list-item-avatar-two-line" | "list-item-three-line" | "list-item-avatar-three-line" | "table-heading" | "table-thead" | "table-tbody" | "table-row-divider" | "table-tfoot")[]>;
205
205
  default: string;
206
206
  };
207
207
  }>>;