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
@@ -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
  */
@@ -539,6 +539,16 @@ function defer(timeout, cb) {
539
539
  const timeoutId = window.setTimeout(cb, timeout);
540
540
  return () => window.clearTimeout(timeoutId);
541
541
  }
542
+ function isClickInsideElement(event, targetDiv) {
543
+ const mouseX = event.clientX;
544
+ const mouseY = event.clientY;
545
+ const divRect = targetDiv.getBoundingClientRect();
546
+ const divLeft = divRect.left;
547
+ const divTop = divRect.top;
548
+ const divRight = divRect.right;
549
+ const divBottom = divRect.bottom;
550
+ return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;
551
+ }
542
552
 
543
553
  // Utilities
544
554
  const block = ['top', 'bottom'];
@@ -2150,7 +2160,7 @@ function provideLocale(props) {
2150
2160
  provide(LocaleSymbol, data);
2151
2161
  return data;
2152
2162
  }
2153
- function genDefaults$2() {
2163
+ function genDefaults$3() {
2154
2164
  return {
2155
2165
  af: false,
2156
2166
  ar: true,
@@ -2197,7 +2207,7 @@ function genDefaults$2() {
2197
2207
  };
2198
2208
  }
2199
2209
  function createRtl(i18n, options) {
2200
- const rtl = ref(options?.rtl ?? genDefaults$2());
2210
+ const rtl = ref(options?.rtl ?? genDefaults$3());
2201
2211
  const isRtl = computed(() => rtl.value[i18n.current.value] ?? false);
2202
2212
  return {
2203
2213
  isRtl,
@@ -2230,7 +2240,7 @@ const ThemeSymbol = Symbol.for('vuetify:theme');
2230
2240
  const makeThemeProps = propsFactory({
2231
2241
  theme: String
2232
2242
  }, 'theme');
2233
- function genDefaults$1() {
2243
+ function genDefaults$2() {
2234
2244
  return {
2235
2245
  defaultTheme: 'light',
2236
2246
  variations: {
@@ -2317,8 +2327,8 @@ function genDefaults$1() {
2317
2327
  };
2318
2328
  }
2319
2329
  function parseThemeOptions() {
2320
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$1();
2321
- const defaults = genDefaults$1();
2330
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$2();
2331
+ const defaults = genDefaults$2();
2322
2332
  if (!options) return {
2323
2333
  ...defaults,
2324
2334
  isDisabled: true
@@ -3101,12 +3111,14 @@ const makeRoundedProps = propsFactory({
3101
3111
  rounded: {
3102
3112
  type: [Boolean, Number, String],
3103
3113
  default: undefined
3104
- }
3114
+ },
3115
+ tile: Boolean
3105
3116
  }, 'rounded');
3106
3117
  function useRounded(props) {
3107
3118
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
3108
3119
  const roundedClasses = computed(() => {
3109
3120
  const rounded = isRef(props) ? props.value : props.rounded;
3121
+ const tile = isRef(props) ? props.value : props.tile;
3110
3122
  const classes = [];
3111
3123
  if (rounded === true || rounded === '') {
3112
3124
  classes.push(`${name}--rounded`);
@@ -3114,6 +3126,8 @@ function useRounded(props) {
3114
3126
  for (const value of String(rounded).split(' ')) {
3115
3127
  classes.push(`rounded-${value}`);
3116
3128
  }
3129
+ } else if (tile) {
3130
+ classes.push('rounded-0');
3117
3131
  }
3118
3132
  return classes;
3119
3133
  });
@@ -4104,6 +4118,8 @@ function useGroupItem(props, injectKey) {
4104
4118
  vm.emit('group:selected', {
4105
4119
  value
4106
4120
  });
4121
+ }, {
4122
+ flush: 'sync'
4107
4123
  });
4108
4124
  return {
4109
4125
  id,
@@ -4439,23 +4455,27 @@ const VClassIcon = defineComponent({
4439
4455
  };
4440
4456
  }
4441
4457
  });
4442
- const defaultSets = {
4443
- svg: {
4444
- component: VSvgIcon
4445
- },
4446
- class: {
4447
- component: VClassIcon
4448
- }
4449
- };
4458
+ function genDefaults$1() {
4459
+ return {
4460
+ svg: {
4461
+ component: VSvgIcon
4462
+ },
4463
+ class: {
4464
+ component: VClassIcon
4465
+ }
4466
+ };
4467
+ }
4450
4468
 
4451
4469
  // Composables
4452
4470
  function createIcons(options) {
4471
+ const sets = genDefaults$1();
4472
+ const defaultSet = options?.defaultSet ?? 'mdi';
4473
+ if (defaultSet === 'mdi' && !sets.mdi) {
4474
+ sets.mdi = mdi;
4475
+ }
4453
4476
  return mergeDeep({
4454
- defaultSet: 'mdi',
4455
- sets: {
4456
- ...defaultSets,
4457
- mdi
4458
- },
4477
+ defaultSet,
4478
+ sets,
4459
4479
  aliases: {
4460
4480
  ...aliases,
4461
4481
  /* eslint-disable max-len */
@@ -5891,7 +5911,7 @@ const VAvatar = genericComponent()({
5891
5911
  }, null) : props.text : createVNode(VDefaultsProvider, {
5892
5912
  "key": "content-defaults",
5893
5913
  "defaults": {
5894
- VAvatar: {
5914
+ VImg: {
5895
5915
  cover: true,
5896
5916
  image: props.image
5897
5917
  },
@@ -5900,7 +5920,7 @@ const VAvatar = genericComponent()({
5900
5920
  }
5901
5921
  }
5902
5922
  }, {
5903
- default: () => [slots.default?.()]
5923
+ default: () => [slots.default()]
5904
5924
  }), genOverlays(false, 'v-avatar')]
5905
5925
  }));
5906
5926
  return {};
@@ -6459,7 +6479,8 @@ function createForm(props) {
6459
6479
  errors.value = results;
6460
6480
  model.value = invalid > 0 ? false : valid === items.value.length ? true : null;
6461
6481
  }, {
6462
- deep: true
6482
+ deep: true,
6483
+ flush: 'post'
6463
6484
  });
6464
6485
  provide(FormKey, {
6465
6486
  register: _ref => {
@@ -10563,9 +10584,9 @@ const VMenu = genericComponent()({
10563
10584
  unregister() {
10564
10585
  --openChildren.value;
10565
10586
  },
10566
- closeParents() {
10587
+ closeParents(e) {
10567
10588
  setTimeout(() => {
10568
- if (!openChildren.value) {
10589
+ if (!openChildren.value && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
10569
10590
  isActive.value = false;
10570
10591
  parent?.closeParents();
10571
10592
  }
@@ -10598,8 +10619,8 @@ const VMenu = genericComponent()({
10598
10619
  document.removeEventListener('focusin', onFocusIn);
10599
10620
  }
10600
10621
  });
10601
- function onClickOutside() {
10602
- parent?.closeParents();
10622
+ function onClickOutside(e) {
10623
+ parent?.closeParents(e);
10603
10624
  }
10604
10625
  function onKeydown(e) {
10605
10626
  if (props.disabled) return;
@@ -11333,9 +11354,6 @@ function useVirtual(props, items) {
11333
11354
  });
11334
11355
  });
11335
11356
  });
11336
- watch(viewportHeight, (val, oldVal) => {
11337
- oldVal && calculateVisibleItems();
11338
- });
11339
11357
  onScopeDispose(() => {
11340
11358
  updateOffsets.clear();
11341
11359
  });
@@ -11358,6 +11376,17 @@ function useVirtual(props, items) {
11358
11376
  let lastScrollTop = 0;
11359
11377
  let scrollVelocity = 0;
11360
11378
  let lastScrollTime = 0;
11379
+ watch(viewportHeight, (val, oldVal) => {
11380
+ if (oldVal) {
11381
+ calculateVisibleItems();
11382
+ if (val < oldVal) {
11383
+ requestAnimationFrame(() => {
11384
+ scrollVelocity = 0;
11385
+ calculateVisibleItems();
11386
+ });
11387
+ }
11388
+ }
11389
+ });
11361
11390
  function handleScroll() {
11362
11391
  if (!containerRef.value || !markerRef.value) return;
11363
11392
  const scrollTop = containerRef.value.scrollTop;
@@ -11810,9 +11839,10 @@ const VSelect = genericComponent()({
11810
11839
  }
11811
11840
  }
11812
11841
  function select(item) {
11842
+ const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11843
+ const add = index === -1;
11813
11844
  if (props.multiple) {
11814
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11815
- if (index === -1) {
11845
+ if (add) {
11816
11846
  model.value = [...model.value, item];
11817
11847
  } else {
11818
11848
  const value = [...model.value];
@@ -11820,7 +11850,7 @@ const VSelect = genericComponent()({
11820
11850
  model.value = value;
11821
11851
  }
11822
11852
  } else {
11823
- model.value = [item];
11853
+ model.value = add ? [item] : [];
11824
11854
  menu.value = false;
11825
11855
  }
11826
11856
  }
@@ -12357,11 +12387,11 @@ const VAutocomplete = genericComponent()({
12357
12387
  }
12358
12388
  const isSelecting = shallowRef(false);
12359
12389
  function select(item) {
12360
- let add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12361
12390
  if (item.props.disabled) return;
12391
+ const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12392
+ const add = index === -1;
12362
12393
  if (props.multiple) {
12363
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12364
- if (index === -1) {
12394
+ if (add) {
12365
12395
  model.value = [...model.value, item];
12366
12396
  } else {
12367
12397
  const value = [...model.value];
@@ -12530,7 +12560,7 @@ const VAutocomplete = genericComponent()({
12530
12560
  function onChipClose(e) {
12531
12561
  e.stopPropagation();
12532
12562
  e.preventDefault();
12533
- select(item, false);
12563
+ select(item);
12534
12564
  }
12535
12565
  const slotProps = {
12536
12566
  'onClick:close': onChipClose,
@@ -15802,8 +15832,8 @@ const VColorPicker = defineComponent({
15802
15832
  },
15803
15833
  setup(props) {
15804
15834
  const mode = useProxiedModel(props, 'mode');
15805
- const lastPickedColor = ref(null);
15806
- const currentColor = useProxiedModel(props, 'modelValue', undefined, v => {
15835
+ const hue = ref(null);
15836
+ const model = useProxiedModel(props, 'modelValue', undefined, v => {
15807
15837
  if (v == null || v === '') return null;
15808
15838
  let c;
15809
15839
  try {
@@ -15812,24 +15842,36 @@ const VColorPicker = defineComponent({
15812
15842
  consoleWarn(err);
15813
15843
  return null;
15814
15844
  }
15815
- if (lastPickedColor.value) {
15816
- c = {
15817
- ...c,
15818
- h: lastPickedColor.value.h
15819
- };
15820
- lastPickedColor.value = null;
15821
- }
15822
15845
  return c;
15823
15846
  }, v => {
15824
15847
  if (!v) return null;
15825
15848
  return extractColor(v, props.modelValue);
15826
15849
  });
15850
+ const currentColor = computed(() => {
15851
+ return model.value ? {
15852
+ ...model.value,
15853
+ h: hue.value ?? model.value.h
15854
+ } : null;
15855
+ });
15827
15856
  const {
15828
15857
  rtlClasses
15829
15858
  } = useRtl();
15859
+ let externalChange = true;
15860
+ watch(model, v => {
15861
+ if (!externalChange) {
15862
+ // prevent hue shift from rgb conversion inaccuracy
15863
+ externalChange = true;
15864
+ return;
15865
+ }
15866
+ if (!v) return;
15867
+ hue.value = v.h;
15868
+ }, {
15869
+ immediate: true
15870
+ });
15830
15871
  const updateColor = hsva => {
15831
- currentColor.value = hsva;
15832
- lastPickedColor.value = hsva;
15872
+ externalChange = false;
15873
+ hue.value = hsva.h;
15874
+ model.value = hsva;
15833
15875
  };
15834
15876
  onMounted(() => {
15835
15877
  if (!props.modes.includes(mode.value)) mode.value = props.modes[0];
@@ -17599,7 +17641,8 @@ function createGoTo(options, locale) {
17599
17641
  };
17600
17642
  }
17601
17643
  async function scrollTo(_target, _options, horizontal, goTo) {
17602
- const options = mergeDeep(goTo?.options, _options);
17644
+ const property = horizontal ? 'scrollLeft' : 'scrollTop';
17645
+ const options = mergeDeep(goTo?.options ?? genDefaults(), _options);
17603
17646
  const rtl = goTo?.rtl.value;
17604
17647
  const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0;
17605
17648
  const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
@@ -17617,25 +17660,22 @@ async function scrollTo(_target, _options, horizontal, goTo) {
17617
17660
  }
17618
17661
  }
17619
17662
  targetLocation += options.offset;
17620
- const startLocation = (horizontal ? container.scrollLeft : container.scrollTop) ?? 0;
17663
+ const startLocation = container[property] ?? 0;
17621
17664
  if (targetLocation === startLocation) return Promise.resolve(targetLocation);
17622
17665
  const startTime = performance.now();
17623
17666
  return new Promise(resolve => requestAnimationFrame(function step(currentTime) {
17624
17667
  const timeElapsed = currentTime - startTime;
17625
- const progress = Math.abs(options.duration ? Math.min(timeElapsed / options.duration, 1) : 1);
17626
- const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress));
17627
- container[horizontal ? 'scrollLeft' : 'scrollTop'] = location;
17628
- if (progress === 1) return resolve(targetLocation);
17629
- let clientSize;
17630
- let reachEnd;
17631
- if (!horizontal) {
17632
- clientSize = container === document.body ? document.documentElement.clientHeight : container.clientHeight;
17633
- reachEnd = clientSize + container.scrollTop >= container.scrollHeight;
17634
- if (targetLocation > container.scrollTop && reachEnd) return resolve(targetLocation);
17635
- } else {
17636
- clientSize = container === document.body ? document.documentElement.clientWidth : container.clientWidth;
17637
- reachEnd = clientSize + container.scrollLeft >= container.scrollWidth;
17638
- if (targetLocation > container.scrollLeft && reachEnd) return resolve(targetLocation);
17668
+ const progress = timeElapsed / options.duration;
17669
+ const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(Math.max(progress, 1)));
17670
+ container[property] = location;
17671
+
17672
+ // Allow for some jitter if target time has elapsed
17673
+ if (progress >= 1 && Math.abs(location - container[property]) < 10) {
17674
+ return resolve(targetLocation);
17675
+ } else if (progress > 2) {
17676
+ // The target might not be reachable
17677
+ consoleWarn('Scroll target is not reachable');
17678
+ return resolve(container[property]);
17639
17679
  }
17640
17680
  requestAnimationFrame(step);
17641
17681
  }));
@@ -20572,12 +20612,13 @@ const VDatePickerMonth = genericComponent()({
20572
20612
  }, [(props.showAdjacentMonths || !item.isAdjacent) && createVNode(VDefaultsProvider, {
20573
20613
  "defaults": {
20574
20614
  VBtn: {
20615
+ class: 'v-date-picker-month__day-btn',
20575
20616
  color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
20576
20617
  disabled: item.isDisabled,
20577
20618
  icon: true,
20578
20619
  ripple: false,
20579
20620
  text: item.localized,
20580
- variant: item.isDisabled ? 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
20621
+ variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
20581
20622
  onClick: () => onClick(item.date)
20582
20623
  }
20583
20624
  }
@@ -20603,6 +20644,7 @@ const VDatePickerMonths = genericComponent()({
20603
20644
  },
20604
20645
  setup(props, _ref) {
20605
20646
  let {
20647
+ emit,
20606
20648
  slots
20607
20649
  } = _ref;
20608
20650
  const adapter = useDate();
@@ -20638,6 +20680,10 @@ const VDatePickerMonths = genericComponent()({
20638
20680
  onClick: () => onClick(i)
20639
20681
  };
20640
20682
  function onClick(i) {
20683
+ if (model.value === i) {
20684
+ emit('update:modelValue', model.value);
20685
+ return;
20686
+ }
20641
20687
  model.value = i;
20642
20688
  }
20643
20689
  return slots.month?.({
@@ -20646,9 +20692,7 @@ const VDatePickerMonths = genericComponent()({
20646
20692
  props: btnProps
20647
20693
  }) ?? createVNode(VBtn, mergeProps({
20648
20694
  "key": "month"
20649
- }, btnProps, {
20650
- "onClick": () => onClick(i)
20651
- }), null);
20695
+ }, btnProps), null);
20652
20696
  })])]));
20653
20697
  return {};
20654
20698
  }
@@ -20673,6 +20717,7 @@ const VDatePickerYears = genericComponent()({
20673
20717
  },
20674
20718
  setup(props, _ref) {
20675
20719
  let {
20720
+ emit,
20676
20721
  slots
20677
20722
  } = _ref;
20678
20723
  const adapter = useDate();
@@ -20723,7 +20768,13 @@ const VDatePickerYears = genericComponent()({
20723
20768
  rounded: true,
20724
20769
  text: year.text,
20725
20770
  variant: model.value === year.value ? 'flat' : 'text',
20726
- onClick: () => model.value = year.value
20771
+ onClick: () => {
20772
+ if (model.value === year.value) {
20773
+ emit('update:modelValue', model.value);
20774
+ return;
20775
+ }
20776
+ model.value = year.value;
20777
+ }
20727
20778
  };
20728
20779
  return slots.year?.({
20729
20780
  year,
@@ -20873,7 +20924,7 @@ const VDatePicker = genericComponent()({
20873
20924
  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);
20874
20925
  });
20875
20926
  const text = computed(() => {
20876
- return adapter.format(adapter.parseISO(`${year.value}-${month.value + 1}-01`), 'monthAndYear');
20927
+ return adapter.format(adapter.date(new Date(year.value, month.value, 1)), 'monthAndYear');
20877
20928
  });
20878
20929
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
20879
20930
  const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
@@ -20916,7 +20967,9 @@ const VDatePicker = genericComponent()({
20916
20967
  } else {
20917
20968
  year.value++;
20918
20969
  month.value = 0;
20970
+ onUpdateYear(year.value);
20919
20971
  }
20972
+ onUpdateMonth(month.value);
20920
20973
  }
20921
20974
  function onClickPrev() {
20922
20975
  if (month.value > 0) {
@@ -20924,7 +20977,9 @@ const VDatePicker = genericComponent()({
20924
20977
  } else {
20925
20978
  year.value--;
20926
20979
  month.value = 11;
20980
+ onUpdateYear(year.value);
20927
20981
  }
20982
+ onUpdateMonth(month.value);
20928
20983
  }
20929
20984
  function onClickDate() {
20930
20985
  viewMode.value = 'month';
@@ -20935,14 +20990,14 @@ const VDatePicker = genericComponent()({
20935
20990
  function onClickYear() {
20936
20991
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
20937
20992
  }
20938
- watch(month, () => {
20993
+ function onUpdateMonth(value) {
20939
20994
  if (viewMode.value === 'months') onClickMonth();
20940
- emit('update:month', month.value);
20941
- });
20942
- watch(year, () => {
20995
+ emit('update:month', value);
20996
+ }
20997
+ function onUpdateYear(value) {
20943
20998
  if (viewMode.value === 'year') onClickYear();
20944
- emit('update:year', year.value);
20945
- });
20999
+ emit('update:year', value);
21000
+ }
20946
21001
  watch(model, (val, oldVal) => {
20947
21002
  const before = adapter.date(wrapInArray(val)[0]);
20948
21003
  const after = adapter.date(wrapInArray(oldVal)[0]);
@@ -20998,14 +21053,14 @@ const VDatePicker = genericComponent()({
20998
21053
  "key": "date-picker-months"
20999
21054
  }, datePickerMonthsProps, {
21000
21055
  "modelValue": month.value,
21001
- "onUpdate:modelValue": $event => month.value = $event,
21056
+ "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
21002
21057
  "min": minDate.value,
21003
21058
  "max": maxDate.value
21004
21059
  }), null) : viewMode.value === 'year' ? createVNode(VDatePickerYears, mergeProps({
21005
21060
  "key": "date-picker-years"
21006
21061
  }, datePickerYearsProps, {
21007
21062
  "modelValue": year.value,
21008
- "onUpdate:modelValue": $event => year.value = $event,
21063
+ "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
21009
21064
  "min": minDate.value,
21010
21065
  "max": maxDate.value
21011
21066
  }), null) : createVNode(VDatePickerMonth, mergeProps({
@@ -21014,9 +21069,9 @@ const VDatePicker = genericComponent()({
21014
21069
  "modelValue": model.value,
21015
21070
  "onUpdate:modelValue": $event => model.value = $event,
21016
21071
  "month": month.value,
21017
- "onUpdate:month": $event => month.value = $event,
21072
+ "onUpdate:month": [$event => month.value = $event, onUpdateMonth],
21018
21073
  "year": year.value,
21019
- "onUpdate:year": $event => year.value = $event,
21074
+ "onUpdate:year": [$event => year.value = $event, onUpdateYear],
21020
21075
  "min": minDate.value,
21021
21076
  "max": maxDate.value
21022
21077
  }), null)]
@@ -21034,7 +21089,9 @@ const VExpansionPanelSymbol = Symbol.for('vuetify:v-expansion-panel');
21034
21089
  const allowedVariants = ['default', 'accordion', 'inset', 'popout'];
21035
21090
  const makeVExpansionPanelsProps = propsFactory({
21036
21091
  color: String,
21092
+ flat: Boolean,
21037
21093
  static: Boolean,
21094
+ tile: Boolean,
21038
21095
  variant: {
21039
21096
  type: String,
21040
21097
  default: 'default',
@@ -21064,12 +21121,17 @@ const VExpansionPanels = genericComponent()({
21064
21121
  provideDefaults({
21065
21122
  VExpansionPanel: {
21066
21123
  color: toRef(props, 'color'),
21067
- readonly: toRef(props, 'readonly'),
21124
+ readonly: toRef(props, 'readonly')
21125
+ },
21126
+ VExpansionPanelTitle: {
21068
21127
  static: toRef(props, 'static')
21069
21128
  }
21070
21129
  });
21071
21130
  useRender(() => createVNode(props.tag, {
21072
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
21131
+ "class": ['v-expansion-panels', {
21132
+ 'v-expansion-panels--flat': props.flat,
21133
+ 'v-expansion-panels--tile': props.tile
21134
+ }, themeClasses.value, variantClass.value, props.class],
21073
21135
  "style": props.style
21074
21136
  }, slots));
21075
21137
  return {};
@@ -21353,7 +21415,7 @@ const VFileInput = genericComponent()({
21353
21415
  if (!isFocused.value) focus();
21354
21416
  }
21355
21417
  function onClickPrepend(e) {
21356
- onControlClick(e);
21418
+ inputRef.value?.click();
21357
21419
  }
21358
21420
  function onControlMousedown(e) {
21359
21421
  emit('mousedown:control', e);
@@ -23807,12 +23869,11 @@ const VSnackbar = genericComponent()({
23807
23869
  "scrollStrategy": "none",
23808
23870
  "_disableGlobalStack": true
23809
23871
  }, scopeId), {
23810
- default: () => [genOverlays(false, 'v-snackbar'), props.timer && createVNode("div", {
23872
+ default: () => [genOverlays(false, 'v-snackbar'), props.timer && !isHovering.value && createVNode("div", {
23811
23873
  "key": "timer",
23812
23874
  "class": "v-snackbar__timer"
23813
23875
  }, [createVNode(VProgressLinear, {
23814
23876
  "ref": timerRef,
23815
- "active": !isHovering.value,
23816
23877
  "color": typeof props.timer === 'string' ? props.timer : 'info',
23817
23878
  "max": props.timeout,
23818
23879
  "model-value": countdown.time.value
@@ -25662,7 +25723,7 @@ function createVuetify$1() {
25662
25723
  goTo
25663
25724
  };
25664
25725
  }
25665
- const version$1 = "3.5.3";
25726
+ const version$1 = "3.5.5";
25666
25727
  createVuetify$1.version = version$1;
25667
25728
 
25668
25729
  // Vue's inject() can only be used in setup
@@ -25687,7 +25748,7 @@ const createVuetify = function () {
25687
25748
  ...options
25688
25749
  });
25689
25750
  };
25690
- const version = "3.5.3";
25751
+ const version = "3.5.5";
25691
25752
  createVuetify.version = version;
25692
25753
 
25693
25754
  export { components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };