@vuetify/nightly 3.9.2-master.2025-07-23 → 3.9.2-master.2025-07-24

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 (211) hide show
  1. package/CHANGELOG.md +11 -3
  2. package/dist/_component-variables-labs.sass +2 -1
  3. package/dist/json/attributes.json +2563 -2299
  4. package/dist/json/importMap-labs.json +24 -12
  5. package/dist/json/importMap.json +174 -174
  6. package/dist/json/tags.json +81 -0
  7. package/dist/json/web-types.json +5100 -3978
  8. package/dist/vuetify-labs.cjs +751 -15
  9. package/dist/vuetify-labs.css +5171 -4837
  10. package/dist/vuetify-labs.d.ts +6526 -845
  11. package/dist/vuetify-labs.esm.js +752 -16
  12. package/dist/vuetify-labs.esm.js.map +1 -1
  13. package/dist/vuetify-labs.js +751 -15
  14. package/dist/vuetify-labs.min.css +2 -2
  15. package/dist/vuetify.cjs +37 -9
  16. package/dist/vuetify.cjs.map +1 -1
  17. package/dist/vuetify.css +3169 -3169
  18. package/dist/vuetify.d.ts +88 -68
  19. package/dist/vuetify.esm.js +37 -9
  20. package/dist/vuetify.esm.js.map +1 -1
  21. package/dist/vuetify.js +37 -9
  22. package/dist/vuetify.js.map +1 -1
  23. package/dist/vuetify.min.css +2 -2
  24. package/dist/vuetify.min.js +264 -263
  25. package/dist/vuetify.min.js.map +1 -1
  26. package/lib/components/VBottomSheet/VBottomSheet.d.ts +6 -6
  27. package/lib/components/VDialog/VDialog.d.ts +6 -6
  28. package/lib/components/VOverlay/VOverlay.js +1 -0
  29. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  30. package/lib/components/VOverlay/scrollStrategies.d.ts +1 -0
  31. package/lib/components/VOverlay/scrollStrategies.js +6 -4
  32. package/lib/components/VOverlay/scrollStrategies.js.map +1 -1
  33. package/lib/components/VRangeSlider/VRangeSlider.d.ts +13 -0
  34. package/lib/components/VSlider/VSlider.d.ts +13 -0
  35. package/lib/components/VSlider/VSlider.js +3 -1
  36. package/lib/components/VSlider/VSlider.js.map +1 -1
  37. package/lib/components/VSlider/VSliderThumb.d.ts +13 -0
  38. package/lib/components/VSlider/VSliderThumb.js +2 -0
  39. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  40. package/lib/components/VSlider/slider.d.ts +6 -0
  41. package/lib/components/VSlider/slider.js +2 -0
  42. package/lib/components/VSlider/slider.js.map +1 -1
  43. package/lib/components/index.js +1 -1
  44. package/lib/components/index.js.map +1 -1
  45. package/lib/entry-bundler.js +1 -1
  46. package/lib/framework.d.ts +60 -56
  47. package/lib/framework.js +1 -1
  48. package/lib/iconsets/fa.js +9 -1
  49. package/lib/iconsets/fa.js.map +1 -1
  50. package/lib/iconsets/fa4.js +9 -1
  51. package/lib/iconsets/fa4.js.map +1 -1
  52. package/lib/iconsets/md.js +9 -1
  53. package/lib/iconsets/md.js.map +1 -1
  54. package/lib/iconsets/mdi-svg.js +9 -1
  55. package/lib/iconsets/mdi-svg.js.map +1 -1
  56. package/lib/iconsets/mdi.js +9 -1
  57. package/lib/iconsets/mdi.js.map +1 -1
  58. package/lib/labs/VVideo/VVideo.css +319 -0
  59. package/lib/labs/VVideo/VVideo.d.ts +6932 -0
  60. package/lib/labs/VVideo/VVideo.js +424 -0
  61. package/lib/labs/VVideo/VVideo.js.map +1 -0
  62. package/lib/labs/VVideo/VVideo.sass +301 -0
  63. package/lib/labs/VVideo/VVideoControls.d.ts +3524 -0
  64. package/lib/labs/VVideo/VVideoControls.js +232 -0
  65. package/lib/labs/VVideo/VVideoControls.js.map +1 -0
  66. package/lib/labs/VVideo/VVideoVolume.d.ts +3088 -0
  67. package/lib/labs/VVideo/VVideoVolume.js +90 -0
  68. package/lib/labs/VVideo/VVideoVolume.js.map +1 -0
  69. package/lib/labs/VVideo/_variables.scss +58 -0
  70. package/lib/labs/VVideo/index.d.ts +3 -0
  71. package/lib/labs/VVideo/index.js +4 -0
  72. package/lib/labs/VVideo/index.js.map +1 -0
  73. package/lib/labs/components.d.ts +1 -0
  74. package/lib/labs/components.js +1 -0
  75. package/lib/labs/components.js.map +1 -1
  76. package/lib/locale/af.d.ts +11 -0
  77. package/lib/locale/af.js +11 -0
  78. package/lib/locale/af.js.map +1 -1
  79. package/lib/locale/ar.d.ts +11 -0
  80. package/lib/locale/ar.js +11 -0
  81. package/lib/locale/ar.js.map +1 -1
  82. package/lib/locale/az.d.ts +11 -0
  83. package/lib/locale/az.js +11 -0
  84. package/lib/locale/az.js.map +1 -1
  85. package/lib/locale/bg.d.ts +11 -0
  86. package/lib/locale/bg.js +11 -0
  87. package/lib/locale/bg.js.map +1 -1
  88. package/lib/locale/ca.d.ts +11 -0
  89. package/lib/locale/ca.js +11 -0
  90. package/lib/locale/ca.js.map +1 -1
  91. package/lib/locale/ckb.d.ts +11 -0
  92. package/lib/locale/ckb.js +11 -0
  93. package/lib/locale/ckb.js.map +1 -1
  94. package/lib/locale/cs.d.ts +11 -0
  95. package/lib/locale/cs.js +11 -0
  96. package/lib/locale/cs.js.map +1 -1
  97. package/lib/locale/da.d.ts +11 -0
  98. package/lib/locale/da.js +11 -0
  99. package/lib/locale/da.js.map +1 -1
  100. package/lib/locale/de.d.ts +11 -0
  101. package/lib/locale/de.js +11 -0
  102. package/lib/locale/de.js.map +1 -1
  103. package/lib/locale/el.d.ts +11 -0
  104. package/lib/locale/el.js +11 -0
  105. package/lib/locale/el.js.map +1 -1
  106. package/lib/locale/en.d.ts +11 -0
  107. package/lib/locale/en.js +11 -0
  108. package/lib/locale/en.js.map +1 -1
  109. package/lib/locale/es.d.ts +11 -0
  110. package/lib/locale/es.js +11 -0
  111. package/lib/locale/es.js.map +1 -1
  112. package/lib/locale/et.d.ts +11 -0
  113. package/lib/locale/et.js +11 -0
  114. package/lib/locale/et.js.map +1 -1
  115. package/lib/locale/fa.d.ts +11 -0
  116. package/lib/locale/fa.js +11 -0
  117. package/lib/locale/fa.js.map +1 -1
  118. package/lib/locale/fi.d.ts +11 -0
  119. package/lib/locale/fi.js +11 -0
  120. package/lib/locale/fi.js.map +1 -1
  121. package/lib/locale/fr.d.ts +11 -0
  122. package/lib/locale/fr.js +11 -0
  123. package/lib/locale/fr.js.map +1 -1
  124. package/lib/locale/he.d.ts +11 -0
  125. package/lib/locale/he.js +11 -0
  126. package/lib/locale/he.js.map +1 -1
  127. package/lib/locale/hr.d.ts +11 -0
  128. package/lib/locale/hr.js +11 -0
  129. package/lib/locale/hr.js.map +1 -1
  130. package/lib/locale/hu.d.ts +11 -0
  131. package/lib/locale/hu.js +11 -0
  132. package/lib/locale/hu.js.map +1 -1
  133. package/lib/locale/id.d.ts +11 -0
  134. package/lib/locale/id.js +11 -0
  135. package/lib/locale/id.js.map +1 -1
  136. package/lib/locale/it.d.ts +11 -0
  137. package/lib/locale/it.js +11 -0
  138. package/lib/locale/it.js.map +1 -1
  139. package/lib/locale/ja.d.ts +11 -0
  140. package/lib/locale/ja.js +11 -0
  141. package/lib/locale/ja.js.map +1 -1
  142. package/lib/locale/km.d.ts +11 -0
  143. package/lib/locale/km.js +11 -0
  144. package/lib/locale/km.js.map +1 -1
  145. package/lib/locale/ko.d.ts +11 -0
  146. package/lib/locale/ko.js +11 -0
  147. package/lib/locale/ko.js.map +1 -1
  148. package/lib/locale/lt.d.ts +11 -0
  149. package/lib/locale/lt.js +11 -0
  150. package/lib/locale/lt.js.map +1 -1
  151. package/lib/locale/lv.d.ts +11 -0
  152. package/lib/locale/lv.js +11 -0
  153. package/lib/locale/lv.js.map +1 -1
  154. package/lib/locale/nl.d.ts +11 -0
  155. package/lib/locale/nl.js +11 -0
  156. package/lib/locale/nl.js.map +1 -1
  157. package/lib/locale/no.d.ts +11 -0
  158. package/lib/locale/no.js +11 -0
  159. package/lib/locale/no.js.map +1 -1
  160. package/lib/locale/pl.d.ts +11 -0
  161. package/lib/locale/pl.js +11 -0
  162. package/lib/locale/pl.js.map +1 -1
  163. package/lib/locale/pt.d.ts +11 -0
  164. package/lib/locale/pt.js +11 -0
  165. package/lib/locale/pt.js.map +1 -1
  166. package/lib/locale/ro.d.ts +11 -0
  167. package/lib/locale/ro.js +11 -0
  168. package/lib/locale/ro.js.map +1 -1
  169. package/lib/locale/ru.d.ts +11 -0
  170. package/lib/locale/ru.js +11 -0
  171. package/lib/locale/ru.js.map +1 -1
  172. package/lib/locale/sk.d.ts +11 -0
  173. package/lib/locale/sk.js +11 -0
  174. package/lib/locale/sk.js.map +1 -1
  175. package/lib/locale/sl.d.ts +11 -0
  176. package/lib/locale/sl.js +11 -0
  177. package/lib/locale/sl.js.map +1 -1
  178. package/lib/locale/sr-Cyrl.d.ts +11 -0
  179. package/lib/locale/sr-Cyrl.js +11 -0
  180. package/lib/locale/sr-Cyrl.js.map +1 -1
  181. package/lib/locale/sr-Latn.d.ts +11 -0
  182. package/lib/locale/sr-Latn.js +11 -0
  183. package/lib/locale/sr-Latn.js.map +1 -1
  184. package/lib/locale/sv.d.ts +11 -0
  185. package/lib/locale/sv.js +11 -0
  186. package/lib/locale/sv.js.map +1 -1
  187. package/lib/locale/th.d.ts +11 -0
  188. package/lib/locale/th.js +11 -0
  189. package/lib/locale/th.js.map +1 -1
  190. package/lib/locale/tr.d.ts +11 -0
  191. package/lib/locale/tr.js +11 -0
  192. package/lib/locale/tr.js.map +1 -1
  193. package/lib/locale/uk.d.ts +11 -0
  194. package/lib/locale/uk.js +11 -0
  195. package/lib/locale/uk.js.map +1 -1
  196. package/lib/locale/vi.d.ts +11 -0
  197. package/lib/locale/vi.js +11 -0
  198. package/lib/locale/vi.js.map +1 -1
  199. package/lib/locale/zh-Hans.d.ts +11 -0
  200. package/lib/locale/zh-Hans.js +11 -0
  201. package/lib/locale/zh-Hans.js.map +1 -1
  202. package/lib/locale/zh-Hant.d.ts +11 -0
  203. package/lib/locale/zh-Hant.js +11 -0
  204. package/lib/locale/zh-Hant.js.map +1 -1
  205. package/lib/util/index.d.ts +1 -0
  206. package/lib/util/index.js +1 -0
  207. package/lib/util/index.js.map +1 -1
  208. package/lib/util/timeUtils.d.ts +1 -0
  209. package/lib/util/timeUtils.js +4 -0
  210. package/lib/util/timeUtils.js.map +1 -0
  211. package/package.json +1 -1
@@ -1148,6 +1148,7 @@ export declare const VBottomSheet: {
1148
1148
  eager: boolean;
1149
1149
  disabled: boolean;
1150
1150
  persistent: boolean;
1151
+ fullscreen: boolean;
1151
1152
  modelValue: boolean;
1152
1153
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1153
1154
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1158,7 +1159,6 @@ export declare const VBottomSheet: {
1158
1159
  contained: boolean;
1159
1160
  noClickAnimation: boolean;
1160
1161
  scrim: string | boolean;
1161
- fullscreen: boolean;
1162
1162
  retainFocus: boolean;
1163
1163
  scrollable: boolean;
1164
1164
  } & {
@@ -1293,6 +1293,7 @@ export declare const VBottomSheet: {
1293
1293
  eager: boolean;
1294
1294
  disabled: boolean;
1295
1295
  persistent: boolean;
1296
+ fullscreen: boolean;
1296
1297
  modelValue: boolean;
1297
1298
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1298
1299
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1305,7 +1306,6 @@ export declare const VBottomSheet: {
1305
1306
  contained: boolean;
1306
1307
  noClickAnimation: boolean;
1307
1308
  scrim: string | boolean;
1308
- fullscreen: boolean;
1309
1309
  retainFocus: boolean;
1310
1310
  scrollable: boolean;
1311
1311
  }, true, {}, import("vue").SlotsType<Partial<{
@@ -1398,6 +1398,7 @@ export declare const VBottomSheet: {
1398
1398
  eager: boolean;
1399
1399
  disabled: boolean;
1400
1400
  persistent: boolean;
1401
+ fullscreen: boolean;
1401
1402
  modelValue: boolean;
1402
1403
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1403
1404
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1408,7 +1409,6 @@ export declare const VBottomSheet: {
1408
1409
  contained: boolean;
1409
1410
  noClickAnimation: boolean;
1410
1411
  scrim: string | boolean;
1411
- fullscreen: boolean;
1412
1412
  retainFocus: boolean;
1413
1413
  scrollable: boolean;
1414
1414
  } & {
@@ -1541,6 +1541,7 @@ export declare const VBottomSheet: {
1541
1541
  eager: boolean;
1542
1542
  disabled: boolean;
1543
1543
  persistent: boolean;
1544
+ fullscreen: boolean;
1544
1545
  modelValue: boolean;
1545
1546
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1546
1547
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1553,7 +1554,6 @@ export declare const VBottomSheet: {
1553
1554
  contained: boolean;
1554
1555
  noClickAnimation: boolean;
1555
1556
  scrim: string | boolean;
1556
- fullscreen: boolean;
1557
1557
  retainFocus: boolean;
1558
1558
  scrollable: boolean;
1559
1559
  }>;
@@ -1634,6 +1634,7 @@ export declare const VBottomSheet: {
1634
1634
  eager: boolean;
1635
1635
  disabled: boolean;
1636
1636
  persistent: boolean;
1637
+ fullscreen: boolean;
1637
1638
  modelValue: boolean;
1638
1639
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1639
1640
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1644,7 +1645,6 @@ export declare const VBottomSheet: {
1644
1645
  contained: boolean;
1645
1646
  noClickAnimation: boolean;
1646
1647
  scrim: string | boolean;
1647
- fullscreen: boolean;
1648
1648
  retainFocus: boolean;
1649
1649
  scrollable: boolean;
1650
1650
  } & {
@@ -1779,6 +1779,7 @@ export declare const VBottomSheet: {
1779
1779
  eager: boolean;
1780
1780
  disabled: boolean;
1781
1781
  persistent: boolean;
1782
+ fullscreen: boolean;
1782
1783
  modelValue: boolean;
1783
1784
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1784
1785
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1791,7 +1792,6 @@ export declare const VBottomSheet: {
1791
1792
  contained: boolean;
1792
1793
  noClickAnimation: boolean;
1793
1794
  scrim: string | boolean;
1794
- fullscreen: boolean;
1795
1795
  retainFocus: boolean;
1796
1796
  scrollable: boolean;
1797
1797
  }, {}, string, import("vue").SlotsType<Partial<{
@@ -885,6 +885,7 @@ export declare const VDialog: {
885
885
  eager: boolean;
886
886
  disabled: boolean;
887
887
  persistent: boolean;
888
+ fullscreen: boolean;
888
889
  modelValue: boolean;
889
890
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
890
891
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -895,7 +896,6 @@ export declare const VDialog: {
895
896
  contained: boolean;
896
897
  noClickAnimation: boolean;
897
898
  scrim: string | boolean;
898
- fullscreen: boolean;
899
899
  retainFocus: boolean;
900
900
  scrollable: boolean;
901
901
  } & {
@@ -1433,6 +1433,7 @@ export declare const VDialog: {
1433
1433
  eager: boolean;
1434
1434
  disabled: boolean;
1435
1435
  persistent: boolean;
1436
+ fullscreen: boolean;
1436
1437
  modelValue: boolean;
1437
1438
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1438
1439
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1445,7 +1446,6 @@ export declare const VDialog: {
1445
1446
  contained: boolean;
1446
1447
  noClickAnimation: boolean;
1447
1448
  scrim: string | boolean;
1448
- fullscreen: boolean;
1449
1449
  retainFocus: boolean;
1450
1450
  scrollable: boolean;
1451
1451
  }, true, {}, import("vue").SlotsType<Partial<{
@@ -1537,6 +1537,7 @@ export declare const VDialog: {
1537
1537
  eager: boolean;
1538
1538
  disabled: boolean;
1539
1539
  persistent: boolean;
1540
+ fullscreen: boolean;
1540
1541
  modelValue: boolean;
1541
1542
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
1542
1543
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -1547,7 +1548,6 @@ export declare const VDialog: {
1547
1548
  contained: boolean;
1548
1549
  noClickAnimation: boolean;
1549
1550
  scrim: string | boolean;
1550
- fullscreen: boolean;
1551
1551
  retainFocus: boolean;
1552
1552
  scrollable: boolean;
1553
1553
  } & {
@@ -2081,6 +2081,7 @@ export declare const VDialog: {
2081
2081
  eager: boolean;
2082
2082
  disabled: boolean;
2083
2083
  persistent: boolean;
2084
+ fullscreen: boolean;
2084
2085
  modelValue: boolean;
2085
2086
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
2086
2087
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -2093,7 +2094,6 @@ export declare const VDialog: {
2093
2094
  contained: boolean;
2094
2095
  noClickAnimation: boolean;
2095
2096
  scrim: string | boolean;
2096
- fullscreen: boolean;
2097
2097
  retainFocus: boolean;
2098
2098
  scrollable: boolean;
2099
2099
  }>;
@@ -2173,6 +2173,7 @@ export declare const VDialog: {
2173
2173
  eager: boolean;
2174
2174
  disabled: boolean;
2175
2175
  persistent: boolean;
2176
+ fullscreen: boolean;
2176
2177
  modelValue: boolean;
2177
2178
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
2178
2179
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -2183,7 +2184,6 @@ export declare const VDialog: {
2183
2184
  contained: boolean;
2184
2185
  noClickAnimation: boolean;
2185
2186
  scrim: string | boolean;
2186
- fullscreen: boolean;
2187
2187
  retainFocus: boolean;
2188
2188
  scrollable: boolean;
2189
2189
  } & {
@@ -2721,6 +2721,7 @@ export declare const VDialog: {
2721
2721
  eager: boolean;
2722
2722
  disabled: boolean;
2723
2723
  persistent: boolean;
2724
+ fullscreen: boolean;
2724
2725
  modelValue: boolean;
2725
2726
  locationStrategy: "connected" | "static" | import("../VOverlay/locationStrategies.js").LocationStrategyFunction;
2726
2727
  scrollStrategy: "none" | "block" | "close" | import("../VOverlay/scrollStrategies.js").ScrollStrategyFunction | "reposition";
@@ -2733,7 +2734,6 @@ export declare const VDialog: {
2733
2734
  contained: boolean;
2734
2735
  noClickAnimation: boolean;
2735
2736
  scrim: string | boolean;
2736
- fullscreen: boolean;
2737
2737
  retainFocus: boolean;
2738
2738
  scrollable: boolean;
2739
2739
  }, {}, string, import("vue").SlotsType<Partial<{
@@ -170,6 +170,7 @@ export const VOverlay = genericComponent()({
170
170
  root,
171
171
  contentEl,
172
172
  targetEl,
173
+ target,
173
174
  isActive,
174
175
  updateLocation
175
176
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VOverlay.js","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","vClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","Transition","watch","animate","convertToUnit","genericComponent","getCurrentInstance","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_createElementVNode","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","keydown","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","vm","root","scrimEl","contentEl","model","isActive","get","set","v","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","teleportTarget","rootNode","getRootNode","proxy","$el","ShadowRoot","dimensionStyles","isMounted","scopeId","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","MouseEvent","shadowTarget","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","onKeydownSelf","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport vClickOutside from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\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 = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\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 opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { vClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n keydown: (e: KeyboardEvent) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const vm = getCurrentInstance('VOverlay')\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\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 { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n })\n const { globalTop, localTop, stackStyles } = useStack(isActive, () => props.zIndex, props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop, contentEl })\n const { teleportTarget } = useTeleport(() => {\n const target = props.attach || props.contained\n if (target) return target\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode()\n if (rootNode instanceof ShadowRoot) return rootNode\n return false\n })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\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 (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || (e instanceof MouseEvent && e.shadowTarget === scrimEl.value)\n )\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 onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!contentEl.value?.contains(document.activeElement)) {\n emit('keydown', e)\n }\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n function onKeydownSelf (e: KeyboardEvent) {\n if (e.key === 'Escape' && !globalTop.value) return\n\n emit('keydown', e)\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.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(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\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 props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n onKeydown={ onKeydownSelf }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\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 { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VOverlay.js","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","vClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","Transition","watch","animate","convertToUnit","genericComponent","getCurrentInstance","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_createElementVNode","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","keydown","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","vm","root","scrimEl","contentEl","model","isActive","get","set","v","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","teleportTarget","rootNode","getRootNode","proxy","$el","ShadowRoot","dimensionStyles","isMounted","scopeId","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","MouseEvent","shadowTarget","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","onKeydownSelf","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport vClickOutside from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\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 = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\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 opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { vClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n keydown: (e: KeyboardEvent) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const vm = getCurrentInstance('VOverlay')\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\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 { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n })\n const { globalTop, localTop, stackStyles } = useStack(isActive, () => props.zIndex, props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop, contentEl })\n const { teleportTarget } = useTeleport(() => {\n const target = props.attach || props.contained\n if (target) return target\n const rootNode = activatorEl?.value?.getRootNode() || vm.proxy?.$el?.getRootNode()\n if (rootNode instanceof ShadowRoot) return rootNode\n return false\n })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n target,\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 (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value || (e instanceof MouseEvent && e.shadowTarget === scrimEl.value)\n )\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 onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!contentEl.value?.contains(document.activeElement)) {\n emit('keydown', e)\n }\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n function onKeydownSelf (e: KeyboardEvent) {\n if (e.key === 'Escape' && !globalTop.value) return\n\n emit('keydown', e)\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.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(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\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 props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n onKeydown={ onKeydownSelf }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\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 { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@ export interface ScrollStrategyData {
3
3
  root: Ref<HTMLElement | undefined>;
4
4
  contentEl: Ref<HTMLElement | undefined>;
5
5
  targetEl: Ref<HTMLElement | undefined>;
6
+ target: Ref<HTMLElement | [x: number, y: number] | undefined>;
6
7
  isActive: Ref<boolean>;
7
8
  updateLocation: Ref<((e: Event) => void) | undefined>;
8
9
  }
@@ -39,11 +39,12 @@ function closeScrollStrategy(data) {
39
39
  function onScroll(e) {
40
40
  data.isActive.value = false;
41
41
  }
42
- bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll);
42
+ bindScroll(data.target.value ?? data.contentEl.value, onScroll);
43
43
  }
44
44
  function blockScrollStrategy(data, props) {
45
45
  const offsetParent = data.root.value?.offsetParent;
46
- const scrollElements = [...new Set([...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));
46
+ const target = Array.isArray(data.target.value) ? document.elementFromPoint(...data.target.value) : data.target.value;
47
+ const scrollElements = [...new Set([...getScrollParents(target, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));
47
48
  const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;
48
49
  const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);
49
50
  if (scrollableParent) {
@@ -90,7 +91,7 @@ function repositionScrollStrategy(data, props, scope) {
90
91
  }
91
92
  ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {
92
93
  scope.run(() => {
93
- bindScroll(data.targetEl.value ?? data.contentEl.value, e => {
94
+ bindScroll(data.target.value ?? data.contentEl.value, e => {
94
95
  if (slow) {
95
96
  // If the position calculation is slow,
96
97
  // defer updates until scrolling is finished.
@@ -115,7 +116,8 @@ function repositionScrollStrategy(data, props, scope) {
115
116
  }
116
117
 
117
118
  /** @private */
118
- function bindScroll(el, onScroll) {
119
+ function bindScroll(target, onScroll) {
120
+ const el = Array.isArray(target) ? document.elementFromPoint(...target) : target;
119
121
  const scrollElements = [document, ...getScrollParents(el)];
120
122
  scrollElements.forEach(el => {
121
123
  el.addEventListener('scroll', onScroll, {
@@ -1 +1 @@
1
- {"version":3,"file":"scrollStrategies.js","names":["effectScope","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","Promise","resolve","setTimeout","active","run","onScroll","e","bindScroll","targetEl","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","scrollBehavior","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, 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 targetEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\nexport type ScrollStrategyFunction = (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 | ScrollStrategyFunction\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 new Promise(resolve => setTimeout(resolve))\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.targetEl.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.targetEl.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\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\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 const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\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 el.style.scrollBehavior = scrollBehavior\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.targetEl.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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","ignoreList":[]}
1
+ {"version":3,"file":"scrollStrategies.js","names":["effectScope","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","Promise","resolve","setTimeout","active","run","onScroll","e","bindScroll","target","contentEl","offsetParent","root","Array","isArray","document","elementFromPoint","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","scrollBehavior","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, 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 targetEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\nexport type ScrollStrategyFunction = (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 | ScrollStrategyFunction\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 new Promise(resolve => setTimeout(resolve))\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.target.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const target = Array.isArray(data.target.value)\n ? document.elementFromPoint(...data.target.value)\n : data.target.value\n const scrollElements = [...new Set([\n ...getScrollParents(target, 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\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\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 const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\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 el.style.scrollBehavior = scrollBehavior\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.target.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 (target: HTMLElement | [x: number, y: number] | undefined, onScroll: (e: Event) => void) {\n const el = Array.isArray(target) ? document.elementFromPoint(...target) : target\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;AACA,SAASA,WAAW,EAAEC,cAAc,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACrDC,eAAe;AAAA,SACfC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,UAAU,EAAEC,YAAY,+BAEhF;AAcA,MAAMC,gBAAgB,GAAG;EACvBC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAEC,mBAAmB;EAC1BC,KAAK,EAAEC,mBAAmB;EAC1BC,UAAU,EAAEC;AACd,CAAC;AAOD,OAAO,MAAMC,uBAAuB,GAAGT,YAAY,CAAC;EAClDU,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,4BAA4B,CAAC;AAEhC,OAAO,SAASgB,mBAAmBA,CACjCC,KAAoB,EACpBC,IAAwB,EACxB;EACA,IAAI,CAACpB,UAAU,EAAE;EAEjB,IAAIqB,KAA8B;EAClC1B,WAAW,CAAC,YAAY;IACtB0B,KAAK,EAAEC,IAAI,CAAC,CAAC;IAEb,IAAI,EAAEF,IAAI,CAACG,QAAQ,CAACC,KAAK,IAAIL,KAAK,CAACR,cAAc,CAAC,EAAE;IAEpDU,KAAK,GAAG5B,WAAW,CAAC,CAAC;IACrB,MAAM,IAAIgC,OAAO,CAACC,OAAO,IAAIC,UAAU,CAACD,OAAO,CAAC,CAAC;IACjDL,KAAK,CAACO,MAAM,IAAIP,KAAK,CAACQ,GAAG,CAAC,MAAM;MAC9B,IAAI,OAAOV,KAAK,CAACR,cAAc,KAAK,UAAU,EAAE;QAC9CQ,KAAK,CAACR,cAAc,CAACS,IAAI,EAAED,KAAK,EAAEE,KAAM,CAAC;MAC3C,CAAC,MAAM;QACLnB,gBAAgB,CAACiB,KAAK,CAACR,cAAc,CAAC,GAAGS,IAAI,EAAED,KAAK,EAAEE,KAAM,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF3B,cAAc,CAAC,MAAM;IACnB2B,KAAK,EAAEC,IAAI,CAAC,CAAC;EACf,CAAC,CAAC;AACJ;AAEA,SAASjB,mBAAmBA,CAAEe,IAAwB,EAAE;EACtD,SAASU,QAAQA,CAAEC,CAAQ,EAAE;IAC3BX,IAAI,CAACG,QAAQ,CAACC,KAAK,GAAG,KAAK;EAC7B;EAEAQ,UAAU,CAACZ,IAAI,CAACa,MAAM,CAACT,KAAK,IAAIJ,IAAI,CAACc,SAAS,CAACV,KAAK,EAAEM,QAAQ,CAAC;AACjE;AAEA,SAASvB,mBAAmBA,CAAEa,IAAwB,EAAED,KAAoB,EAAE;EAC5E,MAAMgB,YAAY,GAAGf,IAAI,CAACgB,IAAI,CAACZ,KAAK,EAAEW,YAAY;EAClD,MAAMF,MAAM,GAAGI,KAAK,CAACC,OAAO,CAAClB,IAAI,CAACa,MAAM,CAACT,KAAK,CAAC,GAC3Ce,QAAQ,CAACC,gBAAgB,CAAC,GAAGpB,IAAI,CAACa,MAAM,CAACT,KAAK,CAAC,GAC/CJ,IAAI,CAACa,MAAM,CAACT,KAAK;EACrB,MAAMiB,cAAc,GAAG,CAAC,GAAG,IAAIC,GAAG,CAAC,CACjC,GAAG5C,gBAAgB,CAACmC,MAAM,EAAEd,KAAK,CAACwB,SAAS,GAAGR,YAAY,GAAGS,SAAS,CAAC,EACvE,GAAG9C,gBAAgB,CAACsB,IAAI,CAACc,SAAS,CAACV,KAAK,EAAEL,KAAK,CAACwB,SAAS,GAAGR,YAAY,GAAGS,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,GAAGZ,QAAQ,CAACa,eAAe,CAACC,WAAW;EAE/E,MAAMC,gBAAgB,GAAG,CAACR,EAAE,IAAI/C,YAAY,CAAC+C,EAAE,CAAC,IAAIA,EAAE,EAAEX,YAAY,IAAII,QAAQ,CAACa,eAAe,CAAC;EACjG,IAAIE,gBAAgB,EAAE;IACpBlC,IAAI,CAACgB,IAAI,CAACZ,KAAK,CAAEuB,SAAS,CAACQ,GAAG,CAAC,2BAA2B,CAAC;EAC7D;EAEAd,cAAc,CAACe,OAAO,CAAC,CAACV,EAAE,EAAEW,CAAC,KAAK;IAChCX,EAAE,CAACY,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAE9D,aAAa,CAAC,CAACiD,EAAE,CAACc,UAAU,CAAC,CAAC;IACxEd,EAAE,CAACY,KAAK,CAACC,WAAW,CAAC,mBAAmB,EAAE9D,aAAa,CAAC,CAACiD,EAAE,CAACe,SAAS,CAAC,CAAC;IAEvE,IAAIf,EAAE,KAAKP,QAAQ,CAACa,eAAe,EAAE;MACnCN,EAAE,CAACY,KAAK,CAACC,WAAW,CAAC,sBAAsB,EAAE9D,aAAa,CAACoD,cAAc,CAAC,CAAC;IAC7E;IAEAH,EAAE,CAACC,SAAS,CAACQ,GAAG,CAAC,0BAA0B,CAAC;EAC9C,CAAC,CAAC;EAEF7D,cAAc,CAAC,MAAM;IACnB+C,cAAc,CAACe,OAAO,CAAC,CAACV,EAAE,EAAEW,CAAC,KAAK;MAChC,MAAMK,CAAC,GAAGC,UAAU,CAACjB,EAAE,CAACY,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MACpE,MAAMC,CAAC,GAAGF,UAAU,CAACjB,EAAE,CAACY,KAAK,CAACM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;MAEpE,MAAME,cAAc,GAAGpB,EAAE,CAACY,KAAK,CAACQ,cAAc;MAE9CpB,EAAE,CAACY,KAAK,CAACQ,cAAc,GAAG,MAAM;MAChCpB,EAAE,CAACY,KAAK,CAACS,cAAc,CAAC,mBAAmB,CAAC;MAC5CrB,EAAE,CAACY,KAAK,CAACS,cAAc,CAAC,mBAAmB,CAAC;MAC5CrB,EAAE,CAACY,KAAK,CAACS,cAAc,CAAC,sBAAsB,CAAC;MAC/CrB,EAAE,CAACC,SAAS,CAACqB,MAAM,CAAC,0BAA0B,CAAC;MAE/CtB,EAAE,CAACc,UAAU,GAAG,CAACE,CAAC;MAClBhB,EAAE,CAACe,SAAS,GAAG,CAACI,CAAC;MAEjBnB,EAAE,CAACY,KAAK,CAACQ,cAAc,GAAGA,cAAc;IAC1C,CAAC,CAAC;IACF,IAAIZ,gBAAgB,EAAE;MACpBlC,IAAI,CAACgB,IAAI,CAACZ,KAAK,CAAEuB,SAAS,CAACqB,MAAM,CAAC,2BAA2B,CAAC;IAChE;EACF,CAAC,CAAC;AACJ;AAEA,SAAS3D,wBAAwBA,CAAEW,IAAwB,EAAED,KAAoB,EAAEE,KAAkB,EAAE;EACrG,IAAIgD,IAAI,GAAG,KAAK;EAChB,IAAIC,GAAG,GAAG,CAAC,CAAC;EACZ,IAAIC,GAAG,GAAG,CAAC,CAAC;EAEZ,SAASC,MAAMA,CAAEzC,CAAQ,EAAE;IACzBnC,eAAe,CAAC,MAAM;MACpB,MAAM6E,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;MAC/BvD,IAAI,CAACwD,cAAc,CAACpD,KAAK,GAAGO,CAAC,CAAC;MAC9B,MAAM8C,IAAI,GAAGH,WAAW,CAACC,GAAG,CAAC,CAAC,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,CAAC,CAAC,GAAGD,mBAAmB,EAAE,MAAM;IACtGzD,KAAK,CAACQ,GAAG,CAAC,MAAM;MACdG,UAAU,CAACZ,IAAI,CAACa,MAAM,CAACT,KAAK,IAAIJ,IAAI,CAACc,SAAS,CAACV,KAAK,EAAEO,CAAC,IAAI;QACzD,IAAIsC,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,CAACzC,CAAC,CAAC;YACX,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,MAAM;UACLyC,MAAM,CAACzC,CAAC,CAAC;QACX;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFrC,cAAc,CAAC,MAAM;IACnB,OAAOwF,kBAAkB,KAAK,WAAW,IAAIA,kBAAkB,CAACX,GAAG,CAAC;IACpES,oBAAoB,CAACV,GAAG,CAAC;EAC3B,CAAC,CAAC;AACJ;;AAEA;AACA,SAAStC,UAAUA,CAAEC,MAAwD,EAAEH,QAA4B,EAAE;EAC3G,MAAMgB,EAAE,GAAGT,KAAK,CAACC,OAAO,CAACL,MAAM,CAAC,GAAGM,QAAQ,CAACC,gBAAgB,CAAC,GAAGP,MAAM,CAAC,GAAGA,MAAM;EAChF,MAAMQ,cAAc,GAAG,CAACF,QAAQ,EAAE,GAAGzC,gBAAgB,CAACgD,EAAE,CAAC,CAAC;EAC1DL,cAAc,CAACe,OAAO,CAACV,EAAE,IAAI;IAC3BA,EAAE,CAACqC,gBAAgB,CAAC,QAAQ,EAAErD,QAAQ,EAAE;MAAEsD,OAAO,EAAE;IAAK,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEF1F,cAAc,CAAC,MAAM;IACnB+C,cAAc,CAACe,OAAO,CAACV,EAAE,IAAI;MAC3BA,EAAE,CAACuC,mBAAmB,CAAC,QAAQ,EAAEvD,QAAQ,CAAC;IAC5C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -24,6 +24,7 @@ export declare const makeVRangeSliderProps: <Defaults extends {
24
24
  trackSize?: unknown;
25
25
  direction?: unknown;
26
26
  reverse?: unknown;
27
+ noKeyboard?: unknown;
27
28
  focused?: unknown;
28
29
  'onUpdate:focused'?: unknown;
29
30
  errorMessages?: unknown;
@@ -257,6 +258,10 @@ export declare const makeVRangeSliderProps: <Defaults extends {
257
258
  type: PropType<unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"]>;
258
259
  default: unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"];
259
260
  };
261
+ noKeyboard: unknown extends Defaults["noKeyboard"] ? BooleanConstructor : {
262
+ type: PropType<unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"]>;
263
+ default: unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"];
264
+ };
260
265
  focused: unknown extends Defaults["focused"] ? BooleanConstructor : {
261
266
  type: PropType<unknown extends Defaults["focused"] ? boolean : boolean | Defaults["focused"]>;
262
267
  default: unknown extends Defaults["focused"] ? boolean : boolean | Defaults["focused"];
@@ -452,6 +457,7 @@ export declare const VRangeSlider: {
452
457
  tickSize: string | number;
453
458
  trackSize: string | number;
454
459
  thumbSize: string | number;
460
+ noKeyboard: boolean;
455
461
  } & {
456
462
  name?: string | undefined;
457
463
  id?: string | undefined;
@@ -802,6 +808,7 @@ export declare const VRangeSlider: {
802
808
  trackSize: string | number;
803
809
  thumbLabel: boolean | "always" | undefined;
804
810
  thumbSize: string | number;
811
+ noKeyboard: boolean;
805
812
  }, true, {}, import("vue").SlotsType<Partial<{
806
813
  default: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
807
814
  prepend: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
@@ -852,6 +859,7 @@ export declare const VRangeSlider: {
852
859
  tickSize: string | number;
853
860
  trackSize: string | number;
854
861
  thumbSize: string | number;
862
+ noKeyboard: boolean;
855
863
  } & {
856
864
  name?: string | undefined;
857
865
  id?: string | undefined;
@@ -1197,6 +1205,7 @@ export declare const VRangeSlider: {
1197
1205
  trackSize: string | number;
1198
1206
  thumbLabel: boolean | "always" | undefined;
1199
1207
  thumbSize: string | number;
1208
+ noKeyboard: boolean;
1200
1209
  }>;
1201
1210
  __isFragment?: never;
1202
1211
  __isTeleport?: never;
@@ -1230,6 +1239,7 @@ export declare const VRangeSlider: {
1230
1239
  tickSize: string | number;
1231
1240
  trackSize: string | number;
1232
1241
  thumbSize: string | number;
1242
+ noKeyboard: boolean;
1233
1243
  } & {
1234
1244
  name?: string | undefined;
1235
1245
  id?: string | undefined;
@@ -1580,6 +1590,7 @@ export declare const VRangeSlider: {
1580
1590
  trackSize: string | number;
1581
1591
  thumbLabel: boolean | "always" | undefined;
1582
1592
  thumbSize: string | number;
1593
+ noKeyboard: boolean;
1583
1594
  }, {}, string, import("vue").SlotsType<Partial<{
1584
1595
  default: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
1585
1596
  prepend: (arg: import("../VInput/VInput.js").VInputSlot) => import("vue").VNode[];
@@ -1672,6 +1683,7 @@ export declare const VRangeSlider: {
1672
1683
  validator: (v: any) => boolean;
1673
1684
  };
1674
1685
  reverse: BooleanConstructor;
1686
+ noKeyboard: BooleanConstructor;
1675
1687
  focused: BooleanConstructor;
1676
1688
  'onUpdate:focused': PropType<(args_0: boolean) => void>;
1677
1689
  errorMessages: {
@@ -1802,6 +1814,7 @@ export declare const VRangeSlider: {
1802
1814
  validator: (v: any) => boolean;
1803
1815
  };
1804
1816
  reverse: BooleanConstructor;
1817
+ noKeyboard: BooleanConstructor;
1805
1818
  focused: BooleanConstructor;
1806
1819
  'onUpdate:focused': PropType<(args_0: boolean) => void>;
1807
1820
  errorMessages: {
@@ -58,6 +58,7 @@ export declare const makeVSliderProps: <Defaults extends {
58
58
  trackFillColor?: unknown;
59
59
  trackSize?: unknown;
60
60
  reverse?: unknown;
61
+ noKeyboard?: unknown;
61
62
  } = {}>(defaults?: Defaults | undefined) => {
62
63
  modelValue: unknown extends Defaults["modelValue"] ? {
63
64
  type: (StringConstructor | NumberConstructor)[];
@@ -421,6 +422,10 @@ export declare const makeVSliderProps: <Defaults extends {
421
422
  type: import("vue").PropType<unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"]>;
422
423
  default: unknown extends Defaults["reverse"] ? boolean : boolean | Defaults["reverse"];
423
424
  };
425
+ noKeyboard: unknown extends Defaults["noKeyboard"] ? BooleanConstructor : {
426
+ type: import("vue").PropType<unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"]>;
427
+ default: unknown extends Defaults["noKeyboard"] ? boolean : boolean | Defaults["noKeyboard"];
428
+ };
424
429
  };
425
430
  export declare const VSlider: {
426
431
  new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
@@ -451,6 +456,7 @@ export declare const VSlider: {
451
456
  tickSize: string | number;
452
457
  trackSize: string | number;
453
458
  thumbSize: string | number;
459
+ noKeyboard: boolean;
454
460
  } & {
455
461
  name?: string | undefined;
456
462
  id?: string | undefined;
@@ -800,6 +806,7 @@ export declare const VSlider: {
800
806
  trackSize: string | number;
801
807
  thumbLabel: boolean | "always" | undefined;
802
808
  thumbSize: string | number;
809
+ noKeyboard: boolean;
803
810
  }, true, {}, import("vue").SlotsType<Partial<{
804
811
  default: (arg: VInputSlot) => import("vue").VNode[];
805
812
  prepend: (arg: VInputSlot) => import("vue").VNode[];
@@ -849,6 +856,7 @@ export declare const VSlider: {
849
856
  tickSize: string | number;
850
857
  trackSize: string | number;
851
858
  thumbSize: string | number;
859
+ noKeyboard: boolean;
852
860
  } & {
853
861
  name?: string | undefined;
854
862
  id?: string | undefined;
@@ -1193,6 +1201,7 @@ export declare const VSlider: {
1193
1201
  trackSize: string | number;
1194
1202
  thumbLabel: boolean | "always" | undefined;
1195
1203
  thumbSize: string | number;
1204
+ noKeyboard: boolean;
1196
1205
  }>;
1197
1206
  __isFragment?: never;
1198
1207
  __isTeleport?: never;
@@ -1225,6 +1234,7 @@ export declare const VSlider: {
1225
1234
  tickSize: string | number;
1226
1235
  trackSize: string | number;
1227
1236
  thumbSize: string | number;
1237
+ noKeyboard: boolean;
1228
1238
  } & {
1229
1239
  name?: string | undefined;
1230
1240
  id?: string | undefined;
@@ -1574,6 +1584,7 @@ export declare const VSlider: {
1574
1584
  trackSize: string | number;
1575
1585
  thumbLabel: boolean | "always" | undefined;
1576
1586
  thumbSize: string | number;
1587
+ noKeyboard: boolean;
1577
1588
  }, {}, string, import("vue").SlotsType<Partial<{
1578
1589
  default: (arg: VInputSlot) => import("vue").VNode[];
1579
1590
  prepend: (arg: VInputSlot) => import("vue").VNode[];
@@ -1717,6 +1728,7 @@ export declare const VSlider: {
1717
1728
  default: number;
1718
1729
  };
1719
1730
  reverse: BooleanConstructor;
1731
+ noKeyboard: BooleanConstructor;
1720
1732
  }, import("vue").ExtractPropTypes<{
1721
1733
  modelValue: {
1722
1734
  type: (StringConstructor | NumberConstructor)[];
@@ -1846,5 +1858,6 @@ export declare const VSlider: {
1846
1858
  default: number;
1847
1859
  };
1848
1860
  reverse: BooleanConstructor;
1861
+ noKeyboard: BooleanConstructor;
1849
1862
  }>>;
1850
1863
  export type VSlider = InstanceType<typeof VSlider>;
@@ -56,7 +56,8 @@ export const VSlider = genericComponent()({
56
56
  trackContainerRef,
57
57
  position,
58
58
  hasLabels,
59
- readonly
59
+ readonly,
60
+ noKeyboard
60
61
  } = useSlider({
61
62
  props,
62
63
  steps,
@@ -132,6 +133,7 @@ export const VSlider = genericComponent()({
132
133
  "ref": thumbContainerRef,
133
134
  "aria-describedby": messagesId.value,
134
135
  "focused": isFocused.value,
136
+ "noKeyboard": noKeyboard.value,
135
137
  "min": min.value,
136
138
  "max": max.value,
137
139
  "modelValue": model.value,