vuetify 3.2.3 → 3.2.4

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 (132) hide show
  1. package/dist/json/attributes.json +9 -9
  2. package/dist/json/importMap.json +12 -12
  3. package/dist/json/web-types.json +11 -11
  4. package/dist/vuetify-labs.css +34 -35
  5. package/dist/vuetify-labs.d.ts +72 -72
  6. package/dist/vuetify-labs.esm.js +142 -124
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +142 -124
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +1 -2
  11. package/dist/vuetify.d.ts +75 -68
  12. package/dist/vuetify.esm.js +131 -115
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +131 -115
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +469 -469
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/components/VAlert/VAlert.mjs +1 -2
  20. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  21. package/lib/components/VAppBar/VAppBar.mjs +2 -2
  22. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  23. package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -2
  24. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  25. package/lib/components/VAppBar/VAppBarTitle.mjs +1 -2
  26. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -5
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  29. package/lib/components/VAutocomplete/index.d.ts +9 -9
  30. package/lib/components/VChip/VChip.css +0 -1
  31. package/lib/components/VChip/VChip.sass +0 -1
  32. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -5
  33. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  34. package/lib/components/VCombobox/VCombobox.mjs +5 -5
  35. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  36. package/lib/components/VCombobox/index.d.ts +9 -9
  37. package/lib/components/VFooter/VFooter.mjs +2 -2
  38. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  39. package/lib/components/VForm/index.d.ts +3 -3
  40. package/lib/components/VImg/VImg.mjs +6 -6
  41. package/lib/components/VImg/VImg.mjs.map +1 -1
  42. package/lib/components/VImg/index.d.ts +12 -12
  43. package/lib/components/VList/VList.mjs +2 -2
  44. package/lib/components/VList/VList.mjs.map +1 -1
  45. package/lib/components/VList/index.d.ts +9 -9
  46. package/lib/components/VList/list.mjs +4 -4
  47. package/lib/components/VList/list.mjs.map +1 -1
  48. package/lib/components/VMenu/VMenu.mjs +3 -3
  49. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  50. package/lib/components/VMenu/index.d.ts +3 -3
  51. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +2 -2
  52. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  53. package/lib/components/VNavigationDrawer/index.d.ts +3 -3
  54. package/lib/components/VNavigationDrawer/sticky.mjs +5 -4
  55. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  56. package/lib/components/VNavigationDrawer/touch.mjs +4 -4
  57. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  58. package/lib/components/VOverlay/locationStrategies.mjs +1 -1
  59. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  60. package/lib/components/VPagination/VPagination.mjs +2 -2
  61. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  62. package/lib/components/VRating/VRating.mjs +6 -3
  63. package/lib/components/VRating/VRating.mjs.map +1 -1
  64. package/lib/components/VSelect/VSelect.mjs +2 -2
  65. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  66. package/lib/components/VSelect/index.d.ts +9 -9
  67. package/lib/components/VSelectionControl/VSelectionControl.mjs +3 -3
  68. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  69. package/lib/components/VSelectionControl/index.d.ts +3 -3
  70. package/lib/components/VSlideGroup/VSlideGroup.mjs +7 -7
  71. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  72. package/lib/components/VSlideGroup/index.d.ts +3 -3
  73. package/lib/components/VSlider/slider.mjs +3 -3
  74. package/lib/components/VSlider/slider.mjs.map +1 -1
  75. package/lib/components/VSystemBar/VSystemBar.mjs +2 -2
  76. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  77. package/lib/components/VTabs/VTab.mjs +4 -5
  78. package/lib/components/VTabs/VTab.mjs.map +1 -1
  79. package/lib/components/VTextarea/VTextarea.mjs +6 -3
  80. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  81. package/lib/components/VTimeline/VTimelineItem.mjs +2 -2
  82. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  83. package/lib/components/VToolbar/VToolbar.mjs +2 -2
  84. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  85. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +3 -3
  86. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  87. package/lib/components/VWindow/VWindow.mjs +3 -3
  88. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  89. package/lib/components/VWindow/VWindowItem.mjs +3 -3
  90. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  91. package/lib/components/index.d.ts +63 -63
  92. package/lib/composables/display.mjs +3 -3
  93. package/lib/composables/display.mjs.map +1 -1
  94. package/lib/composables/form.mjs +4 -4
  95. package/lib/composables/form.mjs.map +1 -1
  96. package/lib/composables/hydration.mjs +6 -6
  97. package/lib/composables/hydration.mjs.map +1 -1
  98. package/lib/composables/intersectionObserver.mjs +2 -2
  99. package/lib/composables/intersectionObserver.mjs.map +1 -1
  100. package/lib/composables/layout.mjs +3 -3
  101. package/lib/composables/layout.mjs.map +1 -1
  102. package/lib/composables/lazy.mjs +2 -2
  103. package/lib/composables/lazy.mjs.map +1 -1
  104. package/lib/composables/nested/nested.mjs +5 -4
  105. package/lib/composables/nested/nested.mjs.map +1 -1
  106. package/lib/composables/scroll.mjs +6 -6
  107. package/lib/composables/scroll.mjs.map +1 -1
  108. package/lib/composables/ssrBoot.mjs +2 -2
  109. package/lib/composables/ssrBoot.mjs.map +1 -1
  110. package/lib/composables/stack.mjs +5 -4
  111. package/lib/composables/stack.mjs.map +1 -1
  112. package/lib/composables/transition.mjs +5 -2
  113. package/lib/composables/transition.mjs.map +1 -1
  114. package/lib/composables/validation.mjs +3 -3
  115. package/lib/composables/validation.mjs.map +1 -1
  116. package/lib/entry-bundler.mjs +1 -1
  117. package/lib/framework.mjs +1 -1
  118. package/lib/index.d.ts +12 -5
  119. package/lib/labs/VDataTable/VDataTable.mjs +2 -1
  120. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  121. package/lib/labs/VDataTable/VDataTableServer.mjs +2 -1
  122. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  123. package/lib/labs/VDataTable/VDataTableVirtual.mjs +6 -6
  124. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  125. package/lib/labs/VDataTable/composables/virtual.mjs +3 -3
  126. package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
  127. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  128. package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
  129. package/lib/labs/components.d.ts +9 -9
  130. package/lib/locale/adapters/vuetify.mjs +8 -5
  131. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  132. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.2.3
2
+ * Vuetify v3.2.4
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1288,7 +1288,7 @@ function useLayoutItem(options) {
1288
1288
  provide(VuetifyLayoutItemKey, {
1289
1289
  id
1290
1290
  });
1291
- const isKeptAlive = ref(false);
1291
+ const isKeptAlive = shallowRef(false);
1292
1292
  onDeactivated(() => isKeptAlive.value = true);
1293
1293
  onActivated(() => isKeptAlive.value = false);
1294
1294
  const {
@@ -1419,7 +1419,7 @@ function createLayout(props) {
1419
1419
  return items.value.find(item => item.id === id);
1420
1420
  };
1421
1421
  const rootVm = getCurrentInstance('createLayout');
1422
- const isMounted = ref(false);
1422
+ const isMounted = shallowRef(false);
1423
1423
  onMounted(() => {
1424
1424
  isMounted.value = true;
1425
1425
  });
@@ -2013,6 +2013,10 @@ var en = {
2013
2013
  }
2014
2014
  };
2015
2015
 
2016
+ // Composables
2017
+
2018
+ // Types
2019
+
2016
2020
  const LANG_PREFIX = '$vuetify.';
2017
2021
  const replace = (str, params) => {
2018
2022
  return str.replace(/\{(\d+)\}/g, (match, index) => {
@@ -2085,8 +2089,8 @@ function createProvideFunction(state) {
2085
2089
  };
2086
2090
  }
2087
2091
  function createVuetifyAdapter(options) {
2088
- const current = ref(options?.locale ?? 'en');
2089
- const fallback = ref(options?.fallback ?? 'en');
2092
+ const current = shallowRef(options?.locale ?? 'en');
2093
+ const fallback = shallowRef(options?.fallback ?? 'en');
2090
2094
  const messages = ref({
2091
2095
  en,
2092
2096
  ...options?.messages
@@ -2750,6 +2754,7 @@ const MaybeTransition = (props, _ref) => {
2750
2754
  } = _ref;
2751
2755
  const {
2752
2756
  transition,
2757
+ disabled,
2753
2758
  ...rest
2754
2759
  } = props;
2755
2760
  const {
@@ -2757,8 +2762,10 @@ const MaybeTransition = (props, _ref) => {
2757
2762
  ...customProps
2758
2763
  } = typeof transition === 'object' ? transition : {};
2759
2764
  return h(component, mergeProps(typeof transition === 'string' ? {
2760
- name: transition
2761
- } : customProps, rest), slots);
2765
+ name: disabled ? '' : transition
2766
+ } : customProps, rest, {
2767
+ disabled
2768
+ }), slots);
2762
2769
  };
2763
2770
 
2764
2771
  // Types
@@ -2806,11 +2813,11 @@ const VImg = genericComponent()({
2806
2813
  emit,
2807
2814
  slots
2808
2815
  } = _ref;
2809
- const currentSrc = ref(''); // Set from srcset
2816
+ const currentSrc = shallowRef(''); // Set from srcset
2810
2817
  const image = ref();
2811
- const state = ref(props.eager ? 'loading' : 'idle');
2812
- const naturalWidth = ref();
2813
- const naturalHeight = ref();
2818
+ const state = shallowRef(props.eager ? 'loading' : 'idle');
2819
+ const naturalWidth = shallowRef();
2820
+ const naturalHeight = shallowRef();
2814
2821
  const normalisedSrc = computed(() => {
2815
2822
  return props.src && typeof props.src === 'object' ? {
2816
2823
  src: props.src.src,
@@ -2964,7 +2971,7 @@ const VImg = genericComponent()({
2964
2971
  }
2965
2972
  }, null);
2966
2973
  };
2967
- const isBooted = ref(false);
2974
+ const isBooted = shallowRef(false);
2968
2975
  {
2969
2976
  const stop = watch(aspectRatio, val => {
2970
2977
  if (val) {
@@ -3250,7 +3257,7 @@ const VToolbar = genericComponent()({
3250
3257
  const {
3251
3258
  rtlClasses
3252
3259
  } = useRtl();
3253
- const isExtended = ref(!!(props.extended || slots.extension?.()));
3260
+ const isExtended = shallowRef(!!(props.extended || slots.extension?.()));
3254
3261
  const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
3255
3262
  const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);
3256
3263
  provideDefaults({
@@ -3357,11 +3364,11 @@ function useScroll(props) {
3357
3364
  } = args;
3358
3365
  let previousScroll = 0;
3359
3366
  const target = ref(null);
3360
- const currentScroll = ref(0);
3361
- const savedScroll = ref(0);
3362
- const currentThreshold = ref(0);
3363
- const isScrollActive = ref(false);
3364
- const isScrollingUp = ref(false);
3367
+ const currentScroll = shallowRef(0);
3368
+ const savedScroll = shallowRef(0);
3369
+ const currentThreshold = shallowRef(0);
3370
+ const isScrollActive = shallowRef(false);
3371
+ const isScrollingUp = shallowRef(false);
3365
3372
  const scrollThreshold = computed(() => {
3366
3373
  return Number(props.scrollThreshold);
3367
3374
  });
@@ -3431,7 +3438,7 @@ function useScroll(props) {
3431
3438
 
3432
3439
  // Composables
3433
3440
  function useSsrBoot() {
3434
- const isBooted = ref(false);
3441
+ const isBooted = shallowRef(false);
3435
3442
  onMounted(() => {
3436
3443
  window.requestAnimationFrame(() => {
3437
3444
  isBooted.value = true;
@@ -3542,7 +3549,7 @@ const VAppBar = genericComponent()({
3542
3549
  order: computed(() => parseInt(props.order, 10)),
3543
3550
  position: toRef(props, 'location'),
3544
3551
  layoutSize: height,
3545
- elementSize: ref(undefined),
3552
+ elementSize: shallowRef(undefined),
3546
3553
  active: isActive,
3547
3554
  absolute: toRef(props, 'absolute')
3548
3555
  });
@@ -4232,7 +4239,7 @@ const VIcon = genericComponent()({
4232
4239
  // Utilities
4233
4240
  function useIntersectionObserver(callback, options) {
4234
4241
  const intersectionRef = ref();
4235
- const isIntersecting = ref(false);
4242
+ const isIntersecting = shallowRef(false);
4236
4243
  if (SUPPORTS_INTERSECTION) {
4237
4244
  const observer = new IntersectionObserver(entries => {
4238
4245
  callback?.(entries, observer);
@@ -5245,34 +5252,6 @@ const VAppBarNavIcon = genericComponent()({
5245
5252
  }
5246
5253
  });
5247
5254
 
5248
- const makeVToolbarItemsProps = propsFactory({
5249
- ...makeComponentProps(),
5250
- ...makeVariantProps({
5251
- variant: 'text'
5252
- })
5253
- }, 'v-toolbar-items');
5254
- const VToolbarItems = genericComponent()({
5255
- name: 'VToolbarItems',
5256
- props: makeVToolbarItemsProps(),
5257
- setup(props, _ref) {
5258
- let {
5259
- slots
5260
- } = _ref;
5261
- provideDefaults({
5262
- VBtn: {
5263
- color: toRef(props, 'color'),
5264
- height: 'inherit',
5265
- variant: toRef(props, 'variant')
5266
- }
5267
- });
5268
- useRender(() => createVNode("div", {
5269
- "class": ['v-toolbar-items', props.class],
5270
- "style": props.style
5271
- }, [slots.default?.()]));
5272
- return {};
5273
- }
5274
- });
5275
-
5276
5255
  // Types
5277
5256
 
5278
5257
  const VAppBarTitle = genericComponent()({
@@ -5405,7 +5384,6 @@ const VAlert = genericComponent()({
5405
5384
  return () => {
5406
5385
  const hasPrepend = !!(slots.prepend || icon.value);
5407
5386
  const hasTitle = !!(slots.title || props.title);
5408
- const hasText = !!(props.text || slots.text);
5409
5387
  const hasClose = !!(slots.close || props.closable);
5410
5388
  return isActive.value && createVNode(props.tag, {
5411
5389
  "class": ['v-alert', props.border && {
@@ -5445,7 +5423,7 @@ const VAlert = genericComponent()({
5445
5423
  "key": "title"
5446
5424
  }, {
5447
5425
  default: () => [slots.title?.() ?? props.title]
5448
- }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && createVNode("div", {
5426
+ }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && createVNode("div", {
5449
5427
  "key": "append",
5450
5428
  "class": "v-alert__append"
5451
5429
  }, [slots.append()]), hasClose && createVNode("div", {
@@ -5889,7 +5867,7 @@ const VMessages = genericComponent()({
5889
5867
  }
5890
5868
  });
5891
5869
 
5892
- // Utilities
5870
+ // Composables
5893
5871
 
5894
5872
  // Types
5895
5873
 
@@ -5911,7 +5889,7 @@ function createForm(props) {
5911
5889
  const model = useProxiedModel(props, 'modelValue');
5912
5890
  const isDisabled = computed(() => props.disabled);
5913
5891
  const isReadonly = computed(() => props.readonly);
5914
- const isValidating = ref(false);
5892
+ const isValidating = shallowRef(false);
5915
5893
  const items = ref([]);
5916
5894
  const errors = ref([]);
5917
5895
  async function validate() {
@@ -6050,7 +6028,7 @@ function useValidation(props) {
6050
6028
  const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
6051
6029
  const form = useForm();
6052
6030
  const internalErrorMessages = ref([]);
6053
- const isPristine = ref(true);
6031
+ const isPristine = shallowRef(true);
6054
6032
  const isDirty = computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
6055
6033
  const isDisabled = computed(() => !!(props.disabled || form?.isDisabled.value));
6056
6034
  const isReadonly = computed(() => !!(props.readonly || form?.isReadonly.value));
@@ -6062,7 +6040,7 @@ function useValidation(props) {
6062
6040
  if (!props.rules.length) return true;
6063
6041
  return isPristine.value ? null : true;
6064
6042
  });
6065
- const isValidating = ref(false);
6043
+ const isValidating = shallowRef(false);
6066
6044
  const validationClasses = computed(() => {
6067
6045
  return {
6068
6046
  [`${name}--error`]: isValid.value === false,
@@ -6760,8 +6738,8 @@ const VSelectionControl = genericComponent()({
6760
6738
  } = useSelectionControl(props);
6761
6739
  const uid = getUid();
6762
6740
  const id = computed(() => props.id || `input-${uid}`);
6763
- const isFocused = ref(false);
6764
- const isFocusVisible = ref(false);
6741
+ const isFocused = shallowRef(false);
6742
+ const isFocusVisible = shallowRef(false);
6765
6743
  const input = ref();
6766
6744
  group?.onForceUpdate(() => {
6767
6745
  if (input.value) {
@@ -7378,11 +7356,11 @@ const VDivider = genericComponent()({
7378
7356
  const ListKey = Symbol.for('vuetify:list');
7379
7357
  function createList() {
7380
7358
  const parent = inject$1(ListKey, {
7381
- hasPrepend: ref(false),
7359
+ hasPrepend: shallowRef(false),
7382
7360
  updateHasPrepend: () => null
7383
7361
  });
7384
7362
  const data = {
7385
- hasPrepend: ref(false),
7363
+ hasPrepend: shallowRef(false),
7386
7364
  updateHasPrepend: value => {
7387
7365
  if (value) data.hasPrepend.value = value;
7388
7366
  }
@@ -7649,11 +7627,13 @@ const classicSelectStrategy = mandatory => {
7649
7627
  return strategy;
7650
7628
  };
7651
7629
 
7630
+ // Composables
7631
+
7652
7632
  // Types
7653
7633
 
7654
7634
  const VNestedSymbol = Symbol.for('vuetify:nested');
7655
7635
  const emptyNested = {
7656
- id: ref(),
7636
+ id: shallowRef(),
7657
7637
  root: {
7658
7638
  register: () => null,
7659
7639
  unregister: () => null,
@@ -7722,7 +7702,7 @@ const useNested = props => {
7722
7702
  }
7723
7703
  const vm = getCurrentInstance('nested');
7724
7704
  const nested = {
7725
- id: ref(),
7705
+ id: shallowRef(),
7726
7706
  root: {
7727
7707
  opened,
7728
7708
  selected,
@@ -8502,7 +8482,7 @@ const VList = genericComponent()({
8502
8482
  variant: toRef(props, 'variant')
8503
8483
  }
8504
8484
  });
8505
- const isFocused = ref(false);
8485
+ const isFocused = shallowRef(false);
8506
8486
  const contentRef = ref();
8507
8487
  function onFocusin(e) {
8508
8488
  isFocused.value = true;
@@ -8899,7 +8879,7 @@ const makeLazyProps = propsFactory({
8899
8879
  eager: Boolean
8900
8880
  }, 'lazy');
8901
8881
  function useLazy(props, active) {
8902
- const isBooted = ref(false);
8882
+ const isBooted = shallowRef(false);
8903
8883
  const hasContent = computed(() => isBooted.value || props.eager || active.value);
8904
8884
  watch(active, () => isBooted.value = true);
8905
8885
  function onAfterLeave() {
@@ -9059,7 +9039,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
9059
9039
  Object.assign(contentStyles.value, {
9060
9040
  position: 'fixed',
9061
9041
  top: 0,
9062
- left: 0
9042
+ [data.isRtl.value ? 'right' : 'left']: 0
9063
9043
  });
9064
9044
  }
9065
9045
  const {
@@ -9561,10 +9541,10 @@ function createDisplay(options, ssr) {
9561
9541
  thresholds,
9562
9542
  mobileBreakpoint
9563
9543
  } = parseDisplayOptions(options);
9564
- const height = ref(getClientHeight(ssr));
9544
+ const height = shallowRef(getClientHeight(ssr));
9565
9545
  const platform = shallowRef(getPlatform(ssr));
9566
9546
  const state = reactive({});
9567
- const width = ref(getClientWidth(ssr));
9547
+ const width = shallowRef(getClientWidth(ssr));
9568
9548
  function updateSize() {
9569
9549
  height.value = getClientHeight();
9570
9550
  width.value = getClientWidth();
@@ -9624,20 +9604,20 @@ function useDisplay() {
9624
9604
  return display;
9625
9605
  }
9626
9606
 
9627
- // Utilities
9607
+ // Composables
9628
9608
  function useHydration() {
9629
- if (!IN_BROWSER) return ref(false);
9609
+ if (!IN_BROWSER) return shallowRef(false);
9630
9610
  const {
9631
9611
  ssr
9632
9612
  } = useDisplay();
9633
9613
  if (ssr) {
9634
- const isMounted = ref(false);
9614
+ const isMounted = shallowRef(false);
9635
9615
  onMounted(() => {
9636
9616
  isMounted.value = true;
9637
9617
  });
9638
9618
  return isMounted;
9639
9619
  } else {
9640
- return ref(true);
9620
+ return shallowRef(true);
9641
9621
  }
9642
9622
  }
9643
9623
 
@@ -9651,6 +9631,8 @@ function useScopeId() {
9651
9631
  };
9652
9632
  }
9653
9633
 
9634
+ // Composables
9635
+
9654
9636
  // Types
9655
9637
 
9656
9638
  const StackSymbol = Symbol.for('vuetify:stack');
@@ -9663,7 +9645,7 @@ function useStack(isActive, zIndex, disableGlobalStack) {
9663
9645
  activeChildren: new Set()
9664
9646
  });
9665
9647
  provide(StackSymbol, stack);
9666
- const _zIndex = ref(+zIndex.value);
9648
+ const _zIndex = shallowRef(+zIndex.value);
9667
9649
  useToggleScope(isActive, () => {
9668
9650
  const lastZIndex = globalStack.at(-1)?.[1];
9669
9651
  _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
@@ -9679,7 +9661,7 @@ function useStack(isActive, zIndex, disableGlobalStack) {
9679
9661
  parent?.activeChildren.delete(vm.uid);
9680
9662
  });
9681
9663
  });
9682
- const globalTop = ref(true);
9664
+ const globalTop = shallowRef(true);
9683
9665
  if (createStackEntry) {
9684
9666
  watchEffect(() => {
9685
9667
  const _isTop = globalStack.at(-1)?.[0] === vm.uid;
@@ -10095,7 +10077,7 @@ const VMenu = genericComponent()({
10095
10077
  const id = computed(() => props.id || `v-menu-${uid}`);
10096
10078
  const overlay = ref();
10097
10079
  const parent = inject$1(VMenuSymbol, null);
10098
- const openChildren = ref(0);
10080
+ const openChildren = shallowRef(0);
10099
10081
  provide(VMenuSymbol, {
10100
10082
  register() {
10101
10083
  ++openChildren.value;
@@ -10238,7 +10220,7 @@ const VSelect = genericComponent()({
10238
10220
  });
10239
10221
  });
10240
10222
  const selected = computed(() => selections.value.map(selection => selection.props.value));
10241
- const isFocused = ref(false);
10223
+ const isFocused = shallowRef(false);
10242
10224
  let keyboardLookupPrefix = '';
10243
10225
  let keyboardLookupLastTime;
10244
10226
  const displayItems = computed(() => {
@@ -10614,8 +10596,8 @@ const VAutocomplete = genericComponent()({
10614
10596
  t
10615
10597
  } = useLocale();
10616
10598
  const vTextFieldRef = ref();
10617
- const isFocused = ref(false);
10618
- const isPristine = ref(true);
10599
+ const isFocused = shallowRef(false);
10600
+ const isPristine = shallowRef(true);
10619
10601
  const vMenuRef = ref();
10620
10602
  const _menu = useProxiedModel(props, 'menu');
10621
10603
  const menu = computed({
@@ -10625,7 +10607,7 @@ const VAutocomplete = genericComponent()({
10625
10607
  _menu.value = v;
10626
10608
  }
10627
10609
  });
10628
- const selectionIndex = ref(-1);
10610
+ const selectionIndex = shallowRef(-1);
10629
10611
  const color = computed(() => vTextFieldRef.value?.color);
10630
10612
  const {
10631
10613
  items,
@@ -10736,7 +10718,7 @@ const VAutocomplete = genericComponent()({
10736
10718
  function onFocusin(e) {
10737
10719
  isFocused.value = true;
10738
10720
  }
10739
- const isSelecting = ref(false);
10721
+ const isSelecting = shallowRef(false);
10740
10722
  function select(item) {
10741
10723
  if (props.multiple) {
10742
10724
  const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
@@ -11869,14 +11851,14 @@ const VWindow = genericComponent()({
11869
11851
  const group = useGroup(props, VWindowGroupSymbol);
11870
11852
  const rootRef = ref();
11871
11853
  const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse);
11872
- const isReversed = ref(false);
11854
+ const isReversed = shallowRef(false);
11873
11855
  const transition = computed(() => {
11874
11856
  const axis = props.direction === 'vertical' ? 'y' : 'x';
11875
11857
  const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value;
11876
11858
  const direction = reverse ? '-reverse' : '';
11877
11859
  return `v-window-${axis}${direction}-transition`;
11878
11860
  });
11879
- const transitionCount = ref(0);
11861
+ const transitionCount = shallowRef(0);
11880
11862
  const transitionHeight = ref(undefined);
11881
11863
  const activeIndex = computed(() => {
11882
11864
  return group.items.value.findIndex(item => group.selected.value.includes(item.id));
@@ -12130,8 +12112,8 @@ const VWindowItem = genericComponent()({
12130
12112
  isBooted
12131
12113
  } = useSsrBoot();
12132
12114
  if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');
12133
- const isTransitioning = ref(false);
12134
- const hasTransition = computed(() => window.isReversed.value ? props.reverseTransition !== false : props.transition !== false);
12115
+ const isTransitioning = shallowRef(false);
12116
+ const hasTransition = computed(() => isBooted.value && (window.isReversed.value ? props.reverseTransition !== false : props.transition !== false));
12135
12117
  function onAfterTransition() {
12136
12118
  if (!isTransitioning.value || !window) {
12137
12119
  return;
@@ -12321,8 +12303,8 @@ const VColorPickerCanvas = defineComponent({
12321
12303
  let {
12322
12304
  emit
12323
12305
  } = _ref;
12324
- const isInteracting = ref(false);
12325
- const isOutsideUpdate = ref(false);
12306
+ const isInteracting = shallowRef(false);
12307
+ const isOutsideUpdate = shallowRef(false);
12326
12308
  const dotPosition = ref({
12327
12309
  x: 0,
12328
12310
  y: 0
@@ -12340,8 +12322,8 @@ const VColorPickerCanvas = defineComponent({
12340
12322
  };
12341
12323
  });
12342
12324
  const canvasRef = ref();
12343
- const canvasWidth = ref(parseFloat(props.width));
12344
- const canvasHeight = ref(parseFloat(props.height));
12325
+ const canvasWidth = shallowRef(parseFloat(props.width));
12326
+ const canvasHeight = shallowRef(parseFloat(props.height));
12345
12327
  const {
12346
12328
  resizeRef
12347
12329
  } = useResizeObserver(entries => {
@@ -12873,8 +12855,8 @@ const useSlider = _ref => {
12873
12855
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
12874
12856
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
12875
12857
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
12876
- const mousePressed = ref(false);
12877
- const startOffset = ref(0);
12858
+ const mousePressed = shallowRef(false);
12859
+ const startOffset = shallowRef(0);
12878
12860
  const trackContainerRef = ref();
12879
12861
  const activeThumbRef = ref();
12880
12862
  function parseMouseMove(e) {
@@ -14052,8 +14034,8 @@ const VCombobox = genericComponent()({
14052
14034
  t
14053
14035
  } = useLocale();
14054
14036
  const vTextFieldRef = ref();
14055
- const isFocused = ref(false);
14056
- const isPristine = ref(true);
14037
+ const isFocused = shallowRef(false);
14038
+ const isPristine = shallowRef(true);
14057
14039
  const vMenuRef = ref();
14058
14040
  const _menu = useProxiedModel(props, 'menu');
14059
14041
  const menu = computed({
@@ -14063,7 +14045,7 @@ const VCombobox = genericComponent()({
14063
14045
  _menu.value = v;
14064
14046
  }
14065
14047
  });
14066
- const selectionIndex = ref(-1);
14048
+ const selectionIndex = shallowRef(-1);
14067
14049
  let cleared = false;
14068
14050
  const color = computed(() => vTextFieldRef.value?.color);
14069
14051
  const {
@@ -14080,7 +14062,7 @@ const VCombobox = genericComponent()({
14080
14062
  return props.multiple ? transformed : transformed[0] ?? null;
14081
14063
  });
14082
14064
  const form = useForm();
14083
- const _search = ref(!props.multiple ? model.value[0]?.title ?? '' : '');
14065
+ const _search = shallowRef(!props.multiple ? model.value[0]?.title ?? '' : '');
14084
14066
  const search = computed({
14085
14067
  get: () => {
14086
14068
  return _search.value;
@@ -14971,7 +14953,7 @@ const VFooter = genericComponent()({
14971
14953
  const {
14972
14954
  roundedClasses
14973
14955
  } = useRounded(props);
14974
- const autoHeight = ref(32);
14956
+ const autoHeight = shallowRef(32);
14975
14957
  const {
14976
14958
  resizeRef
14977
14959
  } = useResizeObserver(entries => {
@@ -15629,14 +15611,18 @@ const VMain = genericComponent()({
15629
15611
  }
15630
15612
  });
15631
15613
 
15614
+ // Utilities
15615
+
15616
+ // Types
15617
+
15632
15618
  function useSticky(_ref) {
15633
15619
  let {
15634
15620
  rootEl,
15635
15621
  isSticky,
15636
15622
  layoutItemStyles
15637
15623
  } = _ref;
15638
- const isStuck = ref(false);
15639
- const stuckPosition = ref(0);
15624
+ const isStuck = shallowRef(false);
15625
+ const stuckPosition = shallowRef(0);
15640
15626
  const stickyStyles = computed(() => {
15641
15627
  const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15642
15628
  return [isSticky.value ? {
@@ -15836,9 +15822,9 @@ function useTouch(_ref) {
15836
15822
  getVelocity
15837
15823
  } = useVelocity();
15838
15824
  let maybeDragging = false;
15839
- const isDragging = ref(false);
15840
- const dragProgress = ref(0);
15841
- const offset = ref(0);
15825
+ const isDragging = shallowRef(false);
15826
+ const dragProgress = shallowRef(0);
15827
+ const offset = shallowRef(0);
15842
15828
  let start;
15843
15829
  function getOffset(pos, active) {
15844
15830
  return (position.value === 'left' ? pos : position.value === 'right' ? document.documentElement.clientWidth - pos : position.value === 'top' ? pos : position.value === 'bottom' ? document.documentElement.clientHeight - pos : oops()) - (active ? width.value : 0);
@@ -16019,7 +16005,7 @@ const VNavigationDrawer = genericComponent()({
16019
16005
  ssrBootStyles
16020
16006
  } = useSsrBoot();
16021
16007
  const rootEl = ref();
16022
- const isHovering = ref(false);
16008
+ const isHovering = shallowRef(false);
16023
16009
  const width = computed(() => {
16024
16010
  return props.rail && props.expandOnHover && isHovering.value ? Number(props.width) : Number(props.rail ? props.railWidth : props.width);
16025
16011
  });
@@ -16287,7 +16273,7 @@ const VPagination = genericComponent()({
16287
16273
  const {
16288
16274
  width
16289
16275
  } = useDisplay();
16290
- const maxButtons = ref(-1);
16276
+ const maxButtons = shallowRef(-1);
16291
16277
  provideDefaults(undefined, {
16292
16278
  scoped: true
16293
16279
  });
@@ -16963,7 +16949,7 @@ const VRating = genericComponent()({
16963
16949
  const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length));
16964
16950
  const range = computed(() => createRange(Number(props.length), 1));
16965
16951
  const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
16966
- const hoverIndex = ref(-1);
16952
+ const hoverIndex = shallowRef(-1);
16967
16953
  const itemState = computed(() => increments.value.map(value => {
16968
16954
  const isHovering = props.hover && hoverIndex.value > -1;
16969
16955
  const isFilled = normalizedValue.value >= value;
@@ -17182,10 +17168,10 @@ const VSlideGroup = genericComponent()({
17182
17168
  mobile
17183
17169
  } = useDisplay();
17184
17170
  const group = useGroup(props, props.symbol);
17185
- const isOverflowing = ref(false);
17186
- const scrollOffset = ref(0);
17187
- const containerSize = ref(0);
17188
- const contentSize = ref(0);
17171
+ const isOverflowing = shallowRef(false);
17172
+ const scrollOffset = shallowRef(0);
17173
+ const containerSize = shallowRef(0);
17174
+ const contentSize = shallowRef(0);
17189
17175
  const isHorizontal = computed(() => props.direction === 'horizontal');
17190
17176
  const {
17191
17177
  resizeRef: containerRef,
@@ -17241,7 +17227,7 @@ const VSlideGroup = genericComponent()({
17241
17227
  });
17242
17228
  });
17243
17229
  }
17244
- const disableTransition = ref(false);
17230
+ const disableTransition = shallowRef(false);
17245
17231
  let startTouch = 0;
17246
17232
  let startOffset = 0;
17247
17233
  function onTouchstart(e) {
@@ -17270,7 +17256,7 @@ const VSlideGroup = genericComponent()({
17270
17256
  if (!containerRef.value) return;
17271
17257
  containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0;
17272
17258
  }
17273
- const isFocused = ref(false);
17259
+ const isFocused = shallowRef(false);
17274
17260
  function onFocusin(e) {
17275
17261
  isFocused.value = true;
17276
17262
  if (!isOverflowing.value || !contentRef.value) return;
@@ -17756,7 +17742,7 @@ const VSystemBar = genericComponent()({
17756
17742
  } = useLayoutItem({
17757
17743
  id: props.name,
17758
17744
  order: computed(() => parseInt(props.order, 10)),
17759
- position: ref('top'),
17745
+ position: shallowRef('top'),
17760
17746
  layoutSize: height,
17761
17747
  elementSize: height,
17762
17748
  active: computed(() => true),
@@ -17774,6 +17760,8 @@ const VSystemBar = genericComponent()({
17774
17760
 
17775
17761
  const VTabsSymbol = Symbol.for('vuetify:v-tabs');
17776
17762
 
17763
+ // Types
17764
+
17777
17765
  const makeVTabProps = propsFactory({
17778
17766
  fixed: Boolean,
17779
17767
  sliderColor: String,
@@ -17800,7 +17788,7 @@ const VTab = genericComponent()({
17800
17788
  textColorStyles: sliderColorStyles
17801
17789
  } = useTextColor(props, 'sliderColor');
17802
17790
  const isHorizontal = computed(() => props.direction === 'horizontal');
17803
- const isSelected = ref(false);
17791
+ const isSelected = shallowRef(false);
17804
17792
  const rootEl = ref();
17805
17793
  const sliderEl = ref();
17806
17794
  function updateSlider(_ref2) {
@@ -18065,7 +18053,7 @@ const VTextarea = genericComponent()({
18065
18053
  }
18066
18054
  const vInputRef = ref();
18067
18055
  const vFieldRef = ref();
18068
- const controlHeight = ref('');
18056
+ const controlHeight = shallowRef('');
18069
18057
  const textareaRef = ref();
18070
18058
  const isActive = computed(() => props.persistentPlaceholder || isFocused.value || props.active);
18071
18059
  function onFocus() {
@@ -18462,7 +18450,7 @@ const VTimelineItem = genericComponent()({
18462
18450
  const {
18463
18451
  dimensionStyles
18464
18452
  } = useDimension(props);
18465
- const dotSize = ref(0);
18453
+ const dotSize = shallowRef(0);
18466
18454
  const dotRef = ref();
18467
18455
  watch(dotRef, newValue => {
18468
18456
  if (!newValue) return;
@@ -18500,6 +18488,34 @@ const VTimelineItem = genericComponent()({
18500
18488
  }
18501
18489
  });
18502
18490
 
18491
+ const makeVToolbarItemsProps = propsFactory({
18492
+ ...makeComponentProps(),
18493
+ ...makeVariantProps({
18494
+ variant: 'text'
18495
+ })
18496
+ }, 'v-toolbar-items');
18497
+ const VToolbarItems = genericComponent()({
18498
+ name: 'VToolbarItems',
18499
+ props: makeVToolbarItemsProps(),
18500
+ setup(props, _ref) {
18501
+ let {
18502
+ slots
18503
+ } = _ref;
18504
+ provideDefaults({
18505
+ VBtn: {
18506
+ color: toRef(props, 'color'),
18507
+ height: 'inherit',
18508
+ variant: toRef(props, 'variant')
18509
+ }
18510
+ });
18511
+ useRender(() => createVNode("div", {
18512
+ "class": ['v-toolbar-items', props.class],
18513
+ "style": props.style
18514
+ }, [slots.default?.()]));
18515
+ return {};
18516
+ }
18517
+ });
18518
+
18503
18519
  // Types
18504
18520
 
18505
18521
  const makeVTooltipProps = propsFactory({
@@ -18656,8 +18672,8 @@ const VVirtualScroll = genericComponent()({
18656
18672
  let {
18657
18673
  slots
18658
18674
  } = _ref;
18659
- const first = ref(0);
18660
- const baseItemHeight = ref(props.itemHeight);
18675
+ const first = shallowRef(0);
18676
+ const baseItemHeight = shallowRef(props.itemHeight);
18661
18677
  const itemHeight = computed({
18662
18678
  get: () => parseInt(baseItemHeight.value ?? 0, 10),
18663
18679
  set(val) {
@@ -20152,7 +20168,8 @@ const VDataTable = genericComponent()({
20152
20168
  return createVNode(VTable, mergeProps({
20153
20169
  "class": ['v-data-table', {
20154
20170
  'v-data-table--show-select': props.showSelect
20155
- }]
20171
+ }, props.class],
20172
+ "style": props.style
20156
20173
  }, tableProps), {
20157
20174
  top: slots.top,
20158
20175
  default: slots.default ?? (() => createVNode(Fragment, null, [slots.colgroup?.({
@@ -20188,11 +20205,11 @@ const DOWN = 1;
20188
20205
 
20189
20206
  // TODO: Replace this with composable from v-virtual-scroll
20190
20207
  function useVirtual(props, items) {
20191
- const startIndex = ref(0);
20208
+ const startIndex = shallowRef(0);
20192
20209
  const itemHeight = computed(() => parseInt(props.itemHeight, 10));
20193
20210
  const visibleItems = computed(() => parseInt(props.visibleItems, 10));
20194
20211
  const containerRef = ref();
20195
- const isScrolling = ref(false);
20212
+ const isScrolling = shallowRef(false);
20196
20213
  function calculateOffset(index) {
20197
20214
  return index * itemHeight.value;
20198
20215
  }
@@ -20331,8 +20348,8 @@ const VDataTableVirtual = genericComponent()({
20331
20348
  });
20332
20349
  useOptions({
20333
20350
  sortBy,
20334
- page: ref(1),
20335
- itemsPerPage: ref(-1),
20351
+ page: shallowRef(1),
20352
+ itemsPerPage: shallowRef(-1),
20336
20353
  groupBy,
20337
20354
  search
20338
20355
  });
@@ -20347,10 +20364,10 @@ const VDataTableVirtual = genericComponent()({
20347
20364
  const [dataTableRowsProps] = VDataTableRows.filterProps(props);
20348
20365
  const [tableProps] = VTable.filterProps(props);
20349
20366
  return createVNode(VTable, mergeProps({
20350
- "class": "v-data-table",
20351
- "style": {
20367
+ "class": ['v-data-table', props.class],
20368
+ "style": [{
20352
20369
  '--v-table-row-height': convertToUnit(itemHeight.value)
20353
- }
20370
+ }, props.style]
20354
20371
  }, tableProps), {
20355
20372
  top: slots.top,
20356
20373
  wrapper: () => createVNode("div", {
@@ -20496,7 +20513,8 @@ const VDataTableServer = genericComponent()({
20496
20513
  return createVNode(VTable, mergeProps({
20497
20514
  "class": ['v-data-table', {
20498
20515
  'v-data-table--loading': props.loading
20499
- }]
20516
+ }, props.class],
20517
+ "style": props.style
20500
20518
  }, tableProps), {
20501
20519
  top: slots.top,
20502
20520
  default: slots.default ?? (() => createVNode(Fragment, null, [slots.colgroup?.({
@@ -21632,7 +21650,7 @@ function createVuetify$1() {
21632
21650
  date
21633
21651
  };
21634
21652
  }
21635
- const version$1 = "3.2.3";
21653
+ const version$1 = "3.2.4";
21636
21654
  createVuetify$1.version = version$1;
21637
21655
 
21638
21656
  // Vue's inject() can only be used in setup
@@ -21644,7 +21662,7 @@ function inject(key) {
21644
21662
  }
21645
21663
  }
21646
21664
 
21647
- const version = "3.2.3";
21665
+ const version = "3.2.4";
21648
21666
 
21649
21667
  const createVuetify = function () {
21650
21668
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};