@vuetify/nightly 3.0.0-beta.4 → 3.0.0-beta.9

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 (433) hide show
  1. package/CHANGELOG.md +10 -24
  2. package/dist/json/attributes.json +187 -203
  3. package/dist/json/importMap.json +99 -147
  4. package/dist/json/tags.json +49 -102
  5. package/dist/json/web-types.json +761 -949
  6. package/dist/vuetify.css +13059 -13058
  7. package/dist/vuetify.d.ts +1663 -5104
  8. package/dist/vuetify.esm.js +8655 -7971
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +8654 -7969
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +3 -3
  13. package/dist/vuetify.min.js +1115 -1077
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/blueprints/index.mjs +4 -0
  16. package/lib/blueprints/index.mjs.map +1 -0
  17. package/lib/blueprints/md1.mjs +63 -0
  18. package/lib/blueprints/md1.mjs.map +1 -0
  19. package/lib/blueprints/md2.mjs +60 -0
  20. package/lib/blueprints/md2.mjs.map +1 -0
  21. package/lib/blueprints/md3.mjs +74 -0
  22. package/lib/blueprints/md3.mjs.map +1 -0
  23. package/lib/components/VAlert/VAlert.css +0 -3
  24. package/lib/components/VAlert/VAlert.mjs +27 -11
  25. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  26. package/lib/components/VAlert/VAlert.sass +0 -3
  27. package/lib/components/VApp/VApp.css +2 -5
  28. package/lib/components/VApp/VApp.mjs +3 -4
  29. package/lib/components/VApp/VApp.mjs.map +1 -1
  30. package/lib/components/VApp/VApp.sass +11 -12
  31. package/lib/components/VApp/variables.scss +6 -0
  32. package/lib/components/VAppBar/VAppBar.mjs +4 -3
  33. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  34. package/lib/components/VAppBar/VAppBarNavIcon.mjs +7 -12
  35. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  36. package/lib/components/VAppBar/VAppBarTitle.mjs +4 -3
  37. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  38. package/lib/components/VAppBar/_variables.scss +2 -0
  39. package/lib/components/VAutocomplete/VAutocomplete.css +10 -0
  40. package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -8
  41. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  42. package/lib/components/VAutocomplete/VAutocomplete.sass +10 -0
  43. package/lib/components/VAutocomplete/_variables.scss +1 -0
  44. package/lib/components/VAvatar/VAvatar.css +2 -0
  45. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  46. package/lib/components/VAvatar/VAvatar.sass +3 -0
  47. package/lib/components/VBadge/VBadge.mjs +8 -7
  48. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  49. package/lib/components/VBadge/_variables.scss +2 -2
  50. package/lib/components/VBanner/VBanner.css +7 -7
  51. package/lib/components/VBanner/VBanner.mjs +24 -17
  52. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  53. package/lib/components/VBanner/VBanner.sass +6 -7
  54. package/lib/components/VBanner/VBannerActions.mjs +1 -1
  55. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  56. package/lib/components/VBanner/index.mjs +0 -2
  57. package/lib/components/VBanner/index.mjs.map +1 -1
  58. package/lib/components/VBottomNavigation/VBottomNavigation.css +4 -11
  59. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -3
  60. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  61. package/lib/components/VBottomNavigation/VBottomNavigation.sass +5 -12
  62. package/lib/components/VBottomNavigation/_variables.scss +7 -8
  63. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +13 -6
  64. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +30 -19
  65. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  66. package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +8 -3
  67. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +5 -8
  68. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  69. package/lib/components/VBreadcrumbs/_variables.scss +2 -1
  70. package/lib/components/VBtn/VBtn.css +77 -13
  71. package/lib/components/VBtn/VBtn.mjs +63 -29
  72. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  73. package/lib/components/VBtn/VBtn.sass +86 -14
  74. package/lib/components/VBtn/_variables.scss +8 -1
  75. package/lib/components/VBtnGroup/VBtnGroup.css +1 -0
  76. package/lib/components/VBtnGroup/_variables.scss +2 -0
  77. package/lib/components/VBtnToggle/_variables.scss +1 -0
  78. package/lib/components/VCard/VCard.css +81 -64
  79. package/lib/components/VCard/VCard.mjs +62 -71
  80. package/lib/components/VCard/VCard.mjs.map +1 -1
  81. package/lib/components/VCard/VCard.sass +74 -61
  82. package/lib/components/VCard/VCardActions.mjs +1 -1
  83. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  84. package/lib/components/VCard/VCardItem.mjs +88 -0
  85. package/lib/components/VCard/VCardItem.mjs.map +1 -0
  86. package/lib/components/VCard/_variables.scss +40 -24
  87. package/lib/components/VCard/index.mjs +1 -5
  88. package/lib/components/VCard/index.mjs.map +1 -1
  89. package/lib/components/VCarousel/VCarousel.mjs +5 -4
  90. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  91. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  92. package/lib/components/VCarousel/_variables.scss +1 -0
  93. package/lib/components/VChip/VChip.css +137 -60
  94. package/lib/components/VChip/VChip.mjs +76 -37
  95. package/lib/components/VChip/VChip.mjs.map +1 -1
  96. package/lib/components/VChip/VChip.sass +6 -0
  97. package/lib/components/VChip/_mixins.scss +26 -6
  98. package/lib/components/VChip/_variables.scss +1 -5
  99. package/lib/components/VChipGroup/VChipGroup.mjs +4 -3
  100. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  101. package/lib/components/VChipGroup/VChipGroup.sass +1 -1
  102. package/lib/components/VChipGroup/_variables.scss +1 -1
  103. package/lib/components/VColorPicker/VColorPicker.mjs +16 -10
  104. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  105. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -4
  106. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  107. package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -3
  108. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  109. package/lib/components/VColorPicker/VColorPickerPreview.mjs +4 -3
  110. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  111. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +6 -5
  112. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  113. package/lib/components/VColorPicker/_variables.scss +17 -10
  114. package/lib/components/VCombobox/VCombobox.css +10 -0
  115. package/lib/components/VCombobox/VCombobox.mjs +15 -17
  116. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  117. package/lib/components/VCombobox/VCombobox.sass +10 -0
  118. package/lib/components/VCombobox/_variables.scss +1 -0
  119. package/lib/components/VCounter/VCounter.mjs +16 -16
  120. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  121. package/lib/components/VCounter/VCounter.sass +1 -1
  122. package/lib/components/VCounter/_variables.scss +2 -1
  123. package/lib/components/VDialog/VDialog.css +2 -5
  124. package/lib/components/VDialog/VDialog.mjs +26 -26
  125. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  126. package/lib/components/VDialog/VDialog.sass +1 -4
  127. package/lib/components/VDialog/_variables.scss +0 -1
  128. package/lib/components/VDivider/VDivider.mjs +16 -17
  129. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  130. package/lib/components/VDivider/_variables.scss +3 -1
  131. package/lib/components/VExpansionPanel/VExpansionPanel.css +1 -0
  132. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +9 -4
  133. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  134. package/lib/components/VExpansionPanel/VExpansionPanel.sass +1 -0
  135. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +7 -7
  136. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  137. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  138. package/lib/components/VExpansionPanel/_variables.scss +15 -10
  139. package/lib/components/VField/VField.css +43 -24
  140. package/lib/components/VField/VField.mjs +18 -11
  141. package/lib/components/VField/VField.mjs.map +1 -1
  142. package/lib/components/VField/VField.sass +32 -18
  143. package/lib/components/VField/VFieldLabel.mjs +8 -9
  144. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  145. package/lib/components/VField/_variables.scss +3 -2
  146. package/lib/components/VFileInput/VFileInput.css +3 -3
  147. package/lib/components/VFileInput/VFileInput.mjs +14 -9
  148. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  149. package/lib/components/VFileInput/VFileInput.sass +3 -3
  150. package/lib/components/VFooter/VFooter.mjs +4 -3
  151. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  152. package/lib/components/VFooter/_variables.scss +2 -1
  153. package/lib/components/VForm/VForm.mjs +4 -4
  154. package/lib/components/VForm/VForm.mjs.map +1 -1
  155. package/lib/components/VGrid/VCol.mjs +2 -1
  156. package/lib/components/VGrid/VCol.mjs.map +1 -1
  157. package/lib/components/VGrid/VContainer.mjs +4 -3
  158. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  159. package/lib/components/VGrid/VRow.mjs +8 -3
  160. package/lib/components/VGrid/VRow.mjs.map +1 -1
  161. package/lib/components/VIcon/VIcon.css +0 -18
  162. package/lib/components/VIcon/VIcon.mjs +20 -21
  163. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  164. package/lib/components/VIcon/VIcon.sass +0 -18
  165. package/lib/components/VIcon/_variables.scss +2 -6
  166. package/lib/components/VIcon/index.mjs.map +1 -1
  167. package/lib/components/VImg/VImg.mjs +1 -0
  168. package/lib/components/VImg/VImg.mjs.map +1 -1
  169. package/lib/components/VInput/VInput.css +2 -1
  170. package/lib/components/VInput/VInput.mjs +10 -6
  171. package/lib/components/VInput/VInput.mjs.map +1 -1
  172. package/lib/components/VInput/VInput.sass +2 -1
  173. package/lib/components/VInput/_variables.scss +0 -1
  174. package/lib/components/VItemGroup/VItem.mjs +3 -0
  175. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  176. package/lib/components/VLabel/VLabel.mjs +4 -3
  177. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  178. package/lib/components/VLabel/_variables.scss +1 -0
  179. package/lib/components/VLayout/VLayout.css +0 -2
  180. package/lib/components/VLayout/VLayout.sass +0 -2
  181. package/lib/components/VLazy/VLazy.mjs +5 -3
  182. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  183. package/lib/components/VList/VList.css +6 -3
  184. package/lib/components/VList/VList.mjs +15 -17
  185. package/lib/components/VList/VList.mjs.map +1 -1
  186. package/lib/components/VList/VList.sass +6 -2
  187. package/lib/components/VList/VListChildren.mjs +25 -7
  188. package/lib/components/VList/VListChildren.mjs.map +1 -1
  189. package/lib/components/VList/VListGroup.mjs +47 -42
  190. package/lib/components/VList/VListGroup.mjs.map +1 -1
  191. package/lib/components/VList/VListItem.css +78 -52
  192. package/lib/components/VList/VListItem.mjs +94 -54
  193. package/lib/components/VList/VListItem.mjs.map +1 -1
  194. package/lib/components/VList/VListItem.sass +67 -38
  195. package/lib/components/VList/VListItemAction.mjs +8 -9
  196. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  197. package/lib/components/VList/VListItemMedia.mjs +4 -3
  198. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  199. package/lib/components/VList/VListSubheader.mjs +4 -3
  200. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  201. package/lib/components/VList/_variables.scss +12 -5
  202. package/lib/components/VList/index.mjs +2 -5
  203. package/lib/components/VList/index.mjs.map +1 -1
  204. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -3
  205. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  206. package/lib/components/VMain/VMain.css +21 -3
  207. package/lib/components/VMain/VMain.mjs +17 -11
  208. package/lib/components/VMain/VMain.mjs.map +1 -1
  209. package/lib/components/VMain/VMain.sass +18 -3
  210. package/lib/components/VMain/_variables.scss +1 -1
  211. package/lib/components/VMenu/VMenu.mjs +6 -6
  212. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  213. package/lib/components/VMessages/VMessages.mjs +5 -3
  214. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  215. package/lib/components/VMessages/_variables.scss +1 -1
  216. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +12 -17
  217. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +54 -19
  218. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  219. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +15 -20
  220. package/lib/components/VNavigationDrawer/_variables.scss +3 -2
  221. package/lib/components/VNavigationDrawer/sticky.mjs +72 -0
  222. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -0
  223. package/lib/components/VNavigationDrawer/touch.mjs +5 -2
  224. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  225. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  226. package/lib/components/VOverlay/VOverlay.mjs +18 -14
  227. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  228. package/lib/components/VOverlay/_variables.scss +1 -1
  229. package/lib/components/VOverlay/locationStrategies.mjs +267 -78
  230. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  231. package/lib/components/VOverlay/useActivator.mjs +5 -4
  232. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  233. package/lib/components/VOverlay/util/point.mjs +3 -3
  234. package/lib/components/VOverlay/util/point.mjs.map +1 -1
  235. package/lib/components/VPagination/VPagination.mjs +42 -24
  236. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  237. package/lib/components/VParallax/VParallax.mjs +5 -5
  238. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  239. package/lib/components/VProgressCircular/VProgressCircular.mjs +6 -5
  240. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  241. package/lib/components/VProgressCircular/_variables.scss +2 -0
  242. package/lib/components/VProgressLinear/VProgressLinear.mjs +5 -3
  243. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  244. package/lib/components/VProgressLinear/_variables.scss +1 -0
  245. package/lib/components/VRadio/VRadio.mjs +8 -17
  246. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  247. package/lib/components/VRadioGroup/VRadioGroup.mjs +22 -5
  248. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  249. package/lib/components/VRadioGroup/VRadioGroup.sass +5 -3
  250. package/lib/components/VRadioGroup/_variables.scss +3 -4
  251. package/lib/components/VRangeSlider/VRangeSlider.mjs +12 -13
  252. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  253. package/lib/components/VRating/VRating.mjs +6 -5
  254. package/lib/components/VRating/VRating.mjs.map +1 -1
  255. package/lib/components/VRating/VRating.sass +2 -0
  256. package/lib/components/VResponsive/VResponsive.mjs +7 -6
  257. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  258. package/lib/components/VSelect/VSelect.css +10 -0
  259. package/lib/components/VSelect/VSelect.mjs +14 -11
  260. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  261. package/lib/components/VSelect/VSelect.sass +10 -0
  262. package/lib/components/VSelect/_variables.scss +1 -0
  263. package/lib/components/VSelectionControl/VSelectionControl.mjs +15 -9
  264. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  265. package/lib/components/VSelectionControl/_variables.scss +1 -0
  266. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +3 -3
  267. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  268. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +1 -5
  269. package/lib/components/VSelectionControlGroup/_variables.scss +1 -4
  270. package/lib/components/VSheet/VSheet.mjs +3 -3
  271. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  272. package/lib/components/VSheet/_variables.scss +3 -2
  273. package/lib/components/VSlideGroup/VSlideGroup.mjs +47 -49
  274. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  275. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +7 -3
  276. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  277. package/lib/components/VSlideGroup/_variables.scss +0 -5
  278. package/lib/components/VSlideGroup/index.mjs +2 -2
  279. package/lib/components/VSlideGroup/index.mjs.map +1 -1
  280. package/lib/components/VSlider/VSlider.mjs +7 -9
  281. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  282. package/lib/components/VSlider/VSliderThumb.mjs +6 -5
  283. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  284. package/lib/components/VSlider/VSliderTrack.mjs +11 -10
  285. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  286. package/lib/components/VSlider/slider.mjs +4 -4
  287. package/lib/components/VSlider/slider.mjs.map +1 -1
  288. package/lib/components/VSnackbar/VSnackbar.css +1 -1
  289. package/lib/components/VSnackbar/VSnackbar.mjs +50 -50
  290. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  291. package/lib/components/VSnackbar/_variables.scss +3 -3
  292. package/lib/components/VSwitch/VSwitch.css +7 -0
  293. package/lib/components/VSwitch/VSwitch.sass +6 -0
  294. package/lib/components/VSwitch/_variables.scss +1 -0
  295. package/lib/components/VSystemBar/VSystemBar.mjs +5 -13
  296. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  297. package/lib/components/VSystemBar/_variables.scss +2 -1
  298. package/lib/components/VTable/VTable.css +1 -0
  299. package/lib/components/VTable/VTable.mjs +9 -8
  300. package/lib/components/VTable/VTable.mjs.map +1 -1
  301. package/lib/components/VTable/VTable.sass +1 -0
  302. package/lib/components/VTable/_variables.scss +2 -0
  303. package/lib/components/VTabs/VTab.css +3 -2
  304. package/lib/components/VTabs/VTab.mjs +4 -4
  305. package/lib/components/VTabs/VTab.mjs.map +1 -1
  306. package/lib/components/VTabs/VTab.sass +4 -2
  307. package/lib/components/VTabs/VTabs.mjs +15 -12
  308. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  309. package/lib/components/VTabs/_variables.scss +3 -1
  310. package/lib/components/VTextField/VTextField.css +2 -1
  311. package/lib/components/VTextField/VTextField.mjs +31 -23
  312. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  313. package/lib/components/VTextField/VTextField.sass +2 -1
  314. package/lib/components/VTextField/_variables.scss +1 -1
  315. package/lib/components/VTextarea/VTextarea.css +6 -2
  316. package/lib/components/VTextarea/VTextarea.mjs +39 -22
  317. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  318. package/lib/components/VTextarea/VTextarea.sass +9 -2
  319. package/lib/components/VTextarea/_variables.scss +1 -1
  320. package/lib/components/VTimeline/VTimeline.css +123 -112
  321. package/lib/components/VTimeline/VTimeline.mjs +24 -25
  322. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  323. package/lib/components/VTimeline/VTimeline.sass +132 -113
  324. package/lib/components/VTimeline/VTimelineDivider.mjs +44 -38
  325. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  326. package/lib/components/VTimeline/VTimelineItem.mjs +13 -12
  327. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  328. package/lib/components/VTimeline/_variables.scss +11 -6
  329. package/lib/components/VToolbar/VToolbar.css +17 -32
  330. package/lib/components/VToolbar/VToolbar.mjs +12 -13
  331. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  332. package/lib/components/VToolbar/VToolbar.sass +17 -18
  333. package/lib/components/VToolbar/VToolbarItems.mjs +12 -8
  334. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  335. package/lib/components/VToolbar/_variables.scss +7 -7
  336. package/lib/components/VTooltip/VTooltip.mjs +41 -39
  337. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  338. package/lib/components/VTooltip/_variables.scss +1 -0
  339. package/lib/components/VWindow/VWindow.mjs +4 -4
  340. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  341. package/lib/components/VWindow/VWindowItem.mjs +13 -9
  342. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  343. package/lib/components/VWindow/_variables.scss +1 -0
  344. package/lib/components/index.d.ts +1653 -5068
  345. package/lib/components/transitions/dialog-transition.mjs +3 -0
  346. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  347. package/lib/components/transitions/index.mjs +0 -5
  348. package/lib/components/transitions/index.mjs.map +1 -1
  349. package/lib/composables/border.mjs +5 -6
  350. package/lib/composables/border.mjs.map +1 -1
  351. package/lib/composables/color.mjs +19 -26
  352. package/lib/composables/color.mjs.map +1 -1
  353. package/lib/composables/defaults.mjs +1 -1
  354. package/lib/composables/defaults.mjs.map +1 -1
  355. package/lib/composables/form.mjs +29 -9
  356. package/lib/composables/form.mjs.map +1 -1
  357. package/lib/composables/{forwardRef.mjs → forwardRefs.mjs} +29 -3
  358. package/lib/composables/forwardRefs.mjs.map +1 -0
  359. package/lib/composables/group.mjs.map +1 -1
  360. package/lib/composables/index.mjs +3 -2
  361. package/lib/composables/index.mjs.map +1 -1
  362. package/lib/composables/layout.mjs +12 -12
  363. package/lib/composables/layout.mjs.map +1 -1
  364. package/lib/composables/location.mjs +4 -8
  365. package/lib/composables/location.mjs.map +1 -1
  366. package/lib/composables/proxiedModel.mjs +2 -1
  367. package/lib/composables/proxiedModel.mjs.map +1 -1
  368. package/lib/composables/rtl.mjs +2 -2
  369. package/lib/composables/rtl.mjs.map +1 -1
  370. package/lib/composables/size.mjs +18 -14
  371. package/lib/composables/size.mjs.map +1 -1
  372. package/lib/composables/stack.mjs +22 -12
  373. package/lib/composables/stack.mjs.map +1 -1
  374. package/lib/composables/theme.mjs +18 -10
  375. package/lib/composables/theme.mjs.map +1 -1
  376. package/lib/composables/validation.mjs +14 -4
  377. package/lib/composables/validation.mjs.map +1 -1
  378. package/lib/composables/variant.mjs +4 -2
  379. package/lib/composables/variant.mjs.map +1 -1
  380. package/lib/entry-bundler.mjs +1 -1
  381. package/lib/framework.mjs +7 -2
  382. package/lib/framework.mjs.map +1 -1
  383. package/lib/index.d.ts +39 -47
  384. package/lib/styles/generic/_colors.scss +17 -9
  385. package/lib/styles/generic/_transitions.scss +13 -77
  386. package/lib/styles/main.css +1170 -1420
  387. package/lib/styles/settings/_utilities.scss +16 -5
  388. package/lib/styles/utilities/_index.sass +0 -1
  389. package/lib/util/anchor.mjs +33 -29
  390. package/lib/util/anchor.mjs.map +1 -1
  391. package/lib/util/animation.mjs +2 -2
  392. package/lib/util/animation.mjs.map +1 -1
  393. package/lib/util/box.mjs +12 -0
  394. package/lib/util/box.mjs.map +1 -1
  395. package/lib/util/colorUtils.mjs +2 -2
  396. package/lib/util/colorUtils.mjs.map +1 -1
  397. package/lib/util/colors.mjs +1 -1
  398. package/lib/util/colors.mjs.map +1 -1
  399. package/lib/util/defineComponent.mjs +6 -3
  400. package/lib/util/defineComponent.mjs.map +1 -1
  401. package/lib/util/helpers.mjs +24 -1
  402. package/lib/util/helpers.mjs.map +1 -1
  403. package/lib/util/injectSelf.mjs +12 -0
  404. package/lib/util/injectSelf.mjs.map +1 -0
  405. package/package.json +10 -10
  406. package/lib/components/VBanner/VBannerAvatar.mjs +0 -20
  407. package/lib/components/VBanner/VBannerAvatar.mjs.map +0 -1
  408. package/lib/components/VBanner/VBannerIcon.mjs +0 -20
  409. package/lib/components/VBanner/VBannerIcon.mjs.map +0 -1
  410. package/lib/components/VBreadcrumbs/shared.mjs +0 -2
  411. package/lib/components/VBreadcrumbs/shared.mjs.map +0 -1
  412. package/lib/components/VCard/VCardAvatar.mjs +0 -3
  413. package/lib/components/VCard/VCardAvatar.mjs.map +0 -1
  414. package/lib/components/VCard/VCardContent.mjs +0 -3
  415. package/lib/components/VCard/VCardContent.mjs.map +0 -1
  416. package/lib/components/VCard/VCardHeader.mjs +0 -3
  417. package/lib/components/VCard/VCardHeader.mjs.map +0 -1
  418. package/lib/components/VCard/VCardHeaderText.mjs +0 -3
  419. package/lib/components/VCard/VCardHeaderText.mjs.map +0 -1
  420. package/lib/components/VCard/VCardImg.mjs +0 -3
  421. package/lib/components/VCard/VCardImg.mjs.map +0 -1
  422. package/lib/components/VList/VListItemAvatar.mjs +0 -23
  423. package/lib/components/VList/VListItemAvatar.mjs.map +0 -1
  424. package/lib/components/VList/VListItemHeader.mjs +0 -3
  425. package/lib/components/VList/VListItemHeader.mjs.map +0 -1
  426. package/lib/components/VList/VListItemIcon.mjs +0 -23
  427. package/lib/components/VList/VListItemIcon.mjs.map +0 -1
  428. package/lib/components/VTimeline/shared.mjs +0 -2
  429. package/lib/components/VTimeline/shared.mjs.map +0 -1
  430. package/lib/composables/forwardRef.mjs.map +0 -1
  431. package/lib/presets/default/index.mjs +0 -71
  432. package/lib/presets/default/index.mjs.map +0 -1
  433. package/lib/styles/utilities/_text.sass +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"locationStrategies.mjs","names":["computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","convertToUnit","getScrollParent","IN_BROWSER","isFixedPosition","nullifyTransforms","oppositeAnchor","parseAnchor","physicalAnchor","propsFactory","Box","anchorToPoint","getOffset","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","useLocationStrategies","props","data","contentStyles","updateLocation","scope","stop","value","undefined","isActive","run","window","addEventListener","onResize","passive","removeEventListener","e","activatorFixed","activatorEl","Object","assign","position","preferredAnchor","preferredOrigin","doesOverlap","side","configuredMaxHeight","parseFloat","maxHeight","isNaN","Infinity","configuredMinWidth","minWidth","observe","observer","ResizeObserver","contentEl","disconnect","requestAnimationFrame","targetBox","getBoundingClientRect","x","y","width","height","scrollParent","viewportWidth","clientWidth","viewportHeight","Math","min","clientHeight","innerHeight","contentBox","scrollables","Map","querySelectorAll","forEach","el","scrollLeft","scrollTop","set","initialMaxWidth","style","maxWidth","initialMaxHeight","removeProperty","left","top","scrollTo","contentHeight","maxFreeSpaceWidth","MAX_VALUE","parseInt","viewportMargin","freeSpace","bottom","right","fitsY","anchor","canFill","includes","max","floor","targetPoint","contentPoint","round","transformOrigin","immediate"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Utilities\nimport { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'\nimport {\n convertToUnit,\n getScrollParent,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n oppositeAnchor,\n parseAnchor,\n physicalAnchor,\n propsFactory,\n} from '@/util'\nimport { Box } from '@/util/box'\nimport { anchorToPoint, getOffset } from './util/point'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n}\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | (\n (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n ) => undefined | { updateLocation: (e: Event) => void }\n )\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String],\n})\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n updateLocation.value = undefined\n\n if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n })\n\n IN_BROWSER && window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n IN_BROWSER && window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n scope?.stop()\n })\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = isFixedPosition(data.activatorEl.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n })\n }\n\n const preferredAnchor = computed(() => parseAnchor(props.location))\n const preferredOrigin = computed(() =>\n props.origin === 'overlap' ? preferredAnchor.value\n : props.origin === 'auto' ? oppositeAnchor(preferredAnchor.value)\n : parseAnchor(props.origin)\n )\n const doesOverlap = computed(() => {\n return preferredAnchor.value.side === preferredOrigin.value.side\n })\n\n const configuredMaxHeight = computed(() => {\n const val = parseFloat(props.maxHeight!)\n return isNaN(val) ? Infinity : val\n })\n\n const configuredMinWidth = computed(() => {\n const val = parseFloat(props.minWidth!)\n return isNaN(val) ? Infinity : val\n })\n\n let observe = false\n if (IN_BROWSER) {\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n observer.observe(data.activatorEl.value!)\n observer.observe(data.contentEl.value!)\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n }\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n const targetBox = data.activatorEl.value!.getBoundingClientRect()\n // TODO: offset shouldn't affect width\n if (props.offset) {\n targetBox.x -= +props.offset\n targetBox.y -= +props.offset\n targetBox.width += +props.offset * 2\n targetBox.height += +props.offset * 2\n }\n\n const scrollParent = getScrollParent(data.contentEl.value)\n const viewportWidth = scrollParent.clientWidth\n const viewportHeight = Math.min(scrollParent.clientHeight, window.innerHeight)\n\n let contentBox\n {\n const scrollables = new Map<Element, [number, number]>()\n data.contentEl.value!.querySelectorAll('*').forEach(el => {\n const x = el.scrollLeft\n const y = el.scrollTop\n if (x || y) {\n scrollables.set(el, [x, y])\n }\n })\n\n const initialMaxWidth = data.contentEl.value!.style.maxWidth\n const initialMaxHeight = data.contentEl.value!.style.maxHeight\n data.contentEl.value!.style.removeProperty('max-width')\n data.contentEl.value!.style.removeProperty('max-height')\n\n contentBox = nullifyTransforms(data.contentEl.value!)\n contentBox.x -= parseFloat(data.contentEl.value!.style.left) || 0\n contentBox.y -= parseFloat(data.contentEl.value!.style.top) || 0\n\n data.contentEl.value!.style.maxWidth = initialMaxWidth\n data.contentEl.value!.style.maxHeight = initialMaxHeight\n scrollables.forEach((position, el) => {\n el.scrollTo(...position)\n })\n }\n\n const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height)\n\n // Regard undefined maxWidth as maximally occupying whole remaining space by default\n const maxFreeSpaceWidth = props.maxWidth === undefined ? Number.MAX_VALUE : parseInt(props.maxWidth ?? 0, 10)\n\n const viewportMargin = 12\n const freeSpace = {\n top: targetBox.top - viewportMargin,\n bottom: viewportHeight - targetBox.bottom - viewportMargin,\n left: Math.min(targetBox.left - viewportMargin, maxFreeSpaceWidth),\n right: Math.min(viewportWidth - targetBox.right - viewportMargin, maxFreeSpaceWidth),\n }\n\n const fitsY = (preferredAnchor.value.side === 'bottom' && contentHeight <= freeSpace.bottom) ||\n (preferredAnchor.value.side === 'top' && contentHeight <= freeSpace.top)\n\n const anchor = fitsY ? preferredAnchor.value\n : (preferredAnchor.value.side === 'bottom' && freeSpace.top > freeSpace.bottom) ||\n (preferredAnchor.value.side === 'top' && freeSpace.bottom > freeSpace.top) ? oppositeAnchor(preferredAnchor.value)\n : preferredAnchor.value\n const origin = fitsY ? preferredOrigin.value : oppositeAnchor(anchor)\n\n const canFill = doesOverlap.value || ['center', 'top', 'bottom'].includes(anchor.side)\n\n const maxWidth = canFill ? Math.min(viewportWidth, Math.max(targetBox.width, viewportWidth - viewportMargin * 2))\n : anchor.side === 'end' ? freeSpace.right\n : anchor.side === 'start' ? freeSpace.left\n : null\n const minWidth = Math.min(configuredMinWidth.value, maxWidth!, targetBox.width)\n const maxHeight = fitsY ? configuredMaxHeight.value : Math.min(\n configuredMaxHeight.value,\n Math.floor(anchor.side === 'top' ? freeSpace.top : freeSpace.bottom)\n )\n\n const targetPoint = anchorToPoint(anchor, targetBox)\n const contentPoint = anchorToPoint(origin, new Box({\n ...contentBox,\n height: Math.min(contentHeight, maxHeight),\n }))\n\n const { x, y } = getOffset(targetPoint, contentPoint)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': physicalAnchor(anchor, data.activatorEl.value!),\n top: convertToUnit(Math.round(y)),\n left: convertToUnit(Math.round(x)), // TODO: right for origin=\"end\", rtl\n transformOrigin: physicalAnchor(origin, data.activatorEl.value!),\n minWidth: convertToUnit(minWidth),\n maxWidth: convertToUnit(maxWidth),\n maxHeight: convertToUnit(maxHeight),\n })\n }\n\n watch(\n () => [preferredAnchor.value, preferredOrigin.value, props.offset],\n () => updateLocation(),\n { immediate: !activatorFixed }\n )\n\n if (activatorFixed) nextTick(() => updateLocation())\n requestAnimationFrame(() => {\n if (contentStyles.value.maxHeight) updateLocation()\n })\n\n return { updateLocation }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"locationStrategies.mjs","names":["computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","clamp","consoleError","convertToUnit","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","anchorToPoint","getOffset","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","scope","stop","value","undefined","isActive","run","window","addEventListener","onResize","passive","removeEventListener","e","getIntrinsicSize","el","contentBox","x","parseFloat","style","left","y","top","activatorFixed","activatorEl","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","isRtl","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","isArray","split","length","push","observe","observer","ResizeObserver","contentEl","disconnect","requestAnimationFrame","targetBox","getBoundingClientRect","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","scrollBox","width","clientWidth","height","clientHeight","Math","max","min","right","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","reset","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","immediate","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Utilities\nimport { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'\nimport {\n clamp,\n consoleError,\n convertToUnit,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow } from '@/util/box'\nimport { anchorToPoint, getOffset } from './util/point'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n isRtl: Ref<boolean>\n}\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | (\n (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n ) => undefined | { updateLocation: (e: Event) => void }\n )\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType<StrategyProps['offset']>,\n})\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n updateLocation.value = undefined\n\n if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n })\n\n IN_BROWSER && window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n IN_BROWSER && window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n scope?.stop()\n })\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n contentBox.x -= parseFloat(el.style.left || 0)\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = isFixedPosition(data.activatorEl.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n if (IN_BROWSER) {\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n observer.observe(data.activatorEl.value!)\n observer.observe(data.contentEl.value!)\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n }\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n const targetBox = data.activatorEl.value!.getBoundingClientRect()\n const contentBox = getIntrinsicSize(data.contentEl.value!)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value!.style.top && data.contentEl.value!.style.left)) {\n contentBox.x += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce<Box>((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: convertToUnit(pixelRound(x)),\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n { immediate: !activatorFixed }\n )\n\n if (activatorFixed) nextTick(() => updateLocation())\n requestAnimationFrame(() => {\n if (contentStyles.value.maxHeight) updateLocation()\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- // Utilities
2
- import { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from "../../util/index.mjs";
1
+ // Composables
3
2
  import { makeDelayProps, useDelay } from "../../composables/delay.mjs";
4
- import { VMenuSymbol } from "../VMenu/shared.mjs";
3
+ import { VMenuSymbol } from "../VMenu/shared.mjs"; // Utilities
4
+
5
+ import { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from "../../util/index.mjs";
5
6
  import { computed, effectScope, inject, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'; // Types
6
7
 
7
8
  export const makeActivatorProps = propsFactory({
@@ -114,7 +115,7 @@ export function useActivator(props, _ref) {
114
115
  return events;
115
116
  });
116
117
  watch(isTop, val => {
117
- if (val && props.openOnHover && !isHovered) {
118
+ if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
118
119
  isActive.value = false;
119
120
  }
120
121
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useActivator.mjs","names":["getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","makeDelayProps","useDelay","VMenuSymbol","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","isActive","isTop","activatorEl","isHovered","isFocused","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","_props","entries","forEach","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","removeEventListener","selector","proxy","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { VMenuSymbol } from '@/components/VMenu/shared'\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n})\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (props.openOnHover) {\n events.mouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.click = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && props.openOnHover && !isHovered) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useActivator.mjs","names":["makeDelayProps","useDelay","VMenuSymbol","getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","isActive","isTop","activatorEl","isHovered","isFocused","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","_props","entries","forEach","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","removeEventListener","selector","proxy","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n})\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (props.openOnHover) {\n events.mouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.click = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
@@ -29,18 +29,18 @@ export function anchorToPoint(anchor, box) {
29
29
  side,
30
30
  align
31
31
  } = anchor;
32
- const x = align === 'start' ? 0 : align === 'center' ? box.width / 2 : align === 'end' ? box.width : align;
32
+ const x = align === 'left' ? 0 : align === 'center' ? box.width / 2 : align === 'right' ? box.width : align;
33
33
  const y = side === 'top' ? 0 : side === 'bottom' ? box.height : side;
34
34
  return elementToViewport({
35
35
  x,
36
36
  y
37
37
  }, box);
38
- } else if (anchor.side === 'start' || anchor.side === 'end') {
38
+ } else if (anchor.side === 'left' || anchor.side === 'right') {
39
39
  const {
40
40
  side,
41
41
  align
42
42
  } = anchor;
43
- const x = side === 'start' ? 0 : side === 'end' ? box.width : side;
43
+ const x = side === 'left' ? 0 : side === 'right' ? box.width : side;
44
44
  const y = align === 'top' ? 0 : align === 'center' ? box.height / 2 : align === 'bottom' ? box.height : align;
45
45
  return elementToViewport({
46
46
  x,
@@ -1 +1 @@
1
- {"version":3,"file":"point.mjs","names":["elementToViewport","point","offset","x","y","viewportToElement","getOffset","a","b","anchorToPoint","anchor","box","side","align","width","height"],"sources":["../../../../src/components/VOverlay/util/point.ts"],"sourcesContent":["import type { ParsedAnchor } from '@/util'\nimport type { Box } from '@/util/box'\n\ntype Point = { x: number, y: number }\ndeclare class As<T extends string> {\n private as: T\n}\ntype ElementPoint = Point & As<'element'>\ntype ViewportPoint = Point & As<'viewport'>\ntype Offset = Point & As<'offset'>\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport (point: ElementPoint, offset: Offset | Box) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y,\n } as ViewportPoint\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement (point: ViewportPoint, offset: Offset | Box) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y,\n } as ElementPoint\n}\n\n/** Get the difference between two points */\nexport function getOffset<T extends Point> (a: T, b: T) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n } as Offset\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint (anchor: ParsedAnchor, box: Box): ViewportPoint {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const { side, align } = anchor\n\n const x: number =\n align === 'start' ? 0\n : align === 'center' ? box.width / 2\n : align === 'end' ? box.width\n : align\n const y: number =\n side === 'top' ? 0\n : side === 'bottom' ? box.height\n : side\n\n return elementToViewport({ x, y } as ElementPoint, box)\n } else if (anchor.side === 'start' || anchor.side === 'end') {\n const { side, align } = anchor\n\n const x: number =\n side === 'start' ? 0\n : side === 'end' ? box.width\n : side\n const y: number =\n align === 'top' ? 0\n : align === 'center' ? box.height / 2\n : align === 'bottom' ? box.height\n : align\n\n return elementToViewport({ x, y } as ElementPoint, box)\n }\n\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2,\n } as ElementPoint, box)\n}\n"],"mappings":"AAWA;AACA,OAAO,SAASA,iBAAT,CAA4BC,KAA5B,EAAiDC,MAAjD,EAAuE;EAC5E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAN,GAAUD,MAAM,CAACC,CADf;IAELC,CAAC,EAAEH,KAAK,CAACG,CAAN,GAAUF,MAAM,CAACE;EAFf,CAAP;AAID;AAED;;AACA,OAAO,SAASC,iBAAT,CAA4BJ,KAA5B,EAAkDC,MAAlD,EAAwE;EAC7E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAN,GAAUD,MAAM,CAACC,CADf;IAELC,CAAC,EAAEH,KAAK,CAACG,CAAN,GAAUF,MAAM,CAACE;EAFf,CAAP;AAID;AAED;;AACA,OAAO,SAASE,SAAT,CAAqCC,CAArC,EAA2CC,CAA3C,EAAiD;EACtD,OAAO;IACLL,CAAC,EAAEI,CAAC,CAACJ,CAAF,GAAMK,CAAC,CAACL,CADN;IAELC,CAAC,EAAEG,CAAC,CAACH,CAAF,GAAMI,CAAC,CAACJ;EAFN,CAAP;AAID;AAED;;AACA,OAAO,SAASK,aAAT,CAAwBC,MAAxB,EAA8CC,GAA9C,EAAuE;EAC5E,IAAID,MAAM,CAACE,IAAP,KAAgB,KAAhB,IAAyBF,MAAM,CAACE,IAAP,KAAgB,QAA7C,EAAuD;IACrD,MAAM;MAAEA,IAAF;MAAQC;IAAR,IAAkBH,MAAxB;IAEA,MAAMP,CAAS,GACbU,KAAK,KAAK,OAAV,GAAoB,CAApB,GACEA,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACG,KAAJ,GAAY,CAAjC,GACAD,KAAK,KAAK,KAAV,GAAkBF,GAAG,CAACG,KAAtB,GACAD,KAJJ;IAKA,MAAMT,CAAS,GACbQ,IAAI,KAAK,KAAT,GAAiB,CAAjB,GACEA,IAAI,KAAK,QAAT,GAAoBD,GAAG,CAACI,MAAxB,GACAH,IAHJ;IAKA,OAAOZ,iBAAiB,CAAC;MAAEG,CAAF;MAAKC;IAAL,CAAD,EAA2BO,GAA3B,CAAxB;EACD,CAdD,MAcO,IAAID,MAAM,CAACE,IAAP,KAAgB,OAAhB,IAA2BF,MAAM,CAACE,IAAP,KAAgB,KAA/C,EAAsD;IAC3D,MAAM;MAAEA,IAAF;MAAQC;IAAR,IAAkBH,MAAxB;IAEA,MAAMP,CAAS,GACbS,IAAI,KAAK,OAAT,GAAmB,CAAnB,GACEA,IAAI,KAAK,KAAT,GAAiBD,GAAG,CAACG,KAArB,GACAF,IAHJ;IAIA,MAAMR,CAAS,GACbS,KAAK,KAAK,KAAV,GAAkB,CAAlB,GACEA,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACI,MAAJ,GAAa,CAAlC,GACAF,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACI,MAAzB,GACAF,KAJJ;IAMA,OAAOb,iBAAiB,CAAC;MAAEG,CAAF;MAAKC;IAAL,CAAD,EAA2BO,GAA3B,CAAxB;EACD;;EAED,OAAOX,iBAAiB,CAAC;IACvBG,CAAC,EAAEQ,GAAG,CAACG,KAAJ,GAAY,CADQ;IAEvBV,CAAC,EAAEO,GAAG,CAACI,MAAJ,GAAa;EAFO,CAAD,EAGLJ,GAHK,CAAxB;AAID"}
1
+ {"version":3,"file":"point.mjs","names":["elementToViewport","point","offset","x","y","viewportToElement","getOffset","a","b","anchorToPoint","anchor","box","side","align","width","height"],"sources":["../../../../src/components/VOverlay/util/point.ts"],"sourcesContent":["import type { ParsedAnchor } from '@/util'\nimport type { Box } from '@/util/box'\n\ntype Point = { x: number, y: number }\ndeclare class As<T extends string> {\n private as: T\n}\ntype ElementPoint = Point & As<'element'>\ntype ViewportPoint = Point & As<'viewport'>\ntype Offset = Point & As<'offset'>\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport (point: ElementPoint, offset: Offset | Box) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y,\n } as ViewportPoint\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement (point: ViewportPoint, offset: Offset | Box) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y,\n } as ElementPoint\n}\n\n/** Get the difference between two points */\nexport function getOffset<T extends Point> (a: T, b: T) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n } as Offset\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint (anchor: ParsedAnchor, box: Box): ViewportPoint {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const { side, align } = anchor\n\n const x: number =\n align === 'left' ? 0\n : align === 'center' ? box.width / 2\n : align === 'right' ? box.width\n : align\n const y: number =\n side === 'top' ? 0\n : side === 'bottom' ? box.height\n : side\n\n return elementToViewport({ x, y } as ElementPoint, box)\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const { side, align } = anchor\n\n const x: number =\n side === 'left' ? 0\n : side === 'right' ? box.width\n : side\n const y: number =\n align === 'top' ? 0\n : align === 'center' ? box.height / 2\n : align === 'bottom' ? box.height\n : align\n\n return elementToViewport({ x, y } as ElementPoint, box)\n }\n\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2,\n } as ElementPoint, box)\n}\n"],"mappings":"AAWA;AACA,OAAO,SAASA,iBAAT,CAA4BC,KAA5B,EAAiDC,MAAjD,EAAuE;EAC5E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAN,GAAUD,MAAM,CAACC,CADf;IAELC,CAAC,EAAEH,KAAK,CAACG,CAAN,GAAUF,MAAM,CAACE;EAFf,CAAP;AAID;AAED;;AACA,OAAO,SAASC,iBAAT,CAA4BJ,KAA5B,EAAkDC,MAAlD,EAAwE;EAC7E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAN,GAAUD,MAAM,CAACC,CADf;IAELC,CAAC,EAAEH,KAAK,CAACG,CAAN,GAAUF,MAAM,CAACE;EAFf,CAAP;AAID;AAED;;AACA,OAAO,SAASE,SAAT,CAAqCC,CAArC,EAA2CC,CAA3C,EAAiD;EACtD,OAAO;IACLL,CAAC,EAAEI,CAAC,CAACJ,CAAF,GAAMK,CAAC,CAACL,CADN;IAELC,CAAC,EAAEG,CAAC,CAACH,CAAF,GAAMI,CAAC,CAACJ;EAFN,CAAP;AAID;AAED;;AACA,OAAO,SAASK,aAAT,CAAwBC,MAAxB,EAA8CC,GAA9C,EAAuE;EAC5E,IAAID,MAAM,CAACE,IAAP,KAAgB,KAAhB,IAAyBF,MAAM,CAACE,IAAP,KAAgB,QAA7C,EAAuD;IACrD,MAAM;MAAEA,IAAF;MAAQC;IAAR,IAAkBH,MAAxB;IAEA,MAAMP,CAAS,GACbU,KAAK,KAAK,MAAV,GAAmB,CAAnB,GACEA,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACG,KAAJ,GAAY,CAAjC,GACAD,KAAK,KAAK,OAAV,GAAoBF,GAAG,CAACG,KAAxB,GACAD,KAJJ;IAKA,MAAMT,CAAS,GACbQ,IAAI,KAAK,KAAT,GAAiB,CAAjB,GACEA,IAAI,KAAK,QAAT,GAAoBD,GAAG,CAACI,MAAxB,GACAH,IAHJ;IAKA,OAAOZ,iBAAiB,CAAC;MAAEG,CAAF;MAAKC;IAAL,CAAD,EAA2BO,GAA3B,CAAxB;EACD,CAdD,MAcO,IAAID,MAAM,CAACE,IAAP,KAAgB,MAAhB,IAA0BF,MAAM,CAACE,IAAP,KAAgB,OAA9C,EAAuD;IAC5D,MAAM;MAAEA,IAAF;MAAQC;IAAR,IAAkBH,MAAxB;IAEA,MAAMP,CAAS,GACbS,IAAI,KAAK,MAAT,GAAkB,CAAlB,GACEA,IAAI,KAAK,OAAT,GAAmBD,GAAG,CAACG,KAAvB,GACAF,IAHJ;IAIA,MAAMR,CAAS,GACbS,KAAK,KAAK,KAAV,GAAkB,CAAlB,GACEA,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACI,MAAJ,GAAa,CAAlC,GACAF,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACI,MAAzB,GACAF,KAJJ;IAMA,OAAOb,iBAAiB,CAAC;MAAEG,CAAF;MAAKC;IAAL,CAAD,EAA2BO,GAA3B,CAAxB;EACD;;EAED,OAAOX,iBAAiB,CAAC;IACvBG,CAAC,EAAEQ,GAAG,CAACG,KAAJ,GAAY,CADQ;IAEvBV,CAAC,EAAEO,GAAG,CAACI,MAAJ,GAAa;EAFO,CAAD,EAGLJ,GAHK,CAAxB;AAID"}
@@ -1,30 +1,32 @@
1
- import { createVNode as _createVNode } from "vue";
1
+ import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
+ // Styles
2
3
  import "./VPagination.css"; // Components
3
4
 
4
5
  import { VBtn } from "../VBtn/index.mjs"; // Composables
5
6
 
6
- import { makeTagProps } from "../../composables/tag.mjs";
7
- import { useLocale } from "../../composables/locale.mjs";
8
- import { useRtl } from "../../composables/rtl.mjs";
9
- import { makeElevationProps } from "../../composables/elevation.mjs";
7
+ import { IconValue } from "../../composables/icons.mjs";
8
+ import { makeBorderProps } from "../../composables/border.mjs";
10
9
  import { makeDensityProps } from "../../composables/density.mjs";
10
+ import { makeElevationProps } from "../../composables/elevation.mjs";
11
+ import { makeRoundedProps } from "../../composables/rounded.mjs";
11
12
  import { makeSizeProps } from "../../composables/size.mjs";
13
+ import { makeTagProps } from "../../composables/tag.mjs";
12
14
  import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
13
15
  import { makeVariantProps } from "../../composables/variant.mjs";
14
- import { useResizeObserver } from "../../composables/resizeObserver.mjs";
15
- import { makeBorderProps } from "../../composables/border.mjs";
16
- import { useRefs } from "../../composables/refs.mjs";
17
- import { useProxiedModel } from "../../composables/proxiedModel.mjs";
18
16
  import { provideDefaults } from "../../composables/defaults.mjs";
19
- import { IconValue } from "../../composables/icons.mjs"; // Utilities
17
+ import { useLocale } from "../../composables/locale.mjs";
18
+ import { useProxiedModel } from "../../composables/proxiedModel.mjs";
19
+ import { useRefs } from "../../composables/refs.mjs";
20
+ import { useResizeObserver } from "../../composables/resizeObserver.mjs";
21
+ import { useRtl } from "../../composables/rtl.mjs"; // Utilities
20
22
 
21
23
  import { computed, nextTick, ref, toRef } from 'vue';
22
- import { createRange, defineComponent, keyValues } from "../../util/index.mjs"; // Types
24
+ import { createRange, defineComponent, keyValues, useRender } from "../../util/index.mjs"; // Types
23
25
 
24
- import { makeRoundedProps } from "../../composables/rounded.mjs";
25
26
  export const VPagination = defineComponent({
26
27
  name: 'VPagination',
27
28
  props: {
29
+ activeColor: String,
28
30
  start: {
29
31
  type: [Number, String],
30
32
  default: 1
@@ -89,10 +91,10 @@ export const VPagination = defineComponent({
89
91
  default: '...'
90
92
  },
91
93
  showFirstLastPage: Boolean,
92
- ...makeRoundedProps(),
93
94
  ...makeBorderProps(),
94
95
  ...makeDensityProps(),
95
96
  ...makeElevationProps(),
97
+ ...makeRoundedProps(),
96
98
  ...makeSizeProps(),
97
99
  ...makeTagProps({
98
100
  tag: 'nav'
@@ -153,7 +155,7 @@ export const VPagination = defineComponent({
153
155
  return length.value;
154
156
  });
155
157
  const range = computed(() => {
156
- if (length.value <= 0) return [];
158
+ if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];
157
159
  if (totalVisible.value <= 2) return [page.value];
158
160
 
159
161
  if (length.value <= totalVisible.value) {
@@ -189,7 +191,8 @@ export const VPagination = defineComponent({
189
191
  updateRef
190
192
  } = useRefs();
191
193
  provideDefaults({
192
- VBtn: {
194
+ VPaginationBtn: {
195
+ color: toRef(props, 'color'),
193
196
  border: toRef(props, 'border'),
194
197
  density: toRef(props, 'density'),
195
198
  size: toRef(props, 'size'),
@@ -223,7 +226,7 @@ export const VPagination = defineComponent({
223
226
  disabled: !!props.disabled || props.length < 2,
224
227
  elevation: props.elevation,
225
228
  rounded: props.rounded,
226
- color: isActive ? props.color : undefined,
229
+ color: isActive ? props.activeColor : props.color,
227
230
  ariaCurrent: isActive,
228
231
  ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),
229
232
  onClick: e => setValue(e, item)
@@ -284,7 +287,7 @@ export const VPagination = defineComponent({
284
287
  }
285
288
  }
286
289
 
287
- return () => _createVNode(props.tag, {
290
+ useRender(() => _createVNode(props.tag, {
288
291
  "ref": resizeRef,
289
292
  "class": ['v-pagination', themeClasses.value],
290
293
  "role": "navigation",
@@ -295,27 +298,42 @@ export const VPagination = defineComponent({
295
298
  default: () => [_createVNode("ul", {
296
299
  "class": "v-pagination__list"
297
300
  }, [props.showFirstLastPage && _createVNode("li", {
301
+ "key": "first",
298
302
  "class": "v-pagination__first",
299
303
  "data-test": "v-pagination-first"
300
- }, [slots.first ? slots.first(controls.value.first) : _createVNode(VBtn, controls.value.first, null)]), _createVNode("li", {
304
+ }, [slots.first ? slots.first(controls.value.first) : _createVNode(VBtn, _mergeProps({
305
+ "_as": "VPaginationBtn"
306
+ }, controls.value.first), null)]), _createVNode("li", {
307
+ "key": "prev",
301
308
  "class": "v-pagination__prev",
302
309
  "data-test": "v-pagination-prev"
303
- }, [slots.prev ? slots.prev(controls.value.prev) : _createVNode(VBtn, controls.value.prev, null)]), items.value.map((item, index) => _createVNode("li", {
304
- "key": `${index}_${item.page}`,
310
+ }, [slots.prev ? slots.prev(controls.value.prev) : _createVNode(VBtn, _mergeProps({
311
+ "_as": "VPaginationBtn"
312
+ }, controls.value.prev), null)]), items.value.map((item, index) => _createVNode("li", {
313
+ "key": item.page,
305
314
  "class": ['v-pagination__item', {
306
315
  'v-pagination__item--is-active': item.isActive
307
316
  }],
308
317
  "data-test": "v-pagination-item"
309
- }, [slots.item ? slots.item(item) : _createVNode(VBtn, item.props, {
318
+ }, [slots.item ? slots.item(item) : _createVNode(VBtn, _mergeProps({
319
+ "_as": "VPaginationBtn"
320
+ }, item.props), {
310
321
  default: () => [item.page]
311
322
  })])), _createVNode("li", {
323
+ "key": "next",
312
324
  "class": "v-pagination__next",
313
325
  "data-test": "v-pagination-next"
314
- }, [slots.next ? slots.next(controls.value.next) : _createVNode(VBtn, controls.value.next, null)]), props.showFirstLastPage && _createVNode("li", {
326
+ }, [slots.next ? slots.next(controls.value.next) : _createVNode(VBtn, _mergeProps({
327
+ "_as": "VPaginationBtn"
328
+ }, controls.value.next), null)]), props.showFirstLastPage && _createVNode("li", {
329
+ "key": "last",
315
330
  "class": "v-pagination__last",
316
331
  "data-test": "v-pagination-last"
317
- }, [slots.last ? slots.last(controls.value.last) : _createVNode(VBtn, controls.value.last, null)])])]
318
- });
332
+ }, [slots.last ? slots.last(controls.value.last) : _createVNode(VBtn, _mergeProps({
333
+ "_as": "VPaginationBtn"
334
+ }, controls.value.last), null)])])]
335
+ }));
336
+ return {};
319
337
  }
320
338
 
321
339
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VPagination.mjs","names":["VBtn","makeTagProps","useLocale","useRtl","makeElevationProps","makeDensityProps","makeSizeProps","makeThemeProps","provideTheme","makeVariantProps","useResizeObserver","makeBorderProps","useRefs","useProxiedModel","provideDefaults","IconValue","computed","nextTick","ref","toRef","createRange","defineComponent","keyValues","makeRoundedProps","VPagination","name","props","start","type","Number","String","default","modelValue","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","emits","value","first","prev","next","last","setup","slots","emit","page","t","n","isRtl","themeClasses","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","width","itemWidth","getBoundingClientRect","Math","max","floor","parseInt","min","range","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","border","density","size","items","map","item","index","isActive","icon","elevation","rounded","color","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown","key"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["import './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { makeTagProps } from '@/composables/tag'\nimport { useLocale } from '@/composables/locale'\nimport { useRtl } from '@/composables/rtl'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeBorderProps } from '@/composables/border'\nimport { useRefs } from '@/composables/refs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { provideDefaults } from '@/composables/defaults'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, nextTick, ref, toRef } from 'vue'\nimport { createRange, defineComponent, keyValues } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\nimport { makeRoundedProps } from '@/composables/rounded'\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n\n props: {\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeRoundedProps(),\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const maxButtons = ref(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *')\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth = firstItem.getBoundingClientRect().width + 10\n\n maxButtons.value = Math.max(0, Math.floor((totalWidth - 96) / itemWidth))\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return Math.min(parseInt(props.totalVisible ?? '', 10), length.value)\n else if (maxButtons.value >= 0) return maxButtons.value\n return length.value\n })\n\n const range = computed(() => {\n if (length.value <= 0) return []\n\n if (totalVisible.value <= 2) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= 0) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VBtn: {\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || props.length < 2,\n elevation: props.elevation,\n rounded: props.rounded,\n color: isActive ? props.color : undefined,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n return () => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n ]}\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first) : (\n <VBtn {...controls.value.first} />\n ) }\n </li>\n ) }\n\n <li class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn {...controls.value.prev} />\n ) }\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ `${index}_${item.page}` }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn {...item.props}>{ item.page }</VBtn>\n ) }\n </li>\n )) }\n\n <li class=\"v-pagination__next\" data-test=\"v-pagination-next\">\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn {...controls.value.next} />\n ) }\n </li>\n\n { props.showFirstLastPage && (\n <li class=\"v-pagination__last\" data-test=\"v-pagination-last\">\n { slots.last ? slots.last(controls.value.last) : (\n <VBtn {...controls.value.last} />\n ) }\n </li>\n ) }\n </ul>\n </props.tag>\n )\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VPagination.mjs","names":["VBtn","IconValue","makeBorderProps","makeDensityProps","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useLocale","useProxiedModel","useRefs","useResizeObserver","useRtl","computed","nextTick","ref","toRef","createRange","defineComponent","keyValues","useRender","VPagination","name","props","activeColor","String","start","type","Number","default","modelValue","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","emits","value","first","prev","next","last","setup","slots","emit","page","t","n","isRtl","themeClasses","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","width","itemWidth","getBoundingClientRect","Math","max","floor","parseInt","min","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","items","map","item","index","isActive","icon","elevation","rounded","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown","key"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useRtl } from '@/composables/rtl'\n\n// Utilities\nimport { computed, nextTick, ref, toRef } from 'vue'\nimport { createRange, defineComponent, keyValues, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n\n props: {\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const maxButtons = ref(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *')\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth = firstItem.getBoundingClientRect().width + 10\n\n maxButtons.value = Math.max(0, Math.floor((totalWidth - 96) / itemWidth))\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return Math.min(parseInt(props.totalVisible ?? '', 10), length.value)\n else if (maxButtons.value >= 0) return maxButtons.value\n return length.value\n })\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 2) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= 0) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || props.length < 2,\n elevation: props.elevation,\n rounded: props.rounded,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n ]}\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.first} />\n ) }\n </li>\n ) }\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.prev} />\n ) }\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.page }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" {...item.props}>{ item.page }</VBtn>\n ) }\n </li>\n )) }\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.next} />\n ) }\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.last} />\n ) }\n </li>\n ) }\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
@@ -6,8 +6,8 @@ import { VImg } from "../VImg/index.mjs"; // Composables
6
6
 
7
7
  import { useIntersectionObserver } from "../../composables/intersectionObserver.mjs"; // Utilities
8
8
 
9
+ import { defineComponent, getScrollParent, useRender } from "../../util/index.mjs";
9
10
  import { onBeforeUnmount, ref, watch, watchEffect } from 'vue';
10
- import { defineComponent, getScrollParent } from "../../util/index.mjs";
11
11
 
12
12
  function floor(val) {
13
13
  return Math.floor(Math.abs(val)) * Math.sign(val);
@@ -24,14 +24,13 @@ export const VParallax = defineComponent({
24
24
 
25
25
  setup(props, _ref) {
26
26
  let {
27
- attrs,
28
27
  slots
29
28
  } = _ref;
30
- const root = ref();
31
29
  const {
32
30
  intersectionRef,
33
31
  isIntersecting
34
32
  } = useIntersectionObserver();
33
+ const root = ref();
35
34
  watchEffect(() => {
36
35
  var _root$value;
37
36
 
@@ -75,7 +74,7 @@ export const VParallax = defineComponent({
75
74
  });
76
75
  }
77
76
 
78
- return () => _createVNode(VImg, {
77
+ useRender(() => _createVNode(VImg, {
79
78
  "class": ['v-parallax', {
80
79
  'v-parallax--active': isIntersecting.value
81
80
  }],
@@ -83,7 +82,8 @@ export const VParallax = defineComponent({
83
82
  "cover": true,
84
83
  "onLoadstart": onScroll,
85
84
  "onLoad": onScroll
86
- }, slots);
85
+ }, slots));
86
+ return {};
87
87
  }
88
88
 
89
89
  });