@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
@@ -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
  */
@@ -5630,8 +5630,8 @@
5630
5630
  window.clearTimeout(element._ripple.showTimer);
5631
5631
  }
5632
5632
  let keyboardRipple = false;
5633
- function keyboardRippleShow(e) {
5634
- if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
5633
+ function keyboardRippleShow(e, keys) {
5634
+ if (!keyboardRipple && keys.includes(e.keyCode)) {
5635
5635
  keyboardRipple = true;
5636
5636
  rippleShow(e);
5637
5637
  }
@@ -5659,9 +5659,12 @@
5659
5659
  el._ripple.enabled = enabled;
5660
5660
  el._ripple.centered = modifiers.center;
5661
5661
  el._ripple.circle = modifiers.circle;
5662
- if (isObject(value) && value.class) {
5663
- el._ripple.class = value.class;
5662
+ const bindingValue = isObject(value) ? value : {};
5663
+ if (bindingValue.class) {
5664
+ el._ripple.class = bindingValue.class;
5664
5665
  }
5666
+ const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
5667
+ el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
5665
5668
  if (enabled && !wasEnabled) {
5666
5669
  if (modifiers.stop) {
5667
5670
  el.addEventListener('touchstart', rippleStop, {
@@ -5683,7 +5686,7 @@
5683
5686
  el.addEventListener('mousedown', rippleShow);
5684
5687
  el.addEventListener('mouseup', rippleHide);
5685
5688
  el.addEventListener('mouseleave', rippleHide);
5686
- el.addEventListener('keydown', keyboardRippleShow);
5689
+ el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
5687
5690
  el.addEventListener('keyup', keyboardRippleHide);
5688
5691
  el.addEventListener('blur', focusRippleHide);
5689
5692
 
@@ -5703,7 +5706,9 @@
5703
5706
  el.removeEventListener('touchcancel', rippleHide);
5704
5707
  el.removeEventListener('mouseup', rippleHide);
5705
5708
  el.removeEventListener('mouseleave', rippleHide);
5706
- el.removeEventListener('keydown', keyboardRippleShow);
5709
+ if (el._ripple?.keyDownHandler) {
5710
+ el.removeEventListener('keydown', el._ripple.keyDownHandler);
5711
+ }
5707
5712
  el.removeEventListener('keyup', keyboardRippleHide);
5708
5713
  el.removeEventListener('dragstart', rippleHide);
5709
5714
  el.removeEventListener('blur', focusRippleHide);
@@ -5712,8 +5717,8 @@
5712
5717
  updateRipple(el, binding, false);
5713
5718
  }
5714
5719
  function unmounted$4(el) {
5715
- delete el._ripple;
5716
5720
  removeListeners(el);
5721
+ delete el._ripple;
5717
5722
  }
5718
5723
  function updated$1(el, binding) {
5719
5724
  if (binding.value === binding.oldValue) {
@@ -8424,11 +8429,18 @@
8424
8429
  // List
8425
8430
  const ListKey = Symbol.for('vuetify:list');
8426
8431
  function createList() {
8432
+ let {
8433
+ filterable
8434
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
8435
+ filterable: false
8436
+ };
8427
8437
  const parent = vue.inject(ListKey, {
8438
+ filterable: false,
8428
8439
  hasPrepend: vue.shallowRef(false),
8429
8440
  updateHasPrepend: () => null
8430
8441
  });
8431
8442
  const data = {
8443
+ filterable: parent.filterable || filterable,
8432
8444
  hasPrepend: vue.shallowRef(false),
8433
8445
  updateHasPrepend: value => {
8434
8446
  if (value) data.hasPrepend.value = value;
@@ -9380,6 +9392,9 @@
9380
9392
  roundedClasses
9381
9393
  } = useRounded(roundedProps);
9382
9394
  const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9395
+ const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
9396
+ keys: [keyCodes.enter]
9397
+ } : props.ripple);
9383
9398
  const slotProps = vue.computed(() => ({
9384
9399
  isActive: isActive.value,
9385
9400
  select,
@@ -9404,8 +9419,9 @@
9404
9419
  function onKeyDown(e) {
9405
9420
  const target = e.target;
9406
9421
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9407
- if (e.key === 'Enter' || e.key === ' ') {
9422
+ if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
9408
9423
  e.preventDefault();
9424
+ e.stopPropagation();
9409
9425
  e.target.dispatchEvent(new MouseEvent('click', e));
9410
9426
  }
9411
9427
  }
@@ -9515,7 +9531,7 @@
9515
9531
  }), vue.createElementVNode("div", {
9516
9532
  "class": "v-list-item__spacer"
9517
9533
  }, null)])]
9518
- }), [[Ripple, isClickable.value && props.ripple]]);
9534
+ }), [[Ripple, isClickable.value && rippleOptions.value]]);
9519
9535
  });
9520
9536
  return {
9521
9537
  activate,
@@ -9838,6 +9854,7 @@
9838
9854
  activeClass: String,
9839
9855
  bgColor: String,
9840
9856
  disabled: Boolean,
9857
+ filterable: Boolean,
9841
9858
  expandIcon: IconValue,
9842
9859
  collapseIcon: IconValue,
9843
9860
  lines: {
@@ -9921,7 +9938,9 @@
9921
9938
  const activeColor = vue.toRef(() => props.activeColor);
9922
9939
  const baseColor = vue.toRef(() => props.baseColor);
9923
9940
  const color = vue.toRef(() => props.color);
9924
- createList();
9941
+ createList({
9942
+ filterable: props.filterable
9943
+ });
9925
9944
  provideDefaults({
9926
9945
  VListGroup: {
9927
9946
  activeColor,
@@ -13544,7 +13563,7 @@
13544
13563
  menu.value = !menu.value;
13545
13564
  }
13546
13565
  function onListKeydown(e) {
13547
- if (e.key !== ' ' && checkPrintable(e)) {
13566
+ if (checkPrintable(e) || e.key === 'Backspace') {
13548
13567
  vTextFieldRef.value?.focus();
13549
13568
  }
13550
13569
  }
@@ -13749,6 +13768,7 @@
13749
13768
  }, props.menuProps), {
13750
13769
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
13751
13770
  "ref": listRef,
13771
+ "filterable": true,
13752
13772
  "selected": selectedValues.value,
13753
13773
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
13754
13774
  "onMousedown": e => e.preventDefault(),
@@ -18287,7 +18307,7 @@
18287
18307
  menu.value = !menu.value;
18288
18308
  }
18289
18309
  function onListKeydown(e) {
18290
- if (e.key !== ' ' && checkPrintable(e)) {
18310
+ if (checkPrintable(e) || e.key === 'Backspace') {
18291
18311
  vTextFieldRef.value?.focus();
18292
18312
  }
18293
18313
  }
@@ -18492,6 +18512,7 @@
18492
18512
  }, props.menuProps), {
18493
18513
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
18494
18514
  "ref": listRef,
18515
+ "filterable": true,
18495
18516
  "selected": selectedValues.value,
18496
18517
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18497
18518
  "onMousedown": e => e.preventDefault(),
@@ -32192,7 +32213,7 @@
32192
32213
  };
32193
32214
  });
32194
32215
  }
32195
- const version$1 = "3.8.7-dev.2025-05-27";
32216
+ const version$1 = "3.8.7-dev.2025-05-30";
32196
32217
  createVuetify$1.version = version$1;
32197
32218
 
32198
32219
  // Vue's inject() can only be used in setup
@@ -32490,7 +32511,7 @@
32490
32511
 
32491
32512
  /* eslint-disable local-rules/sort-imports */
32492
32513
 
32493
- const version = "3.8.7-dev.2025-05-27";
32514
+ const version = "3.8.7-dev.2025-05-30";
32494
32515
 
32495
32516
  /* eslint-disable local-rules/sort-imports */
32496
32517