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
@@ -1 +1 @@
1
- {"version":3,"file":"forwardRefs.mjs","names":["Refs","Symbol","getDescriptor","obj","key","currentObj","descriptor","Reflect","getOwnPropertyDescriptor","Object","getPrototypeOf","undefined","forwardRefs","target","_len","arguments","length","refs","Array","_key","Proxy","get","has","startsWith","ref","value","val","bind","_","setupState","childRefs","queue","slice","shift","push"],"sources":["../../src/composables/forwardRefs.ts"],"sourcesContent":["import type { ComponentPublicInstance, Ref, UnwrapRef } from 'vue'\nimport type { UnionToIntersection } from '@/util'\n\nconst Refs = Symbol('Forwarded refs')\n\n/** Omit properties starting with P */\ntype OmitPrefix<T, P extends string> = [Extract<keyof T, `${P}${any}`>] extends [never] ? T : Omit<T, `${P}${any}`>\n\ntype OmitProps<T> = T extends { $props: any } ? Omit<T, keyof T['$props']> : never\n\nfunction getDescriptor (obj: any, key: PropertyKey) {\n let currentObj = obj\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key)\n if (descriptor) return descriptor\n currentObj = Object.getPrototypeOf(currentObj)\n }\n return undefined\n}\n\nexport function forwardRefs<T extends {}, U extends Ref<HTMLElement | Omit<ComponentPublicInstance, '$emit'> | undefined>[]> (\n target: T,\n ...refs: U\n): T & UnionToIntersection<{ [K in keyof U]: OmitPrefix<OmitProps<NonNullable<UnwrapRef<U[K]>>>, '$'> }[number]> {\n (target as any)[Refs] = refs\n\n return new Proxy(target, {\n get (target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key)\n return typeof val === 'function'\n ? val.bind(ref.value)\n : val\n }\n }\n },\n has (target, key) {\n if (Reflect.has(target, key)) {\n return true\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true\n }\n }\n return false\n },\n getOwnPropertyDescriptor (target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key)\n if (descriptor) return descriptor\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined)\n if (descriptor) return descriptor\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (!childRefs) continue\n const queue = childRefs.slice()\n while (queue.length) {\n const ref = queue.shift()\n const descriptor = getDescriptor(ref.value, key)\n if (descriptor) return descriptor\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (childRefs) queue.push(...childRefs)\n }\n }\n\n return undefined\n },\n }) as any\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"forwardRefs.mjs","names":["Refs","Symbol","getDescriptor","obj","key","currentObj","descriptor","Reflect","getOwnPropertyDescriptor","Object","getPrototypeOf","undefined","forwardRefs","target","_len","arguments","length","refs","Array","_key","Proxy","get","has","startsWith","ref","value","val","bind","_","setupState","childRefs","queue","slice","shift","push"],"sources":["../../src/composables/forwardRefs.ts"],"sourcesContent":["import type { ComponentPublicInstance, Ref, UnwrapRef } from 'vue'\nimport type { UnionToIntersection } from '@/util'\n\nconst Refs = Symbol('Forwarded refs')\n\n/** Omit properties starting with P */\ntype OmitPrefix<T, P extends string> = [Extract<keyof T, `${P}${any}`>] extends [never] ? T : Omit<T, `${P}${any}`>\n\ntype OmitProps<T> = T extends { $props: any } ? Omit<T, keyof T['$props']> : T\n\nfunction getDescriptor (obj: any, key: PropertyKey) {\n let currentObj = obj\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key)\n if (descriptor) return descriptor\n currentObj = Object.getPrototypeOf(currentObj)\n }\n return undefined\n}\n\nexport function forwardRefs<T extends {}, U extends Ref<HTMLElement | Omit<ComponentPublicInstance, '$emit'> | undefined>[]> (\n target: T,\n ...refs: U\n): T & UnionToIntersection<{ [K in keyof U]: OmitPrefix<OmitProps<NonNullable<UnwrapRef<U[K]>>>, '$'> }[number]> {\n (target as any)[Refs] = refs\n\n return new Proxy(target, {\n get (target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key)\n return typeof val === 'function'\n ? val.bind(ref.value)\n : val\n }\n }\n },\n has (target, key) {\n if (Reflect.has(target, key)) {\n return true\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true\n }\n }\n return false\n },\n getOwnPropertyDescriptor (target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key)\n if (descriptor) return descriptor\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined)\n if (descriptor) return descriptor\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (!childRefs) continue\n const queue = childRefs.slice()\n while (queue.length) {\n const ref = queue.shift()\n const descriptor = getDescriptor(ref.value, key)\n if (descriptor) return descriptor\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (childRefs) queue.push(...childRefs)\n }\n }\n\n return undefined\n },\n }) as any\n}\n"],"mappings":"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"}
@@ -68,9 +68,9 @@ const defaultThemeOptions = {
68
68
  variables: {
69
69
  'border-color': '#FFFFFF',
70
70
  'border-opacity': 0.12,
71
- 'high-emphasis-opacity': 0.87,
72
- 'medium-emphasis-opacity': 0.60,
73
- 'disabled-opacity': 0.38,
71
+ 'high-emphasis-opacity': 1,
72
+ 'medium-emphasis-opacity': 0.70,
73
+ 'disabled-opacity': 0.50,
74
74
  'idle-opacity': 0.10,
75
75
  'hover-opacity': 0.04,
76
76
  'focus-opacity': 0.12,
@@ -1 +1 @@
1
- {"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","arguments","length","undefined","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n watch(styles, () => { entry.patch(getHead) })\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","arguments","length","undefined","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n watch(styles, () => { entry.patch(getHead) })\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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"}
@@ -62,7 +62,7 @@ export const ClickOutside = {
62
62
  });
63
63
  if (!el._clickOutside) {
64
64
  el._clickOutside = {
65
- lastMousedownWasOutside: true
65
+ lastMousedownWasOutside: false
66
66
  };
67
67
  }
68
68
  el._clickOutside[binding.instance.$.uid] = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["attachedRoot","defaultConditional","checkEvent","e","el","binding","checkIsActive","root","ShadowRoot","host","target","elements","value","include","push","some","contains","isActive","closeConditional","directive","handler","_clickOutside","lastMousedownWasOutside","setTimeout","handleShadow","callback","document","ClickOutside","mounted","onClick","onMousedown","app","addEventListener","instance","$","uid","unmounted","removeEventListener"],"sources":["../../../src/directives/click-outside/index.ts"],"sourcesContent":["import { attachedRoot } from '@/util'\nimport type { DirectiveBinding } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: MouseEvent) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirectiveBinding extends DirectiveBinding {\n value: ((e: MouseEvent) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: MouseEvent, binding: ClickOutsideDirectiveBinding): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const onClick = (e: Event) => directive(e as MouseEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as MouseEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[binding.instance!.$.uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unmounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[binding.instance!.$.uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[binding.instance!.$.uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[binding.instance!.$.uid]\n },\n}\n\nexport default ClickOutside\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["attachedRoot","defaultConditional","checkEvent","e","el","binding","checkIsActive","root","ShadowRoot","host","target","elements","value","include","push","some","contains","isActive","closeConditional","directive","handler","_clickOutside","lastMousedownWasOutside","setTimeout","handleShadow","callback","document","ClickOutside","mounted","onClick","onMousedown","app","addEventListener","instance","$","uid","unmounted","removeEventListener"],"sources":["../../../src/directives/click-outside/index.ts"],"sourcesContent":["import { attachedRoot } from '@/util'\nimport type { DirectiveBinding } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: MouseEvent) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirectiveBinding extends DirectiveBinding {\n value: ((e: MouseEvent) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: MouseEvent, binding: ClickOutsideDirectiveBinding): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const onClick = (e: Event) => directive(e as MouseEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as MouseEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false,\n }\n }\n\n el._clickOutside[binding.instance!.$.uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unmounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[binding.instance!.$.uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[binding.instance!.$.uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[binding.instance!.$.uid]\n },\n}\n\nexport default ClickOutside\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ export const createVuetify = function () {
10
10
  ...options
11
11
  });
12
12
  };
13
- export const version = "3.2.2";
13
+ export const version = "3.2.3";
14
14
  createVuetify.version = version;
15
15
  export { components, directives };
16
16
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -94,7 +94,7 @@ export function createVuetify() {
94
94
  date
95
95
  };
96
96
  }
97
- export const version = "3.2.2";
97
+ export const version = "3.2.3";
98
98
  createVuetify.version = version;
99
99
 
100
100
  // Vue's inject() can only be used in setup
package/lib/index.d.ts CHANGED
@@ -177,9 +177,7 @@ interface DateInstance extends DateAdapter<Date> {
177
177
  locale: string;
178
178
  }
179
179
  type DateOptions = {
180
- adapter: {
181
- new (locale: string): DateInstance;
182
- };
180
+ adapter: (new (locale: string) => DateInstance) | DateInstance;
183
181
  };
184
182
 
185
183
  type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
@@ -359,10 +357,10 @@ declare module '@vue/runtime-core' {
359
357
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
360
358
  VAvatar: typeof import('vuetify/components')['VAvatar']
361
359
  VBadge: typeof import('vuetify/components')['VBadge']
362
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
363
360
  VBanner: typeof import('vuetify/components')['VBanner']
364
361
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
365
362
  VBannerText: typeof import('vuetify/components')['VBannerText']
363
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
366
364
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
367
365
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
368
366
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
@@ -421,8 +419,8 @@ declare module '@vue/runtime-core' {
421
419
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
422
420
  VOverlay: typeof import('vuetify/components')['VOverlay']
423
421
  VPagination: typeof import('vuetify/components')['VPagination']
424
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
425
422
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
423
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
426
424
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
427
425
  VRating: typeof import('vuetify/components')['VRating']
428
426
  VSelect: typeof import('vuetify/components')['VSelect']
@@ -1,51 +1,47 @@
1
- import { createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
2
2
  // Styles
3
3
  import "./VDataTable.css";
4
4
 
5
5
  // Components
6
- import { VTable } from "../../components/VTable/index.mjs";
7
- import { VDataTableHeaders } from "./VDataTableHeaders.mjs";
8
- import { VDataTableRows } from "./VDataTableRows.mjs";
9
- import { VDataTableFooter } from "./VDataTableFooter.mjs"; // Composables
10
- import { makeDataTableItemProps, useDataTableItems } from "./composables/items.mjs";
11
- import { createHeaders, makeDataTableHeaderProps } from "./composables/headers.mjs";
12
- import { createSort, makeDataTableSortProps, provideSort, useSortedItems } from "./composables/sort.mjs";
6
+ import { makeVDataTableFooterProps, VDataTableFooter } from "./VDataTableFooter.mjs";
7
+ import { makeVDataTableHeadersProps, VDataTableHeaders } from "./VDataTableHeaders.mjs";
8
+ import { makeVDataTableRowsProps, VDataTableRows } from "./VDataTableRows.mjs";
9
+ import { VTable } from "../../components/VTable/index.mjs"; // Composables
13
10
  import { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
11
+ import { createHeaders, makeDataTableHeaderProps } from "./composables/headers.mjs";
14
12
  import { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from "./composables/paginate.mjs";
15
- import { makeDataTableSelectProps, provideSelection } from "./composables/select.mjs";
13
+ import { createSort, makeDataTableSortProps, provideSort, useSortedItems } from "./composables/sort.mjs";
16
14
  import { makeDataTableExpandProps, provideExpanded } from "./composables/expand.mjs";
17
- import { useOptions } from "./composables/options.mjs";
18
- import { provideDefaults } from "../../composables/defaults.mjs"; // Utilities
15
+ import { makeDataTableItemProps, useDataTableItems } from "./composables/items.mjs";
16
+ import { makeDataTableSelectProps, provideSelection } from "./composables/select.mjs";
17
+ import { makeFilterProps, useFilter } from "../../composables/filter.mjs";
18
+ import { makeVTableProps } from "../../components/VTable/VTable.mjs";
19
+ import { provideDefaults } from "../../composables/defaults.mjs";
20
+ import { useOptions } from "./composables/options.mjs"; // Utilities
19
21
  import { computed, toRef } from 'vue';
20
- import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
21
- import { makeFilterProps, useFilter } from "../../composables/filter.mjs"; // Types
22
- export const makeVDataTableProps = propsFactory({
23
- ...makeDataTableItemProps(),
24
- ...makeDataTableHeaderProps(),
25
- hideNoData: Boolean,
26
- hover: Boolean,
27
- noDataText: {
28
- type: String,
29
- default: '$vuetify.noDataText'
30
- },
31
- height: [String, Number],
22
+ import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
23
+ export const makeDataTableProps = propsFactory({
24
+ ...makeVDataTableRowsProps(),
32
25
  width: [String, Number],
33
- fixedHeader: Boolean,
34
- fixedFooter: Boolean,
35
- 'onClick:row': Function,
36
- search: String
26
+ search: String,
27
+ ...makeDataTableExpandProps(),
28
+ ...makeDataTableGroupProps(),
29
+ ...makeDataTableHeaderProps(),
30
+ ...makeDataTableItemProps(),
31
+ ...makeDataTableSelectProps(),
32
+ ...makeDataTableSortProps(),
33
+ ...makeVDataTableHeadersProps(),
34
+ ...makeVTableProps()
35
+ }, 'data-table');
36
+ export const makeVDataTableProps = propsFactory({
37
+ ...makeDataTablePaginateProps(),
38
+ ...makeDataTableProps(),
39
+ ...makeFilterProps(),
40
+ ...makeVDataTableFooterProps()
37
41
  }, 'v-data-table');
38
42
  export const VDataTable = genericComponent()({
39
43
  name: 'VDataTable',
40
- props: {
41
- ...makeVDataTableProps(),
42
- ...makeDataTableExpandProps(),
43
- ...makeDataTableGroupProps(),
44
- ...makeDataTableSelectProps(),
45
- ...makeDataTableSortProps(),
46
- ...makeDataTablePaginateProps(),
47
- ...makeFilterProps()
48
- },
44
+ props: makeVDataTableProps(),
49
45
  emits: {
50
46
  'update:modelValue': value => true,
51
47
  'update:page': value => true,
@@ -142,29 +138,27 @@ export const VDataTable = genericComponent()({
142
138
  noDataText: toRef(props, 'noDataText')
143
139
  }
144
140
  });
145
- useRender(() => _createVNode(VTable, {
146
- "class": ['v-data-table', {
147
- 'v-data-table--show-select': props.showSelect
148
- }],
149
- "fixedHeader": props.fixedHeader,
150
- "fixedFooter": props.fixedFooter,
151
- "height": props.height,
152
- "hover": props.hover
153
- }, {
154
- top: slots.top,
155
- default: slots.default ?? (() => _createVNode(_Fragment, null, [slots.colgroup?.({
156
- columns
157
- }), _createVNode("thead", null, [_createVNode(VDataTableHeaders, {
158
- "sticky": props.fixedHeader,
159
- "multiSort": props.multiSort
160
- }, slots)]), slots.thead?.(), _createVNode("tbody", null, [slots.body ? slots.body() : _createVNode(VDataTableRows, {
161
- "items": paginatedItems.value,
162
- "onClick:row": props['onClick:row']
163
- }, slots)]), slots.tbody?.(), slots.tfoot?.()])),
164
- bottom: slots.bottom ?? (() => _createVNode(VDataTableFooter, null, {
165
- prepend: slots['footer.prepend']
166
- }))
167
- }));
141
+ useRender(() => {
142
+ const [dataTableFooterProps] = VDataTableFooter.filterProps(props);
143
+ const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props);
144
+ const [dataTableRowsProps] = VDataTableRows.filterProps(props);
145
+ const [tableProps] = VTable.filterProps(props);
146
+ return _createVNode(VTable, _mergeProps({
147
+ "class": ['v-data-table', {
148
+ 'v-data-table--show-select': props.showSelect
149
+ }]
150
+ }, tableProps), {
151
+ top: slots.top,
152
+ default: slots.default ?? (() => _createVNode(_Fragment, null, [slots.colgroup?.({
153
+ columns
154
+ }), _createVNode("thead", null, [_createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(), _createVNode("tbody", null, [slots.body ? slots.body() : _createVNode(VDataTableRows, _mergeProps(dataTableRowsProps, {
155
+ "items": paginatedItems.value
156
+ }), slots)]), slots.tbody?.(), slots.tfoot?.()])),
157
+ bottom: slots.bottom ?? (() => _createVNode(VDataTableFooter, dataTableFooterProps, {
158
+ prepend: slots['footer.prepend']
159
+ }))
160
+ });
161
+ });
168
162
  return {};
169
163
  }
170
164
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VDataTable.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","VDataTableFooter","makeDataTableItemProps","useDataTableItems","createHeaders","makeDataTableHeaderProps","createSort","makeDataTableSortProps","provideSort","useSortedItems","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","makeDataTableSelectProps","provideSelection","makeDataTableExpandProps","provideExpanded","useOptions","provideDefaults","computed","toRef","genericComponent","propsFactory","useRender","makeFilterProps","useFilter","makeVDataTableProps","hideNoData","Boolean","hover","noDataText","type","String","default","height","Number","width","fixedHeader","fixedFooter","Function","search","VDataTable","name","props","emits","value","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","page","itemsPerPage","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortByWithGroups","opened","extractRows","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","paginatedItems","paginatedItemsWithoutGroups","_createVNode","top","_Fragment","colgroup","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDataTableFooter } from './VDataTableFooter'\n\n// Composables\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from './composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { useOptions } from './composables/options'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem, InternalDataTableHeader } from './types'\n\nexport type VDataTableSlots = VDataTableRowsSlots & {\n colgroup: [InternalDataTableHeader]\n default: []\n top: []\n headers: []\n body: []\n tbody: []\n thead: []\n tfoot: []\n bottom: []\n 'footer.prepend': []\n}\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTableItemProps(),\n ...makeDataTableHeaderProps(),\n hideNoData: Boolean,\n hover: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n height: [String, Number],\n width: [String, Number],\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n 'onClick:row': Function as PropType<(e: Event, value: { item: DataTableItem }) => void>,\n search: String,\n}, 'v-data-table')\n\nexport const VDataTable = genericComponent<VDataTableSlots>()({\n name: 'VDataTable',\n\n props: {\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeFilterProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { filterKeys })\n\n provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n const itemsLength = computed(() => flatItems.value.length)\n\n const { startIndex, stopIndex } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n provideSelection(props, paginatedItemsWithoutGroups)\n\n provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--show-select': props.showSelect,\n },\n ]}\n fixedHeader={ props.fixedHeader }\n fixedFooter={ props.fixedFooter }\n height={ props.height }\n hover={ props.hover }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead>\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.() }\n <tbody>\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ paginatedItems.value }\n onClick:row={ props['onClick:row'] }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n ))\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDataTable.mjs","names":["makeVDataTableFooterProps","VDataTableFooter","makeVDataTableHeadersProps","VDataTableHeaders","makeVDataTableRowsProps","VDataTableRows","VTable","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","makeDataTableHeaderProps","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","createSort","makeDataTableSortProps","provideSort","useSortedItems","makeDataTableExpandProps","provideExpanded","makeDataTableItemProps","useDataTableItems","makeDataTableSelectProps","provideSelection","makeFilterProps","useFilter","makeVTableProps","provideDefaults","useOptions","computed","toRef","genericComponent","propsFactory","useRender","makeDataTableProps","width","String","Number","search","makeVDataTableProps","VDataTable","name","props","emits","value","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","page","itemsPerPage","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortByWithGroups","opened","extractRows","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","paginatedItems","paginatedItemsWithoutGroups","hideNoData","noDataText","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","top","default","_Fragment","colgroup","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from './VDataTableHeaders'\nimport { makeVDataTableRowsProps, VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from './composables/paginate'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVTableProps } from '@/components/VTable/VTable'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useOptions } from './composables/options'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem, InternalDataTableHeader } from './types'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\nexport type VDataTableSlots = VDataTableRowsSlots & {\n colgroup: [InternalDataTableHeader]\n default: []\n top: []\n headers: []\n body: []\n tbody: []\n thead: []\n tfoot: []\n bottom: []\n 'footer.prepend': []\n}\n\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n\n width: [String, Number],\n search: String,\n\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps(),\n}, 'data-table')\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps(),\n}, 'v-data-table')\n\nexport const VDataTable = genericComponent<VDataTableSlots>()({\n name: 'VDataTable',\n\n props: makeVDataTableProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { filterKeys })\n\n provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n const itemsLength = computed(() => flatItems.value.length)\n\n const { startIndex, stopIndex } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n provideSelection(props, paginatedItemsWithoutGroups)\n\n provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => {\n const [dataTableFooterProps] = VDataTableFooter.filterProps(props)\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--show-select': props.showSelect,\n },\n ]}\n { ...tableProps }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.() }\n <tbody>\n { slots.body ? slots.body() : (\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ paginatedItems.value }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n { ...dataTableFooterProps }\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n )\n })\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
@@ -8,71 +8,72 @@ import { VSelect } from "../../components/VSelect/index.mjs"; // Composables
8
8
  import { useLocale } from "../../composables/locale.mjs";
9
9
  import { usePagination } from "./composables/paginate.mjs"; // Utilities
10
10
  import { computed } from 'vue';
11
- import { genericComponent } from "../../util/index.mjs"; // Types
11
+ import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
12
+ export const makeVDataTableFooterProps = propsFactory({
13
+ prevIcon: {
14
+ type: String,
15
+ default: '$prev'
16
+ },
17
+ nextIcon: {
18
+ type: String,
19
+ default: '$next'
20
+ },
21
+ firstIcon: {
22
+ type: String,
23
+ default: '$first'
24
+ },
25
+ lastIcon: {
26
+ type: String,
27
+ default: '$last'
28
+ },
29
+ itemsPerPageText: {
30
+ type: String,
31
+ default: '$vuetify.dataFooter.itemsPerPageText'
32
+ },
33
+ pageText: {
34
+ type: String,
35
+ default: '$vuetify.dataFooter.pageText'
36
+ },
37
+ firstPageLabel: {
38
+ type: String,
39
+ default: '$vuetify.dataFooter.firstPage'
40
+ },
41
+ prevPageLabel: {
42
+ type: String,
43
+ default: '$vuetify.dataFooter.prevPage'
44
+ },
45
+ nextPageLabel: {
46
+ type: String,
47
+ default: '$vuetify.dataFooter.nextPage'
48
+ },
49
+ lastPageLabel: {
50
+ type: String,
51
+ default: '$vuetify.dataFooter.lastPage'
52
+ },
53
+ itemsPerPageOptions: {
54
+ type: Array,
55
+ default: () => [{
56
+ value: 10,
57
+ title: '10'
58
+ }, {
59
+ value: 25,
60
+ title: '25'
61
+ }, {
62
+ value: 50,
63
+ title: '50'
64
+ }, {
65
+ value: 100,
66
+ title: '100'
67
+ }, {
68
+ value: -1,
69
+ title: '$vuetify.dataFooter.itemsPerPageAll'
70
+ }]
71
+ },
72
+ showCurrentPage: Boolean
73
+ }, 'v-data-table-footer');
12
74
  export const VDataTableFooter = genericComponent()({
13
75
  name: 'VDataTableFooter',
14
- props: {
15
- prevIcon: {
16
- type: String,
17
- default: '$prev'
18
- },
19
- nextIcon: {
20
- type: String,
21
- default: '$next'
22
- },
23
- firstIcon: {
24
- type: String,
25
- default: '$first'
26
- },
27
- lastIcon: {
28
- type: String,
29
- default: '$last'
30
- },
31
- itemsPerPageText: {
32
- type: String,
33
- default: '$vuetify.dataFooter.itemsPerPageText'
34
- },
35
- pageText: {
36
- type: String,
37
- default: '$vuetify.dataFooter.pageText'
38
- },
39
- firstPageLabel: {
40
- type: String,
41
- default: '$vuetify.dataFooter.firstPage'
42
- },
43
- prevPageLabel: {
44
- type: String,
45
- default: '$vuetify.dataFooter.prevPage'
46
- },
47
- nextPageLabel: {
48
- type: String,
49
- default: '$vuetify.dataFooter.nextPage'
50
- },
51
- lastPageLabel: {
52
- type: String,
53
- default: '$vuetify.dataFooter.lastPage'
54
- },
55
- itemsPerPageOptions: {
56
- type: Array,
57
- default: () => [{
58
- value: 10,
59
- title: '10'
60
- }, {
61
- value: 25,
62
- title: '25'
63
- }, {
64
- value: 50,
65
- title: '50'
66
- }, {
67
- value: 100,
68
- title: '100'
69
- }, {
70
- value: -1,
71
- title: '$vuetify.dataFooter.itemsPerPageAll'
72
- }]
73
- },
74
- showCurrentPage: Boolean
75
- },
76
+ props: makeVDataTableFooterProps(),
76
77
  setup(props, _ref) {
77
78
  let {
78
79
  slots