vuetify 3.5.6 → 3.5.8

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 (96) hide show
  1. package/dist/_component-variables-labs.sass +2 -0
  2. package/dist/json/attributes.json +461 -41
  3. package/dist/json/importMap-labs.json +16 -4
  4. package/dist/json/importMap.json +120 -120
  5. package/dist/json/tags.json +120 -0
  6. package/dist/json/web-types.json +1173 -53
  7. package/dist/vuetify-labs.css +1547 -1407
  8. package/dist/vuetify-labs.d.ts +1672 -127
  9. package/dist/vuetify-labs.esm.js +428 -94
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +428 -94
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +438 -432
  14. package/dist/vuetify.d.ts +78 -142
  15. package/dist/vuetify.esm.js +121 -82
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +121 -82
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +147 -135
  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 +28 -27
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.sass +2 -2
  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 +40 -27
  31. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  32. package/lib/components/VCombobox/VCombobox.sass +2 -2
  33. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  34. package/lib/components/VDataIterator/index.d.mts +50 -94
  35. package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
  36. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  37. package/lib/components/VLayout/index.d.mts +8 -6
  38. package/lib/components/VSelect/VSelect.mjs +18 -17
  39. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  40. package/lib/components/VSwitch/VSwitch.css +9 -5
  41. package/lib/components/VSwitch/VSwitch.mjs +2 -0
  42. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  43. package/lib/components/VSwitch/VSwitch.sass +10 -7
  44. package/lib/components/VSwitch/_variables.scss +2 -0
  45. package/lib/components/VToolbar/VToolbar.css +3 -1
  46. package/lib/components/VToolbar/VToolbar.sass +2 -1
  47. package/lib/components/index.d.mts +38 -105
  48. package/lib/composables/date/adapters/vuetify.mjs +21 -3
  49. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  50. package/lib/composables/layout.mjs.map +1 -1
  51. package/lib/composables/transition.mjs +7 -5
  52. package/lib/composables/transition.mjs.map +1 -1
  53. package/lib/entry-bundler.mjs +1 -1
  54. package/lib/framework.mjs +1 -1
  55. package/lib/index.d.mts +42 -37
  56. package/lib/labs/VCalendar/VCalendarInterval.css +1 -0
  57. package/lib/labs/VCalendar/VCalendarInterval.sass +1 -0
  58. package/lib/labs/VCalendar/VCalendarIntervalEvent.css +6 -0
  59. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs +5 -2
  60. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs.map +1 -1
  61. package/lib/labs/VCalendar/VCalendarIntervalEvent.sass +6 -0
  62. package/lib/labs/VEmptyState/VEmptyState.css +59 -0
  63. package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
  64. package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
  65. package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
  66. package/lib/labs/VEmptyState/_variables.scss +22 -0
  67. package/lib/labs/VEmptyState/index.d.mts +415 -0
  68. package/lib/labs/VEmptyState/index.mjs +2 -0
  69. package/lib/labs/VEmptyState/index.mjs.map +1 -0
  70. package/lib/labs/VFab/VFab.css +69 -0
  71. package/lib/labs/VFab/VFab.mjs +114 -0
  72. package/lib/labs/VFab/VFab.mjs.map +1 -0
  73. package/lib/labs/VFab/VFab.sass +82 -0
  74. package/lib/labs/VFab/_mixins.scss +22 -0
  75. package/lib/labs/VFab/_variables.scss +33 -0
  76. package/lib/labs/VFab/index.d.mts +656 -0
  77. package/lib/labs/VFab/index.mjs +2 -0
  78. package/lib/labs/VFab/index.mjs.map +1 -0
  79. package/lib/labs/VSparkline/VBarline.mjs +8 -7
  80. package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
  81. package/lib/labs/VSparkline/VTrendline.mjs +14 -6
  82. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
  83. package/lib/labs/VSparkline/index.d.mts +27 -0
  84. package/lib/labs/VSparkline/util/line.mjs +6 -0
  85. package/lib/labs/VSparkline/util/line.mjs.map +1 -1
  86. package/lib/labs/VSpeedDial/VSpeedDial.css +3 -0
  87. package/lib/labs/VSpeedDial/VSpeedDial.mjs +56 -0
  88. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -0
  89. package/lib/labs/VSpeedDial/VSpeedDial.sass +2 -0
  90. package/lib/labs/VSpeedDial/index.d.mts +649 -0
  91. package/lib/labs/VSpeedDial/index.mjs +2 -0
  92. package/lib/labs/VSpeedDial/index.mjs.map +1 -0
  93. package/lib/labs/components.d.mts +1907 -193
  94. package/lib/labs/components.mjs +3 -0
  95. package/lib/labs/components.mjs.map +1 -1
  96. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.6
2
+ * Vuetify v3.5.8
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -3158,17 +3158,19 @@
3158
3158
  const {
3159
3159
  transition,
3160
3160
  disabled,
3161
+ group,
3161
3162
  ...rest
3162
3163
  } = props;
3163
3164
  const {
3164
- component = vue.Transition,
3165
+ component = group ? vue.TransitionGroup : vue.Transition,
3165
3166
  ...customProps
3166
3167
  } = typeof transition === 'object' ? transition : {};
3167
3168
  return vue.h(component, vue.mergeProps(typeof transition === 'string' ? {
3168
3169
  name: disabled ? '' : transition
3169
- } : customProps, rest, {
3170
- disabled
3171
- }), slots);
3170
+ } : customProps, typeof transition === 'string' ? {} : {
3171
+ disabled,
3172
+ group
3173
+ }, rest), slots);
3172
3174
  };
3173
3175
 
3174
3176
  // Utilities
@@ -6885,7 +6887,8 @@
6885
6887
  id,
6886
6888
  messagesId,
6887
6889
  isDisabled,
6888
- isReadonly
6890
+ isReadonly,
6891
+ isValid
6889
6892
  } = _ref2;
6890
6893
  return vue.createVNode(VCheckboxBtn, vue.mergeProps(checkboxProps, {
6891
6894
  "id": id.value,
@@ -6893,6 +6896,7 @@
6893
6896
  "disabled": isDisabled.value,
6894
6897
  "readonly": isReadonly.value
6895
6898
  }, controlAttrs, {
6899
+ "error": isValid.value === false,
6896
6900
  "modelValue": model.value,
6897
6901
  "onUpdate:modelValue": $event => model.value = $event,
6898
6902
  "onFocus": focus,
@@ -11842,21 +11846,27 @@
11842
11846
  model.value = [item];
11843
11847
  }
11844
11848
  }
11849
+
11850
+ /** @param set - null means toggle */
11845
11851
  function select(item) {
11846
- let add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
11852
+ let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
11853
+ if (item.props.disabled) return;
11847
11854
  if (props.multiple) {
11848
11855
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11849
- add = index === -1;
11850
- if (add) {
11851
- model.value = [...model.value, item];
11852
- } else {
11853
- const value = [...model.value];
11856
+ const add = set == null ? !~index : set;
11857
+ if (~index) {
11858
+ const value = add ? [...model.value, item] : [...model.value];
11854
11859
  value.splice(index, 1);
11855
11860
  model.value = value;
11861
+ } else if (add) {
11862
+ model.value = [...model.value, item];
11856
11863
  }
11857
11864
  } else {
11865
+ const add = set !== false;
11858
11866
  model.value = add ? [item] : [];
11859
- menu.value = false;
11867
+ vue.nextTick(() => {
11868
+ menu.value = false;
11869
+ });
11860
11870
  }
11861
11871
  }
11862
11872
  function onBlur(e) {
@@ -11890,14 +11900,9 @@
11890
11900
  });
11891
11901
  }
11892
11902
  });
11893
- vue.watch(displayItems, (val, oldVal) => {
11894
- if (!isFocused.value) return;
11895
- if (!val.length && props.hideNoData) {
11896
- menu.value = false;
11897
- }
11898
- if (!oldVal.length && val.length) {
11899
- menu.value = true;
11900
- }
11903
+ vue.watch(() => props.items, val => {
11904
+ if (!isFocused.value || !val.length || menu.value) return;
11905
+ menu.value = true;
11901
11906
  });
11902
11907
  useRender(() => {
11903
11908
  const hasChips = !!(props.chips || slots.chip);
@@ -11975,7 +11980,7 @@
11975
11980
  const itemProps = vue.mergeProps(item.props, {
11976
11981
  ref: itemRef,
11977
11982
  key: index,
11978
- onClick: () => select(item)
11983
+ onClick: () => select(item, null)
11979
11984
  });
11980
11985
  return slots.item?.({
11981
11986
  item,
@@ -12282,6 +12287,8 @@
12282
12287
  }
12283
12288
  return filteredItems.value;
12284
12289
  });
12290
+ const hasChips = vue.computed(() => !!(props.chips || slots.chip));
12291
+ const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
12285
12292
  const selectedValues = vue.computed(() => model.value.map(selection => selection.props.value));
12286
12293
  const highlightFirst = vue.computed(() => {
12287
12294
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
@@ -12340,7 +12347,7 @@
12340
12347
  }
12341
12348
  const originalSelectionIndex = selectionIndex.value;
12342
12349
  const selectedItem = model.value[selectionIndex.value];
12343
- if (selectedItem && !selectedItem.props.disabled) select(selectedItem);
12350
+ if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
12344
12351
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12345
12352
  }
12346
12353
  if (e.key === 'ArrowLeft') {
@@ -12391,36 +12398,41 @@
12391
12398
  if (v == null || v === '' && !props.multiple) model.value = [];
12392
12399
  }
12393
12400
  const isSelecting = vue.shallowRef(false);
12401
+
12402
+ /** @param set - null means toggle */
12394
12403
  function select(item) {
12395
- let add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12404
+ let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12396
12405
  if (item.props.disabled) return;
12397
12406
  if (props.multiple) {
12398
12407
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12399
- add = index === -1;
12400
- if (add) {
12401
- model.value = [...model.value, item];
12402
- } else {
12403
- const value = [...model.value];
12408
+ const add = set == null ? !~index : set;
12409
+ if (~index) {
12410
+ const value = add ? [...model.value, item] : [...model.value];
12404
12411
  value.splice(index, 1);
12405
12412
  model.value = value;
12413
+ } else if (add) {
12414
+ model.value = [...model.value, item];
12406
12415
  }
12407
12416
  if (props.clearOnSelect) {
12408
12417
  search.value = '';
12409
12418
  }
12410
12419
  } else {
12420
+ const add = set !== false;
12411
12421
  model.value = add ? [item] : [];
12412
- isSelecting.value = true;
12413
- search.value = add ? item.title : '';
12414
- menu.value = false;
12415
- isPristine.value = true;
12416
- vue.nextTick(() => isSelecting.value = false);
12422
+ search.value = add && !hasSelectionSlot.value ? item.title : '';
12423
+
12424
+ // watch for search watcher to trigger
12425
+ vue.nextTick(() => {
12426
+ menu.value = false;
12427
+ isPristine.value = true;
12428
+ });
12417
12429
  }
12418
12430
  }
12419
12431
  vue.watch(isFocused, (val, oldVal) => {
12420
12432
  if (val === oldVal) return;
12421
12433
  if (val) {
12422
12434
  isSelecting.value = true;
12423
- search.value = props.multiple ? '' : String(model.value.at(-1)?.props.title ?? '');
12435
+ search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');
12424
12436
  isPristine.value = true;
12425
12437
  vue.nextTick(() => isSelecting.value = false);
12426
12438
  } else {
@@ -12450,17 +12462,11 @@
12450
12462
  });
12451
12463
  }
12452
12464
  });
12453
- vue.watch(displayItems, (val, oldVal) => {
12454
- if (!isFocused.value) return;
12455
- if (!val.length && props.hideNoData) {
12456
- menu.value = false;
12457
- }
12458
- if (!oldVal.length && val.length) {
12459
- menu.value = true;
12460
- }
12465
+ vue.watch(() => props.items, val => {
12466
+ if (!isFocused.value || !val.length || menu.value) return;
12467
+ menu.value = true;
12461
12468
  });
12462
12469
  useRender(() => {
12463
- const hasChips = !!(props.chips || slots.chip);
12464
12470
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
12465
12471
  const isDirty = model.value.length > 0;
12466
12472
  const textFieldProps = VTextField.filterProps(props);
@@ -12478,7 +12484,7 @@
12478
12484
  "class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
12479
12485
  'v-autocomplete--active-menu': menu.value,
12480
12486
  'v-autocomplete--chips': !!props.chips,
12481
- 'v-autocomplete--selection-slot': !!slots.selection,
12487
+ 'v-autocomplete--selection-slot': !!hasSelectionSlot.value,
12482
12488
  'v-autocomplete--selecting-index': selectionIndex.value > -1
12483
12489
  }, props.class],
12484
12490
  "style": props.style,
@@ -12533,7 +12539,7 @@
12533
12539
  ref: itemRef,
12534
12540
  key: index,
12535
12541
  active: highlightFirst.value && index === 0 ? true : undefined,
12536
- onClick: () => select(item)
12542
+ onClick: () => select(item, null)
12537
12543
  });
12538
12544
  return slots.item?.({
12539
12545
  item,
@@ -12579,8 +12585,8 @@
12579
12585
  modelValue: true,
12580
12586
  'onUpdate:modelValue': undefined
12581
12587
  };
12582
- const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
12583
- const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
12588
+ const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
12589
+ const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
12584
12590
  item,
12585
12591
  index,
12586
12592
  props: slotProps
@@ -12593,7 +12599,7 @@
12593
12599
  "key": item.value,
12594
12600
  "class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
12595
12601
  "style": index === selectionIndex.value ? textColorStyles.value : {}
12596
- }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
12602
+ }, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
12597
12603
  "key": "chip",
12598
12604
  "closable": props.closableChips,
12599
12605
  "size": "small",
@@ -16032,14 +16038,16 @@
16032
16038
  return props.multiple ? transformed : transformed[0] ?? null;
16033
16039
  });
16034
16040
  const form = useForm();
16035
- const _search = vue.shallowRef(!props.multiple ? model.value[0]?.title ?? '' : '');
16041
+ const hasChips = vue.computed(() => !!(props.chips || slots.chip));
16042
+ const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
16043
+ const _search = vue.shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
16036
16044
  const search = vue.computed({
16037
16045
  get: () => {
16038
16046
  return _search.value;
16039
16047
  },
16040
16048
  set: val => {
16041
16049
  _search.value = val ?? '';
16042
- if (!props.multiple) {
16050
+ if (!props.multiple && !hasSelectionSlot.value) {
16043
16051
  model.value = [transformItem$3(props, val)];
16044
16052
  }
16045
16053
  if (val && props.multiple && props.delimiters?.length) {
@@ -16070,7 +16078,7 @@
16070
16078
  emit('update:search', value);
16071
16079
  });
16072
16080
  vue.watch(model, value => {
16073
- if (!props.multiple) {
16081
+ if (!props.multiple && !hasSelectionSlot.value) {
16074
16082
  _search.value = value[0]?.title ?? '';
16075
16083
  }
16076
16084
  });
@@ -16135,6 +16143,10 @@
16135
16143
  if (e.key === 'ArrowDown' && highlightFirst.value) {
16136
16144
  listRef.value?.focus('next');
16137
16145
  }
16146
+ if (e.key === 'Enter' && search.value) {
16147
+ select(transformItem$3(props, search.value));
16148
+ if (hasSelectionSlot.value) _search.value = '';
16149
+ }
16138
16150
  if (!props.multiple) return;
16139
16151
  if (['Backspace', 'Delete'].includes(e.key)) {
16140
16152
  if (selectionIndex.value < 0) {
@@ -16168,10 +16180,6 @@
16168
16180
  vTextFieldRef.value.setSelectionRange(0, 0);
16169
16181
  }
16170
16182
  }
16171
- if (e.key === 'Enter' && search.value) {
16172
- select(transformItem$3(props, search.value));
16173
- search.value = '';
16174
- }
16175
16183
  }
16176
16184
  function onAfterLeave() {
16177
16185
  if (isFocused.value) {
@@ -16182,6 +16190,7 @@
16182
16190
  /** @param set - null means toggle */
16183
16191
  function select(item) {
16184
16192
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
16193
+ if (item.props.disabled) return;
16185
16194
  if (props.multiple) {
16186
16195
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
16187
16196
  const add = set == null ? !~index : set;
@@ -16198,7 +16207,7 @@
16198
16207
  } else {
16199
16208
  const add = set !== false;
16200
16209
  model.value = add ? [item] : [];
16201
- _search.value = add ? item.title : '';
16210
+ _search.value = add && !hasSelectionSlot.value ? item.title : '';
16202
16211
 
16203
16212
  // watch for search watcher to trigger
16204
16213
  vue.nextTick(() => {
@@ -16230,8 +16239,24 @@
16230
16239
  return value === displayItems.value[0].value;
16231
16240
  })) {
16232
16241
  select(displayItems.value[0]);
16233
- } else if (props.multiple && search.value) {
16234
- select(transformItem$3(props, search.value));
16242
+ return;
16243
+ }
16244
+ if (search.value) {
16245
+ if (props.multiple) {
16246
+ select(transformItem$3(props, search.value));
16247
+ return;
16248
+ }
16249
+ if (!hasSelectionSlot.value) return;
16250
+ if (model.value.some(_ref3 => {
16251
+ let {
16252
+ title
16253
+ } = _ref3;
16254
+ return title === search.value;
16255
+ })) {
16256
+ _search.value = '';
16257
+ } else {
16258
+ select(transformItem$3(props, search.value));
16259
+ }
16235
16260
  }
16236
16261
  });
16237
16262
  vue.watch(menu, () => {
@@ -16242,17 +16267,11 @@
16242
16267
  });
16243
16268
  }
16244
16269
  });
16245
- vue.watch(displayItems, (val, oldVal) => {
16246
- if (!isFocused.value) return;
16247
- if (!val.length && props.hideNoData) {
16248
- menu.value = false;
16249
- }
16250
- if (!oldVal.length && val.length) {
16251
- menu.value = true;
16252
- }
16270
+ vue.watch(() => props.items, val => {
16271
+ if (!isFocused.value || !val.length || menu.value) return;
16272
+ menu.value = true;
16253
16273
  });
16254
16274
  useRender(() => {
16255
- const hasChips = !!(props.chips || slots.chip);
16256
16275
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
16257
16276
  const isDirty = model.value.length > 0;
16258
16277
  const textFieldProps = VTextField.filterProps(props);
@@ -16269,7 +16288,7 @@
16269
16288
  "class": ['v-combobox', {
16270
16289
  'v-combobox--active-menu': menu.value,
16271
16290
  'v-combobox--chips': !!props.chips,
16272
- 'v-combobox--selection-slot': !!slots.selection,
16291
+ 'v-combobox--selection-slot': !!hasSelectionSlot.value,
16273
16292
  'v-combobox--selecting-index': selectionIndex.value > -1,
16274
16293
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
16275
16294
  }, props.class],
@@ -16315,12 +16334,12 @@
16315
16334
  "renderless": true,
16316
16335
  "items": displayItems.value
16317
16336
  }, {
16318
- default: _ref3 => {
16337
+ default: _ref4 => {
16319
16338
  let {
16320
16339
  item,
16321
16340
  index,
16322
16341
  itemRef
16323
- } = _ref3;
16342
+ } = _ref4;
16324
16343
  const itemProps = vue.mergeProps(item.props, {
16325
16344
  ref: itemRef,
16326
16345
  key: index,
@@ -16334,10 +16353,10 @@
16334
16353
  }) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
16335
16354
  "role": "option"
16336
16355
  }), {
16337
- prepend: _ref4 => {
16356
+ prepend: _ref5 => {
16338
16357
  let {
16339
16358
  isSelected
16340
- } = _ref4;
16359
+ } = _ref5;
16341
16360
  return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
16342
16361
  "key": item.value,
16343
16362
  "modelValue": isSelected,
@@ -16371,8 +16390,8 @@
16371
16390
  modelValue: true,
16372
16391
  'onUpdate:modelValue': undefined
16373
16392
  };
16374
- const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
16375
- const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
16393
+ const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
16394
+ const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
16376
16395
  item,
16377
16396
  index,
16378
16397
  props: slotProps
@@ -16385,7 +16404,7 @@
16385
16404
  "key": item.value,
16386
16405
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
16387
16406
  "style": index === selectionIndex.value ? textColorStyles.value : {}
16388
- }, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
16407
+ }, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
16389
16408
  "key": "chip",
16390
16409
  "closable": props.closableChips,
16391
16410
  "size": "small",
@@ -17353,10 +17372,28 @@
17353
17372
  function getDiff(date, comparing, unit) {
17354
17373
  const d = new Date(date);
17355
17374
  const c = new Date(comparing);
17356
- if (unit === 'month') {
17357
- return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
17375
+ switch (unit) {
17376
+ case 'years':
17377
+ return d.getFullYear() - c.getFullYear();
17378
+ case 'quarters':
17379
+ return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4);
17380
+ case 'months':
17381
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
17382
+ case 'weeks':
17383
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7));
17384
+ case 'days':
17385
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
17386
+ case 'hours':
17387
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60));
17388
+ case 'minutes':
17389
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60));
17390
+ case 'seconds':
17391
+ return Math.floor((d.getTime() - c.getTime()) / 1000);
17392
+ default:
17393
+ {
17394
+ return d.getTime() - c.getTime();
17395
+ }
17358
17396
  }
17359
- return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
17360
17397
  }
17361
17398
  function setHours(date, count) {
17362
17399
  const d = new Date(date);
@@ -20551,7 +20588,7 @@
20551
20588
  } else {
20552
20589
  rangeStop.value = _value;
20553
20590
  }
20554
- const diff = adapter.getDiff(rangeStop.value, rangeStart.value);
20591
+ const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
20555
20592
  const datesInRange = [rangeStart.value];
20556
20593
  for (let i = 1; i < diff; i++) {
20557
20594
  const nextDate = adapter.addDays(rangeStart.value, i);
@@ -24365,6 +24402,8 @@
24365
24402
  const controlProps = VSelectionControl.filterProps(props);
24366
24403
  return vue.createVNode(VInput, vue.mergeProps({
24367
24404
  "class": ['v-switch', {
24405
+ 'v-switch--flat': props.flat
24406
+ }, {
24368
24407
  'v-switch--inset': props.inset
24369
24408
  }, {
24370
24409
  'v-switch--indeterminate': indeterminate.value
@@ -25738,7 +25777,7 @@
25738
25777
  goTo
25739
25778
  };
25740
25779
  }
25741
- const version$1 = "3.5.6";
25780
+ const version$1 = "3.5.8";
25742
25781
  createVuetify$1.version = version$1;
25743
25782
 
25744
25783
  // Vue's inject() can only be used in setup
@@ -25763,7 +25802,7 @@
25763
25802
  ...options
25764
25803
  });
25765
25804
  };
25766
- const version = "3.5.6";
25805
+ const version = "3.5.8";
25767
25806
  createVuetify.version = version;
25768
25807
 
25769
25808
  exports.components = components;