vuetify 3.5.5 → 3.5.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 (86) hide show
  1. package/dist/_component-variables-labs.sass +2 -0
  2. package/dist/json/attributes.json +352 -40
  3. package/dist/json/importMap-labs.json +16 -8
  4. package/dist/json/importMap.json +122 -118
  5. package/dist/json/tags.json +93 -0
  6. package/dist/json/web-types.json +1084 -52
  7. package/dist/vuetify-labs.css +2121 -1996
  8. package/dist/vuetify-labs.d.ts +1336 -128
  9. package/dist/vuetify-labs.esm.js +332 -81
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +332 -81
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +838 -839
  14. package/dist/vuetify.d.ts +320 -145
  15. package/dist/vuetify.esm.js +87 -75
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +87 -75
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +60 -58
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VApp/index.d.mts +8 -6
  23. package/lib/components/VAutocomplete/VAutocomplete.css +4 -4
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +33 -29
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  27. package/lib/components/VCheckbox/VCheckbox.mjs +3 -1
  28. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  29. package/lib/components/VCombobox/VCombobox.css +4 -4
  30. package/lib/components/VCombobox/VCombobox.mjs +22 -23
  31. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  32. package/lib/components/VCombobox/VCombobox.sass +1 -1
  33. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  34. package/lib/components/VDataIterator/index.d.mts +50 -94
  35. package/lib/components/VDataTable/index.d.mts +214 -1
  36. package/lib/components/VDataTable/index.mjs +1 -0
  37. package/lib/components/VDataTable/index.mjs.map +1 -1
  38. package/lib/components/VExpansionPanel/VExpansionPanel.css +4 -7
  39. package/lib/components/VExpansionPanel/VExpansionPanel.sass +4 -3
  40. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -0
  41. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  42. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +2 -0
  43. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  44. package/lib/components/VExpansionPanel/index.d.mts +27 -0
  45. package/lib/components/VLayout/index.d.mts +8 -6
  46. package/lib/components/VSelect/VSelect.mjs +20 -18
  47. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  48. package/lib/components/VToolbar/VToolbar.css +3 -1
  49. package/lib/components/VToolbar/VToolbar.sass +2 -1
  50. package/lib/components/index.d.mts +279 -106
  51. package/lib/composables/filter.mjs +1 -1
  52. package/lib/composables/filter.mjs.map +1 -1
  53. package/lib/composables/goto.mjs +2 -2
  54. package/lib/composables/goto.mjs.map +1 -1
  55. package/lib/composables/layout.mjs.map +1 -1
  56. package/lib/entry-bundler.mjs +1 -1
  57. package/lib/framework.mjs +1 -1
  58. package/lib/index.d.mts +42 -39
  59. package/lib/labs/VEmptyState/VEmptyState.css +59 -0
  60. package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
  61. package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
  62. package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
  63. package/lib/labs/VEmptyState/_variables.scss +22 -0
  64. package/lib/labs/VEmptyState/index.d.mts +415 -0
  65. package/lib/labs/VEmptyState/index.mjs +2 -0
  66. package/lib/labs/VEmptyState/index.mjs.map +1 -0
  67. package/lib/labs/VFab/VFab.css +69 -0
  68. package/lib/labs/VFab/VFab.mjs +114 -0
  69. package/lib/labs/VFab/VFab.mjs.map +1 -0
  70. package/lib/labs/VFab/VFab.sass +82 -0
  71. package/lib/labs/VFab/_mixins.scss +22 -0
  72. package/lib/labs/VFab/_variables.scss +33 -0
  73. package/lib/labs/VFab/index.d.mts +656 -0
  74. package/lib/labs/VFab/index.mjs +2 -0
  75. package/lib/labs/VFab/index.mjs.map +1 -0
  76. package/lib/labs/VSparkline/VBarline.mjs +4 -4
  77. package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
  78. package/lib/labs/VSparkline/VTrendline.mjs +6 -2
  79. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
  80. package/lib/labs/VSparkline/index.d.mts +12 -0
  81. package/lib/labs/VSparkline/util/line.mjs +2 -0
  82. package/lib/labs/VSparkline/util/line.mjs.map +1 -1
  83. package/lib/labs/components.d.mts +1066 -2
  84. package/lib/labs/components.mjs +2 -0
  85. package/lib/labs/components.mjs.map +1 -1
  86. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.5
2
+ * Vuetify v3.5.7
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -6881,7 +6881,8 @@ const VCheckbox = genericComponent()({
6881
6881
  id,
6882
6882
  messagesId,
6883
6883
  isDisabled,
6884
- isReadonly
6884
+ isReadonly,
6885
+ isValid
6885
6886
  } = _ref2;
6886
6887
  return createVNode(VCheckboxBtn, mergeProps(checkboxProps, {
6887
6888
  "id": id.value,
@@ -6889,6 +6890,7 @@ const VCheckbox = genericComponent()({
6889
6890
  "disabled": isDisabled.value,
6890
6891
  "readonly": isReadonly.value
6891
6892
  }, controlAttrs, {
6893
+ "error": isValid.value === false,
6892
6894
  "modelValue": model.value,
6893
6895
  "onUpdate:modelValue": $event => model.value = $event,
6894
6896
  "onFocus": focus,
@@ -11838,20 +11840,27 @@ const VSelect = genericComponent()({
11838
11840
  model.value = [item];
11839
11841
  }
11840
11842
  }
11843
+
11844
+ /** @param set - null means toggle */
11841
11845
  function select(item) {
11842
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11843
- const add = index === -1;
11846
+ let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
11847
+ if (item.props.disabled) return;
11844
11848
  if (props.multiple) {
11845
- if (add) {
11846
- model.value = [...model.value, item];
11847
- } else {
11848
- const value = [...model.value];
11849
+ const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11850
+ const add = set == null ? !~index : set;
11851
+ if (~index) {
11852
+ const value = add ? [...model.value, item] : [...model.value];
11849
11853
  value.splice(index, 1);
11850
11854
  model.value = value;
11855
+ } else if (add) {
11856
+ model.value = [...model.value, item];
11851
11857
  }
11852
11858
  } else {
11859
+ const add = set !== false;
11853
11860
  model.value = add ? [item] : [];
11854
- menu.value = false;
11861
+ nextTick(() => {
11862
+ menu.value = false;
11863
+ });
11855
11864
  }
11856
11865
  }
11857
11866
  function onBlur(e) {
@@ -11885,14 +11894,9 @@ const VSelect = genericComponent()({
11885
11894
  });
11886
11895
  }
11887
11896
  });
11888
- watch(displayItems, (val, oldVal) => {
11889
- if (!isFocused.value) return;
11890
- if (!val.length && props.hideNoData) {
11891
- menu.value = false;
11892
- }
11893
- if (!oldVal.length && val.length) {
11894
- menu.value = true;
11895
- }
11897
+ watch(() => props.items, val => {
11898
+ if (!isFocused.value || !val.length || menu.value) return;
11899
+ menu.value = true;
11896
11900
  });
11897
11901
  useRender(() => {
11898
11902
  const hasChips = !!(props.chips || slots.chip);
@@ -11970,7 +11974,7 @@ const VSelect = genericComponent()({
11970
11974
  const itemProps = mergeProps(item.props, {
11971
11975
  ref: itemRef,
11972
11976
  key: index,
11973
- onClick: () => select(item)
11977
+ onClick: () => select(item, null)
11974
11978
  });
11975
11979
  return slots.item?.({
11976
11980
  item,
@@ -12002,7 +12006,7 @@ const VSelect = genericComponent()({
12002
12006
  function onChipClose(e) {
12003
12007
  e.stopPropagation();
12004
12008
  e.preventDefault();
12005
- select(item);
12009
+ select(item, false);
12006
12010
  }
12007
12011
  const slotProps = {
12008
12012
  'onClick:close': onChipClose,
@@ -12112,7 +12116,7 @@ function filterItems(items, query, options) {
12112
12116
  if (typeof item === 'object') {
12113
12117
  const filterKeys = keys || Object.keys(transformed);
12114
12118
  for (const key of filterKeys) {
12115
- const value = getPropertyFromItem(transformed, key, transformed);
12119
+ const value = getPropertyFromItem(transformed, key);
12116
12120
  const keyFilter = options?.customKeyFilter?.[key];
12117
12121
  match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);
12118
12122
  if (match !== -1 && match !== false) {
@@ -12277,6 +12281,8 @@ const VAutocomplete = genericComponent()({
12277
12281
  }
12278
12282
  return filteredItems.value;
12279
12283
  });
12284
+ const hasChips = computed(() => !!(props.chips || slots.chip));
12285
+ const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
12280
12286
  const selectedValues = computed(() => model.value.map(selection => selection.props.value));
12281
12287
  const highlightFirst = computed(() => {
12282
12288
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
@@ -12335,7 +12341,7 @@ const VAutocomplete = genericComponent()({
12335
12341
  }
12336
12342
  const originalSelectionIndex = selectionIndex.value;
12337
12343
  const selectedItem = model.value[selectionIndex.value];
12338
- if (selectedItem && !selectedItem.props.disabled) select(selectedItem);
12344
+ if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
12339
12345
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12340
12346
  }
12341
12347
  if (e.key === 'ArrowLeft') {
@@ -12386,35 +12392,41 @@ const VAutocomplete = genericComponent()({
12386
12392
  if (v == null || v === '' && !props.multiple) model.value = [];
12387
12393
  }
12388
12394
  const isSelecting = shallowRef(false);
12395
+
12396
+ /** @param set - null means toggle */
12389
12397
  function select(item) {
12398
+ let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12390
12399
  if (item.props.disabled) return;
12391
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12392
- const add = index === -1;
12393
12400
  if (props.multiple) {
12394
- if (add) {
12395
- model.value = [...model.value, item];
12396
- } else {
12397
- const value = [...model.value];
12401
+ const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12402
+ const add = set == null ? !~index : set;
12403
+ if (~index) {
12404
+ const value = add ? [...model.value, item] : [...model.value];
12398
12405
  value.splice(index, 1);
12399
12406
  model.value = value;
12407
+ } else if (add) {
12408
+ model.value = [...model.value, item];
12400
12409
  }
12401
12410
  if (props.clearOnSelect) {
12402
12411
  search.value = '';
12403
12412
  }
12404
12413
  } else {
12414
+ const add = set !== false;
12405
12415
  model.value = add ? [item] : [];
12406
- isSelecting.value = true;
12407
- search.value = add ? item.title : '';
12408
- menu.value = false;
12409
- isPristine.value = true;
12410
- nextTick(() => isSelecting.value = false);
12416
+ search.value = add && !hasSelectionSlot.value ? item.title : '';
12417
+
12418
+ // watch for search watcher to trigger
12419
+ nextTick(() => {
12420
+ menu.value = false;
12421
+ isPristine.value = true;
12422
+ });
12411
12423
  }
12412
12424
  }
12413
12425
  watch(isFocused, (val, oldVal) => {
12414
12426
  if (val === oldVal) return;
12415
12427
  if (val) {
12416
12428
  isSelecting.value = true;
12417
- search.value = props.multiple ? '' : String(model.value.at(-1)?.props.title ?? '');
12429
+ search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');
12418
12430
  isPristine.value = true;
12419
12431
  nextTick(() => isSelecting.value = false);
12420
12432
  } else {
@@ -12444,17 +12456,11 @@ const VAutocomplete = genericComponent()({
12444
12456
  });
12445
12457
  }
12446
12458
  });
12447
- watch(displayItems, (val, oldVal) => {
12448
- if (!isFocused.value) return;
12449
- if (!val.length && props.hideNoData) {
12450
- menu.value = false;
12451
- }
12452
- if (!oldVal.length && val.length) {
12453
- menu.value = true;
12454
- }
12459
+ watch(() => props.items, val => {
12460
+ if (!isFocused.value || !val.length || menu.value) return;
12461
+ menu.value = true;
12455
12462
  });
12456
12463
  useRender(() => {
12457
- const hasChips = !!(props.chips || slots.chip);
12458
12464
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
12459
12465
  const isDirty = model.value.length > 0;
12460
12466
  const textFieldProps = VTextField.filterProps(props);
@@ -12472,7 +12478,7 @@ const VAutocomplete = genericComponent()({
12472
12478
  "class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
12473
12479
  'v-autocomplete--active-menu': menu.value,
12474
12480
  'v-autocomplete--chips': !!props.chips,
12475
- 'v-autocomplete--selection-slot': !!slots.selection,
12481
+ 'v-autocomplete--selection-slot': !!hasSelectionSlot.value,
12476
12482
  'v-autocomplete--selecting-index': selectionIndex.value > -1
12477
12483
  }, props.class],
12478
12484
  "style": props.style,
@@ -12527,13 +12533,15 @@ const VAutocomplete = genericComponent()({
12527
12533
  ref: itemRef,
12528
12534
  key: index,
12529
12535
  active: highlightFirst.value && index === 0 ? true : undefined,
12530
- onClick: () => select(item)
12536
+ onClick: () => select(item, null)
12531
12537
  });
12532
12538
  return slots.item?.({
12533
12539
  item,
12534
12540
  index,
12535
12541
  props: itemProps
12536
- }) ?? createVNode(VListItem, itemProps, {
12542
+ }) ?? createVNode(VListItem, mergeProps(itemProps, {
12543
+ "role": "option"
12544
+ }), {
12537
12545
  prepend: _ref4 => {
12538
12546
  let {
12539
12547
  isSelected
@@ -12560,7 +12568,7 @@ const VAutocomplete = genericComponent()({
12560
12568
  function onChipClose(e) {
12561
12569
  e.stopPropagation();
12562
12570
  e.preventDefault();
12563
- select(item);
12571
+ select(item, false);
12564
12572
  }
12565
12573
  const slotProps = {
12566
12574
  'onClick:close': onChipClose,
@@ -12571,8 +12579,8 @@ const VAutocomplete = genericComponent()({
12571
12579
  modelValue: true,
12572
12580
  'onUpdate:modelValue': undefined
12573
12581
  };
12574
- const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
12575
- const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
12582
+ const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
12583
+ const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
12576
12584
  item,
12577
12585
  index,
12578
12586
  props: slotProps
@@ -12585,7 +12593,7 @@ const VAutocomplete = genericComponent()({
12585
12593
  "key": item.value,
12586
12594
  "class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
12587
12595
  "style": index === selectionIndex.value ? textColorStyles.value : {}
12588
- }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
12596
+ }, [hasChips.value ? !slots.chip ? createVNode(VChip, mergeProps({
12589
12597
  "key": "chip",
12590
12598
  "closable": props.closableChips,
12591
12599
  "size": "small",
@@ -16024,14 +16032,16 @@ const VCombobox = genericComponent()({
16024
16032
  return props.multiple ? transformed : transformed[0] ?? null;
16025
16033
  });
16026
16034
  const form = useForm();
16027
- const _search = shallowRef(!props.multiple ? model.value[0]?.title ?? '' : '');
16035
+ const hasChips = computed(() => !!(props.chips || slots.chip));
16036
+ const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
16037
+ const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
16028
16038
  const search = computed({
16029
16039
  get: () => {
16030
16040
  return _search.value;
16031
16041
  },
16032
16042
  set: val => {
16033
16043
  _search.value = val ?? '';
16034
- if (!props.multiple) {
16044
+ if (!props.multiple && !hasSelectionSlot.value) {
16035
16045
  model.value = [transformItem$3(props, val)];
16036
16046
  }
16037
16047
  if (val && props.multiple && props.delimiters?.length) {
@@ -16062,7 +16072,7 @@ const VCombobox = genericComponent()({
16062
16072
  emit('update:search', value);
16063
16073
  });
16064
16074
  watch(model, value => {
16065
- if (!props.multiple) {
16075
+ if (!props.multiple && !hasSelectionSlot.value) {
16066
16076
  _search.value = value[0]?.title ?? '';
16067
16077
  }
16068
16078
  });
@@ -16127,6 +16137,10 @@ const VCombobox = genericComponent()({
16127
16137
  if (e.key === 'ArrowDown' && highlightFirst.value) {
16128
16138
  listRef.value?.focus('next');
16129
16139
  }
16140
+ if (e.key === 'Enter' && search.value) {
16141
+ select(transformItem$3(props, search.value));
16142
+ if (hasSelectionSlot.value) search.value = '';
16143
+ }
16130
16144
  if (!props.multiple) return;
16131
16145
  if (['Backspace', 'Delete'].includes(e.key)) {
16132
16146
  if (selectionIndex.value < 0) {
@@ -16160,10 +16174,6 @@ const VCombobox = genericComponent()({
16160
16174
  vTextFieldRef.value.setSelectionRange(0, 0);
16161
16175
  }
16162
16176
  }
16163
- if (e.key === 'Enter' && search.value) {
16164
- select(transformItem$3(props, search.value));
16165
- search.value = '';
16166
- }
16167
16177
  }
16168
16178
  function onAfterLeave() {
16169
16179
  if (isFocused.value) {
@@ -16174,6 +16184,7 @@ const VCombobox = genericComponent()({
16174
16184
  /** @param set - null means toggle */
16175
16185
  function select(item) {
16176
16186
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
16187
+ if (item.props.disabled) return;
16177
16188
  if (props.multiple) {
16178
16189
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
16179
16190
  const add = set == null ? !~index : set;
@@ -16190,7 +16201,7 @@ const VCombobox = genericComponent()({
16190
16201
  } else {
16191
16202
  const add = set !== false;
16192
16203
  model.value = add ? [item] : [];
16193
- _search.value = add ? item.title : '';
16204
+ _search.value = add && !hasSelectionSlot.value ? item.title : '';
16194
16205
 
16195
16206
  // watch for search watcher to trigger
16196
16207
  nextTick(() => {
@@ -16222,7 +16233,7 @@ const VCombobox = genericComponent()({
16222
16233
  return value === displayItems.value[0].value;
16223
16234
  })) {
16224
16235
  select(displayItems.value[0]);
16225
- } else if (props.multiple && search.value) {
16236
+ } else if (search.value) {
16226
16237
  select(transformItem$3(props, search.value));
16227
16238
  }
16228
16239
  });
@@ -16234,17 +16245,11 @@ const VCombobox = genericComponent()({
16234
16245
  });
16235
16246
  }
16236
16247
  });
16237
- watch(displayItems, (val, oldVal) => {
16238
- if (!isFocused.value) return;
16239
- if (!val.length && props.hideNoData) {
16240
- menu.value = false;
16241
- }
16242
- if (!oldVal.length && val.length) {
16243
- menu.value = true;
16244
- }
16248
+ watch(() => props.items, val => {
16249
+ if (!isFocused.value || !val.length || menu.value) return;
16250
+ menu.value = true;
16245
16251
  });
16246
16252
  useRender(() => {
16247
- const hasChips = !!(props.chips || slots.chip);
16248
16253
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
16249
16254
  const isDirty = model.value.length > 0;
16250
16255
  const textFieldProps = VTextField.filterProps(props);
@@ -16261,7 +16266,7 @@ const VCombobox = genericComponent()({
16261
16266
  "class": ['v-combobox', {
16262
16267
  'v-combobox--active-menu': menu.value,
16263
16268
  'v-combobox--chips': !!props.chips,
16264
- 'v-combobox--selection-slot': !!slots.selection,
16269
+ 'v-combobox--selection-slot': !!hasSelectionSlot.value,
16265
16270
  'v-combobox--selecting-index': selectionIndex.value > -1,
16266
16271
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
16267
16272
  }, props.class],
@@ -16323,7 +16328,9 @@ const VCombobox = genericComponent()({
16323
16328
  item,
16324
16329
  index,
16325
16330
  props: itemProps
16326
- }) ?? createVNode(VListItem, itemProps, {
16331
+ }) ?? createVNode(VListItem, mergeProps(itemProps, {
16332
+ "role": "option"
16333
+ }), {
16327
16334
  prepend: _ref4 => {
16328
16335
  let {
16329
16336
  isSelected
@@ -16361,8 +16368,8 @@ const VCombobox = genericComponent()({
16361
16368
  modelValue: true,
16362
16369
  'onUpdate:modelValue': undefined
16363
16370
  };
16364
- const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
16365
- const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
16371
+ const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
16372
+ const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
16366
16373
  item,
16367
16374
  index,
16368
16375
  props: slotProps
@@ -16375,7 +16382,7 @@ const VCombobox = genericComponent()({
16375
16382
  "key": item.value,
16376
16383
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
16377
16384
  "style": index === selectionIndex.value ? textColorStyles.value : {}
16378
- }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
16385
+ }, [hasChips.value ? !slots.chip ? createVNode(VChip, mergeProps({
16379
16386
  "key": "chip",
16380
16387
  "closable": props.closableChips,
16381
16388
  "size": "small",
@@ -17666,7 +17673,7 @@ async function scrollTo(_target, _options, horizontal, goTo) {
17666
17673
  return new Promise(resolve => requestAnimationFrame(function step(currentTime) {
17667
17674
  const timeElapsed = currentTime - startTime;
17668
17675
  const progress = timeElapsed / options.duration;
17669
- const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(Math.max(progress, 1)));
17676
+ const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(clamp(progress, 0, 1)));
17670
17677
  container[property] = location;
17671
17678
 
17672
17679
  // Allow for some jitter if target time has elapsed
@@ -21090,6 +21097,7 @@ const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
21090
21097
  const makeVExpansionPanelsProps = propsFactory({
21091
21098
  color: String,
21092
21099
  flat: Boolean,
21100
+ focusable: Boolean,
21093
21101
  static: Boolean,
21094
21102
  tile: Boolean,
21095
21103
  variant: {
@@ -21124,6 +21132,7 @@ const VExpansionPanels = genericComponent()({
21124
21132
  readonly: toRef(props, 'readonly')
21125
21133
  },
21126
21134
  VExpansionPanelTitle: {
21135
+ focusable: toRef(props, 'focusable'),
21127
21136
  static: toRef(props, 'static')
21128
21137
  }
21129
21138
  });
@@ -21182,6 +21191,7 @@ const makeVExpansionPanelTitleProps = propsFactory({
21182
21191
  default: '$collapse'
21183
21192
  },
21184
21193
  hideActions: Boolean,
21194
+ focusable: Boolean,
21185
21195
  static: Boolean,
21186
21196
  ripple: {
21187
21197
  type: [Boolean, Object],
@@ -21216,6 +21226,7 @@ const VExpansionPanelTitle = genericComponent()({
21216
21226
  useRender(() => withDirectives(createVNode("button", {
21217
21227
  "class": ['v-expansion-panel-title', {
21218
21228
  'v-expansion-panel-title--active': expansionPanel.isSelected.value,
21229
+ 'v-expansion-panel-title--focusable': props.focusable,
21219
21230
  'v-expansion-panel-title--static': props.static
21220
21231
  }, backgroundColorClasses.value, props.class],
21221
21232
  "style": [backgroundColorStyles.value, props.style],
@@ -25388,6 +25399,7 @@ var components = /*#__PURE__*/Object.freeze({
25388
25399
  VDataIterator: VDataIterator,
25389
25400
  VDataTable: VDataTable,
25390
25401
  VDataTableFooter: VDataTableFooter,
25402
+ VDataTableHeaders: VDataTableHeaders,
25391
25403
  VDataTableRow: VDataTableRow,
25392
25404
  VDataTableRows: VDataTableRows,
25393
25405
  VDataTableServer: VDataTableServer,
@@ -25723,7 +25735,7 @@ function createVuetify$1() {
25723
25735
  goTo
25724
25736
  };
25725
25737
  }
25726
- const version$1 = "3.5.5";
25738
+ const version$1 = "3.5.7";
25727
25739
  createVuetify$1.version = version$1;
25728
25740
 
25729
25741
  // Vue's inject() can only be used in setup
@@ -25748,7 +25760,7 @@ const createVuetify = function () {
25748
25760
  ...options
25749
25761
  });
25750
25762
  };
25751
- const version = "3.5.5";
25763
+ const version = "3.5.7";
25752
25764
  createVuetify.version = version;
25753
25765
 
25754
25766
  export { components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };