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
  */
@@ -1292,7 +1292,7 @@
1292
1292
  vue.provide(VuetifyLayoutItemKey, {
1293
1293
  id
1294
1294
  });
1295
- const isKeptAlive = vue.ref(false);
1295
+ const isKeptAlive = vue.shallowRef(false);
1296
1296
  vue.onDeactivated(() => isKeptAlive.value = true);
1297
1297
  vue.onActivated(() => isKeptAlive.value = false);
1298
1298
  const {
@@ -1423,7 +1423,7 @@
1423
1423
  return items.value.find(item => item.id === id);
1424
1424
  };
1425
1425
  const rootVm = getCurrentInstance('createLayout');
1426
- const isMounted = vue.ref(false);
1426
+ const isMounted = vue.shallowRef(false);
1427
1427
  vue.onMounted(() => {
1428
1428
  isMounted.value = true;
1429
1429
  });
@@ -2017,6 +2017,10 @@
2017
2017
  }
2018
2018
  };
2019
2019
 
2020
+ // Composables
2021
+
2022
+ // Types
2023
+
2020
2024
  const LANG_PREFIX = '$vuetify.';
2021
2025
  const replace = (str, params) => {
2022
2026
  return str.replace(/\{(\d+)\}/g, (match, index) => {
@@ -2089,8 +2093,8 @@
2089
2093
  };
2090
2094
  }
2091
2095
  function createVuetifyAdapter(options) {
2092
- const current = vue.ref(options?.locale ?? 'en');
2093
- const fallback = vue.ref(options?.fallback ?? 'en');
2096
+ const current = vue.shallowRef(options?.locale ?? 'en');
2097
+ const fallback = vue.shallowRef(options?.fallback ?? 'en');
2094
2098
  const messages = vue.ref({
2095
2099
  en,
2096
2100
  ...options?.messages
@@ -2754,6 +2758,7 @@
2754
2758
  } = _ref;
2755
2759
  const {
2756
2760
  transition,
2761
+ disabled,
2757
2762
  ...rest
2758
2763
  } = props;
2759
2764
  const {
@@ -2761,8 +2766,10 @@
2761
2766
  ...customProps
2762
2767
  } = typeof transition === 'object' ? transition : {};
2763
2768
  return vue.h(component, vue.mergeProps(typeof transition === 'string' ? {
2764
- name: transition
2765
- } : customProps, rest), slots);
2769
+ name: disabled ? '' : transition
2770
+ } : customProps, rest, {
2771
+ disabled
2772
+ }), slots);
2766
2773
  };
2767
2774
 
2768
2775
  // Types
@@ -2810,11 +2817,11 @@
2810
2817
  emit,
2811
2818
  slots
2812
2819
  } = _ref;
2813
- const currentSrc = vue.ref(''); // Set from srcset
2820
+ const currentSrc = vue.shallowRef(''); // Set from srcset
2814
2821
  const image = vue.ref();
2815
- const state = vue.ref(props.eager ? 'loading' : 'idle');
2816
- const naturalWidth = vue.ref();
2817
- const naturalHeight = vue.ref();
2822
+ const state = vue.shallowRef(props.eager ? 'loading' : 'idle');
2823
+ const naturalWidth = vue.shallowRef();
2824
+ const naturalHeight = vue.shallowRef();
2818
2825
  const normalisedSrc = vue.computed(() => {
2819
2826
  return props.src && typeof props.src === 'object' ? {
2820
2827
  src: props.src.src,
@@ -2968,7 +2975,7 @@
2968
2975
  }
2969
2976
  }, null);
2970
2977
  };
2971
- const isBooted = vue.ref(false);
2978
+ const isBooted = vue.shallowRef(false);
2972
2979
  {
2973
2980
  const stop = vue.watch(aspectRatio, val => {
2974
2981
  if (val) {
@@ -3254,7 +3261,7 @@
3254
3261
  const {
3255
3262
  rtlClasses
3256
3263
  } = useRtl();
3257
- const isExtended = vue.ref(!!(props.extended || slots.extension?.()));
3264
+ const isExtended = vue.shallowRef(!!(props.extended || slots.extension?.()));
3258
3265
  const contentHeight = vue.computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
3259
3266
  const extensionHeight = vue.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);
3260
3267
  provideDefaults({
@@ -3361,11 +3368,11 @@
3361
3368
  } = args;
3362
3369
  let previousScroll = 0;
3363
3370
  const target = vue.ref(null);
3364
- const currentScroll = vue.ref(0);
3365
- const savedScroll = vue.ref(0);
3366
- const currentThreshold = vue.ref(0);
3367
- const isScrollActive = vue.ref(false);
3368
- const isScrollingUp = vue.ref(false);
3371
+ const currentScroll = vue.shallowRef(0);
3372
+ const savedScroll = vue.shallowRef(0);
3373
+ const currentThreshold = vue.shallowRef(0);
3374
+ const isScrollActive = vue.shallowRef(false);
3375
+ const isScrollingUp = vue.shallowRef(false);
3369
3376
  const scrollThreshold = vue.computed(() => {
3370
3377
  return Number(props.scrollThreshold);
3371
3378
  });
@@ -3435,7 +3442,7 @@
3435
3442
 
3436
3443
  // Composables
3437
3444
  function useSsrBoot() {
3438
- const isBooted = vue.ref(false);
3445
+ const isBooted = vue.shallowRef(false);
3439
3446
  vue.onMounted(() => {
3440
3447
  window.requestAnimationFrame(() => {
3441
3448
  isBooted.value = true;
@@ -3546,7 +3553,7 @@
3546
3553
  order: vue.computed(() => parseInt(props.order, 10)),
3547
3554
  position: vue.toRef(props, 'location'),
3548
3555
  layoutSize: height,
3549
- elementSize: vue.ref(undefined),
3556
+ elementSize: vue.shallowRef(undefined),
3550
3557
  active: isActive,
3551
3558
  absolute: vue.toRef(props, 'absolute')
3552
3559
  });
@@ -4236,7 +4243,7 @@
4236
4243
  // Utilities
4237
4244
  function useIntersectionObserver(callback, options) {
4238
4245
  const intersectionRef = vue.ref();
4239
- const isIntersecting = vue.ref(false);
4246
+ const isIntersecting = vue.shallowRef(false);
4240
4247
  if (SUPPORTS_INTERSECTION) {
4241
4248
  const observer = new IntersectionObserver(entries => {
4242
4249
  callback?.(entries, observer);
@@ -5249,34 +5256,6 @@
5249
5256
  }
5250
5257
  });
5251
5258
 
5252
- const makeVToolbarItemsProps = propsFactory({
5253
- ...makeComponentProps(),
5254
- ...makeVariantProps({
5255
- variant: 'text'
5256
- })
5257
- }, 'v-toolbar-items');
5258
- const VToolbarItems = genericComponent()({
5259
- name: 'VToolbarItems',
5260
- props: makeVToolbarItemsProps(),
5261
- setup(props, _ref) {
5262
- let {
5263
- slots
5264
- } = _ref;
5265
- provideDefaults({
5266
- VBtn: {
5267
- color: vue.toRef(props, 'color'),
5268
- height: 'inherit',
5269
- variant: vue.toRef(props, 'variant')
5270
- }
5271
- });
5272
- useRender(() => vue.createVNode("div", {
5273
- "class": ['v-toolbar-items', props.class],
5274
- "style": props.style
5275
- }, [slots.default?.()]));
5276
- return {};
5277
- }
5278
- });
5279
-
5280
5259
  // Types
5281
5260
 
5282
5261
  const VAppBarTitle = genericComponent()({
@@ -5409,7 +5388,6 @@
5409
5388
  return () => {
5410
5389
  const hasPrepend = !!(slots.prepend || icon.value);
5411
5390
  const hasTitle = !!(slots.title || props.title);
5412
- const hasText = !!(props.text || slots.text);
5413
5391
  const hasClose = !!(slots.close || props.closable);
5414
5392
  return isActive.value && vue.createVNode(props.tag, {
5415
5393
  "class": ['v-alert', props.border && {
@@ -5449,7 +5427,7 @@
5449
5427
  "key": "title"
5450
5428
  }, {
5451
5429
  default: () => [slots.title?.() ?? props.title]
5452
- }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
5430
+ }), slots.text?.() ?? props.text, slots.default?.()]), slots.append && vue.createVNode("div", {
5453
5431
  "key": "append",
5454
5432
  "class": "v-alert__append"
5455
5433
  }, [slots.append()]), hasClose && vue.createVNode("div", {
@@ -5893,7 +5871,7 @@
5893
5871
  }
5894
5872
  });
5895
5873
 
5896
- // Utilities
5874
+ // Composables
5897
5875
 
5898
5876
  // Types
5899
5877
 
@@ -5915,7 +5893,7 @@
5915
5893
  const model = useProxiedModel(props, 'modelValue');
5916
5894
  const isDisabled = vue.computed(() => props.disabled);
5917
5895
  const isReadonly = vue.computed(() => props.readonly);
5918
- const isValidating = vue.ref(false);
5896
+ const isValidating = vue.shallowRef(false);
5919
5897
  const items = vue.ref([]);
5920
5898
  const errors = vue.ref([]);
5921
5899
  async function validate() {
@@ -6054,7 +6032,7 @@
6054
6032
  const validationModel = vue.computed(() => props.validationValue === undefined ? model.value : props.validationValue);
6055
6033
  const form = useForm();
6056
6034
  const internalErrorMessages = vue.ref([]);
6057
- const isPristine = vue.ref(true);
6035
+ const isPristine = vue.shallowRef(true);
6058
6036
  const isDirty = vue.computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
6059
6037
  const isDisabled = vue.computed(() => !!(props.disabled || form?.isDisabled.value));
6060
6038
  const isReadonly = vue.computed(() => !!(props.readonly || form?.isReadonly.value));
@@ -6066,7 +6044,7 @@
6066
6044
  if (!props.rules.length) return true;
6067
6045
  return isPristine.value ? null : true;
6068
6046
  });
6069
- const isValidating = vue.ref(false);
6047
+ const isValidating = vue.shallowRef(false);
6070
6048
  const validationClasses = vue.computed(() => {
6071
6049
  return {
6072
6050
  [`${name}--error`]: isValid.value === false,
@@ -6764,8 +6742,8 @@
6764
6742
  } = useSelectionControl(props);
6765
6743
  const uid = getUid();
6766
6744
  const id = vue.computed(() => props.id || `input-${uid}`);
6767
- const isFocused = vue.ref(false);
6768
- const isFocusVisible = vue.ref(false);
6745
+ const isFocused = vue.shallowRef(false);
6746
+ const isFocusVisible = vue.shallowRef(false);
6769
6747
  const input = vue.ref();
6770
6748
  group?.onForceUpdate(() => {
6771
6749
  if (input.value) {
@@ -7382,11 +7360,11 @@
7382
7360
  const ListKey = Symbol.for('vuetify:list');
7383
7361
  function createList() {
7384
7362
  const parent = vue.inject(ListKey, {
7385
- hasPrepend: vue.ref(false),
7363
+ hasPrepend: vue.shallowRef(false),
7386
7364
  updateHasPrepend: () => null
7387
7365
  });
7388
7366
  const data = {
7389
- hasPrepend: vue.ref(false),
7367
+ hasPrepend: vue.shallowRef(false),
7390
7368
  updateHasPrepend: value => {
7391
7369
  if (value) data.hasPrepend.value = value;
7392
7370
  }
@@ -7653,11 +7631,13 @@
7653
7631
  return strategy;
7654
7632
  };
7655
7633
 
7634
+ // Composables
7635
+
7656
7636
  // Types
7657
7637
 
7658
7638
  const VNestedSymbol = Symbol.for('vuetify:nested');
7659
7639
  const emptyNested = {
7660
- id: vue.ref(),
7640
+ id: vue.shallowRef(),
7661
7641
  root: {
7662
7642
  register: () => null,
7663
7643
  unregister: () => null,
@@ -7726,7 +7706,7 @@
7726
7706
  }
7727
7707
  const vm = getCurrentInstance('nested');
7728
7708
  const nested = {
7729
- id: vue.ref(),
7709
+ id: vue.shallowRef(),
7730
7710
  root: {
7731
7711
  opened,
7732
7712
  selected,
@@ -8506,7 +8486,7 @@
8506
8486
  variant: vue.toRef(props, 'variant')
8507
8487
  }
8508
8488
  });
8509
- const isFocused = vue.ref(false);
8489
+ const isFocused = vue.shallowRef(false);
8510
8490
  const contentRef = vue.ref();
8511
8491
  function onFocusin(e) {
8512
8492
  isFocused.value = true;
@@ -8903,7 +8883,7 @@
8903
8883
  eager: Boolean
8904
8884
  }, 'lazy');
8905
8885
  function useLazy(props, active) {
8906
- const isBooted = vue.ref(false);
8886
+ const isBooted = vue.shallowRef(false);
8907
8887
  const hasContent = vue.computed(() => isBooted.value || props.eager || active.value);
8908
8888
  vue.watch(active, () => isBooted.value = true);
8909
8889
  function onAfterLeave() {
@@ -9063,7 +9043,7 @@
9063
9043
  Object.assign(contentStyles.value, {
9064
9044
  position: 'fixed',
9065
9045
  top: 0,
9066
- left: 0
9046
+ [data.isRtl.value ? 'right' : 'left']: 0
9067
9047
  });
9068
9048
  }
9069
9049
  const {
@@ -9565,10 +9545,10 @@
9565
9545
  thresholds,
9566
9546
  mobileBreakpoint
9567
9547
  } = parseDisplayOptions(options);
9568
- const height = vue.ref(getClientHeight(ssr));
9548
+ const height = vue.shallowRef(getClientHeight(ssr));
9569
9549
  const platform = vue.shallowRef(getPlatform(ssr));
9570
9550
  const state = vue.reactive({});
9571
- const width = vue.ref(getClientWidth(ssr));
9551
+ const width = vue.shallowRef(getClientWidth(ssr));
9572
9552
  function updateSize() {
9573
9553
  height.value = getClientHeight();
9574
9554
  width.value = getClientWidth();
@@ -9628,20 +9608,20 @@
9628
9608
  return display;
9629
9609
  }
9630
9610
 
9631
- // Utilities
9611
+ // Composables
9632
9612
  function useHydration() {
9633
- if (!IN_BROWSER) return vue.ref(false);
9613
+ if (!IN_BROWSER) return vue.shallowRef(false);
9634
9614
  const {
9635
9615
  ssr
9636
9616
  } = useDisplay();
9637
9617
  if (ssr) {
9638
- const isMounted = vue.ref(false);
9618
+ const isMounted = vue.shallowRef(false);
9639
9619
  vue.onMounted(() => {
9640
9620
  isMounted.value = true;
9641
9621
  });
9642
9622
  return isMounted;
9643
9623
  } else {
9644
- return vue.ref(true);
9624
+ return vue.shallowRef(true);
9645
9625
  }
9646
9626
  }
9647
9627
 
@@ -9655,6 +9635,8 @@
9655
9635
  };
9656
9636
  }
9657
9637
 
9638
+ // Composables
9639
+
9658
9640
  // Types
9659
9641
 
9660
9642
  const StackSymbol = Symbol.for('vuetify:stack');
@@ -9667,7 +9649,7 @@
9667
9649
  activeChildren: new Set()
9668
9650
  });
9669
9651
  vue.provide(StackSymbol, stack);
9670
- const _zIndex = vue.ref(+zIndex.value);
9652
+ const _zIndex = vue.shallowRef(+zIndex.value);
9671
9653
  useToggleScope(isActive, () => {
9672
9654
  const lastZIndex = globalStack.at(-1)?.[1];
9673
9655
  _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
@@ -9683,7 +9665,7 @@
9683
9665
  parent?.activeChildren.delete(vm.uid);
9684
9666
  });
9685
9667
  });
9686
- const globalTop = vue.ref(true);
9668
+ const globalTop = vue.shallowRef(true);
9687
9669
  if (createStackEntry) {
9688
9670
  vue.watchEffect(() => {
9689
9671
  const _isTop = globalStack.at(-1)?.[0] === vm.uid;
@@ -10099,7 +10081,7 @@
10099
10081
  const id = vue.computed(() => props.id || `v-menu-${uid}`);
10100
10082
  const overlay = vue.ref();
10101
10083
  const parent = vue.inject(VMenuSymbol, null);
10102
- const openChildren = vue.ref(0);
10084
+ const openChildren = vue.shallowRef(0);
10103
10085
  vue.provide(VMenuSymbol, {
10104
10086
  register() {
10105
10087
  ++openChildren.value;
@@ -10242,7 +10224,7 @@
10242
10224
  });
10243
10225
  });
10244
10226
  const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
10245
- const isFocused = vue.ref(false);
10227
+ const isFocused = vue.shallowRef(false);
10246
10228
  let keyboardLookupPrefix = '';
10247
10229
  let keyboardLookupLastTime;
10248
10230
  const displayItems = vue.computed(() => {
@@ -10618,8 +10600,8 @@
10618
10600
  t
10619
10601
  } = useLocale();
10620
10602
  const vTextFieldRef = vue.ref();
10621
- const isFocused = vue.ref(false);
10622
- const isPristine = vue.ref(true);
10603
+ const isFocused = vue.shallowRef(false);
10604
+ const isPristine = vue.shallowRef(true);
10623
10605
  const vMenuRef = vue.ref();
10624
10606
  const _menu = useProxiedModel(props, 'menu');
10625
10607
  const menu = vue.computed({
@@ -10629,7 +10611,7 @@
10629
10611
  _menu.value = v;
10630
10612
  }
10631
10613
  });
10632
- const selectionIndex = vue.ref(-1);
10614
+ const selectionIndex = vue.shallowRef(-1);
10633
10615
  const color = vue.computed(() => vTextFieldRef.value?.color);
10634
10616
  const {
10635
10617
  items,
@@ -10740,7 +10722,7 @@
10740
10722
  function onFocusin(e) {
10741
10723
  isFocused.value = true;
10742
10724
  }
10743
- const isSelecting = vue.ref(false);
10725
+ const isSelecting = vue.shallowRef(false);
10744
10726
  function select(item) {
10745
10727
  if (props.multiple) {
10746
10728
  const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
@@ -11873,14 +11855,14 @@
11873
11855
  const group = useGroup(props, VWindowGroupSymbol);
11874
11856
  const rootRef = vue.ref();
11875
11857
  const isRtlReverse = vue.computed(() => isRtl.value ? !props.reverse : props.reverse);
11876
- const isReversed = vue.ref(false);
11858
+ const isReversed = vue.shallowRef(false);
11877
11859
  const transition = vue.computed(() => {
11878
11860
  const axis = props.direction === 'vertical' ? 'y' : 'x';
11879
11861
  const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value;
11880
11862
  const direction = reverse ? '-reverse' : '';
11881
11863
  return `v-window-${axis}${direction}-transition`;
11882
11864
  });
11883
- const transitionCount = vue.ref(0);
11865
+ const transitionCount = vue.shallowRef(0);
11884
11866
  const transitionHeight = vue.ref(undefined);
11885
11867
  const activeIndex = vue.computed(() => {
11886
11868
  return group.items.value.findIndex(item => group.selected.value.includes(item.id));
@@ -12134,8 +12116,8 @@
12134
12116
  isBooted
12135
12117
  } = useSsrBoot();
12136
12118
  if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow');
12137
- const isTransitioning = vue.ref(false);
12138
- const hasTransition = vue.computed(() => window.isReversed.value ? props.reverseTransition !== false : props.transition !== false);
12119
+ const isTransitioning = vue.shallowRef(false);
12120
+ const hasTransition = vue.computed(() => isBooted.value && (window.isReversed.value ? props.reverseTransition !== false : props.transition !== false));
12139
12121
  function onAfterTransition() {
12140
12122
  if (!isTransitioning.value || !window) {
12141
12123
  return;
@@ -12325,8 +12307,8 @@
12325
12307
  let {
12326
12308
  emit
12327
12309
  } = _ref;
12328
- const isInteracting = vue.ref(false);
12329
- const isOutsideUpdate = vue.ref(false);
12310
+ const isInteracting = vue.shallowRef(false);
12311
+ const isOutsideUpdate = vue.shallowRef(false);
12330
12312
  const dotPosition = vue.ref({
12331
12313
  x: 0,
12332
12314
  y: 0
@@ -12344,8 +12326,8 @@
12344
12326
  };
12345
12327
  });
12346
12328
  const canvasRef = vue.ref();
12347
- const canvasWidth = vue.ref(parseFloat(props.width));
12348
- const canvasHeight = vue.ref(parseFloat(props.height));
12329
+ const canvasWidth = vue.shallowRef(parseFloat(props.width));
12330
+ const canvasHeight = vue.shallowRef(parseFloat(props.height));
12349
12331
  const {
12350
12332
  resizeRef
12351
12333
  } = useResizeObserver(entries => {
@@ -12877,8 +12859,8 @@
12877
12859
  const thumbColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
12878
12860
  const trackColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
12879
12861
  const trackFillColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
12880
- const mousePressed = vue.ref(false);
12881
- const startOffset = vue.ref(0);
12862
+ const mousePressed = vue.shallowRef(false);
12863
+ const startOffset = vue.shallowRef(0);
12882
12864
  const trackContainerRef = vue.ref();
12883
12865
  const activeThumbRef = vue.ref();
12884
12866
  function parseMouseMove(e) {
@@ -14056,8 +14038,8 @@
14056
14038
  t
14057
14039
  } = useLocale();
14058
14040
  const vTextFieldRef = vue.ref();
14059
- const isFocused = vue.ref(false);
14060
- const isPristine = vue.ref(true);
14041
+ const isFocused = vue.shallowRef(false);
14042
+ const isPristine = vue.shallowRef(true);
14061
14043
  const vMenuRef = vue.ref();
14062
14044
  const _menu = useProxiedModel(props, 'menu');
14063
14045
  const menu = vue.computed({
@@ -14067,7 +14049,7 @@
14067
14049
  _menu.value = v;
14068
14050
  }
14069
14051
  });
14070
- const selectionIndex = vue.ref(-1);
14052
+ const selectionIndex = vue.shallowRef(-1);
14071
14053
  let cleared = false;
14072
14054
  const color = vue.computed(() => vTextFieldRef.value?.color);
14073
14055
  const {
@@ -14084,7 +14066,7 @@
14084
14066
  return props.multiple ? transformed : transformed[0] ?? null;
14085
14067
  });
14086
14068
  const form = useForm();
14087
- const _search = vue.ref(!props.multiple ? model.value[0]?.title ?? '' : '');
14069
+ const _search = vue.shallowRef(!props.multiple ? model.value[0]?.title ?? '' : '');
14088
14070
  const search = vue.computed({
14089
14071
  get: () => {
14090
14072
  return _search.value;
@@ -14975,7 +14957,7 @@
14975
14957
  const {
14976
14958
  roundedClasses
14977
14959
  } = useRounded(props);
14978
- const autoHeight = vue.ref(32);
14960
+ const autoHeight = vue.shallowRef(32);
14979
14961
  const {
14980
14962
  resizeRef
14981
14963
  } = useResizeObserver(entries => {
@@ -15633,14 +15615,18 @@
15633
15615
  }
15634
15616
  });
15635
15617
 
15618
+ // Utilities
15619
+
15620
+ // Types
15621
+
15636
15622
  function useSticky(_ref) {
15637
15623
  let {
15638
15624
  rootEl,
15639
15625
  isSticky,
15640
15626
  layoutItemStyles
15641
15627
  } = _ref;
15642
- const isStuck = vue.ref(false);
15643
- const stuckPosition = vue.ref(0);
15628
+ const isStuck = vue.shallowRef(false);
15629
+ const stuckPosition = vue.shallowRef(0);
15644
15630
  const stickyStyles = vue.computed(() => {
15645
15631
  const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value;
15646
15632
  return [isSticky.value ? {
@@ -15840,9 +15826,9 @@
15840
15826
  getVelocity
15841
15827
  } = useVelocity();
15842
15828
  let maybeDragging = false;
15843
- const isDragging = vue.ref(false);
15844
- const dragProgress = vue.ref(0);
15845
- const offset = vue.ref(0);
15829
+ const isDragging = vue.shallowRef(false);
15830
+ const dragProgress = vue.shallowRef(0);
15831
+ const offset = vue.shallowRef(0);
15846
15832
  let start;
15847
15833
  function getOffset(pos, active) {
15848
15834
  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);
@@ -16023,7 +16009,7 @@
16023
16009
  ssrBootStyles
16024
16010
  } = useSsrBoot();
16025
16011
  const rootEl = vue.ref();
16026
- const isHovering = vue.ref(false);
16012
+ const isHovering = vue.shallowRef(false);
16027
16013
  const width = vue.computed(() => {
16028
16014
  return props.rail && props.expandOnHover && isHovering.value ? Number(props.width) : Number(props.rail ? props.railWidth : props.width);
16029
16015
  });
@@ -16291,7 +16277,7 @@
16291
16277
  const {
16292
16278
  width
16293
16279
  } = useDisplay();
16294
- const maxButtons = vue.ref(-1);
16280
+ const maxButtons = vue.shallowRef(-1);
16295
16281
  provideDefaults(undefined, {
16296
16282
  scoped: true
16297
16283
  });
@@ -16967,7 +16953,7 @@
16967
16953
  const normalizedValue = vue.computed(() => clamp(parseFloat(rating.value), 0, +props.length));
16968
16954
  const range = vue.computed(() => createRange(Number(props.length), 1));
16969
16955
  const increments = vue.computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
16970
- const hoverIndex = vue.ref(-1);
16956
+ const hoverIndex = vue.shallowRef(-1);
16971
16957
  const itemState = vue.computed(() => increments.value.map(value => {
16972
16958
  const isHovering = props.hover && hoverIndex.value > -1;
16973
16959
  const isFilled = normalizedValue.value >= value;
@@ -17186,10 +17172,10 @@
17186
17172
  mobile
17187
17173
  } = useDisplay();
17188
17174
  const group = useGroup(props, props.symbol);
17189
- const isOverflowing = vue.ref(false);
17190
- const scrollOffset = vue.ref(0);
17191
- const containerSize = vue.ref(0);
17192
- const contentSize = vue.ref(0);
17175
+ const isOverflowing = vue.shallowRef(false);
17176
+ const scrollOffset = vue.shallowRef(0);
17177
+ const containerSize = vue.shallowRef(0);
17178
+ const contentSize = vue.shallowRef(0);
17193
17179
  const isHorizontal = vue.computed(() => props.direction === 'horizontal');
17194
17180
  const {
17195
17181
  resizeRef: containerRef,
@@ -17245,7 +17231,7 @@
17245
17231
  });
17246
17232
  });
17247
17233
  }
17248
- const disableTransition = vue.ref(false);
17234
+ const disableTransition = vue.shallowRef(false);
17249
17235
  let startTouch = 0;
17250
17236
  let startOffset = 0;
17251
17237
  function onTouchstart(e) {
@@ -17274,7 +17260,7 @@
17274
17260
  if (!containerRef.value) return;
17275
17261
  containerRef.value[isHorizontal.value ? 'scrollLeft' : 'scrollTop'] = 0;
17276
17262
  }
17277
- const isFocused = vue.ref(false);
17263
+ const isFocused = vue.shallowRef(false);
17278
17264
  function onFocusin(e) {
17279
17265
  isFocused.value = true;
17280
17266
  if (!isOverflowing.value || !contentRef.value) return;
@@ -17760,7 +17746,7 @@
17760
17746
  } = useLayoutItem({
17761
17747
  id: props.name,
17762
17748
  order: vue.computed(() => parseInt(props.order, 10)),
17763
- position: vue.ref('top'),
17749
+ position: vue.shallowRef('top'),
17764
17750
  layoutSize: height,
17765
17751
  elementSize: height,
17766
17752
  active: vue.computed(() => true),
@@ -17778,6 +17764,8 @@
17778
17764
 
17779
17765
  const VTabsSymbol = Symbol.for('vuetify:v-tabs');
17780
17766
 
17767
+ // Types
17768
+
17781
17769
  const makeVTabProps = propsFactory({
17782
17770
  fixed: Boolean,
17783
17771
  sliderColor: String,
@@ -17804,7 +17792,7 @@
17804
17792
  textColorStyles: sliderColorStyles
17805
17793
  } = useTextColor(props, 'sliderColor');
17806
17794
  const isHorizontal = vue.computed(() => props.direction === 'horizontal');
17807
- const isSelected = vue.ref(false);
17795
+ const isSelected = vue.shallowRef(false);
17808
17796
  const rootEl = vue.ref();
17809
17797
  const sliderEl = vue.ref();
17810
17798
  function updateSlider(_ref2) {
@@ -18069,7 +18057,7 @@
18069
18057
  }
18070
18058
  const vInputRef = vue.ref();
18071
18059
  const vFieldRef = vue.ref();
18072
- const controlHeight = vue.ref('');
18060
+ const controlHeight = vue.shallowRef('');
18073
18061
  const textareaRef = vue.ref();
18074
18062
  const isActive = vue.computed(() => props.persistentPlaceholder || isFocused.value || props.active);
18075
18063
  function onFocus() {
@@ -18466,7 +18454,7 @@
18466
18454
  const {
18467
18455
  dimensionStyles
18468
18456
  } = useDimension(props);
18469
- const dotSize = vue.ref(0);
18457
+ const dotSize = vue.shallowRef(0);
18470
18458
  const dotRef = vue.ref();
18471
18459
  vue.watch(dotRef, newValue => {
18472
18460
  if (!newValue) return;
@@ -18504,6 +18492,34 @@
18504
18492
  }
18505
18493
  });
18506
18494
 
18495
+ const makeVToolbarItemsProps = propsFactory({
18496
+ ...makeComponentProps(),
18497
+ ...makeVariantProps({
18498
+ variant: 'text'
18499
+ })
18500
+ }, 'v-toolbar-items');
18501
+ const VToolbarItems = genericComponent()({
18502
+ name: 'VToolbarItems',
18503
+ props: makeVToolbarItemsProps(),
18504
+ setup(props, _ref) {
18505
+ let {
18506
+ slots
18507
+ } = _ref;
18508
+ provideDefaults({
18509
+ VBtn: {
18510
+ color: vue.toRef(props, 'color'),
18511
+ height: 'inherit',
18512
+ variant: vue.toRef(props, 'variant')
18513
+ }
18514
+ });
18515
+ useRender(() => vue.createVNode("div", {
18516
+ "class": ['v-toolbar-items', props.class],
18517
+ "style": props.style
18518
+ }, [slots.default?.()]));
18519
+ return {};
18520
+ }
18521
+ });
18522
+
18507
18523
  // Types
18508
18524
 
18509
18525
  const makeVTooltipProps = propsFactory({
@@ -18660,8 +18676,8 @@
18660
18676
  let {
18661
18677
  slots
18662
18678
  } = _ref;
18663
- const first = vue.ref(0);
18664
- const baseItemHeight = vue.ref(props.itemHeight);
18679
+ const first = vue.shallowRef(0);
18680
+ const baseItemHeight = vue.shallowRef(props.itemHeight);
18665
18681
  const itemHeight = vue.computed({
18666
18682
  get: () => parseInt(baseItemHeight.value ?? 0, 10),
18667
18683
  set(val) {
@@ -20156,7 +20172,8 @@
20156
20172
  return vue.createVNode(VTable, vue.mergeProps({
20157
20173
  "class": ['v-data-table', {
20158
20174
  'v-data-table--show-select': props.showSelect
20159
- }]
20175
+ }, props.class],
20176
+ "style": props.style
20160
20177
  }, tableProps), {
20161
20178
  top: slots.top,
20162
20179
  default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
@@ -20192,11 +20209,11 @@
20192
20209
 
20193
20210
  // TODO: Replace this with composable from v-virtual-scroll
20194
20211
  function useVirtual(props, items) {
20195
- const startIndex = vue.ref(0);
20212
+ const startIndex = vue.shallowRef(0);
20196
20213
  const itemHeight = vue.computed(() => parseInt(props.itemHeight, 10));
20197
20214
  const visibleItems = vue.computed(() => parseInt(props.visibleItems, 10));
20198
20215
  const containerRef = vue.ref();
20199
- const isScrolling = vue.ref(false);
20216
+ const isScrolling = vue.shallowRef(false);
20200
20217
  function calculateOffset(index) {
20201
20218
  return index * itemHeight.value;
20202
20219
  }
@@ -20335,8 +20352,8 @@
20335
20352
  });
20336
20353
  useOptions({
20337
20354
  sortBy,
20338
- page: vue.ref(1),
20339
- itemsPerPage: vue.ref(-1),
20355
+ page: vue.shallowRef(1),
20356
+ itemsPerPage: vue.shallowRef(-1),
20340
20357
  groupBy,
20341
20358
  search
20342
20359
  });
@@ -20351,10 +20368,10 @@
20351
20368
  const [dataTableRowsProps] = VDataTableRows.filterProps(props);
20352
20369
  const [tableProps] = VTable.filterProps(props);
20353
20370
  return vue.createVNode(VTable, vue.mergeProps({
20354
- "class": "v-data-table",
20355
- "style": {
20371
+ "class": ['v-data-table', props.class],
20372
+ "style": [{
20356
20373
  '--v-table-row-height': convertToUnit(itemHeight.value)
20357
- }
20374
+ }, props.style]
20358
20375
  }, tableProps), {
20359
20376
  top: slots.top,
20360
20377
  wrapper: () => vue.createVNode("div", {
@@ -20500,7 +20517,8 @@
20500
20517
  return vue.createVNode(VTable, vue.mergeProps({
20501
20518
  "class": ['v-data-table', {
20502
20519
  'v-data-table--loading': props.loading
20503
- }]
20520
+ }, props.class],
20521
+ "style": props.style
20504
20522
  }, tableProps), {
20505
20523
  top: slots.top,
20506
20524
  default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
@@ -21636,7 +21654,7 @@
21636
21654
  date
21637
21655
  };
21638
21656
  }
21639
- const version$1 = "3.2.3";
21657
+ const version$1 = "3.2.4";
21640
21658
  createVuetify$1.version = version$1;
21641
21659
 
21642
21660
  // Vue's inject() can only be used in setup
@@ -21648,7 +21666,7 @@
21648
21666
  }
21649
21667
  }
21650
21668
 
21651
- const version = "3.2.3";
21669
+ const version = "3.2.4";
21652
21670
 
21653
21671
  const createVuetify = function () {
21654
21672
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};