@vuetify/nightly 3.8.7-dev.2025-05-27 → 3.8.7-dev.2025-06-03

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 (91) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/dist/json/attributes.json +3213 -3189
  3. package/dist/json/importMap-labs.json +20 -20
  4. package/dist/json/importMap.json +176 -176
  5. package/dist/json/tags.json +6 -0
  6. package/dist/json/web-types.json +5962 -5902
  7. package/dist/vuetify-labs.cjs +52 -19
  8. package/dist/vuetify-labs.css +5727 -5721
  9. package/dist/vuetify-labs.d.ts +677 -402
  10. package/dist/vuetify-labs.esm.js +52 -19
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +52 -19
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +52 -19
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +4233 -4227
  17. package/dist/vuetify.d.ts +621 -378
  18. package/dist/vuetify.esm.js +52 -19
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +52 -19
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +29 -24
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAppBar/VAppBar.d.ts +15 -3
  26. package/lib/components/VAppBar/VAppBarNavIcon.d.ts +20 -10
  27. package/lib/components/VAutocomplete/VAutocomplete.d.ts +21 -7
  28. package/lib/components/VAutocomplete/VAutocomplete.js +2 -1
  29. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  30. package/lib/components/VBtn/VBtn.d.ts +20 -10
  31. package/lib/components/VCard/VCard.d.ts +20 -10
  32. package/lib/components/VCheckbox/VCheckbox.d.ts +20 -10
  33. package/lib/components/VCheckbox/VCheckboxBtn.d.ts +20 -10
  34. package/lib/components/VChip/VChip.d.ts +20 -10
  35. package/lib/components/VCombobox/VCombobox.d.ts +21 -7
  36. package/lib/components/VCombobox/VCombobox.js +2 -1
  37. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  38. package/lib/components/VDataTable/VDataTable.d.ts +42 -0
  39. package/lib/components/VDataTable/VDataTableServer.d.ts +29 -0
  40. package/lib/components/VDataTable/VDataTableVirtual.d.ts +29 -0
  41. package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +20 -10
  42. package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +20 -10
  43. package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +20 -10
  44. package/lib/components/VFab/VFab.d.ts +20 -10
  45. package/lib/components/VList/VList.d.ts +13 -0
  46. package/lib/components/VList/VList.js +4 -1
  47. package/lib/components/VList/VList.js.map +1 -1
  48. package/lib/components/VList/VListItem.d.ts +23 -10
  49. package/lib/components/VList/VListItem.js +7 -3
  50. package/lib/components/VList/VListItem.js.map +1 -1
  51. package/lib/components/VList/list.d.ts +9 -2
  52. package/lib/components/VList/list.js +7 -0
  53. package/lib/components/VList/list.js.map +1 -1
  54. package/lib/components/VRadio/VRadio.d.ts +20 -10
  55. package/lib/components/VRadioGroup/VRadioGroup.d.ts +20 -10
  56. package/lib/components/VSelect/VSelect.d.ts +33 -11
  57. package/lib/components/VSelectionControl/VSelectionControl.d.ts +20 -10
  58. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +28 -14
  59. package/lib/components/VSlider/VSliderThumb.d.ts +20 -10
  60. package/lib/components/VStepper/VStepperItem.d.ts +28 -14
  61. package/lib/components/VSwitch/VSwitch.d.ts +20 -10
  62. package/lib/components/VTable/VTable.css +6 -0
  63. package/lib/components/VTable/VTable.d.ts +55 -24
  64. package/lib/components/VTable/VTable.js +9 -2
  65. package/lib/components/VTable/VTable.js.map +1 -1
  66. package/lib/components/VTable/VTable.sass +14 -0
  67. package/lib/components/VTable/_variables.scss +1 -0
  68. package/lib/components/VTabs/VTab.d.ts +56 -28
  69. package/lib/components/VToolbar/VToolbar.d.ts +15 -3
  70. package/lib/components/VToolbar/VToolbar.js +6 -3
  71. package/lib/components/VToolbar/VToolbar.js.map +1 -1
  72. package/lib/composables/date/DateAdapter.d.ts +2 -2
  73. package/lib/composables/date/DateAdapter.js.map +1 -1
  74. package/lib/composables/date/adapters/string.d.ts +54 -0
  75. package/lib/composables/date/adapters/string.js +153 -0
  76. package/lib/composables/date/adapters/string.js.map +1 -0
  77. package/lib/composables/date/date.d.ts +2 -2
  78. package/lib/directives/ripple/index.d.ts +2 -1
  79. package/lib/directives/ripple/index.js +12 -7
  80. package/lib/directives/ripple/index.js.map +1 -1
  81. package/lib/entry-bundler.d.ts +2 -2
  82. package/lib/entry-bundler.js +1 -1
  83. package/lib/framework.d.ts +75 -65
  84. package/lib/framework.js +1 -1
  85. package/lib/labs/VFileUpload/VFileUploadItem.d.ts +20 -10
  86. package/lib/labs/VStepperVertical/VStepperVertical.d.ts +20 -10
  87. package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +20 -10
  88. package/lib/labs/VTreeview/VTreeview.d.ts +13 -0
  89. package/lib/labs/VTreeview/VTreeviewItem.d.ts +20 -10
  90. package/lib/labs/entry-bundler.d.ts +2 -2
  91. package/package.json +1 -1
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.7-dev.2025-05-27
2
+ * Vuetify v3.8.7-dev.2025-06-03
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -4290,7 +4290,10 @@
4290
4290
  default: 'default',
4291
4291
  validator: v => allowedDensities$1.includes(v)
4292
4292
  },
4293
- extended: Boolean,
4293
+ extended: {
4294
+ type: Boolean,
4295
+ default: null
4296
+ },
4294
4297
  extensionHeight: {
4295
4298
  type: [Number, String],
4296
4299
  default: 48
@@ -4338,7 +4341,7 @@
4338
4341
  const {
4339
4342
  rtlClasses
4340
4343
  } = useRtl();
4341
- const isExtended = vue.shallowRef(!!(props.extended || slots.extension?.()));
4344
+ const isExtended = vue.shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
4342
4345
  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));
4343
4346
  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);
4344
4347
  provideDefaults({
@@ -4350,7 +4353,7 @@
4350
4353
  const hasTitle = !!(props.title || slots.title);
4351
4354
  const hasImage = !!(slots.image || props.image);
4352
4355
  const extension = slots.extension?.();
4353
- isExtended.value = !!(props.extended || extension);
4356
+ isExtended.value = props.extended === null ? !!extension : props.extended;
4354
4357
  return vue.createVNode(props.tag, {
4355
4358
  "class": vue.normalizeClass(['v-toolbar', {
4356
4359
  'v-toolbar--absolute': props.absolute,
@@ -5908,8 +5911,8 @@
5908
5911
  window.clearTimeout(element._ripple.showTimer);
5909
5912
  }
5910
5913
  let keyboardRipple = false;
5911
- function keyboardRippleShow(e) {
5912
- if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
5914
+ function keyboardRippleShow(e, keys) {
5915
+ if (!keyboardRipple && keys.includes(e.keyCode)) {
5913
5916
  keyboardRipple = true;
5914
5917
  rippleShow(e);
5915
5918
  }
@@ -5937,9 +5940,12 @@
5937
5940
  el._ripple.enabled = enabled;
5938
5941
  el._ripple.centered = modifiers.center;
5939
5942
  el._ripple.circle = modifiers.circle;
5940
- if (isObject(value) && value.class) {
5941
- el._ripple.class = value.class;
5943
+ const bindingValue = isObject(value) ? value : {};
5944
+ if (bindingValue.class) {
5945
+ el._ripple.class = bindingValue.class;
5942
5946
  }
5947
+ const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
5948
+ el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
5943
5949
  if (enabled && !wasEnabled) {
5944
5950
  if (modifiers.stop) {
5945
5951
  el.addEventListener('touchstart', rippleStop, {
@@ -5961,7 +5967,7 @@
5961
5967
  el.addEventListener('mousedown', rippleShow);
5962
5968
  el.addEventListener('mouseup', rippleHide);
5963
5969
  el.addEventListener('mouseleave', rippleHide);
5964
- el.addEventListener('keydown', keyboardRippleShow);
5970
+ el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
5965
5971
  el.addEventListener('keyup', keyboardRippleHide);
5966
5972
  el.addEventListener('blur', focusRippleHide);
5967
5973
 
@@ -5981,7 +5987,9 @@
5981
5987
  el.removeEventListener('touchcancel', rippleHide);
5982
5988
  el.removeEventListener('mouseup', rippleHide);
5983
5989
  el.removeEventListener('mouseleave', rippleHide);
5984
- el.removeEventListener('keydown', keyboardRippleShow);
5990
+ if (el._ripple?.keyDownHandler) {
5991
+ el.removeEventListener('keydown', el._ripple.keyDownHandler);
5992
+ }
5985
5993
  el.removeEventListener('keyup', keyboardRippleHide);
5986
5994
  el.removeEventListener('dragstart', rippleHide);
5987
5995
  el.removeEventListener('blur', focusRippleHide);
@@ -5990,8 +5998,8 @@
5990
5998
  updateRipple(el, binding, false);
5991
5999
  }
5992
6000
  function unmounted$4(el) {
5993
- delete el._ripple;
5994
6001
  removeListeners(el);
6002
+ delete el._ripple;
5995
6003
  }
5996
6004
  function updated$1(el, binding) {
5997
6005
  if (binding.value === binding.oldValue) {
@@ -8702,11 +8710,18 @@
8702
8710
  // List
8703
8711
  const ListKey = Symbol.for('vuetify:list');
8704
8712
  function createList() {
8713
+ let {
8714
+ filterable
8715
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
8716
+ filterable: false
8717
+ };
8705
8718
  const parent = vue.inject(ListKey, {
8719
+ filterable: false,
8706
8720
  hasPrepend: vue.shallowRef(false),
8707
8721
  updateHasPrepend: () => null
8708
8722
  });
8709
8723
  const data = {
8724
+ filterable: parent.filterable || filterable,
8710
8725
  hasPrepend: vue.shallowRef(false),
8711
8726
  updateHasPrepend: value => {
8712
8727
  if (value) data.hasPrepend.value = value;
@@ -9658,6 +9673,9 @@
9658
9673
  roundedClasses
9659
9674
  } = useRounded(roundedProps);
9660
9675
  const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9676
+ const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
9677
+ keys: [keyCodes.enter]
9678
+ } : props.ripple);
9661
9679
  const slotProps = vue.computed(() => ({
9662
9680
  isActive: isActive.value,
9663
9681
  select,
@@ -9682,8 +9700,9 @@
9682
9700
  function onKeyDown(e) {
9683
9701
  const target = e.target;
9684
9702
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9685
- if (e.key === 'Enter' || e.key === ' ') {
9703
+ if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
9686
9704
  e.preventDefault();
9705
+ e.stopPropagation();
9687
9706
  e.target.dispatchEvent(new MouseEvent('click', e));
9688
9707
  }
9689
9708
  }
@@ -9793,7 +9812,7 @@
9793
9812
  }), vue.createElementVNode("div", {
9794
9813
  "class": "v-list-item__spacer"
9795
9814
  }, null)])]
9796
- }), [[Ripple, isClickable.value && props.ripple]]);
9815
+ }), [[Ripple, isClickable.value && rippleOptions.value]]);
9797
9816
  });
9798
9817
  return {
9799
9818
  activate,
@@ -10116,6 +10135,7 @@
10116
10135
  activeClass: String,
10117
10136
  bgColor: String,
10118
10137
  disabled: Boolean,
10138
+ filterable: Boolean,
10119
10139
  expandIcon: IconValue,
10120
10140
  collapseIcon: IconValue,
10121
10141
  lines: {
@@ -10199,7 +10219,9 @@
10199
10219
  const activeColor = vue.toRef(() => props.activeColor);
10200
10220
  const baseColor = vue.toRef(() => props.baseColor);
10201
10221
  const color = vue.toRef(() => props.color);
10202
- createList();
10222
+ createList({
10223
+ filterable: props.filterable
10224
+ });
10203
10225
  provideDefaults({
10204
10226
  VListGroup: {
10205
10227
  activeColor,
@@ -13822,7 +13844,7 @@
13822
13844
  menu.value = !menu.value;
13823
13845
  }
13824
13846
  function onListKeydown(e) {
13825
- if (e.key !== ' ' && checkPrintable(e)) {
13847
+ if (checkPrintable(e) || e.key === 'Backspace') {
13826
13848
  vTextFieldRef.value?.focus();
13827
13849
  }
13828
13850
  }
@@ -14027,6 +14049,7 @@
14027
14049
  }, props.menuProps), {
14028
14050
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
14029
14051
  "ref": listRef,
14052
+ "filterable": true,
14030
14053
  "selected": selectedValues.value,
14031
14054
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
14032
14055
  "onMousedown": e => e.preventDefault(),
@@ -18565,7 +18588,7 @@
18565
18588
  menu.value = !menu.value;
18566
18589
  }
18567
18590
  function onListKeydown(e) {
18568
- if (e.key !== ' ' && checkPrintable(e)) {
18591
+ if (checkPrintable(e) || e.key === 'Backspace') {
18569
18592
  vTextFieldRef.value?.focus();
18570
18593
  }
18571
18594
  }
@@ -18770,6 +18793,7 @@
18770
18793
  }, props.menuProps), {
18771
18794
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
18772
18795
  "ref": listRef,
18796
+ "filterable": true,
18773
18797
  "selected": selectedValues.value,
18774
18798
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18775
18799
  "onMousedown": e => e.preventDefault(),
@@ -21256,11 +21280,18 @@
21256
21280
  }
21257
21281
  });
21258
21282
 
21283
+ // Types
21284
+
21259
21285
  const makeVTableProps = propsFactory({
21260
21286
  fixedHeader: Boolean,
21261
21287
  fixedFooter: Boolean,
21262
21288
  height: [Number, String],
21263
21289
  hover: Boolean,
21290
+ striped: {
21291
+ type: String,
21292
+ default: null,
21293
+ validator: v => ['even', 'odd'].includes(v)
21294
+ },
21264
21295
  ...makeComponentProps(),
21265
21296
  ...makeDensityProps(),
21266
21297
  ...makeTagProps(),
@@ -21287,7 +21318,9 @@
21287
21318
  'v-table--fixed-footer': props.fixedFooter,
21288
21319
  'v-table--has-top': !!slots.top,
21289
21320
  'v-table--has-bottom': !!slots.bottom,
21290
- 'v-table--hover': props.hover
21321
+ 'v-table--hover': props.hover,
21322
+ 'v-table--striped-even': props.striped === 'even',
21323
+ 'v-table--striped-odd': props.striped === 'odd'
21291
21324
  }, themeClasses.value, densityClasses.value, props.class]),
21292
21325
  "style": vue.normalizeStyle(props.style)
21293
21326
  }, {
@@ -29502,7 +29535,7 @@
29502
29535
  };
29503
29536
  });
29504
29537
  }
29505
- const version$1 = "3.8.7-dev.2025-05-27";
29538
+ const version$1 = "3.8.7-dev.2025-06-03";
29506
29539
  createVuetify$1.version = version$1;
29507
29540
 
29508
29541
  // Vue's inject() can only be used in setup
@@ -29527,7 +29560,7 @@
29527
29560
  ...options
29528
29561
  });
29529
29562
  };
29530
- const version = "3.8.7-dev.2025-05-27";
29563
+ const version = "3.8.7-dev.2025-06-03";
29531
29564
  createVuetify.version = version;
29532
29565
 
29533
29566
  exports.blueprints = index;