@vuetify/nightly 3.7.3-dev.2024-10-17 → 3.7.3-dev.2024-10-29

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 (250) hide show
  1. package/dist/json/attributes.json +69 -69
  2. package/dist/json/importMap-labs.json +8 -8
  3. package/dist/json/importMap.json +122 -122
  4. package/dist/json/web-types.json +341 -341
  5. package/dist/vuetify-labs.css +3110 -3110
  6. package/dist/vuetify-labs.d.ts +2966 -13801
  7. package/dist/vuetify-labs.esm.js +10 -4
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +10 -4
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +2545 -2545
  12. package/dist/vuetify.d.ts +3010 -12194
  13. package/dist/vuetify.esm.js +10 -4
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +10 -4
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +4 -4
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAlert/VAlert.mjs +1 -1
  21. package/lib/components/VAlert/index.d.mts +8 -86
  22. package/lib/components/VApp/index.d.mts +4 -20
  23. package/lib/components/VAppBar/VAppBar.mjs +1 -1
  24. package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -1
  25. package/lib/components/VAppBar/VAppBarTitle.mjs +1 -1
  26. package/lib/components/VAppBar/index.d.mts +12 -148
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  28. package/lib/components/VAutocomplete/index.d.mts +201 -1360
  29. package/lib/components/VAvatar/index.d.mts +4 -31
  30. package/lib/components/VBadge/VBadge.mjs +1 -1
  31. package/lib/components/VBadge/index.d.mts +4 -41
  32. package/lib/components/VBanner/VBanner.mjs +1 -1
  33. package/lib/components/VBanner/index.d.mts +12 -88
  34. package/lib/components/VBottomNavigation/index.d.mts +4 -32
  35. package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -1
  36. package/lib/components/VBottomSheet/index.d.mts +4 -88
  37. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
  38. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +1 -1
  39. package/lib/components/VBreadcrumbs/index.d.mts +12 -65
  40. package/lib/components/VBtn/VBtn.mjs +1 -1
  41. package/lib/components/VBtn/index.d.mts +4 -72
  42. package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -1
  43. package/lib/components/VBtnGroup/index.d.mts +4 -28
  44. package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -1
  45. package/lib/components/VBtnToggle/index.d.mts +4 -24
  46. package/lib/components/VCard/VCard.mjs +1 -1
  47. package/lib/components/VCard/VCardItem.mjs +1 -1
  48. package/lib/components/VCard/VCardSubtitle.mjs +1 -1
  49. package/lib/components/VCard/VCardText.mjs +1 -1
  50. package/lib/components/VCard/index.d.mts +24 -190
  51. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  52. package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
  53. package/lib/components/VCarousel/index.d.mts +8 -86
  54. package/lib/components/VCheckbox/VCheckbox.mjs +1 -1
  55. package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -1
  56. package/lib/components/VCheckbox/index.d.mts +8 -90
  57. package/lib/components/VChip/VChip.mjs +1 -1
  58. package/lib/components/VChip/index.d.mts +4 -105
  59. package/lib/components/VChipGroup/VChipGroup.mjs +1 -1
  60. package/lib/components/VChipGroup/index.d.mts +4 -28
  61. package/lib/components/VCode/index.d.mts +4 -18
  62. package/lib/components/VColorPicker/VColorPicker.mjs +1 -1
  63. package/lib/components/VColorPicker/index.d.mts +4 -68
  64. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  65. package/lib/components/VCombobox/index.d.mts +201 -1360
  66. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +1 -1
  67. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +1 -1
  68. package/lib/components/VConfirmEdit/index.d.mts +6 -13
  69. package/lib/components/VCounter/VCounter.mjs +1 -1
  70. package/lib/components/VCounter/index.d.mts +9 -31
  71. package/lib/components/VDataIterator/index.d.mts +12 -56
  72. package/lib/components/VDataTable/VDataTable.mjs +1 -1
  73. package/lib/components/VDataTable/VDataTableFooter.mjs +1 -1
  74. package/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs +1 -1
  75. package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
  76. package/lib/components/VDataTable/VDataTableRow.mjs +1 -1
  77. package/lib/components/VDataTable/VDataTableRows.mjs +1 -1
  78. package/lib/components/VDataTable/VDataTableServer.mjs +1 -1
  79. package/lib/components/VDataTable/VDataTableVirtual.mjs +1 -1
  80. package/lib/components/VDataTable/index.d.mts +36 -388
  81. package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
  82. package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
  83. package/lib/components/VDatePicker/VDatePickerMonths.mjs +1 -1
  84. package/lib/components/VDatePicker/VDatePickerYears.mjs +1 -1
  85. package/lib/components/VDatePicker/index.d.mts +24 -276
  86. package/lib/components/VDefaultsProvider/index.d.mts +4 -20
  87. package/lib/components/VDialog/VDialog.mjs +1 -1
  88. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs +1 -1
  89. package/lib/components/VDialog/index.d.mts +143 -389
  90. package/lib/components/VDivider/index.d.mts +4 -24
  91. package/lib/components/VEmptyState/VEmptyState.mjs +1 -1
  92. package/lib/components/VEmptyState/index.d.mts +4 -66
  93. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +1 -1
  94. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
  95. package/lib/components/VExpansionPanel/index.d.mts +16 -152
  96. package/lib/components/VFab/VFab.mjs +1 -1
  97. package/lib/components/VFab/index.d.mts +9 -78
  98. package/lib/components/VField/VField.mjs +1 -1
  99. package/lib/components/VField/VFieldLabel.mjs +1 -1
  100. package/lib/components/VField/index.d.mts +11 -59
  101. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  102. package/lib/components/VFileInput/index.d.mts +71 -256
  103. package/lib/components/VFooter/VFooter.mjs +1 -1
  104. package/lib/components/VFooter/index.d.mts +4 -29
  105. package/lib/components/VForm/index.d.mts +267 -175
  106. package/lib/components/VGrid/VContainer.mjs +1 -1
  107. package/lib/components/VGrid/index.d.mts +16 -118
  108. package/lib/components/VHover/index.d.mts +4 -33
  109. package/lib/components/VIcon/index.d.mts +17 -75
  110. package/lib/components/VImg/VImg.mjs +1 -1
  111. package/lib/components/VImg/index.d.mts +19 -74
  112. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
  113. package/lib/components/VInfiniteScroll/index.d.mts +4 -46
  114. package/lib/components/VInput/VInput.mjs +1 -1
  115. package/lib/components/VInput/index.d.mts +4 -37
  116. package/lib/components/VItemGroup/index.d.mts +8 -65
  117. package/lib/components/VKbd/index.d.mts +4 -18
  118. package/lib/components/VLabel/index.d.mts +4 -20
  119. package/lib/components/VLayout/index.d.mts +8 -48
  120. package/lib/components/VLazy/VLazy.mjs +1 -1
  121. package/lib/components/VLazy/index.d.mts +4 -31
  122. package/lib/components/VList/VList.mjs +1 -1
  123. package/lib/components/VList/VListChildren.mjs +1 -1
  124. package/lib/components/VList/VListGroup.mjs +1 -1
  125. package/lib/components/VList/VListItem.mjs +1 -1
  126. package/lib/components/VList/VListItemAction.mjs +1 -1
  127. package/lib/components/VList/VListItemMedia.mjs +1 -1
  128. package/lib/components/VList/VListItemSubtitle.mjs +1 -1
  129. package/lib/components/VList/index.d.mts +48 -291
  130. package/lib/components/VLocaleProvider/index.d.mts +4 -21
  131. package/lib/components/VMain/index.d.mts +4 -25
  132. package/lib/components/VMenu/VMenu.mjs +1 -1
  133. package/lib/components/VMenu/index.d.mts +155 -397
  134. package/lib/components/VMessages/index.d.mts +4 -27
  135. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  136. package/lib/components/VNavigationDrawer/index.d.mts +7 -62
  137. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  138. package/lib/components/VOtpInput/index.d.mts +7 -52
  139. package/lib/components/VOverlay/VOverlay.mjs +1 -1
  140. package/lib/components/VOverlay/index.d.mts +19 -101
  141. package/lib/components/VPagination/VPagination.mjs +1 -1
  142. package/lib/components/VPagination/index.d.mts +4 -64
  143. package/lib/components/VParallax/VParallax.mjs +1 -1
  144. package/lib/components/VParallax/index.d.mts +4 -27
  145. package/lib/components/VProgressCircular/index.d.mts +4 -34
  146. package/lib/components/VProgressLinear/index.d.mts +4 -54
  147. package/lib/components/VRadio/VRadio.mjs +1 -1
  148. package/lib/components/VRadio/index.d.mts +4 -68
  149. package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -1
  150. package/lib/components/VRadioGroup/index.d.mts +4 -48
  151. package/lib/components/VRangeSlider/VRangeSlider.mjs +1 -1
  152. package/lib/components/VRangeSlider/index.d.mts +4 -107
  153. package/lib/components/VRating/VRating.mjs +1 -1
  154. package/lib/components/VRating/index.d.mts +4 -42
  155. package/lib/components/VResponsive/index.d.mts +4 -29
  156. package/lib/components/VSelect/VSelect.mjs +1 -1
  157. package/lib/components/VSelect/index.d.mts +200 -1352
  158. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -1
  159. package/lib/components/VSelectionControl/index.d.mts +10 -37
  160. package/lib/components/VSelectionControlGroup/index.d.mts +4 -26
  161. package/lib/components/VSheet/VSheet.mjs +1 -1
  162. package/lib/components/VSheet/index.d.mts +4 -32
  163. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +1 -1
  164. package/lib/components/VSkeletonLoader/index.d.mts +4 -28
  165. package/lib/components/VSlideGroup/index.d.mts +14 -70
  166. package/lib/components/VSlider/VSlider.mjs +1 -1
  167. package/lib/components/VSlider/VSliderThumb.mjs +1 -1
  168. package/lib/components/VSlider/index.d.mts +4 -106
  169. package/lib/components/VSnackbar/VSnackbar.mjs +1 -1
  170. package/lib/components/VSnackbar/index.d.mts +152 -398
  171. package/lib/components/VSparkline/VBarline.mjs +1 -2
  172. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  173. package/lib/components/VSparkline/VSparkline.mjs +1 -1
  174. package/lib/components/VSparkline/VTrendline.mjs +1 -2
  175. package/lib/components/VSparkline/VTrendline.mjs.map +1 -1
  176. package/lib/components/VSparkline/index.d.mts +4 -49
  177. package/lib/components/VSpeedDial/VSpeedDial.mjs +1 -1
  178. package/lib/components/VSpeedDial/index.d.mts +4 -85
  179. package/lib/components/VStepper/VStepper.mjs +1 -1
  180. package/lib/components/VStepper/VStepperItem.mjs +1 -1
  181. package/lib/components/VStepper/VStepperWindow.mjs +1 -1
  182. package/lib/components/VStepper/VStepperWindowItem.mjs +1 -1
  183. package/lib/components/VStepper/index.d.mts +24 -250
  184. package/lib/components/VSwitch/VSwitch.mjs +1 -1
  185. package/lib/components/VSwitch/index.d.mts +4 -59
  186. package/lib/components/VSystemBar/VSystemBar.mjs +1 -1
  187. package/lib/components/VSystemBar/index.d.mts +4 -28
  188. package/lib/components/VTable/index.d.mts +4 -33
  189. package/lib/components/VTabs/VTab.mjs +1 -1
  190. package/lib/components/VTabs/VTabs.mjs +1 -1
  191. package/lib/components/VTabs/VTabsWindow.mjs +1 -1
  192. package/lib/components/VTabs/VTabsWindowItem.mjs +1 -1
  193. package/lib/components/VTabs/index.d.mts +98 -394
  194. package/lib/components/VTextField/VTextField.mjs +1 -1
  195. package/lib/components/VTextField/index.d.mts +152 -374
  196. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  197. package/lib/components/VTextarea/index.d.mts +71 -244
  198. package/lib/components/VThemeProvider/index.d.mts +4 -20
  199. package/lib/components/VTimeline/VTimeline.mjs +1 -1
  200. package/lib/components/VTimeline/VTimelineDivider.mjs +1 -1
  201. package/lib/components/VTimeline/VTimelineItem.mjs +1 -1
  202. package/lib/components/VTimeline/index.d.mts +8 -75
  203. package/lib/components/VToolbar/VToolbar.mjs +1 -1
  204. package/lib/components/VToolbar/index.d.mts +12 -90
  205. package/lib/components/VTooltip/VTooltip.mjs +1 -1
  206. package/lib/components/VTooltip/index.d.mts +147 -386
  207. package/lib/components/VValidation/index.d.mts +10 -24
  208. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +1 -1
  209. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +1 -1
  210. package/lib/components/VVirtualScroll/index.d.mts +4 -15
  211. package/lib/components/VWindow/VWindow.mjs +1 -1
  212. package/lib/components/VWindow/VWindowItem.mjs +1 -1
  213. package/lib/components/VWindow/index.d.mts +8 -47
  214. package/lib/components/index.d.mts +2950 -12134
  215. package/lib/components/transitions/dialog-transition.mjs +1 -2
  216. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  217. package/lib/components/transitions/index.d.mts +64 -309
  218. package/lib/composables/icons.mjs +1 -1
  219. package/lib/composables/variant.mjs +1 -1
  220. package/lib/composables/virtual.mjs +1 -1
  221. package/lib/composables/virtual.mjs.map +1 -1
  222. package/lib/entry-bundler.mjs +1 -1
  223. package/lib/framework.mjs +1 -1
  224. package/lib/index.d.mts +43 -43
  225. package/lib/labs/VCalendar/VCalendar.mjs +1 -1
  226. package/lib/labs/VCalendar/VCalendarDay.mjs +1 -1
  227. package/lib/labs/VCalendar/index.d.mts +24 -211
  228. package/lib/labs/VDateInput/VDateInput.mjs +1 -1
  229. package/lib/labs/VDateInput/index.d.mts +4 -115
  230. package/lib/labs/VNumberInput/VNumberInput.mjs +1 -1
  231. package/lib/labs/VNumberInput/index.d.mts +577 -1280
  232. package/lib/labs/VPicker/VPicker.mjs +1 -1
  233. package/lib/labs/VPicker/index.d.mts +8 -63
  234. package/lib/labs/VPullToRefresh/index.d.mts +4 -35
  235. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +1 -1
  236. package/lib/labs/VSnackbarQueue/index.d.mts +156 -453
  237. package/lib/labs/VStepperVertical/VStepperVertical.mjs +1 -1
  238. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +1 -1
  239. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +1 -1
  240. package/lib/labs/VStepperVertical/index.d.mts +12 -227
  241. package/lib/labs/VTimePicker/VTimePicker.mjs +1 -1
  242. package/lib/labs/VTimePicker/VTimePickerControls.mjs +1 -1
  243. package/lib/labs/VTimePicker/index.d.mts +12 -122
  244. package/lib/labs/VTreeview/VTreeview.mjs +1 -1
  245. package/lib/labs/VTreeview/VTreeviewChildren.mjs +1 -1
  246. package/lib/labs/VTreeview/VTreeviewGroup.mjs +1 -1
  247. package/lib/labs/VTreeview/VTreeviewItem.mjs +1 -1
  248. package/lib/labs/VTreeview/index.d.mts +18 -205
  249. package/lib/labs/components.d.mts +1015 -2912
  250. package/package.json +5 -4
@@ -1,4 +1,4 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
1
+ import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  // Icons
3
3
  import { aliases, mdi } from "../iconsets/mdi.mjs"; // Utilities
4
4
  import { computed, inject, unref } from 'vue';
@@ -1,4 +1,4 @@
1
- import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
1
+ import { Fragment as _Fragment, createVNode as _createVNode } from "vue";
2
2
  // Composables
3
3
  import { useColor } from "./color.mjs"; // Utilities
4
4
  import { computed, unref } from 'vue';
@@ -202,7 +202,7 @@ export function useVirtual(props, items) {
202
202
  updateOffsets.immediate();
203
203
  calculateVisibleItems();
204
204
  }, {
205
- deep: true
205
+ deep: 1
206
206
  });
207
207
  return {
208
208
  calculateVisibleItems,
@@ -1 +1 @@
1
- {"version":3,"file":"virtual.mjs","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","Array","from","length","offsets","updateTime","targetScrollIndex","getSize","index","updateOffsets","start","performance","now","i","max","unwatch","v","offsetTop","immediate","calculateVisibleItems","window","requestAnimationFrame","scrollToIndex","clear","handleItemResize","prevHeight","prevMinHeight","min","calculateOffset","calculateIndex","scrollTop","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","val","oldVal","handleScroll","scrollTime","scrollDeltaT","sign","handleScrollend","raf","cancelAnimationFrame","_calculateVisibleItems","direction","startPx","endPx","end","topOverflow","bottomOverflow","bufferOverflow","offset","computedItems","slice","map","item","raw","deep","arr","high","low","mid","target"],"sources":["../../src/composables/virtual.ts"],"sourcesContent":["// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <T> (props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref<HTMLElement>()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref<HTMLElement>()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from<number | null>({ length: items.value.length })\n let offsets = Array.from<number>({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n return offsets[index] || 0\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value,\n }))\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: true })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"virtual.mjs","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","Array","from","length","offsets","updateTime","targetScrollIndex","getSize","index","updateOffsets","start","performance","now","i","max","unwatch","v","offsetTop","immediate","calculateVisibleItems","window","requestAnimationFrame","scrollToIndex","clear","handleItemResize","prevHeight","prevMinHeight","min","calculateOffset","calculateIndex","scrollTop","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","val","oldVal","handleScroll","scrollTime","scrollDeltaT","sign","handleScrollend","raf","cancelAnimationFrame","_calculateVisibleItems","direction","startPx","endPx","end","topOverflow","bottomOverflow","bufferOverflow","offset","computedItems","slice","map","item","raw","deep","arr","high","low","mid","target"],"sources":["../../src/composables/virtual.ts"],"sourcesContent":["// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <T> (props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref<HTMLElement>()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref<HTMLElement>()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from<number | null>({ length: items.value.length })\n let offsets = Array.from<number>({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n return offsets[index] || 0\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value,\n }))\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: 1 })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.7.3-dev.2024-10-17";
19
+ export const version = "3.7.3-dev.2024-10-29";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.3-dev.2024-10-17";
100
+ export const version = "3.7.3-dev.2024-10-29";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -29,8 +29,8 @@ interface RtlInstance {
29
29
  rtlClasses: Ref<string>;
30
30
  }
31
31
  declare function useRtl(): {
32
- isRtl: Ref<boolean>;
33
- rtlClasses: Ref<string>;
32
+ isRtl: Ref<boolean, boolean>;
33
+ rtlClasses: Ref<string, string>;
34
34
  };
35
35
 
36
36
  interface GoToInstance {
@@ -343,8 +343,8 @@ interface LayoutItem extends Layer {
343
343
  }
344
344
  declare function useLayout(): {
345
345
  getLayoutItem: (id: string) => LayoutItem | undefined;
346
- mainRect: Ref<Layer>;
347
- mainStyles: Ref<CSSProperties>;
346
+ mainRect: Ref<Layer, Layer>;
347
+ mainStyles: Ref<CSSProperties, CSSProperties>;
348
348
  };
349
349
 
350
350
  interface FieldValidationResult {
@@ -376,7 +376,7 @@ interface Blueprint extends Omit<VuetifyOptions, 'blueprint'> {
376
376
  }
377
377
  declare function createVuetify(vuetify?: VuetifyOptions): {
378
378
  install: (app: App) => void;
379
- defaults: vue.Ref<DefaultsInstance>;
379
+ defaults: vue.Ref<DefaultsInstance, DefaultsInstance>;
380
380
  display: DisplayInstance;
381
381
  theme: ThemeInstance & {
382
382
  install: (app: App) => void;
@@ -487,21 +487,21 @@ declare module 'vue' {
487
487
  }
488
488
  export interface GlobalComponents {
489
489
  VApp: typeof import('vuetify/components')['VApp']
490
+ VBanner: typeof import('vuetify/components')['VBanner']
491
+ VBannerActions: typeof import('vuetify/components')['VBannerActions']
492
+ VBannerText: typeof import('vuetify/components')['VBannerText']
490
493
  VAlert: typeof import('vuetify/components')['VAlert']
491
494
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
492
495
  VAppBar: typeof import('vuetify/components')['VAppBar']
493
496
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
494
497
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
495
498
  VAvatar: typeof import('vuetify/components')['VAvatar']
496
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
497
499
  VBadge: typeof import('vuetify/components')['VBadge']
498
500
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
499
- VBanner: typeof import('vuetify/components')['VBanner']
500
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
501
- VBannerText: typeof import('vuetify/components')['VBannerText']
502
- VBtn: typeof import('vuetify/components')['VBtn']
501
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
503
502
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
504
503
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
504
+ VBtn: typeof import('vuetify/components')['VBtn']
505
505
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
506
506
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
507
507
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
@@ -512,23 +512,22 @@ declare module 'vue' {
512
512
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
513
513
  VCardText: typeof import('vuetify/components')['VCardText']
514
514
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
515
+ VCarousel: typeof import('vuetify/components')['VCarousel']
516
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
515
517
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
516
518
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
517
- VChip: typeof import('vuetify/components')['VChip']
518
519
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
520
+ VChip: typeof import('vuetify/components')['VChip']
519
521
  VCode: typeof import('vuetify/components')['VCode']
520
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
521
- VCarousel: typeof import('vuetify/components')['VCarousel']
522
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
523
522
  VCombobox: typeof import('vuetify/components')['VCombobox']
524
- VDialog: typeof import('vuetify/components')['VDialog']
523
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
524
+ VCounter: typeof import('vuetify/components')['VCounter']
525
525
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
526
526
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
527
527
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
528
528
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
529
529
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
530
530
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
531
- VCounter: typeof import('vuetify/components')['VCounter']
532
531
  VDataTable: typeof import('vuetify/components')['VDataTable']
533
532
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
534
533
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -536,7 +535,9 @@ declare module 'vue' {
536
535
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
537
536
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
538
537
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
538
+ VDialog: typeof import('vuetify/components')['VDialog']
539
539
  VDivider: typeof import('vuetify/components')['VDivider']
540
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
540
541
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
541
542
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
542
543
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
@@ -544,21 +545,21 @@ declare module 'vue' {
544
545
  VField: typeof import('vuetify/components')['VField']
545
546
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
546
547
  VFab: typeof import('vuetify/components')['VFab']
547
- VFileInput: typeof import('vuetify/components')['VFileInput']
548
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
549
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
550
548
  VFooter: typeof import('vuetify/components')['VFooter']
549
+ VFileInput: typeof import('vuetify/components')['VFileInput']
551
550
  VIcon: typeof import('vuetify/components')['VIcon']
552
551
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
553
552
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
554
553
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
555
554
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
556
- VImg: typeof import('vuetify/components')['VImg']
557
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
558
- VItem: typeof import('vuetify/components')['VItem']
559
555
  VInput: typeof import('vuetify/components')['VInput']
556
+ VImg: typeof import('vuetify/components')['VImg']
560
557
  VKbd: typeof import('vuetify/components')['VKbd']
561
558
  VLabel: typeof import('vuetify/components')['VLabel']
559
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
560
+ VMenu: typeof import('vuetify/components')['VMenu']
561
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
562
+ VItem: typeof import('vuetify/components')['VItem']
562
563
  VList: typeof import('vuetify/components')['VList']
563
564
  VListGroup: typeof import('vuetify/components')['VListGroup']
564
565
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -568,62 +569,61 @@ declare module 'vue' {
568
569
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
569
570
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
570
571
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
571
- VMain: typeof import('vuetify/components')['VMain']
572
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
572
573
  VMessages: typeof import('vuetify/components')['VMessages']
573
574
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
575
+ VMain: typeof import('vuetify/components')['VMain']
574
576
  VPagination: typeof import('vuetify/components')['VPagination']
575
577
  VOverlay: typeof import('vuetify/components')['VOverlay']
576
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
577
- VMenu: typeof import('vuetify/components')['VMenu']
578
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
578
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
579
579
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
580
- VSelect: typeof import('vuetify/components')['VSelect']
581
580
  VRating: typeof import('vuetify/components')['VRating']
582
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
583
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
584
- VSheet: typeof import('vuetify/components')['VSheet']
585
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
581
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
582
+ VSelect: typeof import('vuetify/components')['VSelect']
586
583
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
587
584
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
585
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
586
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
587
+ VSheet: typeof import('vuetify/components')['VSheet']
588
588
  VSlider: typeof import('vuetify/components')['VSlider']
589
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
590
- VSwitch: typeof import('vuetify/components')['VSwitch']
589
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
591
590
  VStepper: typeof import('vuetify/components')['VStepper']
592
591
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
593
592
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
594
593
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
595
594
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
596
595
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
596
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
597
+ VSwitch: typeof import('vuetify/components')['VSwitch']
598
+ VTable: typeof import('vuetify/components')['VTable']
599
+ VTextarea: typeof import('vuetify/components')['VTextarea']
597
600
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
598
601
  VTab: typeof import('vuetify/components')['VTab']
599
602
  VTabs: typeof import('vuetify/components')['VTabs']
600
603
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
601
604
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
602
- VTextarea: typeof import('vuetify/components')['VTextarea']
603
- VTimeline: typeof import('vuetify/components')['VTimeline']
604
- VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
605
605
  VTextField: typeof import('vuetify/components')['VTextField']
606
606
  VToolbar: typeof import('vuetify/components')['VToolbar']
607
607
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
608
608
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
609
+ VTimeline: typeof import('vuetify/components')['VTimeline']
610
+ VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
609
611
  VTooltip: typeof import('vuetify/components')['VTooltip']
610
612
  VWindow: typeof import('vuetify/components')['VWindow']
611
613
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
612
- VTable: typeof import('vuetify/components')['VTable']
613
614
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
614
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
615
- VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
615
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
616
616
  VForm: typeof import('vuetify/components')['VForm']
617
+ VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
618
+ VHover: typeof import('vuetify/components')['VHover']
617
619
  VContainer: typeof import('vuetify/components')['VContainer']
618
620
  VCol: typeof import('vuetify/components')['VCol']
619
621
  VRow: typeof import('vuetify/components')['VRow']
620
622
  VSpacer: typeof import('vuetify/components')['VSpacer']
621
- VHover: typeof import('vuetify/components')['VHover']
622
623
  VLayout: typeof import('vuetify/components')['VLayout']
623
624
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
624
625
  VLazy: typeof import('vuetify/components')['VLazy']
625
626
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
626
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
627
627
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
628
628
  VParallax: typeof import('vuetify/components')['VParallax']
629
629
  VRadio: typeof import('vuetify/components')['VRadio']
@@ -650,8 +650,6 @@ declare module 'vue' {
650
650
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
651
651
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
652
652
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
653
- VPicker: typeof import('vuetify/labs/components')['VPicker']
654
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
655
653
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
656
654
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
657
655
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
@@ -662,6 +660,8 @@ declare module 'vue' {
662
660
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
663
661
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
664
662
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
663
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
664
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
665
665
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
666
666
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
667
667
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
@@ -1,4 +1,4 @@
1
- import { resolveDirective as _resolveDirective, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VCalendar.css";
4
4
 
@@ -1,4 +1,4 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
1
+ import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  // Styles
3
3
  import "./VCalendarDay.css";
4
4