vuetify 3.5.7 → 3.5.9

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 (118) hide show
  1. package/dist/json/attributes.json +568 -8
  2. package/dist/json/importMap-labs.json +20 -4
  3. package/dist/json/importMap.json +156 -156
  4. package/dist/json/tags.json +160 -0
  5. package/dist/json/web-types.json +1695 -9
  6. package/dist/vuetify-labs.css +1849 -1820
  7. package/dist/vuetify-labs.d.ts +3601 -694
  8. package/dist/vuetify-labs.esm.js +891 -237
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +891 -237
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +911 -906
  13. package/dist/vuetify.d.ts +576 -72
  14. package/dist/vuetify.esm.js +273 -35
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +273 -35
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +541 -510
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -3
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  25. package/lib/components/VAutocomplete/index.d.mts +138 -6
  26. package/lib/components/VColorPicker/VColorPickerPreview.css +1 -0
  27. package/lib/components/VColorPicker/VColorPickerPreview.sass +1 -0
  28. package/lib/components/VColorPicker/_variables.scss +1 -0
  29. package/lib/components/VCombobox/VCombobox.css +1 -1
  30. package/lib/components/VCombobox/VCombobox.mjs +28 -10
  31. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  32. package/lib/components/VCombobox/VCombobox.sass +1 -1
  33. package/lib/components/VCombobox/index.d.mts +138 -6
  34. package/lib/components/VDatePicker/VDatePickerControls.mjs +1 -0
  35. package/lib/components/VDatePicker/VDatePickerControls.mjs.map +1 -1
  36. package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
  37. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  38. package/lib/components/VList/VList.mjs +8 -2
  39. package/lib/components/VList/VList.mjs.map +1 -1
  40. package/lib/components/VList/VListGroup.mjs +3 -1
  41. package/lib/components/VList/VListGroup.mjs.map +1 -1
  42. package/lib/components/VList/VListItem.mjs +17 -4
  43. package/lib/components/VList/VListItem.mjs.map +1 -1
  44. package/lib/components/VList/index.d.mts +108 -6
  45. package/lib/components/VSelect/VSelect.mjs +5 -3
  46. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  47. package/lib/components/VSelect/index.d.mts +138 -6
  48. package/lib/components/VSwitch/VSwitch.css +9 -5
  49. package/lib/components/VSwitch/VSwitch.mjs +2 -0
  50. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  51. package/lib/components/VSwitch/VSwitch.sass +10 -7
  52. package/lib/components/VSwitch/_variables.scss +2 -0
  53. package/lib/components/index.d.mts +522 -24
  54. package/lib/composables/date/adapters/vuetify.mjs +21 -3
  55. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  56. package/lib/composables/nested/activeStrategies.mjs +121 -0
  57. package/lib/composables/nested/activeStrategies.mjs.map +1 -0
  58. package/lib/composables/nested/nested.mjs +50 -1
  59. package/lib/composables/nested/nested.mjs.map +1 -1
  60. package/lib/composables/nested/selectStrategies.mjs +4 -2
  61. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  62. package/lib/composables/transition.mjs +7 -5
  63. package/lib/composables/transition.mjs.map +1 -1
  64. package/lib/entry-bundler.mjs +1 -1
  65. package/lib/framework.mjs +1 -1
  66. package/lib/iconsets/fa.mjs +2 -0
  67. package/lib/iconsets/fa.mjs.map +1 -1
  68. package/lib/iconsets/fa4.mjs +2 -0
  69. package/lib/iconsets/fa4.mjs.map +1 -1
  70. package/lib/iconsets/md.mjs +2 -0
  71. package/lib/iconsets/md.mjs.map +1 -1
  72. package/lib/iconsets/mdi-svg.mjs +2 -0
  73. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  74. package/lib/iconsets/mdi.mjs +2 -0
  75. package/lib/iconsets/mdi.mjs.map +1 -1
  76. package/lib/index.d.mts +54 -48
  77. package/lib/labs/VCalendar/VCalendarInterval.css +1 -0
  78. package/lib/labs/VCalendar/VCalendarInterval.sass +1 -0
  79. package/lib/labs/VCalendar/VCalendarIntervalEvent.css +6 -0
  80. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs +5 -2
  81. package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs.map +1 -1
  82. package/lib/labs/VCalendar/VCalendarIntervalEvent.sass +6 -0
  83. package/lib/labs/VFab/VFab.css +1 -1
  84. package/lib/labs/VFab/VFab.sass +1 -1
  85. package/lib/labs/VSparkline/VBarline.mjs +4 -3
  86. package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
  87. package/lib/labs/VSparkline/VTrendline.mjs +9 -5
  88. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
  89. package/lib/labs/VSparkline/index.d.mts +15 -0
  90. package/lib/labs/VSparkline/util/line.mjs +4 -0
  91. package/lib/labs/VSparkline/util/line.mjs.map +1 -1
  92. package/lib/labs/VSpeedDial/VSpeedDial.css +3 -0
  93. package/lib/labs/VSpeedDial/VSpeedDial.mjs +56 -0
  94. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -0
  95. package/lib/labs/VSpeedDial/VSpeedDial.sass +2 -0
  96. package/lib/labs/VSpeedDial/index.d.mts +649 -0
  97. package/lib/labs/VSpeedDial/index.mjs +2 -0
  98. package/lib/labs/VSpeedDial/index.mjs.map +1 -0
  99. package/lib/labs/VTreeview/VTreeview.mjs +154 -0
  100. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -0
  101. package/lib/labs/VTreeview/VTreeviewChildren.mjs +98 -0
  102. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -0
  103. package/lib/labs/VTreeview/VTreeviewGroup.mjs +48 -0
  104. package/lib/labs/VTreeview/VTreeviewGroup.mjs.map +1 -0
  105. package/lib/labs/VTreeview/VTreeviewItem.css +17 -0
  106. package/lib/labs/VTreeview/VTreeviewItem.mjs +86 -0
  107. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -0
  108. package/lib/labs/VTreeview/VTreeviewItem.sass +19 -0
  109. package/lib/labs/VTreeview/index.d.mts +1975 -0
  110. package/lib/labs/VTreeview/index.mjs +4 -0
  111. package/lib/labs/VTreeview/index.mjs.map +1 -0
  112. package/lib/labs/VTreeview/shared.mjs +4 -0
  113. package/lib/labs/VTreeview/shared.mjs.map +1 -0
  114. package/lib/labs/VTreeview/variables.scss +8 -0
  115. package/lib/labs/components.d.mts +3877 -1292
  116. package/lib/labs/components.mjs +4 -2
  117. package/lib/labs/components.mjs.map +1 -1
  118. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.7
2
+ * Vuetify v3.5.9
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -3154,17 +3154,19 @@ const MaybeTransition = (props, _ref) => {
3154
3154
  const {
3155
3155
  transition,
3156
3156
  disabled,
3157
+ group,
3157
3158
  ...rest
3158
3159
  } = props;
3159
3160
  const {
3160
- component = Transition,
3161
+ component = group ? TransitionGroup : Transition,
3161
3162
  ...customProps
3162
3163
  } = typeof transition === 'object' ? transition : {};
3163
3164
  return h(component, mergeProps(typeof transition === 'string' ? {
3164
3165
  name: disabled ? '' : transition
3165
- } : customProps, rest, {
3166
- disabled
3167
- }), slots);
3166
+ } : customProps, typeof transition === 'string' ? {} : {
3167
+ disabled,
3168
+ group
3169
+ }, rest), slots);
3168
3170
  };
3169
3171
 
3170
3172
  // Utilities
@@ -4364,6 +4366,8 @@ const aliases = {
4364
4366
  plus: 'mdi-plus',
4365
4367
  minus: 'mdi-minus',
4366
4368
  calendar: 'mdi-calendar',
4369
+ treeviewCollapse: 'mdi-menu-down',
4370
+ treeviewExpand: 'mdi-menu-right',
4367
4371
  eyeDropper: 'mdi-eyedropper'
4368
4372
  };
4369
4373
  const mdi = {
@@ -7750,6 +7754,126 @@ function useList() {
7750
7754
  return inject$1(ListKey, null);
7751
7755
  }
7752
7756
 
7757
+ /* eslint-disable sonarjs/no-identical-functions */
7758
+ // Utilities
7759
+ const independentActiveStrategy = mandatory => {
7760
+ const strategy = {
7761
+ activate: _ref => {
7762
+ let {
7763
+ id,
7764
+ value,
7765
+ activated
7766
+ } = _ref;
7767
+ id = toRaw(id);
7768
+
7769
+ // When mandatory and we're trying to deselect when id
7770
+ // is the only currently selected item then do nothing
7771
+ if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated;
7772
+ if (value) {
7773
+ activated.add(id);
7774
+ } else {
7775
+ activated.delete(id);
7776
+ }
7777
+ return activated;
7778
+ },
7779
+ in: (v, children, parents) => {
7780
+ let set = new Set();
7781
+ for (const id of v || []) {
7782
+ set = strategy.activate({
7783
+ id,
7784
+ value: true,
7785
+ activated: new Set(set),
7786
+ children,
7787
+ parents
7788
+ });
7789
+ }
7790
+ return set;
7791
+ },
7792
+ out: v => {
7793
+ return Array.from(v);
7794
+ }
7795
+ };
7796
+ return strategy;
7797
+ };
7798
+ const independentSingleActiveStrategy = mandatory => {
7799
+ const parentStrategy = independentActiveStrategy(mandatory);
7800
+ const strategy = {
7801
+ activate: _ref2 => {
7802
+ let {
7803
+ activated,
7804
+ id,
7805
+ ...rest
7806
+ } = _ref2;
7807
+ id = toRaw(id);
7808
+ const singleSelected = activated.has(id) ? new Set([id]) : new Set();
7809
+ return parentStrategy.activate({
7810
+ ...rest,
7811
+ id,
7812
+ activated: singleSelected
7813
+ });
7814
+ },
7815
+ in: (v, children, parents) => {
7816
+ let set = new Set();
7817
+ if (v?.length) {
7818
+ set = parentStrategy.in(v.slice(0, 1), children, parents);
7819
+ }
7820
+ return set;
7821
+ },
7822
+ out: (v, children, parents) => {
7823
+ return parentStrategy.out(v, children, parents);
7824
+ }
7825
+ };
7826
+ return strategy;
7827
+ };
7828
+ const leafActiveStrategy = mandatory => {
7829
+ const parentStrategy = independentActiveStrategy(mandatory);
7830
+ const strategy = {
7831
+ activate: _ref3 => {
7832
+ let {
7833
+ id,
7834
+ activated,
7835
+ children,
7836
+ ...rest
7837
+ } = _ref3;
7838
+ id = toRaw(id);
7839
+ if (children.has(id)) return activated;
7840
+ return parentStrategy.activate({
7841
+ id,
7842
+ activated,
7843
+ children,
7844
+ ...rest
7845
+ });
7846
+ },
7847
+ in: parentStrategy.in,
7848
+ out: parentStrategy.out
7849
+ };
7850
+ return strategy;
7851
+ };
7852
+ const leafSingleActiveStrategy = mandatory => {
7853
+ const parentStrategy = independentSingleActiveStrategy(mandatory);
7854
+ const strategy = {
7855
+ activate: _ref4 => {
7856
+ let {
7857
+ id,
7858
+ activated,
7859
+ children,
7860
+ ...rest
7861
+ } = _ref4;
7862
+ id = toRaw(id);
7863
+ if (children.has(id)) return activated;
7864
+ return parentStrategy.activate({
7865
+ id,
7866
+ activated,
7867
+ children,
7868
+ ...rest
7869
+ });
7870
+ },
7871
+ in: parentStrategy.in,
7872
+ out: parentStrategy.out
7873
+ };
7874
+ return strategy;
7875
+ };
7876
+
7753
7877
  const singleOpenStrategy = {
7754
7878
  open: _ref => {
7755
7879
  let {
@@ -7834,7 +7958,8 @@ const independentSelectStrategy = mandatory => {
7834
7958
  if (mandatory && !value) {
7835
7959
  const on = Array.from(selected.entries()).reduce((arr, _ref2) => {
7836
7960
  let [key, value] = _ref2;
7837
- return value === 'on' ? [...arr, key] : arr;
7961
+ if (value === 'on') arr.push(key);
7962
+ return arr;
7838
7963
  }, []);
7839
7964
  if (on.length === 1 && on[0] === id) return selected;
7840
7965
  }
@@ -7976,7 +8101,8 @@ const classicSelectStrategy = mandatory => {
7976
8101
  if (mandatory && !value) {
7977
8102
  const on = Array.from(selected.entries()).reduce((arr, _ref7) => {
7978
8103
  let [key, value] = _ref7;
7979
- return value === 'on' ? [...arr, key] : arr;
8104
+ if (value === 'on') arr.push(key);
8105
+ return arr;
7980
8106
  }, []);
7981
8107
  if (on.length === 0) return original;
7982
8108
  }
@@ -8020,16 +8146,24 @@ const emptyNested = {
8020
8146
  children: ref(new Map()),
8021
8147
  open: () => null,
8022
8148
  openOnSelect: () => null,
8149
+ activate: () => null,
8023
8150
  select: () => null,
8151
+ activatable: ref(false),
8152
+ selectable: ref(false),
8024
8153
  opened: ref(new Set()),
8154
+ activated: ref(new Set()),
8025
8155
  selected: ref(new Map()),
8026
8156
  selectedValues: ref([])
8027
8157
  }
8028
8158
  };
8029
8159
  const makeNestedProps = propsFactory({
8160
+ activatable: Boolean,
8161
+ selectable: Boolean,
8162
+ activeStrategy: [String, Function],
8030
8163
  selectStrategy: [String, Function],
8031
8164
  openStrategy: [String, Object],
8032
8165
  opened: Array,
8166
+ activated: Array,
8033
8167
  selected: Array,
8034
8168
  mandatory: Boolean
8035
8169
  }, 'nested');
@@ -8038,6 +8172,20 @@ const useNested = props => {
8038
8172
  const children = ref(new Map());
8039
8173
  const parents = ref(new Map());
8040
8174
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8175
+ const activeStrategy = computed(() => {
8176
+ if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8177
+ switch (props.activeStrategy) {
8178
+ case 'leaf':
8179
+ return leafActiveStrategy(props.mandatory);
8180
+ case 'single-leaf':
8181
+ return leafSingleActiveStrategy(props.mandatory);
8182
+ case 'independent':
8183
+ return independentActiveStrategy(props.mandatory);
8184
+ case 'single-independent':
8185
+ default:
8186
+ return independentSingleActiveStrategy(props.mandatory);
8187
+ }
8188
+ });
8041
8189
  const selectStrategy = computed(() => {
8042
8190
  if (typeof props.selectStrategy === 'object') return props.selectStrategy;
8043
8191
  switch (props.selectStrategy) {
@@ -8066,6 +8214,7 @@ const useNested = props => {
8066
8214
  return multipleOpenStrategy;
8067
8215
  }
8068
8216
  });
8217
+ const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
8069
8218
  const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));
8070
8219
  onBeforeUnmount(() => {
8071
8220
  isUnmounted = true;
@@ -8084,6 +8233,9 @@ const useNested = props => {
8084
8233
  id: shallowRef(),
8085
8234
  root: {
8086
8235
  opened,
8236
+ activatable: toRef(props, 'activatable'),
8237
+ selectable: toRef(props, 'selectable'),
8238
+ activated,
8087
8239
  selected,
8088
8240
  selectedValues: computed(() => {
8089
8241
  const arr = [];
@@ -8157,6 +8309,26 @@ const useNested = props => {
8157
8309
  newSelected && (selected.value = newSelected);
8158
8310
  nested.root.openOnSelect(id, value, event);
8159
8311
  },
8312
+ activate: (id, value, event) => {
8313
+ if (!props.activatable) {
8314
+ return nested.root.select(id, true, event);
8315
+ }
8316
+ vm.emit('click:activate', {
8317
+ id,
8318
+ value,
8319
+ path: getPath(id),
8320
+ event
8321
+ });
8322
+ const newActivated = activeStrategy.value.activate({
8323
+ id,
8324
+ value,
8325
+ activated: new Set(activated.value),
8326
+ children: children.value,
8327
+ parents: parents.value,
8328
+ event
8329
+ });
8330
+ newActivated && (activated.value = newActivated);
8331
+ },
8160
8332
  children,
8161
8333
  parents
8162
8334
  }
@@ -8175,6 +8347,8 @@ const useNestedItem = (id, isGroup) => {
8175
8347
  openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
8176
8348
  isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
8177
8349
  parent: computed(() => parent.root.parents.value.get(computedId.value)),
8350
+ activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
8351
+ isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
8178
8352
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
8179
8353
  isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),
8180
8354
  isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
@@ -8297,7 +8471,9 @@ const VListGroup = genericComponent()({
8297
8471
  }, [slots.default?.()]), [[vShow, isOpen.value]])]
8298
8472
  })]
8299
8473
  }));
8300
- return {};
8474
+ return {
8475
+ isOpen
8476
+ };
8301
8477
  }
8302
8478
  });
8303
8479
 
@@ -8370,6 +8546,8 @@ const VListItem = genericComponent()({
8370
8546
  const link = useLink(props, attrs);
8371
8547
  const id = computed(() => props.value === undefined ? link.href.value : props.value);
8372
8548
  const {
8549
+ activate,
8550
+ isActivated,
8373
8551
  select,
8374
8552
  isSelected,
8375
8553
  isIndeterminate,
@@ -8379,9 +8557,9 @@ const VListItem = genericComponent()({
8379
8557
  openOnSelect
8380
8558
  } = useNestedItem(id, false);
8381
8559
  const list = useList();
8382
- const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || isSelected.value));
8560
+ const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
8383
8561
  const isLink = computed(() => props.link !== false && link.isLink.value);
8384
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
8562
+ const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));
8385
8563
  const roundedProps = computed(() => props.rounded || props.nav);
8386
8564
  const color = computed(() => props.color ?? props.activeColor);
8387
8565
  const variantProps = computed(() => ({
@@ -8432,7 +8610,13 @@ const VListItem = genericComponent()({
8432
8610
  emit('click', e);
8433
8611
  if (isGroupActivator || !isClickable.value) return;
8434
8612
  link.navigate?.(e);
8435
- props.value != null && select(!isSelected.value, e);
8613
+ if (root.activatable) {
8614
+ activate(!isActivated.value, e);
8615
+ } else if (root.selectable) {
8616
+ select(!isSelected.value, e);
8617
+ } else if (props.value != null) {
8618
+ select(!isSelected.value, e);
8619
+ }
8436
8620
  }
8437
8621
  function onKeyDown(e) {
8438
8622
  if (e.key === 'Enter' || e.key === ' ') {
@@ -8548,7 +8732,12 @@ const VListItem = genericComponent()({
8548
8732
  }, null)])]
8549
8733
  }), [[resolveDirective("ripple"), isClickable.value && props.ripple]]);
8550
8734
  });
8551
- return {};
8735
+ return {
8736
+ isGroupActivator,
8737
+ isSelected,
8738
+ list,
8739
+ select
8740
+ };
8552
8741
  }
8553
8742
  });
8554
8743
 
@@ -8890,8 +9079,10 @@ const VList = genericComponent()({
8890
9079
  props: makeVListProps(),
8891
9080
  emits: {
8892
9081
  'update:selected': value => true,
9082
+ 'update:activated': value => true,
8893
9083
  'update:opened': value => true,
8894
9084
  'click:open': value => true,
9085
+ 'click:activate': value => true,
8895
9086
  'click:select': value => true
8896
9087
  },
8897
9088
  setup(props, _ref) {
@@ -8924,7 +9115,9 @@ const VList = genericComponent()({
8924
9115
  roundedClasses
8925
9116
  } = useRounded(props);
8926
9117
  const {
9118
+ children,
8927
9119
  open,
9120
+ parents,
8928
9121
  select
8929
9122
  } = useNested(props);
8930
9123
  const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
@@ -9014,7 +9207,9 @@ const VList = genericComponent()({
9014
9207
  return {
9015
9208
  open,
9016
9209
  select,
9017
- focus
9210
+ focus,
9211
+ children,
9212
+ parents
9018
9213
  };
9019
9214
  }
9020
9215
  });
@@ -11894,9 +12089,11 @@ const VSelect = genericComponent()({
11894
12089
  });
11895
12090
  }
11896
12091
  });
11897
- watch(() => props.items, val => {
11898
- if (!isFocused.value || !val.length || menu.value) return;
11899
- menu.value = true;
12092
+ watch(() => props.items, (newVal, oldVal) => {
12093
+ if (menu.value) return;
12094
+ if (isFocused.value && !oldVal.length && newVal.length) {
12095
+ menu.value = true;
12096
+ }
11900
12097
  });
11901
12098
  useRender(() => {
11902
12099
  const hasChips = !!(props.chips || slots.chip);
@@ -12456,9 +12653,11 @@ const VAutocomplete = genericComponent()({
12456
12653
  });
12457
12654
  }
12458
12655
  });
12459
- watch(() => props.items, val => {
12460
- if (!isFocused.value || !val.length || menu.value) return;
12461
- menu.value = true;
12656
+ watch(() => props.items, (newVal, oldVal) => {
12657
+ if (menu.value) return;
12658
+ if (isFocused.value && !oldVal.length && newVal.length) {
12659
+ menu.value = true;
12660
+ }
12462
12661
  });
12463
12662
  useRender(() => {
12464
12663
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -16139,7 +16338,7 @@ const VCombobox = genericComponent()({
16139
16338
  }
16140
16339
  if (e.key === 'Enter' && search.value) {
16141
16340
  select(transformItem$3(props, search.value));
16142
- if (hasSelectionSlot.value) search.value = '';
16341
+ if (hasSelectionSlot.value) _search.value = '';
16143
16342
  }
16144
16343
  if (!props.multiple) return;
16145
16344
  if (['Backspace', 'Delete'].includes(e.key)) {
@@ -16233,8 +16432,24 @@ const VCombobox = genericComponent()({
16233
16432
  return value === displayItems.value[0].value;
16234
16433
  })) {
16235
16434
  select(displayItems.value[0]);
16236
- } else if (search.value) {
16237
- select(transformItem$3(props, search.value));
16435
+ return;
16436
+ }
16437
+ if (search.value) {
16438
+ if (props.multiple) {
16439
+ select(transformItem$3(props, search.value));
16440
+ return;
16441
+ }
16442
+ if (!hasSelectionSlot.value) return;
16443
+ if (model.value.some(_ref3 => {
16444
+ let {
16445
+ title
16446
+ } = _ref3;
16447
+ return title === search.value;
16448
+ })) {
16449
+ _search.value = '';
16450
+ } else {
16451
+ select(transformItem$3(props, search.value));
16452
+ }
16238
16453
  }
16239
16454
  });
16240
16455
  watch(menu, () => {
@@ -16245,9 +16460,11 @@ const VCombobox = genericComponent()({
16245
16460
  });
16246
16461
  }
16247
16462
  });
16248
- watch(() => props.items, val => {
16249
- if (!isFocused.value || !val.length || menu.value) return;
16250
- menu.value = true;
16463
+ watch(() => props.items, (newVal, oldVal) => {
16464
+ if (menu.value) return;
16465
+ if (isFocused.value && !oldVal.length && newVal.length) {
16466
+ menu.value = true;
16467
+ }
16251
16468
  });
16252
16469
  useRender(() => {
16253
16470
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -16312,12 +16529,12 @@ const VCombobox = genericComponent()({
16312
16529
  "renderless": true,
16313
16530
  "items": displayItems.value
16314
16531
  }, {
16315
- default: _ref3 => {
16532
+ default: _ref4 => {
16316
16533
  let {
16317
16534
  item,
16318
16535
  index,
16319
16536
  itemRef
16320
- } = _ref3;
16537
+ } = _ref4;
16321
16538
  const itemProps = mergeProps(item.props, {
16322
16539
  ref: itemRef,
16323
16540
  key: index,
@@ -16331,10 +16548,10 @@ const VCombobox = genericComponent()({
16331
16548
  }) ?? createVNode(VListItem, mergeProps(itemProps, {
16332
16549
  "role": "option"
16333
16550
  }), {
16334
- prepend: _ref4 => {
16551
+ prepend: _ref5 => {
16335
16552
  let {
16336
16553
  isSelected
16337
- } = _ref4;
16554
+ } = _ref5;
16338
16555
  return createVNode(Fragment, null, [props.multiple && !props.hideSelected ? createVNode(VCheckboxBtn, {
16339
16556
  "key": item.value,
16340
16557
  "modelValue": isSelected,
@@ -17350,10 +17567,28 @@ function isSameMonth(date, comparing) {
17350
17567
  function getDiff(date, comparing, unit) {
17351
17568
  const d = new Date(date);
17352
17569
  const c = new Date(comparing);
17353
- if (unit === 'month') {
17354
- return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
17570
+ switch (unit) {
17571
+ case 'years':
17572
+ return d.getFullYear() - c.getFullYear();
17573
+ case 'quarters':
17574
+ return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4);
17575
+ case 'months':
17576
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
17577
+ case 'weeks':
17578
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7));
17579
+ case 'days':
17580
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
17581
+ case 'hours':
17582
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60));
17583
+ case 'minutes':
17584
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60));
17585
+ case 'seconds':
17586
+ return Math.floor((d.getTime() - c.getTime()) / 1000);
17587
+ default:
17588
+ {
17589
+ return d.getTime() - c.getTime();
17590
+ }
17355
17591
  }
17356
- return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
17357
17592
  }
17358
17593
  function setHours(date, count) {
17359
17594
  const d = new Date(date);
@@ -20250,6 +20485,7 @@ const VDatePickerControls = genericComponent()({
20250
20485
  emit('click:month');
20251
20486
  }
20252
20487
  useRender(() => {
20488
+ // TODO: add slot support and scope defaults
20253
20489
  return createVNode("div", {
20254
20490
  "class": ['v-date-picker-controls']
20255
20491
  }, [createVNode(VBtn, {
@@ -20548,7 +20784,7 @@ const VDatePickerMonth = genericComponent()({
20548
20784
  } else {
20549
20785
  rangeStop.value = _value;
20550
20786
  }
20551
- const diff = adapter.getDiff(rangeStop.value, rangeStart.value);
20787
+ const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
20552
20788
  const datesInRange = [rangeStart.value];
20553
20789
  for (let i = 1; i < diff; i++) {
20554
20790
  const nextDate = adapter.addDays(rangeStart.value, i);
@@ -24362,6 +24598,8 @@ const VSwitch = genericComponent()({
24362
24598
  const controlProps = VSelectionControl.filterProps(props);
24363
24599
  return createVNode(VInput, mergeProps({
24364
24600
  "class": ['v-switch', {
24601
+ 'v-switch--flat': props.flat
24602
+ }, {
24365
24603
  'v-switch--inset': props.inset
24366
24604
  }, {
24367
24605
  'v-switch--indeterminate': indeterminate.value
@@ -25735,7 +25973,7 @@ function createVuetify$1() {
25735
25973
  goTo
25736
25974
  };
25737
25975
  }
25738
- const version$1 = "3.5.7";
25976
+ const version$1 = "3.5.9";
25739
25977
  createVuetify$1.version = version$1;
25740
25978
 
25741
25979
  // Vue's inject() can only be used in setup
@@ -25760,7 +25998,7 @@ const createVuetify = function () {
25760
25998
  ...options
25761
25999
  });
25762
26000
  };
25763
- const version = "3.5.7";
26001
+ const version = "3.5.9";
25764
26002
  createVuetify.version = version;
25765
26003
 
25766
26004
  export { components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };