vuetify 3.3.13 → 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 (139) hide show
  1. package/dist/json/attributes.json +107 -11
  2. package/dist/json/importMap.json +16 -16
  3. package/dist/json/tags.json +24 -0
  4. package/dist/json/web-types.json +305 -38
  5. package/dist/vuetify-labs.css +1483 -408
  6. package/dist/vuetify-labs.d.ts +711 -241
  7. package/dist/vuetify-labs.esm.js +279 -134
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +278 -133
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1370 -295
  12. package/dist/vuetify.d.ts +699 -235
  13. package/dist/vuetify.esm.js +279 -134
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +278 -133
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +912 -897
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/index.d.mts +20 -14
  21. package/lib/components/VAvatar/VAvatar.mjs +2 -1
  22. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  23. package/lib/components/VAvatar/index.d.mts +6 -0
  24. package/lib/components/VBanner/VBanner.mjs +5 -3
  25. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  26. package/lib/components/VBanner/index.d.mts +10 -0
  27. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +9 -4
  28. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  29. package/lib/components/VBreadcrumbs/index.d.mts +28 -2
  30. package/lib/components/VCarousel/index.d.mts +26 -0
  31. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  32. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  33. package/lib/components/VCheckbox/VCheckboxBtn.mjs +14 -11
  34. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  35. package/lib/components/VCheckbox/index.d.mts +12 -0
  36. package/lib/components/VColorPicker/VColorPickerEdit.css +4 -2
  37. package/lib/components/VColorPicker/VColorPickerPreview.css +16 -6
  38. package/lib/components/VColorPicker/VColorPickerPreview.mjs +28 -2
  39. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  40. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -0
  41. package/lib/components/VColorPicker/_variables.scss +1 -0
  42. package/lib/components/VCombobox/index.d.mts +20 -14
  43. package/lib/components/VDialog/index.d.mts +41 -20
  44. package/lib/components/VField/VField.css +10 -6
  45. package/lib/components/VField/index.d.mts +4 -4
  46. package/lib/components/VFileInput/index.d.mts +4 -4
  47. package/lib/components/VGrid/VGrid.css +153 -142
  48. package/lib/components/VImg/VImg.mjs +13 -1
  49. package/lib/components/VImg/VImg.mjs.map +1 -1
  50. package/lib/components/VImg/index.d.mts +26 -0
  51. package/lib/components/VList/index.d.mts +12 -12
  52. package/lib/components/VMenu/index.d.mts +41 -20
  53. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -3
  54. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  55. package/lib/components/VNavigationDrawer/index.d.mts +10 -0
  56. package/lib/components/VOverlay/VOverlay.mjs +9 -4
  57. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  58. package/lib/components/VOverlay/index.d.mts +17 -8
  59. package/lib/components/VOverlay/locationStrategies.mjs +9 -9
  60. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  61. package/lib/components/VOverlay/scrollStrategies.mjs +3 -3
  62. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  63. package/lib/components/VOverlay/useActivator.mjs +50 -21
  64. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  65. package/lib/components/VProgressLinear/VProgressLinear.css +3 -2
  66. package/lib/components/VRadio/index.d.mts +6 -0
  67. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  68. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  69. package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -2
  70. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  71. package/lib/components/VRangeSlider/index.d.mts +128 -33
  72. package/lib/components/VSelect/index.d.mts +20 -14
  73. package/lib/components/VSelectionControl/VSelectionControl.mjs +5 -2
  74. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  75. package/lib/components/VSelectionControl/index.d.mts +6 -0
  76. package/lib/components/VSlideGroup/VSlideGroup.mjs +5 -3
  77. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  78. package/lib/components/VSlideGroup/index.d.mts +10 -0
  79. package/lib/components/VSlider/VSlider.mjs +2 -1
  80. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  81. package/lib/components/VSlider/VSliderThumb.css +8 -4
  82. package/lib/components/VSlider/VSliderTrack.css +22 -12
  83. package/lib/components/VSlider/index.d.mts +128 -33
  84. package/lib/components/VSlider/slider.mjs +5 -1
  85. package/lib/components/VSlider/slider.mjs.map +1 -1
  86. package/lib/components/VSnackbar/index.d.mts +41 -20
  87. package/lib/components/VSwitch/VSwitch.mjs +9 -9
  88. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  89. package/lib/components/VSwitch/index.d.mts +6 -0
  90. package/lib/components/VTabs/index.d.mts +10 -0
  91. package/lib/components/VTextField/index.d.mts +16 -16
  92. package/lib/components/VTextarea/index.d.mts +4 -4
  93. package/lib/components/VTimeline/VTimeline.css +15 -10
  94. package/lib/components/VToolbar/VToolbar.css +4 -2
  95. package/lib/components/VTooltip/index.d.mts +41 -20
  96. package/lib/components/index.d.mts +667 -230
  97. package/lib/components/transitions/dialog-transition.mjs +4 -3
  98. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  99. package/lib/components/transitions/index.d.mts +6 -6
  100. package/lib/composables/defaults.mjs +9 -9
  101. package/lib/composables/defaults.mjs.map +1 -1
  102. package/lib/composables/directiveComponent.mjs +69 -0
  103. package/lib/composables/directiveComponent.mjs.map +1 -0
  104. package/lib/composables/display.mjs +23 -3
  105. package/lib/composables/display.mjs.map +1 -1
  106. package/lib/composables/theme.mjs +7 -7
  107. package/lib/composables/theme.mjs.map +1 -1
  108. package/lib/entry-bundler.mjs +1 -1
  109. package/lib/entry-bundler.mjs.map +1 -1
  110. package/lib/framework.mjs +1 -1
  111. package/lib/framework.mjs.map +1 -1
  112. package/lib/iconsets/fa.mjs +2 -1
  113. package/lib/iconsets/fa.mjs.map +1 -1
  114. package/lib/iconsets/fa4.mjs +2 -1
  115. package/lib/iconsets/fa4.mjs.map +1 -1
  116. package/lib/iconsets/md.mjs +2 -1
  117. package/lib/iconsets/md.mjs.map +1 -1
  118. package/lib/iconsets/mdi-svg.mjs +2 -1
  119. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  120. package/lib/iconsets/mdi.mjs +2 -1
  121. package/lib/iconsets/mdi.mjs.map +1 -1
  122. package/lib/index.d.mts +36 -5
  123. package/lib/labs/VBottomSheet/index.d.mts +14 -8
  124. package/lib/labs/VDateInput/index.d.mts +4 -4
  125. package/lib/labs/VDatePicker/VDatePickerControls.css +1 -1
  126. package/lib/labs/VOtpInput/index.d.mts +4 -4
  127. package/lib/labs/components.d.mts +18 -12
  128. package/lib/styles/main.css +1026 -0
  129. package/lib/styles/settings/_utilities.scss +20 -0
  130. package/lib/styles/tools/_rtl.sass +4 -2
  131. package/lib/util/box.mjs +12 -0
  132. package/lib/util/box.mjs.map +1 -1
  133. package/lib/util/globals.mjs +1 -0
  134. package/lib/util/globals.mjs.map +1 -1
  135. package/lib/util/helpers.mjs +19 -5
  136. package/lib/util/helpers.mjs.map +1 -1
  137. package/lib/util/injectSelf.mjs +2 -1
  138. package/lib/util/injectSelf.mjs.map +1 -1
  139. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.3.13
2
+ * Vuetify v3.4.0-alpha.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -78,6 +78,7 @@
78
78
  const IN_BROWSER = typeof window !== 'undefined';
79
79
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
80
80
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
81
+ const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
81
82
 
82
83
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
83
84
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -161,7 +162,15 @@
161
162
  return obj !== null && typeof obj === 'object' && !Array.isArray(obj);
162
163
  }
163
164
  function refElement(obj) {
164
- return obj && '$el' in obj ? obj.$el : obj;
165
+ if (obj && '$el' in obj) {
166
+ const el = obj.$el;
167
+ if (el?.nodeType === Node.TEXT_NODE) {
168
+ // Multi-root component, use the first element
169
+ return el.nextElementSibling;
170
+ }
171
+ return el;
172
+ }
173
+ return obj;
165
174
  }
166
175
 
167
176
  // KeyboardEvent.keyCode aliases
@@ -233,14 +242,22 @@
233
242
  include.forEach(prop => clone[prop] = obj[prop]);
234
243
  return clone;
235
244
  }
245
+ const onRE = /^on[^a-z]/;
246
+ const isOn = key => onRE.test(key);
247
+ const bubblingEvents = ['onAfterscriptexecute', 'onAnimationcancel', 'onAnimationend', 'onAnimationiteration', 'onAnimationstart', 'onAuxclick', 'onBeforeinput', 'onBeforescriptexecute', 'onChange', 'onClick', 'onCompositionend', 'onCompositionstart', 'onCompositionupdate', 'onContextmenu', 'onCopy', 'onCut', 'onDblclick', 'onFocusin', 'onFocusout', 'onFullscreenchange', 'onFullscreenerror', 'onGesturechange', 'onGestureend', 'onGesturestart', 'onGotpointercapture', 'onInput', 'onKeydown', 'onKeypress', 'onKeyup', 'onLostpointercapture', 'onMousedown', 'onMousemove', 'onMouseout', 'onMouseover', 'onMouseup', 'onMousewheel', 'onPaste', 'onPointercancel', 'onPointerdown', 'onPointerenter', 'onPointerleave', 'onPointermove', 'onPointerout', 'onPointerover', 'onPointerup', 'onReset', 'onSelect', 'onSubmit', 'onTouchcancel', 'onTouchend', 'onTouchmove', 'onTouchstart', 'onTransitioncancel', 'onTransitionend', 'onTransitionrun', 'onTransitionstart', 'onWheel'];
236
248
 
237
249
  /**
238
250
  * Filter attributes that should be applied to
239
- * the root element of a an input component. Remaining
251
+ * the root element of an input component. Remaining
240
252
  * attributes should be passed to the <input> element inside.
241
253
  */
242
254
  function filterInputAttrs(attrs) {
243
- return pick(attrs, ['class', 'style', 'id', /^data-/]);
255
+ const [events, props] = pick(attrs, [onRE]);
256
+ const inputEvents = omit(events, bubblingEvents);
257
+ const [rootAttrs, inputAttrs] = pick(props, ['class', 'style', 'id', /^data-/]);
258
+ Object.assign(rootAttrs, events);
259
+ Object.assign(inputAttrs, inputEvents);
260
+ return [rootAttrs, inputAttrs];
244
261
  }
245
262
  function wrapInArray(v) {
246
263
  return v == null ? [] : Array.isArray(v) ? v : [v];
@@ -393,8 +410,6 @@
393
410
  function includes(arr, val) {
394
411
  return arr.includes(val);
395
412
  }
396
- const onRE = /^on[^a-z]/;
397
- const isOn = key => onRE.test(key);
398
413
  function eventName(propName) {
399
414
  return propName[2].toLowerCase() + propName.slice(3);
400
415
  }
@@ -554,6 +569,18 @@
554
569
  }
555
570
  };
556
571
  }
572
+ function getTargetBox(target) {
573
+ if (Array.isArray(target)) {
574
+ return new Box({
575
+ x: target[0],
576
+ y: target[1],
577
+ width: 0,
578
+ height: 0
579
+ });
580
+ } else {
581
+ return target.getBoundingClientRect();
582
+ }
583
+ }
557
584
 
558
585
  // Utilities
559
586
 
@@ -1025,34 +1052,6 @@
1025
1052
 
1026
1053
  // Types
1027
1054
 
1028
- function useToggleScope(source, fn) {
1029
- let scope;
1030
- function start() {
1031
- scope = vue.effectScope();
1032
- scope.run(() => fn.length ? fn(() => {
1033
- scope?.stop();
1034
- start();
1035
- }) : fn());
1036
- }
1037
- vue.watch(source, active => {
1038
- if (active && !scope) {
1039
- start();
1040
- } else if (!active) {
1041
- scope?.stop();
1042
- scope = undefined;
1043
- }
1044
- }, {
1045
- immediate: true
1046
- });
1047
- vue.onScopeDispose(() => {
1048
- scope?.stop();
1049
- });
1050
- }
1051
-
1052
- // Composables
1053
-
1054
- // Types
1055
-
1056
1055
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
1057
1056
  function createDefaults(options) {
1058
1057
  return vue.ref(options);
@@ -1071,6 +1070,7 @@
1071
1070
  const scoped = vue.unref(options?.scoped);
1072
1071
  const reset = vue.unref(options?.reset);
1073
1072
  const root = vue.unref(options?.root);
1073
+ if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value;
1074
1074
  let properties = mergeDeep(providedDefaults.value, {
1075
1075
  prev: injectedDefaults.value
1076
1076
  });
@@ -1126,16 +1126,16 @@
1126
1126
  let [key] = _ref;
1127
1127
  return key.startsWith(key[0].toUpperCase());
1128
1128
  });
1129
- if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1129
+ _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined;
1130
+ } else {
1131
+ _subcomponentDefaults.value = undefined;
1130
1132
  }
1131
1133
  });
1132
1134
  function provideSubDefaults() {
1133
- // If subcomponent defaults are provided, override any
1134
- // subcomponents provided by the component's setup function.
1135
- // This uses injectSelf so must be done after the original setup to work.
1136
- useToggleScope(_subcomponentDefaults, () => {
1137
- provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1138
- });
1135
+ const injected = injectSelf(DefaultsSymbol, vm);
1136
+ vue.provide(DefaultsSymbol, vue.computed(() => {
1137
+ return _subcomponentDefaults.value ? mergeDeep(injected?.value ?? {}, _subcomponentDefaults.value) : injected?.value;
1138
+ }));
1139
1139
  }
1140
1140
  return {
1141
1141
  props: _props,
@@ -1317,9 +1317,10 @@
1317
1317
  // Types
1318
1318
 
1319
1319
  function injectSelf(key) {
1320
+ let vm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstance('injectSelf');
1320
1321
  const {
1321
1322
  provides
1322
- } = getCurrentInstance('injectSelf');
1323
+ } = vm;
1323
1324
  if (provides && key in provides) {
1324
1325
  // TS doesn't allow symbol as index type
1325
1326
  return provides[key];
@@ -1796,6 +1797,34 @@
1796
1797
  zhHant: false
1797
1798
  };
1798
1799
 
1800
+ // Utilities
1801
+
1802
+ // Types
1803
+
1804
+ function useToggleScope(source, fn) {
1805
+ let scope;
1806
+ function start() {
1807
+ scope = vue.effectScope();
1808
+ scope.run(() => fn.length ? fn(() => {
1809
+ scope?.stop();
1810
+ start();
1811
+ }) : fn());
1812
+ }
1813
+ vue.watch(source, active => {
1814
+ if (active && !scope) {
1815
+ start();
1816
+ } else if (!active) {
1817
+ scope?.stop();
1818
+ scope = undefined;
1819
+ }
1820
+ }, {
1821
+ immediate: true
1822
+ });
1823
+ vue.onScopeDispose(() => {
1824
+ scope?.stop();
1825
+ });
1826
+ }
1827
+
1799
1828
  // Composables
1800
1829
 
1801
1830
  // Types
@@ -2108,9 +2137,9 @@
2108
2137
  surface: '#FFFFFF',
2109
2138
  'surface-variant': '#424242',
2110
2139
  'on-surface-variant': '#EEEEEE',
2111
- primary: '#6200EE',
2112
- 'primary-darken-1': '#3700B3',
2113
- secondary: '#03DAC6',
2140
+ primary: '#1867C0',
2141
+ 'primary-darken-1': '#1F5592',
2142
+ secondary: '#48A9A6',
2114
2143
  'secondary-darken-1': '#018786',
2115
2144
  error: '#B00020',
2116
2145
  info: '#2196F3',
@@ -2143,10 +2172,10 @@
2143
2172
  surface: '#212121',
2144
2173
  'surface-variant': '#BDBDBD',
2145
2174
  'on-surface-variant': '#424242',
2146
- primary: '#BB86FC',
2147
- 'primary-darken-1': '#3700B3',
2148
- secondary: '#03DAC5',
2149
- 'secondary-darken-1': '#03DAC5',
2175
+ primary: '#2196F3',
2176
+ 'primary-darken-1': '#277CC1',
2177
+ secondary: '#54B6B2',
2178
+ 'secondary-darken-1': '#48A9A6',
2150
2179
  error: '#CF6679',
2151
2180
  info: '#2196F3',
2152
2181
  success: '#4CAF50',
@@ -2631,7 +2660,7 @@
2631
2660
  // Types
2632
2661
 
2633
2662
  const makeVDialogTransitionProps = propsFactory({
2634
- target: Object
2663
+ target: [Object, Array]
2635
2664
  }, 'v-dialog-transition');
2636
2665
  const VDialogTransition = genericComponent()({
2637
2666
  name: 'VDialogTransition',
@@ -2733,7 +2762,7 @@
2733
2762
  return els && [...els];
2734
2763
  }
2735
2764
  function getDimensions(target, el) {
2736
- const targetBox = target.getBoundingClientRect();
2765
+ const targetBox = getTargetBox(target);
2737
2766
  const elBox = nullifyTransforms(el);
2738
2767
  const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v));
2739
2768
  const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ');
@@ -2979,6 +3008,10 @@
2979
3008
  const makeVImgProps = propsFactory({
2980
3009
  alt: String,
2981
3010
  cover: Boolean,
3011
+ draggable: {
3012
+ type: [Boolean, String],
3013
+ default: undefined
3014
+ },
2982
3015
  eager: Boolean,
2983
3016
  gradient: String,
2984
3017
  lazySrc: String,
@@ -2997,6 +3030,8 @@
2997
3030
  type: [String, Object],
2998
3031
  default: ''
2999
3032
  },
3033
+ crossorigin: String,
3034
+ referrerpolicy: String,
3000
3035
  srcset: String,
3001
3036
  ...makeVResponsiveProps(),
3002
3037
  ...makeComponentProps(),
@@ -3121,6 +3156,9 @@
3121
3156
  "src": normalisedSrc.value.src,
3122
3157
  "srcset": normalisedSrc.value.srcset,
3123
3158
  "alt": props.alt,
3159
+ "crossorigin": props.crossorigin,
3160
+ "referrerpolicy": props.referrerpolicy,
3161
+ "draggable": props.draggable,
3124
3162
  "sizes": props.sizes,
3125
3163
  "ref": image,
3126
3164
  "onLoad": onLoad,
@@ -3142,7 +3180,10 @@
3142
3180
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createVNode("img", {
3143
3181
  "class": ['v-img__img', 'v-img__img--preload', containClasses.value],
3144
3182
  "src": normalisedSrc.value.lazySrc,
3145
- "alt": props.alt
3183
+ "alt": props.alt,
3184
+ "crossorigin": props.crossorigin,
3185
+ "referrerpolicy": props.referrerpolicy,
3186
+ "draggable": props.draggable
3146
3187
  }, null)]
3147
3188
  });
3148
3189
  const __placeholder = () => {
@@ -4161,7 +4202,8 @@
4161
4202
  file: 'mdi-paperclip',
4162
4203
  plus: 'mdi-plus',
4163
4204
  minus: 'mdi-minus',
4164
- calendar: 'mdi-calendar'
4205
+ calendar: 'mdi-calendar',
4206
+ eyeDropper: 'mdi-eyedropper'
4165
4207
  };
4166
4208
  const mdi = {
4167
4209
  // Not using mergeProps here, functional components merge props by default (?)
@@ -5751,6 +5793,7 @@
5751
5793
 
5752
5794
  const makeVSelectionControlProps = propsFactory({
5753
5795
  label: String,
5796
+ baseColor: String,
5754
5797
  trueValue: null,
5755
5798
  falseValue: null,
5756
5799
  value: null,
@@ -5789,7 +5832,8 @@
5789
5832
  textColorClasses,
5790
5833
  textColorStyles
5791
5834
  } = useTextColor(vue.computed(() => {
5792
- return model.value && !props.error && !props.disabled ? props.color : undefined;
5835
+ if (props.error || props.disabled) return undefined;
5836
+ return model.value ? props.color : props.baseColor;
5793
5837
  }));
5794
5838
  const icon = vue.computed(() => model.value ? props.trueIcon : props.falseIcon);
5795
5839
  return {
@@ -5907,7 +5951,8 @@
5907
5951
  "icon": icon.value
5908
5952
  }, null), inputNode])]), [[vue.resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && vue.createVNode(VLabel, {
5909
5953
  "for": id.value,
5910
- "clickable": true
5954
+ "clickable": true,
5955
+ "onClick": e => e.stopPropagation()
5911
5956
  }, {
5912
5957
  default: () => [label]
5913
5958
  })]);
@@ -5956,16 +6001,19 @@
5956
6001
  const trueIcon = vue.computed(() => {
5957
6002
  return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
5958
6003
  });
5959
- useRender(() => vue.createVNode(VSelectionControl, vue.mergeProps(props, {
5960
- "modelValue": model.value,
5961
- "onUpdate:modelValue": [$event => model.value = $event, onChange],
5962
- "class": ['v-checkbox-btn', props.class],
5963
- "style": props.style,
5964
- "type": "checkbox",
5965
- "falseIcon": falseIcon.value,
5966
- "trueIcon": trueIcon.value,
5967
- "aria-checked": indeterminate.value ? 'mixed' : undefined
5968
- }), slots));
6004
+ useRender(() => {
6005
+ const controlProps = omit(VSelectionControl.filterProps(props)[0], ['modelValue']);
6006
+ return vue.createVNode(VSelectionControl, vue.mergeProps(controlProps, {
6007
+ "modelValue": model.value,
6008
+ "onUpdate:modelValue": [$event => model.value = $event, onChange],
6009
+ "class": ['v-checkbox-btn', props.class],
6010
+ "style": props.style,
6011
+ "type": "checkbox",
6012
+ "falseIcon": falseIcon.value,
6013
+ "trueIcon": trueIcon.value,
6014
+ "aria-checked": indeterminate.value ? 'mixed' : undefined
6015
+ }), slots);
6016
+ });
5969
6017
  return {};
5970
6018
  }
5971
6019
  });
@@ -6529,12 +6577,12 @@
6529
6577
  const uid = getUid();
6530
6578
  const id = vue.computed(() => props.id || `checkbox-${uid}`);
6531
6579
  useRender(() => {
6532
- const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
6580
+ const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
6533
6581
  const [inputProps, _1] = VInput.filterProps(props);
6534
6582
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6535
6583
  return vue.createVNode(VInput, vue.mergeProps({
6536
6584
  "class": ['v-checkbox', props.class]
6537
- }, inputAttrs, inputProps, {
6585
+ }, rootAttrs, inputProps, {
6538
6586
  "modelValue": model.value,
6539
6587
  "onUpdate:modelValue": $event => model.value = $event,
6540
6588
  "id": id.value,
@@ -6572,6 +6620,7 @@
6572
6620
  end: Boolean,
6573
6621
  icon: IconValue,
6574
6622
  image: String,
6623
+ text: String,
6575
6624
  ...makeComponentProps(),
6576
6625
  ...makeDensityProps(),
6577
6626
  ...makeRoundedProps(),
@@ -6622,7 +6671,7 @@
6622
6671
  }, null) : props.icon ? vue.createVNode(VIcon, {
6623
6672
  "key": "icon",
6624
6673
  "icon": props.icon
6625
- }, null) : slots.default?.(), genOverlays(false, 'v-avatar')]
6674
+ }, null) : slots.default?.() ?? props.text, genOverlays(false, 'v-avatar')]
6626
6675
  }));
6627
6676
  return {};
6628
6677
  }
@@ -8403,7 +8452,7 @@
8403
8452
  return contentBox;
8404
8453
  }
8405
8454
  function connectedLocationStrategy(data, props, contentStyles) {
8406
- const activatorFixed = isFixedPosition(data.activatorEl.value);
8455
+ const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value);
8407
8456
  if (activatorFixed) {
8408
8457
  Object.assign(contentStyles.value, {
8409
8458
  position: 'fixed',
@@ -8452,11 +8501,11 @@
8452
8501
  const observer = new ResizeObserver(() => {
8453
8502
  if (observe) updateLocation();
8454
8503
  });
8455
- vue.watch([data.activatorEl, data.contentEl], (_ref, _ref2) => {
8456
- let [newActivatorEl, newContentEl] = _ref;
8457
- let [oldActivatorEl, oldContentEl] = _ref2;
8458
- if (oldActivatorEl) observer.unobserve(oldActivatorEl);
8459
- if (newActivatorEl) observer.observe(newActivatorEl);
8504
+ vue.watch([data.target, data.contentEl], (_ref, _ref2) => {
8505
+ let [newTarget, newContentEl] = _ref;
8506
+ let [oldTarget, oldContentEl] = _ref2;
8507
+ if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget);
8508
+ if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget);
8460
8509
  if (oldContentEl) observer.unobserve(oldContentEl);
8461
8510
  if (newContentEl) observer.observe(newContentEl);
8462
8511
  }, {
@@ -8472,8 +8521,8 @@
8472
8521
  requestAnimationFrame(() => {
8473
8522
  requestAnimationFrame(() => observe = true);
8474
8523
  });
8475
- if (!data.activatorEl.value || !data.contentEl.value) return;
8476
- const targetBox = data.activatorEl.value.getBoundingClientRect();
8524
+ if (!data.target.value || !data.contentEl.value) return;
8525
+ const targetBox = getTargetBox(data.target.value);
8477
8526
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
8478
8527
  const scrollParents = getScrollParents(data.contentEl.value);
8479
8528
  const viewportMargin = 12;
@@ -8760,11 +8809,11 @@
8760
8809
  function onScroll(e) {
8761
8810
  data.isActive.value = false;
8762
8811
  }
8763
- bindScroll(data.activatorEl.value ?? data.contentEl.value, onScroll);
8812
+ bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll);
8764
8813
  }
8765
8814
  function blockScrollStrategy(data, props) {
8766
8815
  const offsetParent = data.root.value?.offsetParent;
8767
- const scrollElements = [...new Set([...getScrollParents(data.activatorEl.value, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));
8816
+ 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'));
8768
8817
  const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;
8769
8818
  const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);
8770
8819
  if (scrollableParent) {
@@ -8808,7 +8857,7 @@
8808
8857
  }
8809
8858
  ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {
8810
8859
  scope.run(() => {
8811
- bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {
8860
+ bindScroll(data.targetEl.value ?? data.contentEl.value, e => {
8812
8861
  if (slow) {
8813
8862
  // If the position calculation is slow,
8814
8863
  // defer updates until scrolling is finished.
@@ -8889,6 +8938,7 @@
8889
8938
  // Types
8890
8939
 
8891
8940
  const makeActivatorProps = propsFactory({
8941
+ target: [String, Object],
8892
8942
  activator: [String, Object],
8893
8943
  activatorProps: {
8894
8944
  type: Object,
@@ -8911,6 +8961,7 @@
8911
8961
  isActive,
8912
8962
  isTop
8913
8963
  } = _ref;
8964
+ const vm = getCurrentInstance('useActivator');
8914
8965
  const activatorEl = vue.ref();
8915
8966
  let isHovered = false;
8916
8967
  let isFocused = false;
@@ -8928,10 +8979,14 @@
8928
8979
  isActive.value = value;
8929
8980
  }
8930
8981
  });
8982
+ const cursorTarget = vue.ref();
8931
8983
  const availableEvents = {
8932
8984
  onClick: e => {
8933
8985
  e.stopPropagation();
8934
8986
  activatorEl.value = e.currentTarget || e.target;
8987
+ if (!isActive.value) {
8988
+ cursorTarget.value = [e.clientX, e.clientY];
8989
+ }
8935
8990
  isActive.value = !isActive.value;
8936
8991
  },
8937
8992
  onMouseenter: e => {
@@ -9025,6 +9080,15 @@
9025
9080
  isActive.value = false;
9026
9081
  }
9027
9082
  });
9083
+ vue.watch(isActive, val => {
9084
+ if (!val) {
9085
+ setTimeout(() => {
9086
+ cursorTarget.value = undefined;
9087
+ });
9088
+ }
9089
+ }, {
9090
+ flush: 'post'
9091
+ });
9028
9092
  const activatorRef = vue.ref();
9029
9093
  vue.watchEffect(() => {
9030
9094
  if (!activatorRef.value) return;
@@ -9032,7 +9096,15 @@
9032
9096
  activatorEl.value = refElement(activatorRef.value);
9033
9097
  });
9034
9098
  });
9035
- const vm = getCurrentInstance('useActivator');
9099
+ const targetRef = vue.ref();
9100
+ const target = vue.computed(() => {
9101
+ if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value;
9102
+ if (targetRef.value) return refElement(targetRef.value);
9103
+ return getTarget(props.target, vm) || activatorEl.value;
9104
+ });
9105
+ const targetEl = vue.computed(() => {
9106
+ return Array.isArray(target.value) ? undefined : target.value;
9107
+ });
9036
9108
  let scope;
9037
9109
  vue.watch(() => !!props.activator, val => {
9038
9110
  if (val && IN_BROWSER) {
@@ -9056,6 +9128,9 @@
9056
9128
  return {
9057
9129
  activatorEl,
9058
9130
  activatorRef,
9131
+ target,
9132
+ targetEl,
9133
+ targetRef,
9059
9134
  activatorEvents,
9060
9135
  contentEvents,
9061
9136
  scrimEvents
@@ -9097,31 +9172,34 @@
9097
9172
  }
9098
9173
  function getActivator() {
9099
9174
  let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;
9100
- let activator;
9101
- if (selector) {
9102
- if (selector === 'parent') {
9103
- let el = vm?.proxy?.$el?.parentNode;
9104
- while (el.hasAttribute('data-no-activator')) {
9105
- el = el.parentNode;
9106
- }
9107
- activator = el;
9108
- } else if (typeof selector === 'string') {
9109
- // Selector
9110
- activator = document.querySelector(selector);
9111
- } else if ('$el' in selector) {
9112
- // Component (ref)
9113
- activator = selector.$el;
9114
- } else {
9115
- // HTMLElement | Element
9116
- activator = selector;
9117
- }
9118
- }
9175
+ const activator = getTarget(selector, vm);
9119
9176
 
9120
9177
  // The activator should only be a valid element (Ignore comments and text nodes)
9121
- activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null;
9178
+ activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined;
9122
9179
  return activatorEl.value;
9123
9180
  }
9124
9181
  }
9182
+ function getTarget(selector, vm) {
9183
+ if (!selector) return;
9184
+ let target;
9185
+ if (selector === 'parent') {
9186
+ let el = vm?.proxy?.$el?.parentNode;
9187
+ while (el.hasAttribute('data-no-activator')) {
9188
+ el = el.parentNode;
9189
+ }
9190
+ target = el;
9191
+ } else if (typeof selector === 'string') {
9192
+ // Selector
9193
+ target = document.querySelector(selector);
9194
+ } else if ('$el' in selector) {
9195
+ // Component (ref)
9196
+ target = selector.$el;
9197
+ } else {
9198
+ // HTMLElement | Element | [x, y]
9199
+ target = selector;
9200
+ }
9201
+ return target;
9202
+ }
9125
9203
 
9126
9204
  // Utilities
9127
9205
 
@@ -9245,10 +9323,30 @@
9245
9323
  ssr: !!ssr
9246
9324
  };
9247
9325
  }
9326
+ const makeDisplayProps = propsFactory({
9327
+ mobileBreakpoint: [Number, String]
9328
+ }, 'display');
9248
9329
  function useDisplay() {
9330
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
9331
+ let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
9249
9332
  const display = vue.inject(DisplaySymbol);
9250
9333
  if (!display) throw new Error('Could not find Vuetify display injection');
9251
- return display;
9334
+ const mobile = vue.computed(() => {
9335
+ if (!props.mobileBreakpoint) return display.mobile.value;
9336
+ const breakpointValue = typeof props.mobileBreakpoint === 'number' ? props.mobileBreakpoint : display.thresholds.value[props.mobileBreakpoint];
9337
+ return display.width.value < breakpointValue;
9338
+ });
9339
+ const displayClasses = vue.computed(() => {
9340
+ if (!name) return {};
9341
+ return {
9342
+ [`${name}--mobile`]: mobile.value
9343
+ };
9344
+ });
9345
+ return {
9346
+ ...display,
9347
+ displayClasses,
9348
+ mobile
9349
+ };
9252
9350
  }
9253
9351
 
9254
9352
  // Composables
@@ -9565,6 +9663,9 @@
9565
9663
  const {
9566
9664
  activatorEl,
9567
9665
  activatorRef,
9666
+ target,
9667
+ targetEl,
9668
+ targetRef,
9568
9669
  activatorEvents,
9569
9670
  contentEvents,
9570
9671
  scrimEvents
@@ -9590,13 +9691,13 @@
9590
9691
  } = useLocationStrategies(props, {
9591
9692
  isRtl,
9592
9693
  contentEl,
9593
- activatorEl,
9694
+ target,
9594
9695
  isActive
9595
9696
  });
9596
9697
  useScrollStrategies(props, {
9597
9698
  root,
9598
9699
  contentEl,
9599
- activatorEl,
9700
+ targetEl,
9600
9701
  isActive,
9601
9702
  updateLocation
9602
9703
  });
@@ -9664,7 +9765,8 @@
9664
9765
  useRender(() => vue.createVNode(vue.Fragment, null, [slots.activator?.({
9665
9766
  isActive: isActive.value,
9666
9767
  props: vue.mergeProps({
9667
- ref: activatorRef
9768
+ ref: activatorRef,
9769
+ targetRef
9668
9770
  }, activatorEvents.value, props.activatorProps)
9669
9771
  }), isMounted.value && hasContent.value && vue.createVNode(vue.Teleport, {
9670
9772
  "disabled": !teleportTarget.value,
@@ -9687,7 +9789,7 @@
9687
9789
  "appear": true,
9688
9790
  "persisted": true,
9689
9791
  "transition": props.transition,
9690
- "target": activatorEl.value,
9792
+ "target": target.value,
9691
9793
  "onAfterLeave": () => {
9692
9794
  onAfterLeave();
9693
9795
  emit('afterLeave');
@@ -9708,6 +9810,7 @@
9708
9810
  })]));
9709
9811
  return {
9710
9812
  activatorEl,
9813
+ target,
9711
9814
  animateClick,
9712
9815
  contentEl,
9713
9816
  globalTop,
@@ -11827,6 +11930,7 @@
11827
11930
  ...makeComponentProps(),
11828
11931
  ...makeDensityProps(),
11829
11932
  ...makeDimensionProps(),
11933
+ ...makeDisplayProps(),
11830
11934
  ...makeElevationProps(),
11831
11935
  ...makeLocationProps(),
11832
11936
  ...makePositionProps(),
@@ -11848,8 +11952,9 @@
11848
11952
  densityClasses
11849
11953
  } = useDensity(props);
11850
11954
  const {
11955
+ displayClasses,
11851
11956
  mobile
11852
- } = useDisplay();
11957
+ } = useDisplay(props);
11853
11958
  const {
11854
11959
  dimensionStyles
11855
11960
  } = useDimension(props);
@@ -11885,7 +11990,7 @@
11885
11990
  'v-banner--stacked': props.stacked || mobile.value,
11886
11991
  'v-banner--sticky': props.sticky,
11887
11992
  [`v-banner--${props.lines}-line`]: !!props.lines
11888
- }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11993
+ }, borderClasses.value, densityClasses.value, displayClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11889
11994
  "style": [dimensionStyles.value, locationStyles.value, props.style],
11890
11995
  "role": "banner"
11891
11996
  }, {
@@ -12192,12 +12297,17 @@
12192
12297
  item,
12193
12298
  raw
12194
12299
  } = _ref2;
12195
- return vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
12196
- "key": item.title,
12300
+ return vue.createVNode(vue.Fragment, null, [slots.item?.({
12301
+ item,
12302
+ index
12303
+ }) ?? vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
12304
+ "key": index,
12197
12305
  "disabled": index >= array.length - 1
12198
- }, item), {
12306
+ }, typeof item === 'string' ? {
12307
+ title: item
12308
+ } : item), {
12199
12309
  default: slots.title ? () => slots.title?.({
12200
- item: raw,
12310
+ item,
12201
12311
  index
12202
12312
  }) : undefined
12203
12313
  }), index < array.length - 1 && vue.createVNode(VBreadcrumbsDivider, null, {
@@ -13535,7 +13645,11 @@
13535
13645
  ...makeRoundedProps(),
13536
13646
  ...makeElevationProps({
13537
13647
  elevation: 2
13538
- })
13648
+ }),
13649
+ ripple: {
13650
+ type: Boolean,
13651
+ default: true
13652
+ }
13539
13653
  }, 'Slider');
13540
13654
  const useSteps = props => {
13541
13655
  const min = vue.computed(() => parseFloat(props.min));
@@ -14142,7 +14256,8 @@
14142
14256
  "position": trackStop.value,
14143
14257
  "elevation": props.elevation,
14144
14258
  "onFocus": focus,
14145
- "onBlur": blur
14259
+ "onBlur": blur,
14260
+ "ripple": props.ripple
14146
14261
  }, {
14147
14262
  'thumb-label': slots['thumb-label']
14148
14263
  })]);
@@ -14173,12 +14288,36 @@
14173
14288
  let {
14174
14289
  emit
14175
14290
  } = _ref;
14291
+ const abortController = new AbortController();
14292
+ vue.onUnmounted(() => abortController.abort());
14293
+ async function openEyeDropper() {
14294
+ if (!SUPPORTS_EYE_DROPPER) return;
14295
+ const eyeDropper = new window.EyeDropper();
14296
+ try {
14297
+ const result = await eyeDropper.open({
14298
+ signal: abortController.signal
14299
+ });
14300
+ const colorHexValue = HexToHSV(result.sRGBHex);
14301
+ emit('update:color', {
14302
+ ...(props.color ?? nullColor),
14303
+ ...colorHexValue
14304
+ });
14305
+ } catch (e) {}
14306
+ }
14176
14307
  useRender(() => vue.createVNode("div", {
14177
14308
  "class": ['v-color-picker-preview', {
14178
14309
  'v-color-picker-preview--hide-alpha': props.hideAlpha
14179
14310
  }, props.class],
14180
14311
  "style": props.style
14181
- }, [vue.createVNode("div", {
14312
+ }, [SUPPORTS_EYE_DROPPER && vue.createVNode("div", {
14313
+ "class": "v-color-picker-preview__eye-dropper",
14314
+ "key": "eyeDropper"
14315
+ }, [vue.createVNode(VBtn, {
14316
+ "onClick": openEyeDropper,
14317
+ "icon": "$eyeDropper",
14318
+ "variant": "plain",
14319
+ "density": "comfortable"
14320
+ }, null)]), vue.createVNode("div", {
14182
14321
  "class": "v-color-picker-preview__dot"
14183
14322
  }, [vue.createVNode("div", {
14184
14323
  "style": {
@@ -16849,6 +16988,7 @@
16849
16988
  sticky: Boolean,
16850
16989
  ...makeBorderProps(),
16851
16990
  ...makeComponentProps(),
16991
+ ...makeDisplayProps(),
16852
16992
  ...makeElevationProps(),
16853
16993
  ...makeLayoutItemProps(),
16854
16994
  ...makeRoundedProps(),
@@ -16887,8 +17027,9 @@
16887
17027
  elevationClasses
16888
17028
  } = useElevation(props);
16889
17029
  const {
17030
+ displayClasses,
16890
17031
  mobile
16891
- } = useDisplay();
17032
+ } = useDisplay(props);
16892
17033
  const {
16893
17034
  roundedClasses
16894
17035
  } = useRounded(props);
@@ -16999,7 +17140,7 @@
16999
17140
  'v-navigation-drawer--temporary': isTemporary.value,
17000
17141
  'v-navigation-drawer--active': isActive.value,
17001
17142
  'v-navigation-drawer--sticky': isSticky.value
17002
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17143
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17003
17144
  "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
17004
17145
  }, scopeId, attrs), {
17005
17146
  default: () => [hasImage && vue.createVNode("div", {
@@ -17527,7 +17668,7 @@
17527
17668
  const id = vue.computed(() => props.id || `radio-group-${uid}`);
17528
17669
  const model = useProxiedModel(props, 'modelValue');
17529
17670
  useRender(() => {
17530
- const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
17671
+ const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
17531
17672
  const [inputProps, _1] = VInput.filterProps(props);
17532
17673
  const [controlProps, _2] = VSelectionControl.filterProps(props);
17533
17674
  const label = slots.label ? slots.label({
@@ -17539,7 +17680,7 @@
17539
17680
  return vue.createVNode(VInput, vue.mergeProps({
17540
17681
  "class": ['v-radio-group', props.class],
17541
17682
  "style": props.style
17542
- }, inputAttrs, inputProps, {
17683
+ }, rootAttrs, inputProps, {
17543
17684
  "modelValue": model.value,
17544
17685
  "onUpdate:modelValue": $event => model.value = $event,
17545
17686
  "id": id.value
@@ -17747,7 +17888,8 @@
17747
17888
  },
17748
17889
  "min": min.value,
17749
17890
  "max": model.value[1],
17750
- "position": trackStart.value
17891
+ "position": trackStart.value,
17892
+ "ripple": props.ripple
17751
17893
  }, {
17752
17894
  'thumb-label': slots['thumb-label']
17753
17895
  }), vue.createVNode(VSliderThumb, {
@@ -17775,7 +17917,8 @@
17775
17917
  },
17776
17918
  "min": model.value[0],
17777
17919
  "max": max.value,
17778
- "position": trackStop.value
17920
+ "position": trackStop.value,
17921
+ "ripple": props.ripple
17779
17922
  }, {
17780
17923
  'thumb-label': slots['thumb-label']
17781
17924
  })]);
@@ -18049,6 +18192,7 @@
18049
18192
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
18050
18193
  },
18051
18194
  ...makeComponentProps(),
18195
+ ...makeDisplayProps(),
18052
18196
  ...makeTagProps(),
18053
18197
  ...makeGroupProps({
18054
18198
  selectedClass: 'v-slide-group-item--active'
@@ -18068,8 +18212,9 @@
18068
18212
  isRtl
18069
18213
  } = useRtl();
18070
18214
  const {
18215
+ displayClasses,
18071
18216
  mobile
18072
- } = useDisplay();
18217
+ } = useDisplay(props);
18073
18218
  const group = useGroup(props, props.symbol);
18074
18219
  const isOverflowing = vue.shallowRef(false);
18075
18220
  const scrollOffset = vue.shallowRef(0);
@@ -18289,7 +18434,7 @@
18289
18434
  'v-slide-group--vertical': !isHorizontal.value,
18290
18435
  'v-slide-group--has-affixes': hasAffixes.value,
18291
18436
  'v-slide-group--is-overflowing': isOverflowing.value
18292
- }, props.class],
18437
+ }, displayClasses.value, props.class],
18293
18438
  "style": props.style,
18294
18439
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
18295
18440
  "onFocus": onFocus
@@ -18516,6 +18661,7 @@
18516
18661
  focus,
18517
18662
  blur
18518
18663
  } = useFocus(props);
18664
+ const control = vue.ref();
18519
18665
  const loaderColor = vue.computed(() => {
18520
18666
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
18521
18667
  });
@@ -18526,16 +18672,15 @@
18526
18672
  indeterminate.value = false;
18527
18673
  }
18528
18674
  }
18675
+ function onTrackClick(e) {
18676
+ e.stopPropagation();
18677
+ e.preventDefault();
18678
+ control.value?.input?.click();
18679
+ }
18529
18680
  useRender(() => {
18530
- const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
18681
+ const [rootAttrs, controlAttrs] = filterInputAttrs(attrs);
18531
18682
  const [inputProps, _1] = VInput.filterProps(props);
18532
18683
  const [controlProps, _2] = VSelectionControl.filterProps(props);
18533
- const control = vue.ref();
18534
- function onClick(e) {
18535
- e.stopPropagation();
18536
- e.preventDefault();
18537
- control.value?.input?.click();
18538
- }
18539
18684
  return vue.createVNode(VInput, vue.mergeProps({
18540
18685
  "class": ['v-switch', {
18541
18686
  'v-switch--inset': props.inset
@@ -18543,7 +18688,7 @@
18543
18688
  'v-switch--indeterminate': indeterminate.value
18544
18689
  }, loaderClasses.value, props.class],
18545
18690
  "style": props.style
18546
- }, inputAttrs, inputProps, {
18691
+ }, rootAttrs, inputProps, {
18547
18692
  "id": id.value,
18548
18693
  "focused": isFocused.value
18549
18694
  }), {
@@ -18573,7 +18718,7 @@
18573
18718
  ...slots,
18574
18719
  default: () => vue.createVNode("div", {
18575
18720
  "class": "v-switch__track",
18576
- "onClick": onClick
18721
+ "onClick": onTrackClick
18577
18722
  }, null),
18578
18723
  input: _ref3 => {
18579
18724
  let {
@@ -24435,7 +24580,7 @@
24435
24580
  date
24436
24581
  };
24437
24582
  }
24438
- const version$1 = "3.3.13";
24583
+ const version$1 = "3.4.0-alpha.0";
24439
24584
  createVuetify$1.version = version$1;
24440
24585
 
24441
24586
  // Vue's inject() can only be used in setup
@@ -24449,7 +24594,7 @@
24449
24594
 
24450
24595
  /* eslint-disable local-rules/sort-imports */
24451
24596
 
24452
- const version = "3.3.13";
24597
+ const version = "3.4.0-alpha.0";
24453
24598
 
24454
24599
  /* eslint-disable local-rules/sort-imports */
24455
24600