vuetify 3.3.12 → 3.4.0-alpha.0

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 (267) hide show
  1. package/dist/json/attributes.json +152 -16
  2. package/dist/json/importMap.json +4 -4
  3. package/dist/json/tags.json +34 -0
  4. package/dist/json/web-types.json +462 -48
  5. package/dist/vuetify-labs.css +1718 -606
  6. package/dist/vuetify-labs.d.ts +880 -276
  7. package/dist/vuetify-labs.esm.js +373 -189
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +372 -188
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1591 -479
  12. package/dist/vuetify.d.ts +865 -267
  13. package/dist/vuetify.esm.js +373 -189
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +372 -188
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +920 -905
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  21. package/lib/components/VAppBar/index.d.mts +6 -6
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -2
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/index.d.mts +62 -14
  25. package/lib/components/VAvatar/VAvatar.mjs +2 -1
  26. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  27. package/lib/components/VAvatar/index.d.mts +6 -0
  28. package/lib/components/VBanner/VBanner.mjs +5 -3
  29. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  30. package/lib/components/VBanner/index.d.mts +10 -0
  31. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -0
  32. package/lib/components/VBottomNavigation/VBottomNavigation.sass +1 -0
  33. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +9 -4
  34. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  35. package/lib/components/VBreadcrumbs/index.d.mts +28 -2
  36. package/lib/components/VBtn/VBtn.css +3 -0
  37. package/lib/components/VBtn/VBtn.sass +3 -0
  38. package/lib/components/VCarousel/index.d.mts +26 -0
  39. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  40. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  41. package/lib/components/VCheckbox/VCheckboxBtn.mjs +14 -11
  42. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  43. package/lib/components/VCheckbox/index.d.mts +15 -1
  44. package/lib/components/VColorPicker/VColorPickerEdit.css +4 -2
  45. package/lib/components/VColorPicker/VColorPickerPreview.css +16 -6
  46. package/lib/components/VColorPicker/VColorPickerPreview.mjs +28 -2
  47. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  48. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -0
  49. package/lib/components/VColorPicker/_variables.scss +1 -0
  50. package/lib/components/VCombobox/VCombobox.mjs +6 -2
  51. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  52. package/lib/components/VCombobox/index.d.mts +62 -14
  53. package/lib/components/VDialog/index.d.mts +41 -20
  54. package/lib/components/VField/VField.css +11 -6
  55. package/lib/components/VField/VField.mjs +5 -3
  56. package/lib/components/VField/VField.mjs.map +1 -1
  57. package/lib/components/VField/VField.sass +1 -0
  58. package/lib/components/VField/index.d.mts +4 -4
  59. package/lib/components/VFileInput/VFileInput.css +4 -0
  60. package/lib/components/VFileInput/VFileInput.sass +5 -1
  61. package/lib/components/VFileInput/_variables.scss +2 -1
  62. package/lib/components/VFileInput/index.d.mts +4 -4
  63. package/lib/components/VGrid/VGrid.css +153 -142
  64. package/lib/components/VImg/VImg.mjs +13 -1
  65. package/lib/components/VImg/VImg.mjs.map +1 -1
  66. package/lib/components/VImg/index.d.mts +26 -0
  67. package/lib/components/VList/VList.css +1 -1
  68. package/lib/components/VList/VList.sass +1 -1
  69. package/lib/components/VList/VListItem.css +15 -10
  70. package/lib/components/VList/VListItem.mjs +6 -3
  71. package/lib/components/VList/VListItem.mjs.map +1 -1
  72. package/lib/components/VList/VListItem.sass +17 -10
  73. package/lib/components/VList/index.d.mts +12 -12
  74. package/lib/components/VMenu/VMenu.mjs +4 -3
  75. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  76. package/lib/components/VMenu/index.d.mts +46 -25
  77. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +0 -1
  78. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -3
  79. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  80. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
  81. package/lib/components/VNavigationDrawer/_variables.scss +0 -1
  82. package/lib/components/VNavigationDrawer/index.d.mts +10 -0
  83. package/lib/components/VOverlay/VOverlay.mjs +9 -4
  84. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  85. package/lib/components/VOverlay/index.d.mts +17 -8
  86. package/lib/components/VOverlay/locationStrategies.mjs +9 -9
  87. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  88. package/lib/components/VOverlay/scrollStrategies.mjs +3 -3
  89. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  90. package/lib/components/VOverlay/useActivator.mjs +50 -21
  91. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  92. package/lib/components/VProgressLinear/VProgressLinear.css +3 -2
  93. package/lib/components/VRadio/index.d.mts +9 -1
  94. package/lib/components/VRadioGroup/VRadioGroup.css +6 -1
  95. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  96. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  97. package/lib/components/VRadioGroup/VRadioGroup.sass +5 -0
  98. package/lib/components/VRadioGroup/_variables.scss +3 -1
  99. package/lib/components/VRadioGroup/index.d.mts +3 -1
  100. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -2
  101. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  102. package/lib/components/VRangeSlider/index.d.mts +128 -33
  103. package/lib/components/VSelect/VSelect.mjs +14 -2
  104. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  105. package/lib/components/VSelect/index.d.mts +62 -14
  106. package/lib/components/VSelectionControl/VSelectionControl.mjs +27 -21
  107. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  108. package/lib/components/VSelectionControl/index.d.mts +33 -25
  109. package/lib/components/VSlideGroup/VSlideGroup.mjs +5 -3
  110. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  111. package/lib/components/VSlideGroup/index.d.mts +10 -0
  112. package/lib/components/VSlider/VSlider.mjs +2 -1
  113. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  114. package/lib/components/VSlider/VSliderThumb.css +8 -4
  115. package/lib/components/VSlider/VSliderTrack.css +22 -12
  116. package/lib/components/VSlider/index.d.mts +128 -33
  117. package/lib/components/VSlider/slider.mjs +5 -1
  118. package/lib/components/VSlider/slider.mjs.map +1 -1
  119. package/lib/components/VSnackbar/index.d.mts +41 -20
  120. package/lib/components/VSwitch/VSwitch.css +24 -17
  121. package/lib/components/VSwitch/VSwitch.mjs +37 -28
  122. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  123. package/lib/components/VSwitch/VSwitch.sass +20 -11
  124. package/lib/components/VSwitch/_variables.scss +18 -6
  125. package/lib/components/VSwitch/index.d.mts +9 -1
  126. package/lib/components/VTabs/index.d.mts +10 -0
  127. package/lib/components/VTextField/VTextField.css +9 -2
  128. package/lib/components/VTextField/VTextField.mjs +6 -3
  129. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  130. package/lib/components/VTextField/VTextField.sass +10 -3
  131. package/lib/components/VTextField/index.d.mts +22 -16
  132. package/lib/components/VTextarea/VTextarea.mjs +1 -2
  133. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  134. package/lib/components/VTextarea/index.d.mts +4 -4
  135. package/lib/components/VTimeline/VTimeline.css +21 -11
  136. package/lib/components/VTimeline/VTimeline.sass +6 -1
  137. package/lib/components/VToolbar/VToolbar.css +4 -2
  138. package/lib/components/VTooltip/index.d.mts +41 -20
  139. package/lib/components/index.d.mts +836 -265
  140. package/lib/components/transitions/dialog-transition.mjs +4 -3
  141. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  142. package/lib/components/transitions/index.d.mts +6 -6
  143. package/lib/composables/defaults.mjs +9 -9
  144. package/lib/composables/defaults.mjs.map +1 -1
  145. package/lib/composables/directiveComponent.mjs +69 -0
  146. package/lib/composables/directiveComponent.mjs.map +1 -0
  147. package/lib/composables/display.mjs +23 -3
  148. package/lib/composables/display.mjs.map +1 -1
  149. package/lib/composables/theme.mjs +7 -7
  150. package/lib/composables/theme.mjs.map +1 -1
  151. package/lib/entry-bundler.mjs +1 -1
  152. package/lib/entry-bundler.mjs.map +1 -1
  153. package/lib/framework.mjs +1 -1
  154. package/lib/framework.mjs.map +1 -1
  155. package/lib/iconsets/fa.mjs +2 -1
  156. package/lib/iconsets/fa.mjs.map +1 -1
  157. package/lib/iconsets/fa4.mjs +2 -1
  158. package/lib/iconsets/fa4.mjs.map +1 -1
  159. package/lib/iconsets/md.mjs +2 -1
  160. package/lib/iconsets/md.mjs.map +1 -1
  161. package/lib/iconsets/mdi-svg.mjs +2 -1
  162. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  163. package/lib/iconsets/mdi.mjs +2 -1
  164. package/lib/iconsets/mdi.mjs.map +1 -1
  165. package/lib/index.d.mts +33 -2
  166. package/lib/labs/VBottomSheet/index.d.mts +14 -8
  167. package/lib/labs/VDateInput/index.d.mts +10 -4
  168. package/lib/labs/VDatePicker/VDatePickerControls.css +1 -1
  169. package/lib/labs/VOtpInput/index.d.mts +4 -4
  170. package/lib/labs/components.d.mts +18 -12
  171. package/lib/locale/af.mjs +1 -0
  172. package/lib/locale/af.mjs.map +1 -1
  173. package/lib/locale/ar.mjs +1 -0
  174. package/lib/locale/ar.mjs.map +1 -1
  175. package/lib/locale/az.mjs +1 -0
  176. package/lib/locale/az.mjs.map +1 -1
  177. package/lib/locale/bg.mjs +1 -0
  178. package/lib/locale/bg.mjs.map +1 -1
  179. package/lib/locale/ca.mjs +1 -0
  180. package/lib/locale/ca.mjs.map +1 -1
  181. package/lib/locale/ckb.mjs +1 -0
  182. package/lib/locale/ckb.mjs.map +1 -1
  183. package/lib/locale/cs.mjs +1 -0
  184. package/lib/locale/cs.mjs.map +1 -1
  185. package/lib/locale/da.mjs +1 -0
  186. package/lib/locale/da.mjs.map +1 -1
  187. package/lib/locale/de.mjs +1 -0
  188. package/lib/locale/de.mjs.map +1 -1
  189. package/lib/locale/el.mjs +1 -0
  190. package/lib/locale/el.mjs.map +1 -1
  191. package/lib/locale/en.mjs +1 -0
  192. package/lib/locale/en.mjs.map +1 -1
  193. package/lib/locale/es.mjs +1 -0
  194. package/lib/locale/es.mjs.map +1 -1
  195. package/lib/locale/et.mjs +1 -0
  196. package/lib/locale/et.mjs.map +1 -1
  197. package/lib/locale/fa.mjs +1 -0
  198. package/lib/locale/fa.mjs.map +1 -1
  199. package/lib/locale/fi.mjs +1 -0
  200. package/lib/locale/fi.mjs.map +1 -1
  201. package/lib/locale/fr.mjs +1 -0
  202. package/lib/locale/fr.mjs.map +1 -1
  203. package/lib/locale/he.mjs +1 -0
  204. package/lib/locale/he.mjs.map +1 -1
  205. package/lib/locale/hr.mjs +1 -0
  206. package/lib/locale/hr.mjs.map +1 -1
  207. package/lib/locale/hu.mjs +1 -0
  208. package/lib/locale/hu.mjs.map +1 -1
  209. package/lib/locale/id.mjs +1 -0
  210. package/lib/locale/id.mjs.map +1 -1
  211. package/lib/locale/index.d.mts +42 -0
  212. package/lib/locale/it.mjs +1 -0
  213. package/lib/locale/it.mjs.map +1 -1
  214. package/lib/locale/ja.mjs +1 -0
  215. package/lib/locale/ja.mjs.map +1 -1
  216. package/lib/locale/ko.mjs +1 -0
  217. package/lib/locale/ko.mjs.map +1 -1
  218. package/lib/locale/lt.mjs +1 -0
  219. package/lib/locale/lt.mjs.map +1 -1
  220. package/lib/locale/lv.mjs +1 -0
  221. package/lib/locale/lv.mjs.map +1 -1
  222. package/lib/locale/nl.mjs +1 -0
  223. package/lib/locale/nl.mjs.map +1 -1
  224. package/lib/locale/no.mjs +1 -0
  225. package/lib/locale/no.mjs.map +1 -1
  226. package/lib/locale/pl.mjs +1 -0
  227. package/lib/locale/pl.mjs.map +1 -1
  228. package/lib/locale/pt.mjs +1 -0
  229. package/lib/locale/pt.mjs.map +1 -1
  230. package/lib/locale/ro.mjs +1 -0
  231. package/lib/locale/ro.mjs.map +1 -1
  232. package/lib/locale/ru.mjs +1 -0
  233. package/lib/locale/ru.mjs.map +1 -1
  234. package/lib/locale/sk.mjs +1 -0
  235. package/lib/locale/sk.mjs.map +1 -1
  236. package/lib/locale/sl.mjs +1 -0
  237. package/lib/locale/sl.mjs.map +1 -1
  238. package/lib/locale/sr-Cyrl.mjs +1 -0
  239. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  240. package/lib/locale/sr-Latn.mjs +1 -0
  241. package/lib/locale/sr-Latn.mjs.map +1 -1
  242. package/lib/locale/sv.mjs +1 -0
  243. package/lib/locale/sv.mjs.map +1 -1
  244. package/lib/locale/th.mjs +1 -0
  245. package/lib/locale/th.mjs.map +1 -1
  246. package/lib/locale/tr.mjs +1 -0
  247. package/lib/locale/tr.mjs.map +1 -1
  248. package/lib/locale/uk.mjs +1 -0
  249. package/lib/locale/uk.mjs.map +1 -1
  250. package/lib/locale/vi.mjs +1 -0
  251. package/lib/locale/vi.mjs.map +1 -1
  252. package/lib/locale/zh-Hans.mjs +1 -0
  253. package/lib/locale/zh-Hans.mjs.map +1 -1
  254. package/lib/locale/zh-Hant.mjs +1 -0
  255. package/lib/locale/zh-Hant.mjs.map +1 -1
  256. package/lib/styles/main.css +1026 -0
  257. package/lib/styles/settings/_utilities.scss +20 -0
  258. package/lib/styles/tools/_rtl.sass +4 -2
  259. package/lib/util/box.mjs +12 -0
  260. package/lib/util/box.mjs.map +1 -1
  261. package/lib/util/globals.mjs +1 -0
  262. package/lib/util/globals.mjs.map +1 -1
  263. package/lib/util/helpers.mjs +19 -5
  264. package/lib/util/helpers.mjs.map +1 -1
  265. package/lib/util/injectSelf.mjs +2 -1
  266. package/lib/util/injectSelf.mjs.map +1 -1
  267. package/package.json +2 -2
@@ -4,6 +4,7 @@ import { makeDelayProps, useDelay } from "../../composables/delay.mjs"; // Utili
4
4
  import { computed, effectScope, inject, mergeProps, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';
5
5
  import { bindProps, getCurrentInstance, IN_BROWSER, matchesSelector, propsFactory, refElement, unbindProps } from "../../util/index.mjs"; // Types
6
6
  export const makeActivatorProps = propsFactory({
7
+ target: [String, Object],
7
8
  activator: [String, Object],
8
9
  activatorProps: {
9
10
  type: Object,
@@ -26,6 +27,7 @@ export function useActivator(props, _ref) {
26
27
  isActive,
27
28
  isTop
28
29
  } = _ref;
30
+ const vm = getCurrentInstance('useActivator');
29
31
  const activatorEl = ref();
30
32
  let isHovered = false;
31
33
  let isFocused = false;
@@ -43,10 +45,14 @@ export function useActivator(props, _ref) {
43
45
  isActive.value = value;
44
46
  }
45
47
  });
48
+ const cursorTarget = ref();
46
49
  const availableEvents = {
47
50
  onClick: e => {
48
51
  e.stopPropagation();
49
52
  activatorEl.value = e.currentTarget || e.target;
53
+ if (!isActive.value) {
54
+ cursorTarget.value = [e.clientX, e.clientY];
55
+ }
50
56
  isActive.value = !isActive.value;
51
57
  },
52
58
  onMouseenter: e => {
@@ -140,6 +146,15 @@ export function useActivator(props, _ref) {
140
146
  isActive.value = false;
141
147
  }
142
148
  });
149
+ watch(isActive, val => {
150
+ if (!val) {
151
+ setTimeout(() => {
152
+ cursorTarget.value = undefined;
153
+ });
154
+ }
155
+ }, {
156
+ flush: 'post'
157
+ });
143
158
  const activatorRef = ref();
144
159
  watchEffect(() => {
145
160
  if (!activatorRef.value) return;
@@ -147,7 +162,15 @@ export function useActivator(props, _ref) {
147
162
  activatorEl.value = refElement(activatorRef.value);
148
163
  });
149
164
  });
150
- const vm = getCurrentInstance('useActivator');
165
+ const targetRef = ref();
166
+ const target = computed(() => {
167
+ if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;
168
+ if (targetRef.value) return refElement(targetRef.value);
169
+ return getTarget(props.target, vm) || activatorEl.value;
170
+ });
171
+ const targetEl = computed(() => {
172
+ return Array.isArray(target.value) ? undefined : target.value;
173
+ });
151
174
  let scope;
152
175
  watch(() => !!props.activator, val => {
153
176
  if (val && IN_BROWSER) {
@@ -171,6 +194,9 @@ export function useActivator(props, _ref) {
171
194
  return {
172
195
  activatorEl,
173
196
  activatorRef,
197
+ target,
198
+ targetEl,
199
+ targetRef,
174
200
  activatorEvents,
175
201
  contentEvents,
176
202
  scrimEvents
@@ -212,29 +238,32 @@ function _useActivator(props, vm, _ref2) {
212
238
  }
213
239
  function getActivator() {
214
240
  let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;
215
- let activator;
216
- if (selector) {
217
- if (selector === 'parent') {
218
- let el = vm?.proxy?.$el?.parentNode;
219
- while (el.hasAttribute('data-no-activator')) {
220
- el = el.parentNode;
221
- }
222
- activator = el;
223
- } else if (typeof selector === 'string') {
224
- // Selector
225
- activator = document.querySelector(selector);
226
- } else if ('$el' in selector) {
227
- // Component (ref)
228
- activator = selector.$el;
229
- } else {
230
- // HTMLElement | Element
231
- activator = selector;
232
- }
233
- }
241
+ const activator = getTarget(selector, vm);
234
242
 
235
243
  // The activator should only be a valid element (Ignore comments and text nodes)
236
- activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null;
244
+ activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined;
237
245
  return activatorEl.value;
238
246
  }
239
247
  }
248
+ function getTarget(selector, vm) {
249
+ if (!selector) return;
250
+ let target;
251
+ if (selector === 'parent') {
252
+ let el = vm?.proxy?.$el?.parentNode;
253
+ while (el.hasAttribute('data-no-activator')) {
254
+ el = el.parentNode;
255
+ }
256
+ target = el;
257
+ } else if (typeof selector === 'string') {
258
+ // Selector
259
+ target = document.querySelector(selector);
260
+ } else if ('$el' in selector) {
261
+ // Component (ref)
262
+ target = selector.$el;
263
+ } else {
264
+ // HTMLElement | Element | [x, y]
265
+ target = selector;
266
+ }
267
+ return target;
268
+ }
240
269
  //# sourceMappingURL=useActivator.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useActivator.mjs","names":["VMenuSymbol","makeDelayProps","useDelay","computed","effectScope","inject","mergeProps","nextTick","onScopeDispose","ref","watch","watchEffect","bindProps","getCurrentInstance","IN_BROWSER","matchesSelector","propsFactory","refElement","unbindProps","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","availableEvents","onClick","e","stopPropagation","currentTarget","target","onMouseenter","sourceCapabilities","firesTouchEvents","onMouseleave","onFocus","onBlur","activatorEvents","events","contentEvents","onFocusin","onFocusout","menu","closeParents","scrimEvents","val","activatorRef","vm","scope","run","_useActivator","stop","flush","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","arguments","length","_props","selector","proxy","$el","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n mergeProps,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n bindProps,\n getCurrentInstance,\n IN_BROWSER,\n matchesSelector,\n propsFactory,\n refElement,\n unbindProps,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'VOverlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n onMouseenter: (e: MouseEvent) => {\n if (e.sourceCapabilities?.firesTouchEvents) return\n\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n onMouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n onFocus: (e: FocusEvent) => {\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') === false) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n onBlur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter\n events.onMouseleave = availableEvents.onMouseleave\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus\n events.onBlur = availableEvents.onBlur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true\n runOpenDelay()\n }\n events.onFocusout = () => {\n isFocused = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.onClick = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = refElement(activatorRef.value)\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n bindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n unbindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useActivator.mjs","names":["VMenuSymbol","makeDelayProps","useDelay","computed","effectScope","inject","mergeProps","nextTick","onScopeDispose","ref","watch","watchEffect","bindProps","getCurrentInstance","IN_BROWSER","matchesSelector","propsFactory","refElement","unbindProps","makeActivatorProps","target","String","Object","activator","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","vm","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","cursorTarget","availableEvents","onClick","e","stopPropagation","currentTarget","clientX","clientY","onMouseenter","sourceCapabilities","firesTouchEvents","onMouseleave","onFocus","onBlur","activatorEvents","events","contentEvents","onFocusin","onFocusout","menu","closeParents","scrimEvents","val","setTimeout","flush","activatorRef","targetRef","getTarget","targetEl","Array","isArray","scope","run","_useActivator","stop","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","arguments","length","_props","selector","nodeType","Node","ELEMENT_NODE","proxy","$el","parentNode","hasAttribute","document","querySelector"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n mergeProps,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n bindProps,\n getCurrentInstance,\n IN_BROWSER,\n matchesSelector,\n propsFactory,\n refElement,\n unbindProps,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\n\ninterface ActivatorProps extends DelayProps {\n target: 'parent' | 'cursor' | (string & {}) | Element | ComponentPublicInstance | [x: number, y: number] | undefined\n activator: 'parent' | (string & {}) | Element | ComponentPublicInstance | undefined\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n target: [String, Object] as PropType<ActivatorProps['target']>,\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'VOverlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const vm = getCurrentInstance('useActivator')\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const cursorTarget = ref<[x: number, y: number]>()\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY]\n }\n isActive.value = !isActive.value\n },\n onMouseenter: (e: MouseEvent) => {\n if (e.sourceCapabilities?.firesTouchEvents) return\n\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n onMouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n onFocus: (e: FocusEvent) => {\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') === false) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n onBlur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter\n events.onMouseleave = availableEvents.onMouseleave\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus\n events.onBlur = availableEvents.onBlur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true\n runOpenDelay()\n }\n events.onFocusout = () => {\n isFocused = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.onClick = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Record<string, EventListener> = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined\n })\n }\n }, { flush: 'post' })\n\n const activatorRef = ref<HTMLElement>()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = refElement(activatorRef.value)\n })\n })\n\n const targetRef = ref<HTMLElement>()\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value\n if (targetRef.value) return refElement(targetRef.value)\n return getTarget(props.target, vm) || activatorEl.value\n })\n const targetEl = computed(() => {\n return Array.isArray(target.value)\n ? undefined\n : target.value\n })\n\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, target, targetEl, targetRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n bindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n unbindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n const activator = getTarget(selector, vm)\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined\n\n return activatorEl.value\n }\n}\n\nfunction getTarget<T extends 'parent' | string | Element | ComponentPublicInstance | [x: number, y: number] | undefined> (\n selector: T,\n vm: ComponentInternalInstance\n): HTMLElement | undefined | (T extends any[] ? [x: number, y: number] : never) {\n if (!selector) return\n\n let target\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n target = el\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el\n } else {\n // HTMLElement | Element | [x, y]\n target = selector\n }\n\n return target\n}\n"],"mappings":"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"}
@@ -138,11 +138,12 @@
138
138
  .v-progress-linear--rounded-bar .v-progress-linear__stream + .v-progress-linear__background {
139
139
  border-radius: 9999px;
140
140
  }
141
- .v-progress-linear--rounded-bar .v-progress-linear__determinate.v-locale--is-ltr, .v-locale--is-ltr .v-progress-linear--rounded-bar .v-progress-linear__determinate {
141
+ .v-locale--is-ltr.v-progress-linear--rounded-bar .v-progress-linear__determinate, .v-locale--is-ltr .v-progress-linear--rounded-bar .v-progress-linear__determinate {
142
142
  border-top-left-radius: 0;
143
143
  border-bottom-left-radius: 0;
144
144
  }
145
- .v-progress-linear--rounded-bar .v-progress-linear__determinate.v-locale--is-rtl, .v-locale--is-rtl .v-progress-linear--rounded-bar .v-progress-linear__determinate {
145
+
146
+ .v-locale--is-rtl.v-progress-linear--rounded-bar .v-progress-linear__determinate, .v-locale--is-rtl .v-progress-linear--rounded-bar .v-progress-linear__determinate {
146
147
  border-top-right-radius: 0;
147
148
  border-bottom-right-radius: 0;
148
149
  }
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, WritableComputedRef, Ref, CSSProperties } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, WritableComputedRef, Ref, CSSProperties, VNode } from 'vue';
3
3
 
4
4
  interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
@@ -16,6 +16,8 @@ type SelectionControlSlot = {
16
16
  model: WritableComputedRef<any>;
17
17
  textColorClasses: Ref<string[]>;
18
18
  textColorStyles: Ref<CSSProperties>;
19
+ inputNode: VNode;
20
+ icon: IconValue | undefined;
19
21
  props: {
20
22
  onBlur: (e: Event) => void;
21
23
  onFocus: (e: FocusEvent) => void;
@@ -108,6 +110,7 @@ declare const VRadio: {
108
110
  }>) => void)[] | undefined;
109
111
  modelValue?: any;
110
112
  defaultsTarget?: string | undefined;
113
+ baseColor?: string | undefined;
111
114
  trueValue?: any;
112
115
  falseValue?: any;
113
116
  "v-slot:input"?: false | ((arg: SelectionControlSlot) => vue.VNodeChild) | undefined;
@@ -163,6 +166,7 @@ declare const VRadio: {
163
166
  theme?: string | undefined;
164
167
  modelValue?: any;
165
168
  defaultsTarget?: string | undefined;
169
+ baseColor?: string | undefined;
166
170
  trueValue?: any;
167
171
  falseValue?: any;
168
172
  } & {
@@ -257,6 +261,7 @@ declare const VRadio: {
257
261
  theme?: string | undefined;
258
262
  modelValue?: any;
259
263
  defaultsTarget?: string | undefined;
264
+ baseColor?: string | undefined;
260
265
  trueValue?: any;
261
266
  falseValue?: any;
262
267
  } & {
@@ -310,6 +315,7 @@ declare const VRadio: {
310
315
  theme?: string | undefined;
311
316
  modelValue?: any;
312
317
  defaultsTarget?: string | undefined;
318
+ baseColor?: string | undefined;
313
319
  trueValue?: any;
314
320
  falseValue?: any;
315
321
  } & {
@@ -407,6 +413,7 @@ declare const VRadio: {
407
413
  default: typeof deepEqual;
408
414
  };
409
415
  label: StringConstructor;
416
+ baseColor: StringConstructor;
410
417
  trueValue: null;
411
418
  falseValue: null;
412
419
  value: null;
@@ -456,6 +463,7 @@ declare const VRadio: {
456
463
  default: typeof deepEqual;
457
464
  };
458
465
  label: StringConstructor;
466
+ baseColor: StringConstructor;
459
467
  trueValue: null;
460
468
  falseValue: null;
461
469
  value: null;
@@ -2,8 +2,13 @@
2
2
  flex-direction: column;
3
3
  }
4
4
  .v-radio-group > .v-input__control > .v-label {
5
- margin-inline-start: 8px;
5
+ margin-inline-start: 16px;
6
6
  }
7
7
  .v-radio-group > .v-input__control > .v-label + .v-selection-control-group {
8
+ padding-inline-start: 6px;
8
9
  margin-top: 8px;
10
+ }
11
+ .v-radio-group .v-input__details {
12
+ padding-inline-start: 16px;
13
+ padding-inline-end: 16px;
9
14
  }
@@ -47,7 +47,7 @@ export const VRadioGroup = genericComponent()({
47
47
  const id = computed(() => props.id || `radio-group-${uid}`);
48
48
  const model = useProxiedModel(props, 'modelValue');
49
49
  useRender(() => {
50
- const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
50
+ const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
51
51
  const [inputProps, _1] = VInput.filterProps(props);
52
52
  const [controlProps, _2] = VSelectionControl.filterProps(props);
53
53
  const label = slots.label ? slots.label({
@@ -59,7 +59,7 @@ export const VRadioGroup = genericComponent()({
59
59
  return _createVNode(VInput, _mergeProps({
60
60
  "class": ['v-radio-group', props.class],
61
61
  "style": props.style
62
- }, inputAttrs, inputProps, {
62
+ }, rootAttrs, inputProps, {
63
63
  "modelValue": model.value,
64
64
  "onUpdate:modelValue": $event => model.value = $event,
65
65
  "id": id.value
@@ -1 +1 @@
1
- {"version":3,"file":"VRadioGroup.mjs","names":["makeVInputProps","VInput","VLabel","VSelectionControl","makeSelectionControlGroupProps","VSelectionControlGroup","IconValue","useProxiedModel","computed","filterInputAttrs","genericComponent","getUid","omit","propsFactory","useRender","makeVRadioGroupProps","height","type","Number","String","default","trueIcon","falseIcon","VRadioGroup","name","inheritAttrs","props","emits","val","setup","_ref","attrs","slots","uid","id","model","inputAttrs","controlAttrs","inputProps","_1","filterProps","controlProps","_2","label","for","value","_createVNode","_mergeProps","class","style","$event","_ref2","messagesId","isDisabled","isReadonly","_Fragment","undefined"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControl } from '@/components/VSelectionControl'\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\n\nexport type VRadioGroupSlots = VInputSlots & VSelectionControlSlots\n\nexport const makeVRadioGroupProps = propsFactory({\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n}, 'VRadioGroup')\n\nexport const VRadioGroup = genericComponent<VRadioGroupSlots>()({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: makeVRadioGroupProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = VInput.filterProps(props)\n const [controlProps, _2] = VSelectionControl.filterProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class={[\n 'v-radio-group',\n props.class,\n ]}\n style={ props.style }\n { ...inputAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel id={ id.value }>\n { label }\n </VLabel>\n )}\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n aria-describedby={ messagesId.value }\n defaultsTarget=\"VRadio\"\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n aria-labelledby={ label ? id.value : undefined }\n multiple={ false }\n { ...controlAttrs }\n v-model={ model.value }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRadioGroup = InstanceType<typeof VRadioGroup>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VRadioGroup.mjs","names":["makeVInputProps","VInput","VLabel","VSelectionControl","makeSelectionControlGroupProps","VSelectionControlGroup","IconValue","useProxiedModel","computed","filterInputAttrs","genericComponent","getUid","omit","propsFactory","useRender","makeVRadioGroupProps","height","type","Number","String","default","trueIcon","falseIcon","VRadioGroup","name","inheritAttrs","props","emits","val","setup","_ref","attrs","slots","uid","id","model","rootAttrs","controlAttrs","inputProps","_1","filterProps","controlProps","_2","label","for","value","_createVNode","_mergeProps","class","style","$event","_ref2","messagesId","isDisabled","isReadonly","_Fragment","undefined"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControl } from '@/components/VSelectionControl'\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\n\nexport type VRadioGroupSlots = VInputSlots & VSelectionControlSlots\n\nexport const makeVRadioGroupProps = propsFactory({\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n}, 'VRadioGroup')\n\nexport const VRadioGroup = genericComponent<VRadioGroupSlots>()({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: makeVRadioGroupProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = VInput.filterProps(props)\n const [controlProps, _2] = VSelectionControl.filterProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class={[\n 'v-radio-group',\n props.class,\n ]}\n style={ props.style }\n { ...rootAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel id={ id.value }>\n { label }\n </VLabel>\n )}\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n aria-describedby={ messagesId.value }\n defaultsTarget=\"VRadio\"\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n aria-labelledby={ label ? id.value : undefined }\n multiple={ false }\n { ...controlAttrs }\n v-model={ model.value }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRadioGroup = InstanceType<typeof VRadioGroup>\n"],"mappings":"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"}
@@ -8,4 +8,9 @@
8
8
  margin-inline-start: $radio-group-label-margin-inline-start
9
9
 
10
10
  + .v-selection-control-group
11
+ padding-inline-start: $radio-group-label-selection-group-padding-inline
11
12
  margin-top: $radio-group-label-selection-group-margin-top
13
+
14
+ .v-input__details
15
+ padding-inline-start: $radio-group-details-padding-inline
16
+ padding-inline-end: $radio-group-details-padding-inline
@@ -1,2 +1,4 @@
1
- $radio-group-label-margin-inline-start: 8px !default;
1
+ $radio-group-details-padding-inline: 16px !default;
2
+ $radio-group-label-margin-inline-start: 16px !default;
2
3
  $radio-group-label-selection-group-margin-top: 8px !default;
4
+ $radio-group-label-selection-group-padding-inline: 6px !default;
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, PropType, JSXComponent, WritableComputedRef, Ref, CSSProperties, ComputedRef } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, PropType, JSXComponent, WritableComputedRef, Ref, CSSProperties, VNode, ComputedRef } from 'vue';
3
3
 
4
4
  interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
@@ -18,6 +18,8 @@ type SelectionControlSlot = {
18
18
  model: WritableComputedRef<any>;
19
19
  textColorClasses: Ref<string[]>;
20
20
  textColorStyles: Ref<CSSProperties>;
21
+ inputNode: VNode;
22
+ icon: IconValue | undefined;
21
23
  props: {
22
24
  onBlur: (e: Event) => void;
23
25
  onFocus: (e: FocusEvent) => void;
@@ -180,7 +180,8 @@ export const VRangeSlider = genericComponent()({
180
180
  },
181
181
  "min": min.value,
182
182
  "max": model.value[1],
183
- "position": trackStart.value
183
+ "position": trackStart.value,
184
+ "ripple": props.ripple
184
185
  }, {
185
186
  'thumb-label': slots['thumb-label']
186
187
  }), _createVNode(VSliderThumb, {
@@ -208,7 +209,8 @@ export const VRangeSlider = genericComponent()({
208
209
  },
209
210
  "min": model.value[0],
210
211
  "max": max.value,
211
- "position": trackStop.value
212
+ "position": trackStop.value,
213
+ "ripple": props.ripple
212
214
  }, {
213
215
  'thumb-label': slots['thumb-label']
214
216
  })]);
@@ -1 +1 @@
1
- {"version":3,"file":"VRangeSlider.mjs","names":["makeVInputProps","VInput","VLabel","getOffset","makeSliderProps","useSlider","useSteps","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVRangeSliderProps","strict","Boolean","modelValue","type","Array","default","VRangeSlider","name","props","emits","value","end","start","setup","_ref","slots","emit","startThumbRef","stopThumbRef","inputRef","rtlClasses","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","steps","model","undefined","arr","length","map","roundValue","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","trackContainerRef","onSliderStart","onSliderEnd","_ref2","newValue","onSliderMove","_ref3","stop","focus","isFocused","blur","trackStart","trackStop","inputProps","_","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_Fragment","_ref4","id","messagesId","readonly","v","relatedTarget","onBlur"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { getOffset, makeSliderProps, useSlider, useSteps } from '@/components/VSlider/slider'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<readonly (string | number)[]>,\n default: () => ([0, 0]),\n },\n}, 'VRangeSlider')\n\nexport const VRangeSlider = genericComponent<VSliderSlots>()({\n name: 'VRangeSlider',\n\n props: makeVRangeSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n end: (value: [number, number]) => true,\n start: (value: [number, number]) => true,\n },\n\n setup (props, { slots, emit }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n const { rtlClasses } = useRtl()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr?.length) return [0, 0]\n\n return arr.map(value => steps.roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const newValue: [number, number] = activeThumbRef.value === startThumbRef.value?.$el\n ? [value, model.value[1]]\n : [model.value[0], value]\n\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue\n }\n\n emit('end', model.value)\n },\n onSliderMove: ({ value }) => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop]\n } else {\n model.value = [start, Math.max(start, value)]\n }\n },\n getActiveThumb,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ onSliderMousedown }\n onTouchstartPassive={ onSliderTouchstart }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VRangeSlider.mjs","names":["makeVInputProps","VInput","VLabel","getOffset","makeSliderProps","useSlider","useSteps","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useRtl","useProxiedModel","computed","ref","genericComponent","propsFactory","useRender","makeVRangeSliderProps","strict","Boolean","modelValue","type","Array","default","VRangeSlider","name","props","emits","value","end","start","setup","_ref","slots","emit","startThumbRef","stopThumbRef","inputRef","rtlClasses","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","steps","model","undefined","arr","length","map","roundValue","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","trackContainerRef","onSliderStart","onSliderEnd","_ref2","newValue","onSliderMove","_ref3","stop","focus","isFocused","blur","trackStart","trackStop","inputProps","_","filterProps","hasPrepend","label","prepend","_createVNode","_mergeProps","disabled","class","style","slotProps","_Fragment","_ref4","id","messagesId","readonly","v","relatedTarget","onBlur","ripple"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { getOffset, makeSliderProps, useSlider, useSteps } from '@/components/VSlider/slider'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<readonly (string | number)[]>,\n default: () => ([0, 0]),\n },\n}, 'VRangeSlider')\n\nexport const VRangeSlider = genericComponent<VSliderSlots>()({\n name: 'VRangeSlider',\n\n props: makeVRangeSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n end: (value: [number, number]) => true,\n start: (value: [number, number]) => true,\n },\n\n setup (props, { slots, emit }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n const { rtlClasses } = useRtl()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr?.length) return [0, 0]\n\n return arr.map(value => steps.roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const newValue: [number, number] = activeThumbRef.value === startThumbRef.value?.$el\n ? [value, model.value[1]]\n : [model.value[0], value]\n\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue\n }\n\n emit('end', model.value)\n },\n onSliderMove: ({ value }) => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop]\n } else {\n model.value = [start, Math.max(start, value)]\n }\n },\n getActiveThumb,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const [inputProps, _] = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id, messagesId }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ onSliderMousedown }\n onTouchstartPassive={ onSliderTouchstart }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ !!props.disabled }\n readonly={ !!props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n aria-describedby={ messagesId.value }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":"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"}