vuetify 3.6.5 → 3.6.7

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 (97) hide show
  1. package/dist/json/attributes.json +42 -2
  2. package/dist/json/importMap-labs.json +20 -20
  3. package/dist/json/importMap.json +144 -144
  4. package/dist/json/tags.json +11 -1
  5. package/dist/json/web-types.json +125 -16
  6. package/dist/vuetify-labs.css +2509 -2712
  7. package/dist/vuetify-labs.d.ts +178 -52
  8. package/dist/vuetify-labs.esm.js +102 -51
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +102 -51
  11. package/dist/vuetify-labs.min.css +3 -3
  12. package/dist/vuetify.css +783 -986
  13. package/dist/vuetify.d.ts +221 -95
  14. package/dist/vuetify.esm.js +72 -33
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +72 -33
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +3 -3
  19. package/dist/vuetify.min.js +118 -115
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VBanner/VBanner.mjs +3 -1
  24. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  25. package/lib/components/VBanner/index.d.mts +15 -9
  26. package/lib/components/VBtn/VBtn.css +6 -0
  27. package/lib/components/VBtn/VBtn.sass +6 -0
  28. package/lib/components/VChipGroup/index.d.mts +15 -9
  29. package/lib/components/VCombobox/VCombobox.mjs +4 -3
  30. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  31. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +8 -0
  32. package/lib/components/VConfirmEdit/VConfirmEdit.mjs.map +1 -1
  33. package/lib/components/VConfirmEdit/index.d.mts +24 -3
  34. package/lib/components/VDataTable/VDataTable.css +4 -0
  35. package/lib/components/VDataTable/VDataTable.mjs +2 -1
  36. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  37. package/lib/components/VDataTable/VDataTable.sass +4 -0
  38. package/lib/components/VDataTable/VDataTableHeaders.mjs +4 -3
  39. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  40. package/lib/components/VDataTable/VDataTableServer.mjs +1 -1
  41. package/lib/components/VDataTable/VDataTableServer.mjs.map +1 -1
  42. package/lib/components/VDataTable/VDataTableVirtual.mjs +1 -1
  43. package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
  44. package/lib/components/VDataTable/composables/sort.mjs +1 -1
  45. package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
  46. package/lib/components/VDataTable/index.d.mts +63 -0
  47. package/lib/components/VDatePicker/VDatePicker.mjs +2 -1
  48. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  49. package/lib/components/VDatePicker/VDatePickerMonths.mjs +10 -1
  50. package/lib/components/VDatePicker/VDatePickerMonths.mjs.map +1 -1
  51. package/lib/components/VDatePicker/index.d.mts +24 -6
  52. package/lib/components/VDivider/VDivider.css +2 -1
  53. package/lib/components/VDivider/VDivider.sass +2 -1
  54. package/lib/components/VField/VField.css +1 -0
  55. package/lib/components/VField/VField.sass +2 -0
  56. package/lib/components/VList/VListChildren.mjs +2 -1
  57. package/lib/components/VList/VListChildren.mjs.map +1 -1
  58. package/lib/components/VMenu/VMenu.mjs +2 -1
  59. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  60. package/lib/components/VSelect/VSelect.mjs +1 -1
  61. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  62. package/lib/components/VSlideGroup/VSlideGroup.mjs +3 -1
  63. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  64. package/lib/components/VSlideGroup/index.d.mts +15 -9
  65. package/lib/components/VSwitch/VSwitch.css +44 -0
  66. package/lib/components/VSwitch/VSwitch.mjs +4 -3
  67. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  68. package/lib/components/VSwitch/VSwitch.sass +55 -0
  69. package/lib/components/VTabs/index.d.mts +15 -9
  70. package/lib/components/index.d.mts +171 -45
  71. package/lib/composables/defaults.mjs +1 -1
  72. package/lib/composables/defaults.mjs.map +1 -1
  73. package/lib/composables/dimensions.mjs +16 -8
  74. package/lib/composables/dimensions.mjs.map +1 -1
  75. package/lib/entry-bundler.mjs +1 -1
  76. package/lib/framework.mjs +1 -1
  77. package/lib/index.d.mts +50 -50
  78. package/lib/labs/VCalendar/VCalendar.mjs +2 -2
  79. package/lib/labs/VCalendar/VCalendar.mjs.map +1 -1
  80. package/lib/labs/VDateInput/index.d.mts +6 -6
  81. package/lib/labs/VNumberInput/VNumberInput.mjs +16 -6
  82. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  83. package/lib/labs/VNumberInput/index.d.mts +1 -1
  84. package/lib/labs/VTreeview/VTreeviewChildren.mjs +12 -10
  85. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  86. package/lib/labs/components.d.mts +7 -7
  87. package/lib/locale/de.mjs +4 -4
  88. package/lib/locale/de.mjs.map +1 -1
  89. package/lib/locale/fa.mjs +10 -10
  90. package/lib/locale/fa.mjs.map +1 -1
  91. package/lib/locale/hu.mjs +18 -18
  92. package/lib/locale/hu.mjs.map +1 -1
  93. package/lib/styles/generic/_colors.scss +0 -1
  94. package/lib/styles/main.css +0 -260
  95. package/lib/util/helpers.mjs +2 -0
  96. package/lib/util/helpers.mjs.map +1 -1
  97. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.6.5
2
+ * Vuetify v3.6.7
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -395,6 +395,8 @@
395
395
  if (!vnode || typeof vnode !== 'object') return [];
396
396
  if (Array.isArray(vnode)) {
397
397
  return vnode.map(child => findChildrenWithProvide(key, child)).flat(1);
398
+ } else if (vnode.suspense) {
399
+ return findChildrenWithProvide(key, vnode.ssContent);
398
400
  } else if (Array.isArray(vnode.children)) {
399
401
  return vnode.children.map(child => findChildrenWithProvide(key, child)).flat(1);
400
402
  } else if (vnode.component) {
@@ -1321,7 +1323,7 @@
1321
1323
  if (prop === 'class' || prop === 'style') {
1322
1324
  return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1323
1325
  } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1324
- return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue;
1326
+ return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;
1325
1327
  }
1326
1328
  return propValue;
1327
1329
  }
@@ -2996,14 +2998,22 @@
2996
2998
  width: [Number, String]
2997
2999
  }, 'dimension');
2998
3000
  function useDimension(props) {
2999
- const dimensionStyles = vue.computed(() => ({
3000
- height: convertToUnit(props.height),
3001
- maxHeight: convertToUnit(props.maxHeight),
3002
- maxWidth: convertToUnit(props.maxWidth),
3003
- minHeight: convertToUnit(props.minHeight),
3004
- minWidth: convertToUnit(props.minWidth),
3005
- width: convertToUnit(props.width)
3006
- }));
3001
+ const dimensionStyles = vue.computed(() => {
3002
+ const styles = {};
3003
+ const height = convertToUnit(props.height);
3004
+ const maxHeight = convertToUnit(props.maxHeight);
3005
+ const maxWidth = convertToUnit(props.maxWidth);
3006
+ const minHeight = convertToUnit(props.minHeight);
3007
+ const minWidth = convertToUnit(props.minWidth);
3008
+ const width = convertToUnit(props.width);
3009
+ if (height != null) styles.height = height;
3010
+ if (maxHeight != null) styles.maxHeight = maxHeight;
3011
+ if (maxWidth != null) styles.maxWidth = maxWidth;
3012
+ if (minHeight != null) styles.minHeight = minHeight;
3013
+ if (minWidth != null) styles.minWidth = minWidth;
3014
+ if (width != null) styles.width = width;
3015
+ return styles;
3016
+ });
3007
3017
  return {
3008
3018
  dimensionStyles
3009
3019
  };
@@ -7372,7 +7382,9 @@
7372
7382
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
7373
7383
  },
7374
7384
  ...makeComponentProps(),
7375
- ...makeDisplayProps(),
7385
+ ...makeDisplayProps({
7386
+ mobile: null
7387
+ }),
7376
7388
  ...makeTagProps(),
7377
7389
  ...makeGroupProps({
7378
7390
  selectedClass: 'v-slide-group-item--active'
@@ -9203,7 +9215,8 @@
9203
9215
  }) : vue.createVNode(VListItem, listItemProps, slotsWithItem);
9204
9216
  },
9205
9217
  default: () => vue.createVNode(VListChildren, {
9206
- "items": children
9218
+ "items": children,
9219
+ "returnObject": props.returnObject
9207
9220
  }, slots)
9208
9221
  }) : slots.item ? slots.item({
9209
9222
  props: itemProps
@@ -11103,7 +11116,7 @@
11103
11116
  },
11104
11117
  closeParents(e) {
11105
11118
  setTimeout(() => {
11106
- if (!openChildren.value && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11119
+ if (!openChildren.value && !props.persistent && (e == null || e && !isClickInsideElement(e, overlay.value.contentEl))) {
11107
11120
  isActive.value = false;
11108
11121
  parent?.closeParents();
11109
11122
  }
@@ -11142,6 +11155,7 @@
11142
11155
  function onKeydown(e) {
11143
11156
  if (props.disabled) return;
11144
11157
  if (e.key === 'Tab' || e.key === 'Enter' && !props.closeOnContentClick) {
11158
+ if (e.key === 'Enter' && e.target instanceof HTMLTextAreaElement) return;
11145
11159
  if (e.key === 'Enter') e.preventDefault();
11146
11160
  const nextElement = getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? 'prev' : 'next', el => el.tabIndex >= 0);
11147
11161
  if (!nextElement) {
@@ -12323,7 +12337,7 @@
12323
12337
  let keyboardLookupLastTime;
12324
12338
  const displayItems = vue.computed(() => {
12325
12339
  if (props.hideSelected) {
12326
- return items.value.filter(item => !model.value.some(s => s === item));
12340
+ return items.value.filter(item => !model.value.some(s => props.valueComparator(s, item)));
12327
12341
  }
12328
12342
  return items.value;
12329
12343
  });
@@ -12885,7 +12899,7 @@
12885
12899
  if (['Escape'].includes(e.key)) {
12886
12900
  menu.value = false;
12887
12901
  }
12888
- if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {
12902
+ if (highlightFirst.value && e.key === 'Enter') {
12889
12903
  select(displayItems.value[0]);
12890
12904
  }
12891
12905
  if (e.key === 'ArrowDown' && highlightFirst.value) {
@@ -13192,7 +13206,8 @@
13192
13206
  "onMousedown": onMousedownMenuIcon,
13193
13207
  "onClick": noop,
13194
13208
  "aria-label": t(label.value),
13195
- "title": t(label.value)
13209
+ "title": t(label.value),
13210
+ "tabindex": "-1"
13196
13211
  }, null) : undefined]);
13197
13212
  }
13198
13213
  });
@@ -13349,7 +13364,9 @@
13349
13364
  ...makeComponentProps(),
13350
13365
  ...makeDensityProps(),
13351
13366
  ...makeDimensionProps(),
13352
- ...makeDisplayProps(),
13367
+ ...makeDisplayProps({
13368
+ mobile: null
13369
+ }),
13353
13370
  ...makeElevationProps(),
13354
13371
  ...makeLocationProps(),
13355
13372
  ...makePositionProps(),
@@ -16749,8 +16766,8 @@
16749
16766
  if (['Escape'].includes(e.key)) {
16750
16767
  menu.value = false;
16751
16768
  }
16752
- if (['Enter', 'Escape', 'Tab'].includes(e.key)) {
16753
- if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {
16769
+ if (['Enter', 'Escape'].includes(e.key)) {
16770
+ if (highlightFirst.value && e.key === 'Enter') {
16754
16771
  select(filteredItems.value[0]);
16755
16772
  }
16756
16773
  isPristine.value = true;
@@ -17058,7 +17075,8 @@
17058
17075
  "onMousedown": onMousedownMenuIcon,
17059
17076
  "onClick": noop,
17060
17077
  "aria-label": t(label.value),
17061
- "title": t(label.value)
17078
+ "title": t(label.value),
17079
+ "tabindex": "-1"
17062
17080
  }, null) : undefined]);
17063
17081
  }
17064
17082
  });
@@ -17966,12 +17984,20 @@
17966
17984
  }, null)]);
17967
17985
  return vue.createVNode(vue.Fragment, null, [slots.default?.({
17968
17986
  model: internalModel,
17987
+ save,
17988
+ cancel,
17989
+ isPristine: isPristine.value,
17969
17990
  get actions() {
17970
17991
  actionsUsed = true;
17971
17992
  return actions;
17972
17993
  }
17973
17994
  }), !actionsUsed && actions]);
17974
17995
  });
17996
+ return {
17997
+ save,
17998
+ cancel,
17999
+ isPristine
18000
+ };
17975
18001
  }
17976
18002
  });
17977
18003
 
@@ -18562,7 +18588,7 @@
18562
18588
  function useSortedItems(props, items, sortBy, options) {
18563
18589
  const locale = useLocale();
18564
18590
  const sortedItems = vue.computed(() => {
18565
- if (!sortBy.value.length) return items.value;
18591
+ if (!sortBy.value.length || props.disableSort) return items.value;
18566
18592
  return sortItems(items.value, sortBy.value, locale.current.value, {
18567
18593
  transform: options?.transform,
18568
18594
  sortFunctions: {
@@ -19622,6 +19648,7 @@
19622
19648
  const makeVDataTableHeadersProps = propsFactory({
19623
19649
  color: String,
19624
19650
  sticky: Boolean,
19651
+ disableSort: Boolean,
19625
19652
  multiSort: Boolean,
19626
19653
  sortAscIcon: {
19627
19654
  type: IconValue,
@@ -19712,7 +19739,7 @@
19712
19739
  "tag": "th",
19713
19740
  "align": column.align,
19714
19741
  "class": [{
19715
- 'v-data-table__th--sortable': column.sortable,
19742
+ 'v-data-table__th--sortable': column.sortable && !props.disableSort,
19716
19743
  'v-data-table__th--sorted': isSorted(column),
19717
19744
  'v-data-table__th--fixed': column.fixed
19718
19745
  }, ...headerCellClasses.value],
@@ -19752,7 +19779,7 @@
19752
19779
  }
19753
19780
  return vue.createVNode("div", {
19754
19781
  "class": "v-data-table-header__content"
19755
- }, [vue.createVNode("span", null, [column.title]), column.sortable && vue.createVNode(VIcon, {
19782
+ }, [vue.createVNode("span", null, [column.title]), column.sortable && !props.disableSort && vue.createVNode(VIcon, {
19756
19783
  "key": "icon",
19757
19784
  "class": "v-data-table-header__sort-icon",
19758
19785
  "icon": getSortIcon(column)
@@ -19767,7 +19794,7 @@
19767
19794
  const VDataTableMobileHeaderCell = () => {
19768
19795
  const headerProps = vue.mergeProps(props.headerProps ?? {} ?? {});
19769
19796
  const displayItems = vue.computed(() => {
19770
- return columns.value.filter(column => column?.sortable);
19797
+ return columns.value.filter(column => column?.sortable && !props.disableSort);
19771
19798
  });
19772
19799
  const appendIcon = vue.computed(() => {
19773
19800
  const showSelectColumn = columns.value.find(column => column.key === 'data-table-select');
@@ -20263,6 +20290,7 @@
20263
20290
 
20264
20291
  const makeDataTableProps = propsFactory({
20265
20292
  ...makeVDataTableRowsProps(),
20293
+ hideDefaultBody: Boolean,
20266
20294
  hideDefaultFooter: Boolean,
20267
20295
  hideDefaultHeader: Boolean,
20268
20296
  width: [String, Number],
@@ -20449,7 +20477,7 @@
20449
20477
  top: () => slots.top?.(slotProps.value),
20450
20478
  default: () => slots.default ? slots.default(slotProps.value) : vue.createVNode(vue.Fragment, null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createVNode("thead", {
20451
20479
  "key": "thead"
20452
- }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), vue.createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
20480
+ }, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createVNode("tbody", null, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
20453
20481
  "items": paginatedItems.value
20454
20482
  }), slots), slots['body.append']?.(slotProps.value)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
20455
20483
  bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && vue.createVNode(vue.Fragment, null, [vue.createVNode(VDivider, null, null), vue.createVNode(VDataTableFooter, dataTableFooterProps, {
@@ -20624,7 +20652,7 @@
20624
20652
  "key": "thead"
20625
20653
  }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
20626
20654
  "sticky": props.fixedHeader
20627
- }), slots)]), vue.createVNode("tbody", null, [vue.createVNode("tr", {
20655
+ }), slots)]), !props.hideDefaultBody && vue.createVNode("tbody", null, [vue.createVNode("tr", {
20628
20656
  "ref": markerRef,
20629
20657
  "style": {
20630
20658
  height: convertToUnit(paddingTop.value),
@@ -20833,7 +20861,7 @@
20833
20861
  "role": "rowgroup"
20834
20862
  }, [vue.createVNode(VDataTableHeaders, vue.mergeProps(dataTableHeadersProps, {
20835
20863
  "sticky": props.fixedHeader
20836
- }), slots)]), slots.thead?.(slotProps.value), vue.createVNode("tbody", {
20864
+ }), slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createVNode("tbody", {
20837
20865
  "class": "v-data-table__tbody",
20838
20866
  "role": "rowgroup"
20839
20867
  }, [slots['body.prepend']?.(slotProps.value), slots.body ? slots.body(slotProps.value) : vue.createVNode(VDataTableRows, vue.mergeProps(attrs, dataTableRowsProps, {
@@ -21608,7 +21636,10 @@
21608
21636
  const makeVDatePickerMonthsProps = propsFactory({
21609
21637
  color: String,
21610
21638
  height: [String, Number],
21611
- modelValue: Number
21639
+ min: null,
21640
+ max: null,
21641
+ modelValue: Number,
21642
+ year: Number
21612
21643
  }, 'VDatePickerMonths');
21613
21644
  const VDatePickerMonths = genericComponent()({
21614
21645
  name: 'VDatePickerMonths',
@@ -21625,10 +21656,15 @@
21625
21656
  const model = useProxiedModel(props, 'modelValue');
21626
21657
  const months = vue.computed(() => {
21627
21658
  let date = adapter.startOfYear(adapter.date());
21659
+ if (props.year) {
21660
+ date = adapter.setYear(date, props.year);
21661
+ }
21628
21662
  return createRange(12).map(i => {
21629
21663
  const text = adapter.format(date, 'monthShort');
21664
+ const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
21630
21665
  date = adapter.getNextMonth(date);
21631
21666
  return {
21667
+ isDisabled,
21632
21668
  text,
21633
21669
  value: i
21634
21670
  };
@@ -21648,6 +21684,7 @@
21648
21684
  const btnProps = {
21649
21685
  active: model.value === i,
21650
21686
  color: model.value === i ? props.color : undefined,
21687
+ disabled: month.isDisabled,
21651
21688
  rounded: true,
21652
21689
  text: month.text,
21653
21690
  variant: model.value === month.value ? 'flat' : 'text',
@@ -22048,7 +22085,8 @@
22048
22085
  "modelValue": month.value,
22049
22086
  "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
22050
22087
  "min": minDate.value,
22051
- "max": maxDate.value
22088
+ "max": maxDate.value,
22089
+ "year": year.value
22052
22090
  }), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
22053
22091
  "key": "date-picker-years"
22054
22092
  }, datePickerYearsProps, {
@@ -26176,6 +26214,7 @@
26176
26214
  blur
26177
26215
  } = useFocus(props);
26178
26216
  const control = vue.ref();
26217
+ const isForcedColorsModeActive = IN_BROWSER && window.matchMedia('(forced-colors: active)').matches;
26179
26218
  const loaderColor = vue.computed(() => {
26180
26219
  return typeof props.loading === 'string' && props.loading !== '' ? props.loading : props.color;
26181
26220
  });
@@ -26244,7 +26283,7 @@
26244
26283
  backgroundColorStyles
26245
26284
  } = _ref3;
26246
26285
  return vue.createVNode("div", {
26247
- "class": ['v-switch__track', ...backgroundColorClasses.value],
26286
+ "class": ['v-switch__track', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined],
26248
26287
  "style": backgroundColorStyles.value,
26249
26288
  "onClick": onTrackClick
26250
26289
  }, [slots['track-true'] && vue.createVNode("div", {
@@ -26265,7 +26304,7 @@
26265
26304
  return vue.createVNode(vue.Fragment, null, [inputNode, vue.createVNode("div", {
26266
26305
  "class": ['v-switch__thumb', {
26267
26306
  'v-switch__thumb--filled': icon || props.loading
26268
- }, props.inset ? undefined : backgroundColorClasses.value],
26307
+ }, props.inset || isForcedColorsModeActive ? undefined : backgroundColorClasses.value],
26269
26308
  "style": props.inset ? undefined : backgroundColorStyles.value
26270
26309
  }, [slots.thumb ? vue.createVNode(VDefaultsProvider, {
26271
26310
  "defaults": {
@@ -27711,7 +27750,7 @@
27711
27750
  }
27712
27751
  }
27713
27752
  function onClickToday() {
27714
- model.value = [new Date()];
27753
+ model.value = [adapter.date()];
27715
27754
  }
27716
27755
  const title = vue.computed(() => {
27717
27756
  return adapter.format(displayValue.value, 'monthAndYear');
@@ -27750,7 +27789,7 @@
27750
27789
  }, [chunkArray(daysInMonth.value, props.weekdays.length).map((week, wi) => [!props.hideWeekNumber ? vue.createVNode("div", {
27751
27790
  "class": "v-calendar-month__weeknumber"
27752
27791
  }, [weekNumbers.value[wi]]) : '', week.map(day => vue.createVNode(VCalendarMonthDay, {
27753
- "color": adapter.isSameDay(new Date(), day.date) ? 'primary' : undefined,
27792
+ "color": adapter.isSameDay(adapter.date(), day.date) ? 'primary' : undefined,
27754
27793
  "day": day,
27755
27794
  "title": day ? adapter.format(day.date, 'dayOfMonth') : 'NaN',
27756
27795
  "events": props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end))
@@ -27969,10 +28008,12 @@
27969
28008
  if (canDecrease.value) model.value = +(model.value - props.step).toFixed(decimals);
27970
28009
  }
27971
28010
  }
27972
- function onClickUp() {
28011
+ function onClickUp(e) {
28012
+ e.stopPropagation();
27973
28013
  toggleUpDown();
27974
28014
  }
27975
- function onClickDown() {
28015
+ function onClickDown(e) {
28016
+ e.stopPropagation();
27976
28017
  toggleUpDown(false);
27977
28018
  }
27978
28019
  function onKeydown(e) {
@@ -27996,6 +28037,9 @@
27996
28037
  function onModelUpdate(v) {
27997
28038
  model.value = v ? +v : undefined;
27998
28039
  }
28040
+ function onControlMousedown(e) {
28041
+ e.stopPropagation();
28042
+ }
27999
28043
  useRender(() => {
28000
28044
  const {
28001
28045
  modelValue: _,
@@ -28014,7 +28058,8 @@
28014
28058
  "icon": "$expand",
28015
28059
  "size": "small",
28016
28060
  "tabindex": "-1",
28017
- "onClick": onClickDown
28061
+ "onClick": onClickDown,
28062
+ "onMousedown": onControlMousedown
28018
28063
  }, null) : vue.createVNode(VDefaultsProvider, {
28019
28064
  "key": "decrement-defaults",
28020
28065
  "defaults": {
@@ -28038,6 +28083,7 @@
28038
28083
  "name": "increment-btn",
28039
28084
  "icon": "$collapse",
28040
28085
  "onClick": onClickUp,
28086
+ "onMousedown": onControlMousedown,
28041
28087
  "size": "small",
28042
28088
  "tabindex": "-1"
28043
28089
  }, null) : vue.createVNode(VDefaultsProvider, {
@@ -28070,7 +28116,8 @@
28070
28116
  "icon": "$plus",
28071
28117
  "tile": true,
28072
28118
  "tabindex": "-1",
28073
- "onClick": onClickUp
28119
+ "onClick": onClickUp,
28120
+ "onMousedown": onControlMousedown
28074
28121
  }, null)]) : !props.reverse ? vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]) : undefined;
28075
28122
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
28076
28123
  const prependInnerControl = controlVariant.value === 'split' ? vue.createVNode("div", {
@@ -28081,7 +28128,8 @@
28081
28128
  "icon": "$minus",
28082
28129
  "tile": true,
28083
28130
  "tabindex": "-1",
28084
- "onClick": onClickDown
28131
+ "onClick": onClickDown,
28132
+ "onMousedown": onControlMousedown
28085
28133
  }, null), vue.createVNode(VDivider, {
28086
28134
  "vertical": true
28087
28135
  }, null)]) : props.reverse ? vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
@@ -28099,7 +28147,8 @@
28099
28147
  'v-number-input--stacked': controlVariant.value === 'stacked'
28100
28148
  }, props.class]
28101
28149
  }, textFieldProps, {
28102
- "style": props.style
28150
+ "style": props.style,
28151
+ "inputmode": "decimal"
28103
28152
  }), {
28104
28153
  ...slots,
28105
28154
  'append-inner': hasAppendInner ? function () {
@@ -29363,17 +29412,18 @@
29363
29412
  emit,
29364
29413
  slots
29365
29414
  } = _ref;
29366
- const isLoading = vue.shallowRef(false);
29367
- const hasLoaded = vue.shallowRef(false);
29415
+ const isLoading = vue.shallowRef(null);
29368
29416
  function checkChildren(item) {
29369
29417
  return new Promise(resolve => {
29370
- if (!props.items?.length || !props.loadChildren || hasLoaded.value) return resolve();
29371
- isLoading.value = true;
29372
- props.loadChildren(item).then(resolve);
29373
- }).then(() => {
29374
- hasLoaded.value = true;
29418
+ if (!props.items?.length || !props.loadChildren) return resolve();
29419
+ if (item?.children?.length === 0) {
29420
+ isLoading.value = item.value;
29421
+ props.loadChildren(item).then(resolve);
29422
+ return;
29423
+ }
29424
+ resolve();
29375
29425
  }).finally(() => {
29376
- isLoading.value = false;
29426
+ isLoading.value = null;
29377
29427
  });
29378
29428
  }
29379
29429
  function onClick(e, item) {
@@ -29386,6 +29436,7 @@
29386
29436
  props: itemProps,
29387
29437
  raw: item
29388
29438
  } = _ref2;
29439
+ const loading = isLoading.value === item.value;
29389
29440
  const slotsWithItem = {
29390
29441
  prepend: slots.prepend ? slotProps => slots.prepend?.({
29391
29442
  ...slotProps,
@@ -29399,7 +29450,7 @@
29399
29450
  "key": item.value,
29400
29451
  "tabindex": "-1",
29401
29452
  "modelValue": isSelected,
29402
- "loading": isLoading.value,
29453
+ "loading": loading,
29403
29454
  "indeterminate": isIndeterminate,
29404
29455
  "onClick": e => onClick(e, item)
29405
29456
  }, null);
@@ -29423,7 +29474,7 @@
29423
29474
  props: activatorProps
29424
29475
  } = _ref4;
29425
29476
  return vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, activatorProps, {
29426
- "loading": isLoading.value,
29477
+ "loading": loading,
29427
29478
  "onClick": e => onClick(e, item)
29428
29479
  }), slotsWithItem);
29429
29480
  },
@@ -30076,7 +30127,7 @@
30076
30127
  goTo
30077
30128
  };
30078
30129
  }
30079
- const version$1 = "3.6.5";
30130
+ const version$1 = "3.6.7";
30080
30131
  createVuetify$1.version = version$1;
30081
30132
 
30082
30133
  // Vue's inject() can only be used in setup
@@ -30329,7 +30380,7 @@
30329
30380
 
30330
30381
  /* eslint-disable local-rules/sort-imports */
30331
30382
 
30332
- const version = "3.6.5";
30383
+ const version = "3.6.7";
30333
30384
 
30334
30385
  /* eslint-disable local-rules/sort-imports */
30335
30386