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

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 (70) hide show
  1. package/CHANGELOG.md +8 -3
  2. package/dist/json/attributes.json +1893 -1885
  3. package/dist/json/importMap-labs.json +34 -34
  4. package/dist/json/importMap.json +140 -140
  5. package/dist/json/tags.json +2 -0
  6. package/dist/json/web-types.json +3286 -3266
  7. package/dist/vuetify-labs.cjs +36 -15
  8. package/dist/vuetify-labs.css +5222 -5222
  9. package/dist/vuetify-labs.d.ts +401 -213
  10. package/dist/vuetify-labs.esm.js +36 -15
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +36 -15
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +36 -15
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +5419 -5419
  17. package/dist/vuetify.d.ts +345 -189
  18. package/dist/vuetify.esm.js +36 -15
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +36 -15
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +24 -19
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAppBar/VAppBarNavIcon.d.ts +20 -10
  26. package/lib/components/VAutocomplete/VAutocomplete.d.ts +21 -7
  27. package/lib/components/VAutocomplete/VAutocomplete.js +2 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  29. package/lib/components/VBtn/VBtn.d.ts +20 -10
  30. package/lib/components/VCard/VCard.d.ts +20 -10
  31. package/lib/components/VCheckbox/VCheckbox.d.ts +20 -10
  32. package/lib/components/VCheckbox/VCheckboxBtn.d.ts +20 -10
  33. package/lib/components/VChip/VChip.d.ts +20 -10
  34. package/lib/components/VCombobox/VCombobox.d.ts +21 -7
  35. package/lib/components/VCombobox/VCombobox.js +2 -1
  36. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  37. package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +20 -10
  38. package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +20 -10
  39. package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +20 -10
  40. package/lib/components/VFab/VFab.d.ts +20 -10
  41. package/lib/components/VList/VList.d.ts +13 -0
  42. package/lib/components/VList/VList.js +4 -1
  43. package/lib/components/VList/VList.js.map +1 -1
  44. package/lib/components/VList/VListItem.d.ts +23 -10
  45. package/lib/components/VList/VListItem.js +7 -3
  46. package/lib/components/VList/VListItem.js.map +1 -1
  47. package/lib/components/VList/list.d.ts +9 -2
  48. package/lib/components/VList/list.js +7 -0
  49. package/lib/components/VList/list.js.map +1 -1
  50. package/lib/components/VRadio/VRadio.d.ts +20 -10
  51. package/lib/components/VRadioGroup/VRadioGroup.d.ts +20 -10
  52. package/lib/components/VSelect/VSelect.d.ts +33 -11
  53. package/lib/components/VSelectionControl/VSelectionControl.d.ts +20 -10
  54. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +28 -14
  55. package/lib/components/VSlider/VSliderThumb.d.ts +20 -10
  56. package/lib/components/VStepper/VStepperItem.d.ts +28 -14
  57. package/lib/components/VSwitch/VSwitch.d.ts +20 -10
  58. package/lib/components/VTabs/VTab.d.ts +56 -28
  59. package/lib/directives/ripple/index.d.ts +2 -1
  60. package/lib/directives/ripple/index.js +12 -7
  61. package/lib/directives/ripple/index.js.map +1 -1
  62. package/lib/entry-bundler.js +1 -1
  63. package/lib/framework.d.ts +53 -53
  64. package/lib/framework.js +1 -1
  65. package/lib/labs/VFileUpload/VFileUploadItem.d.ts +20 -10
  66. package/lib/labs/VStepperVertical/VStepperVertical.d.ts +20 -10
  67. package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +20 -10
  68. package/lib/labs/VTreeview/VTreeview.d.ts +13 -0
  69. package/lib/labs/VTreeview/VTreeviewItem.d.ts +20 -10
  70. 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-05-30
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -5908,8 +5908,8 @@
5908
5908
  window.clearTimeout(element._ripple.showTimer);
5909
5909
  }
5910
5910
  let keyboardRipple = false;
5911
- function keyboardRippleShow(e) {
5912
- if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
5911
+ function keyboardRippleShow(e, keys) {
5912
+ if (!keyboardRipple && keys.includes(e.keyCode)) {
5913
5913
  keyboardRipple = true;
5914
5914
  rippleShow(e);
5915
5915
  }
@@ -5937,9 +5937,12 @@
5937
5937
  el._ripple.enabled = enabled;
5938
5938
  el._ripple.centered = modifiers.center;
5939
5939
  el._ripple.circle = modifiers.circle;
5940
- if (isObject(value) && value.class) {
5941
- el._ripple.class = value.class;
5940
+ const bindingValue = isObject(value) ? value : {};
5941
+ if (bindingValue.class) {
5942
+ el._ripple.class = bindingValue.class;
5942
5943
  }
5944
+ const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
5945
+ el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
5943
5946
  if (enabled && !wasEnabled) {
5944
5947
  if (modifiers.stop) {
5945
5948
  el.addEventListener('touchstart', rippleStop, {
@@ -5961,7 +5964,7 @@
5961
5964
  el.addEventListener('mousedown', rippleShow);
5962
5965
  el.addEventListener('mouseup', rippleHide);
5963
5966
  el.addEventListener('mouseleave', rippleHide);
5964
- el.addEventListener('keydown', keyboardRippleShow);
5967
+ el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
5965
5968
  el.addEventListener('keyup', keyboardRippleHide);
5966
5969
  el.addEventListener('blur', focusRippleHide);
5967
5970
 
@@ -5981,7 +5984,9 @@
5981
5984
  el.removeEventListener('touchcancel', rippleHide);
5982
5985
  el.removeEventListener('mouseup', rippleHide);
5983
5986
  el.removeEventListener('mouseleave', rippleHide);
5984
- el.removeEventListener('keydown', keyboardRippleShow);
5987
+ if (el._ripple?.keyDownHandler) {
5988
+ el.removeEventListener('keydown', el._ripple.keyDownHandler);
5989
+ }
5985
5990
  el.removeEventListener('keyup', keyboardRippleHide);
5986
5991
  el.removeEventListener('dragstart', rippleHide);
5987
5992
  el.removeEventListener('blur', focusRippleHide);
@@ -5990,8 +5995,8 @@
5990
5995
  updateRipple(el, binding, false);
5991
5996
  }
5992
5997
  function unmounted$4(el) {
5993
- delete el._ripple;
5994
5998
  removeListeners(el);
5999
+ delete el._ripple;
5995
6000
  }
5996
6001
  function updated$1(el, binding) {
5997
6002
  if (binding.value === binding.oldValue) {
@@ -8702,11 +8707,18 @@
8702
8707
  // List
8703
8708
  const ListKey = Symbol.for('vuetify:list');
8704
8709
  function createList() {
8710
+ let {
8711
+ filterable
8712
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
8713
+ filterable: false
8714
+ };
8705
8715
  const parent = vue.inject(ListKey, {
8716
+ filterable: false,
8706
8717
  hasPrepend: vue.shallowRef(false),
8707
8718
  updateHasPrepend: () => null
8708
8719
  });
8709
8720
  const data = {
8721
+ filterable: parent.filterable || filterable,
8710
8722
  hasPrepend: vue.shallowRef(false),
8711
8723
  updateHasPrepend: value => {
8712
8724
  if (value) data.hasPrepend.value = value;
@@ -9658,6 +9670,9 @@
9658
9670
  roundedClasses
9659
9671
  } = useRounded(roundedProps);
9660
9672
  const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9673
+ const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
9674
+ keys: [keyCodes.enter]
9675
+ } : props.ripple);
9661
9676
  const slotProps = vue.computed(() => ({
9662
9677
  isActive: isActive.value,
9663
9678
  select,
@@ -9682,8 +9697,9 @@
9682
9697
  function onKeyDown(e) {
9683
9698
  const target = e.target;
9684
9699
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9685
- if (e.key === 'Enter' || e.key === ' ') {
9700
+ if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
9686
9701
  e.preventDefault();
9702
+ e.stopPropagation();
9687
9703
  e.target.dispatchEvent(new MouseEvent('click', e));
9688
9704
  }
9689
9705
  }
@@ -9793,7 +9809,7 @@
9793
9809
  }), vue.createElementVNode("div", {
9794
9810
  "class": "v-list-item__spacer"
9795
9811
  }, null)])]
9796
- }), [[Ripple, isClickable.value && props.ripple]]);
9812
+ }), [[Ripple, isClickable.value && rippleOptions.value]]);
9797
9813
  });
9798
9814
  return {
9799
9815
  activate,
@@ -10116,6 +10132,7 @@
10116
10132
  activeClass: String,
10117
10133
  bgColor: String,
10118
10134
  disabled: Boolean,
10135
+ filterable: Boolean,
10119
10136
  expandIcon: IconValue,
10120
10137
  collapseIcon: IconValue,
10121
10138
  lines: {
@@ -10199,7 +10216,9 @@
10199
10216
  const activeColor = vue.toRef(() => props.activeColor);
10200
10217
  const baseColor = vue.toRef(() => props.baseColor);
10201
10218
  const color = vue.toRef(() => props.color);
10202
- createList();
10219
+ createList({
10220
+ filterable: props.filterable
10221
+ });
10203
10222
  provideDefaults({
10204
10223
  VListGroup: {
10205
10224
  activeColor,
@@ -13822,7 +13841,7 @@
13822
13841
  menu.value = !menu.value;
13823
13842
  }
13824
13843
  function onListKeydown(e) {
13825
- if (e.key !== ' ' && checkPrintable(e)) {
13844
+ if (checkPrintable(e) || e.key === 'Backspace') {
13826
13845
  vTextFieldRef.value?.focus();
13827
13846
  }
13828
13847
  }
@@ -14027,6 +14046,7 @@
14027
14046
  }, props.menuProps), {
14028
14047
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
14029
14048
  "ref": listRef,
14049
+ "filterable": true,
14030
14050
  "selected": selectedValues.value,
14031
14051
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
14032
14052
  "onMousedown": e => e.preventDefault(),
@@ -18565,7 +18585,7 @@
18565
18585
  menu.value = !menu.value;
18566
18586
  }
18567
18587
  function onListKeydown(e) {
18568
- if (e.key !== ' ' && checkPrintable(e)) {
18588
+ if (checkPrintable(e) || e.key === 'Backspace') {
18569
18589
  vTextFieldRef.value?.focus();
18570
18590
  }
18571
18591
  }
@@ -18770,6 +18790,7 @@
18770
18790
  }, props.menuProps), {
18771
18791
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
18772
18792
  "ref": listRef,
18793
+ "filterable": true,
18773
18794
  "selected": selectedValues.value,
18774
18795
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18775
18796
  "onMousedown": e => e.preventDefault(),
@@ -29502,7 +29523,7 @@
29502
29523
  };
29503
29524
  });
29504
29525
  }
29505
- const version$1 = "3.8.7-dev.2025-05-27";
29526
+ const version$1 = "3.8.7-dev.2025-05-30";
29506
29527
  createVuetify$1.version = version$1;
29507
29528
 
29508
29529
  // Vue's inject() can only be used in setup
@@ -29527,7 +29548,7 @@
29527
29548
  ...options
29528
29549
  });
29529
29550
  };
29530
- const version = "3.8.7-dev.2025-05-27";
29551
+ const version = "3.8.7-dev.2025-05-30";
29531
29552
  createVuetify.version = version;
29532
29553
 
29533
29554
  exports.blueprints = index;