vuetify 3.1.5 → 3.1.7

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 (140) hide show
  1. package/dist/json/attributes.json +562 -34
  2. package/dist/json/importMap.json +36 -36
  3. package/dist/json/tags.json +136 -2
  4. package/dist/json/web-types.json +2163 -85
  5. package/dist/vuetify-labs.css +30 -25
  6. package/dist/vuetify-labs.d.ts +3455 -146
  7. package/dist/vuetify-labs.esm.js +123 -73
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +123 -73
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +89 -84
  12. package/dist/vuetify.d.ts +1928 -77
  13. package/dist/vuetify.esm.js +102 -63
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +102 -63
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +674 -669
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAlert/index.d.ts +22 -0
  21. package/lib/components/VApp/index.d.ts +6 -0
  22. package/lib/components/VAppBar/index.d.ts +36 -0
  23. package/lib/components/VAutocomplete/index.d.ts +117 -6
  24. package/lib/components/VAvatar/index.d.ts +6 -0
  25. package/lib/components/VBadge/index.d.ts +8 -0
  26. package/lib/components/VBanner/index.d.ts +24 -0
  27. package/lib/components/VBottomNavigation/index.d.ts +6 -0
  28. package/lib/components/VBreadcrumbs/index.d.ts +28 -4
  29. package/lib/components/VBtn/index.d.ts +12 -0
  30. package/lib/components/VBtnGroup/index.d.ts +6 -0
  31. package/lib/components/VBtnToggle/index.d.ts +6 -0
  32. package/lib/components/VCard/index.d.ts +60 -0
  33. package/lib/components/VCarousel/index.d.ts +60 -0
  34. package/lib/components/VCheckbox/index.d.ts +38 -0
  35. package/lib/components/VChip/index.d.ts +12 -0
  36. package/lib/components/VChipGroup/index.d.ts +6 -0
  37. package/lib/components/VCode/index.d.ts +6 -0
  38. package/lib/components/VColorPicker/VColorPicker.mjs +9 -1
  39. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  40. package/lib/components/VColorPicker/VColorPickerCanvas.css +2 -1
  41. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +36 -18
  42. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  43. package/lib/components/VColorPicker/VColorPickerCanvas.sass +2 -1
  44. package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -4
  45. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  46. package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
  47. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  48. package/lib/components/VColorPicker/util/index.mjs +2 -5
  49. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  50. package/lib/components/VCombobox/index.d.ts +117 -6
  51. package/lib/components/VCounter/index.d.ts +24 -0
  52. package/lib/components/VDefaultsProvider/index.d.ts +6 -0
  53. package/lib/components/VDialog/index.d.ts +64 -1
  54. package/lib/components/VDivider/index.d.ts +6 -0
  55. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  56. package/lib/components/VExpansionPanel/index.d.ts +49 -12
  57. package/lib/components/VField/index.d.ts +20 -6
  58. package/lib/components/VFileInput/index.d.ts +43 -1
  59. package/lib/components/VFooter/index.d.ts +7 -1
  60. package/lib/components/VForm/index.d.ts +6 -0
  61. package/lib/components/VGrid/index.d.ts +24 -0
  62. package/lib/components/VHover/index.d.ts +12 -0
  63. package/lib/components/VIcon/index.d.ts +12 -0
  64. package/lib/components/VImg/index.d.ts +12 -0
  65. package/lib/components/VInput/index.d.ts +12 -0
  66. package/lib/components/VItemGroup/index.d.ts +12 -0
  67. package/lib/components/VKbd/index.d.ts +6 -0
  68. package/lib/components/VLabel/index.d.ts +6 -0
  69. package/lib/components/VLayout/index.d.ts +12 -0
  70. package/lib/components/VLazy/index.d.ts +6 -0
  71. package/lib/components/VList/index.d.ts +77 -6
  72. package/lib/components/VLocaleProvider/index.d.ts +6 -0
  73. package/lib/components/VMain/index.d.ts +6 -0
  74. package/lib/components/VMenu/index.d.ts +64 -1
  75. package/lib/components/VMessages/index.d.ts +24 -0
  76. package/lib/components/VNavigationDrawer/index.d.ts +12 -0
  77. package/lib/components/VNoSsr/index.d.ts +6 -0
  78. package/lib/components/VOverlay/index.d.ts +18 -0
  79. package/lib/components/VOverlay/scrollStrategies.mjs +1 -1
  80. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  81. package/lib/components/VPagination/index.d.ts +14 -0
  82. package/lib/components/VParallax/index.d.ts +12 -0
  83. package/lib/components/VProgressCircular/index.d.ts +6 -0
  84. package/lib/components/VProgressLinear/index.d.ts +12 -0
  85. package/lib/components/VRadio/index.d.ts +16 -0
  86. package/lib/components/VRadioGroup/index.d.ts +22 -0
  87. package/lib/components/VRangeSlider/index.d.ts +16 -0
  88. package/lib/components/VRating/index.d.ts +8 -0
  89. package/lib/components/VResponsive/index.d.ts +8 -0
  90. package/lib/components/VSelect/index.d.ts +183 -6
  91. package/lib/components/VSelectionControl/index.d.ts +14 -6
  92. package/lib/components/VSelectionControlGroup/index.d.ts +6 -0
  93. package/lib/components/VSheet/VSheet.mjs +22 -12
  94. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  95. package/lib/components/VSheet/index.d.ts +7 -1
  96. package/lib/components/VSlideGroup/index.d.ts +26 -0
  97. package/lib/components/VSlider/index.d.ts +16 -0
  98. package/lib/components/VSnackbar/index.d.ts +44 -1
  99. package/lib/components/VSwitch/index.d.ts +22 -0
  100. package/lib/components/VSystemBar/VSystemBar.css +5 -1
  101. package/lib/components/VSystemBar/VSystemBar.sass +5 -1
  102. package/lib/components/VSystemBar/_variables.scss +4 -1
  103. package/lib/components/VSystemBar/index.d.ts +6 -0
  104. package/lib/components/VTable/index.d.ts +12 -0
  105. package/lib/components/VTabs/index.d.ts +12 -0
  106. package/lib/components/VTextField/index.d.ts +54 -6
  107. package/lib/components/VTextarea/index.d.ts +39 -1
  108. package/lib/components/VThemeProvider/index.d.ts +6 -0
  109. package/lib/components/VTimeline/index.d.ts +16 -0
  110. package/lib/components/VToolbar/index.d.ts +30 -0
  111. package/lib/components/VTooltip/index.d.ts +46 -1
  112. package/lib/components/VValidation/index.d.ts +6 -0
  113. package/lib/components/VWindow/index.d.ts +34 -0
  114. package/lib/components/index.d.ts +1918 -67
  115. package/lib/components/transitions/index.d.ts +96 -0
  116. package/lib/composables/nested/nested.mjs +2 -2
  117. package/lib/composables/nested/nested.mjs.map +1 -1
  118. package/lib/composables/nested/selectStrategies.mjs +7 -1
  119. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  120. package/lib/composables/proxiedModel.mjs +1 -1
  121. package/lib/composables/proxiedModel.mjs.map +1 -1
  122. package/lib/composables/resizeObserver.mjs.map +1 -1
  123. package/lib/composables/theme.mjs +21 -13
  124. package/lib/composables/theme.mjs.map +1 -1
  125. package/lib/entry-bundler.mjs +1 -1
  126. package/lib/framework.mjs +1 -1
  127. package/lib/index.d.ts +9 -9
  128. package/lib/labs/VDataTable/VDataTableRows.mjs +4 -6
  129. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  130. package/lib/labs/VDataTable/VDataTableServer.mjs +2 -2
  131. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  132. package/lib/labs/VDataTable/index.d.ts +1503 -48
  133. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +18 -5
  134. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  135. package/lib/labs/VVirtualScroll/index.d.ts +9 -6
  136. package/lib/labs/components.d.ts +1512 -54
  137. package/lib/util/colorUtils.mjs +4 -5
  138. package/lib/util/colorUtils.mjs.map +1 -1
  139. package/lib/util/defineComponent.mjs.map +1 -1
  140. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.1.5
2
+ * Vuetify v3.1.7
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -784,11 +784,12 @@
784
784
  b,
785
785
  a
786
786
  } = _ref2;
787
- return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : 'FF'].join('')}`;
787
+ return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : ''].join('')}`;
788
788
  }
789
789
  function HexToRGB(hex) {
790
+ hex = parseHex(hex);
790
791
  let [r, g, b, a] = chunk(hex, 2).map(c => parseInt(c, 16));
791
- a = a === undefined ? a : Math.round(a / 255 * 100) / 100;
792
+ a = a === undefined ? a : a / 255;
792
793
  return {
793
794
  r,
794
795
  g,
@@ -811,9 +812,7 @@
811
812
  if (hex.length === 3 || hex.length === 4) {
812
813
  hex = hex.split('').map(x => x + x).join('');
813
814
  }
814
- if (hex.length === 6) {
815
- hex = padEnd(hex, 8, 'F');
816
- } else {
815
+ if (hex.length !== 6) {
817
816
  hex = padEnd(padEnd(hex, 6), 8, 'F');
818
817
  }
819
818
  return hex;
@@ -1703,22 +1702,30 @@
1703
1702
  lines.push(...bgLines, ...fgLines);
1704
1703
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
1705
1704
  });
1705
+ function getHead() {
1706
+ return {
1707
+ style: [{
1708
+ children: styles.value,
1709
+ id: 'vuetify-theme-stylesheet',
1710
+ nonce: parsedOptions.cspNonce || false
1711
+ }]
1712
+ };
1713
+ }
1706
1714
  function install(app) {
1707
1715
  const head = app._context.provides.usehead;
1708
1716
  if (head) {
1709
- head.addHeadObjs(vue.computed(() => {
1710
- const style = {
1711
- children: styles.value,
1712
- type: 'text/css',
1713
- id: 'vuetify-theme-stylesheet'
1714
- };
1715
- if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce;
1716
- return {
1717
- style: [style]
1718
- };
1719
- }));
1720
- if (IN_BROWSER) {
1721
- vue.watchEffect(() => head.updateDOM());
1717
+ if (head.push) {
1718
+ const entry = head.push(getHead);
1719
+ vue.watch(styles, () => {
1720
+ entry.patch(getHead);
1721
+ });
1722
+ } else {
1723
+ if (IN_BROWSER) {
1724
+ head.addHeadObjs(vue.computed(getHead));
1725
+ vue.watchEffect(() => head.updateDOM());
1726
+ } else {
1727
+ head.addHeadObjs(getHead());
1728
+ }
1722
1729
  }
1723
1730
  } else {
1724
1731
  let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;
@@ -1820,7 +1827,7 @@
1820
1827
  });
1821
1828
  const model = vue.computed({
1822
1829
  get() {
1823
- return transformIn(vue.toRaw(isControlled.value ? props[prop] : internal.value));
1830
+ return transformIn(isControlled.value ? props[prop] : internal.value);
1824
1831
  },
1825
1832
  set(internalValue) {
1826
1833
  const newValue = transformOut(internalValue);
@@ -7076,7 +7083,6 @@
7076
7083
  };
7077
7084
 
7078
7085
  /* eslint-disable sonarjs/no-identical-functions */
7079
-
7080
7086
  const independentSelectStrategy = mandatory => {
7081
7087
  const strategy = {
7082
7088
  select: _ref => {
@@ -7085,6 +7091,8 @@
7085
7091
  value,
7086
7092
  selected
7087
7093
  } = _ref;
7094
+ id = vue.toRaw(id);
7095
+
7088
7096
  // When mandatory and we're trying to deselect when id
7089
7097
  // is the only currently selected item then do nothing
7090
7098
  if (mandatory && !value) {
@@ -7129,6 +7137,7 @@
7129
7137
  id,
7130
7138
  ...rest
7131
7139
  } = _ref3;
7140
+ id = vue.toRaw(id);
7132
7141
  const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();
7133
7142
  return parentStrategy.select({
7134
7143
  ...rest,
@@ -7159,6 +7168,7 @@
7159
7168
  children,
7160
7169
  ...rest
7161
7170
  } = _ref4;
7171
+ id = vue.toRaw(id);
7162
7172
  if (children.has(id)) return selected;
7163
7173
  return parentStrategy.select({
7164
7174
  id,
@@ -7182,6 +7192,7 @@
7182
7192
  children,
7183
7193
  ...rest
7184
7194
  } = _ref5;
7195
+ id = vue.toRaw(id);
7185
7196
  if (children.has(id)) return selected;
7186
7197
  return parentStrategy.select({
7187
7198
  id,
@@ -7205,6 +7216,7 @@
7205
7216
  children,
7206
7217
  parents
7207
7218
  } = _ref6;
7219
+ id = vue.toRaw(id);
7208
7220
  const original = new Map(selected);
7209
7221
  const items = [id];
7210
7222
  while (items.length) {
@@ -7426,7 +7438,7 @@
7426
7438
  isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
7427
7439
  parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
7428
7440
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
7429
- isSelected: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
7441
+ isSelected: vue.computed(() => parent.root.selected.value.get(vue.toRaw(computedId.value)) === 'on'),
7430
7442
  isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
7431
7443
  isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value)),
7432
7444
  isGroupActivator: parent.isGroupActivator
@@ -9069,7 +9081,7 @@
9069
9081
  });
9070
9082
  });
9071
9083
  vue.onScopeDispose(() => {
9072
- cancelIdleCallback(ric);
9084
+ typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);
9073
9085
  cancelAnimationFrame(raf);
9074
9086
  });
9075
9087
  }
@@ -11705,6 +11717,19 @@
11705
11717
  };
11706
11718
  });
11707
11719
  const canvasRef = vue.ref();
11720
+ const canvasWidth = vue.ref(parseFloat(props.width));
11721
+ const canvasHeight = vue.ref(parseFloat(props.height));
11722
+ const {
11723
+ resizeRef
11724
+ } = useResizeObserver(entries => {
11725
+ if (!resizeRef.value?.offsetParent) return;
11726
+ const {
11727
+ width,
11728
+ height
11729
+ } = entries[0].contentRect;
11730
+ canvasWidth.value = width;
11731
+ canvasHeight.value = height;
11732
+ });
11708
11733
  function updateDotPosition(x, y, rect) {
11709
11734
  const {
11710
11735
  left,
@@ -11749,18 +11774,14 @@
11749
11774
  return;
11750
11775
  }
11751
11776
  if (!canvasRef.value) return;
11752
- const {
11753
- width,
11754
- height
11755
- } = canvasRef.value.getBoundingClientRect();
11756
11777
  const {
11757
11778
  x,
11758
11779
  y
11759
11780
  } = dotPosition.value;
11760
11781
  emit('update:color', {
11761
11782
  h: props.color?.h ?? 0,
11762
- s: clamp(x, 0, width) / width,
11763
- v: 1 - clamp(y, 0, height) / height,
11783
+ s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
11784
+ v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,
11764
11785
  a: props.color?.a ?? 1
11765
11786
  });
11766
11787
  });
@@ -11783,16 +11804,27 @@
11783
11804
  vue.watch(() => props.color?.h, updateCanvas, {
11784
11805
  immediate: true
11785
11806
  });
11807
+ vue.watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {
11808
+ updateCanvas();
11809
+ dotPosition.value = {
11810
+ x: dotPosition.value.x * newVal[0] / oldVal[0],
11811
+ y: dotPosition.value.y * newVal[1] / oldVal[1]
11812
+ };
11813
+ }, {
11814
+ flush: 'post'
11815
+ });
11786
11816
  vue.watch(() => props.color, () => {
11787
11817
  if (isInteracting.value) {
11788
11818
  isInteracting.value = false;
11789
11819
  return;
11790
11820
  }
11791
- if (!props.color) return;
11792
11821
  isOutsideUpdate.value = true;
11793
- dotPosition.value = {
11794
- x: props.color.s * parseInt(props.width, 10),
11795
- y: (1 - props.color.v) * parseInt(props.height, 10)
11822
+ dotPosition.value = props.color ? {
11823
+ x: props.color.s * canvasWidth.value,
11824
+ y: (1 - props.color.v) * canvasHeight.value
11825
+ } : {
11826
+ x: 0,
11827
+ y: 0
11796
11828
  };
11797
11829
  }, {
11798
11830
  deep: true,
@@ -11800,19 +11832,16 @@
11800
11832
  });
11801
11833
  vue.onMounted(() => updateCanvas());
11802
11834
  useRender(() => vue.createVNode("div", {
11835
+ "ref": resizeRef,
11803
11836
  "class": "v-color-picker-canvas",
11804
- "style": {
11805
- width: convertToUnit(props.width),
11806
- height: convertToUnit(props.height)
11807
- },
11808
11837
  "onClick": handleClick,
11809
11838
  "onMousedown": handleMouseDown,
11810
11839
  "onTouchstart": handleMouseDown
11811
11840
  }, [vue.createVNode("canvas", {
11812
11841
  "ref": canvasRef,
11813
- "width": props.width,
11814
- "height": props.height
11815
- }, null), vue.createVNode("div", {
11842
+ "width": canvasWidth.value,
11843
+ "height": canvasHeight.value
11844
+ }, null), props.color && vue.createVNode("div", {
11816
11845
  "class": ['v-color-picker-canvas__dot', {
11817
11846
  'v-color-picker-canvas__dot--disabled': props.disabled
11818
11847
  }],
@@ -11845,10 +11874,7 @@
11845
11874
  hsva = color;
11846
11875
  }
11847
11876
  }
11848
- return hsva != null ? {
11849
- ...hsva,
11850
- a: hsva.a ?? 1
11851
- } : null;
11877
+ return hsva;
11852
11878
  }
11853
11879
  function stripAlpha(color, stripAlpha) {
11854
11880
  if (stripAlpha) {
@@ -11868,7 +11894,7 @@
11868
11894
  if (typeof input === 'object') {
11869
11895
  let converted;
11870
11896
  if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;
11871
- return stripAlpha(converted, !has(input, ['a']));
11897
+ return stripAlpha(converted, !has(input, ['a']) && color.a === 1);
11872
11898
  }
11873
11899
  return color;
11874
11900
  }
@@ -12059,7 +12085,7 @@
12059
12085
  const inputs = vue.computed(() => {
12060
12086
  const mode = enabledModes.value.find(m => m.name === props.mode);
12061
12087
  if (!mode) return [];
12062
- const color = props.color ? mode.to(props.color) : {};
12088
+ const color = props.color ? mode.to(props.color) : null;
12063
12089
  return mode.inputs?.map(_ref3 => {
12064
12090
  let {
12065
12091
  getValue,
@@ -12070,11 +12096,11 @@
12070
12096
  ...mode.inputProps,
12071
12097
  ...inputProps,
12072
12098
  disabled: props.disabled,
12073
- value: getValue(color),
12099
+ value: color && getValue(color),
12074
12100
  onChange: e => {
12075
12101
  const target = e.target;
12076
12102
  if (!target) return;
12077
- emit('update:color', mode.from(getColor(color, target.value)));
12103
+ emit('update:color', mode.from(getColor(color ?? nullColor, target.value)));
12078
12104
  }
12079
12105
  };
12080
12106
  });
@@ -12773,12 +12799,12 @@
12773
12799
  "hideDetails": true
12774
12800
  }, null), !props.hideAlpha && vue.createVNode(VSlider, {
12775
12801
  "class": "v-color-picker-preview__track v-color-picker-preview__alpha",
12776
- "modelValue": props.color?.a,
12802
+ "modelValue": props.color?.a ?? 1,
12777
12803
  "onUpdate:modelValue": a => emit('update:color', {
12778
12804
  ...(props.color ?? nullColor),
12779
12805
  a
12780
12806
  }),
12781
- "step": 0,
12807
+ "step": 1 / 256,
12782
12808
  "min": 0,
12783
12809
  "max": 1,
12784
12810
  "disabled": props.disabled,
@@ -13163,18 +13189,23 @@
13163
13189
  }
13164
13190
  });
13165
13191
 
13192
+ // Types
13193
+
13194
+ const makeVSheetProps = propsFactory({
13195
+ color: String,
13196
+ ...makeBorderProps(),
13197
+ ...makeDimensionProps(),
13198
+ ...makeElevationProps(),
13199
+ ...makeLocationProps(),
13200
+ ...makePositionProps(),
13201
+ ...makeRoundedProps(),
13202
+ ...makeTagProps(),
13203
+ ...makeThemeProps()
13204
+ }, 'v-sheet');
13166
13205
  const VSheet = genericComponent()({
13167
13206
  name: 'VSheet',
13168
13207
  props: {
13169
- color: String,
13170
- ...makeBorderProps(),
13171
- ...makeDimensionProps(),
13172
- ...makeElevationProps(),
13173
- ...makeLocationProps(),
13174
- ...makePositionProps(),
13175
- ...makeRoundedProps(),
13176
- ...makeTagProps(),
13177
- ...makeThemeProps()
13208
+ ...makeVSheetProps()
13178
13209
  },
13179
13210
  setup(props, _ref) {
13180
13211
  let {
@@ -13205,10 +13236,11 @@
13205
13236
  const {
13206
13237
  roundedClasses
13207
13238
  } = useRounded(props);
13208
- return () => vue.createVNode(props.tag, {
13239
+ useRender(() => vue.createVNode(props.tag, {
13209
13240
  "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
13210
13241
  "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
13211
- }, slots);
13242
+ }, slots));
13243
+ return {};
13212
13244
  }
13213
13245
  });
13214
13246
 
@@ -13285,6 +13317,13 @@
13285
13317
  vue.onMounted(() => {
13286
13318
  if (!props.modes.includes(mode.value)) mode.value = props.modes[0];
13287
13319
  });
13320
+ provideDefaults({
13321
+ VSlider: {
13322
+ color: undefined,
13323
+ trackColor: undefined,
13324
+ trackFillColor: undefined
13325
+ }
13326
+ });
13288
13327
  useRender(() => vue.createVNode(VSheet, {
13289
13328
  "rounded": props.rounded,
13290
13329
  "elevation": props.elevation,
@@ -18725,7 +18764,7 @@
18725
18764
  "item": item
18726
18765
  }, slots);
18727
18766
  }
18728
- return vue.createVNode(vue.Fragment, null, [slots.item ? slots.item({
18767
+ const slotProps = {
18729
18768
  index,
18730
18769
  item,
18731
18770
  columns: columns.value,
@@ -18733,7 +18772,8 @@
18733
18772
  toggleExpand,
18734
18773
  isSelected,
18735
18774
  toggleSelect
18736
- }) : vue.createVNode(VDataTableRow, {
18775
+ };
18776
+ return vue.createVNode(vue.Fragment, null, [slots.item ? slots.item(slotProps) : vue.createVNode(VDataTableRow, {
18737
18777
  "key": `item_${item.value}`,
18738
18778
  "onClick": event => {
18739
18779
  if (expandOnClick.value) {
@@ -18744,10 +18784,7 @@
18744
18784
  });
18745
18785
  },
18746
18786
  "item": item
18747
- }, slots), isExpanded(item) && slots['expanded-row']?.({
18748
- item,
18749
- columns: columns.value
18750
- })]);
18787
+ }, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
18751
18788
  })]));
18752
18789
  return {};
18753
18790
  }
@@ -19448,7 +19485,7 @@
19448
19485
  "sticky": props.fixedHeader,
19449
19486
  "loading": props.loading,
19450
19487
  "color": props.color
19451
- }, null)]), slots.thead?.(), vue.createVNode("tbody", {
19488
+ }, slots)]), slots.thead?.(), vue.createVNode("tbody", {
19452
19489
  "class": "v-data-table__tbody",
19453
19490
  "role": "rowgroup"
19454
19491
  }, [slots.body ? slots.body() : vue.createVNode(VDataTableRows, {
@@ -19533,13 +19570,15 @@
19533
19570
  resizeRef.value = rootEl.value;
19534
19571
  });
19535
19572
  const display = useDisplay();
19536
- const sizes = createRange(props.items.length).map(() => itemHeight.value);
19573
+ const sizeMap = new Map();
19574
+ let sizes = createRange(props.items.length).map(() => itemHeight.value);
19537
19575
  const visibleItems = vue.computed(() => {
19538
19576
  return props.visibleItems ? parseInt(props.visibleItems, 10) : Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
19539
19577
  });
19540
19578
  function handleItemResize(index, height) {
19541
19579
  itemHeight.value = Math.max(itemHeight.value, height);
19542
19580
  sizes[index] = height;
19581
+ sizeMap.set(props.items[index], height);
19543
19582
  }
19544
19583
  function calculateOffset(index) {
19545
19584
  return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
@@ -19569,9 +19608,9 @@
19569
19608
  const midPointIndex = calculateMidPointIndex(scrollTop + height / 2);
19570
19609
  const buffer = Math.round(visibleItems.value / 3);
19571
19610
  if (direction === UP && midPointIndex <= first.value + buffer * 2 - 1) {
19572
- first.value = Math.max(midPointIndex - buffer, 0);
19611
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length);
19573
19612
  } else if (direction === DOWN && midPointIndex >= first.value + buffer * 2 - 1) {
19574
- first.value = Math.min(Math.max(0, midPointIndex - buffer), props.items.length - visibleItems.value);
19613
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length - visibleItems.value);
19575
19614
  }
19576
19615
  lastScrollTop = rootEl.value.scrollTop;
19577
19616
  }
@@ -19593,6 +19632,17 @@
19593
19632
  itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / visibleItems.value;
19594
19633
  }
19595
19634
  });
19635
+ vue.watch(() => props.items.length, () => {
19636
+ sizes = createRange(props.items.length).map(() => itemHeight.value);
19637
+ sizeMap.forEach((height, item) => {
19638
+ const index = props.items.indexOf(item);
19639
+ if (index === -1) {
19640
+ sizeMap.delete(item);
19641
+ } else {
19642
+ sizes[index] = height;
19643
+ }
19644
+ });
19645
+ });
19596
19646
  useRender(() => vue.createVNode("div", {
19597
19647
  "ref": rootEl,
19598
19648
  "class": "v-virtual-scroll",
@@ -19971,7 +20021,7 @@
19971
20021
  locale
19972
20022
  };
19973
20023
  }
19974
- const version$1 = "3.1.5";
20024
+ const version$1 = "3.1.7";
19975
20025
  createVuetify$1.version = version$1;
19976
20026
 
19977
20027
  // Vue's inject() can only be used in setup
@@ -19983,7 +20033,7 @@
19983
20033
  }
19984
20034
  }
19985
20035
 
19986
- const version = "3.1.5";
20036
+ const version = "3.1.7";
19987
20037
 
19988
20038
  const createVuetify = function () {
19989
20039
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};