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
package/dist/vuetify.js CHANGED
@@ -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
  */
@@ -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
@@ -4368,6 +4370,8 @@
4368
4370
  plus: 'mdi-plus',
4369
4371
  minus: 'mdi-minus',
4370
4372
  calendar: 'mdi-calendar',
4373
+ treeviewCollapse: 'mdi-menu-down',
4374
+ treeviewExpand: 'mdi-menu-right',
4371
4375
  eyeDropper: 'mdi-eyedropper'
4372
4376
  };
4373
4377
  const mdi = {
@@ -7754,6 +7758,126 @@
7754
7758
  return vue.inject(ListKey, null);
7755
7759
  }
7756
7760
 
7761
+ /* eslint-disable sonarjs/no-identical-functions */
7762
+ // Utilities
7763
+ const independentActiveStrategy = mandatory => {
7764
+ const strategy = {
7765
+ activate: _ref => {
7766
+ let {
7767
+ id,
7768
+ value,
7769
+ activated
7770
+ } = _ref;
7771
+ id = vue.toRaw(id);
7772
+
7773
+ // When mandatory and we're trying to deselect when id
7774
+ // is the only currently selected item then do nothing
7775
+ if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated;
7776
+ if (value) {
7777
+ activated.add(id);
7778
+ } else {
7779
+ activated.delete(id);
7780
+ }
7781
+ return activated;
7782
+ },
7783
+ in: (v, children, parents) => {
7784
+ let set = new Set();
7785
+ for (const id of v || []) {
7786
+ set = strategy.activate({
7787
+ id,
7788
+ value: true,
7789
+ activated: new Set(set),
7790
+ children,
7791
+ parents
7792
+ });
7793
+ }
7794
+ return set;
7795
+ },
7796
+ out: v => {
7797
+ return Array.from(v);
7798
+ }
7799
+ };
7800
+ return strategy;
7801
+ };
7802
+ const independentSingleActiveStrategy = mandatory => {
7803
+ const parentStrategy = independentActiveStrategy(mandatory);
7804
+ const strategy = {
7805
+ activate: _ref2 => {
7806
+ let {
7807
+ activated,
7808
+ id,
7809
+ ...rest
7810
+ } = _ref2;
7811
+ id = vue.toRaw(id);
7812
+ const singleSelected = activated.has(id) ? new Set([id]) : new Set();
7813
+ return parentStrategy.activate({
7814
+ ...rest,
7815
+ id,
7816
+ activated: singleSelected
7817
+ });
7818
+ },
7819
+ in: (v, children, parents) => {
7820
+ let set = new Set();
7821
+ if (v?.length) {
7822
+ set = parentStrategy.in(v.slice(0, 1), children, parents);
7823
+ }
7824
+ return set;
7825
+ },
7826
+ out: (v, children, parents) => {
7827
+ return parentStrategy.out(v, children, parents);
7828
+ }
7829
+ };
7830
+ return strategy;
7831
+ };
7832
+ const leafActiveStrategy = mandatory => {
7833
+ const parentStrategy = independentActiveStrategy(mandatory);
7834
+ const strategy = {
7835
+ activate: _ref3 => {
7836
+ let {
7837
+ id,
7838
+ activated,
7839
+ children,
7840
+ ...rest
7841
+ } = _ref3;
7842
+ id = vue.toRaw(id);
7843
+ if (children.has(id)) return activated;
7844
+ return parentStrategy.activate({
7845
+ id,
7846
+ activated,
7847
+ children,
7848
+ ...rest
7849
+ });
7850
+ },
7851
+ in: parentStrategy.in,
7852
+ out: parentStrategy.out
7853
+ };
7854
+ return strategy;
7855
+ };
7856
+ const leafSingleActiveStrategy = mandatory => {
7857
+ const parentStrategy = independentSingleActiveStrategy(mandatory);
7858
+ const strategy = {
7859
+ activate: _ref4 => {
7860
+ let {
7861
+ id,
7862
+ activated,
7863
+ children,
7864
+ ...rest
7865
+ } = _ref4;
7866
+ id = vue.toRaw(id);
7867
+ if (children.has(id)) return activated;
7868
+ return parentStrategy.activate({
7869
+ id,
7870
+ activated,
7871
+ children,
7872
+ ...rest
7873
+ });
7874
+ },
7875
+ in: parentStrategy.in,
7876
+ out: parentStrategy.out
7877
+ };
7878
+ return strategy;
7879
+ };
7880
+
7757
7881
  const singleOpenStrategy = {
7758
7882
  open: _ref => {
7759
7883
  let {
@@ -7838,7 +7962,8 @@
7838
7962
  if (mandatory && !value) {
7839
7963
  const on = Array.from(selected.entries()).reduce((arr, _ref2) => {
7840
7964
  let [key, value] = _ref2;
7841
- return value === 'on' ? [...arr, key] : arr;
7965
+ if (value === 'on') arr.push(key);
7966
+ return arr;
7842
7967
  }, []);
7843
7968
  if (on.length === 1 && on[0] === id) return selected;
7844
7969
  }
@@ -7980,7 +8105,8 @@
7980
8105
  if (mandatory && !value) {
7981
8106
  const on = Array.from(selected.entries()).reduce((arr, _ref7) => {
7982
8107
  let [key, value] = _ref7;
7983
- return value === 'on' ? [...arr, key] : arr;
8108
+ if (value === 'on') arr.push(key);
8109
+ return arr;
7984
8110
  }, []);
7985
8111
  if (on.length === 0) return original;
7986
8112
  }
@@ -8024,16 +8150,24 @@
8024
8150
  children: vue.ref(new Map()),
8025
8151
  open: () => null,
8026
8152
  openOnSelect: () => null,
8153
+ activate: () => null,
8027
8154
  select: () => null,
8155
+ activatable: vue.ref(false),
8156
+ selectable: vue.ref(false),
8028
8157
  opened: vue.ref(new Set()),
8158
+ activated: vue.ref(new Set()),
8029
8159
  selected: vue.ref(new Map()),
8030
8160
  selectedValues: vue.ref([])
8031
8161
  }
8032
8162
  };
8033
8163
  const makeNestedProps = propsFactory({
8164
+ activatable: Boolean,
8165
+ selectable: Boolean,
8166
+ activeStrategy: [String, Function],
8034
8167
  selectStrategy: [String, Function],
8035
8168
  openStrategy: [String, Object],
8036
8169
  opened: Array,
8170
+ activated: Array,
8037
8171
  selected: Array,
8038
8172
  mandatory: Boolean
8039
8173
  }, 'nested');
@@ -8042,6 +8176,20 @@
8042
8176
  const children = vue.ref(new Map());
8043
8177
  const parents = vue.ref(new Map());
8044
8178
  const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
8179
+ const activeStrategy = vue.computed(() => {
8180
+ if (typeof props.activeStrategy === 'object') return props.activeStrategy;
8181
+ switch (props.activeStrategy) {
8182
+ case 'leaf':
8183
+ return leafActiveStrategy(props.mandatory);
8184
+ case 'single-leaf':
8185
+ return leafSingleActiveStrategy(props.mandatory);
8186
+ case 'independent':
8187
+ return independentActiveStrategy(props.mandatory);
8188
+ case 'single-independent':
8189
+ default:
8190
+ return independentSingleActiveStrategy(props.mandatory);
8191
+ }
8192
+ });
8045
8193
  const selectStrategy = vue.computed(() => {
8046
8194
  if (typeof props.selectStrategy === 'object') return props.selectStrategy;
8047
8195
  switch (props.selectStrategy) {
@@ -8070,6 +8218,7 @@
8070
8218
  return multipleOpenStrategy;
8071
8219
  }
8072
8220
  });
8221
+ 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));
8073
8222
  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));
8074
8223
  vue.onBeforeUnmount(() => {
8075
8224
  isUnmounted = true;
@@ -8088,6 +8237,9 @@
8088
8237
  id: vue.shallowRef(),
8089
8238
  root: {
8090
8239
  opened,
8240
+ activatable: vue.toRef(props, 'activatable'),
8241
+ selectable: vue.toRef(props, 'selectable'),
8242
+ activated,
8091
8243
  selected,
8092
8244
  selectedValues: vue.computed(() => {
8093
8245
  const arr = [];
@@ -8161,6 +8313,26 @@
8161
8313
  newSelected && (selected.value = newSelected);
8162
8314
  nested.root.openOnSelect(id, value, event);
8163
8315
  },
8316
+ activate: (id, value, event) => {
8317
+ if (!props.activatable) {
8318
+ return nested.root.select(id, true, event);
8319
+ }
8320
+ vm.emit('click:activate', {
8321
+ id,
8322
+ value,
8323
+ path: getPath(id),
8324
+ event
8325
+ });
8326
+ const newActivated = activeStrategy.value.activate({
8327
+ id,
8328
+ value,
8329
+ activated: new Set(activated.value),
8330
+ children: children.value,
8331
+ parents: parents.value,
8332
+ event
8333
+ });
8334
+ newActivated && (activated.value = newActivated);
8335
+ },
8164
8336
  children,
8165
8337
  parents
8166
8338
  }
@@ -8179,6 +8351,8 @@
8179
8351
  openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
8180
8352
  isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
8181
8353
  parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
8354
+ activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
8355
+ isActivated: vue.computed(() => parent.root.activated.value.has(vue.toRaw(computedId.value))),
8182
8356
  select: (selected, e) => parent.root.select(computedId.value, selected, e),
8183
8357
  isSelected: vue.computed(() => parent.root.selected.value.get(vue.toRaw(computedId.value)) === 'on'),
8184
8358
  isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
@@ -8301,7 +8475,9 @@
8301
8475
  }, [slots.default?.()]), [[vue.vShow, isOpen.value]])]
8302
8476
  })]
8303
8477
  }));
8304
- return {};
8478
+ return {
8479
+ isOpen
8480
+ };
8305
8481
  }
8306
8482
  });
8307
8483
 
@@ -8374,6 +8550,8 @@
8374
8550
  const link = useLink(props, attrs);
8375
8551
  const id = vue.computed(() => props.value === undefined ? link.href.value : props.value);
8376
8552
  const {
8553
+ activate,
8554
+ isActivated,
8377
8555
  select,
8378
8556
  isSelected,
8379
8557
  isIndeterminate,
@@ -8383,9 +8561,9 @@
8383
8561
  openOnSelect
8384
8562
  } = useNestedItem(id, false);
8385
8563
  const list = useList();
8386
- const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || isSelected.value));
8564
+ const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
8387
8565
  const isLink = vue.computed(() => props.link !== false && link.isLink.value);
8388
- const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
8566
+ const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));
8389
8567
  const roundedProps = vue.computed(() => props.rounded || props.nav);
8390
8568
  const color = vue.computed(() => props.color ?? props.activeColor);
8391
8569
  const variantProps = vue.computed(() => ({
@@ -8436,7 +8614,13 @@
8436
8614
  emit('click', e);
8437
8615
  if (isGroupActivator || !isClickable.value) return;
8438
8616
  link.navigate?.(e);
8439
- props.value != null && select(!isSelected.value, e);
8617
+ if (root.activatable) {
8618
+ activate(!isActivated.value, e);
8619
+ } else if (root.selectable) {
8620
+ select(!isSelected.value, e);
8621
+ } else if (props.value != null) {
8622
+ select(!isSelected.value, e);
8623
+ }
8440
8624
  }
8441
8625
  function onKeyDown(e) {
8442
8626
  if (e.key === 'Enter' || e.key === ' ') {
@@ -8552,7 +8736,12 @@
8552
8736
  }, null)])]
8553
8737
  }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
8554
8738
  });
8555
- return {};
8739
+ return {
8740
+ isGroupActivator,
8741
+ isSelected,
8742
+ list,
8743
+ select
8744
+ };
8556
8745
  }
8557
8746
  });
8558
8747
 
@@ -8894,8 +9083,10 @@
8894
9083
  props: makeVListProps(),
8895
9084
  emits: {
8896
9085
  'update:selected': value => true,
9086
+ 'update:activated': value => true,
8897
9087
  'update:opened': value => true,
8898
9088
  'click:open': value => true,
9089
+ 'click:activate': value => true,
8899
9090
  'click:select': value => true
8900
9091
  },
8901
9092
  setup(props, _ref) {
@@ -8928,7 +9119,9 @@
8928
9119
  roundedClasses
8929
9120
  } = useRounded(props);
8930
9121
  const {
9122
+ children,
8931
9123
  open,
9124
+ parents,
8932
9125
  select
8933
9126
  } = useNested(props);
8934
9127
  const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
@@ -9018,7 +9211,9 @@
9018
9211
  return {
9019
9212
  open,
9020
9213
  select,
9021
- focus
9214
+ focus,
9215
+ children,
9216
+ parents
9022
9217
  };
9023
9218
  }
9024
9219
  });
@@ -11898,9 +12093,11 @@
11898
12093
  });
11899
12094
  }
11900
12095
  });
11901
- vue.watch(() => props.items, val => {
11902
- if (!isFocused.value || !val.length || menu.value) return;
11903
- menu.value = true;
12096
+ vue.watch(() => props.items, (newVal, oldVal) => {
12097
+ if (menu.value) return;
12098
+ if (isFocused.value && !oldVal.length && newVal.length) {
12099
+ menu.value = true;
12100
+ }
11904
12101
  });
11905
12102
  useRender(() => {
11906
12103
  const hasChips = !!(props.chips || slots.chip);
@@ -12460,9 +12657,11 @@
12460
12657
  });
12461
12658
  }
12462
12659
  });
12463
- vue.watch(() => props.items, val => {
12464
- if (!isFocused.value || !val.length || menu.value) return;
12465
- menu.value = true;
12660
+ vue.watch(() => props.items, (newVal, oldVal) => {
12661
+ if (menu.value) return;
12662
+ if (isFocused.value && !oldVal.length && newVal.length) {
12663
+ menu.value = true;
12664
+ }
12466
12665
  });
12467
12666
  useRender(() => {
12468
12667
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -16143,7 +16342,7 @@
16143
16342
  }
16144
16343
  if (e.key === 'Enter' && search.value) {
16145
16344
  select(transformItem$3(props, search.value));
16146
- if (hasSelectionSlot.value) search.value = '';
16345
+ if (hasSelectionSlot.value) _search.value = '';
16147
16346
  }
16148
16347
  if (!props.multiple) return;
16149
16348
  if (['Backspace', 'Delete'].includes(e.key)) {
@@ -16237,8 +16436,24 @@
16237
16436
  return value === displayItems.value[0].value;
16238
16437
  })) {
16239
16438
  select(displayItems.value[0]);
16240
- } else if (search.value) {
16241
- select(transformItem$3(props, search.value));
16439
+ return;
16440
+ }
16441
+ if (search.value) {
16442
+ if (props.multiple) {
16443
+ select(transformItem$3(props, search.value));
16444
+ return;
16445
+ }
16446
+ if (!hasSelectionSlot.value) return;
16447
+ if (model.value.some(_ref3 => {
16448
+ let {
16449
+ title
16450
+ } = _ref3;
16451
+ return title === search.value;
16452
+ })) {
16453
+ _search.value = '';
16454
+ } else {
16455
+ select(transformItem$3(props, search.value));
16456
+ }
16242
16457
  }
16243
16458
  });
16244
16459
  vue.watch(menu, () => {
@@ -16249,9 +16464,11 @@
16249
16464
  });
16250
16465
  }
16251
16466
  });
16252
- vue.watch(() => props.items, val => {
16253
- if (!isFocused.value || !val.length || menu.value) return;
16254
- menu.value = true;
16467
+ vue.watch(() => props.items, (newVal, oldVal) => {
16468
+ if (menu.value) return;
16469
+ if (isFocused.value && !oldVal.length && newVal.length) {
16470
+ menu.value = true;
16471
+ }
16255
16472
  });
16256
16473
  useRender(() => {
16257
16474
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
@@ -16316,12 +16533,12 @@
16316
16533
  "renderless": true,
16317
16534
  "items": displayItems.value
16318
16535
  }, {
16319
- default: _ref3 => {
16536
+ default: _ref4 => {
16320
16537
  let {
16321
16538
  item,
16322
16539
  index,
16323
16540
  itemRef
16324
- } = _ref3;
16541
+ } = _ref4;
16325
16542
  const itemProps = vue.mergeProps(item.props, {
16326
16543
  ref: itemRef,
16327
16544
  key: index,
@@ -16335,10 +16552,10 @@
16335
16552
  }) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
16336
16553
  "role": "option"
16337
16554
  }), {
16338
- prepend: _ref4 => {
16555
+ prepend: _ref5 => {
16339
16556
  let {
16340
16557
  isSelected
16341
- } = _ref4;
16558
+ } = _ref5;
16342
16559
  return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
16343
16560
  "key": item.value,
16344
16561
  "modelValue": isSelected,
@@ -17354,10 +17571,28 @@
17354
17571
  function getDiff(date, comparing, unit) {
17355
17572
  const d = new Date(date);
17356
17573
  const c = new Date(comparing);
17357
- if (unit === 'month') {
17358
- return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
17574
+ switch (unit) {
17575
+ case 'years':
17576
+ return d.getFullYear() - c.getFullYear();
17577
+ case 'quarters':
17578
+ return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4);
17579
+ case 'months':
17580
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
17581
+ case 'weeks':
17582
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7));
17583
+ case 'days':
17584
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
17585
+ case 'hours':
17586
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60));
17587
+ case 'minutes':
17588
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60));
17589
+ case 'seconds':
17590
+ return Math.floor((d.getTime() - c.getTime()) / 1000);
17591
+ default:
17592
+ {
17593
+ return d.getTime() - c.getTime();
17594
+ }
17359
17595
  }
17360
- return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
17361
17596
  }
17362
17597
  function setHours(date, count) {
17363
17598
  const d = new Date(date);
@@ -20254,6 +20489,7 @@
20254
20489
  emit('click:month');
20255
20490
  }
20256
20491
  useRender(() => {
20492
+ // TODO: add slot support and scope defaults
20257
20493
  return vue.createVNode("div", {
20258
20494
  "class": ['v-date-picker-controls']
20259
20495
  }, [vue.createVNode(VBtn, {
@@ -20552,7 +20788,7 @@
20552
20788
  } else {
20553
20789
  rangeStop.value = _value;
20554
20790
  }
20555
- const diff = adapter.getDiff(rangeStop.value, rangeStart.value);
20791
+ const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
20556
20792
  const datesInRange = [rangeStart.value];
20557
20793
  for (let i = 1; i < diff; i++) {
20558
20794
  const nextDate = adapter.addDays(rangeStart.value, i);
@@ -24366,6 +24602,8 @@
24366
24602
  const controlProps = VSelectionControl.filterProps(props);
24367
24603
  return vue.createVNode(VInput, vue.mergeProps({
24368
24604
  "class": ['v-switch', {
24605
+ 'v-switch--flat': props.flat
24606
+ }, {
24369
24607
  'v-switch--inset': props.inset
24370
24608
  }, {
24371
24609
  'v-switch--indeterminate': indeterminate.value
@@ -25739,7 +25977,7 @@
25739
25977
  goTo
25740
25978
  };
25741
25979
  }
25742
- const version$1 = "3.5.7";
25980
+ const version$1 = "3.5.9";
25743
25981
  createVuetify$1.version = version$1;
25744
25982
 
25745
25983
  // Vue's inject() can only be used in setup
@@ -25764,7 +26002,7 @@
25764
26002
  ...options
25765
26003
  });
25766
26004
  };
25767
- const version = "3.5.7";
26005
+ const version = "3.5.9";
25768
26006
  createVuetify.version = version;
25769
26007
 
25770
26008
  exports.components = components;