@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
@@ -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
  */
@@ -3803,7 +3803,10 @@
3803
3803
  default: 'default',
3804
3804
  validator: v => allowedDensities$1.includes(v)
3805
3805
  },
3806
- extended: Boolean,
3806
+ extended: {
3807
+ type: Boolean,
3808
+ default: null
3809
+ },
3807
3810
  extensionHeight: {
3808
3811
  type: [Number, String],
3809
3812
  default: 48
@@ -3851,7 +3854,7 @@
3851
3854
  const {
3852
3855
  rtlClasses
3853
3856
  } = useRtl();
3854
- const isExtended = vue.shallowRef(!!(props.extended || slots.extension?.()));
3857
+ const isExtended = vue.shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
3855
3858
  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));
3856
3859
  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);
3857
3860
  provideDefaults({
@@ -3863,7 +3866,7 @@
3863
3866
  const hasTitle = !!(props.title || slots.title);
3864
3867
  const hasImage = !!(slots.image || props.image);
3865
3868
  const extension = slots.extension?.();
3866
- isExtended.value = !!(props.extended || extension);
3869
+ isExtended.value = props.extended === null ? !!extension : props.extended;
3867
3870
  return vue.createVNode(props.tag, {
3868
3871
  "class": vue.normalizeClass(['v-toolbar', {
3869
3872
  'v-toolbar--absolute': props.absolute,
@@ -5630,8 +5633,8 @@
5630
5633
  window.clearTimeout(element._ripple.showTimer);
5631
5634
  }
5632
5635
  let keyboardRipple = false;
5633
- function keyboardRippleShow(e) {
5634
- if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {
5636
+ function keyboardRippleShow(e, keys) {
5637
+ if (!keyboardRipple && keys.includes(e.keyCode)) {
5635
5638
  keyboardRipple = true;
5636
5639
  rippleShow(e);
5637
5640
  }
@@ -5659,9 +5662,12 @@
5659
5662
  el._ripple.enabled = enabled;
5660
5663
  el._ripple.centered = modifiers.center;
5661
5664
  el._ripple.circle = modifiers.circle;
5662
- if (isObject(value) && value.class) {
5663
- el._ripple.class = value.class;
5665
+ const bindingValue = isObject(value) ? value : {};
5666
+ if (bindingValue.class) {
5667
+ el._ripple.class = bindingValue.class;
5664
5668
  }
5669
+ const allowedKeys = bindingValue.keys ?? [keyCodes.enter, keyCodes.space];
5670
+ el._ripple.keyDownHandler = e => keyboardRippleShow(e, allowedKeys);
5665
5671
  if (enabled && !wasEnabled) {
5666
5672
  if (modifiers.stop) {
5667
5673
  el.addEventListener('touchstart', rippleStop, {
@@ -5683,7 +5689,7 @@
5683
5689
  el.addEventListener('mousedown', rippleShow);
5684
5690
  el.addEventListener('mouseup', rippleHide);
5685
5691
  el.addEventListener('mouseleave', rippleHide);
5686
- el.addEventListener('keydown', keyboardRippleShow);
5692
+ el.addEventListener('keydown', e => keyboardRippleShow(e, allowedKeys));
5687
5693
  el.addEventListener('keyup', keyboardRippleHide);
5688
5694
  el.addEventListener('blur', focusRippleHide);
5689
5695
 
@@ -5703,7 +5709,9 @@
5703
5709
  el.removeEventListener('touchcancel', rippleHide);
5704
5710
  el.removeEventListener('mouseup', rippleHide);
5705
5711
  el.removeEventListener('mouseleave', rippleHide);
5706
- el.removeEventListener('keydown', keyboardRippleShow);
5712
+ if (el._ripple?.keyDownHandler) {
5713
+ el.removeEventListener('keydown', el._ripple.keyDownHandler);
5714
+ }
5707
5715
  el.removeEventListener('keyup', keyboardRippleHide);
5708
5716
  el.removeEventListener('dragstart', rippleHide);
5709
5717
  el.removeEventListener('blur', focusRippleHide);
@@ -5712,8 +5720,8 @@
5712
5720
  updateRipple(el, binding, false);
5713
5721
  }
5714
5722
  function unmounted$4(el) {
5715
- delete el._ripple;
5716
5723
  removeListeners(el);
5724
+ delete el._ripple;
5717
5725
  }
5718
5726
  function updated$1(el, binding) {
5719
5727
  if (binding.value === binding.oldValue) {
@@ -8424,11 +8432,18 @@
8424
8432
  // List
8425
8433
  const ListKey = Symbol.for('vuetify:list');
8426
8434
  function createList() {
8435
+ let {
8436
+ filterable
8437
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
8438
+ filterable: false
8439
+ };
8427
8440
  const parent = vue.inject(ListKey, {
8441
+ filterable: false,
8428
8442
  hasPrepend: vue.shallowRef(false),
8429
8443
  updateHasPrepend: () => null
8430
8444
  });
8431
8445
  const data = {
8446
+ filterable: parent.filterable || filterable,
8432
8447
  hasPrepend: vue.shallowRef(false),
8433
8448
  updateHasPrepend: value => {
8434
8449
  if (value) data.hasPrepend.value = value;
@@ -9380,6 +9395,9 @@
9380
9395
  roundedClasses
9381
9396
  } = useRounded(roundedProps);
9382
9397
  const lineClasses = vue.toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
9398
+ const rippleOptions = vue.toRef(() => props.ripple !== undefined && !!props.ripple && list?.filterable ? {
9399
+ keys: [keyCodes.enter]
9400
+ } : props.ripple);
9383
9401
  const slotProps = vue.computed(() => ({
9384
9402
  isActive: isActive.value,
9385
9403
  select,
@@ -9404,8 +9422,9 @@
9404
9422
  function onKeyDown(e) {
9405
9423
  const target = e.target;
9406
9424
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
9407
- if (e.key === 'Enter' || e.key === ' ') {
9425
+ if (e.key === 'Enter' || e.key === ' ' && !list?.filterable) {
9408
9426
  e.preventDefault();
9427
+ e.stopPropagation();
9409
9428
  e.target.dispatchEvent(new MouseEvent('click', e));
9410
9429
  }
9411
9430
  }
@@ -9515,7 +9534,7 @@
9515
9534
  }), vue.createElementVNode("div", {
9516
9535
  "class": "v-list-item__spacer"
9517
9536
  }, null)])]
9518
- }), [[Ripple, isClickable.value && props.ripple]]);
9537
+ }), [[Ripple, isClickable.value && rippleOptions.value]]);
9519
9538
  });
9520
9539
  return {
9521
9540
  activate,
@@ -9838,6 +9857,7 @@
9838
9857
  activeClass: String,
9839
9858
  bgColor: String,
9840
9859
  disabled: Boolean,
9860
+ filterable: Boolean,
9841
9861
  expandIcon: IconValue,
9842
9862
  collapseIcon: IconValue,
9843
9863
  lines: {
@@ -9921,7 +9941,9 @@
9921
9941
  const activeColor = vue.toRef(() => props.activeColor);
9922
9942
  const baseColor = vue.toRef(() => props.baseColor);
9923
9943
  const color = vue.toRef(() => props.color);
9924
- createList();
9944
+ createList({
9945
+ filterable: props.filterable
9946
+ });
9925
9947
  provideDefaults({
9926
9948
  VListGroup: {
9927
9949
  activeColor,
@@ -13544,7 +13566,7 @@
13544
13566
  menu.value = !menu.value;
13545
13567
  }
13546
13568
  function onListKeydown(e) {
13547
- if (e.key !== ' ' && checkPrintable(e)) {
13569
+ if (checkPrintable(e) || e.key === 'Backspace') {
13548
13570
  vTextFieldRef.value?.focus();
13549
13571
  }
13550
13572
  }
@@ -13749,6 +13771,7 @@
13749
13771
  }, props.menuProps), {
13750
13772
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
13751
13773
  "ref": listRef,
13774
+ "filterable": true,
13752
13775
  "selected": selectedValues.value,
13753
13776
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
13754
13777
  "onMousedown": e => e.preventDefault(),
@@ -18287,7 +18310,7 @@
18287
18310
  menu.value = !menu.value;
18288
18311
  }
18289
18312
  function onListKeydown(e) {
18290
- if (e.key !== ' ' && checkPrintable(e)) {
18313
+ if (checkPrintable(e) || e.key === 'Backspace') {
18291
18314
  vTextFieldRef.value?.focus();
18292
18315
  }
18293
18316
  }
@@ -18492,6 +18515,7 @@
18492
18515
  }, props.menuProps), {
18493
18516
  default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
18494
18517
  "ref": listRef,
18518
+ "filterable": true,
18495
18519
  "selected": selectedValues.value,
18496
18520
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
18497
18521
  "onMousedown": e => e.preventDefault(),
@@ -20978,11 +21002,18 @@
20978
21002
  }
20979
21003
  });
20980
21004
 
21005
+ // Types
21006
+
20981
21007
  const makeVTableProps = propsFactory({
20982
21008
  fixedHeader: Boolean,
20983
21009
  fixedFooter: Boolean,
20984
21010
  height: [Number, String],
20985
21011
  hover: Boolean,
21012
+ striped: {
21013
+ type: String,
21014
+ default: null,
21015
+ validator: v => ['even', 'odd'].includes(v)
21016
+ },
20986
21017
  ...makeComponentProps(),
20987
21018
  ...makeDensityProps(),
20988
21019
  ...makeTagProps(),
@@ -21009,7 +21040,9 @@
21009
21040
  'v-table--fixed-footer': props.fixedFooter,
21010
21041
  'v-table--has-top': !!slots.top,
21011
21042
  'v-table--has-bottom': !!slots.bottom,
21012
- 'v-table--hover': props.hover
21043
+ 'v-table--hover': props.hover,
21044
+ 'v-table--striped-even': props.striped === 'even',
21045
+ 'v-table--striped-odd': props.striped === 'odd'
21013
21046
  }, themeClasses.value, densityClasses.value, props.class]),
21014
21047
  "style": vue.normalizeStyle(props.style)
21015
21048
  }, {
@@ -32192,7 +32225,7 @@
32192
32225
  };
32193
32226
  });
32194
32227
  }
32195
- const version$1 = "3.8.7-dev.2025-05-27";
32228
+ const version$1 = "3.8.7-dev.2025-06-03";
32196
32229
  createVuetify$1.version = version$1;
32197
32230
 
32198
32231
  // Vue's inject() can only be used in setup
@@ -32490,7 +32523,7 @@
32490
32523
 
32491
32524
  /* eslint-disable local-rules/sort-imports */
32492
32525
 
32493
- const version = "3.8.7-dev.2025-05-27";
32526
+ const version = "3.8.7-dev.2025-06-03";
32494
32527
 
32495
32528
  /* eslint-disable local-rules/sort-imports */
32496
32529