vuetify 3.7.10 → 3.7.12

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 (61) hide show
  1. package/dist/json/attributes.json +3092 -3104
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +168 -168
  4. package/dist/json/tags.json +0 -3
  5. package/dist/json/web-types.json +6174 -6201
  6. package/dist/vuetify-labs.css +4937 -4936
  7. package/dist/vuetify-labs.d.ts +90 -165
  8. package/dist/vuetify-labs.esm.js +138 -110
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +137 -109
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +5080 -5079
  13. package/dist/vuetify.d.ts +131 -191
  14. package/dist/vuetify.esm.js +123 -104
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +122 -103
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +935 -923
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -12
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/index.d.mts +25 -47
  24. package/lib/components/VCombobox/VCombobox.mjs +4 -14
  25. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  26. package/lib/components/VCombobox/index.d.mts +25 -47
  27. package/lib/components/VDatePicker/VDatePickerMonth.mjs +2 -2
  28. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  29. package/lib/components/VDatePicker/index.d.mts +12 -24
  30. package/lib/components/VList/VList.mjs +1 -4
  31. package/lib/components/VList/VList.mjs.map +1 -1
  32. package/lib/components/VList/index.d.mts +7 -16
  33. package/lib/components/VOverlay/VOverlay.css +2 -1
  34. package/lib/components/VOverlay/VOverlay.sass +2 -1
  35. package/lib/components/VOverlay/_variables.scss +1 -1
  36. package/lib/components/VSelect/VSelect.mjs +5 -9
  37. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  38. package/lib/components/VSelect/index.d.mts +25 -47
  39. package/lib/components/VSlider/slider.mjs +25 -12
  40. package/lib/components/VSlider/slider.mjs.map +1 -1
  41. package/lib/components/index.d.mts +73 -133
  42. package/lib/composables/calendar.mjs.map +1 -1
  43. package/lib/composables/list-items.mjs +70 -17
  44. package/lib/composables/list-items.mjs.map +1 -1
  45. package/lib/composables/nested/selectStrategies.mjs +6 -7
  46. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  47. package/lib/directives/ripple/index.mjs +7 -5
  48. package/lib/directives/ripple/index.mjs.map +1 -1
  49. package/lib/entry-bundler.mjs +1 -1
  50. package/lib/framework.mjs +1 -1
  51. package/lib/index.d.mts +58 -58
  52. package/lib/labs/VDateInput/VDateInput.mjs +17 -7
  53. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  54. package/lib/labs/VDateInput/index.d.mts +11 -17
  55. package/lib/labs/VTreeview/index.d.mts +7 -16
  56. package/lib/labs/components.d.mts +18 -33
  57. package/lib/util/helpers.mjs +3 -0
  58. package/lib/util/helpers.mjs.map +1 -1
  59. package/package.json +2 -2
  60. package/lib/composables/mousedown.mjs +0 -30
  61. package/lib/composables/mousedown.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.10
2
+ * Vuetify v3.7.12
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -581,6 +581,9 @@
581
581
  const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
582
582
  return isPrintableChar && noModifier;
583
583
  }
584
+ function isPrimitive(value) {
585
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
586
+ }
584
587
 
585
588
  // Utilities
586
589
  const block = ['top', 'bottom'];
@@ -5349,11 +5352,13 @@
5349
5352
  animation.classList.add('v-ripple__animation--visible');
5350
5353
  transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
5351
5354
  animation.dataset.activated = String(performance.now());
5352
- setTimeout(() => {
5353
- animation.classList.remove('v-ripple__animation--enter');
5354
- animation.classList.add('v-ripple__animation--in');
5355
- transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
5356
- }, 0);
5355
+ requestAnimationFrame(() => {
5356
+ requestAnimationFrame(() => {
5357
+ animation.classList.remove('v-ripple__animation--enter');
5358
+ animation.classList.add('v-ripple__animation--in');
5359
+ transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
5360
+ });
5361
+ });
5357
5362
  },
5358
5363
  hide(el) {
5359
5364
  if (!el?._ripple?.enabled) return;
@@ -8348,12 +8353,12 @@
8348
8353
  return selected;
8349
8354
  },
8350
8355
  in: (v, children, parents) => {
8351
- let map = new Map();
8356
+ const map = new Map();
8352
8357
  for (const id of v || []) {
8353
- map = strategy.select({
8358
+ strategy.select({
8354
8359
  id,
8355
8360
  value: true,
8356
- selected: new Map(map),
8361
+ selected: map,
8357
8362
  children,
8358
8363
  parents
8359
8364
  });
@@ -8388,11 +8393,10 @@
8388
8393
  });
8389
8394
  },
8390
8395
  in: (v, children, parents) => {
8391
- let map = new Map();
8392
8396
  if (v?.length) {
8393
- map = parentStrategy.in(v.slice(0, 1), children, parents);
8397
+ return parentStrategy.in(v.slice(0, 1), children, parents);
8394
8398
  }
8395
- return map;
8399
+ return new Map();
8396
8400
  },
8397
8401
  out: (v, children, parents) => {
8398
8402
  return parentStrategy.out(v, children, parents);
@@ -8495,7 +8499,7 @@
8495
8499
  map = strategy.select({
8496
8500
  id,
8497
8501
  value: true,
8498
- selected: new Map(map),
8502
+ selected: map,
8499
8503
  children,
8500
8504
  parents
8501
8505
  });
@@ -9379,10 +9383,7 @@
9379
9383
  default: 'props'
9380
9384
  },
9381
9385
  returnObject: Boolean,
9382
- valueComparator: {
9383
- type: Function,
9384
- default: deepEqual
9385
- }
9386
+ valueComparator: Function
9386
9387
  }, 'list-items');
9387
9388
  function transformItem$3(props, item) {
9388
9389
  const title = getPropertyFromItem(item, props.itemTitle, item);
@@ -9403,29 +9404,85 @@
9403
9404
  };
9404
9405
  }
9405
9406
  function transformItems$3(props, items) {
9407
+ const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
9406
9408
  const array = [];
9407
9409
  for (const item of items) {
9408
- array.push(transformItem$3(props, item));
9410
+ array.push(transformItem$3(_props, item));
9409
9411
  }
9410
9412
  return array;
9411
9413
  }
9412
9414
  function useItems(props) {
9413
9415
  const items = vue.computed(() => transformItems$3(props, props.items));
9414
9416
  const hasNullItem = vue.computed(() => items.value.some(item => item.value === null));
9417
+ const itemsMap = vue.shallowRef(new Map());
9418
+ const keylessItems = vue.shallowRef([]);
9419
+ vue.watchEffect(() => {
9420
+ const _items = items.value;
9421
+ const map = new Map();
9422
+ const keyless = [];
9423
+ for (let i = 0; i < _items.length; i++) {
9424
+ const item = _items[i];
9425
+ if (isPrimitive(item.value) || item.value === null) {
9426
+ let values = map.get(item.value);
9427
+ if (!values) {
9428
+ values = [];
9429
+ map.set(item.value, values);
9430
+ }
9431
+ values.push(item);
9432
+ } else {
9433
+ keyless.push(item);
9434
+ }
9435
+ }
9436
+ itemsMap.value = map;
9437
+ keylessItems.value = keyless;
9438
+ });
9415
9439
  function transformIn(value) {
9416
- if (!hasNullItem.value) {
9440
+ // Cache unrefed values outside the loop,
9441
+ // proxy getters can be slow when you call them a billion times
9442
+ const _value = vue.toRaw(value);
9443
+ const _items = itemsMap.value;
9444
+ const _allItems = items.value;
9445
+ const _keylessItems = keylessItems.value;
9446
+ const _hasNullItem = hasNullItem.value;
9447
+ const _returnObject = props.returnObject;
9448
+ const hasValueComparator = !!props.valueComparator;
9449
+ const valueComparator = props.valueComparator || deepEqual;
9450
+ const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
9451
+ const returnValue = [];
9452
+ main: for (const v of _value) {
9417
9453
  // When the model value is null, return an InternalItem
9418
9454
  // based on null only if null is one of the items
9419
- value = value.filter(v => v !== null);
9420
- }
9421
- return value.map(v => {
9422
- if (props.returnObject && typeof v === 'string') {
9423
- // String model value means value is a custom input value from combobox
9424
- // Don't look up existing items if the model value is a string
9425
- return transformItem$3(props, v);
9455
+ if (!_hasNullItem && v === null) continue;
9456
+
9457
+ // String model value means value is a custom input value from combobox
9458
+ // Don't look up existing items if the model value is a string
9459
+ if (_returnObject && typeof v === 'string') {
9460
+ returnValue.push(transformItem$3(_props, v));
9461
+ continue;
9426
9462
  }
9427
- return items.value.find(item => props.valueComparator(v, item.value)) || transformItem$3(props, v);
9428
- });
9463
+
9464
+ // Fast path, items with primitive values and no
9465
+ // custom valueComparator can use a constant-time
9466
+ // map lookup instead of searching the items array
9467
+ const fastItems = _items.get(v);
9468
+
9469
+ // Slow path, always use valueComparator.
9470
+ // This is O(n^2) so we really don't want to
9471
+ // do it for more than a couple hundred items.
9472
+ if (hasValueComparator || !fastItems) {
9473
+ for (const item of hasValueComparator ? _allItems : _keylessItems) {
9474
+ if (valueComparator(v, item.value)) {
9475
+ returnValue.push(item);
9476
+ continue main;
9477
+ }
9478
+ }
9479
+ // Not an existing item, construct it from the model (#4000)
9480
+ returnValue.push(transformItem$3(_props, v));
9481
+ continue;
9482
+ }
9483
+ returnValue.push(...fastItems);
9484
+ }
9485
+ return returnValue;
9429
9486
  }
9430
9487
  function transformOut(value) {
9431
9488
  return props.returnObject ? value.map(_ref => {
@@ -9449,9 +9506,6 @@
9449
9506
 
9450
9507
  // Types
9451
9508
 
9452
- function isPrimitive(value) {
9453
- return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
9454
- }
9455
9509
  function transformItem$2(props, item) {
9456
9510
  const type = getPropertyFromItem(item, props.itemType, 'item');
9457
9511
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
@@ -12404,34 +12458,6 @@
12404
12458
  }; // typescript doesn't know about vue's event merging
12405
12459
  }
12406
12460
 
12407
- // https://github.com/vuetifyjs/vuetify/issues/20003
12408
- /**
12409
- * This composable is designed to track whether the mouse is in a mousedown state at any given time. The original motivation is that
12410
- * it is impossible to distinguish whether a blur event is triggered by mousedown, keydown, or via JavaScript.
12411
- * This composable allows for conditional logic when a blur is triggered by mousedown.
12412
- */
12413
-
12414
- function useIsMousedown() {
12415
- const isMousedown = vue.shallowRef(false);
12416
- function mousedown() {
12417
- isMousedown.value = true;
12418
- }
12419
- function mouseup() {
12420
- isMousedown.value = false;
12421
- }
12422
- vue.onMounted(() => {
12423
- document.body.addEventListener('mousedown', mousedown);
12424
- document.body.addEventListener('mouseup', mouseup);
12425
- });
12426
- vue.onUnmounted(() => {
12427
- document.body.removeEventListener('mousedown', mousedown);
12428
- document.body.removeEventListener('mouseup', mouseup);
12429
- });
12430
- return {
12431
- isMousedown
12432
- };
12433
- }
12434
-
12435
12461
  // Types
12436
12462
 
12437
12463
  const makeSelectProps = propsFactory({
@@ -12521,9 +12547,6 @@
12521
12547
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
12522
12548
  });
12523
12549
  const form = useForm(props);
12524
- const {
12525
- isMousedown
12526
- } = useIsMousedown();
12527
12550
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
12528
12551
  const isFocused = vue.shallowRef(false);
12529
12552
  const label = vue.computed(() => menu.value ? props.closeText : props.openText);
@@ -12531,7 +12554,7 @@
12531
12554
  let keyboardLookupLastTime;
12532
12555
  const displayItems = vue.computed(() => {
12533
12556
  if (props.hideSelected) {
12534
- return items.value.filter(item => !model.value.some(s => props.valueComparator(s, item)));
12557
+ return items.value.filter(item => !model.value.some(s => (props.valueComparator || deepEqual)(s, item)));
12535
12558
  }
12536
12559
  return items.value;
12537
12560
  });
@@ -12603,7 +12626,7 @@
12603
12626
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12604
12627
  if (item.props.disabled) return;
12605
12628
  if (props.multiple) {
12606
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12629
+ const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
12607
12630
  const add = set == null ? !~index : set;
12608
12631
  if (~index) {
12609
12632
  const value = add ? [...model.value, item] : [...model.value];
@@ -12621,7 +12644,7 @@
12621
12644
  }
12622
12645
  }
12623
12646
  function onBlur(e) {
12624
- if (!listRef.value?.$el.contains(e.relatedTarget) && !isMousedown.value) {
12647
+ if (!listRef.value?.$el.contains(e.relatedTarget)) {
12625
12648
  menu.value = false;
12626
12649
  }
12627
12650
  }
@@ -12650,7 +12673,7 @@
12650
12673
  }
12651
12674
  vue.watch(menu, () => {
12652
12675
  if (!props.hideSelected && menu.value && model.value.length) {
12653
- const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
12676
+ const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
12654
12677
  IN_BROWSER && window.requestAnimationFrame(() => {
12655
12678
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
12656
12679
  });
@@ -13033,9 +13056,6 @@
13033
13056
  textColorClasses,
13034
13057
  textColorStyles
13035
13058
  } = useTextColor(color);
13036
- const {
13037
- isMousedown
13038
- } = useIsMousedown();
13039
13059
  const search = useProxiedModel(props, 'search', '');
13040
13060
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13041
13061
  const transformed = transformOut(v);
@@ -13185,7 +13205,7 @@
13185
13205
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
13186
13206
  if (!item || item.props.disabled) return;
13187
13207
  if (props.multiple) {
13188
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
13208
+ const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
13189
13209
  const add = set == null ? !~index : set;
13190
13210
  if (~index) {
13191
13211
  const value = add ? [...model.value, item] : [...model.value];
@@ -13209,11 +13229,6 @@
13209
13229
  });
13210
13230
  }
13211
13231
  }
13212
- function onBlur(e) {
13213
- if (!isMousedown.value) {
13214
- menu.value = false;
13215
- }
13216
- }
13217
13232
  vue.watch(isFocused, (val, oldVal) => {
13218
13233
  if (val === oldVal) return;
13219
13234
  if (val) {
@@ -13223,6 +13238,7 @@
13223
13238
  vue.nextTick(() => isSelecting.value = false);
13224
13239
  } else {
13225
13240
  if (!props.multiple && search.value == null) model.value = [];
13241
+ menu.value = false;
13226
13242
  if (!model.value.some(_ref3 => {
13227
13243
  let {
13228
13244
  title
@@ -13276,7 +13292,6 @@
13276
13292
  "readonly": form.isReadonly.value,
13277
13293
  "placeholder": isDirty ? undefined : props.placeholder,
13278
13294
  "onClick:clear": onClear,
13279
- "onBlur": onBlur,
13280
13295
  "onMousedown:control": onMousedownControl,
13281
13296
  "onKeydown": onKeydown
13282
13297
  }), {
@@ -15579,6 +15594,8 @@
15579
15594
  const trackContainerRef = vue.ref();
15580
15595
  const activeThumbRef = vue.ref();
15581
15596
  function parseMouseMove(e) {
15597
+ const el = trackContainerRef.value?.$el;
15598
+ if (!el) return;
15582
15599
  const vertical = props.direction === 'vertical';
15583
15600
  const start = vertical ? 'top' : 'left';
15584
15601
  const length = vertical ? 'height' : 'width';
@@ -15586,7 +15603,7 @@
15586
15603
  const {
15587
15604
  [start]: trackStart,
15588
15605
  [length]: trackLength
15589
- } = trackContainerRef.value?.$el.getBoundingClientRect();
15606
+ } = el.getBoundingClientRect();
15590
15607
  const clickOffset = getPosition(e, position);
15591
15608
 
15592
15609
  // It is possible for left to be NaN, force to number
@@ -15595,13 +15612,17 @@
15595
15612
  return roundValue(min.value + clickPos * (max.value - min.value));
15596
15613
  }
15597
15614
  const handleStop = e => {
15598
- onSliderEnd({
15599
- value: parseMouseMove(e)
15600
- });
15615
+ const value = parseMouseMove(e);
15616
+ if (value != null) {
15617
+ onSliderEnd({
15618
+ value
15619
+ });
15620
+ }
15601
15621
  mousePressed.value = false;
15602
15622
  startOffset.value = 0;
15603
15623
  };
15604
15624
  const handleStart = e => {
15625
+ const value = parseMouseMove(e);
15605
15626
  activeThumbRef.value = getActiveThumb(e);
15606
15627
  if (!activeThumbRef.value) return;
15607
15628
  mousePressed.value = true;
@@ -15609,13 +15630,17 @@
15609
15630
  startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
15610
15631
  } else {
15611
15632
  startOffset.value = 0;
15612
- onSliderMove({
15613
- value: parseMouseMove(e)
15633
+ if (value != null) {
15634
+ onSliderMove({
15635
+ value
15636
+ });
15637
+ }
15638
+ }
15639
+ if (value != null) {
15640
+ onSliderStart({
15641
+ value
15614
15642
  });
15615
15643
  }
15616
- onSliderStart({
15617
- value: parseMouseMove(e)
15618
- });
15619
15644
  vue.nextTick(() => activeThumbRef.value?.focus());
15620
15645
  };
15621
15646
  const moveListenerOptions = {
@@ -15623,9 +15648,12 @@
15623
15648
  capture: true
15624
15649
  };
15625
15650
  function onMouseMove(e) {
15626
- onSliderMove({
15627
- value: parseMouseMove(e)
15628
- });
15651
+ const value = parseMouseMove(e);
15652
+ if (value != null) {
15653
+ onSliderMove({
15654
+ value
15655
+ });
15656
+ }
15629
15657
  }
15630
15658
  function onSliderMouseUp(e) {
15631
15659
  e.stopPropagation();
@@ -16896,9 +16924,6 @@
16896
16924
  return props.multiple ? transformed : transformed[0] ?? null;
16897
16925
  });
16898
16926
  const form = useForm(props);
16899
- const {
16900
- isMousedown
16901
- } = useIsMousedown();
16902
16927
  const hasChips = vue.computed(() => !!(props.chips || slots.chip));
16903
16928
  const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
16904
16929
  const _search = vue.shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
@@ -17062,18 +17087,12 @@
17062
17087
  vTextFieldRef.value?.focus();
17063
17088
  }
17064
17089
  }
17065
- function onBlur(e) {
17066
- if (!isMousedown.value) {
17067
- menu.value = false;
17068
- }
17069
- }
17070
-
17071
17090
  /** @param set - null means toggle */
17072
17091
  function select(item) {
17073
17092
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
17074
17093
  if (!item || item.props.disabled) return;
17075
17094
  if (props.multiple) {
17076
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
17095
+ const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
17077
17096
  const add = set == null ? !~index : set;
17078
17097
  if (~index) {
17079
17098
  const value = add ? [...model.value, item] : [...model.value];
@@ -17112,6 +17131,7 @@
17112
17131
  vue.watch(isFocused, (val, oldVal) => {
17113
17132
  if (val || val === oldVal) return;
17114
17133
  selectionIndex.value = -1;
17134
+ menu.value = false;
17115
17135
  if (search.value) {
17116
17136
  if (props.multiple) {
17117
17137
  select(transformItem$3(props, search.value));
@@ -17132,7 +17152,7 @@
17132
17152
  });
17133
17153
  vue.watch(menu, () => {
17134
17154
  if (!props.hideSelected && menu.value && model.value.length) {
17135
- const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
17155
+ const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
17136
17156
  IN_BROWSER && window.requestAnimationFrame(() => {
17137
17157
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
17138
17158
  });
@@ -17169,7 +17189,6 @@
17169
17189
  "readonly": form.isReadonly.value,
17170
17190
  "placeholder": isDirty ? undefined : props.placeholder,
17171
17191
  "onClick:clear": onClear,
17172
- "onBlur": onBlur,
17173
17192
  "onMousedown:control": onMousedownControl,
17174
17193
  "onKeydown": onKeydown
17175
17194
  }), {
@@ -21767,7 +21786,7 @@
21767
21786
  type: String,
21768
21787
  default: 'picker-reverse-transition'
21769
21788
  },
21770
- ...makeCalendarProps()
21789
+ ...omit(makeCalendarProps(), ['displayValue'])
21771
21790
  }, 'VDatePickerMonth');
21772
21791
  const VDatePickerMonth = genericComponent()({
21773
21792
  name: 'VDatePickerMonth',
@@ -28176,7 +28195,7 @@
28176
28195
  ...omit(makeVDatePickerProps({
28177
28196
  weeksInMonth: 'dynamic',
28178
28197
  hideHeader: true
28179
- }), ['active', 'location'])
28198
+ }), ['active', 'location', 'rounded'])
28180
28199
  }, 'VDateInput');
28181
28200
  const VDateInput = genericComponent()({
28182
28201
  name: 'VDateInput',
@@ -28197,8 +28216,9 @@
28197
28216
  focus,
28198
28217
  blur
28199
28218
  } = useFocus(props);
28200
- const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null);
28219
+ const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null, val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
28201
28220
  const menu = vue.shallowRef(false);
28221
+ const vDateInputRef = vue.ref();
28202
28222
  const display = vue.computed(() => {
28203
28223
  const value = wrapInArray(model.value);
28204
28224
  if (!value.length) return null;
@@ -28220,7 +28240,7 @@
28220
28240
  return;
28221
28241
  }
28222
28242
  const target = e.target;
28223
- model.value = adapter.date(target.value);
28243
+ model.value = target.value;
28224
28244
  }
28225
28245
  function onClick(e) {
28226
28246
  e.preventDefault();
@@ -28230,11 +28250,17 @@
28230
28250
  function onSave() {
28231
28251
  menu.value = false;
28232
28252
  }
28253
+ function onUpdateModel(value) {
28254
+ if (value != null) return;
28255
+ model.value = null;
28256
+ }
28233
28257
  useRender(() => {
28234
28258
  const confirmEditProps = VConfirmEdit.filterProps(props);
28235
- const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location']));
28259
+ const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
28236
28260
  const textFieldProps = VTextField.filterProps(props);
28237
- return vue.createVNode(VTextField, vue.mergeProps(textFieldProps, {
28261
+ return vue.createVNode(VTextField, vue.mergeProps({
28262
+ "ref": vDateInputRef
28263
+ }, textFieldProps, {
28238
28264
  "class": props.class,
28239
28265
  "style": props.style,
28240
28266
  "modelValue": display.value,
@@ -28243,7 +28269,8 @@
28243
28269
  "onFocus": focus,
28244
28270
  "onBlur": blur,
28245
28271
  "onClick:control": isInteractive.value ? onClick : undefined,
28246
- "onClick:prepend": isInteractive.value ? onClick : undefined
28272
+ "onClick:prepend": isInteractive.value ? onClick : undefined,
28273
+ "onUpdate:modelValue": onUpdateModel
28247
28274
  }), {
28248
28275
  default: () => [vue.createVNode(VMenu, {
28249
28276
  "modelValue": menu.value,
@@ -28291,6 +28318,7 @@
28291
28318
  }), slots.default?.()]
28292
28319
  });
28293
28320
  });
28321
+ return forwardRefs({}, vDateInputRef);
28294
28322
  }
28295
28323
  });
28296
28324
 
@@ -30869,7 +30897,7 @@
30869
30897
  goTo
30870
30898
  };
30871
30899
  }
30872
- const version$1 = "3.7.10";
30900
+ const version$1 = "3.7.12";
30873
30901
  createVuetify$1.version = version$1;
30874
30902
 
30875
30903
  // Vue's inject() can only be used in setup
@@ -31122,7 +31150,7 @@
31122
31150
 
31123
31151
  /* eslint-disable local-rules/sort-imports */
31124
31152
 
31125
- const version = "3.7.10";
31153
+ const version = "3.7.12";
31126
31154
 
31127
31155
  /* eslint-disable local-rules/sort-imports */
31128
31156