vuetify 3.5.3 → 3.5.5

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 (159) hide show
  1. package/dist/json/attributes.json +2771 -2523
  2. package/dist/json/importMap-labs.json +12 -8
  3. package/dist/json/importMap.json +100 -100
  4. package/dist/json/tags.json +236 -169
  5. package/dist/json/web-types.json +3218 -2563
  6. package/dist/vuetify-labs.css +2265 -2242
  7. package/dist/vuetify-labs.d.ts +1234 -152
  8. package/dist/vuetify-labs.esm.js +582 -88
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +582 -88
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1316 -1293
  13. package/dist/vuetify.d.ts +894 -187
  14. package/dist/vuetify.esm.js +148 -87
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +148 -87
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +652 -647
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/index.d.mts +9 -0
  22. package/lib/components/VAppBar/index.d.mts +18 -0
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VAutocomplete/index.d.mts +33 -6
  26. package/lib/components/VAvatar/VAvatar.mjs +2 -2
  27. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  28. package/lib/components/VAvatar/index.d.mts +9 -0
  29. package/lib/components/VBadge/index.d.mts +9 -0
  30. package/lib/components/VBanner/index.d.mts +9 -0
  31. package/lib/components/VBottomNavigation/index.d.mts +9 -0
  32. package/lib/components/VBreadcrumbs/index.d.mts +9 -0
  33. package/lib/components/VBtn/index.d.mts +9 -0
  34. package/lib/components/VBtnGroup/index.d.mts +9 -0
  35. package/lib/components/VBtnToggle/index.d.mts +9 -0
  36. package/lib/components/VCard/index.d.mts +9 -0
  37. package/lib/components/VCarousel/index.d.mts +9 -0
  38. package/lib/components/VChip/index.d.mts +9 -0
  39. package/lib/components/VColorPicker/VColorPicker.mjs +24 -12
  40. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  41. package/lib/components/VColorPicker/index.d.mts +9 -0
  42. package/lib/components/VCombobox/index.d.mts +33 -6
  43. package/lib/components/VDataIterator/index.d.mts +3 -3
  44. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  45. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  46. package/lib/components/VDataTable/index.d.mts +355 -117
  47. package/lib/components/VDataTable/types.mjs.map +1 -1
  48. package/lib/components/VDatePicker/VDatePicker.css +2 -21
  49. package/lib/components/VDatePicker/VDatePicker.mjs +15 -11
  50. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  51. package/lib/components/VDatePicker/VDatePicker.sass +3 -18
  52. package/lib/components/VDatePicker/VDatePickerHeader.css +2 -0
  53. package/lib/components/VDatePicker/VDatePickerHeader.sass +3 -0
  54. package/lib/components/VDatePicker/VDatePickerMonth.css +11 -5
  55. package/lib/components/VDatePicker/VDatePickerMonth.mjs +2 -1
  56. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  57. package/lib/components/VDatePicker/VDatePickerMonth.sass +13 -5
  58. package/lib/components/VDatePicker/VDatePickerMonths.css +2 -3
  59. package/lib/components/VDatePicker/VDatePickerMonths.mjs +6 -3
  60. package/lib/components/VDatePicker/VDatePickerMonths.mjs.map +1 -1
  61. package/lib/components/VDatePicker/VDatePickerMonths.sass +4 -3
  62. package/lib/components/VDatePicker/VDatePickerYears.css +2 -2
  63. package/lib/components/VDatePicker/VDatePickerYears.mjs +8 -1
  64. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  65. package/lib/components/VDatePicker/VDatePickerYears.sass +4 -2
  66. package/lib/components/VDatePicker/_variables.scss +14 -34
  67. package/lib/components/VDatePicker/index.d.mts +13 -4
  68. package/lib/components/VExpansionPanel/VExpansionPanel.css +14 -0
  69. package/lib/components/VExpansionPanel/VExpansionPanel.sass +14 -0
  70. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +9 -2
  71. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  72. package/lib/components/VExpansionPanel/index.d.mts +27 -0
  73. package/lib/components/VField/VField.css +20 -1
  74. package/lib/components/VField/VField.sass +19 -1
  75. package/lib/components/VField/index.d.mts +9 -0
  76. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  77. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  78. package/lib/components/VFileInput/index.d.mts +9 -0
  79. package/lib/components/VFooter/index.d.mts +9 -0
  80. package/lib/components/VImg/index.d.mts +9 -0
  81. package/lib/components/VList/VListItem.css +2 -1
  82. package/lib/components/VList/VListItem.sass +1 -0
  83. package/lib/components/VList/_variables.scss +2 -1
  84. package/lib/components/VList/index.d.mts +18 -0
  85. package/lib/components/VMenu/VMenu.mjs +5 -5
  86. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  87. package/lib/components/VMenu/shared.mjs.map +1 -1
  88. package/lib/components/VNavigationDrawer/index.d.mts +9 -0
  89. package/lib/components/VPagination/index.d.mts +9 -0
  90. package/lib/components/VProgressLinear/index.d.mts +9 -0
  91. package/lib/components/VRangeSlider/index.d.mts +9 -0
  92. package/lib/components/VSelect/VSelect.mjs +4 -3
  93. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  94. package/lib/components/VSelect/index.d.mts +33 -6
  95. package/lib/components/VSheet/index.d.mts +9 -0
  96. package/lib/components/VSlider/index.d.mts +9 -0
  97. package/lib/components/VSnackbar/VSnackbar.mjs +1 -2
  98. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  99. package/lib/components/VSnackbar/index.d.mts +9 -0
  100. package/lib/components/VStepper/index.d.mts +9 -0
  101. package/lib/components/VSystemBar/index.d.mts +9 -0
  102. package/lib/components/VTabs/index.d.mts +33 -6
  103. package/lib/components/VTextField/index.d.mts +33 -6
  104. package/lib/components/VTextarea/index.d.mts +9 -0
  105. package/lib/components/VTimeline/index.d.mts +9 -0
  106. package/lib/components/VToolbar/index.d.mts +9 -0
  107. package/lib/components/VTooltip/VTooltip.css +1 -0
  108. package/lib/components/VTooltip/VTooltip.sass +1 -0
  109. package/lib/components/VTooltip/_variables.scss +1 -0
  110. package/lib/components/index.d.mts +857 -151
  111. package/lib/composables/form.mjs +2 -1
  112. package/lib/composables/form.mjs.map +1 -1
  113. package/lib/composables/goto.mjs +16 -18
  114. package/lib/composables/goto.mjs.map +1 -1
  115. package/lib/composables/group.mjs +2 -0
  116. package/lib/composables/group.mjs.map +1 -1
  117. package/lib/composables/icons.mjs +17 -13
  118. package/lib/composables/icons.mjs.map +1 -1
  119. package/lib/composables/rounded.mjs +5 -1
  120. package/lib/composables/rounded.mjs.map +1 -1
  121. package/lib/composables/virtual.mjs +11 -3
  122. package/lib/composables/virtual.mjs.map +1 -1
  123. package/lib/entry-bundler.mjs +1 -1
  124. package/lib/framework.mjs +1 -1
  125. package/lib/iconsets/fa-svg.mjs +2 -1
  126. package/lib/iconsets/fa-svg.mjs.map +1 -1
  127. package/lib/index.d.mts +37 -36
  128. package/lib/labs/VCalendar/VCalendar.mjs +1 -1
  129. package/lib/labs/VCalendar/VCalendar.mjs.map +1 -1
  130. package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs +1 -1
  131. package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +1 -1
  132. package/lib/labs/VPicker/VPicker.css +2 -2
  133. package/lib/labs/VPicker/VPicker.sass +2 -2
  134. package/lib/labs/VPicker/_variables.scss +2 -4
  135. package/lib/labs/VPicker/index.d.mts +9 -0
  136. package/lib/labs/VSparkline/VBarline.mjs +138 -0
  137. package/lib/labs/VSparkline/VBarline.mjs.map +1 -0
  138. package/lib/labs/VSparkline/VSparkline.mjs +49 -0
  139. package/lib/labs/VSparkline/VSparkline.mjs.map +1 -0
  140. package/lib/labs/VSparkline/VTrendline.mjs +143 -0
  141. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -0
  142. package/lib/labs/VSparkline/index.d.mts +374 -0
  143. package/lib/labs/VSparkline/index.mjs +2 -0
  144. package/lib/labs/VSparkline/index.mjs.map +1 -0
  145. package/lib/labs/VSparkline/util/line.mjs +52 -0
  146. package/lib/labs/VSparkline/util/line.mjs.map +1 -0
  147. package/lib/labs/VSparkline/util/path.mjs +60 -0
  148. package/lib/labs/VSparkline/util/path.mjs.map +1 -0
  149. package/lib/labs/components.d.mts +376 -1
  150. package/lib/labs/components.mjs +1 -0
  151. package/lib/labs/components.mjs.map +1 -1
  152. package/lib/locale/nl.mjs +1 -1
  153. package/lib/locale/nl.mjs.map +1 -1
  154. package/lib/util/helpers.mjs +10 -0
  155. package/lib/util/helpers.mjs.map +1 -1
  156. package/package.json +2 -2
  157. package/lib/components/VDatePicker/VDatePickerTitle.mjs +0 -81
  158. package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +0 -1
  159. package/lib/components/VDatePicker/VDatePickerTitle.sass +0 -33
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.3
2
+ * Vuetify v3.5.5
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -543,6 +543,16 @@
543
543
  const timeoutId = window.setTimeout(cb, timeout);
544
544
  return () => window.clearTimeout(timeoutId);
545
545
  }
546
+ function isClickInsideElement(event, targetDiv) {
547
+ const mouseX = event.clientX;
548
+ const mouseY = event.clientY;
549
+ const divRect = targetDiv.getBoundingClientRect();
550
+ const divLeft = divRect.left;
551
+ const divTop = divRect.top;
552
+ const divRight = divRect.right;
553
+ const divBottom = divRect.bottom;
554
+ return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;
555
+ }
546
556
 
547
557
  // Utilities
548
558
  const block = ['top', 'bottom'];
@@ -2154,7 +2164,7 @@
2154
2164
  vue.provide(LocaleSymbol, data);
2155
2165
  return data;
2156
2166
  }
2157
- function genDefaults$2() {
2167
+ function genDefaults$3() {
2158
2168
  return {
2159
2169
  af: false,
2160
2170
  ar: true,
@@ -2201,7 +2211,7 @@
2201
2211
  };
2202
2212
  }
2203
2213
  function createRtl(i18n, options) {
2204
- const rtl = vue.ref(options?.rtl ?? genDefaults$2());
2214
+ const rtl = vue.ref(options?.rtl ?? genDefaults$3());
2205
2215
  const isRtl = vue.computed(() => rtl.value[i18n.current.value] ?? false);
2206
2216
  return {
2207
2217
  isRtl,
@@ -2234,7 +2244,7 @@
2234
2244
  const makeThemeProps = propsFactory({
2235
2245
  theme: String
2236
2246
  }, 'theme');
2237
- function genDefaults$1() {
2247
+ function genDefaults$2() {
2238
2248
  return {
2239
2249
  defaultTheme: 'light',
2240
2250
  variations: {
@@ -2321,8 +2331,8 @@
2321
2331
  };
2322
2332
  }
2323
2333
  function parseThemeOptions() {
2324
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$1();
2325
- const defaults = genDefaults$1();
2334
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$2();
2335
+ const defaults = genDefaults$2();
2326
2336
  if (!options) return {
2327
2337
  ...defaults,
2328
2338
  isDisabled: true
@@ -3105,12 +3115,14 @@
3105
3115
  rounded: {
3106
3116
  type: [Boolean, Number, String],
3107
3117
  default: undefined
3108
- }
3118
+ },
3119
+ tile: Boolean
3109
3120
  }, 'rounded');
3110
3121
  function useRounded(props) {
3111
3122
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
3112
3123
  const roundedClasses = vue.computed(() => {
3113
3124
  const rounded = vue.isRef(props) ? props.value : props.rounded;
3125
+ const tile = vue.isRef(props) ? props.value : props.tile;
3114
3126
  const classes = [];
3115
3127
  if (rounded === true || rounded === '') {
3116
3128
  classes.push(`${name}--rounded`);
@@ -3118,6 +3130,8 @@
3118
3130
  for (const value of String(rounded).split(' ')) {
3119
3131
  classes.push(`rounded-${value}`);
3120
3132
  }
3133
+ } else if (tile) {
3134
+ classes.push('rounded-0');
3121
3135
  }
3122
3136
  return classes;
3123
3137
  });
@@ -4108,6 +4122,8 @@
4108
4122
  vm.emit('group:selected', {
4109
4123
  value
4110
4124
  });
4125
+ }, {
4126
+ flush: 'sync'
4111
4127
  });
4112
4128
  return {
4113
4129
  id,
@@ -4443,23 +4459,27 @@
4443
4459
  };
4444
4460
  }
4445
4461
  });
4446
- const defaultSets = {
4447
- svg: {
4448
- component: VSvgIcon
4449
- },
4450
- class: {
4451
- component: VClassIcon
4452
- }
4453
- };
4462
+ function genDefaults$1() {
4463
+ return {
4464
+ svg: {
4465
+ component: VSvgIcon
4466
+ },
4467
+ class: {
4468
+ component: VClassIcon
4469
+ }
4470
+ };
4471
+ }
4454
4472
 
4455
4473
  // Composables
4456
4474
  function createIcons(options) {
4475
+ const sets = genDefaults$1();
4476
+ const defaultSet = options?.defaultSet ?? 'mdi';
4477
+ if (defaultSet === 'mdi' && !sets.mdi) {
4478
+ sets.mdi = mdi;
4479
+ }
4457
4480
  return mergeDeep({
4458
- defaultSet: 'mdi',
4459
- sets: {
4460
- ...defaultSets,
4461
- mdi
4462
- },
4481
+ defaultSet,
4482
+ sets,
4463
4483
  aliases: {
4464
4484
  ...aliases,
4465
4485
  /* eslint-disable max-len */
@@ -5895,7 +5915,7 @@
5895
5915
  }, null) : props.text : vue.createVNode(VDefaultsProvider, {
5896
5916
  "key": "content-defaults",
5897
5917
  "defaults": {
5898
- VAvatar: {
5918
+ VImg: {
5899
5919
  cover: true,
5900
5920
  image: props.image
5901
5921
  },
@@ -5904,7 +5924,7 @@
5904
5924
  }
5905
5925
  }
5906
5926
  }, {
5907
- default: () => [slots.default?.()]
5927
+ default: () => [slots.default()]
5908
5928
  }), genOverlays(false, 'v-avatar')]
5909
5929
  }));
5910
5930
  return {};
@@ -6463,7 +6483,8 @@
6463
6483
  errors.value = results;
6464
6484
  model.value = invalid > 0 ? false : valid === items.value.length ? true : null;
6465
6485
  }, {
6466
- deep: true
6486
+ deep: true,
6487
+ flush: 'post'
6467
6488
  });
6468
6489
  vue.provide(FormKey, {
6469
6490
  register: _ref => {
@@ -10567,9 +10588,9 @@
10567
10588
  unregister() {
10568
10589
  --openChildren.value;
10569
10590
  },
10570
- closeParents() {
10591
+ closeParents(e) {
10571
10592
  setTimeout(() => {
10572
- if (!openChildren.value) {
10593
+ if (!openChildren.value && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
10573
10594
  isActive.value = false;
10574
10595
  parent?.closeParents();
10575
10596
  }
@@ -10602,8 +10623,8 @@
10602
10623
  document.removeEventListener('focusin', onFocusIn);
10603
10624
  }
10604
10625
  });
10605
- function onClickOutside() {
10606
- parent?.closeParents();
10626
+ function onClickOutside(e) {
10627
+ parent?.closeParents(e);
10607
10628
  }
10608
10629
  function onKeydown(e) {
10609
10630
  if (props.disabled) return;
@@ -11337,9 +11358,6 @@
11337
11358
  });
11338
11359
  });
11339
11360
  });
11340
- vue.watch(viewportHeight, (val, oldVal) => {
11341
- oldVal && calculateVisibleItems();
11342
- });
11343
11361
  vue.onScopeDispose(() => {
11344
11362
  updateOffsets.clear();
11345
11363
  });
@@ -11362,6 +11380,17 @@
11362
11380
  let lastScrollTop = 0;
11363
11381
  let scrollVelocity = 0;
11364
11382
  let lastScrollTime = 0;
11383
+ vue.watch(viewportHeight, (val, oldVal) => {
11384
+ if (oldVal) {
11385
+ calculateVisibleItems();
11386
+ if (val < oldVal) {
11387
+ requestAnimationFrame(() => {
11388
+ scrollVelocity = 0;
11389
+ calculateVisibleItems();
11390
+ });
11391
+ }
11392
+ }
11393
+ });
11365
11394
  function handleScroll() {
11366
11395
  if (!containerRef.value || !markerRef.value) return;
11367
11396
  const scrollTop = containerRef.value.scrollTop;
@@ -11814,9 +11843,10 @@
11814
11843
  }
11815
11844
  }
11816
11845
  function select(item) {
11846
+ const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11847
+ const add = index === -1;
11817
11848
  if (props.multiple) {
11818
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11819
- if (index === -1) {
11849
+ if (add) {
11820
11850
  model.value = [...model.value, item];
11821
11851
  } else {
11822
11852
  const value = [...model.value];
@@ -11824,7 +11854,7 @@
11824
11854
  model.value = value;
11825
11855
  }
11826
11856
  } else {
11827
- model.value = [item];
11857
+ model.value = add ? [item] : [];
11828
11858
  menu.value = false;
11829
11859
  }
11830
11860
  }
@@ -12361,11 +12391,11 @@
12361
12391
  }
12362
12392
  const isSelecting = vue.shallowRef(false);
12363
12393
  function select(item) {
12364
- let add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12365
12394
  if (item.props.disabled) return;
12395
+ const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12396
+ const add = index === -1;
12366
12397
  if (props.multiple) {
12367
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12368
- if (index === -1) {
12398
+ if (add) {
12369
12399
  model.value = [...model.value, item];
12370
12400
  } else {
12371
12401
  const value = [...model.value];
@@ -12534,7 +12564,7 @@
12534
12564
  function onChipClose(e) {
12535
12565
  e.stopPropagation();
12536
12566
  e.preventDefault();
12537
- select(item, false);
12567
+ select(item);
12538
12568
  }
12539
12569
  const slotProps = {
12540
12570
  'onClick:close': onChipClose,
@@ -15806,8 +15836,8 @@
15806
15836
  },
15807
15837
  setup(props) {
15808
15838
  const mode = useProxiedModel(props, 'mode');
15809
- const lastPickedColor = vue.ref(null);
15810
- const currentColor = useProxiedModel(props, 'modelValue', undefined, v => {
15839
+ const hue = vue.ref(null);
15840
+ const model = useProxiedModel(props, 'modelValue', undefined, v => {
15811
15841
  if (v == null || v === '') return null;
15812
15842
  let c;
15813
15843
  try {
@@ -15816,24 +15846,36 @@
15816
15846
  consoleWarn(err);
15817
15847
  return null;
15818
15848
  }
15819
- if (lastPickedColor.value) {
15820
- c = {
15821
- ...c,
15822
- h: lastPickedColor.value.h
15823
- };
15824
- lastPickedColor.value = null;
15825
- }
15826
15849
  return c;
15827
15850
  }, v => {
15828
15851
  if (!v) return null;
15829
15852
  return extractColor(v, props.modelValue);
15830
15853
  });
15854
+ const currentColor = vue.computed(() => {
15855
+ return model.value ? {
15856
+ ...model.value,
15857
+ h: hue.value ?? model.value.h
15858
+ } : null;
15859
+ });
15831
15860
  const {
15832
15861
  rtlClasses
15833
15862
  } = useRtl();
15863
+ let externalChange = true;
15864
+ vue.watch(model, v => {
15865
+ if (!externalChange) {
15866
+ // prevent hue shift from rgb conversion inaccuracy
15867
+ externalChange = true;
15868
+ return;
15869
+ }
15870
+ if (!v) return;
15871
+ hue.value = v.h;
15872
+ }, {
15873
+ immediate: true
15874
+ });
15834
15875
  const updateColor = hsva => {
15835
- currentColor.value = hsva;
15836
- lastPickedColor.value = hsva;
15876
+ externalChange = false;
15877
+ hue.value = hsva.h;
15878
+ model.value = hsva;
15837
15879
  };
15838
15880
  vue.onMounted(() => {
15839
15881
  if (!props.modes.includes(mode.value)) mode.value = props.modes[0];
@@ -17603,7 +17645,8 @@
17603
17645
  };
17604
17646
  }
17605
17647
  async function scrollTo(_target, _options, horizontal, goTo) {
17606
- const options = mergeDeep(goTo?.options, _options);
17648
+ const property = horizontal ? 'scrollLeft' : 'scrollTop';
17649
+ const options = mergeDeep(goTo?.options ?? genDefaults(), _options);
17607
17650
  const rtl = goTo?.rtl.value;
17608
17651
  const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0;
17609
17652
  const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
@@ -17621,25 +17664,22 @@
17621
17664
  }
17622
17665
  }
17623
17666
  targetLocation += options.offset;
17624
- const startLocation = (horizontal ? container.scrollLeft : container.scrollTop) ?? 0;
17667
+ const startLocation = container[property] ?? 0;
17625
17668
  if (targetLocation === startLocation) return Promise.resolve(targetLocation);
17626
17669
  const startTime = performance.now();
17627
17670
  return new Promise(resolve => requestAnimationFrame(function step(currentTime) {
17628
17671
  const timeElapsed = currentTime - startTime;
17629
- const progress = Math.abs(options.duration ? Math.min(timeElapsed / options.duration, 1) : 1);
17630
- const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress));
17631
- container[horizontal ? 'scrollLeft' : 'scrollTop'] = location;
17632
- if (progress === 1) return resolve(targetLocation);
17633
- let clientSize;
17634
- let reachEnd;
17635
- if (!horizontal) {
17636
- clientSize = container === document.body ? document.documentElement.clientHeight : container.clientHeight;
17637
- reachEnd = clientSize + container.scrollTop >= container.scrollHeight;
17638
- if (targetLocation > container.scrollTop && reachEnd) return resolve(targetLocation);
17639
- } else {
17640
- clientSize = container === document.body ? document.documentElement.clientWidth : container.clientWidth;
17641
- reachEnd = clientSize + container.scrollLeft >= container.scrollWidth;
17642
- if (targetLocation > container.scrollLeft && reachEnd) return resolve(targetLocation);
17672
+ const progress = timeElapsed / options.duration;
17673
+ const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(Math.max(progress, 1)));
17674
+ container[property] = location;
17675
+
17676
+ // Allow for some jitter if target time has elapsed
17677
+ if (progress >= 1 && Math.abs(location - container[property]) < 10) {
17678
+ return resolve(targetLocation);
17679
+ } else if (progress > 2) {
17680
+ // The target might not be reachable
17681
+ consoleWarn('Scroll target is not reachable');
17682
+ return resolve(container[property]);
17643
17683
  }
17644
17684
  requestAnimationFrame(step);
17645
17685
  }));
@@ -20576,12 +20616,13 @@
20576
20616
  }, [(props.showAdjacentMonths || !item.isAdjacent) && vue.createVNode(VDefaultsProvider, {
20577
20617
  "defaults": {
20578
20618
  VBtn: {
20619
+ class: 'v-date-picker-month__day-btn',
20579
20620
  color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
20580
20621
  disabled: item.isDisabled,
20581
20622
  icon: true,
20582
20623
  ripple: false,
20583
20624
  text: item.localized,
20584
- variant: item.isDisabled ? 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
20625
+ variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
20585
20626
  onClick: () => onClick(item.date)
20586
20627
  }
20587
20628
  }
@@ -20607,6 +20648,7 @@
20607
20648
  },
20608
20649
  setup(props, _ref) {
20609
20650
  let {
20651
+ emit,
20610
20652
  slots
20611
20653
  } = _ref;
20612
20654
  const adapter = useDate();
@@ -20642,6 +20684,10 @@
20642
20684
  onClick: () => onClick(i)
20643
20685
  };
20644
20686
  function onClick(i) {
20687
+ if (model.value === i) {
20688
+ emit('update:modelValue', model.value);
20689
+ return;
20690
+ }
20645
20691
  model.value = i;
20646
20692
  }
20647
20693
  return slots.month?.({
@@ -20650,9 +20696,7 @@
20650
20696
  props: btnProps
20651
20697
  }) ?? vue.createVNode(VBtn, vue.mergeProps({
20652
20698
  "key": "month"
20653
- }, btnProps, {
20654
- "onClick": () => onClick(i)
20655
- }), null);
20699
+ }, btnProps), null);
20656
20700
  })])]));
20657
20701
  return {};
20658
20702
  }
@@ -20677,6 +20721,7 @@
20677
20721
  },
20678
20722
  setup(props, _ref) {
20679
20723
  let {
20724
+ emit,
20680
20725
  slots
20681
20726
  } = _ref;
20682
20727
  const adapter = useDate();
@@ -20727,7 +20772,13 @@
20727
20772
  rounded: true,
20728
20773
  text: year.text,
20729
20774
  variant: model.value === year.value ? 'flat' : 'text',
20730
- onClick: () => model.value = year.value
20775
+ onClick: () => {
20776
+ if (model.value === year.value) {
20777
+ emit('update:modelValue', model.value);
20778
+ return;
20779
+ }
20780
+ model.value = year.value;
20781
+ }
20731
20782
  };
20732
20783
  return slots.year?.({
20733
20784
  year,
@@ -20877,7 +20928,7 @@
20877
20928
  return props.multiple && model.value.length > 1 ? t('$vuetify.datePicker.itemsSelected', model.value.length) : model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header);
20878
20929
  });
20879
20930
  const text = vue.computed(() => {
20880
- return adapter.format(adapter.parseISO(`${year.value}-${month.value + 1}-01`), 'monthAndYear');
20931
+ return adapter.format(adapter.date(new Date(year.value, month.value, 1)), 'monthAndYear');
20881
20932
  });
20882
20933
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
20883
20934
  const headerTransition = vue.computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
@@ -20920,7 +20971,9 @@
20920
20971
  } else {
20921
20972
  year.value++;
20922
20973
  month.value = 0;
20974
+ onUpdateYear(year.value);
20923
20975
  }
20976
+ onUpdateMonth(month.value);
20924
20977
  }
20925
20978
  function onClickPrev() {
20926
20979
  if (month.value > 0) {
@@ -20928,7 +20981,9 @@
20928
20981
  } else {
20929
20982
  year.value--;
20930
20983
  month.value = 11;
20984
+ onUpdateYear(year.value);
20931
20985
  }
20986
+ onUpdateMonth(month.value);
20932
20987
  }
20933
20988
  function onClickDate() {
20934
20989
  viewMode.value = 'month';
@@ -20939,14 +20994,14 @@
20939
20994
  function onClickYear() {
20940
20995
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
20941
20996
  }
20942
- vue.watch(month, () => {
20997
+ function onUpdateMonth(value) {
20943
20998
  if (viewMode.value === 'months') onClickMonth();
20944
- emit('update:month', month.value);
20945
- });
20946
- vue.watch(year, () => {
20999
+ emit('update:month', value);
21000
+ }
21001
+ function onUpdateYear(value) {
20947
21002
  if (viewMode.value === 'year') onClickYear();
20948
- emit('update:year', year.value);
20949
- });
21003
+ emit('update:year', value);
21004
+ }
20950
21005
  vue.watch(model, (val, oldVal) => {
20951
21006
  const before = adapter.date(wrapInArray(val)[0]);
20952
21007
  const after = adapter.date(wrapInArray(oldVal)[0]);
@@ -21002,14 +21057,14 @@
21002
21057
  "key": "date-picker-months"
21003
21058
  }, datePickerMonthsProps, {
21004
21059
  "modelValue": month.value,
21005
- "onUpdate:modelValue": $event => month.value = $event,
21060
+ "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
21006
21061
  "min": minDate.value,
21007
21062
  "max": maxDate.value
21008
21063
  }), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
21009
21064
  "key": "date-picker-years"
21010
21065
  }, datePickerYearsProps, {
21011
21066
  "modelValue": year.value,
21012
- "onUpdate:modelValue": $event => year.value = $event,
21067
+ "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
21013
21068
  "min": minDate.value,
21014
21069
  "max": maxDate.value
21015
21070
  }), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
@@ -21018,9 +21073,9 @@
21018
21073
  "modelValue": model.value,
21019
21074
  "onUpdate:modelValue": $event => model.value = $event,
21020
21075
  "month": month.value,
21021
- "onUpdate:month": $event => month.value = $event,
21076
+ "onUpdate:month": [$event => month.value = $event, onUpdateMonth],
21022
21077
  "year": year.value,
21023
- "onUpdate:year": $event => year.value = $event,
21078
+ "onUpdate:year": [$event => year.value = $event, onUpdateYear],
21024
21079
  "min": minDate.value,
21025
21080
  "max": maxDate.value
21026
21081
  }), null)]
@@ -21038,7 +21093,9 @@
21038
21093
  const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
21039
21094
  const makeVExpansionPanelsProps = propsFactory({
21040
21095
  color: String,
21096
+ flat: Boolean,
21041
21097
  static: Boolean,
21098
+ tile: Boolean,
21042
21099
  variant: {
21043
21100
  type: String,
21044
21101
  default: 'default',
@@ -21068,12 +21125,17 @@
21068
21125
  provideDefaults({
21069
21126
  VExpansionPanel: {
21070
21127
  color: vue.toRef(props, 'color'),
21071
- readonly: vue.toRef(props, 'readonly'),
21128
+ readonly: vue.toRef(props, 'readonly')
21129
+ },
21130
+ VExpansionPanelTitle: {
21072
21131
  static: vue.toRef(props, 'static')
21073
21132
  }
21074
21133
  });
21075
21134
  useRender(() => vue.createVNode(props.tag, {
21076
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
21135
+ "class": ['v-expansion-panels', {
21136
+ 'v-expansion-panels--flat': props.flat,
21137
+ 'v-expansion-panels--tile': props.tile
21138
+ }, themeClasses.value, variantClass.value, props.class],
21077
21139
  "style": props.style
21078
21140
  }, slots));
21079
21141
  return {};
@@ -21357,7 +21419,7 @@
21357
21419
  if (!isFocused.value) focus();
21358
21420
  }
21359
21421
  function onClickPrepend(e) {
21360
- onControlClick(e);
21422
+ inputRef.value?.click();
21361
21423
  }
21362
21424
  function onControlMousedown(e) {
21363
21425
  emit('mousedown:control', e);
@@ -23811,12 +23873,11 @@
23811
23873
  "scrollStrategy": "none",
23812
23874
  "_disableGlobalStack": true
23813
23875
  }, scopeId), {
23814
- default: () => [genOverlays(false, 'v-snackbar'), props.timer && vue.createVNode("div", {
23876
+ default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && vue.createVNode("div", {
23815
23877
  "key": "timer",
23816
23878
  "class": "v-snackbar__timer"
23817
23879
  }, [vue.createVNode(VProgressLinear, {
23818
23880
  "ref": timerRef,
23819
- "active": !isHovering.value,
23820
23881
  "color": typeof props.timer === 'string' ? props.timer : 'info',
23821
23882
  "max": props.timeout,
23822
23883
  "model-value": countdown.time.value
@@ -25666,7 +25727,7 @@
25666
25727
  goTo
25667
25728
  };
25668
25729
  }
25669
- const version$1 = "3.5.3";
25730
+ const version$1 = "3.5.5";
25670
25731
  createVuetify$1.version = version$1;
25671
25732
 
25672
25733
  // Vue's inject() can only be used in setup
@@ -25691,7 +25752,7 @@
25691
25752
  ...options
25692
25753
  });
25693
25754
  };
25694
- const version = "3.5.3";
25755
+ const version = "3.5.5";
25695
25756
  createVuetify.version = version;
25696
25757
 
25697
25758
  exports.components = components;