vuetify 3.3.0 → 3.3.2

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 (536) hide show
  1. package/dist/json/attributes.json +88 -60
  2. package/dist/json/importMap.json +26 -26
  3. package/dist/json/tags.json +8 -1
  4. package/dist/json/web-types.json +836 -899
  5. package/dist/vuetify-labs.css +136 -114
  6. package/dist/vuetify-labs.d.ts +6688 -11806
  7. package/dist/vuetify-labs.esm.js +8271 -8060
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +8270 -8059
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +133 -112
  12. package/dist/vuetify.d.ts +4441 -8286
  13. package/dist/vuetify.esm.js +6686 -6548
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +6685 -6547
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +979 -975
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/index.d.mts +31 -31
  21. package/lib/blueprints/md1.d.mts +31 -31
  22. package/lib/blueprints/md2.d.mts +31 -31
  23. package/lib/blueprints/md3.d.mts +31 -31
  24. package/lib/components/VAlert/VAlert.mjs +6 -6
  25. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  26. package/lib/components/VAlert/_variables.scss +2 -2
  27. package/lib/components/VAlert/index.d.mts +16 -74
  28. package/lib/components/VApp/VApp.mjs +4 -4
  29. package/lib/components/VApp/VApp.mjs.map +1 -1
  30. package/lib/components/VApp/index.d.mts +0 -15
  31. package/lib/components/VAppBar/VAppBar.mjs +9 -6
  32. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  33. package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -1
  34. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  35. package/lib/components/VAppBar/index.d.mts +1 -82
  36. package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -11
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  38. package/lib/components/VAutocomplete/index.d.mts +205 -259
  39. package/lib/components/VAvatar/VAvatar.mjs +4 -4
  40. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  41. package/lib/components/VAvatar/_variables.scss +1 -1
  42. package/lib/components/VAvatar/index.d.mts +0 -15
  43. package/lib/components/VBadge/VBadge.mjs +6 -6
  44. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  45. package/lib/components/VBadge/index.d.mts +0 -19
  46. package/lib/components/VBanner/VBanner.mjs +7 -10
  47. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  48. package/lib/components/VBanner/VBannerActions.mjs +2 -2
  49. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  50. package/lib/components/VBanner/VBannerText.mjs +1 -0
  51. package/lib/components/VBanner/VBannerText.mjs.map +1 -1
  52. package/lib/components/VBanner/index.d.mts +1 -58
  53. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +8 -8
  54. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  55. package/lib/components/VBottomNavigation/index.d.mts +0 -15
  56. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +6 -9
  57. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  58. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +2 -2
  59. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  60. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +3 -3
  61. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  62. package/lib/components/VBreadcrumbs/index.d.mts +30 -60
  63. package/lib/components/VBtn/VBtn.mjs +6 -6
  64. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  65. package/lib/components/VBtn/_variables.scss +15 -15
  66. package/lib/components/VBtn/index.d.mts +0 -27
  67. package/lib/components/VBtnGroup/VBtnGroup.mjs +4 -4
  68. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  69. package/lib/components/VBtnGroup/index.d.mts +0 -15
  70. package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
  71. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  72. package/lib/components/VBtnToggle/index.d.mts +19 -34
  73. package/lib/components/VCard/VCard.mjs +7 -7
  74. package/lib/components/VCard/VCard.mjs.map +1 -1
  75. package/lib/components/VCard/VCard.sass +2 -2
  76. package/lib/components/VCard/VCardItem.mjs +4 -4
  77. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  78. package/lib/components/VCard/VCardSubtitle.mjs +1 -0
  79. package/lib/components/VCard/VCardSubtitle.mjs.map +1 -1
  80. package/lib/components/VCard/VCardText.mjs +1 -0
  81. package/lib/components/VCard/VCardText.mjs.map +1 -1
  82. package/lib/components/VCard/VCardTitle.mjs +1 -0
  83. package/lib/components/VCard/VCardTitle.mjs.map +1 -1
  84. package/lib/components/VCard/_variables.scss +10 -11
  85. package/lib/components/VCard/index.d.mts +16 -158
  86. package/lib/components/VCarousel/VCarousel.mjs +4 -7
  87. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  88. package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
  89. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  90. package/lib/components/VCarousel/index.d.mts +79 -237
  91. package/lib/components/VCheckbox/VCheckbox.mjs +3 -3
  92. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  93. package/lib/components/VCheckbox/VCheckboxBtn.mjs +4 -4
  94. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  95. package/lib/components/VCheckbox/index.d.mts +191 -277
  96. package/lib/components/VChip/VChip.mjs +7 -7
  97. package/lib/components/VChip/VChip.mjs.map +1 -1
  98. package/lib/components/VChip/index.d.mts +19 -82
  99. package/lib/components/VChipGroup/VChipGroup.mjs +4 -7
  100. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  101. package/lib/components/VChipGroup/index.d.mts +19 -58
  102. package/lib/components/VCode/index.d.mts +0 -15
  103. package/lib/components/VCode/index.mjs +3 -0
  104. package/lib/components/VCode/index.mjs.map +1 -1
  105. package/lib/components/VColorPicker/VColorPicker.mjs +10 -12
  106. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  107. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +2 -5
  108. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  109. package/lib/components/VColorPicker/VColorPickerEdit.mjs +3 -3
  110. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  111. package/lib/components/VColorPicker/VColorPickerPreview.mjs +3 -3
  112. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  113. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +1 -1
  114. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  115. package/lib/components/VCombobox/VCombobox.mjs +13 -12
  116. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  117. package/lib/components/VCombobox/index.d.mts +205 -259
  118. package/lib/components/VCounter/VCounter.mjs +2 -2
  119. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  120. package/lib/components/VCounter/index.d.mts +19 -34
  121. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -4
  122. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  123. package/lib/components/VDefaultsProvider/index.d.mts +7 -24
  124. package/lib/components/VDialog/VDialog.mjs +7 -7
  125. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  126. package/lib/components/VDialog/index.d.mts +175 -301
  127. package/lib/components/VDivider/VDivider.mjs +3 -3
  128. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  129. package/lib/components/VDivider/index.d.mts +0 -15
  130. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +5 -5
  131. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  132. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +3 -3
  133. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  134. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -5
  135. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  136. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +3 -3
  137. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  138. package/lib/components/VExpansionPanel/index.d.mts +35 -107
  139. package/lib/components/VField/VField.mjs +8 -8
  140. package/lib/components/VField/VField.mjs.map +1 -1
  141. package/lib/components/VField/VField.sass +0 -1
  142. package/lib/components/VField/VFieldLabel.mjs +1 -1
  143. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  144. package/lib/components/VField/_variables.scss +1 -0
  145. package/lib/components/VField/index.d.mts +39 -54
  146. package/lib/components/VFileInput/VFileInput.mjs +5 -5
  147. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  148. package/lib/components/VFileInput/index.d.mts +381 -537
  149. package/lib/components/VFooter/VFooter.mjs +4 -4
  150. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  151. package/lib/components/VFooter/_variables.scss +1 -1
  152. package/lib/components/VFooter/index.d.mts +0 -15
  153. package/lib/components/VForm/VForm.mjs +3 -3
  154. package/lib/components/VForm/VForm.mjs.map +1 -1
  155. package/lib/components/VForm/index.d.mts +19 -146
  156. package/lib/components/VGrid/VCol.mjs +2 -2
  157. package/lib/components/VGrid/VCol.mjs.map +1 -1
  158. package/lib/components/VGrid/VContainer.mjs +3 -3
  159. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  160. package/lib/components/VGrid/VRow.mjs +2 -2
  161. package/lib/components/VGrid/VRow.mjs.map +1 -1
  162. package/lib/components/VGrid/VSpacer.mjs +1 -0
  163. package/lib/components/VGrid/VSpacer.mjs.map +1 -1
  164. package/lib/components/VGrid/index.d.mts +0 -60
  165. package/lib/components/VHover/VHover.mjs +1 -1
  166. package/lib/components/VHover/VHover.mjs.map +1 -1
  167. package/lib/components/VHover/index.d.mts +19 -46
  168. package/lib/components/VIcon/VIcon.mjs +4 -4
  169. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  170. package/lib/components/VIcon/index.d.mts +0 -30
  171. package/lib/components/VImg/VImg.mjs +5 -4
  172. package/lib/components/VImg/VImg.mjs.map +1 -1
  173. package/lib/components/VImg/index.d.mts +0 -27
  174. package/lib/components/VInput/InputIcon.mjs +3 -2
  175. package/lib/components/VInput/InputIcon.mjs.map +1 -1
  176. package/lib/components/VInput/VInput.mjs +9 -5
  177. package/lib/components/VInput/VInput.mjs.map +1 -1
  178. package/lib/components/VInput/_variables.scss +1 -1
  179. package/lib/components/VInput/index.d.mts +88 -119
  180. package/lib/components/VItemGroup/VItem.mjs +2 -2
  181. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  182. package/lib/components/VItemGroup/VItemGroup.mjs +1 -1
  183. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  184. package/lib/components/VItemGroup/index.d.mts +38 -120
  185. package/lib/components/VKbd/index.d.mts +0 -15
  186. package/lib/components/VKbd/index.mjs +3 -0
  187. package/lib/components/VKbd/index.mjs.map +1 -1
  188. package/lib/components/VLabel/VLabel.mjs +1 -1
  189. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  190. package/lib/components/VLabel/index.d.mts +0 -15
  191. package/lib/components/VLayout/VLayout.mjs +3 -3
  192. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  193. package/lib/components/VLayout/VLayoutItem.mjs +1 -1
  194. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  195. package/lib/components/VLayout/index.d.mts +0 -30
  196. package/lib/components/VLazy/VLazy.mjs +3 -3
  197. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  198. package/lib/components/VLazy/index.d.mts +0 -15
  199. package/lib/components/VList/VList.css +1 -0
  200. package/lib/components/VList/VList.mjs +5 -4
  201. package/lib/components/VList/VList.mjs.map +1 -1
  202. package/lib/components/VList/VList.sass +1 -0
  203. package/lib/components/VList/VListChildren.mjs +3 -3
  204. package/lib/components/VList/VListChildren.mjs.map +1 -1
  205. package/lib/components/VList/VListGroup.mjs +8 -8
  206. package/lib/components/VList/VListGroup.mjs.map +1 -1
  207. package/lib/components/VList/VListImg.mjs +1 -0
  208. package/lib/components/VList/VListImg.mjs.map +1 -1
  209. package/lib/components/VList/VListItem.css +18 -0
  210. package/lib/components/VList/VListItem.mjs +9 -9
  211. package/lib/components/VList/VListItem.mjs.map +1 -1
  212. package/lib/components/VList/VListItem.sass +12 -0
  213. package/lib/components/VList/VListItemAction.mjs +1 -1
  214. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  215. package/lib/components/VList/VListItemMedia.mjs +1 -1
  216. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  217. package/lib/components/VList/VListItemSubtitle.mjs +1 -0
  218. package/lib/components/VList/VListItemSubtitle.mjs.map +1 -1
  219. package/lib/components/VList/VListItemTitle.mjs +1 -0
  220. package/lib/components/VList/VListItemTitle.mjs.map +1 -1
  221. package/lib/components/VList/VListSubheader.mjs +3 -3
  222. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  223. package/lib/components/VList/_variables.scss +6 -6
  224. package/lib/components/VList/index.d.mts +185 -337
  225. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +1 -1
  226. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  227. package/lib/components/VLocaleProvider/index.d.mts +0 -15
  228. package/lib/components/VMain/VMain.mjs +3 -3
  229. package/lib/components/VMain/VMain.mjs.map +1 -1
  230. package/lib/components/VMain/index.d.mts +0 -15
  231. package/lib/components/VMenu/VMenu.mjs +7 -7
  232. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  233. package/lib/components/VMenu/index.d.mts +222 -348
  234. package/lib/components/VMenu/shared.mjs +2 -0
  235. package/lib/components/VMenu/shared.mjs.map +1 -1
  236. package/lib/components/VMessages/VMessages.mjs +3 -3
  237. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  238. package/lib/components/VMessages/index.d.mts +15 -30
  239. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +17 -13
  240. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  241. package/lib/components/VNavigationDrawer/index.d.mts +15 -42
  242. package/lib/components/VOverlay/VOverlay.mjs +11 -14
  243. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  244. package/lib/components/VOverlay/index.d.mts +55 -94
  245. package/lib/components/VOverlay/locationStrategies.mjs +5 -5
  246. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  247. package/lib/components/VOverlay/scrollStrategies.mjs +3 -3
  248. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  249. package/lib/components/VOverlay/useActivator.mjs +6 -10
  250. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  251. package/lib/components/VOverlay/util/point.mjs +2 -0
  252. package/lib/components/VOverlay/util/point.mjs.map +1 -1
  253. package/lib/components/VPagination/VPagination.mjs +9 -9
  254. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  255. package/lib/components/VPagination/index.d.mts +75 -106
  256. package/lib/components/VParallax/VParallax.mjs +3 -6
  257. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  258. package/lib/components/VParallax/index.d.mts +0 -27
  259. package/lib/components/VProgressCircular/VProgressCircular.mjs +5 -5
  260. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  261. package/lib/components/VProgressCircular/index.d.mts +19 -42
  262. package/lib/components/VProgressLinear/VProgressLinear.mjs +6 -6
  263. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  264. package/lib/components/VProgressLinear/index.d.mts +19 -46
  265. package/lib/components/VRadio/VRadio.mjs +3 -3
  266. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  267. package/lib/components/VRadio/index.d.mts +33 -68
  268. package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -4
  269. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  270. package/lib/components/VRadioGroup/index.d.mts +140 -191
  271. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -4
  272. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  273. package/lib/components/VRangeSlider/index.d.mts +100 -143
  274. package/lib/components/VRating/VRating.mjs +6 -9
  275. package/lib/components/VRating/VRating.mjs.map +1 -1
  276. package/lib/components/VRating/index.d.mts +30 -49
  277. package/lib/components/VResponsive/VResponsive.css +1 -0
  278. package/lib/components/VResponsive/VResponsive.mjs +1 -1
  279. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  280. package/lib/components/VResponsive/VResponsive.sass +1 -0
  281. package/lib/components/VResponsive/index.d.mts +0 -19
  282. package/lib/components/VSelect/VSelect.mjs +9 -9
  283. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  284. package/lib/components/VSelect/index.d.mts +205 -259
  285. package/lib/components/VSelectionControl/VSelectionControl.mjs +7 -7
  286. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  287. package/lib/components/VSelectionControl/index.d.mts +24 -24
  288. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +6 -6
  289. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  290. package/lib/components/VSelectionControlGroup/index.d.mts +0 -15
  291. package/lib/components/VSheet/VSheet.mjs +4 -4
  292. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  293. package/lib/components/VSheet/index.d.mts +0 -15
  294. package/lib/components/VSlideGroup/VSlideGroup.mjs +7 -7
  295. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  296. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +2 -2
  297. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  298. package/lib/components/VSlideGroup/index.d.mts +68 -126
  299. package/lib/components/VSlider/VSlider.css +5 -4
  300. package/lib/components/VSlider/VSlider.mjs +6 -6
  301. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  302. package/lib/components/VSlider/VSlider.sass +5 -4
  303. package/lib/components/VSlider/VSliderThumb.mjs +6 -6
  304. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  305. package/lib/components/VSlider/VSliderTrack.mjs +3 -3
  306. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  307. package/lib/components/VSlider/index.d.mts +100 -143
  308. package/lib/components/VSlider/slider.mjs +4 -7
  309. package/lib/components/VSlider/slider.mjs.map +1 -1
  310. package/lib/components/VSnackbar/VSnackbar.mjs +7 -7
  311. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  312. package/lib/components/VSnackbar/_variables.scss +1 -1
  313. package/lib/components/VSnackbar/index.d.mts +167 -289
  314. package/lib/components/VStepper/index.mjs +3 -2
  315. package/lib/components/VStepper/index.mjs.map +1 -1
  316. package/lib/components/VSwitch/VSwitch.mjs +6 -6
  317. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  318. package/lib/components/VSwitch/index.d.mts +164 -219
  319. package/lib/components/VSystemBar/VSystemBar.mjs +4 -4
  320. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  321. package/lib/components/VSystemBar/_variables.scss +2 -2
  322. package/lib/components/VSystemBar/index.d.mts +0 -15
  323. package/lib/components/VTable/VTable.mjs +1 -1
  324. package/lib/components/VTable/VTable.mjs.map +1 -1
  325. package/lib/components/VTable/_variables.scss +1 -1
  326. package/lib/components/VTable/index.d.mts +0 -27
  327. package/lib/components/VTabs/VTab.mjs +3 -3
  328. package/lib/components/VTabs/VTab.mjs.map +1 -1
  329. package/lib/components/VTabs/VTabs.mjs +7 -7
  330. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  331. package/lib/components/VTabs/index.d.mts +0 -30
  332. package/lib/components/VTabs/shared.mjs +2 -0
  333. package/lib/components/VTabs/shared.mjs.map +1 -1
  334. package/lib/components/VTextField/VTextField.mjs +6 -6
  335. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  336. package/lib/components/VTextField/index.d.mts +423 -559
  337. package/lib/components/VTextarea/VTextarea.mjs +8 -11
  338. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  339. package/lib/components/VTextarea/index.d.mts +362 -494
  340. package/lib/components/VThemeProvider/VThemeProvider.mjs +1 -1
  341. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  342. package/lib/components/VThemeProvider/index.d.mts +0 -15
  343. package/lib/components/VTimeline/VTimeline.mjs +4 -4
  344. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  345. package/lib/components/VTimeline/VTimelineDivider.mjs +5 -5
  346. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  347. package/lib/components/VTimeline/VTimelineItem.mjs +4 -7
  348. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  349. package/lib/components/VTimeline/index.d.mts +0 -38
  350. package/lib/components/VToolbar/VToolbar.mjs +8 -8
  351. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  352. package/lib/components/VToolbar/VToolbarItems.mjs +4 -4
  353. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  354. package/lib/components/VToolbar/VToolbarTitle.mjs +1 -1
  355. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  356. package/lib/components/VToolbar/_variables.scss +2 -2
  357. package/lib/components/VToolbar/index.d.mts +1 -70
  358. package/lib/components/VTooltip/VTooltip.mjs +6 -6
  359. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  360. package/lib/components/VTooltip/index.d.mts +222 -348
  361. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  362. package/lib/components/VValidation/index.d.mts +19 -90
  363. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +15 -93
  364. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  365. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +9 -4
  366. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  367. package/lib/components/VVirtualScroll/index.d.mts +25 -25
  368. package/lib/components/VWindow/VWindow.mjs +6 -6
  369. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  370. package/lib/components/VWindow/VWindowItem.mjs +5 -5
  371. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  372. package/lib/components/VWindow/index.d.mts +64 -138
  373. package/lib/components/index.d.mts +4688 -8535
  374. package/lib/components/transitions/createTransition.mjs +5 -8
  375. package/lib/components/transitions/createTransition.mjs.map +1 -1
  376. package/lib/components/transitions/dialog-transition.mjs +1 -3
  377. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  378. package/lib/components/transitions/index.d.mts +117 -357
  379. package/lib/composables/defaults.mjs +5 -0
  380. package/lib/composables/defaults.mjs.map +1 -1
  381. package/lib/composables/display.mjs +1 -1
  382. package/lib/composables/display.mjs.map +1 -1
  383. package/lib/composables/filter.mjs +2 -4
  384. package/lib/composables/filter.mjs.map +1 -1
  385. package/lib/composables/focus.mjs +1 -1
  386. package/lib/composables/focus.mjs.map +1 -1
  387. package/lib/composables/forwardRefs.mjs +2 -0
  388. package/lib/composables/forwardRefs.mjs.map +1 -1
  389. package/lib/composables/hydration.mjs +1 -1
  390. package/lib/composables/hydration.mjs.map +1 -1
  391. package/lib/composables/icons.mjs +7 -1
  392. package/lib/composables/icons.mjs.map +1 -1
  393. package/lib/composables/lazy.mjs +1 -3
  394. package/lib/composables/lazy.mjs.map +1 -1
  395. package/lib/composables/loader.mjs.map +1 -1
  396. package/lib/composables/locale.mjs +2 -1
  397. package/lib/composables/locale.mjs.map +1 -1
  398. package/lib/composables/mutationObserver.mjs +2 -5
  399. package/lib/composables/mutationObserver.mjs.map +1 -1
  400. package/lib/composables/nested/nested.mjs +2 -2
  401. package/lib/composables/nested/nested.mjs.map +1 -1
  402. package/lib/composables/nested/selectStrategies.mjs +1 -0
  403. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  404. package/lib/composables/proxiedModel.mjs +3 -3
  405. package/lib/composables/proxiedModel.mjs.map +1 -1
  406. package/lib/composables/refs.mjs +4 -1
  407. package/lib/composables/refs.mjs.map +1 -1
  408. package/lib/composables/resizeObserver.mjs +4 -4
  409. package/lib/composables/resizeObserver.mjs.map +1 -1
  410. package/lib/composables/router.mjs +1 -4
  411. package/lib/composables/router.mjs.map +1 -1
  412. package/lib/composables/scopeId.mjs +1 -0
  413. package/lib/composables/scopeId.mjs.map +1 -1
  414. package/lib/composables/theme.mjs.map +1 -1
  415. package/lib/composables/toggleScope.mjs +4 -0
  416. package/lib/composables/toggleScope.mjs.map +1 -1
  417. package/lib/composables/touch.mjs +1 -0
  418. package/lib/composables/touch.mjs.map +1 -1
  419. package/lib/composables/validation.mjs +2 -2
  420. package/lib/composables/validation.mjs.map +1 -1
  421. package/lib/composables/virtual.mjs +108 -0
  422. package/lib/composables/virtual.mjs.map +1 -0
  423. package/lib/directives/click-outside/index.mjs +2 -1
  424. package/lib/directives/click-outside/index.mjs.map +1 -1
  425. package/lib/directives/intersect/index.mjs +1 -1
  426. package/lib/directives/intersect/index.mjs.map +1 -1
  427. package/lib/directives/resize/index.mjs +2 -0
  428. package/lib/directives/resize/index.mjs.map +1 -1
  429. package/lib/directives/scroll/index.mjs +2 -0
  430. package/lib/directives/scroll/index.mjs.map +1 -1
  431. package/lib/directives/touch/index.mjs +1 -2
  432. package/lib/directives/touch/index.mjs.map +1 -1
  433. package/lib/entry-bundler.mjs +7 -2
  434. package/lib/entry-bundler.mjs.map +1 -1
  435. package/lib/framework.mjs +4 -6
  436. package/lib/framework.mjs.map +1 -1
  437. package/lib/iconsets/fa.mjs +1 -1
  438. package/lib/iconsets/fa.mjs.map +1 -1
  439. package/lib/iconsets/fa4.mjs +4 -3
  440. package/lib/iconsets/fa4.mjs.map +1 -1
  441. package/lib/iconsets/md.mjs +4 -3
  442. package/lib/iconsets/md.mjs.map +1 -1
  443. package/lib/iconsets/mdi-svg.mjs +1 -1
  444. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  445. package/lib/iconsets/mdi.mjs +4 -3
  446. package/lib/iconsets/mdi.mjs.map +1 -1
  447. package/lib/index.d.mts +40 -38
  448. package/lib/labs/VBottomSheet/VBottomSheet.mjs +1 -1
  449. package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -1
  450. package/lib/labs/VBottomSheet/index.d.mts +55 -94
  451. package/lib/labs/VDataIterator/VDataIterator.mjs +13 -10
  452. package/lib/labs/VDataIterator/VDataIterator.mjs.map +1 -1
  453. package/lib/labs/VDataIterator/composables/items.mjs +9 -3
  454. package/lib/labs/VDataIterator/composables/items.mjs.map +1 -1
  455. package/lib/labs/VDataIterator/index.d.mts +143 -132
  456. package/lib/labs/VDataTable/VDataTable.css +1 -0
  457. package/lib/labs/VDataTable/VDataTable.mjs +14 -11
  458. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  459. package/lib/labs/VDataTable/VDataTable.sass +1 -0
  460. package/lib/labs/VDataTable/VDataTableColumn.mjs +2 -1
  461. package/lib/labs/VDataTable/VDataTableColumn.mjs.map +1 -1
  462. package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -3
  463. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  464. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +5 -5
  465. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  466. package/lib/labs/VDataTable/VDataTableHeaders.mjs +10 -9
  467. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  468. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -1
  469. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  470. package/lib/labs/VDataTable/VDataTableRows.mjs +20 -16
  471. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  472. package/lib/labs/VDataTable/VDataTableServer.mjs +15 -10
  473. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  474. package/lib/labs/VDataTable/VDataTableVirtual.mjs +40 -25
  475. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  476. package/lib/labs/VDataTable/composables/expand.mjs +4 -4
  477. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  478. package/lib/labs/VDataTable/composables/group.mjs +1 -1
  479. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  480. package/lib/labs/VDataTable/composables/headers.mjs +2 -2
  481. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
  482. package/lib/labs/VDataTable/composables/items.mjs +12 -9
  483. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  484. package/lib/labs/VDataTable/composables/paginate.mjs +1 -1
  485. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  486. package/lib/labs/VDataTable/composables/select.mjs +125 -9
  487. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  488. package/lib/labs/VDataTable/composables/sort.mjs +4 -9
  489. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  490. package/lib/labs/VDataTable/index.d.mts +1792 -2979
  491. package/lib/labs/VDataTable/types.mjs.map +1 -1
  492. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
  493. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  494. package/lib/labs/VInfiniteScroll/index.d.mts +60 -91
  495. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +4 -4
  496. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  497. package/lib/labs/VSkeletonLoader/index.d.mts +0 -15
  498. package/lib/labs/components.d.mts +2049 -3320
  499. package/lib/labs/date/date.mjs.map +1 -1
  500. package/lib/labs/entry-bundler.mjs +3 -1
  501. package/lib/labs/entry-bundler.mjs.map +1 -1
  502. package/lib/locale/adapters/vue-i18n.d.mts +1 -1
  503. package/lib/locale/adapters/vue-i18n.mjs +5 -1
  504. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  505. package/lib/locale/adapters/vuetify.mjs +1 -3
  506. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  507. package/lib/styles/settings/_colors.scss +18 -15
  508. package/lib/util/anchor.mjs +1 -0
  509. package/lib/util/anchor.mjs.map +1 -1
  510. package/lib/util/animation.mjs +1 -0
  511. package/lib/util/animation.mjs.map +1 -1
  512. package/lib/util/color/APCA.mjs +1 -0
  513. package/lib/util/color/APCA.mjs.map +1 -1
  514. package/lib/util/color/transformCIELAB.mjs +2 -0
  515. package/lib/util/color/transformCIELAB.mjs.map +1 -1
  516. package/lib/util/color/transformSRGB.mjs +3 -1
  517. package/lib/util/color/transformSRGB.mjs.map +1 -1
  518. package/lib/util/colorUtils.mjs +2 -2
  519. package/lib/util/colorUtils.mjs.map +1 -1
  520. package/lib/util/console.mjs +1 -0
  521. package/lib/util/console.mjs.map +1 -1
  522. package/lib/util/createSimpleFunctional.mjs +2 -1
  523. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  524. package/lib/util/defineComponent.mjs +5 -5
  525. package/lib/util/defineComponent.mjs.map +1 -1
  526. package/lib/util/getCurrentInstance.mjs +1 -2
  527. package/lib/util/getCurrentInstance.mjs.map +1 -1
  528. package/lib/util/helpers.mjs +3 -3
  529. package/lib/util/helpers.mjs.map +1 -1
  530. package/lib/util/injectSelf.mjs +2 -1
  531. package/lib/util/injectSelf.mjs.map +1 -1
  532. package/lib/util/propsFactory.mjs +1 -0
  533. package/lib/util/propsFactory.mjs.map +1 -1
  534. package/package.json +3 -2
  535. package/lib/labs/VDataTable/composables/virtual.mjs +0 -77
  536. package/lib/labs/VDataTable/composables/virtual.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"locationStrategies.mjs","names":["computed","nextTick","onScopeDispose","ref","watch","clamp","consoleError","convertToUnit","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","anchorToPoint","getOffset","useToggleScope","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","isActive","value","reset","undefined","window","addEventListener","onResize","passive","removeEventListener","e","getIntrinsicSize","el","isRtl","contentBox","x","parseFloat","style","right","left","y","top","activatorFixed","activatorEl","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","isArray","split","length","push","observe","observer","ResizeObserver","contentEl","_ref","_ref2","newActivatorEl","newContentEl","oldActivatorEl","oldContentEl","unobserve","immediate","disconnect","requestAnimationFrame","targetBox","getBoundingClientRect","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","scrollBox","width","clientWidth","height","clientHeight","Math","max","min","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","result","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } 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// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Types\nimport type { 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\ntype LocationStrategyFn = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n) => undefined | { updateLocation: (e: Event) => void }\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 | LocationStrategyFn\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}, 'v-overlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n updateLocation.value = undefined\n })\n\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 window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\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, isRtl: boolean) {\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 if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\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 top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\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 const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n\n watch([data.activatorEl, data.contentEl], ([newActivatorEl, newContentEl], [oldActivatorEl, oldContentEl]) => {\n if (oldActivatorEl) observer.unobserve(oldActivatorEl)\n if (newActivatorEl) observer.observe(newActivatorEl)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n if (!data.activatorEl.value || !data.contentEl.value) return\n\n const targetBox = data.activatorEl.value.getBoundingClientRect()\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.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: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\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 return {\n available,\n contentBox,\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 )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\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
+ {"version":3,"file":"locationStrategies.mjs","names":["useToggleScope","computed","nextTick","onScopeDispose","ref","watch","anchorToPoint","getOffset","clamp","consoleError","convertToUnit","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","isActive","value","reset","undefined","window","addEventListener","onResize","passive","removeEventListener","e","getIntrinsicSize","el","isRtl","contentBox","x","parseFloat","style","right","left","y","top","activatorFixed","activatorEl","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","isArray","split","length","push","observe","observer","ResizeObserver","contentEl","_ref","_ref2","newActivatorEl","newContentEl","oldActivatorEl","oldContentEl","unobserve","immediate","disconnect","requestAnimationFrame","targetBox","getBoundingClientRect","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","scrollBox","width","clientWidth","height","clientHeight","Math","max","min","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","result","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue'\nimport { anchorToPoint, getOffset } from './util/point'\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'\n\n// Types\nimport type { 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\ntype LocationStrategyFn = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n) => undefined | { updateLocation: (e: Event) => void }\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 | LocationStrategyFn\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}, 'VOverlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n updateLocation.value = undefined\n })\n\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 window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\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, isRtl: boolean) {\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 if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\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 top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\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 const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n\n watch([data.activatorEl, data.contentEl], ([newActivatorEl, newContentEl], [oldActivatorEl, oldContentEl]) => {\n if (oldActivatorEl) observer.unobserve(oldActivatorEl)\n if (newActivatorEl) observer.observe(newActivatorEl)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n if (!data.activatorEl.value || !data.contentEl.value) return\n\n const targetBox = data.activatorEl.value.getBoundingClientRect()\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.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: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\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 return {\n available,\n contentBox,\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 )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\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,7 @@
1
1
  // Utilities
2
- import { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from "../../util/index.mjs";
3
2
  import { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';
4
- import { requestNewFrame } from "./requestNewFrame.mjs"; // Types
3
+ import { requestNewFrame } from "./requestNewFrame.mjs";
4
+ import { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from "../../util/index.mjs"; // Types
5
5
  const scrollStrategies = {
6
6
  none: null,
7
7
  close: closeScrollStrategy,
@@ -14,7 +14,7 @@ export const makeScrollStrategyProps = propsFactory({
14
14
  default: 'block',
15
15
  validator: val => typeof val === 'function' || val in scrollStrategies
16
16
  }
17
- }, 'v-overlay-scroll-strategies');
17
+ }, 'VOverlay-scroll-strategies');
18
18
  export function useScrollStrategies(props, data) {
19
19
  if (!IN_BROWSER) return;
20
20
  let scope;
@@ -1 +1 @@
1
- {"version":3,"file":"scrollStrategies.mjs","names":["convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","active","run","onScroll","e","bindScroll","activatorEl","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'v-overlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.activatorEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.activatorEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"AAAA;AAAA,SACSA,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,UAAU,EAAEC,YAAY;AAChF,SAASC,WAAW,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAC/DC,eAAe,iCAExB;AAaA,MAAMC,gBAAgB,GAAG;EACvBC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAEC,mBAAmB;EAC1BC,KAAK,EAAEC,mBAAmB;EAC1BC,UAAU,EAAEC;AACd,CAAC;AAOD,OAAO,MAAMC,uBAAuB,GAAGd,YAAY,CAAC;EAClDe,cAAc,EAAE;IACdC,IAAI,EAAE,CAACC,MAAM,EAAEC,QAAQ,CAA8C;IACrEC,OAAO,EAAE,OAAO;IAChBC,SAAS,EAAGC,GAAQ,IAAK,OAAOA,GAAG,KAAK,UAAU,IAAIA,GAAG,IAAIf;EAC/D;AACF,CAAC,EAAE,6BAA6B,CAAC;AAEjC,OAAO,SAASgB,mBAAmBA,CACjCC,KAAoB,EACpBC,IAAwB,EACxB;EACA,IAAI,CAACzB,UAAU,EAAE;EAEjB,IAAI0B,KAA8B;EAClCrB,WAAW,CAAC,YAAY;IACtBqB,KAAK,EAAEC,IAAI,EAAE;IAEb,IAAI,EAAEF,IAAI,CAACG,QAAQ,CAACC,KAAK,IAAIL,KAAK,CAACR,cAAc,CAAC,EAAE;IAEpDU,KAAK,GAAGxB,WAAW,EAAE;IACrB,MAAMC,QAAQ,EAAE;IAChBuB,KAAK,CAACI,MAAM,IAAIJ,KAAK,CAACK,GAAG,CAAC,MAAM;MAC9B,IAAI,OAAOP,KAAK,CAACR,cAAc,KAAK,UAAU,EAAE;QAC9CQ,KAAK,CAACR,cAAc,CAACS,IAAI,EAAED,KAAK,EAAEE,KAAK,CAAE;MAC3C,CAAC,MAAM;QACLnB,gBAAgB,CAACiB,KAAK,CAACR,cAAc,CAAC,GAAGS,IAAI,EAAED,KAAK,EAAEE,KAAK,CAAE;MAC/D;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFtB,cAAc,CAAC,MAAM;IACnBsB,KAAK,EAAEC,IAAI,EAAE;EACf,CAAC,CAAC;AACJ;AAEA,SAASjB,mBAAmBA,CAAEe,IAAwB,EAAE;EACtD,SAASO,QAAQA,CAAEC,CAAQ,EAAE;IAC3BR,IAAI,CAACG,QAAQ,CAACC,KAAK,GAAG,KAAK;EAC7B;EAEAK,UAAU,CAACT,IAAI,CAACU,WAAW,CAACN,KAAK,IAAIJ,IAAI,CAACW,SAAS,CAACP,KAAK,EAAEG,QAAQ,CAAC;AACtE;AAEA,SAASpB,mBAAmBA,CAAEa,IAAwB,EAAED,KAAoB,EAAE;EAC5E,MAAMa,YAAY,GAAGZ,IAAI,CAACa,IAAI,CAACT,KAAK,EAAEQ,YAAY;EAClD,MAAME,cAAc,GAAG,CAAC,GAAG,IAAIC,GAAG,CAAC,CACjC,GAAG1C,gBAAgB,CAAC2B,IAAI,CAACU,WAAW,CAACN,KAAK,EAAEL,KAAK,CAACiB,SAAS,GAAGJ,YAAY,GAAGK,SAAS,CAAC,EACvF,GAAG5C,gBAAgB,CAAC2B,IAAI,CAACW,SAAS,CAACP,KAAK,EAAEL,KAAK,CAACiB,SAAS,GAAGJ,YAAY,GAAGK,SAAS,CAAC,CACtF,CAAC,CAAC,CAACC,MAAM,CAACC,EAAE,IAAI,CAACA,EAAE,CAACC,SAAS,CAACC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;EACpE,MAAMC,cAAc,GAAGC,MAAM,CAACC,UAAU,GAAGC,QAAQ,CAACC,eAAe,CAACC,WAAW;EAE/E,MAAMC,gBAAgB,GAAG,CAACT,EAAE,IAAI7C,YAAY,CAAC6C,EAAE,CAAC,IAAIA,EAAE,EAAEP,YAAY,IAAIa,QAAQ,CAACC,eAAe,CAAC;EACjG,IAAIE,gBAAgB,EAAE;IACpB5B,IAAI,CAACa,IAAI,CAACT,KAAK,CAAEgB,SAAS,CAACS,GAAG,CAAC,2BAA2B,CAAC;EAC7D;EAEAf,cAAc,CAACgB,OAAO,CAAC,CAACX,EAAE,EAAEY,CAAC,KAAK;IAChCZ,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAE7D,aAAa,CAAC,CAAC+C,EAAE,CAACe,UAAU,CAAC,CAAC;IACxEf,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAE7D,aAAa,CAAC,CAAC+C,EAAE,CAACgB,SAAS,CAAC,CAAC;IACvEhB,EAAE,CAACa,KAAK,CAACC,WAAW,CAAC,sBAAsB,EAAE7D,aAAa,CAACkD,cAAc,CAAC,CAAC;IAC3EH,EAAE,CAACC,SAAS,CAACS,GAAG,CAAC,0BAA0B,CAAC;EAC9C,CAAC,CAAC;EAEFlD,cAAc,CAAC,MAAM;IACnBmC,cAAc,CAACgB,OAAO,CAAC,CAACX,EAAE,EAAEY,CAAC,KAAK;MAChC,MAAMK,CAAC,GAAGC,UAAU,CAAClB,EAAE,CAACa,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MACpE,MAAMC,CAAC,GAAGF,UAAU,CAAClB,EAAE,CAACa,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MAEpEnB,EAAE,CAACa,KAAK,CAACQ,cAAc,CAAC,mBAAmB,CAAC;MAC5CrB,EAAE,CAACa,KAAK,CAACQ,cAAc,CAAC,mBAAmB,CAAC;MAC5CrB,EAAE,CAACa,KAAK,CAACQ,cAAc,CAAC,sBAAsB,CAAC;MAC/CrB,EAAE,CAACC,SAAS,CAACqB,MAAM,CAAC,0BAA0B,CAAC;MAE/CtB,EAAE,CAACe,UAAU,GAAG,CAACE,CAAC;MAClBjB,EAAE,CAACgB,SAAS,GAAG,CAACI,CAAC;IACnB,CAAC,CAAC;IACF,IAAIX,gBAAgB,EAAE;MACpB5B,IAAI,CAACa,IAAI,CAACT,KAAK,CAAEgB,SAAS,CAACqB,MAAM,CAAC,2BAA2B,CAAC;IAChE;EACF,CAAC,CAAC;AACJ;AAEA,SAASpD,wBAAwBA,CAAEW,IAAwB,EAAED,KAAoB,EAAEE,KAAkB,EAAE;EACrG,IAAIyC,IAAI,GAAG,KAAK;EAChB,IAAIC,GAAG,GAAG,CAAC,CAAC;EACZ,IAAIC,GAAG,GAAG,CAAC,CAAC;EAEZ,SAASC,MAAMA,CAAErC,CAAQ,EAAE;IACzB3B,eAAe,CAAC,MAAM;MACpB,MAAMiE,KAAK,GAAGC,WAAW,CAACC,GAAG,EAAE;MAC/BhD,IAAI,CAACiD,cAAc,CAAC7C,KAAK,GAAGI,CAAC,CAAC;MAC9B,MAAM0C,IAAI,GAAGH,WAAW,CAACC,GAAG,EAAE,GAAGF,KAAK;MACtCJ,IAAI,GAAGQ,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC;IAC/B,CAAC,CAAC;EACJ;EAEAN,GAAG,GAAG,CAAC,OAAOO,mBAAmB,KAAK,WAAW,GAAIC,EAAY,IAAKA,EAAE,EAAE,GAAGD,mBAAmB,EAAE,MAAM;IACtGlD,KAAK,CAACK,GAAG,CAAC,MAAM;MACdG,UAAU,CAACT,IAAI,CAACU,WAAW,CAACN,KAAK,IAAIJ,IAAI,CAACW,SAAS,CAACP,KAAK,EAAEI,CAAC,IAAI;QAC9D,IAAIkC,IAAI,EAAE;UACR;UACA;UACA;UACA;UACAW,oBAAoB,CAACV,GAAG,CAAC;UACzBA,GAAG,GAAGW,qBAAqB,CAAC,MAAM;YAChCX,GAAG,GAAGW,qBAAqB,CAAC,MAAM;cAChCT,MAAM,CAACrC,CAAC,CAAC;YACX,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,MAAM;UACLqC,MAAM,CAACrC,CAAC,CAAC;QACX;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF7B,cAAc,CAAC,MAAM;IACnB,OAAO4E,kBAAkB,KAAK,WAAW,IAAIA,kBAAkB,CAACX,GAAG,CAAC;IACpES,oBAAoB,CAACV,GAAG,CAAC;EAC3B,CAAC,CAAC;AACJ;;AAEA;AACA,SAASlC,UAAUA,CAAEU,EAA2B,EAAEZ,QAA4B,EAAE;EAC9E,MAAMO,cAAc,GAAG,CAACW,QAAQ,EAAE,GAAGpD,gBAAgB,CAAC8C,EAAE,CAAC,CAAC;EAC1DL,cAAc,CAACgB,OAAO,CAACX,EAAE,IAAI;IAC3BA,EAAE,CAACqC,gBAAgB,CAAC,QAAQ,EAAEjD,QAAQ,EAAE;MAAEkD,OAAO,EAAE;IAAK,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEF9E,cAAc,CAAC,MAAM;IACnBmC,cAAc,CAACgB,OAAO,CAACX,EAAE,IAAI;MAC3BA,EAAE,CAACuC,mBAAmB,CAAC,QAAQ,EAAEnD,QAAQ,CAAC;IAC5C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"scrollStrategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","active","run","onScroll","e","bindScroll","activatorEl","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.activatorEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.activatorEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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"}
@@ -1,11 +1,8 @@
1
- // Composables
2
- import { makeDelayProps, useDelay } from "../../composables/delay.mjs";
3
- import { VMenuSymbol } from "../VMenu/shared.mjs"; // Utilities
4
- import { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from "../../util/index.mjs";
1
+ // Components
2
+ import { VMenuSymbol } from "../VMenu/shared.mjs"; // Composables
3
+ import { makeDelayProps, useDelay } from "../../composables/delay.mjs"; // Utilities
5
4
  import { computed, effectScope, inject, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';
6
-
7
- // Types
8
-
5
+ import { getCurrentInstance, IN_BROWSER, propsFactory, refElement, SUPPORTS_FOCUS_VISIBLE } from "../../util/index.mjs"; // Types
9
6
  export const makeActivatorProps = propsFactory({
10
7
  activator: [String, Object],
11
8
  activatorProps: {
@@ -23,7 +20,7 @@ export const makeActivatorProps = propsFactory({
23
20
  },
24
21
  closeOnContentClick: Boolean,
25
22
  ...makeDelayProps()
26
- }, 'v-overlay-activator');
23
+ }, 'VOverlay-activator');
27
24
  export function useActivator(props, _ref) {
28
25
  let {
29
26
  isActive,
@@ -137,8 +134,7 @@ export function useActivator(props, _ref) {
137
134
  watchEffect(() => {
138
135
  if (!activatorRef.value) return;
139
136
  nextTick(() => {
140
- const activator = activatorRef.value;
141
- activatorEl.value = isComponentInstance(activator) ? activator.$el : activator;
137
+ activatorEl.value = refElement(activatorRef.value);
142
138
  });
143
139
  });
144
140
  const vm = getCurrentInstance('useActivator');
@@ -1 +1 @@
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","_ref","isActive","isTop","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","sourceCapabilities","firesTouchEvents","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","scrimEvents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","arguments","length","_props","entries","forEach","_ref3","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","_ref4","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}, 'v-overlay-activator')\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 let firstEnter = true\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 if (isActive.value !== value) {\n firstEnter = true\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 if (e.sourceCapabilities?.firesTouchEvents) return\n\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 const scrimEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n if (props.openOnHover) {\n events.mouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\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 onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents }\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":["VMenuSymbol","makeDelayProps","useDelay","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","getCurrentInstance","IN_BROWSER","propsFactory","refElement","SUPPORTS_FOCUS_VISIBLE","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","sourceCapabilities","firesTouchEvents","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","scrimEvents","val","activatorRef","vm","scope","run","_useActivator","stop","flush","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","arguments","length","_props","entries","forEach","_ref3","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","_ref4","removeEventListener","selector","proxy","$el","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n getCurrentInstance,\n IN_BROWSER,\n propsFactory,\n refElement,\n SUPPORTS_FOCUS_VISIBLE,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\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}, 'VOverlay-activator')\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 let firstEnter = true\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 if (isActive.value !== value) {\n firstEnter = true\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 if (e.sourceCapabilities?.firesTouchEvents) return\n\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 const scrimEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n if (props.openOnHover) {\n events.mouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\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 activatorEl.value = refElement(activatorRef.value)\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 onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents }\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,3 +1,5 @@
1
+ // Types
2
+
1
3
  /** Convert a point in local space to viewport space */
2
4
  export function elementToViewport(point, offset) {
3
5
  return {
@@ -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 === '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,iBAAiBA,CAAEC,KAAmB,EAAEC,MAAoB,EAAE;EAC5E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASC,iBAAiBA,CAAEJ,KAAoB,EAAEC,MAAoB,EAAE;EAC7E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,SAASA,CAAmBC,CAAI,EAAEC,CAAI,EAAE;EACtD,OAAO;IACLL,CAAC,EAAEI,CAAC,CAACJ,CAAC,GAAGK,CAAC,CAACL,CAAC;IACZC,CAAC,EAAEG,CAAC,CAACH,CAAC,GAAGI,CAAC,CAACJ;EACb,CAAC;AACH;;AAEA;AACA,OAAO,SAASK,aAAaA,CAAEC,MAAoB,EAAEC,GAAQ,EAAiB;EAC5E,IAAID,MAAM,CAACE,IAAI,KAAK,KAAK,IAAIF,MAAM,CAACE,IAAI,KAAK,QAAQ,EAAE;IACrD,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GACbU,KAAK,KAAK,MAAM,GAAG,CAAC,GAClBA,KAAK,KAAK,QAAQ,GAAGF,GAAG,CAACG,KAAK,GAAG,CAAC,GAClCD,KAAK,KAAK,OAAO,GAAGF,GAAG,CAACG,KAAK,GAC7BD,KAAK;IACT,MAAMT,CAAS,GACbQ,IAAI,KAAK,KAAK,GAAG,CAAC,GAChBA,IAAI,KAAK,QAAQ,GAAGD,GAAG,CAACI,MAAM,GAC9BH,IAAI;IAER,OAAOZ,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD,CAAC,MAAM,IAAID,MAAM,CAACE,IAAI,KAAK,MAAM,IAAIF,MAAM,CAACE,IAAI,KAAK,OAAO,EAAE;IAC5D,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GACbS,IAAI,KAAK,MAAM,GAAG,CAAC,GACjBA,IAAI,KAAK,OAAO,GAAGD,GAAG,CAACG,KAAK,GAC5BF,IAAI;IACR,MAAMR,CAAS,GACbS,KAAK,KAAK,KAAK,GAAG,CAAC,GACjBA,KAAK,KAAK,QAAQ,GAAGF,GAAG,CAACI,MAAM,GAAG,CAAC,GACnCF,KAAK,KAAK,QAAQ,GAAGF,GAAG,CAACI,MAAM,GAC/BF,KAAK;IAET,OAAOb,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD;EAEA,OAAOX,iBAAiB,CAAC;IACvBG,CAAC,EAAEQ,GAAG,CAACG,KAAK,GAAG,CAAC;IAChBV,CAAC,EAAEO,GAAG,CAACI,MAAM,GAAG;EAClB,CAAC,EAAkBJ,GAAG,CAAC;AACzB"}
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":["// Types\nimport 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":"AAAA;;AAYA;AACA,OAAO,SAASA,iBAAiBA,CAAEC,KAAmB,EAAEC,MAAoB,EAAE;EAC5E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASC,iBAAiBA,CAAEJ,KAAoB,EAAEC,MAAoB,EAAE;EAC7E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGD,MAAM,CAACC,CAAC;IACrBC,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGF,MAAM,CAACE;EACtB,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,SAASA,CAAmBC,CAAI,EAAEC,CAAI,EAAE;EACtD,OAAO;IACLL,CAAC,EAAEI,CAAC,CAACJ,CAAC,GAAGK,CAAC,CAACL,CAAC;IACZC,CAAC,EAAEG,CAAC,CAACH,CAAC,GAAGI,CAAC,CAACJ;EACb,CAAC;AACH;;AAEA;AACA,OAAO,SAASK,aAAaA,CAAEC,MAAoB,EAAEC,GAAQ,EAAiB;EAC5E,IAAID,MAAM,CAACE,IAAI,KAAK,KAAK,IAAIF,MAAM,CAACE,IAAI,KAAK,QAAQ,EAAE;IACrD,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GACbU,KAAK,KAAK,MAAM,GAAG,CAAC,GAClBA,KAAK,KAAK,QAAQ,GAAGF,GAAG,CAACG,KAAK,GAAG,CAAC,GAClCD,KAAK,KAAK,OAAO,GAAGF,GAAG,CAACG,KAAK,GAC7BD,KAAK;IACT,MAAMT,CAAS,GACbQ,IAAI,KAAK,KAAK,GAAG,CAAC,GAChBA,IAAI,KAAK,QAAQ,GAAGD,GAAG,CAACI,MAAM,GAC9BH,IAAI;IAER,OAAOZ,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD,CAAC,MAAM,IAAID,MAAM,CAACE,IAAI,KAAK,MAAM,IAAIF,MAAM,CAACE,IAAI,KAAK,OAAO,EAAE;IAC5D,MAAM;MAAEA,IAAI;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAE9B,MAAMP,CAAS,GACbS,IAAI,KAAK,MAAM,GAAG,CAAC,GACjBA,IAAI,KAAK,OAAO,GAAGD,GAAG,CAACG,KAAK,GAC5BF,IAAI;IACR,MAAMR,CAAS,GACbS,KAAK,KAAK,KAAK,GAAG,CAAC,GACjBA,KAAK,KAAK,QAAQ,GAAGF,GAAG,CAACI,MAAM,GAAG,CAAC,GACnCF,KAAK,KAAK,QAAQ,GAAGF,GAAG,CAACI,MAAM,GAC/BF,KAAK;IAET,OAAOb,iBAAiB,CAAC;MAAEG,CAAC;MAAEC;IAAE,CAAC,EAAkBO,GAAG,CAAC;EACzD;EAEA,OAAOX,iBAAiB,CAAC;IACvBG,CAAC,EAAEQ,GAAG,CAACG,KAAK,GAAG,CAAC;IAChBV,CAAC,EAAEO,GAAG,CAACI,MAAM,GAAG;EAClB,CAAC,EAAkBJ,GAAG,CAAC;AACzB"}
@@ -4,22 +4,22 @@ import "./VPagination.css";
4
4
 
5
5
  // Components
6
6
  import { VBtn } from "../VBtn/index.mjs"; // Composables
7
- import { IconValue } from "../../composables/icons.mjs";
7
+ import { useDisplay } from "../../composables/index.mjs";
8
8
  import { makeBorderProps } from "../../composables/border.mjs";
9
9
  import { makeComponentProps } from "../../composables/component.mjs";
10
+ import { provideDefaults } from "../../composables/defaults.mjs";
10
11
  import { makeDensityProps } from "../../composables/density.mjs";
11
12
  import { makeElevationProps } from "../../composables/elevation.mjs";
13
+ import { IconValue } from "../../composables/icons.mjs";
14
+ import { useLocale, useRtl } from "../../composables/locale.mjs";
15
+ import { useProxiedModel } from "../../composables/proxiedModel.mjs";
16
+ import { useRefs } from "../../composables/refs.mjs";
17
+ import { useResizeObserver } from "../../composables/resizeObserver.mjs";
12
18
  import { makeRoundedProps } from "../../composables/rounded.mjs";
13
19
  import { makeSizeProps } from "../../composables/size.mjs";
14
20
  import { makeTagProps } from "../../composables/tag.mjs";
15
21
  import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
16
- import { makeVariantProps } from "../../composables/variant.mjs";
17
- import { provideDefaults } from "../../composables/defaults.mjs";
18
- import { useDisplay } from "../../composables/index.mjs";
19
- import { useLocale, useRtl } from "../../composables/locale.mjs";
20
- import { useProxiedModel } from "../../composables/proxiedModel.mjs";
21
- import { useRefs } from "../../composables/refs.mjs";
22
- import { useResizeObserver } from "../../composables/resizeObserver.mjs"; // Utilities
22
+ import { makeVariantProps } from "../../composables/variant.mjs"; // Utilities
23
23
  import { computed, nextTick, shallowRef, toRef } from 'vue';
24
24
  import { createRange, genericComponent, keyValues, propsFactory, useRender } from "../../util/index.mjs"; // Types
25
25
  export const makeVPaginationProps = propsFactory({
@@ -101,7 +101,7 @@ export const makeVPaginationProps = propsFactory({
101
101
  ...makeVariantProps({
102
102
  variant: 'text'
103
103
  })
104
- }, 'v-pagination');
104
+ }, 'VPagination');
105
105
  export const VPagination = genericComponent()({
106
106
  name: 'VPagination',
107
107
  props: makeVPaginationProps(),
@@ -1 +1 @@
1
- {"version":3,"file":"VPagination.mjs","names":["VBtn","IconValue","makeBorderProps","makeComponentProps","makeDensityProps","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useDisplay","useLocale","useRtl","useProxiedModel","useRefs","useResizeObserver","computed","nextTick","shallowRef","toRef","createRange","genericComponent","keyValues","propsFactory","useRender","makeVPaginationProps","activeColor","String","start","type","Number","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","VPagination","name","emits","value","first","prev","next","last","setup","_ref","slots","emit","page","t","n","isRtl","themeClasses","width","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","getMax","parseInt","minButtons","Math","max","floor","toFixed","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","rounded","elevation","items","map","item","index","ref","isActive","key","icon","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown","_createVNode","class","style","_mergeProps"],"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 { makeComponentProps } from '@/composables/component'\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 { useDisplay } from '@/composables'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue'\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\ntype ItemSlot = {\n isActive: boolean\n key: string | number\n page: string\n props: Record<string, any>\n}\n\ntype ControlSlot = {\n icon: IconValue\n onClick: (e: Event) => void\n disabled: boolean\n ariaLabel: string\n ariaDisabled: boolean\n}\n\nexport type VPaginationSlots = {\n item: [ItemSlot]\n first: [ControlSlot]\n prev: [ControlSlot]\n next: [ControlSlot]\n last: [ControlSlot]\n}\n\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start as number,\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 ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'v-pagination')\n\nexport const VPagination = genericComponent<VPaginationSlots>()({\n name: 'VPagination',\n\n props: makeVPaginationProps(),\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 { width } = useDisplay()\n const maxButtons = shallowRef(-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 > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n maxButtons.value = getMax(totalWidth, 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 parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return getMax(width.value, 58)\n })\n\n function getMax (totalWidth: number, itemWidth: number) {\n const minButtons = props.showFirstLastPage ? 5 : 3\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\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 <= 1) 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 >= (even ? 1 : 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 rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\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 key: `ellipsis-${index}`,\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 key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\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 props.class,\n ]}\n style={ props.style }\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.key }\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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"}
1
+ {"version":3,"file":"VPagination.mjs","names":["VBtn","useDisplay","makeBorderProps","makeComponentProps","provideDefaults","makeDensityProps","makeElevationProps","IconValue","useLocale","useRtl","useProxiedModel","useRefs","useResizeObserver","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","nextTick","shallowRef","toRef","createRange","genericComponent","keyValues","propsFactory","useRender","makeVPaginationProps","activeColor","String","start","type","Number","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","VPagination","name","emits","value","first","prev","next","last","setup","_ref","slots","emit","page","t","n","isRtl","themeClasses","width","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","getMax","parseInt","minButtons","Math","max","floor","toFixed","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","rounded","elevation","items","map","item","index","ref","isActive","key","icon","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown","_createVNode","class","style","_mergeProps"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\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'\n\n// Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue'\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\ntype ItemSlot = {\n isActive: boolean\n key: string | number\n page: string\n props: Record<string, any>\n}\n\ntype ControlSlot = {\n icon: IconValue\n onClick: (e: Event) => void\n disabled: boolean\n ariaLabel: string\n ariaDisabled: boolean\n}\n\nexport type VPaginationSlots = {\n item: ItemSlot\n first: ControlSlot\n prev: ControlSlot\n next: ControlSlot\n last: ControlSlot\n}\n\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start as number,\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 ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VPagination')\n\nexport const VPagination = genericComponent<VPaginationSlots>()({\n name: 'VPagination',\n\n props: makeVPaginationProps(),\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 { width } = useDisplay()\n const maxButtons = shallowRef(-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 > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n maxButtons.value = getMax(totalWidth, 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 parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return getMax(width.value, 58)\n })\n\n function getMax (totalWidth: number, itemWidth: number) {\n const minButtons = props.showFirstLastPage ? 5 : 3\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\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 <= 1) 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 >= (even ? 1 : 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 rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\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 key: `ellipsis-${index}`,\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 key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\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 props.class,\n ]}\n style={ props.style }\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.key }\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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"}