vuetify 3.5.9 → 3.5.10

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 (147) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +106 -6
  3. package/dist/json/importMap-labs.json +8 -4
  4. package/dist/json/importMap.json +122 -122
  5. package/dist/json/tags.json +30 -0
  6. package/dist/json/web-types.json +582 -15
  7. package/dist/vuetify-labs.css +2456 -2414
  8. package/dist/vuetify-labs.d.ts +2711 -1996
  9. package/dist/vuetify-labs.esm.js +518 -40
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +518 -39
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +681 -676
  14. package/dist/vuetify.d.ts +2356 -2303
  15. package/dist/vuetify.esm.js +605 -330
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +604 -328
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +1106 -1098
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/index.d.mts +15 -15
  23. package/lib/components/VApp/index.d.mts +8 -8
  24. package/lib/components/VAppBar/index.d.mts +7 -7
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/index.d.mts +94 -94
  28. package/lib/components/VAvatar/index.d.mts +8 -8
  29. package/lib/components/VBadge/index.d.mts +7 -7
  30. package/lib/components/VBanner/index.d.mts +20 -20
  31. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  32. package/lib/components/VBreadcrumbs/index.d.mts +27 -26
  33. package/lib/components/VBtnGroup/index.d.mts +8 -8
  34. package/lib/components/VCard/index.d.mts +32 -32
  35. package/lib/components/VCarousel/index.d.mts +6 -6
  36. package/lib/components/VCheckbox/index.d.mts +44 -44
  37. package/lib/components/VChip/index.d.mts +7 -7
  38. package/lib/components/VCode/index.d.mts +8 -8
  39. package/lib/components/VCombobox/VCombobox.mjs +5 -4
  40. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  41. package/lib/components/VCombobox/index.d.mts +94 -94
  42. package/lib/components/VDataTable/index.d.mts +6 -6
  43. package/lib/components/VDatePicker/VDatePickerMonth.mjs +10 -4
  44. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  45. package/lib/components/VDatePicker/index.d.mts +10 -10
  46. package/lib/components/VDefaultsProvider/index.d.mts +8 -8
  47. package/lib/components/VDialog/index.d.mts +12 -6
  48. package/lib/components/VDivider/index.d.mts +8 -8
  49. package/lib/components/VExpansionPanel/index.d.mts +19 -19
  50. package/lib/components/VField/VField.css +2 -0
  51. package/lib/components/VField/VField.mjs +1 -1
  52. package/lib/components/VField/VField.mjs.map +1 -1
  53. package/lib/components/VField/VField.sass +2 -0
  54. package/lib/components/VField/index.d.mts +28 -28
  55. package/lib/components/VFileInput/index.d.mts +133 -133
  56. package/lib/components/VFooter/index.d.mts +8 -8
  57. package/lib/components/VGrid/index.d.mts +32 -32
  58. package/lib/components/VIcon/VIcon.css +4 -0
  59. package/lib/components/VIcon/VIcon.mjs +7 -3
  60. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  61. package/lib/components/VIcon/VIcon.sass +4 -0
  62. package/lib/components/VIcon/_variables.scss +1 -0
  63. package/lib/components/VIcon/index.d.mts +25 -16
  64. package/lib/components/VImg/index.d.mts +4 -4
  65. package/lib/components/VInput/index.d.mts +21 -21
  66. package/lib/components/VKbd/index.d.mts +8 -8
  67. package/lib/components/VLabel/index.d.mts +8 -8
  68. package/lib/components/VLayout/index.d.mts +16 -16
  69. package/lib/components/VLazy/index.d.mts +8 -8
  70. package/lib/components/VList/VListItem.mjs +2 -2
  71. package/lib/components/VList/VListItem.mjs.map +1 -1
  72. package/lib/components/VList/index.d.mts +48 -48
  73. package/lib/components/VLocaleProvider/index.d.mts +12 -12
  74. package/lib/components/VMain/index.d.mts +8 -8
  75. package/lib/components/VMenu/VMenu.mjs +3 -0
  76. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  77. package/lib/components/VMenu/index.d.mts +14 -8
  78. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +1 -1
  79. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +22 -8
  80. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  81. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -1
  82. package/lib/components/VNavigationDrawer/index.d.mts +11 -11
  83. package/lib/components/VOtpInput/VOtpInput.mjs +7 -2
  84. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  85. package/lib/components/VOtpInput/index.d.mts +31 -31
  86. package/lib/components/VOverlay/VOverlay.mjs +8 -3
  87. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  88. package/lib/components/VOverlay/index.d.mts +3 -0
  89. package/lib/components/VOverlay/scrollStrategies.mjs +2 -2
  90. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  91. package/lib/components/VPagination/index.d.mts +7 -7
  92. package/lib/components/VProgressLinear/VProgressLinear.css +0 -1
  93. package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
  94. package/lib/components/VProgressLinear/index.d.mts +7 -7
  95. package/lib/components/VRadioGroup/index.d.mts +44 -44
  96. package/lib/components/VRangeSlider/index.d.mts +47 -47
  97. package/lib/components/VRating/index.d.mts +7 -7
  98. package/lib/components/VResponsive/index.d.mts +8 -8
  99. package/lib/components/VSelect/index.d.mts +94 -94
  100. package/lib/components/VSheet/index.d.mts +8 -8
  101. package/lib/components/VSkeletonLoader/index.d.mts +8 -8
  102. package/lib/components/VSlider/index.d.mts +47 -47
  103. package/lib/components/VSnackbar/index.d.mts +25 -19
  104. package/lib/components/VStepper/index.d.mts +41 -41
  105. package/lib/components/VSwitch/index.d.mts +39 -39
  106. package/lib/components/VSystemBar/index.d.mts +8 -8
  107. package/lib/components/VTabs/index.d.mts +15 -15
  108. package/lib/components/VTextField/index.d.mts +173 -173
  109. package/lib/components/VTextarea/index.d.mts +119 -119
  110. package/lib/components/VThemeProvider/index.d.mts +8 -8
  111. package/lib/components/VTimeline/index.d.mts +8 -8
  112. package/lib/components/VToolbar/index.d.mts +8 -8
  113. package/lib/components/VTooltip/index.d.mts +14 -8
  114. package/lib/components/VWindow/index.d.mts +10 -10
  115. package/lib/components/index.d.mts +1869 -1832
  116. package/lib/components/transitions/index.d.mts +128 -128
  117. package/lib/composables/date/adapters/vuetify.mjs +1 -1
  118. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  119. package/lib/composables/theme.mjs +1 -1
  120. package/lib/composables/theme.mjs.map +1 -1
  121. package/lib/entry-bundler.mjs +3 -2
  122. package/lib/entry-bundler.mjs.map +1 -1
  123. package/lib/framework.mjs +1 -1
  124. package/lib/framework.mjs.map +1 -1
  125. package/lib/index.d.mts +37 -36
  126. package/lib/labs/VCalendar/index.d.mts +32 -32
  127. package/lib/labs/VFab/index.d.mts +15 -15
  128. package/lib/labs/VNumberInput/VNumberInput.css +38 -0
  129. package/lib/labs/VNumberInput/VNumberInput.mjs +209 -0
  130. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -0
  131. package/lib/labs/VNumberInput/VNumberInput.sass +47 -0
  132. package/lib/labs/VNumberInput/_variables.scss +1 -0
  133. package/lib/labs/VNumberInput/index.d.mts +607 -0
  134. package/lib/labs/VNumberInput/index.mjs +2 -0
  135. package/lib/labs/VNumberInput/index.mjs.map +1 -0
  136. package/lib/labs/VPicker/index.d.mts +8 -8
  137. package/lib/labs/VSparkline/index.d.mts +7 -7
  138. package/lib/labs/VSpeedDial/VSpeedDial.mjs +9 -5
  139. package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
  140. package/lib/labs/VSpeedDial/index.d.mts +120 -24
  141. package/lib/labs/VTreeview/index.d.mts +8 -8
  142. package/lib/labs/components.d.mts +788 -95
  143. package/lib/labs/components.mjs +1 -0
  144. package/lib/labs/components.mjs.map +1 -1
  145. package/lib/locale/no.mjs +1 -1
  146. package/lib/locale/no.mjs.map +1 -1
  147. package/package.json +2 -2
@@ -1,81 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.5.9
2
+ * Vuetify v3.5.10
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, ref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText } from 'vue';
8
-
9
- // Types
10
- // eslint-disable-line vue/prefer-import-from-vue
11
-
12
- /**
13
- * Creates a factory function for props definitions.
14
- * This is used to define props in a composable then override
15
- * default values in an implementing component.
16
- *
17
- * @example Simplified signature
18
- * (props: Props) => (defaults?: Record<keyof props, any>) => Props
19
- *
20
- * @example Usage
21
- * const makeProps = propsFactory({
22
- * foo: String,
23
- * })
24
- *
25
- * defineComponent({
26
- * props: {
27
- * ...makeProps({
28
- * foo: 'a',
29
- * }),
30
- * },
31
- * setup (props) {
32
- * // would be "string | undefined", now "string" because a default has been provided
33
- * props.foo
34
- * },
35
- * }
36
- */
37
-
38
- function propsFactory(props, source) {
39
- return defaults => {
40
- return Object.keys(props).reduce((obj, prop) => {
41
- const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop]);
42
- const definition = isObjectDefinition ? props[prop] : {
43
- type: props[prop]
44
- };
45
- if (defaults && prop in defaults) {
46
- obj[prop] = {
47
- ...definition,
48
- default: defaults[prop]
49
- };
50
- } else {
51
- obj[prop] = definition;
52
- }
53
- if (source && !obj[prop].source) {
54
- obj[prop].source = source;
55
- }
56
- return obj;
57
- }, {});
58
- };
59
- }
60
-
61
- /**
62
- * Like `Partial<T>` but doesn't care what the value is
63
- */
64
-
65
- // Copied from Vue
66
-
67
- // Utilities
68
-
69
- // Types
70
-
71
- // Composables
72
- const makeComponentProps = propsFactory({
73
- class: [String, Array],
74
- style: {
75
- type: [String, Array, Object],
76
- default: null
77
- }
78
- }, 'component');
7
+ import { Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, ref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, Text, resolveDynamicComponent, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText } from 'vue';
79
8
 
80
9
  const IN_BROWSER = typeof window !== 'undefined';
81
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -1227,6 +1156,77 @@ function getForeground(color) {
1227
1156
  return whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000';
1228
1157
  }
1229
1158
 
1159
+ // Types
1160
+ // eslint-disable-line vue/prefer-import-from-vue
1161
+
1162
+ /**
1163
+ * Creates a factory function for props definitions.
1164
+ * This is used to define props in a composable then override
1165
+ * default values in an implementing component.
1166
+ *
1167
+ * @example Simplified signature
1168
+ * (props: Props) => (defaults?: Record<keyof props, any>) => Props
1169
+ *
1170
+ * @example Usage
1171
+ * const makeProps = propsFactory({
1172
+ * foo: String,
1173
+ * })
1174
+ *
1175
+ * defineComponent({
1176
+ * props: {
1177
+ * ...makeProps({
1178
+ * foo: 'a',
1179
+ * }),
1180
+ * },
1181
+ * setup (props) {
1182
+ * // would be "string | undefined", now "string" because a default has been provided
1183
+ * props.foo
1184
+ * },
1185
+ * }
1186
+ */
1187
+
1188
+ function propsFactory(props, source) {
1189
+ return defaults => {
1190
+ return Object.keys(props).reduce((obj, prop) => {
1191
+ const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop]);
1192
+ const definition = isObjectDefinition ? props[prop] : {
1193
+ type: props[prop]
1194
+ };
1195
+ if (defaults && prop in defaults) {
1196
+ obj[prop] = {
1197
+ ...definition,
1198
+ default: defaults[prop]
1199
+ };
1200
+ } else {
1201
+ obj[prop] = definition;
1202
+ }
1203
+ if (source && !obj[prop].source) {
1204
+ obj[prop].source = source;
1205
+ }
1206
+ return obj;
1207
+ }, {});
1208
+ };
1209
+ }
1210
+
1211
+ /**
1212
+ * Like `Partial<T>` but doesn't care what the value is
1213
+ */
1214
+
1215
+ // Copied from Vue
1216
+
1217
+ // Utilities
1218
+
1219
+ // Types
1220
+
1221
+ // Composables
1222
+ const makeComponentProps = propsFactory({
1223
+ class: [String, Array],
1224
+ style: {
1225
+ type: [String, Array, Object],
1226
+ default: null
1227
+ }
1228
+ }, 'component');
1229
+
1230
1230
  // Utilities
1231
1231
 
1232
1232
  // Types
@@ -1533,19 +1533,464 @@ function isFixedPosition(el) {
1533
1533
  if (window.getComputedStyle(el).position === 'fixed') {
1534
1534
  return true;
1535
1535
  }
1536
- el = el.offsetParent;
1536
+ el = el.offsetParent;
1537
+ }
1538
+ return false;
1539
+ }
1540
+
1541
+ // Utilities
1542
+
1543
+ // Types
1544
+
1545
+ function useRender(render) {
1546
+ const vm = getCurrentInstance('useRender');
1547
+ vm.render = render;
1548
+ }
1549
+
1550
+ // Types
1551
+
1552
+ const IconValue = [String, Function, Object, Array];
1553
+ const IconSymbol = Symbol.for('vuetify:icons');
1554
+ const makeIconProps = propsFactory({
1555
+ icon: {
1556
+ type: IconValue
1557
+ },
1558
+ // Could not remove this and use makeTagProps, types complained because it is not required
1559
+ tag: {
1560
+ type: String,
1561
+ required: true
1562
+ }
1563
+ }, 'icon');
1564
+ const VComponentIcon = genericComponent()({
1565
+ name: 'VComponentIcon',
1566
+ props: makeIconProps(),
1567
+ setup(props, _ref) {
1568
+ let {
1569
+ slots
1570
+ } = _ref;
1571
+ return () => {
1572
+ const Icon = props.icon;
1573
+ return createVNode(props.tag, null, {
1574
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
1575
+ });
1576
+ };
1577
+ }
1578
+ });
1579
+ const VSvgIcon = defineComponent({
1580
+ name: 'VSvgIcon',
1581
+ inheritAttrs: false,
1582
+ props: makeIconProps(),
1583
+ setup(props, _ref2) {
1584
+ let {
1585
+ attrs
1586
+ } = _ref2;
1587
+ return () => {
1588
+ return createVNode(props.tag, mergeProps(attrs, {
1589
+ "style": null
1590
+ }), {
1591
+ default: () => [createVNode("svg", {
1592
+ "class": "v-icon__svg",
1593
+ "xmlns": "http://www.w3.org/2000/svg",
1594
+ "viewBox": "0 0 24 24",
1595
+ "role": "img",
1596
+ "aria-hidden": "true"
1597
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
1598
+ "d": path[0],
1599
+ "fill-opacity": path[1]
1600
+ }, null) : createVNode("path", {
1601
+ "d": path
1602
+ }, null)) : createVNode("path", {
1603
+ "d": props.icon
1604
+ }, null)])]
1605
+ });
1606
+ };
1607
+ }
1608
+ });
1609
+ const VLigatureIcon = defineComponent({
1610
+ name: 'VLigatureIcon',
1611
+ props: makeIconProps(),
1612
+ setup(props) {
1613
+ return () => {
1614
+ return createVNode(props.tag, null, {
1615
+ default: () => [props.icon]
1616
+ });
1617
+ };
1618
+ }
1619
+ });
1620
+ const VClassIcon = defineComponent({
1621
+ name: 'VClassIcon',
1622
+ props: makeIconProps(),
1623
+ setup(props) {
1624
+ return () => {
1625
+ return createVNode(props.tag, {
1626
+ "class": props.icon
1627
+ }, null);
1628
+ };
1629
+ }
1630
+ });
1631
+ function genDefaults$3() {
1632
+ return {
1633
+ svg: {
1634
+ component: VSvgIcon
1635
+ },
1636
+ class: {
1637
+ component: VClassIcon
1638
+ }
1639
+ };
1640
+ }
1641
+
1642
+ // Composables
1643
+ function createIcons(options) {
1644
+ const sets = genDefaults$3();
1645
+ const defaultSet = options?.defaultSet ?? 'mdi';
1646
+ if (defaultSet === 'mdi' && !sets.mdi) {
1647
+ sets.mdi = mdi;
1648
+ }
1649
+ return mergeDeep({
1650
+ defaultSet,
1651
+ sets,
1652
+ aliases: {
1653
+ ...aliases,
1654
+ /* eslint-disable max-len */
1655
+ vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],
1656
+ 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z'
1657
+ /* eslint-enable max-len */
1658
+ }
1659
+ }, options);
1660
+ }
1661
+ const useIcon = props => {
1662
+ const icons = inject$1(IconSymbol);
1663
+ if (!icons) throw new Error('Missing Vuetify Icons provide!');
1664
+ const iconData = computed(() => {
1665
+ const iconAlias = unref(props);
1666
+ if (!iconAlias) return {
1667
+ component: VComponentIcon
1668
+ };
1669
+ let icon = iconAlias;
1670
+ if (typeof icon === 'string') {
1671
+ icon = icon.trim();
1672
+ if (icon.startsWith('$')) {
1673
+ icon = icons.aliases?.[icon.slice(1)];
1674
+ }
1675
+ }
1676
+ if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
1677
+ if (Array.isArray(icon)) {
1678
+ return {
1679
+ component: VSvgIcon,
1680
+ icon
1681
+ };
1682
+ } else if (typeof icon !== 'string') {
1683
+ return {
1684
+ component: VComponentIcon,
1685
+ icon
1686
+ };
1687
+ }
1688
+ const iconSetName = Object.keys(icons.sets).find(setName => typeof icon === 'string' && icon.startsWith(`${setName}:`));
1689
+ const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;
1690
+ const iconSet = icons.sets[iconSetName ?? icons.defaultSet];
1691
+ return {
1692
+ component: iconSet.component,
1693
+ icon: iconName
1694
+ };
1695
+ });
1696
+ return {
1697
+ iconData
1698
+ };
1699
+ };
1700
+
1701
+ // Composables
1702
+
1703
+ // Types
1704
+
1705
+ const aliases = {
1706
+ collapse: 'mdi-chevron-up',
1707
+ complete: 'mdi-check',
1708
+ cancel: 'mdi-close-circle',
1709
+ close: 'mdi-close',
1710
+ delete: 'mdi-close-circle',
1711
+ // delete (e.g. v-chip close)
1712
+ clear: 'mdi-close-circle',
1713
+ success: 'mdi-check-circle',
1714
+ info: 'mdi-information',
1715
+ warning: 'mdi-alert-circle',
1716
+ error: 'mdi-close-circle',
1717
+ prev: 'mdi-chevron-left',
1718
+ next: 'mdi-chevron-right',
1719
+ checkboxOn: 'mdi-checkbox-marked',
1720
+ checkboxOff: 'mdi-checkbox-blank-outline',
1721
+ checkboxIndeterminate: 'mdi-minus-box',
1722
+ delimiter: 'mdi-circle',
1723
+ // for carousel
1724
+ sortAsc: 'mdi-arrow-up',
1725
+ sortDesc: 'mdi-arrow-down',
1726
+ expand: 'mdi-chevron-down',
1727
+ menu: 'mdi-menu',
1728
+ subgroup: 'mdi-menu-down',
1729
+ dropdown: 'mdi-menu-down',
1730
+ radioOn: 'mdi-radiobox-marked',
1731
+ radioOff: 'mdi-radiobox-blank',
1732
+ edit: 'mdi-pencil',
1733
+ ratingEmpty: 'mdi-star-outline',
1734
+ ratingFull: 'mdi-star',
1735
+ ratingHalf: 'mdi-star-half-full',
1736
+ loading: 'mdi-cached',
1737
+ first: 'mdi-page-first',
1738
+ last: 'mdi-page-last',
1739
+ unfold: 'mdi-unfold-more-horizontal',
1740
+ file: 'mdi-paperclip',
1741
+ plus: 'mdi-plus',
1742
+ minus: 'mdi-minus',
1743
+ calendar: 'mdi-calendar',
1744
+ treeviewCollapse: 'mdi-menu-down',
1745
+ treeviewExpand: 'mdi-menu-right',
1746
+ eyeDropper: 'mdi-eyedropper'
1747
+ };
1748
+ const mdi = {
1749
+ // Not using mergeProps here, functional components merge props by default (?)
1750
+ component: props => h(VClassIcon, {
1751
+ ...props,
1752
+ class: 'mdi'
1753
+ })
1754
+ };
1755
+
1756
+ // Icons
1757
+
1758
+ // Types
1759
+
1760
+ const md1 = {
1761
+ defaults: {
1762
+ global: {
1763
+ rounded: 'sm'
1764
+ },
1765
+ VAvatar: {
1766
+ rounded: 'circle'
1767
+ },
1768
+ VAutocomplete: {
1769
+ variant: 'underlined'
1770
+ },
1771
+ VBanner: {
1772
+ color: 'primary'
1773
+ },
1774
+ VBtn: {
1775
+ color: 'primary',
1776
+ rounded: 0
1777
+ },
1778
+ VCheckbox: {
1779
+ color: 'secondary'
1780
+ },
1781
+ VCombobox: {
1782
+ variant: 'underlined'
1783
+ },
1784
+ VSelect: {
1785
+ variant: 'underlined'
1786
+ },
1787
+ VSlider: {
1788
+ color: 'primary'
1789
+ },
1790
+ VTabs: {
1791
+ color: 'primary'
1792
+ },
1793
+ VTextarea: {
1794
+ variant: 'underlined'
1795
+ },
1796
+ VTextField: {
1797
+ variant: 'underlined'
1798
+ },
1799
+ VToolbar: {
1800
+ VBtn: {
1801
+ color: null
1802
+ }
1803
+ }
1804
+ },
1805
+ icons: {
1806
+ defaultSet: 'mdi',
1807
+ sets: {
1808
+ mdi
1809
+ }
1810
+ },
1811
+ theme: {
1812
+ themes: {
1813
+ light: {
1814
+ colors: {
1815
+ primary: '#3F51B5',
1816
+ 'primary-darken-1': '#303F9F',
1817
+ 'primary-lighten-1': '#C5CAE9',
1818
+ secondary: '#FF4081',
1819
+ 'secondary-darken-1': '#F50057',
1820
+ 'secondary-lighten-1': '#FF80AB',
1821
+ accent: '#009688'
1822
+ }
1823
+ }
1824
+ }
1825
+ }
1826
+ };
1827
+
1828
+ // Icons
1829
+
1830
+ // Types
1831
+
1832
+ const md2 = {
1833
+ defaults: {
1834
+ global: {
1835
+ rounded: 'md'
1836
+ },
1837
+ VAvatar: {
1838
+ rounded: 'circle'
1839
+ },
1840
+ VAutocomplete: {
1841
+ variant: 'filled'
1842
+ },
1843
+ VBanner: {
1844
+ color: 'primary'
1845
+ },
1846
+ VBtn: {
1847
+ color: 'primary'
1848
+ },
1849
+ VCheckbox: {
1850
+ color: 'secondary'
1851
+ },
1852
+ VCombobox: {
1853
+ variant: 'filled'
1854
+ },
1855
+ VSelect: {
1856
+ variant: 'filled'
1857
+ },
1858
+ VSlider: {
1859
+ color: 'primary'
1860
+ },
1861
+ VTabs: {
1862
+ color: 'primary'
1863
+ },
1864
+ VTextarea: {
1865
+ variant: 'filled'
1866
+ },
1867
+ VTextField: {
1868
+ variant: 'filled'
1869
+ },
1870
+ VToolbar: {
1871
+ VBtn: {
1872
+ color: null
1873
+ }
1874
+ }
1875
+ },
1876
+ icons: {
1877
+ defaultSet: 'mdi',
1878
+ sets: {
1879
+ mdi
1880
+ }
1881
+ },
1882
+ theme: {
1883
+ themes: {
1884
+ light: {
1885
+ colors: {
1886
+ primary: '#6200EE',
1887
+ 'primary-darken-1': '#3700B3',
1888
+ secondary: '#03DAC6',
1889
+ 'secondary-darken-1': '#018786',
1890
+ error: '#B00020'
1891
+ }
1892
+ }
1893
+ }
1894
+ }
1895
+ };
1896
+
1897
+ // Icons
1898
+
1899
+ // Types
1900
+
1901
+ const md3 = {
1902
+ defaults: {
1903
+ VAppBar: {
1904
+ flat: true
1905
+ },
1906
+ VAutocomplete: {
1907
+ variant: 'filled'
1908
+ },
1909
+ VBanner: {
1910
+ color: 'primary'
1911
+ },
1912
+ VBottomSheet: {
1913
+ contentClass: 'rounded-t-xl overflow-hidden'
1914
+ },
1915
+ VBtn: {
1916
+ color: 'primary',
1917
+ rounded: 'xl'
1918
+ },
1919
+ VBtnGroup: {
1920
+ rounded: 'xl',
1921
+ VBtn: {
1922
+ rounded: null
1923
+ }
1924
+ },
1925
+ VCard: {
1926
+ rounded: 'lg'
1927
+ },
1928
+ VCheckbox: {
1929
+ color: 'secondary',
1930
+ inset: true
1931
+ },
1932
+ VChip: {
1933
+ rounded: 'sm'
1934
+ },
1935
+ VCombobox: {
1936
+ variant: 'filled'
1937
+ },
1938
+ VNavigationDrawer: {
1939
+ // VList: {
1940
+ // nav: true,
1941
+ // VListItem: {
1942
+ // rounded: 'xl',
1943
+ // },
1944
+ // },
1945
+ },
1946
+ VSelect: {
1947
+ variant: 'filled'
1948
+ },
1949
+ VSlider: {
1950
+ color: 'primary'
1951
+ },
1952
+ VTabs: {
1953
+ color: 'primary'
1954
+ },
1955
+ VTextarea: {
1956
+ variant: 'filled'
1957
+ },
1958
+ VTextField: {
1959
+ variant: 'filled'
1960
+ },
1961
+ VToolbar: {
1962
+ VBtn: {
1963
+ color: null
1964
+ }
1965
+ }
1966
+ },
1967
+ icons: {
1968
+ defaultSet: 'mdi',
1969
+ sets: {
1970
+ mdi
1971
+ }
1972
+ },
1973
+ theme: {
1974
+ themes: {
1975
+ light: {
1976
+ colors: {
1977
+ primary: '#6750a4',
1978
+ secondary: '#b4b0bb',
1979
+ tertiary: '#7d5260',
1980
+ error: '#b3261e',
1981
+ surface: '#fffbfe'
1982
+ }
1983
+ }
1984
+ }
1537
1985
  }
1538
- return false;
1539
- }
1540
-
1541
- // Utilities
1542
-
1543
- // Types
1986
+ };
1544
1987
 
1545
- function useRender(render) {
1546
- const vm = getCurrentInstance('useRender');
1547
- vm.render = render;
1548
- }
1988
+ var index = /*#__PURE__*/Object.freeze({
1989
+ __proto__: null,
1990
+ md1: md1,
1991
+ md2: md2,
1992
+ md3: md3
1993
+ });
1549
1994
 
1550
1995
  // Utilities
1551
1996
 
@@ -2160,7 +2605,7 @@ function provideLocale(props) {
2160
2605
  provide(LocaleSymbol, data);
2161
2606
  return data;
2162
2607
  }
2163
- function genDefaults$3() {
2608
+ function genDefaults$2() {
2164
2609
  return {
2165
2610
  af: false,
2166
2611
  ar: true,
@@ -2207,7 +2652,7 @@ function genDefaults$3() {
2207
2652
  };
2208
2653
  }
2209
2654
  function createRtl(i18n, options) {
2210
- const rtl = ref(options?.rtl ?? genDefaults$3());
2655
+ const rtl = ref(options?.rtl ?? genDefaults$2());
2211
2656
  const isRtl = computed(() => rtl.value[i18n.current.value] ?? false);
2212
2657
  return {
2213
2658
  isRtl,
@@ -2240,7 +2685,7 @@ const ThemeSymbol = Symbol.for('vuetify:theme');
2240
2685
  const makeThemeProps = propsFactory({
2241
2686
  theme: String
2242
2687
  }, 'theme');
2243
- function genDefaults$2() {
2688
+ function genDefaults$1() {
2244
2689
  return {
2245
2690
  defaultTheme: 'light',
2246
2691
  variations: {
@@ -2327,8 +2772,8 @@ function genDefaults$2() {
2327
2772
  };
2328
2773
  }
2329
2774
  function parseThemeOptions() {
2330
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$2();
2331
- const defaults = genDefaults$2();
2775
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$1();
2776
+ const defaults = genDefaults$1();
2332
2777
  if (!options) return {
2333
2778
  ...defaults,
2334
2779
  isDisabled: true
@@ -2382,7 +2827,7 @@ function createTheme(options) {
2382
2827
  const current = computed(() => computedThemes.value[name.value]);
2383
2828
  const styles = computed(() => {
2384
2829
  const lines = [];
2385
- if (current.value.dark) {
2830
+ if (current.value?.dark) {
2386
2831
  createCssClass(lines, ':root', ['color-scheme: dark']);
2387
2832
  }
2388
2833
  createCssClass(lines, ':root', genCssVariables(current.value));
@@ -4323,212 +4768,6 @@ const VBtnToggle = genericComponent()({
4323
4768
  }
4324
4769
  });
4325
4770
 
4326
- // Composables
4327
-
4328
- // Types
4329
-
4330
- const aliases = {
4331
- collapse: 'mdi-chevron-up',
4332
- complete: 'mdi-check',
4333
- cancel: 'mdi-close-circle',
4334
- close: 'mdi-close',
4335
- delete: 'mdi-close-circle',
4336
- // delete (e.g. v-chip close)
4337
- clear: 'mdi-close-circle',
4338
- success: 'mdi-check-circle',
4339
- info: 'mdi-information',
4340
- warning: 'mdi-alert-circle',
4341
- error: 'mdi-close-circle',
4342
- prev: 'mdi-chevron-left',
4343
- next: 'mdi-chevron-right',
4344
- checkboxOn: 'mdi-checkbox-marked',
4345
- checkboxOff: 'mdi-checkbox-blank-outline',
4346
- checkboxIndeterminate: 'mdi-minus-box',
4347
- delimiter: 'mdi-circle',
4348
- // for carousel
4349
- sortAsc: 'mdi-arrow-up',
4350
- sortDesc: 'mdi-arrow-down',
4351
- expand: 'mdi-chevron-down',
4352
- menu: 'mdi-menu',
4353
- subgroup: 'mdi-menu-down',
4354
- dropdown: 'mdi-menu-down',
4355
- radioOn: 'mdi-radiobox-marked',
4356
- radioOff: 'mdi-radiobox-blank',
4357
- edit: 'mdi-pencil',
4358
- ratingEmpty: 'mdi-star-outline',
4359
- ratingFull: 'mdi-star',
4360
- ratingHalf: 'mdi-star-half-full',
4361
- loading: 'mdi-cached',
4362
- first: 'mdi-page-first',
4363
- last: 'mdi-page-last',
4364
- unfold: 'mdi-unfold-more-horizontal',
4365
- file: 'mdi-paperclip',
4366
- plus: 'mdi-plus',
4367
- minus: 'mdi-minus',
4368
- calendar: 'mdi-calendar',
4369
- treeviewCollapse: 'mdi-menu-down',
4370
- treeviewExpand: 'mdi-menu-right',
4371
- eyeDropper: 'mdi-eyedropper'
4372
- };
4373
- const mdi = {
4374
- // Not using mergeProps here, functional components merge props by default (?)
4375
- component: props => h(VClassIcon, {
4376
- ...props,
4377
- class: 'mdi'
4378
- })
4379
- };
4380
-
4381
- // Types
4382
-
4383
- const IconValue = [String, Function, Object, Array];
4384
- const IconSymbol = Symbol.for('vuetify:icons');
4385
- const makeIconProps = propsFactory({
4386
- icon: {
4387
- type: IconValue
4388
- },
4389
- // Could not remove this and use makeTagProps, types complained because it is not required
4390
- tag: {
4391
- type: String,
4392
- required: true
4393
- }
4394
- }, 'icon');
4395
- const VComponentIcon = genericComponent()({
4396
- name: 'VComponentIcon',
4397
- props: makeIconProps(),
4398
- setup(props, _ref) {
4399
- let {
4400
- slots
4401
- } = _ref;
4402
- return () => {
4403
- const Icon = props.icon;
4404
- return createVNode(props.tag, null, {
4405
- default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
4406
- });
4407
- };
4408
- }
4409
- });
4410
- const VSvgIcon = defineComponent({
4411
- name: 'VSvgIcon',
4412
- inheritAttrs: false,
4413
- props: makeIconProps(),
4414
- setup(props, _ref2) {
4415
- let {
4416
- attrs
4417
- } = _ref2;
4418
- return () => {
4419
- return createVNode(props.tag, mergeProps(attrs, {
4420
- "style": null
4421
- }), {
4422
- default: () => [createVNode("svg", {
4423
- "class": "v-icon__svg",
4424
- "xmlns": "http://www.w3.org/2000/svg",
4425
- "viewBox": "0 0 24 24",
4426
- "role": "img",
4427
- "aria-hidden": "true"
4428
- }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4429
- "d": path[0],
4430
- "fill-opacity": path[1]
4431
- }, null) : createVNode("path", {
4432
- "d": path
4433
- }, null)) : createVNode("path", {
4434
- "d": props.icon
4435
- }, null)])]
4436
- });
4437
- };
4438
- }
4439
- });
4440
- const VLigatureIcon = defineComponent({
4441
- name: 'VLigatureIcon',
4442
- props: makeIconProps(),
4443
- setup(props) {
4444
- return () => {
4445
- return createVNode(props.tag, null, {
4446
- default: () => [props.icon]
4447
- });
4448
- };
4449
- }
4450
- });
4451
- const VClassIcon = defineComponent({
4452
- name: 'VClassIcon',
4453
- props: makeIconProps(),
4454
- setup(props) {
4455
- return () => {
4456
- return createVNode(props.tag, {
4457
- "class": props.icon
4458
- }, null);
4459
- };
4460
- }
4461
- });
4462
- function genDefaults$1() {
4463
- return {
4464
- svg: {
4465
- component: VSvgIcon
4466
- },
4467
- class: {
4468
- component: VClassIcon
4469
- }
4470
- };
4471
- }
4472
-
4473
- // Composables
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
- }
4480
- return mergeDeep({
4481
- defaultSet,
4482
- sets,
4483
- aliases: {
4484
- ...aliases,
4485
- /* eslint-disable max-len */
4486
- vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],
4487
- 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z'
4488
- /* eslint-enable max-len */
4489
- }
4490
- }, options);
4491
- }
4492
- const useIcon = props => {
4493
- const icons = inject$1(IconSymbol);
4494
- if (!icons) throw new Error('Missing Vuetify Icons provide!');
4495
- const iconData = computed(() => {
4496
- const iconAlias = unref(props);
4497
- if (!iconAlias) return {
4498
- component: VComponentIcon
4499
- };
4500
- let icon = iconAlias;
4501
- if (typeof icon === 'string') {
4502
- icon = icon.trim();
4503
- if (icon.startsWith('$')) {
4504
- icon = icons.aliases?.[icon.slice(1)];
4505
- }
4506
- }
4507
- if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
4508
- if (Array.isArray(icon)) {
4509
- return {
4510
- component: VSvgIcon,
4511
- icon
4512
- };
4513
- } else if (typeof icon !== 'string') {
4514
- return {
4515
- component: VComponentIcon,
4516
- icon
4517
- };
4518
- }
4519
- const iconSetName = Object.keys(icons.sets).find(setName => typeof icon === 'string' && icon.startsWith(`${setName}:`));
4520
- const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;
4521
- const iconSet = icons.sets[iconSetName ?? icons.defaultSet];
4522
- return {
4523
- component: iconSet.component,
4524
- icon: iconName
4525
- };
4526
- });
4527
- return {
4528
- iconData
4529
- };
4530
- };
4531
-
4532
4771
  // Utilities
4533
4772
 
4534
4773
  // Types
@@ -4562,6 +4801,7 @@ function useSize(props) {
4562
4801
 
4563
4802
  const makeVIconProps = propsFactory({
4564
4803
  color: String,
4804
+ disabled: Boolean,
4565
4805
  start: Boolean,
4566
4806
  end: Boolean,
4567
4807
  icon: IconValue,
@@ -4599,11 +4839,13 @@ const VIcon = genericComponent()({
4599
4839
  if (slotValue) {
4600
4840
  slotIcon.value = flattenFragments(slotValue).filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
4601
4841
  }
4842
+ const hasClick = !!(attrs.onClick || attrs.onClickOnce);
4602
4843
  return createVNode(iconData.value.component, {
4603
4844
  "tag": props.tag,
4604
4845
  "icon": iconData.value.icon,
4605
4846
  "class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
4606
- 'v-icon--clickable': !!attrs.onClick,
4847
+ 'v-icon--clickable': hasClick,
4848
+ 'v-icon--disabled': props.disabled,
4607
4849
  'v-icon--start': props.start,
4608
4850
  'v-icon--end': props.end
4609
4851
  }, props.class],
@@ -4612,8 +4854,9 @@ const VIcon = genericComponent()({
4612
4854
  height: convertToUnit(props.size),
4613
4855
  width: convertToUnit(props.size)
4614
4856
  } : undefined, textColorStyles.value, props.style],
4615
- "role": attrs.onClick ? 'button' : undefined,
4616
- "aria-hidden": !attrs.onClick
4857
+ "role": hasClick ? 'button' : undefined,
4858
+ "aria-hidden": !hasClick,
4859
+ "tabindex": hasClick ? props.disabled ? -1 : 0 : undefined
4617
4860
  }, {
4618
4861
  default: () => [slotValue]
4619
4862
  });
@@ -8610,9 +8853,9 @@ const VListItem = genericComponent()({
8610
8853
  emit('click', e);
8611
8854
  if (isGroupActivator || !isClickable.value) return;
8612
8855
  link.navigate?.(e);
8613
- if (root.activatable) {
8856
+ if (root.activatable.value) {
8614
8857
  activate(!isActivated.value, e);
8615
- } else if (root.selectable) {
8858
+ } else if (root.selectable.value) {
8616
8859
  select(!isSelected.value, e);
8617
8860
  } else if (props.value != null) {
8618
8861
  select(!isSelected.value, e);
@@ -9751,7 +9994,7 @@ function useScrollStrategies(props, data) {
9751
9994
  scope?.stop();
9752
9995
  if (!(data.isActive.value && props.scrollStrategy)) return;
9753
9996
  scope = effectScope();
9754
- await nextTick();
9997
+ await new Promise(resolve => setTimeout(resolve));
9755
9998
  scope.active && scope.run(() => {
9756
9999
  if (typeof props.scrollStrategy === 'function') {
9757
10000
  props.scrollStrategy(data, props, scope);
@@ -10500,6 +10743,7 @@ const VOverlay = genericComponent()({
10500
10743
  if (v) isActive.value = false;
10501
10744
  });
10502
10745
  const root = ref();
10746
+ const scrimEl = ref();
10503
10747
  const contentEl = ref();
10504
10748
  const {
10505
10749
  contentStyles,
@@ -10521,8 +10765,10 @@ const VOverlay = genericComponent()({
10521
10765
  emit('click:outside', e);
10522
10766
  if (!props.persistent) isActive.value = false;else animateClick();
10523
10767
  }
10524
- function closeConditional() {
10525
- return isActive.value && globalTop.value;
10768
+ function closeConditional(e) {
10769
+ return isActive.value && globalTop.value && (
10770
+ // If using scrim, only close if clicking on it rather than anything opened on top
10771
+ !props.scrim || e.target === scrimEl.value);
10526
10772
  }
10527
10773
  IN_BROWSER && watch(isActive, val => {
10528
10774
  if (val) {
@@ -10609,7 +10855,8 @@ const VOverlay = genericComponent()({
10609
10855
  "ref": root
10610
10856
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
10611
10857
  "color": scrimColor,
10612
- "modelValue": isActive.value && !!props.scrim
10858
+ "modelValue": isActive.value && !!props.scrim,
10859
+ "ref": scrimEl
10613
10860
  }, scrimEvents.value), null), createVNode(MaybeTransition, {
10614
10861
  "appear": true,
10615
10862
  "persisted": true,
@@ -10632,6 +10879,7 @@ const VOverlay = genericComponent()({
10632
10879
  })]));
10633
10880
  return {
10634
10881
  activatorEl,
10882
+ scrimEl,
10635
10883
  target,
10636
10884
  animateClick,
10637
10885
  contentEl,
@@ -10827,6 +11075,9 @@ const VMenu = genericComponent()({
10827
11075
  isActive.value = false;
10828
11076
  overlay.value?.activatorEl?.focus();
10829
11077
  }
11078
+ } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
11079
+ isActive.value = false;
11080
+ parent?.closeParents();
10830
11081
  }
10831
11082
  }
10832
11083
  function onActivatorKeydown(e) {
@@ -11104,7 +11355,7 @@ const VField = genericComponent()({
11104
11355
  }
11105
11356
  useRender(() => {
11106
11357
  const isOutlined = props.variant === 'outlined';
11107
- const hasPrepend = slots['prepend-inner'] || props.prependInnerIcon;
11358
+ const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);
11108
11359
  const hasClear = !!(props.clearable || slots.clear);
11109
11360
  const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);
11110
11361
  const label = () => slots.label ? slots.label({
@@ -12528,8 +12779,8 @@ const VAutocomplete = genericComponent()({
12528
12779
  if (e.key === 'ArrowDown' && highlightFirst.value) {
12529
12780
  listRef.value?.focus('next');
12530
12781
  }
12531
- if (!props.multiple) return;
12532
12782
  if (['Backspace', 'Delete'].includes(e.key)) {
12783
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
12533
12784
  if (selectionIndex.value < 0) {
12534
12785
  if (e.key === 'Backspace' && !search.value) {
12535
12786
  selectionIndex.value = length - 1;
@@ -12537,10 +12788,10 @@ const VAutocomplete = genericComponent()({
12537
12788
  return;
12538
12789
  }
12539
12790
  const originalSelectionIndex = selectionIndex.value;
12540
- const selectedItem = model.value[selectionIndex.value];
12541
- if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
12791
+ select(model.value[selectionIndex.value], false);
12542
12792
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12543
12793
  }
12794
+ if (!props.multiple) return;
12544
12795
  if (e.key === 'ArrowLeft') {
12545
12796
  if (selectionIndex.value < 0 && selectionStart > 0) return;
12546
12797
  const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
@@ -12593,7 +12844,7 @@ const VAutocomplete = genericComponent()({
12593
12844
  /** @param set - null means toggle */
12594
12845
  function select(item) {
12595
12846
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12596
- if (item.props.disabled) return;
12847
+ if (!item || item.props.disabled) return;
12597
12848
  if (props.multiple) {
12598
12849
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12599
12850
  const add = set == null ? !~index : set;
@@ -16314,6 +16565,7 @@ const VCombobox = genericComponent()({
16314
16565
  }
16315
16566
  menu.value = !menu.value;
16316
16567
  }
16568
+ // eslint-disable-next-line complexity
16317
16569
  function onKeydown(e) {
16318
16570
  if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
16319
16571
  const selectionStart = vTextFieldRef.value.selectionStart;
@@ -16340,8 +16592,8 @@ const VCombobox = genericComponent()({
16340
16592
  select(transformItem$3(props, search.value));
16341
16593
  if (hasSelectionSlot.value) _search.value = '';
16342
16594
  }
16343
- if (!props.multiple) return;
16344
16595
  if (['Backspace', 'Delete'].includes(e.key)) {
16596
+ if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
16345
16597
  if (selectionIndex.value < 0) {
16346
16598
  if (e.key === 'Backspace' && !search.value) {
16347
16599
  selectionIndex.value = length - 1;
@@ -16349,10 +16601,10 @@ const VCombobox = genericComponent()({
16349
16601
  return;
16350
16602
  }
16351
16603
  const originalSelectionIndex = selectionIndex.value;
16352
- const selectedItem = model.value[selectionIndex.value];
16353
- if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
16604
+ select(model.value[selectionIndex.value], false);
16354
16605
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
16355
16606
  }
16607
+ if (!props.multiple) return;
16356
16608
  if (e.key === 'ArrowLeft') {
16357
16609
  if (selectionIndex.value < 0 && selectionStart > 0) return;
16358
16610
  const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
@@ -16383,7 +16635,7 @@ const VCombobox = genericComponent()({
16383
16635
  /** @param set - null means toggle */
16384
16636
  function select(item) {
16385
16637
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
16386
- if (item.props.disabled) return;
16638
+ if (!item || item.props.disabled) return;
16387
16639
  if (props.multiple) {
16388
16640
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
16389
16641
  const add = set == null ? !~index : set;
@@ -17611,7 +17863,7 @@ function setYear(date, year) {
17611
17863
  return d;
17612
17864
  }
17613
17865
  function startOfDay(date) {
17614
- return new Date(date.getFullYear(), date.getMonth(), date.getDate());
17866
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);
17615
17867
  }
17616
17868
  function endOfDay(date) {
17617
17869
  return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
@@ -20764,6 +21016,12 @@ const VDatePickerMonth = genericComponent()({
20764
21016
  const adapter = useDate();
20765
21017
  const rangeStart = shallowRef();
20766
21018
  const rangeStop = shallowRef();
21019
+ if (props.multiple === 'range' && model.value.length > 0) {
21020
+ rangeStart.value = model.value[0];
21021
+ if (model.value.length > 1) {
21022
+ rangeStop.value = model.value[model.value.length - 1];
21023
+ }
21024
+ }
20767
21025
  const atMax = computed(() => {
20768
21026
  const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;
20769
21027
  return model.value.length >= max;
@@ -20774,15 +21032,15 @@ const VDatePickerMonth = genericComponent()({
20774
21032
  rangeStart.value = _value;
20775
21033
  model.value = [rangeStart.value];
20776
21034
  } else if (!rangeStop.value) {
20777
- if (adapter.isSameDay(value, rangeStart.value)) {
21035
+ if (adapter.isSameDay(_value, rangeStart.value)) {
20778
21036
  rangeStart.value = undefined;
20779
21037
  model.value = [];
20780
21038
  return;
20781
- } else if (adapter.isBefore(value, rangeStart.value)) {
20782
- rangeStop.value = rangeStart.value;
21039
+ } else if (adapter.isBefore(_value, rangeStart.value)) {
21040
+ rangeStop.value = adapter.endOfDay(rangeStart.value);
20783
21041
  rangeStart.value = _value;
20784
21042
  } else {
20785
- rangeStop.value = _value;
21043
+ rangeStop.value = adapter.endOfDay(_value);
20786
21044
  }
20787
21045
  const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
20788
21046
  const datesInRange = [rangeStart.value];
@@ -22949,12 +23207,24 @@ const VNavigationDrawer = genericComponent()({
22949
23207
  default: () => [hasImage && createVNode("div", {
22950
23208
  "key": "image",
22951
23209
  "class": "v-navigation-drawer__img"
22952
- }, [slots.image ? slots.image?.({
22953
- image: props.image
22954
- }) : createVNode("img", {
22955
- "src": props.image,
22956
- "alt": ""
22957
- }, null)]), slots.prepend && createVNode("div", {
23210
+ }, [!slots.image ? createVNode(VImg, {
23211
+ "key": "image-img",
23212
+ "alt": "",
23213
+ "cover": true,
23214
+ "height": "inherit",
23215
+ "src": props.image
23216
+ }, null) : createVNode(VDefaultsProvider, {
23217
+ "key": "image-defaults",
23218
+ "disabled": !props.image,
23219
+ "defaults": {
23220
+ VImg: {
23221
+ alt: '',
23222
+ cover: true,
23223
+ height: 'inherit',
23224
+ src: props.image
23225
+ }
23226
+ }
23227
+ }, slots.image)]), slots.prepend && createVNode("div", {
22958
23228
  "class": "v-navigation-drawer__prepend"
22959
23229
  }, [slots.prepend?.()]), createVNode("div", {
22960
23230
  "class": "v-navigation-drawer__content"
@@ -23055,7 +23325,7 @@ const VOtpInput = genericComponent()({
23055
23325
  function onInput() {
23056
23326
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
23057
23327
  // The following logic simulates the behavior of a number input.
23058
- if (props.type === 'number' && /[^0-9]/g.test(current.value.value)) {
23328
+ if (isValidNumber(current.value.value)) {
23059
23329
  current.value.value = '';
23060
23330
  return;
23061
23331
  }
@@ -23101,7 +23371,9 @@ const VOtpInput = genericComponent()({
23101
23371
  function onPaste(index, e) {
23102
23372
  e.preventDefault();
23103
23373
  e.stopPropagation();
23104
- model.value = (e?.clipboardData?.getData('Text') ?? '').split('');
23374
+ const clipboardText = e?.clipboardData?.getData('Text') ?? '';
23375
+ if (!isValidNumber(clipboardText)) return;
23376
+ model.value = clipboardText.split('');
23105
23377
  inputRef.value?.[index].blur();
23106
23378
  }
23107
23379
  function reset() {
@@ -23115,6 +23387,9 @@ const VOtpInput = genericComponent()({
23115
23387
  blur();
23116
23388
  focusIndex.value = -1;
23117
23389
  }
23390
+ function isValidNumber(value) {
23391
+ return props.type === 'number' && !isNaN(Number(value));
23392
+ }
23118
23393
  provideDefaults({
23119
23394
  VField: {
23120
23395
  color: computed(() => props.color),
@@ -25973,7 +26248,7 @@ function createVuetify$1() {
25973
26248
  goTo
25974
26249
  };
25975
26250
  }
25976
- const version$1 = "3.5.9";
26251
+ const version$1 = "3.5.10";
25977
26252
  createVuetify$1.version = version$1;
25978
26253
 
25979
26254
  // Vue's inject() can only be used in setup
@@ -25998,8 +26273,8 @@ const createVuetify = function () {
25998
26273
  ...options
25999
26274
  });
26000
26275
  };
26001
- const version = "3.5.9";
26276
+ const version = "3.5.10";
26002
26277
  createVuetify.version = version;
26003
26278
 
26004
- export { components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
26279
+ export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
26005
26280
  //# sourceMappingURL=vuetify.esm.js.map