@vuetify/nightly 3.0.0-beta.3 → 3.0.0-beta.6

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 (441) hide show
  1. package/CHANGELOG.md +43 -2
  2. package/dist/_component-variables.sass +61 -0
  3. package/dist/json/attributes.json +261 -205
  4. package/dist/json/importMap.json +175 -219
  5. package/dist/json/tags.json +74 -104
  6. package/dist/json/web-types.json +880 -835
  7. package/dist/vuetify.css +597 -407
  8. package/dist/vuetify.d.ts +6770 -2144
  9. package/dist/vuetify.esm.js +9075 -8454
  10. package/dist/vuetify.esm.js.map +1 -1
  11. package/dist/vuetify.js +9074 -8453
  12. package/dist/vuetify.js.map +1 -1
  13. package/dist/vuetify.min.css +2 -2
  14. package/dist/vuetify.min.js +1078 -1040
  15. package/dist/vuetify.min.js.map +1 -1
  16. package/lib/blueprints/index.mjs +4 -0
  17. package/lib/blueprints/index.mjs.map +1 -0
  18. package/lib/blueprints/md1.mjs +63 -0
  19. package/lib/blueprints/md1.mjs.map +1 -0
  20. package/lib/blueprints/md2.mjs +60 -0
  21. package/lib/blueprints/md2.mjs.map +1 -0
  22. package/lib/blueprints/md3.mjs +74 -0
  23. package/lib/blueprints/md3.mjs.map +1 -0
  24. package/lib/components/VAlert/VAlert.css +5 -5
  25. package/lib/components/VAlert/VAlert.mjs +8 -2
  26. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  27. package/lib/components/VAlert/VAlert.sass +0 -2
  28. package/lib/components/VApp/VApp.css +2 -5
  29. package/lib/components/VApp/VApp.mjs +3 -4
  30. package/lib/components/VApp/VApp.mjs.map +1 -1
  31. package/lib/components/VApp/VApp.sass +11 -12
  32. package/lib/components/VApp/variables.scss +6 -0
  33. package/lib/components/VAppBar/VAppBar.mjs +4 -3
  34. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  35. package/lib/components/VAppBar/VAppBar.sass +0 -1
  36. package/lib/components/VAppBar/VAppBarNavIcon.mjs +7 -12
  37. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  38. package/lib/components/VAppBar/VAppBarTitle.mjs +4 -3
  39. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  40. package/lib/components/VAppBar/_variables.scss +2 -0
  41. package/lib/components/VAutocomplete/VAutocomplete.mjs +54 -21
  42. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  43. package/lib/components/VAutocomplete/VAutocomplete.sass +0 -2
  44. package/lib/components/VAvatar/VAvatar.css +1 -1
  45. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  46. package/lib/components/VAvatar/VAvatar.sass +1 -2
  47. package/lib/components/VAvatar/_mixins.scss +0 -1
  48. package/lib/components/VBadge/VBadge.mjs +8 -7
  49. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  50. package/lib/components/VBadge/VBadge.sass +0 -1
  51. package/lib/components/VBadge/_variables.scss +2 -2
  52. package/lib/components/VBanner/VBanner.css +7 -7
  53. package/lib/components/VBanner/VBanner.mjs +24 -17
  54. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  55. package/lib/components/VBanner/VBanner.sass +6 -8
  56. package/lib/components/VBanner/VBannerActions.mjs +1 -1
  57. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  58. package/lib/components/VBanner/index.mjs +0 -2
  59. package/lib/components/VBanner/index.mjs.map +1 -1
  60. package/lib/components/VBottomNavigation/VBottomNavigation.css +4 -11
  61. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -3
  62. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  63. package/lib/components/VBottomNavigation/VBottomNavigation.sass +5 -13
  64. package/lib/components/VBottomNavigation/_variables.scss +7 -8
  65. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +13 -6
  66. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +30 -19
  67. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  68. package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +8 -4
  69. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +5 -8
  70. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  71. package/lib/components/VBreadcrumbs/_variables.scss +2 -1
  72. package/lib/components/VBtn/VBtn.css +72 -15
  73. package/lib/components/VBtn/VBtn.mjs +70 -27
  74. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  75. package/lib/components/VBtn/VBtn.sass +70 -13
  76. package/lib/components/VBtn/_variables.scss +4 -1
  77. package/lib/components/VBtnGroup/VBtnGroup.sass +0 -1
  78. package/lib/components/VBtnGroup/_variables.scss +2 -0
  79. package/lib/components/VBtnToggle/VBtnToggle.sass +0 -1
  80. package/lib/components/VBtnToggle/_variables.scss +1 -0
  81. package/lib/components/VCard/VCard.css +86 -69
  82. package/lib/components/VCard/VCard.mjs +52 -66
  83. package/lib/components/VCard/VCard.mjs.map +1 -1
  84. package/lib/components/VCard/VCard.sass +74 -62
  85. package/lib/components/VCard/VCardActions.mjs +1 -1
  86. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  87. package/lib/components/VCard/VCardItem.mjs +88 -0
  88. package/lib/components/VCard/VCardItem.mjs.map +1 -0
  89. package/lib/components/VCard/_variables.scss +40 -24
  90. package/lib/components/VCard/index.mjs +1 -5
  91. package/lib/components/VCard/index.mjs.map +1 -1
  92. package/lib/components/VCarousel/VCarousel.mjs +5 -4
  93. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  94. package/lib/components/VCarousel/VCarousel.sass +0 -1
  95. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  96. package/lib/components/VCarousel/_variables.scss +1 -0
  97. package/lib/components/VCheckbox/VCheckbox.mjs +13 -46
  98. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  99. package/lib/components/VCheckbox/VCheckbox.sass +0 -1
  100. package/lib/components/VCheckbox/VCheckboxBtn.mjs +67 -0
  101. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -0
  102. package/lib/components/VCheckbox/index.mjs +1 -0
  103. package/lib/components/VCheckbox/index.mjs.map +1 -1
  104. package/lib/components/VChip/VChip.css +142 -65
  105. package/lib/components/VChip/VChip.mjs +77 -38
  106. package/lib/components/VChip/VChip.mjs.map +1 -1
  107. package/lib/components/VChip/VChip.sass +6 -1
  108. package/lib/components/VChip/_mixins.scss +26 -6
  109. package/lib/components/VChip/_variables.scss +1 -5
  110. package/lib/components/VChipGroup/VChipGroup.mjs +5 -4
  111. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  112. package/lib/components/VChipGroup/VChipGroup.sass +1 -1
  113. package/lib/components/VChipGroup/_variables.scss +1 -1
  114. package/lib/components/VCode/VCode.sass +1 -2
  115. package/lib/components/VCode/_variables.scss +1 -1
  116. package/lib/components/VColorPicker/VColorPicker.mjs +16 -10
  117. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  118. package/lib/components/VColorPicker/VColorPicker.sass +0 -1
  119. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -4
  120. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  121. package/lib/components/VColorPicker/VColorPickerCanvas.sass +0 -1
  122. package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -3
  123. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  124. package/lib/components/VColorPicker/VColorPickerEdit.sass +0 -1
  125. package/lib/components/VColorPicker/VColorPickerPreview.mjs +4 -3
  126. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  127. package/lib/components/VColorPicker/VColorPickerPreview.sass +0 -1
  128. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +6 -5
  129. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  130. package/lib/components/VColorPicker/VColorPickerSwatches.sass +0 -1
  131. package/lib/components/VColorPicker/_variables.scss +17 -10
  132. package/lib/components/VCombobox/VCombobox.mjs +52 -36
  133. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  134. package/lib/components/VCombobox/VCombobox.sass +0 -2
  135. package/lib/components/VCounter/VCounter.mjs +16 -16
  136. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  137. package/lib/components/VCounter/VCounter.sass +1 -2
  138. package/lib/components/VCounter/_variables.scss +2 -1
  139. package/lib/components/VDialog/VDialog.css +2 -5
  140. package/lib/components/VDialog/VDialog.mjs +25 -25
  141. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  142. package/lib/components/VDialog/VDialog.sass +1 -5
  143. package/lib/components/VDialog/_variables.scss +0 -1
  144. package/lib/components/VDivider/VDivider.mjs +16 -17
  145. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  146. package/lib/components/VDivider/VDivider.sass +0 -1
  147. package/lib/components/VDivider/_variables.scss +3 -1
  148. package/lib/components/VExpansionPanel/VExpansionPanel.css +1 -0
  149. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +9 -4
  150. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  151. package/lib/components/VExpansionPanel/VExpansionPanel.sass +1 -1
  152. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +7 -7
  153. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  154. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  155. package/lib/components/VExpansionPanel/_variables.scss +15 -10
  156. package/lib/components/VField/VField.css +11 -11
  157. package/lib/components/VField/VField.mjs +19 -12
  158. package/lib/components/VField/VField.mjs.map +1 -1
  159. package/lib/components/VField/VField.sass +8 -10
  160. package/lib/components/VField/VFieldLabel.mjs +8 -9
  161. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  162. package/lib/components/VField/_variables.scss +3 -3
  163. package/lib/components/VFileInput/VFileInput.css +3 -3
  164. package/lib/components/VFileInput/VFileInput.mjs +12 -7
  165. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  166. package/lib/components/VFileInput/VFileInput.sass +3 -4
  167. package/lib/components/VFooter/VFooter.mjs +4 -3
  168. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  169. package/lib/components/VFooter/VFooter.sass +0 -1
  170. package/lib/components/VFooter/_variables.scss +2 -1
  171. package/lib/components/VForm/VForm.mjs +3 -3
  172. package/lib/components/VForm/VForm.mjs.map +1 -1
  173. package/lib/components/VGrid/VCol.mjs.map +1 -1
  174. package/lib/components/VGrid/VContainer.mjs +4 -3
  175. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  176. package/lib/components/VGrid/VRow.mjs.map +1 -1
  177. package/lib/components/VIcon/VIcon.css +0 -8
  178. package/lib/components/VIcon/VIcon.mjs +20 -21
  179. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  180. package/lib/components/VIcon/VIcon.sass +0 -9
  181. package/lib/components/VIcon/_variables.scss +2 -5
  182. package/lib/components/VIcon/index.mjs.map +1 -1
  183. package/lib/components/VImg/VImg.sass +0 -1
  184. package/lib/components/VInput/VInput.mjs +13 -9
  185. package/lib/components/VInput/VInput.mjs.map +1 -1
  186. package/lib/components/VInput/VInput.sass +0 -1
  187. package/lib/components/VItemGroup/VItem.mjs +3 -0
  188. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  189. package/lib/components/VItemGroup/VItemGroup.sass +0 -1
  190. package/lib/components/VKbd/VKbd.sass +0 -1
  191. package/lib/components/VKbd/_variables.scss +1 -1
  192. package/lib/components/VLabel/VLabel.mjs +4 -3
  193. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  194. package/lib/components/VLabel/VLabel.sass +0 -1
  195. package/lib/components/VLabel/_variables.scss +1 -0
  196. package/lib/components/VLazy/VLazy.mjs +5 -3
  197. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  198. package/lib/components/VList/VList.css +2 -2
  199. package/lib/components/VList/VList.mjs +16 -18
  200. package/lib/components/VList/VList.mjs.map +1 -1
  201. package/lib/components/VList/VList.sass +1 -2
  202. package/lib/components/VList/VListChildren.mjs +7 -6
  203. package/lib/components/VList/VListChildren.mjs.map +1 -1
  204. package/lib/components/VList/VListGroup.mjs +45 -31
  205. package/lib/components/VList/VListGroup.mjs.map +1 -1
  206. package/lib/components/VList/VListItem.css +84 -58
  207. package/lib/components/VList/VListItem.mjs +78 -45
  208. package/lib/components/VList/VListItem.mjs.map +1 -1
  209. package/lib/components/VList/VListItem.sass +68 -40
  210. package/lib/components/VList/VListItemAction.mjs +8 -9
  211. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  212. package/lib/components/VList/VListItemMedia.mjs +4 -3
  213. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  214. package/lib/components/VList/VListSubheader.mjs +4 -3
  215. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  216. package/lib/components/VList/_variables.scss +11 -5
  217. package/lib/components/VList/index.mjs +2 -5
  218. package/lib/components/VList/index.mjs.map +1 -1
  219. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -3
  220. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  221. package/lib/components/VMain/VMain.mjs +4 -3
  222. package/lib/components/VMain/VMain.mjs.map +1 -1
  223. package/lib/components/VMain/VMain.sass +0 -1
  224. package/lib/components/VMain/_variables.scss +1 -1
  225. package/lib/components/VMenu/VMenu.mjs +5 -5
  226. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  227. package/lib/components/VMenu/VMenu.sass +0 -1
  228. package/lib/components/VMessages/VMessages.mjs +5 -3
  229. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  230. package/lib/components/VMessages/VMessages.sass +0 -1
  231. package/lib/components/VMessages/_variables.scss +1 -1
  232. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +10 -4
  233. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  234. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
  235. package/lib/components/VNavigationDrawer/_variables.scss +2 -1
  236. package/lib/components/VNavigationDrawer/touch.mjs +5 -2
  237. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  238. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  239. package/lib/components/VOverlay/VOverlay.mjs +10 -8
  240. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  241. package/lib/components/VOverlay/VOverlay.sass +0 -1
  242. package/lib/components/VOverlay/locationStrategies.mjs +267 -78
  243. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  244. package/lib/components/VOverlay/useActivator.mjs +4 -3
  245. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  246. package/lib/components/VOverlay/util/point.mjs +3 -3
  247. package/lib/components/VOverlay/util/point.mjs.map +1 -1
  248. package/lib/components/VPagination/VPagination.mjs +41 -23
  249. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  250. package/lib/components/VPagination/VPagination.sass +0 -1
  251. package/lib/components/VParallax/VParallax.mjs +5 -5
  252. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  253. package/lib/components/VProgressCircular/VProgressCircular.mjs +6 -5
  254. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  255. package/lib/components/VProgressCircular/VProgressCircular.sass +0 -1
  256. package/lib/components/VProgressCircular/_variables.scss +2 -0
  257. package/lib/components/VProgressLinear/VProgressLinear.mjs +5 -3
  258. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  259. package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
  260. package/lib/components/VProgressLinear/_variables.scss +1 -0
  261. package/lib/components/VRadioGroup/VRadioGroup.mjs +6 -3
  262. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  263. package/lib/components/VRadioGroup/VRadioGroup.sass +5 -3
  264. package/lib/components/VRadioGroup/_variables.scss +3 -4
  265. package/lib/components/VRangeSlider/VRangeSlider.mjs +12 -13
  266. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  267. package/lib/components/VRating/VRating.mjs +6 -5
  268. package/lib/components/VRating/VRating.mjs.map +1 -1
  269. package/lib/components/VRating/VRating.sass +2 -1
  270. package/lib/components/VResponsive/VResponsive.mjs +7 -6
  271. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  272. package/lib/components/VSelect/VSelect.mjs +61 -22
  273. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  274. package/lib/components/VSelect/VSelect.sass +0 -2
  275. package/lib/components/VSelectionControl/VSelectionControl.css +1 -0
  276. package/lib/components/VSelectionControl/VSelectionControl.mjs +12 -10
  277. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  278. package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
  279. package/lib/components/VSelectionControl/_variables.scss +1 -0
  280. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +3 -3
  281. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  282. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +1 -6
  283. package/lib/components/VSelectionControlGroup/_variables.scss +1 -4
  284. package/lib/components/VSheet/VSheet.mjs +3 -3
  285. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  286. package/lib/components/VSheet/VSheet.sass +0 -1
  287. package/lib/components/VSheet/_variables.scss +3 -2
  288. package/lib/components/VSlideGroup/VSlideGroup.mjs +47 -49
  289. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  290. package/lib/components/VSlideGroup/VSlideGroup.sass +0 -1
  291. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +7 -3
  292. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  293. package/lib/components/VSlideGroup/_variables.scss +0 -5
  294. package/lib/components/VSlideGroup/index.mjs +2 -2
  295. package/lib/components/VSlideGroup/index.mjs.map +1 -1
  296. package/lib/components/VSlider/VSlider.mjs +7 -9
  297. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  298. package/lib/components/VSlider/VSlider.sass +0 -2
  299. package/lib/components/VSlider/VSliderThumb.mjs +6 -5
  300. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  301. package/lib/components/VSlider/VSliderThumb.sass +0 -2
  302. package/lib/components/VSlider/VSliderTrack.mjs +11 -10
  303. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  304. package/lib/components/VSlider/VSliderTrack.sass +0 -2
  305. package/lib/components/VSlider/slider.mjs +4 -4
  306. package/lib/components/VSlider/slider.mjs.map +1 -1
  307. package/lib/components/VSnackbar/VSnackbar.css +5 -5
  308. package/lib/components/VSnackbar/VSnackbar.mjs +49 -49
  309. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  310. package/lib/components/VSnackbar/VSnackbar.sass +0 -1
  311. package/lib/components/VSnackbar/_variables.scss +2 -0
  312. package/lib/components/VSwitch/VSwitch.css +7 -0
  313. package/lib/components/VSwitch/VSwitch.mjs +8 -2
  314. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  315. package/lib/components/VSwitch/VSwitch.sass +6 -1
  316. package/lib/components/VSwitch/_variables.scss +1 -0
  317. package/lib/components/VSystemBar/VSystemBar.mjs +5 -13
  318. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  319. package/lib/components/VSystemBar/VSystemBar.sass +0 -1
  320. package/lib/components/VSystemBar/_variables.scss +2 -1
  321. package/lib/components/VTable/VTable.css +1 -0
  322. package/lib/components/VTable/VTable.mjs +9 -8
  323. package/lib/components/VTable/VTable.mjs.map +1 -1
  324. package/lib/components/VTable/VTable.sass +1 -1
  325. package/lib/components/VTable/_variables.scss +2 -0
  326. package/lib/components/VTabs/VTab.css +3 -1
  327. package/lib/components/VTabs/VTab.mjs +4 -4
  328. package/lib/components/VTabs/VTab.mjs.map +1 -1
  329. package/lib/components/VTabs/VTab.sass +4 -2
  330. package/lib/components/VTabs/VTabs.mjs +15 -12
  331. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  332. package/lib/components/VTabs/VTabs.sass +0 -1
  333. package/lib/components/VTabs/_variables.scss +2 -0
  334. package/lib/components/VTextField/VTextField.mjs +25 -13
  335. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  336. package/lib/components/VTextField/VTextField.sass +0 -1
  337. package/lib/components/VTextField/_variables.scss +1 -1
  338. package/lib/components/VTextarea/VTextarea.mjs +22 -12
  339. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  340. package/lib/components/VTextarea/VTextarea.sass +0 -2
  341. package/lib/components/VTextarea/_variables.scss +1 -0
  342. package/lib/components/VTimeline/VTimeline.mjs +24 -25
  343. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  344. package/lib/components/VTimeline/VTimeline.sass +3 -3
  345. package/lib/components/VTimeline/VTimelineDivider.mjs +41 -38
  346. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  347. package/lib/components/VTimeline/VTimelineItem.mjs +10 -11
  348. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  349. package/lib/components/VTimeline/_variables.scss +11 -6
  350. package/lib/components/VToolbar/VToolbar.css +15 -6
  351. package/lib/components/VToolbar/VToolbar.mjs +9 -9
  352. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  353. package/lib/components/VToolbar/VToolbar.sass +15 -7
  354. package/lib/components/VToolbar/VToolbarItems.mjs +12 -8
  355. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  356. package/lib/components/VToolbar/_variables.scss +6 -2
  357. package/lib/components/VTooltip/VTooltip.mjs +41 -39
  358. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  359. package/lib/components/VTooltip/VTooltip.sass +0 -1
  360. package/lib/components/VTooltip/_variables.scss +1 -0
  361. package/lib/components/VWindow/VWindow.mjs +4 -4
  362. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  363. package/lib/components/VWindow/VWindow.sass +0 -2
  364. package/lib/components/VWindow/VWindowItem.mjs +21 -11
  365. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  366. package/lib/components/VWindow/_variables.scss +1 -0
  367. package/lib/components/index.d.ts +7316 -2666
  368. package/lib/components/transitions/dialog-transition.mjs +3 -0
  369. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  370. package/lib/components/transitions/index.mjs +0 -5
  371. package/lib/components/transitions/index.mjs.map +1 -1
  372. package/lib/composables/border.mjs +5 -6
  373. package/lib/composables/border.mjs.map +1 -1
  374. package/lib/composables/display.mjs +13 -11
  375. package/lib/composables/display.mjs.map +1 -1
  376. package/lib/composables/form.mjs +6 -6
  377. package/lib/composables/form.mjs.map +1 -1
  378. package/lib/composables/group.mjs.map +1 -1
  379. package/lib/composables/items.mjs +2 -2
  380. package/lib/composables/items.mjs.map +1 -1
  381. package/lib/composables/location.mjs +4 -8
  382. package/lib/composables/location.mjs.map +1 -1
  383. package/lib/composables/proxiedModel.mjs +2 -1
  384. package/lib/composables/proxiedModel.mjs.map +1 -1
  385. package/lib/composables/size.mjs +2 -2
  386. package/lib/composables/size.mjs.map +1 -1
  387. package/lib/composables/ssrBoot.mjs +3 -2
  388. package/lib/composables/ssrBoot.mjs.map +1 -1
  389. package/lib/composables/stack.mjs +7 -7
  390. package/lib/composables/stack.mjs.map +1 -1
  391. package/lib/composables/theme.mjs +15 -6
  392. package/lib/composables/theme.mjs.map +1 -1
  393. package/lib/composables/validation.mjs +15 -8
  394. package/lib/composables/validation.mjs.map +1 -1
  395. package/lib/composables/variant.mjs +7 -5
  396. package/lib/composables/variant.mjs.map +1 -1
  397. package/lib/directives/ripple/VRipple.sass +0 -1
  398. package/lib/entry-bundler.mjs +1 -1
  399. package/lib/framework.mjs +29 -7
  400. package/lib/framework.mjs.map +1 -1
  401. package/lib/index.d.ts +68 -70
  402. package/lib/styles/generic/_transitions.scss +13 -77
  403. package/lib/styles/main.css +44 -58
  404. package/lib/styles/tools/_variant.sass +6 -6
  405. package/lib/util/anchor.mjs +34 -28
  406. package/lib/util/anchor.mjs.map +1 -1
  407. package/lib/util/animation.mjs +2 -2
  408. package/lib/util/animation.mjs.map +1 -1
  409. package/lib/util/box.mjs +12 -0
  410. package/lib/util/box.mjs.map +1 -1
  411. package/lib/util/getCurrentInstance.mjs +19 -0
  412. package/lib/util/getCurrentInstance.mjs.map +1 -1
  413. package/lib/util/helpers.mjs +21 -5
  414. package/lib/util/helpers.mjs.map +1 -1
  415. package/package.json +16 -10
  416. package/lib/components/VBanner/VBannerAvatar.mjs +0 -20
  417. package/lib/components/VBanner/VBannerAvatar.mjs.map +0 -1
  418. package/lib/components/VBanner/VBannerIcon.mjs +0 -20
  419. package/lib/components/VBanner/VBannerIcon.mjs.map +0 -1
  420. package/lib/components/VBreadcrumbs/shared.mjs +0 -2
  421. package/lib/components/VBreadcrumbs/shared.mjs.map +0 -1
  422. package/lib/components/VCard/VCardAvatar.mjs +0 -3
  423. package/lib/components/VCard/VCardAvatar.mjs.map +0 -1
  424. package/lib/components/VCard/VCardContent.mjs +0 -3
  425. package/lib/components/VCard/VCardContent.mjs.map +0 -1
  426. package/lib/components/VCard/VCardHeader.mjs +0 -3
  427. package/lib/components/VCard/VCardHeader.mjs.map +0 -1
  428. package/lib/components/VCard/VCardHeaderText.mjs +0 -3
  429. package/lib/components/VCard/VCardHeaderText.mjs.map +0 -1
  430. package/lib/components/VCard/VCardImg.mjs +0 -3
  431. package/lib/components/VCard/VCardImg.mjs.map +0 -1
  432. package/lib/components/VList/VListItemAvatar.mjs +0 -23
  433. package/lib/components/VList/VListItemAvatar.mjs.map +0 -1
  434. package/lib/components/VList/VListItemHeader.mjs +0 -3
  435. package/lib/components/VList/VListItemHeader.mjs.map +0 -1
  436. package/lib/components/VList/VListItemIcon.mjs +0 -23
  437. package/lib/components/VList/VListItemIcon.mjs.map +0 -1
  438. package/lib/components/VTimeline/shared.mjs +0 -2
  439. package/lib/components/VTimeline/shared.mjs.map +0 -1
  440. package/lib/presets/default/index.mjs +0 -71
  441. package/lib/presets/default/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VOverlay.mjs","names":["makeActivatorProps","useActivator","makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeThemeProps","provideTheme","makeTransitionProps","MaybeTransition","useBackButton","useRouter","useToggleScope","useBackgroundColor","useProxiedModel","useRtl","useTeleport","makeDimensionProps","useDimension","makeLazyProps","useLazy","useStack","ClickOutside","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","standardEasing","useRender","computed","mergeProps","ref","Teleport","toHandlers","toRef","Transition","watch","Scrim","props","modelValue","color","rest","backgroundColorClasses","value","backgroundColorStyles","VOverlay","name","directives","inheritAttrs","absolute","Boolean","attach","String","Object","closeOnBack","type","default","contained","contentClass","contentProps","disabled","noClickAnimation","persistent","scrim","zIndex","Number","emits","e","afterLeave","setup","slots","attrs","emit","model","isActive","get","set","v","teleportTarget","themeClasses","rtlClasses","hasContent","onAfterLeave","scrimColor","isTop","stackStyles","activatorEl","activatorRef","activatorEvents","contentEvents","dimensionStyles","root","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","router","next","top","scrollParent","document","scrollingElement","scrollTop","animate","transformOrigin","transform","duration","easing","activator","activatorProps","transition","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRtl } from '@/composables/rtl'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useStack } from '@/composables/stack'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n standardEasing,\n useRender,\n} from '@/util'\nimport {\n computed,\n mergeProps,\n ref,\n Teleport,\n toHandlers,\n toRef,\n Transition,\n watch,\n} from 'vue'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = MakeSlots<{\n default: [{ isActive: Ref<boolean> }]\n activator: [{ isActive: boolean, props: Record<string, any> }]\n}>\n\nexport const VOverlay = genericComponent<new () => {\n $slots: OverlaySlots\n}>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeDimensionProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n ...makeLazyProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses } = useRtl()\n const { hasContent, onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { isTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'))\n const { activatorEl, activatorRef, activatorEvents, contentEvents } = useActivator(props, { isActive, isTop })\n const { dimensionStyles } = useDimension(props)\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n contentEl,\n activatorEl,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n activatorEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && isTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && isTop.value) {\n if (!props.persistent) {\n isActive.value = false\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (isTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value?.animate([\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n }, toHandlers(activatorEvents.value), props.activatorProps),\n }) }\n\n { IN_BROWSER && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n { hasContent.value && (\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n ]}\n style={[stackStyles.value, { top: convertToUnit(top.value) }]}\n ref={ root }\n {...attrs}\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ activatorEl.value }\n onAfterLeave={() => { onAfterLeave(); emit('afterLeave') }}\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...toHandlers(contentEvents.value) }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n )}\n </Teleport>\n ) }\n </>\n ))\n\n return {\n animateClick,\n contentEl,\n activatorEl,\n isTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VOverlay.mjs","names":["makeActivatorProps","useActivator","makeDimensionProps","useDimension","makeLazyProps","useLazy","makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeThemeProps","provideTheme","makeTransitionProps","MaybeTransition","useBackButton","useRouter","useBackgroundColor","useProxiedModel","useRtl","useStack","useTeleport","useToggleScope","ClickOutside","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","standardEasing","useRender","computed","mergeProps","ref","Teleport","toHandlers","toRef","Transition","watch","Scrim","props","modelValue","color","rest","backgroundColorClasses","value","backgroundColorStyles","VOverlay","name","directives","inheritAttrs","absolute","Boolean","attach","String","Object","closeOnBack","type","default","contained","contentClass","contentProps","disabled","noClickAnimation","persistent","scrim","zIndex","Number","emits","e","afterLeave","setup","slots","attrs","emit","model","isActive","get","set","v","teleportTarget","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","scrimColor","isTop","stackStyles","activatorEl","activatorRef","activatorEvents","contentEvents","dimensionStyles","root","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","router","next","top","scrollParent","document","scrollingElement","scrollTop","animate","transformOrigin","transform","duration","easing","activator","activatorProps","transition","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRtl } from '@/composables/rtl'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n standardEasing,\n useRender,\n} from '@/util'\nimport {\n computed,\n mergeProps,\n ref,\n Teleport,\n toHandlers,\n toRef,\n Transition,\n watch,\n} from 'vue'\n\n// Types\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { MakeSlots } from '@/util'\nimport type { PropType, Ref } from 'vue'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = MakeSlots<{\n default: [{ isActive: Ref<boolean> }]\n activator: [{ isActive: boolean, props: Record<string, any> }]\n}>\n\nexport const VOverlay = genericComponent<new () => {\n $slots: OverlaySlots\n}>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { isTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'))\n const { activatorEl, activatorRef, activatorEvents, contentEvents } = useActivator(props, { isActive, isTop })\n const { dimensionStyles } = useDimension(props)\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n activatorEl,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n activatorEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && isTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && isTop.value) {\n if (!props.persistent) {\n isActive.value = false\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (isTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value?.animate([\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n }, toHandlers(activatorEvents.value), props.activatorProps),\n }) }\n\n { IN_BROWSER && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n { hasContent.value && (\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n ]}\n style={[stackStyles.value, { top: convertToUnit(top.value) }]}\n ref={ root }\n {...attrs}\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ activatorEl.value }\n onAfterLeave={() => { onAfterLeave(); emit('afterLeave') }}\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...toHandlers(contentEvents.value) }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n )}\n </Teleport>\n ) }\n </>\n ))\n\n return {\n activatorEl,\n animateClick,\n contentEl,\n isTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use 'sass:selector'
3
2
  @use './variables' as *
4
3
 
@@ -1,7 +1,7 @@
1
1
  // Utilities
2
2
  import { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';
3
- import { convertToUnit, getScrollParent, IN_BROWSER, isFixedPosition, nullifyTransforms, oppositeAnchor, parseAnchor, physicalAnchor, propsFactory } from "../../util/index.mjs";
4
- import { Box } from "../../util/box.mjs";
3
+ import { clamp, consoleError, convertToUnit, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from "../../util/index.mjs";
4
+ import { Box, getOverflow } from "../../util/box.mjs";
5
5
  import { anchorToPoint, getOffset } from "./util/point.mjs"; // Types
6
6
 
7
7
  const locationStrategies = {
@@ -24,7 +24,7 @@ export const makeLocationStrategyProps = propsFactory({
24
24
  type: String,
25
25
  default: 'auto'
26
26
  },
27
- offset: [Number, String]
27
+ offset: [Number, String, Array]
28
28
  });
29
29
  export function useLocationStrategies(props, data) {
30
30
  const contentStyles = ref({});
@@ -75,6 +75,34 @@ export function useLocationStrategies(props, data) {
75
75
 
76
76
  function staticLocationStrategy() {// TODO
77
77
  }
78
+ /** Get size of element ignoring max-width/max-height */
79
+
80
+
81
+ function getIntrinsicSize(el) {
82
+ // const scrollables = new Map<Element, [number, number]>()
83
+ // el.querySelectorAll('*').forEach(el => {
84
+ // const x = el.scrollLeft
85
+ // const y = el.scrollTop
86
+ // if (x || y) {
87
+ // scrollables.set(el, [x, y])
88
+ // }
89
+ // })
90
+ // const initialMaxWidth = el.style.maxWidth
91
+ // const initialMaxHeight = el.style.maxHeight
92
+ // el.style.removeProperty('max-width')
93
+ // el.style.removeProperty('max-height')
94
+
95
+ /* eslint-disable-next-line sonarjs/prefer-immediate-return */
96
+ const contentBox = nullifyTransforms(el);
97
+ contentBox.x -= parseFloat(el.style.left || 0);
98
+ contentBox.y -= parseFloat(el.style.top || 0); // el.style.maxWidth = initialMaxWidth
99
+ // el.style.maxHeight = initialMaxHeight
100
+ // scrollables.forEach((position, el) => {
101
+ // el.scrollTo(...position)
102
+ // })
103
+
104
+ return contentBox;
105
+ }
78
106
 
79
107
  function connectedLocationStrategy(data, props, contentStyles) {
80
108
  const activatorFixed = isFixedPosition(data.activatorEl.value);
@@ -85,18 +113,43 @@ function connectedLocationStrategy(data, props, contentStyles) {
85
113
  });
86
114
  }
87
115
 
88
- const preferredAnchor = computed(() => parseAnchor(props.location));
89
- const preferredOrigin = computed(() => props.origin === 'overlap' ? preferredAnchor.value : props.origin === 'auto' ? oppositeAnchor(preferredAnchor.value) : parseAnchor(props.origin));
90
- const doesOverlap = computed(() => {
91
- return preferredAnchor.value.side === preferredOrigin.value.side;
116
+ const {
117
+ preferredAnchor,
118
+ preferredOrigin
119
+ } = destructComputed(() => {
120
+ const parsedAnchor = parseAnchor(props.location, data.isRtl.value);
121
+ const parsedOrigin = props.origin === 'overlap' ? parsedAnchor : props.origin === 'auto' ? flipSide(parsedAnchor) : parseAnchor(props.origin, data.isRtl.value); // Some combinations of props may produce an invalid origin
122
+
123
+ if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {
124
+ return {
125
+ preferredAnchor: flipCorner(parsedAnchor),
126
+ preferredOrigin: flipCorner(parsedOrigin)
127
+ };
128
+ } else {
129
+ return {
130
+ preferredAnchor: parsedAnchor,
131
+ preferredOrigin: parsedOrigin
132
+ };
133
+ }
92
134
  });
93
- const configuredMaxHeight = computed(() => {
94
- const val = parseFloat(props.maxHeight);
95
- return isNaN(val) ? Infinity : val;
135
+ const [minWidth, minHeight, maxWidth, maxHeight] = ['minWidth', 'minHeight', 'maxWidth', 'maxHeight'].map(key => {
136
+ return computed(() => {
137
+ const val = parseFloat(props[key]);
138
+ return isNaN(val) ? Infinity : val;
139
+ });
96
140
  });
97
- const configuredMinWidth = computed(() => {
98
- const val = parseFloat(props.minWidth);
99
- return isNaN(val) ? Infinity : val;
141
+ const offset = computed(() => {
142
+ if (Array.isArray(props.offset)) {
143
+ return props.offset;
144
+ }
145
+
146
+ if (typeof props.offset === 'string') {
147
+ const offset = props.offset.split(' ').map(parseFloat);
148
+ if (offset.length < 2) offset.push(0);
149
+ return offset;
150
+ }
151
+
152
+ return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];
100
153
  });
101
154
  let observe = false;
102
155
 
@@ -113,86 +166,214 @@ function connectedLocationStrategy(data, props, contentStyles) {
113
166
 
114
167
 
115
168
  function updateLocation() {
116
- var _props$maxWidth;
117
-
118
169
  observe = false;
119
170
  requestAnimationFrame(() => {
120
171
  requestAnimationFrame(() => observe = true);
121
172
  });
122
- const targetBox = data.activatorEl.value.getBoundingClientRect(); // TODO: offset shouldn't affect width
173
+ const targetBox = data.activatorEl.value.getBoundingClientRect();
174
+ const contentBox = getIntrinsicSize(data.contentEl.value);
175
+ const scrollParents = getScrollParents(data.contentEl.value);
176
+ const viewportMargin = 12;
123
177
 
124
- if (props.offset) {
125
- targetBox.x -= +props.offset;
126
- targetBox.y -= +props.offset;
127
- targetBox.width += +props.offset * 2;
128
- targetBox.height += +props.offset * 2;
178
+ if (!scrollParents.length) {
179
+ scrollParents.push(document.documentElement);
180
+
181
+ if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {
182
+ contentBox.x += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0);
183
+ contentBox.y += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0);
184
+ }
129
185
  }
130
186
 
131
- const scrollParent = getScrollParent(data.contentEl.value);
132
- const viewportWidth = scrollParent.clientWidth;
133
- const viewportHeight = Math.min(scrollParent.clientHeight, window.innerHeight);
134
- let contentBox;
135
- {
136
- const scrollables = new Map();
137
- data.contentEl.value.querySelectorAll('*').forEach(el => {
138
- const x = el.scrollLeft;
139
- const y = el.scrollTop;
140
-
141
- if (x || y) {
142
- scrollables.set(el, [x, y]);
143
- }
144
- });
145
- const initialMaxWidth = data.contentEl.value.style.maxWidth;
146
- const initialMaxHeight = data.contentEl.value.style.maxHeight;
147
- data.contentEl.value.style.removeProperty('max-width');
148
- data.contentEl.value.style.removeProperty('max-height');
149
- contentBox = nullifyTransforms(data.contentEl.value);
150
- contentBox.x -= parseFloat(data.contentEl.value.style.left) || 0;
151
- contentBox.y -= parseFloat(data.contentEl.value.style.top) || 0;
152
- data.contentEl.value.style.maxWidth = initialMaxWidth;
153
- data.contentEl.value.style.maxHeight = initialMaxHeight;
154
- scrollables.forEach((position, el) => {
155
- el.scrollTo(...position);
187
+ const viewport = scrollParents.reduce((box, el) => {
188
+ const rect = el.getBoundingClientRect();
189
+ const scrollBox = new Box({
190
+ x: el === document.documentElement ? 0 : rect.x,
191
+ y: el === document.documentElement ? 0 : rect.y,
192
+ width: el.clientWidth,
193
+ height: el.clientHeight
156
194
  });
195
+
196
+ if (box) {
197
+ return new Box({
198
+ x: Math.max(box.left, scrollBox.left),
199
+ y: Math.max(box.top, scrollBox.top),
200
+ width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),
201
+ height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top)
202
+ });
203
+ }
204
+
205
+ return scrollBox;
206
+ }, undefined);
207
+ viewport.x += viewportMargin;
208
+ viewport.y += viewportMargin;
209
+ viewport.width -= viewportMargin * 2;
210
+ viewport.height -= viewportMargin * 2;
211
+ let placement = {
212
+ anchor: preferredAnchor.value,
213
+ origin: preferredOrigin.value
214
+ };
215
+
216
+ function checkOverflow(_placement) {
217
+ const box = new Box(contentBox);
218
+ const targetPoint = anchorToPoint(_placement.anchor, targetBox);
219
+ const contentPoint = anchorToPoint(_placement.origin, box);
220
+ let {
221
+ x,
222
+ y
223
+ } = getOffset(targetPoint, contentPoint);
224
+
225
+ switch (_placement.anchor.side) {
226
+ case 'top':
227
+ y -= offset.value[0];
228
+ break;
229
+
230
+ case 'bottom':
231
+ y += offset.value[0];
232
+ break;
233
+
234
+ case 'left':
235
+ x -= offset.value[0];
236
+ break;
237
+
238
+ case 'right':
239
+ x += offset.value[0];
240
+ break;
241
+ }
242
+
243
+ switch (_placement.anchor.align) {
244
+ case 'top':
245
+ y -= offset.value[1];
246
+ break;
247
+
248
+ case 'bottom':
249
+ y += offset.value[1];
250
+ break;
251
+
252
+ case 'left':
253
+ x -= offset.value[1];
254
+ break;
255
+
256
+ case 'right':
257
+ x += offset.value[1];
258
+ break;
259
+ }
260
+
261
+ box.x += x;
262
+ box.y += y;
263
+ box.width = Math.min(box.width, maxWidth.value);
264
+ box.height = Math.min(box.height, maxHeight.value);
265
+ const overflows = getOverflow(box, viewport);
266
+ return {
267
+ overflows,
268
+ x,
269
+ y
270
+ };
157
271
  }
158
- const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height); // Regard undefined maxWidth as maximally occupying whole remaining space by default
159
272
 
160
- const maxFreeSpaceWidth = props.maxWidth === undefined ? Number.MAX_VALUE : parseInt((_props$maxWidth = props.maxWidth) != null ? _props$maxWidth : 0, 10);
161
- const viewportMargin = 12;
162
- const freeSpace = {
163
- top: targetBox.top - viewportMargin,
164
- bottom: viewportHeight - targetBox.bottom - viewportMargin,
165
- left: Math.min(targetBox.left - viewportMargin, maxFreeSpaceWidth),
166
- right: Math.min(viewportWidth - targetBox.right - viewportMargin, maxFreeSpaceWidth)
273
+ let x = 0;
274
+ let y = 0;
275
+ const available = {
276
+ x: 0,
277
+ y: 0
278
+ };
279
+ const flipped = {
280
+ x: false,
281
+ y: false
167
282
  };
168
- const fitsY = preferredAnchor.value.side === 'bottom' && contentHeight <= freeSpace.bottom || preferredAnchor.value.side === 'top' && contentHeight <= freeSpace.top;
169
- const anchor = fitsY ? preferredAnchor.value : preferredAnchor.value.side === 'bottom' && freeSpace.top > freeSpace.bottom || preferredAnchor.value.side === 'top' && freeSpace.bottom > freeSpace.top ? oppositeAnchor(preferredAnchor.value) : preferredAnchor.value;
170
- const origin = fitsY ? preferredOrigin.value : oppositeAnchor(anchor);
171
- const canFill = doesOverlap.value || ['center', 'top', 'bottom'].includes(anchor.side);
172
- const maxWidth = canFill ? Math.min(viewportWidth, Math.max(targetBox.width, viewportWidth - viewportMargin * 2)) : anchor.side === 'end' ? freeSpace.right : anchor.side === 'start' ? freeSpace.left : null;
173
- const minWidth = Math.min(configuredMinWidth.value, maxWidth, targetBox.width);
174
- const maxHeight = fitsY ? configuredMaxHeight.value : Math.min(configuredMaxHeight.value, Math.floor(anchor.side === 'top' ? freeSpace.top : freeSpace.bottom));
175
- const targetPoint = anchorToPoint(anchor, targetBox);
176
- const contentPoint = anchorToPoint(origin, new Box({ ...contentBox,
177
- height: Math.min(contentHeight, maxHeight)
178
- }));
179
- const {
180
- x,
181
- y
182
- } = getOffset(targetPoint, contentPoint);
283
+ let resets = -1;
284
+
285
+ while (true) {
286
+ if (resets++ > 10) {
287
+ consoleError('Infinite loop detected in connectedLocationStrategy');
288
+ break;
289
+ }
290
+
291
+ const {
292
+ x: _x,
293
+ y: _y,
294
+ overflows
295
+ } = checkOverflow(placement);
296
+ x += _x;
297
+ y += _y;
298
+ contentBox.x += _x;
299
+ contentBox.y += _y; // flip
300
+
301
+ {
302
+ const axis = getAxis(placement.anchor);
303
+ const hasOverflowX = overflows.x.before || overflows.x.after;
304
+ const hasOverflowY = overflows.y.before || overflows.y.after;
305
+ let reset = false;
306
+ ['x', 'y'].forEach(key => {
307
+ if (key === 'x' && hasOverflowX && !flipped.x || key === 'y' && hasOverflowY && !flipped.y) {
308
+ const newPlacement = {
309
+ anchor: { ...placement.anchor
310
+ },
311
+ origin: { ...placement.origin
312
+ }
313
+ };
314
+ const flip = key === 'x' ? axis === 'y' ? flipAlign : flipSide : axis === 'y' ? flipSide : flipAlign;
315
+ newPlacement.anchor = flip(newPlacement.anchor);
316
+ newPlacement.origin = flip(newPlacement.origin);
317
+ const {
318
+ overflows: newOverflows
319
+ } = checkOverflow(newPlacement);
320
+
321
+ if (newOverflows[key].before <= overflows[key].before && newOverflows[key].after <= overflows[key].after || newOverflows[key].before + newOverflows[key].after < (overflows[key].before + overflows[key].after) / 2) {
322
+ placement = newPlacement;
323
+ reset = flipped[key] = true;
324
+ }
325
+ }
326
+ });
327
+ if (reset) continue;
328
+ } // shift
329
+
330
+ if (overflows.x.before) {
331
+ x += overflows.x.before;
332
+ contentBox.x += overflows.x.before;
333
+ }
334
+
335
+ if (overflows.x.after) {
336
+ x -= overflows.x.after;
337
+ contentBox.x -= overflows.x.after;
338
+ }
339
+
340
+ if (overflows.y.before) {
341
+ y += overflows.y.before;
342
+ contentBox.y += overflows.y.before;
343
+ }
344
+
345
+ if (overflows.y.after) {
346
+ y -= overflows.y.after;
347
+ contentBox.y -= overflows.y.after;
348
+ } // size
349
+
350
+
351
+ {
352
+ const overflows = getOverflow(contentBox, viewport);
353
+ available.x = viewport.width - overflows.x.before - overflows.x.after;
354
+ available.y = viewport.height - overflows.y.before - overflows.y.after;
355
+ x += overflows.x.before;
356
+ contentBox.x += overflows.x.before;
357
+ y += overflows.y.before;
358
+ contentBox.y += overflows.y.before;
359
+ }
360
+ break;
361
+ }
362
+
363
+ const axis = getAxis(placement.anchor);
183
364
  Object.assign(contentStyles.value, {
184
- '--v-overlay-anchor-origin': physicalAnchor(anchor, data.activatorEl.value),
185
- top: convertToUnit(Math.round(y)),
186
- left: convertToUnit(Math.round(x)),
187
- // TODO: right for origin="end", rtl
188
- transformOrigin: physicalAnchor(origin, data.activatorEl.value),
189
- minWidth: convertToUnit(minWidth),
190
- maxWidth: convertToUnit(maxWidth),
191
- maxHeight: convertToUnit(maxHeight)
365
+ '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,
366
+ transformOrigin: `${placement.origin.side} ${placement.origin.align}`,
367
+ // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,
368
+ top: convertToUnit(pixelRound(y)),
369
+ left: convertToUnit(pixelRound(x)),
370
+ minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),
371
+ maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),
372
+ maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))
192
373
  });
193
374
  }
194
375
 
195
- watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset], () => updateLocation(), {
376
+ watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation(), {
196
377
  immediate: !activatorFixed
197
378
  });
198
379
  if (activatorFixed) nextTick(() => updateLocation());
@@ -203,4 +384,12 @@ function connectedLocationStrategy(data, props, contentStyles) {
203
384
  updateLocation
204
385
  };
205
386
  }
387
+
388
+ function pixelRound(val) {
389
+ return Math.round(val * devicePixelRatio) / devicePixelRatio;
390
+ }
391
+
392
+ function pixelCeil(val) {
393
+ return Math.ceil(val * devicePixelRatio) / devicePixelRatio;
394
+ }
206
395
  //# sourceMappingURL=locationStrategies.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"locationStrategies.mjs","names":["computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","convertToUnit","getScrollParent","IN_BROWSER","isFixedPosition","nullifyTransforms","oppositeAnchor","parseAnchor","physicalAnchor","propsFactory","Box","anchorToPoint","getOffset","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","useLocationStrategies","props","data","contentStyles","updateLocation","scope","stop","value","undefined","isActive","run","window","addEventListener","onResize","passive","removeEventListener","e","activatorFixed","activatorEl","Object","assign","position","preferredAnchor","preferredOrigin","doesOverlap","side","configuredMaxHeight","parseFloat","maxHeight","isNaN","Infinity","configuredMinWidth","minWidth","observe","observer","ResizeObserver","contentEl","disconnect","requestAnimationFrame","targetBox","getBoundingClientRect","x","y","width","height","scrollParent","viewportWidth","clientWidth","viewportHeight","Math","min","clientHeight","innerHeight","contentBox","scrollables","Map","querySelectorAll","forEach","el","scrollLeft","scrollTop","set","initialMaxWidth","style","maxWidth","initialMaxHeight","removeProperty","left","top","scrollTo","contentHeight","maxFreeSpaceWidth","MAX_VALUE","parseInt","viewportMargin","freeSpace","bottom","right","fitsY","anchor","canFill","includes","max","floor","targetPoint","contentPoint","round","transformOrigin","immediate"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Utilities\nimport { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'\nimport {\n convertToUnit,\n getScrollParent,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n oppositeAnchor,\n parseAnchor,\n physicalAnchor,\n propsFactory,\n} from '@/util'\nimport { Box } from '@/util/box'\nimport { anchorToPoint, getOffset } from './util/point'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n}\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | (\n (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n ) => undefined | { updateLocation: (e: Event) => void }\n )\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String],\n})\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n updateLocation.value = undefined\n\n if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n })\n\n IN_BROWSER && window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n IN_BROWSER && window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n scope?.stop()\n })\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = isFixedPosition(data.activatorEl.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n })\n }\n\n const preferredAnchor = computed(() => parseAnchor(props.location))\n const preferredOrigin = computed(() =>\n props.origin === 'overlap' ? preferredAnchor.value\n : props.origin === 'auto' ? oppositeAnchor(preferredAnchor.value)\n : parseAnchor(props.origin)\n )\n const doesOverlap = computed(() => {\n return preferredAnchor.value.side === preferredOrigin.value.side\n })\n\n const configuredMaxHeight = computed(() => {\n const val = parseFloat(props.maxHeight!)\n return isNaN(val) ? Infinity : val\n })\n\n const configuredMinWidth = computed(() => {\n const val = parseFloat(props.minWidth!)\n return isNaN(val) ? Infinity : val\n })\n\n let observe = false\n if (IN_BROWSER) {\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n observer.observe(data.activatorEl.value!)\n observer.observe(data.contentEl.value!)\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n }\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n const targetBox = data.activatorEl.value!.getBoundingClientRect()\n // TODO: offset shouldn't affect width\n if (props.offset) {\n targetBox.x -= +props.offset\n targetBox.y -= +props.offset\n targetBox.width += +props.offset * 2\n targetBox.height += +props.offset * 2\n }\n\n const scrollParent = getScrollParent(data.contentEl.value)\n const viewportWidth = scrollParent.clientWidth\n const viewportHeight = Math.min(scrollParent.clientHeight, window.innerHeight)\n\n let contentBox\n {\n const scrollables = new Map<Element, [number, number]>()\n data.contentEl.value!.querySelectorAll('*').forEach(el => {\n const x = el.scrollLeft\n const y = el.scrollTop\n if (x || y) {\n scrollables.set(el, [x, y])\n }\n })\n\n const initialMaxWidth = data.contentEl.value!.style.maxWidth\n const initialMaxHeight = data.contentEl.value!.style.maxHeight\n data.contentEl.value!.style.removeProperty('max-width')\n data.contentEl.value!.style.removeProperty('max-height')\n\n contentBox = nullifyTransforms(data.contentEl.value!)\n contentBox.x -= parseFloat(data.contentEl.value!.style.left) || 0\n contentBox.y -= parseFloat(data.contentEl.value!.style.top) || 0\n\n data.contentEl.value!.style.maxWidth = initialMaxWidth\n data.contentEl.value!.style.maxHeight = initialMaxHeight\n scrollables.forEach((position, el) => {\n el.scrollTo(...position)\n })\n }\n\n const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height)\n\n // Regard undefined maxWidth as maximally occupying whole remaining space by default\n const maxFreeSpaceWidth = props.maxWidth === undefined ? Number.MAX_VALUE : parseInt(props.maxWidth ?? 0, 10)\n\n const viewportMargin = 12\n const freeSpace = {\n top: targetBox.top - viewportMargin,\n bottom: viewportHeight - targetBox.bottom - viewportMargin,\n left: Math.min(targetBox.left - viewportMargin, maxFreeSpaceWidth),\n right: Math.min(viewportWidth - targetBox.right - viewportMargin, maxFreeSpaceWidth),\n }\n\n const fitsY = (preferredAnchor.value.side === 'bottom' && contentHeight <= freeSpace.bottom) ||\n (preferredAnchor.value.side === 'top' && contentHeight <= freeSpace.top)\n\n const anchor = fitsY ? preferredAnchor.value\n : (preferredAnchor.value.side === 'bottom' && freeSpace.top > freeSpace.bottom) ||\n (preferredAnchor.value.side === 'top' && freeSpace.bottom > freeSpace.top) ? oppositeAnchor(preferredAnchor.value)\n : preferredAnchor.value\n const origin = fitsY ? preferredOrigin.value : oppositeAnchor(anchor)\n\n const canFill = doesOverlap.value || ['center', 'top', 'bottom'].includes(anchor.side)\n\n const maxWidth = canFill ? Math.min(viewportWidth, Math.max(targetBox.width, viewportWidth - viewportMargin * 2))\n : anchor.side === 'end' ? freeSpace.right\n : anchor.side === 'start' ? freeSpace.left\n : null\n const minWidth = Math.min(configuredMinWidth.value, maxWidth!, targetBox.width)\n const maxHeight = fitsY ? configuredMaxHeight.value : Math.min(\n configuredMaxHeight.value,\n Math.floor(anchor.side === 'top' ? freeSpace.top : freeSpace.bottom)\n )\n\n const targetPoint = anchorToPoint(anchor, targetBox)\n const contentPoint = anchorToPoint(origin, new Box({\n ...contentBox,\n height: Math.min(contentHeight, maxHeight),\n }))\n\n const { x, y } = getOffset(targetPoint, contentPoint)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': physicalAnchor(anchor, data.activatorEl.value!),\n top: convertToUnit(Math.round(y)),\n left: convertToUnit(Math.round(x)), // TODO: right for origin=\"end\", rtl\n transformOrigin: physicalAnchor(origin, data.activatorEl.value!),\n minWidth: convertToUnit(minWidth),\n maxWidth: convertToUnit(maxWidth),\n maxHeight: convertToUnit(maxHeight),\n })\n }\n\n watch(\n () => [preferredAnchor.value, preferredOrigin.value, props.offset],\n () => updateLocation(),\n { immediate: !activatorFixed }\n )\n\n if (activatorFixed) nextTick(() => updateLocation())\n requestAnimationFrame(() => {\n if (contentStyles.value.maxHeight) updateLocation()\n })\n\n return { updateLocation }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"locationStrategies.mjs","names":["computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","clamp","consoleError","convertToUnit","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","anchorToPoint","getOffset","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","scope","stop","value","undefined","isActive","run","window","addEventListener","onResize","passive","removeEventListener","e","getIntrinsicSize","el","contentBox","x","parseFloat","style","left","y","top","activatorFixed","activatorEl","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","isRtl","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","isArray","split","length","push","observe","observer","ResizeObserver","contentEl","disconnect","requestAnimationFrame","targetBox","getBoundingClientRect","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","scrollBox","width","clientWidth","height","clientHeight","Math","max","min","right","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","reset","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","immediate","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Utilities\nimport { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'\nimport {\n clamp,\n consoleError,\n convertToUnit,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow } from '@/util/box'\nimport { anchorToPoint, getOffset } from './util/point'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n isRtl: Ref<boolean>\n}\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | (\n (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n ) => undefined | { updateLocation: (e: Event) => void }\n )\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType<StrategyProps['offset']>,\n})\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n updateLocation.value = undefined\n\n if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n })\n\n IN_BROWSER && window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n IN_BROWSER && window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n scope?.stop()\n })\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n contentBox.x -= parseFloat(el.style.left || 0)\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = isFixedPosition(data.activatorEl.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n if (IN_BROWSER) {\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n observer.observe(data.activatorEl.value!)\n observer.observe(data.contentEl.value!)\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n }\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n const targetBox = data.activatorEl.value!.getBoundingClientRect()\n const contentBox = getIntrinsicSize(data.contentEl.value!)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value!.style.top && data.contentEl.value!.style.left)) {\n contentBox.x += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y += parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce<Box>((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: convertToUnit(pixelRound(x)),\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n { immediate: !activatorFixed }\n )\n\n if (activatorFixed) nextTick(() => updateLocation())\n requestAnimationFrame(() => {\n if (contentStyles.value.maxHeight) updateLocation()\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- // Utilities
2
- import { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from "../../util/index.mjs";
1
+ // Composables
3
2
  import { makeDelayProps, useDelay } from "../../composables/delay.mjs";
4
- import { VMenuSymbol } from "../VMenu/shared.mjs";
3
+ import { VMenuSymbol } from "../VMenu/shared.mjs"; // Utilities
4
+
5
+ import { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from "../../util/index.mjs";
5
6
  import { computed, effectScope, inject, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'; // Types
6
7
 
7
8
  export const makeActivatorProps = propsFactory({