@vuetify/nightly 3.0.0-beta.10 → 3.0.0-beta.13

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 (224) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/dist/json/attributes.json +37 -29
  3. package/dist/json/importMap.json +46 -46
  4. package/dist/json/tags.json +10 -8
  5. package/dist/json/web-types.json +101 -87
  6. package/dist/vuetify.css +545 -441
  7. package/dist/vuetify.d.ts +12095 -10059
  8. package/dist/vuetify.esm.js +401 -266
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +371 -236
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +3 -3
  13. package/dist/vuetify.min.js +496 -490
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/blueprints/index.d.ts +171 -0
  16. package/lib/blueprints/md1.d.ts +167 -0
  17. package/lib/blueprints/md2.d.ts +167 -0
  18. package/lib/blueprints/md3.d.ts +167 -0
  19. package/lib/components/VAlert/index.d.ts +185 -0
  20. package/lib/components/VApp/index.d.ts +83 -0
  21. package/lib/components/VAppBar/VAppBar.css +3 -0
  22. package/lib/components/VAppBar/VAppBar.sass +3 -0
  23. package/lib/components/VAppBar/index.d.ts +156 -0
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.ts +1569 -0
  27. package/lib/components/VAvatar/VAvatar.css +44 -2
  28. package/lib/components/VAvatar/VAvatar.mjs +16 -12
  29. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  30. package/lib/components/VAvatar/VAvatar.sass +5 -1
  31. package/lib/components/VAvatar/_variables.scss +9 -4
  32. package/lib/components/VAvatar/index.d.ts +80 -0
  33. package/lib/components/VBadge/index.d.ts +123 -0
  34. package/lib/components/VBanner/index.d.ts +122 -0
  35. package/lib/components/VBottomNavigation/index.d.ts +143 -0
  36. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +2 -2
  37. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  38. package/lib/components/VBreadcrumbs/index.d.ts +301 -0
  39. package/lib/components/VBtn/VBtn.css +8 -3
  40. package/lib/components/VBtn/VBtn.mjs +16 -6
  41. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  42. package/lib/components/VBtn/index.d.ts +210 -0
  43. package/lib/components/VBtnGroup/index.d.ts +65 -0
  44. package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -3
  45. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  46. package/lib/components/VBtnToggle/index.d.ts +175 -0
  47. package/lib/components/VCard/VCard.css +8 -3
  48. package/lib/components/VCard/index.d.ts +230 -0
  49. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  50. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  51. package/lib/components/VCarousel/index.d.ts +80 -0
  52. package/lib/components/VCheckbox/index.d.ts +291 -0
  53. package/lib/components/VChip/index.d.ts +195 -0
  54. package/lib/components/VChipGroup/index.d.ts +89 -0
  55. package/lib/components/VCode/index.d.ts +19 -0
  56. package/lib/components/VColorPicker/index.d.ts +116 -0
  57. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  58. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  59. package/lib/components/VCombobox/index.d.ts +1590 -0
  60. package/lib/components/VCounter/index.d.ts +223 -0
  61. package/lib/components/VDefaultsProvider/index.d.ts +26 -0
  62. package/lib/components/VDialog/VDialog.css +2 -0
  63. package/lib/components/VDialog/VDialog.mjs +17 -12
  64. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  65. package/lib/components/VDialog/VDialog.sass +2 -0
  66. package/lib/components/VDialog/index.d.ts +859 -0
  67. package/lib/components/VDivider/index.d.ts +22 -0
  68. package/lib/components/VExpansionPanel/VExpansionPanel.css +8 -3
  69. package/lib/components/VExpansionPanel/index.d.ts +206 -0
  70. package/lib/components/VField/VField.css +27 -24
  71. package/lib/components/VField/VField.mjs +1 -1
  72. package/lib/components/VField/VField.mjs.map +1 -1
  73. package/lib/components/VField/VField.sass +23 -21
  74. package/lib/components/VField/index.d.ts +332 -0
  75. package/lib/components/VFileInput/VFileInput.mjs +3 -3
  76. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  77. package/lib/components/VFileInput/index.d.ts +236 -0
  78. package/lib/components/VFooter/VFooter.css +7 -0
  79. package/lib/components/VFooter/VFooter.sass +1 -1
  80. package/lib/components/VFooter/_variables.scss +11 -0
  81. package/lib/components/VFooter/index.d.ts +76 -0
  82. package/lib/components/VForm/index.d.ts +72 -0
  83. package/lib/components/VGrid/index.d.ts +154 -0
  84. package/lib/components/VHover/index.d.ts +30 -0
  85. package/lib/components/VIcon/index.d.ts +124 -0
  86. package/lib/components/VImg/VImg.mjs +29 -27
  87. package/lib/components/VImg/VImg.mjs.map +1 -1
  88. package/lib/components/VImg/index.d.ts +89 -0
  89. package/lib/components/VInput/VInput.mjs +4 -4
  90. package/lib/components/VInput/VInput.mjs.map +1 -1
  91. package/lib/components/VInput/index.d.ts +325 -0
  92. package/lib/components/VItemGroup/index.d.ts +210 -0
  93. package/lib/components/VKbd/index.d.ts +19 -0
  94. package/lib/components/VLabel/VLabel.css +4 -1
  95. package/lib/components/VLabel/VLabel.mjs +4 -1
  96. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  97. package/lib/components/VLabel/VLabel.sass +3 -1
  98. package/lib/components/VLabel/index.d.ts +16 -0
  99. package/lib/components/VLayout/index.d.ts +75 -0
  100. package/lib/components/VLazy/index.d.ts +85 -0
  101. package/lib/components/VList/VListItem.css +8 -3
  102. package/lib/components/VList/VListItem.mjs +4 -4
  103. package/lib/components/VList/VListItem.mjs.map +1 -1
  104. package/lib/components/VList/index.d.ts +1250 -0
  105. package/lib/components/VLocaleProvider/index.d.ts +23 -0
  106. package/lib/components/VMain/index.d.ts +26 -0
  107. package/lib/components/VMenu/VMenu.mjs +16 -3
  108. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  109. package/lib/components/VMenu/index.d.ts +817 -0
  110. package/lib/components/VMessages/index.d.ts +234 -0
  111. package/lib/components/VNavigationDrawer/index.d.ts +148 -0
  112. package/lib/components/VNoSsr/index.d.ts +7 -0
  113. package/lib/components/VOverlay/VOverlay.mjs +4 -3
  114. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  115. package/lib/components/VOverlay/index.d.ts +579 -0
  116. package/lib/components/VOverlay/useActivator.mjs +27 -1
  117. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  118. package/lib/components/VPagination/VPagination.mjs +6 -3
  119. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  120. package/lib/components/VPagination/index.d.ts +247 -0
  121. package/lib/components/VParallax/VParallax.mjs +24 -10
  122. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  123. package/lib/components/VParallax/index.d.ts +18 -0
  124. package/lib/components/VProgressCircular/index.d.ts +68 -0
  125. package/lib/components/VProgressLinear/index.d.ts +101 -0
  126. package/lib/components/VRadio/index.d.ts +103 -0
  127. package/lib/components/VRadioGroup/VRadioGroup.css +2 -3
  128. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  129. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  130. package/lib/components/VRadioGroup/VRadioGroup.sass +2 -2
  131. package/lib/components/VRadioGroup/_variables.scss +0 -1
  132. package/lib/components/VRadioGroup/index.d.ts +186 -0
  133. package/lib/components/VRangeSlider/VRangeSlider.mjs +12 -2
  134. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  135. package/lib/components/VRangeSlider/index.d.ts +242 -0
  136. package/lib/components/VRating/index.d.ts +356 -0
  137. package/lib/components/VResponsive/index.d.ts +23 -0
  138. package/lib/components/VSelect/VSelect.mjs +1 -1
  139. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  140. package/lib/components/VSelect/index.d.ts +1521 -0
  141. package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
  142. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  143. package/lib/components/VSelectionControl/index.d.ts +275 -0
  144. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +5 -0
  145. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +3 -1
  146. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  147. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +5 -0
  148. package/lib/components/VSelectionControlGroup/index.d.ts +47 -0
  149. package/lib/components/VSheet/index.d.ts +68 -0
  150. package/lib/components/VSlideGroup/index.d.ts +151 -0
  151. package/lib/components/VSlider/VSlider.css +7 -2
  152. package/lib/components/VSlider/VSlider.mjs +14 -4
  153. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  154. package/lib/components/VSlider/VSlider.sass +6 -2
  155. package/lib/components/VSlider/VSliderTrack.css +20 -20
  156. package/lib/components/VSlider/VSliderTrack.mjs +7 -3
  157. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  158. package/lib/components/VSlider/VSliderTrack.sass +14 -14
  159. package/lib/components/VSlider/_variables.scss +2 -2
  160. package/lib/components/VSlider/index.d.ts +239 -0
  161. package/lib/components/VSlider/slider.mjs +2 -2
  162. package/lib/components/VSlider/slider.mjs.map +1 -1
  163. package/lib/components/VSnackbar/VSnackbar.mjs +3 -2
  164. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  165. package/lib/components/VSnackbar/index.d.ts +892 -0
  166. package/lib/components/VSwitch/index.d.ts +175 -0
  167. package/lib/components/VSystemBar/index.d.ts +61 -0
  168. package/lib/components/VTable/index.d.ts +39 -0
  169. package/lib/components/VTabs/VTab.mjs +1 -0
  170. package/lib/components/VTabs/VTab.mjs.map +1 -1
  171. package/lib/components/VTabs/index.d.ts +178 -0
  172. package/lib/components/VTextField/VTextField.css +2 -3
  173. package/lib/components/VTextField/VTextField.sass +2 -4
  174. package/lib/components/VTextField/index.d.ts +582 -0
  175. package/lib/components/VTextarea/VTextarea.css +5 -3
  176. package/lib/components/VTextarea/VTextarea.mjs +2 -1
  177. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  178. package/lib/components/VTextarea/VTextarea.sass +5 -4
  179. package/lib/components/VTextarea/index.d.ts +218 -0
  180. package/lib/components/VThemeProvider/index.d.ts +24 -0
  181. package/lib/components/VTimeline/VTimeline.css +21 -6
  182. package/lib/components/VTimeline/VTimeline.mjs +6 -1
  183. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  184. package/lib/components/VTimeline/VTimeline.sass +16 -2
  185. package/lib/components/VTimeline/_variables.scss +4 -3
  186. package/lib/components/VTimeline/index.d.ts +154 -0
  187. package/lib/components/VToolbar/VToolbar.css +0 -1
  188. package/lib/components/VToolbar/VToolbar.sass +0 -1
  189. package/lib/components/VToolbar/index.d.ts +414 -0
  190. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  191. package/lib/components/VTooltip/index.d.ts +799 -0
  192. package/lib/components/VValidation/index.d.ts +61 -0
  193. package/lib/components/VWindow/index.d.ts +428 -0
  194. package/lib/components/index.d.ts +12037 -10009
  195. package/lib/components/transitions/index.d.ts +454 -0
  196. package/lib/composables/display.mjs +3 -3
  197. package/lib/composables/display.mjs.map +1 -1
  198. package/lib/composables/items.mjs.map +1 -1
  199. package/lib/composables/locale.mjs +10 -3
  200. package/lib/composables/locale.mjs.map +1 -1
  201. package/lib/composables/proxiedModel.mjs +28 -10
  202. package/lib/composables/proxiedModel.mjs.map +1 -1
  203. package/lib/composables/router.mjs +10 -2
  204. package/lib/composables/router.mjs.map +1 -1
  205. package/lib/composables/selectLink.mjs +4 -4
  206. package/lib/composables/selectLink.mjs.map +1 -1
  207. package/lib/composables/theme.mjs +37 -33
  208. package/lib/composables/theme.mjs.map +1 -1
  209. package/lib/composables/validation.mjs +1 -1
  210. package/lib/composables/validation.mjs.map +1 -1
  211. package/lib/entry-bundler.mjs +1 -1
  212. package/lib/framework.mjs +46 -51
  213. package/lib/framework.mjs.map +1 -1
  214. package/lib/index.d.ts +31 -22
  215. package/lib/locale/adapters/vue-i18n.d.ts +35 -0
  216. package/lib/locale/adapters/vue-intl.d.ts +42 -0
  217. package/lib/styles/main.css +73 -73
  218. package/lib/styles/settings/_colors.scss +84 -84
  219. package/lib/styles/tools/_states.sass +8 -3
  220. package/lib/util/getCurrentInstance.mjs +2 -3
  221. package/lib/util/getCurrentInstance.mjs.map +1 -1
  222. package/lib/util/helpers.mjs +6 -11
  223. package/lib/util/helpers.mjs.map +1 -1
  224. package/package.json +4 -2
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.0.0-beta.10
2
+ * Vuetify v3.0.0-beta.13
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { ref, onBeforeUnmount, watch, readonly, Fragment, computed, toRef, getCurrentInstance as getCurrentInstance$1, unref, provide, inject, shallowRef, shallowReactive, toRaw, watchEffect, effectScope, defineComponent as defineComponent$1, capitalize, camelize, h, onDeactivated, onActivated, reactive, onMounted, createVNode, toRefs, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, vShow, resolveDirective, isRef, resolveDynamicComponent, onScopeDispose, warn, toHandlers, Teleport, vModelDynamic, cloneVNode, createTextVNode, onBeforeUpdate, vModelText } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, Fragment, reactive, computed, watchEffect, toRefs, getCurrentInstance as getCurrentInstance$1, unref, provide, inject as inject$1, shallowRef, shallowReactive, toRaw, effectScope, defineComponent as defineComponent$1, capitalize, camelize, h, onDeactivated, onActivated, onMounted, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, isRef, toRef, resolveDynamicComponent, onScopeDispose, warn, toHandlers, Teleport, vModelDynamic, cloneVNode, createTextVNode, onBeforeUpdate, vModelText } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -350,21 +350,16 @@ function getEventCoordinates(e) {
350
350
  } // Only allow a single return type
351
351
 
352
352
  function destructComputed(getter) {
353
- const refs = {};
353
+ const refs = reactive({});
354
354
  const base = computed(getter);
355
-
356
- for (const key in base.value) {
357
- refs[key] = toRef(base.value, key);
358
- }
359
-
360
- watch(base, val => {
361
- for (const key in val) {
362
- refs[key].value = val[key];
355
+ watchEffect(() => {
356
+ for (const key in base.value) {
357
+ refs[key] = base.value[key];
363
358
  }
364
359
  }, {
365
360
  flush: 'sync'
366
361
  });
367
- return refs;
362
+ return toRefs(refs);
368
363
  }
369
364
  /** Array.includes but value can be any type */
370
365
 
@@ -925,10 +920,9 @@ function getCurrentInstance(name, message) {
925
920
  return vm;
926
921
  }
927
922
  function getCurrentInstanceName() {
928
- var _getCurrentInstance$t;
929
-
930
923
  let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
931
- return toKebabCase((_getCurrentInstance$t = getCurrentInstance(name).type) == null ? void 0 : _getCurrentInstance$t.name);
924
+ const vm = getCurrentInstance(name).type;
925
+ return toKebabCase((vm == null ? void 0 : vm.aliasName) || (vm == null ? void 0 : vm.name));
932
926
  }
933
927
  let _uid = 0;
934
928
 
@@ -968,7 +962,7 @@ function createDefaults(options) {
968
962
  return ref(options ?? {});
969
963
  }
970
964
  function useDefaults() {
971
- const defaults = inject(DefaultsSymbol);
965
+ const defaults = inject$1(DefaultsSymbol);
972
966
  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');
973
967
  return defaults;
974
968
  }
@@ -1259,12 +1253,12 @@ const makeLayoutItemProps = propsFactory({
1259
1253
  absolute: Boolean
1260
1254
  }, 'layout-item');
1261
1255
  function useLayout() {
1262
- const layout = inject(VuetifyLayoutKey);
1256
+ const layout = inject$1(VuetifyLayoutKey);
1263
1257
  if (!layout) throw new Error('Could not find injected Vuetify layout');
1264
1258
  return layout;
1265
1259
  }
1266
1260
  function useLayoutItem(options) {
1267
- const layout = inject(VuetifyLayoutKey);
1261
+ const layout = inject$1(VuetifyLayoutKey);
1268
1262
  if (!layout) throw new Error('Could not find injected Vuetify layout');
1269
1263
  const id = options.id ?? `layout-item-${getUid()}`;
1270
1264
  const vm = getCurrentInstance('useLayoutItem');
@@ -1321,7 +1315,7 @@ const generateLayers = (layout, positions, layoutSizes, activeItems) => {
1321
1315
  };
1322
1316
 
1323
1317
  function createLayout(props) {
1324
- const parentLayout = inject(VuetifyLayoutKey, null);
1318
+ const parentLayout = inject$1(VuetifyLayoutKey, null);
1325
1319
  const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX);
1326
1320
  const registered = ref([]);
1327
1321
  const positions = reactive(new Map());
@@ -1698,8 +1692,7 @@ function parseThemeOptions() {
1698
1692
  } // Composables
1699
1693
 
1700
1694
 
1701
- function createTheme(app, options) {
1702
- const head = app._context.provides.usehead;
1695
+ function createTheme(options) {
1703
1696
  const parsedOptions = reactive(parseThemeOptions(options));
1704
1697
  const name = ref(parsedOptions.defaultTheme);
1705
1698
  const themes = ref(parsedOptions.themes);
@@ -1786,46 +1779,51 @@ function createTheme(app, options) {
1786
1779
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
1787
1780
  });
1788
1781
 
1789
- if (head) {
1790
- head.addHeadObjs(computed(() => {
1791
- const style = {
1792
- children: styles.value,
1793
- type: 'text/css',
1794
- id: 'vuetify-theme-stylesheet'
1795
- };
1796
- if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce;
1797
- return {
1798
- style: [style]
1799
- };
1800
- }));
1782
+ function install(app) {
1783
+ const head = app._context.provides.usehead;
1801
1784
 
1802
- if (IN_BROWSER) {
1803
- watchEffect(() => head.updateDOM());
1804
- }
1805
- } else {
1806
- let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;
1807
- watch(styles, updateStyles, {
1808
- immediate: true
1809
- });
1810
-
1811
- function updateStyles() {
1812
- if (parsedOptions.isDisabled) return;
1785
+ if (head) {
1786
+ head.addHeadObjs(computed(() => {
1787
+ const style = {
1788
+ children: styles.value,
1789
+ type: 'text/css',
1790
+ id: 'vuetify-theme-stylesheet'
1791
+ };
1792
+ if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce;
1793
+ return {
1794
+ style: [style]
1795
+ };
1796
+ }));
1813
1797
 
1814
- if (typeof document !== 'undefined' && !styleEl) {
1815
- const el = document.createElement('style');
1816
- el.type = 'text/css';
1817
- el.id = 'vuetify-theme-stylesheet';
1818
- if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce);
1819
- styleEl = el;
1820
- document.head.appendChild(styleEl);
1798
+ if (IN_BROWSER) {
1799
+ watchEffect(() => head.updateDOM());
1821
1800
  }
1801
+ } else {
1802
+ let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;
1803
+ watch(styles, updateStyles, {
1804
+ immediate: true
1805
+ });
1806
+
1807
+ function updateStyles() {
1808
+ if (parsedOptions.isDisabled) return;
1809
+
1810
+ if (typeof document !== 'undefined' && !styleEl) {
1811
+ const el = document.createElement('style');
1812
+ el.type = 'text/css';
1813
+ el.id = 'vuetify-theme-stylesheet';
1814
+ if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce);
1815
+ styleEl = el;
1816
+ document.head.appendChild(styleEl);
1817
+ }
1822
1818
 
1823
- if (styleEl) styleEl.innerHTML = styles.value;
1819
+ if (styleEl) styleEl.innerHTML = styles.value;
1820
+ }
1824
1821
  }
1825
1822
  }
1826
1823
 
1827
1824
  const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
1828
1825
  return {
1826
+ install,
1829
1827
  isDisabled: parsedOptions.isDisabled,
1830
1828
  name,
1831
1829
  themes,
@@ -1841,7 +1839,7 @@ function createTheme(app, options) {
1841
1839
  }
1842
1840
  function provideTheme(props) {
1843
1841
  getCurrentInstance('provideTheme');
1844
- const theme = inject(ThemeSymbol, null);
1842
+ const theme = inject$1(ThemeSymbol, null);
1845
1843
  if (!theme) throw new Error('Could not find Vuetify theme injection');
1846
1844
  const name = computed(() => {
1847
1845
  return props.theme ?? (theme == null ? void 0 : theme.name.value);
@@ -1856,7 +1854,7 @@ function provideTheme(props) {
1856
1854
  }
1857
1855
  function useTheme() {
1858
1856
  getCurrentInstance('useTheme');
1859
- const theme = inject(ThemeSymbol, null);
1857
+ const theme = inject$1(ThemeSymbol, null);
1860
1858
  if (!theme) throw new Error('Could not find Vuetify theme injection');
1861
1859
  return theme;
1862
1860
  }
@@ -2030,14 +2028,14 @@ function createRtlScope(currentScope, localeScope, options) {
2030
2028
  };
2031
2029
  }
2032
2030
  function provideRtl(props, localeScope) {
2033
- const currentScope = inject(RtlSymbol);
2031
+ const currentScope = inject$1(RtlSymbol);
2034
2032
  if (!currentScope) throw new Error('[Vuetify] Could not find injected rtl instance');
2035
2033
  const newScope = createRtlScope(currentScope, localeScope, props);
2036
2034
  provide(RtlSymbol, newScope);
2037
2035
  return newScope;
2038
2036
  }
2039
2037
  function useRtl() {
2040
- const currentScope = inject(RtlSymbol);
2038
+ const currentScope = inject$1(RtlSymbol);
2041
2039
  if (!currentScope) throw new Error('[Vuetify] Could not find injected rtl instance');
2042
2040
  return currentScope;
2043
2041
  }
@@ -2783,20 +2781,22 @@ const VImg = defineComponent({
2783
2781
  'v-img__img--contain': !props.cover
2784
2782
  }));
2785
2783
 
2786
- const __image = computed(() => {
2784
+ const __image = () => {
2787
2785
  var _slots$sources;
2788
2786
 
2789
- if (!normalisedSrc.value.src || state.value === 'idle') return;
2790
- const img = h('img', {
2791
- class: ['v-img__img', containClasses.value],
2792
- src: normalisedSrc.value.src,
2793
- srcset: normalisedSrc.value.srcset,
2794
- alt: '',
2795
- sizes: props.sizes,
2796
- ref: image,
2797
- onLoad,
2798
- onError
2799
- });
2787
+ if (!normalisedSrc.value.src || state.value === 'idle') return null;
2788
+
2789
+ const img = createVNode("img", {
2790
+ "class": ['v-img__img', containClasses.value],
2791
+ "src": normalisedSrc.value.src,
2792
+ "srcset": normalisedSrc.value.srcset,
2793
+ "alt": "",
2794
+ "sizes": props.sizes,
2795
+ "ref": image,
2796
+ "onLoad": onLoad,
2797
+ "onError": onError
2798
+ }, null);
2799
+
2800
2800
  const sources = (_slots$sources = slots.sources) == null ? void 0 : _slots$sources.call(slots);
2801
2801
  return createVNode(MaybeTransition, {
2802
2802
  "transition": props.transition,
@@ -2806,9 +2806,9 @@ const VImg = defineComponent({
2806
2806
  "class": "v-img__picture"
2807
2807
  }, [sources, img]) : img, [[vShow, state.value === 'loaded']])]
2808
2808
  });
2809
- });
2809
+ };
2810
2810
 
2811
- const __preloadImage = computed(() => createVNode(MaybeTransition, {
2811
+ const __preloadImage = () => createVNode(MaybeTransition, {
2812
2812
  "transition": props.transition
2813
2813
  }, {
2814
2814
  default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && createVNode("img", {
@@ -2816,10 +2816,10 @@ const VImg = defineComponent({
2816
2816
  "src": normalisedSrc.value.lazySrc,
2817
2817
  "alt": ""
2818
2818
  }, null)]
2819
- }));
2819
+ });
2820
2820
 
2821
- const __placeholder = computed(() => {
2822
- if (!slots.placeholder) return;
2821
+ const __placeholder = () => {
2822
+ if (!slots.placeholder) return null;
2823
2823
  return createVNode(MaybeTransition, {
2824
2824
  "transition": props.transition,
2825
2825
  "appear": true
@@ -2828,10 +2828,10 @@ const VImg = defineComponent({
2828
2828
  "class": "v-img__placeholder"
2829
2829
  }, [slots.placeholder()])]
2830
2830
  });
2831
- });
2831
+ };
2832
2832
 
2833
- const __error = computed(() => {
2834
- if (!slots.error) return;
2833
+ const __error = () => {
2834
+ if (!slots.error) return null;
2835
2835
  return createVNode(MaybeTransition, {
2836
2836
  "transition": props.transition,
2837
2837
  "appear": true
@@ -2840,17 +2840,17 @@ const VImg = defineComponent({
2840
2840
  "class": "v-img__error"
2841
2841
  }, [slots.error()])]
2842
2842
  });
2843
- });
2843
+ };
2844
2844
 
2845
- const __gradient = computed(() => {
2846
- if (!props.gradient) return;
2845
+ const __gradient = () => {
2846
+ if (!props.gradient) return null;
2847
2847
  return createVNode("div", {
2848
2848
  "class": "v-img__gradient",
2849
2849
  "style": {
2850
2850
  backgroundImage: `linear-gradient(${props.gradient})`
2851
2851
  }
2852
2852
  }, null);
2853
- });
2853
+ };
2854
2854
 
2855
2855
  const isBooted = ref(false);
2856
2856
  {
@@ -2877,7 +2877,7 @@ const VImg = defineComponent({
2877
2877
  "aria-label": props.alt,
2878
2878
  "role": props.alt ? 'img' : undefined
2879
2879
  }, {
2880
- additional: () => [__image.value, __preloadImage.value, __gradient.value, __placeholder.value, __error.value],
2880
+ additional: () => createVNode(Fragment, null, [createVNode(__image, null, null), createVNode(__preloadImage, null, null), createVNode(__gradient, null, null), createVNode(__placeholder, null, null), createVNode(__error, null, null)]),
2881
2881
  default: slots.default
2882
2882
  }), [[resolveDirective("intersect"), {
2883
2883
  handler: init,
@@ -3207,6 +3207,23 @@ function filterToolbarProps(props) {
3207
3207
  return pick(props, Object.keys((VToolbar == null ? void 0 : VToolbar.props) ?? {}));
3208
3208
  }
3209
3209
 
3210
+ function useToggleScope(source, cb) {
3211
+ let scope;
3212
+ watch(source, active => {
3213
+ if (active && !scope) {
3214
+ scope = effectScope();
3215
+ scope.run(cb);
3216
+ } else {
3217
+ var _scope;
3218
+
3219
+ (_scope = scope) == null ? void 0 : _scope.stop();
3220
+ scope = undefined;
3221
+ }
3222
+ }, {
3223
+ immediate: true
3224
+ });
3225
+ }
3226
+
3210
3227
  // Utilities
3211
3228
 
3212
3229
  // Composables
@@ -3214,28 +3231,45 @@ function useProxiedModel(props, prop, defaultValue) {
3214
3231
  let transformIn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : v => v;
3215
3232
  let transformOut = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : v => v;
3216
3233
  const vm = getCurrentInstance('useProxiedModel');
3217
- const propIsDefined = computed(() => {
3218
- var _vm$vnode$props, _vm$vnode$props2;
3234
+ const internal = ref(props[prop]);
3235
+ const kebabProp = toKebabCase(prop);
3236
+ const checkKebab = kebabProp !== prop;
3237
+ const isControlled = checkKebab ? computed(() => {
3238
+ var _vm$vnode$props, _vm$vnode$props2, _vm$vnode$props3, _vm$vnode$props4;
3219
3239
 
3220
3240
  void props[prop];
3221
- return !!(vm != null && (_vm$vnode$props = vm.vnode.props) != null && _vm$vnode$props.hasOwnProperty(prop) || vm != null && (_vm$vnode$props2 = vm.vnode.props) != null && _vm$vnode$props2.hasOwnProperty(toKebabCase(prop)));
3241
+ return !!(((_vm$vnode$props = vm.vnode.props) != null && _vm$vnode$props.hasOwnProperty(prop) || (_vm$vnode$props2 = vm.vnode.props) != null && _vm$vnode$props2.hasOwnProperty(kebabProp)) && ((_vm$vnode$props3 = vm.vnode.props) != null && _vm$vnode$props3.hasOwnProperty(`onUpdate:${prop}`) || (_vm$vnode$props4 = vm.vnode.props) != null && _vm$vnode$props4.hasOwnProperty(`onUpdate:${kebabProp}`)));
3242
+ }) : computed(() => {
3243
+ var _vm$vnode$props5, _vm$vnode$props6;
3244
+
3245
+ void props[prop];
3246
+ return !!((_vm$vnode$props5 = vm.vnode.props) != null && _vm$vnode$props5.hasOwnProperty(prop) && (_vm$vnode$props6 = vm.vnode.props) != null && _vm$vnode$props6.hasOwnProperty(`onUpdate:${prop}`));
3247
+ });
3248
+ useToggleScope(() => !isControlled.value, () => {
3249
+ watch(() => props[prop], val => {
3250
+ internal.value = val;
3251
+ });
3222
3252
  });
3223
- const internal = ref(transformIn(props[prop]));
3224
- return computed({
3253
+ const model = computed({
3225
3254
  get() {
3226
- if (propIsDefined.value) return transformIn(props[prop]);else return internal.value;
3255
+ return transformIn(isControlled.value ? props[prop] : internal.value);
3227
3256
  },
3228
3257
 
3229
3258
  set(newValue) {
3230
- if ((propIsDefined.value ? transformIn(props[prop]) : internal.value) === newValue) {
3259
+ if (transformIn(isControlled.value ? props[prop] : internal.value) === newValue) {
3231
3260
  return;
3232
3261
  }
3233
3262
 
3263
+ newValue = transformOut(newValue);
3234
3264
  internal.value = newValue;
3235
- vm == null ? void 0 : vm.emit(`update:${prop}`, transformOut(newValue));
3265
+ vm == null ? void 0 : vm.emit(`update:${prop}`, newValue);
3236
3266
  }
3237
3267
 
3238
3268
  });
3269
+ Object.defineProperty(model, 'externalValue', {
3270
+ get: () => isControlled.value ? props[prop] : internal.value
3271
+ });
3272
+ return model;
3239
3273
  }
3240
3274
 
3241
3275
  const VAppBar = defineComponent({
@@ -3455,7 +3489,7 @@ function useGroupItem(props, injectKey) {
3455
3489
 
3456
3490
  const id = getUid();
3457
3491
  provide(Symbol.for(`${injectKey.description}:id`), id);
3458
- const group = inject(injectKey, null);
3492
+ const group = inject$1(injectKey, null);
3459
3493
 
3460
3494
  if (!group) {
3461
3495
  if (!required) return group;
@@ -3650,9 +3684,7 @@ function getValues(items, ids) {
3650
3684
  const VBtnToggleSymbol = Symbol.for('vuetify:v-btn-toggle');
3651
3685
  const VBtnToggle = genericComponent()({
3652
3686
  name: 'VBtnToggle',
3653
- props: makeGroupProps({
3654
- selectedClass: 'v-btn--selected'
3655
- }),
3687
+ props: makeGroupProps(),
3656
3688
  emits: {
3657
3689
  'update:modelValue': value => true
3658
3690
  },
@@ -3837,7 +3869,7 @@ function createIcons(options) {
3837
3869
  }, options);
3838
3870
  }
3839
3871
  const useIcon = props => {
3840
- const icons = inject(IconSymbol);
3872
+ const icons = inject$1(IconSymbol);
3841
3873
  if (!icons) throw new Error('Missing Vuetify Icons provide!');
3842
3874
  const iconData = computed(() => {
3843
3875
  const iconAlias = isRef(props) ? props.value : props.icon;
@@ -4756,16 +4788,24 @@ function useLink(props, attrs) {
4756
4788
  }
4757
4789
 
4758
4790
  const link = props.to ? RouterLink.useLink(props) : undefined;
4759
- return { ...link,
4791
+ return {
4760
4792
  isLink,
4761
4793
  isClickable,
4794
+ route: link == null ? void 0 : link.route,
4795
+ navigate: link == null ? void 0 : link.navigate,
4796
+ isActive: link && computed(() => {
4797
+ var _link$isExactActive, _link$isActive;
4798
+
4799
+ return props.exact ? (_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value : (_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value;
4800
+ }),
4762
4801
  href: computed(() => props.to ? link == null ? void 0 : link.route.value.href : props.href)
4763
4802
  };
4764
4803
  }
4765
4804
  const makeRouterProps = propsFactory({
4766
4805
  href: String,
4767
4806
  replace: Boolean,
4768
- to: [String, Object]
4807
+ to: [String, Object],
4808
+ exact: Boolean
4769
4809
  }, 'router');
4770
4810
  let inTransition = false;
4771
4811
  function useBackButton(router, cb) {
@@ -4811,11 +4851,11 @@ function useBackButton(router, cb) {
4811
4851
 
4812
4852
  function useSelectLink(link, select) {
4813
4853
  watch(() => {
4814
- var _link$isExactActive;
4854
+ var _link$isActive;
4815
4855
 
4816
- return (_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value;
4817
- }, isExactActive => {
4818
- if (link.isLink.value && isExactActive && select) {
4856
+ return (_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value;
4857
+ }, isActive => {
4858
+ if (link.isLink.value && isActive && select) {
4819
4859
  nextTick(() => {
4820
4860
  select(true);
4821
4861
  });
@@ -4831,7 +4871,10 @@ const VBtn = defineComponent({
4831
4871
  Ripple
4832
4872
  },
4833
4873
  props: {
4834
- active: Boolean,
4874
+ active: {
4875
+ type: Boolean,
4876
+ default: undefined
4877
+ },
4835
4878
  symbol: {
4836
4879
  type: null,
4837
4880
  default: VBtnToggleSymbol
@@ -4907,10 +4950,16 @@ const VBtn = defineComponent({
4907
4950
  roundedClasses
4908
4951
  } = useRounded(props);
4909
4952
  const {
4910
- sizeClasses
4953
+ sizeClasses,
4954
+ sizeStyles
4911
4955
  } = useSize(props);
4912
4956
  const group = useGroupItem(props, props.symbol, false);
4913
4957
  const link = useLink(props, attrs);
4958
+ const isActive = computed(() => {
4959
+ var _link$isActive;
4960
+
4961
+ return props.active !== false && (props.active || ((_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value) || (group == null ? void 0 : group.isSelected.value));
4962
+ });
4914
4963
  const isDisabled = computed(() => (group == null ? void 0 : group.disabled.value) || props.disabled);
4915
4964
  const isElevated = computed(() => {
4916
4965
  return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);
@@ -4923,10 +4972,11 @@ const VBtn = defineComponent({
4923
4972
  const hasColor = !group || group.isSelected.value;
4924
4973
  const hasPrepend = !!(props.prependIcon || slots.prepend);
4925
4974
  const hasAppend = !!(props.appendIcon || slots.append);
4975
+ const hasIcon = !!(props.icon && props.icon !== true);
4926
4976
  return withDirectives(createVNode(Tag, {
4927
4977
  "type": Tag === 'a' ? undefined : 'button',
4928
4978
  "class": ['v-btn', group == null ? void 0 : group.selectedClass.value, {
4929
- 'v-btn--active': props.active,
4979
+ 'v-btn--active': isActive.value,
4930
4980
  'v-btn--block': props.block,
4931
4981
  'v-btn--disabled': isDisabled.value,
4932
4982
  'v-btn--elevated': isElevated.value,
@@ -4935,7 +4985,7 @@ const VBtn = defineComponent({
4935
4985
  'v-btn--loading': props.loading,
4936
4986
  'v-btn--stacked': props.stacked
4937
4987
  }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
4938
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value],
4988
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value],
4939
4989
  "disabled": isDisabled.value || undefined,
4940
4990
  "href": link.href.value,
4941
4991
  "onClick": e => {
@@ -4964,11 +5014,11 @@ const VBtn = defineComponent({
4964
5014
  "key": "content",
4965
5015
  "defaults": {
4966
5016
  VIcon: {
4967
- icon: typeof props.icon === 'string' ? props.icon : undefined
5017
+ icon: hasIcon ? props.icon : undefined
4968
5018
  }
4969
5019
  }
4970
5020
  }, {
4971
- default: () => [((_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)) ?? (typeof props.icon === 'string' && createVNode(VIcon, {
5021
+ default: () => [((_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)) ?? (hasIcon && createVNode(VIcon, {
4972
5022
  "key": "icon"
4973
5023
  }, null))]
4974
5024
  })]), !props.icon && hasAppend && createVNode(VDefaultsProvider, {
@@ -5074,12 +5124,12 @@ const VAlertTitle = createSimpleFunctional('v-alert-title');
5074
5124
  const LocaleAdapterSymbol = Symbol.for('vuetify:locale-adapter');
5075
5125
  const VuetifyLocaleSymbol = Symbol.for('vuetify:locale');
5076
5126
  function provideLocale(props) {
5077
- const adapter = inject(LocaleAdapterSymbol);
5127
+ const adapter = inject$1(LocaleAdapterSymbol);
5078
5128
  if (!adapter) throw new Error('[Vuetify] Could not find injected locale adapter');
5079
5129
  return adapter.createScope(props);
5080
5130
  }
5081
5131
  function useLocale() {
5082
- const adapter = inject(LocaleAdapterSymbol);
5132
+ const adapter = inject$1(LocaleAdapterSymbol);
5083
5133
  if (!adapter) throw new Error('[Vuetify] Could not find injected locale adapter');
5084
5134
  return adapter.getScope();
5085
5135
  }
@@ -5090,9 +5140,16 @@ function isLocaleAdapter(x) {
5090
5140
 
5091
5141
  function createLocale(app, options) {
5092
5142
  const adapter = isLocaleAdapter(options) ? options : createDefaultLocaleAdapter(options);
5093
- const instance = adapter.createRoot(app);
5094
- app == null ? void 0 : app.provide(RtlSymbol, createRtl(instance, options));
5095
- return adapter;
5143
+
5144
+ function install(app) {
5145
+ const instance = adapter.createRoot(app);
5146
+ app.provide(RtlSymbol, createRtl(instance, options));
5147
+ }
5148
+
5149
+ return {
5150
+ adapter,
5151
+ install
5152
+ };
5096
5153
  }
5097
5154
  const LANG_PREFIX = '$vuetify.';
5098
5155
 
@@ -5172,12 +5229,12 @@ function createDefaultLocaleAdapter(options) {
5172
5229
  return rootScope;
5173
5230
  },
5174
5231
  getScope: () => {
5175
- const currentScope = inject(VuetifyLocaleSymbol);
5232
+ const currentScope = inject$1(VuetifyLocaleSymbol);
5176
5233
  if (!currentScope) throw new Error('[Vuetify] Could not find injected locale instance');
5177
5234
  return currentScope;
5178
5235
  },
5179
5236
  createScope: options => {
5180
- const currentScope = inject(VuetifyLocaleSymbol);
5237
+ const currentScope = inject$1(VuetifyLocaleSymbol);
5181
5238
  if (!currentScope) throw new Error('[Vuetify] Could not find injected locale instance');
5182
5239
  const newScope = createScope({
5183
5240
  current: computed(() => (options == null ? void 0 : options.locale) ?? currentScope.current.value),
@@ -5536,7 +5593,7 @@ function createForm(props) {
5536
5593
  };
5537
5594
  }
5538
5595
  function useForm() {
5539
- return inject(FormKey, null);
5596
+ return inject$1(FormKey, null);
5540
5597
  }
5541
5598
 
5542
5599
  // Composables
@@ -5566,7 +5623,7 @@ function useValidation(props) {
5566
5623
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
5567
5624
  let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();
5568
5625
  const model = useProxiedModel(props, 'modelValue');
5569
- const validationModel = computed(() => props.validationValue ?? model.value);
5626
+ const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
5570
5627
  const form = useForm();
5571
5628
  const internalErrorMessages = ref([]);
5572
5629
  const isPristine = ref(true);
@@ -5772,18 +5829,18 @@ const VInput = genericComponent()({
5772
5829
  }, [hasPrepend && createVNode("div", {
5773
5830
  "key": "prepend",
5774
5831
  "class": "v-input__prepend"
5775
- }, [props.prependIcon && createVNode(InputIcon, {
5832
+ }, [(_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value), props.prependIcon && createVNode(InputIcon, {
5776
5833
  "key": "prepend-icon",
5777
5834
  "name": "prepend"
5778
- }, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)]), slots.default && createVNode("div", {
5835
+ }, null)]), slots.default && createVNode("div", {
5779
5836
  "class": "v-input__control"
5780
5837
  }, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && createVNode("div", {
5781
5838
  "key": "append",
5782
5839
  "class": "v-input__append"
5783
- }, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value), props.appendIcon && createVNode(InputIcon, {
5840
+ }, [props.appendIcon && createVNode(InputIcon, {
5784
5841
  "key": "append-icon",
5785
5842
  "name": "append"
5786
- }, null)]), hasDetails && createVNode("div", {
5843
+ }, null), (_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value)]), hasDetails && createVNode("div", {
5787
5844
  "class": "v-input__details"
5788
5845
  }, [createVNode(VMessages, {
5789
5846
  "active": hasMessages,
@@ -5809,6 +5866,7 @@ const VLabel = defineComponent({
5809
5866
  name: 'VLabel',
5810
5867
  props: {
5811
5868
  text: String,
5869
+ clickable: Boolean,
5812
5870
  ...makeThemeProps()
5813
5871
  },
5814
5872
 
@@ -5820,7 +5878,9 @@ const VLabel = defineComponent({
5820
5878
  var _slots$default;
5821
5879
 
5822
5880
  return createVNode("label", {
5823
- "class": "v-label"
5881
+ "class": ['v-label', {
5882
+ 'v-label--clickable': props.clickable
5883
+ }]
5824
5884
  }, [props.text, (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]);
5825
5885
  });
5826
5886
  return {};
@@ -5873,7 +5933,9 @@ const VSelectionControlGroup = defineComponent({
5873
5933
  var _slots$default;
5874
5934
 
5875
5935
  return createVNode("div", {
5876
- "class": "v-selection-control-group",
5936
+ "class": ['v-selection-control-group', {
5937
+ 'v-selection-control-group--inline': props.inline
5938
+ }],
5877
5939
  "aria-labelled-by": props.type === 'radio' ? id.value : undefined,
5878
5940
  "role": props.type === 'radio' ? 'radiogroup' : undefined
5879
5941
  }, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]);
@@ -5915,7 +5977,7 @@ const makeSelectionControlProps = propsFactory({
5915
5977
  ...makeDensityProps()
5916
5978
  });
5917
5979
  function useSelectionControl(props) {
5918
- const group = inject(VSelectionControlGroupSymbol, undefined);
5980
+ const group = inject$1(VSelectionControlGroupSymbol, undefined);
5919
5981
  const {
5920
5982
  densityClasses
5921
5983
  } = useDensity(props);
@@ -6064,7 +6126,8 @@ const VSelectionControl = genericComponent()({
6064
6126
  id: id.value
6065
6127
  }
6066
6128
  })]), [[resolveDirective("ripple"), props.ripple && [!props.disabled && !props.readonly, null, ['center', 'circle']]]])]), label && createVNode(VLabel, {
6067
- "for": id.value
6129
+ "for": id.value,
6130
+ "clickable": true
6068
6131
  }, {
6069
6132
  default: () => [label]
6070
6133
  })]);
@@ -6180,7 +6243,6 @@ const VCheckbox = defineComponent({
6180
6243
  });
6181
6244
 
6182
6245
  const makeVAvatarProps = propsFactory({
6183
- color: String,
6184
6246
  start: Boolean,
6185
6247
  end: Boolean,
6186
6248
  icon: IconValue,
@@ -6188,7 +6250,10 @@ const makeVAvatarProps = propsFactory({
6188
6250
  ...makeDensityProps(),
6189
6251
  ...makeRoundedProps(),
6190
6252
  ...makeSizeProps(),
6191
- ...makeTagProps()
6253
+ ...makeTagProps(),
6254
+ ...makeVariantProps({
6255
+ variant: 'flat'
6256
+ })
6192
6257
  });
6193
6258
  const VAvatar = defineComponent({
6194
6259
  name: 'VAvatar',
@@ -6199,9 +6264,10 @@ const VAvatar = defineComponent({
6199
6264
  slots
6200
6265
  } = _ref;
6201
6266
  const {
6202
- backgroundColorClasses,
6203
- backgroundColorStyles
6204
- } = useBackgroundColor(toRef(props, 'color'));
6267
+ colorClasses,
6268
+ colorStyles,
6269
+ variantClasses
6270
+ } = useVariant(props);
6205
6271
  const {
6206
6272
  densityClasses
6207
6273
  } = useDensity(props);
@@ -6219,15 +6285,17 @@ const VAvatar = defineComponent({
6219
6285
  "class": ['v-avatar', {
6220
6286
  'v-avatar--start': props.start,
6221
6287
  'v-avatar--end': props.end
6222
- }, backgroundColorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value],
6223
- "style": [backgroundColorStyles.value, sizeStyles.value]
6288
+ }, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6289
+ "style": [colorStyles.value, sizeStyles.value]
6224
6290
  }, {
6225
6291
  default: () => [props.image ? createVNode(VImg, {
6292
+ "key": "image",
6226
6293
  "src": props.image,
6227
6294
  "alt": ""
6228
6295
  }, null) : props.icon ? createVNode(VIcon, {
6296
+ "key": "icon",
6229
6297
  "icon": props.icon
6230
- }, null) : (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]
6298
+ }, null) : (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), genOverlays(false, 'v-avatar')]
6231
6299
  });
6232
6300
  });
6233
6301
  return {};
@@ -6554,7 +6622,7 @@ const VDivider = defineComponent({
6554
6622
 
6555
6623
  const ListKey = Symbol.for('vuetify:list');
6556
6624
  function createList() {
6557
- const parent = inject(ListKey, {
6625
+ const parent = inject$1(ListKey, {
6558
6626
  hasPrepend: ref(false),
6559
6627
  updateHasPrepend: () => null
6560
6628
  });
@@ -6568,7 +6636,7 @@ function createList() {
6568
6636
  return parent;
6569
6637
  }
6570
6638
  function useList() {
6571
- return inject(ListKey, null);
6639
+ return inject$1(ListKey, null);
6572
6640
  }
6573
6641
 
6574
6642
  const singleOpenStrategy = {
@@ -7017,7 +7085,7 @@ const useNested = props => {
7017
7085
  return nested.root;
7018
7086
  };
7019
7087
  const useNestedItem = (id, isGroup) => {
7020
- const parent = inject(VNestedSymbol, emptyNested);
7088
+ const parent = inject$1(VNestedSymbol, emptyNested);
7021
7089
  const computedId = computed(() => id.value ?? getUid().toString());
7022
7090
  const item = { ...parent,
7023
7091
  id: computedId,
@@ -7039,7 +7107,7 @@ const useNestedItem = (id, isGroup) => {
7039
7107
  return item;
7040
7108
  };
7041
7109
  const useNestedGroupActivator = () => {
7042
- const parent = inject(VNestedSymbol, emptyNested);
7110
+ const parent = inject$1(VNestedSymbol, emptyNested);
7043
7111
  provide(VNestedSymbol, { ...parent,
7044
7112
  isGroupActivator: true
7045
7113
  });
@@ -7210,9 +7278,9 @@ const VListItem = genericComponent()({
7210
7278
  } = useNestedItem(id, false);
7211
7279
  const list = useList();
7212
7280
  const isActive = computed(() => {
7213
- var _link$isExactActive;
7281
+ var _link$isActive;
7214
7282
 
7215
- return props.active !== false && (props.active || ((_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value) || isSelected.value);
7283
+ return props.active !== false && (props.active || ((_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value) || isSelected.value);
7216
7284
  });
7217
7285
  const isLink = computed(() => props.link !== false && link.isLink.value);
7218
7286
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
@@ -7222,9 +7290,9 @@ const VListItem = genericComponent()({
7222
7290
  variant: props.variant
7223
7291
  }));
7224
7292
  watch(() => {
7225
- var _link$isExactActive2;
7293
+ var _link$isActive2;
7226
7294
 
7227
- return (_link$isExactActive2 = link.isExactActive) == null ? void 0 : _link$isExactActive2.value;
7295
+ return (_link$isActive2 = link.isActive) == null ? void 0 : _link$isActive2.value;
7228
7296
  }, val => {
7229
7297
  if (val && parent.value != null) {
7230
7298
  root.open(parent.value, true);
@@ -7848,6 +7916,7 @@ function useActivator(props, _ref) {
7848
7916
  const activatorEl = ref();
7849
7917
  let isHovered = false;
7850
7918
  let isFocused = false;
7919
+ let firstEnter = true;
7851
7920
  const openOnFocus = computed(() => props.openOnFocus || props.openOnFocus == null && props.openOnHover);
7852
7921
  const openOnClick = computed(() => props.openOnClick || props.openOnClick == null && !props.openOnHover && !openOnFocus.value);
7853
7922
  const {
@@ -7855,6 +7924,10 @@ function useActivator(props, _ref) {
7855
7924
  runCloseDelay
7856
7925
  } = useDelay(props, value => {
7857
7926
  if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {
7927
+ if (isActive.value !== value) {
7928
+ firstEnter = true;
7929
+ }
7930
+
7858
7931
  isActive.value = value;
7859
7932
  }
7860
7933
  });
@@ -7921,7 +7994,7 @@ function useActivator(props, _ref) {
7921
7994
  }
7922
7995
 
7923
7996
  if (props.closeOnContentClick) {
7924
- const menu = inject(VMenuSymbol, null);
7997
+ const menu = inject$1(VMenuSymbol, null);
7925
7998
 
7926
7999
  events.click = () => {
7927
8000
  isActive.value = false;
@@ -7931,6 +8004,26 @@ function useActivator(props, _ref) {
7931
8004
 
7932
8005
  return events;
7933
8006
  });
8007
+ const scrimEvents = computed(() => {
8008
+ const events = {};
8009
+
8010
+ if (props.openOnHover) {
8011
+ events.mouseenter = () => {
8012
+ if (firstEnter) {
8013
+ isHovered = true;
8014
+ firstEnter = false;
8015
+ runOpenDelay();
8016
+ }
8017
+ };
8018
+
8019
+ events.mouseleave = () => {
8020
+ isHovered = false;
8021
+ runCloseDelay();
8022
+ };
8023
+ }
8024
+
8025
+ return events;
8026
+ });
7934
8027
  watch(isTop, val => {
7935
8028
  if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
7936
8029
  isActive.value = false;
@@ -7966,7 +8059,8 @@ function useActivator(props, _ref) {
7966
8059
  activatorEl,
7967
8060
  activatorRef,
7968
8061
  activatorEvents,
7969
- contentEvents
8062
+ contentEvents,
8063
+ scrimEvents
7970
8064
  };
7971
8065
  }
7972
8066
 
@@ -8690,28 +8784,11 @@ function bindScroll(el, onScroll) {
8690
8784
  });
8691
8785
  }
8692
8786
 
8693
- function useToggleScope(source, cb) {
8694
- let scope;
8695
- watch(source, active => {
8696
- if (active && !scope) {
8697
- scope = effectScope();
8698
- scope.run(cb);
8699
- } else {
8700
- var _scope;
8701
-
8702
- (_scope = scope) == null ? void 0 : _scope.stop();
8703
- scope = undefined;
8704
- }
8705
- }, {
8706
- immediate: true
8707
- });
8708
- }
8709
-
8710
8787
  const StackSymbol = Symbol.for('vuetify:stack');
8711
8788
  const globalStack = reactive([]);
8712
8789
  function useStack(isActive, zIndex) {
8713
8790
  const vm = getCurrentInstance('useStack');
8714
- const parent = inject(StackSymbol, undefined);
8791
+ const parent = inject$1(StackSymbol, undefined);
8715
8792
  const stack = reactive({
8716
8793
  activeChildren: new Set()
8717
8794
  });
@@ -8974,7 +9051,8 @@ const VOverlay = genericComponent()({
8974
9051
  activatorEl,
8975
9052
  activatorRef,
8976
9053
  activatorEvents,
8977
- contentEvents
9054
+ contentEvents,
9055
+ scrimEvents
8978
9056
  } = useActivator(props, {
8979
9057
  isActive,
8980
9058
  isTop: localTop
@@ -9089,10 +9167,10 @@ const VOverlay = genericComponent()({
9089
9167
  top: convertToUnit(top.value)
9090
9168
  }],
9091
9169
  "ref": root
9092
- }, attrs), [createVNode(Scrim, {
9170
+ }, attrs), [createVNode(Scrim, mergeProps({
9093
9171
  "color": scrimColor,
9094
9172
  "modelValue": isActive.value && !!props.scrim
9095
- }, null), createVNode(MaybeTransition, {
9173
+ }, toHandlers(scrimEvents.value)), null), createVNode(MaybeTransition, {
9096
9174
  "appear": true,
9097
9175
  "persisted": true,
9098
9176
  "transition": props.transition,
@@ -9240,7 +9318,7 @@ const VMenu = genericComponent()({
9240
9318
  const uid = getUid();
9241
9319
  const id = computed(() => props.id || `v-menu-${uid}`);
9242
9320
  const overlay = ref();
9243
- const parent = inject(VMenuSymbol, null);
9321
+ const parent = inject$1(VMenuSymbol, null);
9244
9322
  let openChildren = 0;
9245
9323
  provide(VMenuSymbol, {
9246
9324
  register() {
@@ -9289,8 +9367,20 @@ const VMenu = genericComponent()({
9289
9367
  },
9290
9368
  "onClick:outside": onClickOutside
9291
9369
  }, scopeId, attrs), {
9292
- default: slots.default,
9293
- activator: slots.activator
9370
+ activator: slots.activator,
9371
+ default: function () {
9372
+ var _slots$default;
9373
+
9374
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
9375
+ args[_key] = arguments[_key];
9376
+ }
9377
+
9378
+ return createVNode(VDefaultsProvider, {
9379
+ "root": true
9380
+ }, {
9381
+ default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, ...args)]
9382
+ });
9383
+ }
9294
9384
  }));
9295
9385
  return forwardRefs({
9296
9386
  id
@@ -9509,7 +9599,7 @@ const VField = genericComponent()({
9509
9599
  'v-field--prepended': hasPrepend,
9510
9600
  'v-field--reverse': props.reverse,
9511
9601
  'v-field--single-line': props.singleLine,
9512
- 'v-field--has-label': !!label,
9602
+ 'v-field--no-label': !label,
9513
9603
  [`v-field--variant-${props.variant}`]: true
9514
9604
  }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value],
9515
9605
  "style": [backgroundColorStyles.value, textColorStyles.value],
@@ -9949,7 +10039,7 @@ const VSelect = genericComponent()({
9949
10039
  "onUpdate:modelValue": v => {
9950
10040
  if (v == null) model.value = [];
9951
10041
  },
9952
- "validationValue": props.modelValue ?? model.value,
10042
+ "validationValue": model.externalValue,
9953
10043
  "dirty": model.value.length > 0,
9954
10044
  "class": ['v-select', {
9955
10045
  'v-select--active-menu': menu.value,
@@ -10309,7 +10399,7 @@ const VAutocomplete = genericComponent()({
10309
10399
  "onUpdate:modelValue": v => {
10310
10400
  if (v == null) model.value = [];
10311
10401
  },
10312
- "validationValue": props.modelValue ?? model.value,
10402
+ "validationValue": model.externalValue,
10313
10403
  "dirty": model.value.length > 0,
10314
10404
  "onInput": onInput,
10315
10405
  "class": ['v-autocomplete', {
@@ -10640,8 +10730,8 @@ function createDisplay(options, isHydrate) {
10640
10730
  width.value = getClientWidth();
10641
10731
  }
10642
10732
 
10643
- if (isHydrate) {
10644
- nextTick(() => onResize());
10733
+ if (isHydrate && IN_BROWSER) {
10734
+ requestAnimationFrame(() => onResize());
10645
10735
  } // eslint-disable-next-line max-statements
10646
10736
 
10647
10737
 
@@ -10687,7 +10777,7 @@ function createDisplay(options, isHydrate) {
10687
10777
  return toRefs(state);
10688
10778
  }
10689
10779
  function useDisplay() {
10690
- const display = inject(DisplaySymbol);
10780
+ const display = inject$1(DisplaySymbol);
10691
10781
  if (!display) throw new Error('Could not find Vuetify display injection');
10692
10782
  return display;
10693
10783
  }
@@ -10922,9 +11012,9 @@ const VBreadcrumbsItem = defineComponent({
10922
11012
  } = _ref;
10923
11013
  const link = useLink(props, attrs);
10924
11014
  const isActive = computed(() => {
10925
- var _link$isExactActive;
11015
+ var _link$isActive;
10926
11016
 
10927
- return props.active || ((_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value);
11017
+ return props.active || ((_link$isActive = link.isActive) == null ? void 0 : _link$isActive.value);
10928
11018
  });
10929
11019
  const color = computed(() => isActive.value ? props.activeColor : props.color);
10930
11020
  const {
@@ -11652,7 +11742,7 @@ const VWindowItem = defineComponent({
11652
11742
  let {
11653
11743
  slots
11654
11744
  } = _ref;
11655
- const window = inject(VWindowSymbol);
11745
+ const window = inject$1(VWindowSymbol);
11656
11746
  const groupItem = useGroupItem(props, VWindowGroupSymbol);
11657
11747
  const {
11658
11748
  isBooted
@@ -11845,10 +11935,10 @@ const VCarousel = defineComponent({
11845
11935
  },
11846
11936
  "scoped": true
11847
11937
  }, {
11848
- default: () => [group.items.value.map(item => {
11938
+ default: () => [group.items.value.map((item, index) => {
11849
11939
  const props = {
11850
- 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter'),
11851
- class: [group.isSelected(item.id) && 'v-btn--selected'],
11940
+ 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),
11941
+ class: [group.isSelected(item.id) && 'v-btn--active'],
11852
11942
  onClick: () => group.select(item.id, true)
11853
11943
  };
11854
11944
  return slots.item ? slots.item({
@@ -12575,8 +12665,8 @@ const useSlider = _ref => {
12575
12665
  label: t.toString()
12576
12666
  }));
12577
12667
  return Object.keys(props.ticks).map(key => ({
12578
- value: parseInt(key, 10),
12579
- position: position(parseInt(key, 10)),
12668
+ value: parseFloat(key),
12669
+ position: position(parseFloat(key)),
12580
12670
  label: props.ticks[key]
12581
12671
  }));
12582
12672
  });
@@ -12659,7 +12749,7 @@ const VSliderThumb = defineComponent({
12659
12749
  slots,
12660
12750
  emit
12661
12751
  } = _ref;
12662
- const slider = inject(VSliderSymbol);
12752
+ const slider = inject$1(VSliderSymbol);
12663
12753
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
12664
12754
  const {
12665
12755
  thumbColor,
@@ -12796,7 +12886,7 @@ const VSliderTrack = defineComponent({
12796
12886
  let {
12797
12887
  slots
12798
12888
  } = _ref;
12799
- const slider = inject(VSliderSymbol);
12889
+ const slider = inject$1(VSliderSymbol);
12800
12890
  if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider');
12801
12891
  const {
12802
12892
  color,
@@ -12808,7 +12898,9 @@ const VSliderTrack = defineComponent({
12808
12898
  trackColor,
12809
12899
  trackFillColor,
12810
12900
  trackSize,
12811
- vertical
12901
+ vertical,
12902
+ min,
12903
+ max
12812
12904
  } = slider;
12813
12905
  const {
12814
12906
  roundedClasses
@@ -12842,11 +12934,13 @@ const VSliderTrack = defineComponent({
12842
12934
  var _slots$tickLabel;
12843
12935
 
12844
12936
  const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
12845
- const directionValue = tick.position > 0 && tick.position < 100 ? convertToUnit(tick.position, '%') : undefined;
12937
+ const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined;
12846
12938
  return createVNode("div", {
12847
12939
  "key": tick.value,
12848
12940
  "class": ['v-slider-track__tick', {
12849
- 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop
12941
+ 'v-slider-track__tick--filled': tick.position >= props.start && tick.position <= props.stop,
12942
+ 'v-slider-track__tick--first': tick.value === min.value,
12943
+ 'v-slider-track__tick--last': tick.value === max.value
12850
12944
  }],
12851
12945
  "style": {
12852
12946
  [directionProperty]: directionValue
@@ -12945,6 +13039,7 @@ const VSlider = defineComponent({
12945
13039
  const trackStop = computed(() => position(model.value));
12946
13040
  useRender(() => {
12947
13041
  const [inputProps, _] = filterInputProps(props);
13042
+ const hasPrepend = !!(props.label || slots.label || slots.prepend);
12948
13043
  return createVNode(VInput, mergeProps({
12949
13044
  "class": ['v-slider', {
12950
13045
  'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,
@@ -12955,6 +13050,14 @@ const VSlider = defineComponent({
12955
13050
  }, inputProps, {
12956
13051
  "focused": isFocused.value
12957
13052
  }), { ...slots,
13053
+ prepend: hasPrepend ? slotProps => {
13054
+ var _slots$label, _slots$prepend;
13055
+
13056
+ return createVNode(Fragment, null, [((_slots$label = slots.label) == null ? void 0 : _slots$label.call(slots, slotProps)) ?? props.label ? createVNode(VLabel, {
13057
+ "class": "v-slider__label",
13058
+ "text": props.label
13059
+ }, null) : undefined, (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps)]);
13060
+ } : undefined,
12958
13061
  default: _ref2 => {
12959
13062
  let {
12960
13063
  id
@@ -13852,7 +13955,7 @@ const VCombobox = genericComponent()({
13852
13955
  "onUpdate:modelValue": [$event => search.value = $event, v => {
13853
13956
  if (v == null) model.value = [];
13854
13957
  }],
13855
- "validationValue": props.modelValue ?? model.value,
13958
+ "validationValue": model.externalValue,
13856
13959
  "dirty": model.value.length > 0,
13857
13960
  "class": ['v-combobox', {
13858
13961
  'v-combobox--active-menu': menu.value,
@@ -13994,9 +14097,6 @@ const VDialog = genericComponent()({
13994
14097
  },
13995
14098
  scrollable: Boolean,
13996
14099
  modelValue: Boolean,
13997
- ...makeDimensionProps({
13998
- width: 'auto'
13999
- }),
14000
14100
  ...makeTransitionProps({
14001
14101
  transition: {
14002
14102
  component: VDialogTransition
@@ -14013,9 +14113,6 @@ const VDialog = genericComponent()({
14013
14113
  slots
14014
14114
  } = _ref;
14015
14115
  const isActive = useProxiedModel(props, 'modelValue');
14016
- const {
14017
- dimensionStyles
14018
- } = useDimension(props);
14019
14116
  const {
14020
14117
  scopeId
14021
14118
  } = useScopeId();
@@ -14031,7 +14128,7 @@ const VDialog = genericComponent()({
14031
14128
  (_overlay$value2 = overlay.value) != null && _overlay$value2.globalTop && // It isn't the document or the dialog body
14032
14129
  ![document, overlay.value.contentEl].includes(after) && // It isn't inside the dialog body
14033
14130
  !overlay.value.contentEl.contains(after)) {
14034
- const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
14131
+ const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled') && !el.matches('[tabindex="-1"]'));
14035
14132
  if (!focusable.length) return;
14036
14133
  const firstElement = focusable[0];
14037
14134
  const lastElement = focusable[focusable.length - 1];
@@ -14076,7 +14173,6 @@ const VDialog = genericComponent()({
14076
14173
  'v-dialog--fullscreen': props.fullscreen,
14077
14174
  'v-dialog--scrollable': props.scrollable
14078
14175
  }],
14079
- "style": dimensionStyles.value,
14080
14176
  "transition": props.transition,
14081
14177
  "scrollStrategy": "block",
14082
14178
  "ref": overlay,
@@ -14088,8 +14184,20 @@ const VDialog = genericComponent()({
14088
14184
  },
14089
14185
  "z-index": 2400
14090
14186
  }, scopeId, attrs), {
14091
- default: slots.default,
14092
- activator: slots.activator
14187
+ activator: slots.activator,
14188
+ default: function () {
14189
+ var _slots$default;
14190
+
14191
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
14192
+ args[_key] = arguments[_key];
14193
+ }
14194
+
14195
+ return createVNode(VDefaultsProvider, {
14196
+ "root": true
14197
+ }, {
14198
+ default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, ...args)]
14199
+ });
14200
+ }
14093
14201
  }));
14094
14202
  return forwardRefs({}, overlay);
14095
14203
  }
@@ -14170,7 +14278,7 @@ const VExpansionPanelTitle = defineComponent({
14170
14278
  let {
14171
14279
  slots
14172
14280
  } = _ref;
14173
- const expansionPanel = inject(VExpansionPanelSymbol);
14281
+ const expansionPanel = inject$1(VExpansionPanelSymbol);
14174
14282
  if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel');
14175
14283
  const {
14176
14284
  backgroundColorClasses,
@@ -14218,7 +14326,7 @@ const VExpansionPanelText = defineComponent({
14218
14326
  let {
14219
14327
  slots
14220
14328
  } = _ref;
14221
- const expansionPanel = inject(VExpansionPanelSymbol);
14329
+ const expansionPanel = inject$1(VExpansionPanelSymbol);
14222
14330
  if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel');
14223
14331
  const {
14224
14332
  hasContent,
@@ -14512,9 +14620,9 @@ const VFileInput = defineComponent({
14512
14620
  },
14513
14621
  "onFocus": onFocus,
14514
14622
  "onBlur": () => isFocused.value = false
14515
- }, slotProps, inputAttrs), null), model.value.length > 0 && createVNode("div", {
14623
+ }, slotProps, inputAttrs), null), createVNode("div", {
14516
14624
  "class": fieldClass
14517
- }, [slots.selection ? slots.selection({
14625
+ }, [model.value.length > 0 && (slots.selection ? slots.selection({
14518
14626
  fileNames: fileNames.value,
14519
14627
  totalBytes: totalBytes.value,
14520
14628
  totalBytesReadable: totalBytesReadable.value
@@ -14524,7 +14632,7 @@ const VFileInput = defineComponent({
14524
14632
  "color": props.color
14525
14633
  }, {
14526
14634
  default: () => [text]
14527
- })) : fileNames.value.join(', ')])]);
14635
+ })) : fileNames.value.join(', '))])]);
14528
14636
  }
14529
14637
  });
14530
14638
  },
@@ -16009,9 +16117,10 @@ const VPagination = defineComponent({
16009
16117
  const firstItem = target.querySelector('.v-pagination__list > *');
16010
16118
  if (!firstItem) return;
16011
16119
  const totalWidth = contentRect.width;
16012
- const itemWidth = firstItem.getBoundingClientRect().width + parseFloat(getComputedStyle(firstItem).marginRight) * 2;
16120
+ const itemWidth = firstItem.offsetWidth + parseFloat(getComputedStyle(firstItem).marginRight) * 2;
16013
16121
  const minButtons = props.showFirstLastPage ? 5 : 3;
16014
- maxButtons.value = Math.max(0, Math.floor((totalWidth - itemWidth * minButtons) / itemWidth));
16122
+ maxButtons.value = Math.max(0, Math.floor( // Round to two decimal places to avoid floating point errors
16123
+ +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));
16015
16124
  });
16016
16125
  const length = computed(() => parseInt(props.length, 10));
16017
16126
  const start = computed(() => parseInt(props.start, 10));
@@ -16071,6 +16180,7 @@ const VPagination = defineComponent({
16071
16180
  if (typeof item === 'string') {
16072
16181
  return {
16073
16182
  isActive: false,
16183
+ key: `ellipsis-${index}`,
16074
16184
  page: item,
16075
16185
  props: {
16076
16186
  ref,
@@ -16083,6 +16193,7 @@ const VPagination = defineComponent({
16083
16193
  const isActive = item === page.value;
16084
16194
  return {
16085
16195
  isActive,
16196
+ key: item,
16086
16197
  page: n(item),
16087
16198
  props: {
16088
16199
  ref,
@@ -16175,7 +16286,7 @@ const VPagination = defineComponent({
16175
16286
  }, [slots.prev ? slots.prev(controls.value.prev) : createVNode(VBtn, mergeProps({
16176
16287
  "_as": "VPaginationBtn"
16177
16288
  }, controls.value.prev), null)]), items.value.map((item, index) => createVNode("li", {
16178
- "key": item.page,
16289
+ "key": item.key,
16179
16290
  "class": ['v-pagination__item', {
16180
16291
  'v-pagination__item--is-active': item.isActive
16181
16292
  }],
@@ -16212,7 +16323,7 @@ const VParallax = defineComponent({
16212
16323
  props: {
16213
16324
  scale: {
16214
16325
  type: [Number, String],
16215
- default: 1.3
16326
+ default: 0.5
16216
16327
  }
16217
16328
  },
16218
16329
 
@@ -16224,11 +16335,18 @@ const VParallax = defineComponent({
16224
16335
  intersectionRef,
16225
16336
  isIntersecting
16226
16337
  } = useIntersectionObserver();
16338
+ const {
16339
+ resizeRef,
16340
+ contentRect
16341
+ } = useResizeObserver();
16342
+ const {
16343
+ height: displayHeight
16344
+ } = useDisplay();
16227
16345
  const root = ref();
16228
16346
  watchEffect(() => {
16229
16347
  var _root$value;
16230
16348
 
16231
- intersectionRef.value = (_root$value = root.value) == null ? void 0 : _root$value.$el;
16349
+ intersectionRef.value = resizeRef.value = (_root$value = root.value) == null ? void 0 : _root$value.$el;
16232
16350
  });
16233
16351
  let scrollParent;
16234
16352
  watch(isIntersecting, val => {
@@ -16248,6 +16366,10 @@ const VParallax = defineComponent({
16248
16366
 
16249
16367
  (_scrollParent = scrollParent) == null ? void 0 : _scrollParent.removeEventListener('scroll', onScroll);
16250
16368
  });
16369
+ watch(displayHeight, onScroll);
16370
+ const scale = computed(() => {
16371
+ return 1 - clamp(+props.scale);
16372
+ });
16251
16373
  let frame = -1;
16252
16374
 
16253
16375
  function onScroll() {
@@ -16258,13 +16380,14 @@ const VParallax = defineComponent({
16258
16380
 
16259
16381
  const el = ((_root$value2 = root.value) == null ? void 0 : _root$value2.$el).querySelector('.v-img__img');
16260
16382
  if (!el) return;
16261
- const rect = intersectionRef.value.getBoundingClientRect();
16262
- const scrollHeight = scrollParent.clientHeight ?? window.innerHeight;
16383
+ const scrollHeight = scrollParent.clientHeight ?? document.documentElement.clientHeight;
16263
16384
  const scrollPos = scrollParent.scrollTop ?? window.scrollY;
16264
- const top = rect.top + scrollPos;
16265
- const progress = (scrollPos + scrollHeight - top) / (rect.height + scrollHeight);
16266
- const translate = floor((rect.height * +props.scale - rect.height) * (-progress + 0.5));
16267
- el.style.setProperty('transform', `translateY(${translate}px) scale(${props.scale})`);
16385
+ const top = intersectionRef.value.offsetTop;
16386
+ const height = contentRect.value.height;
16387
+ const center = top + (height - scrollHeight) / 2;
16388
+ const translate = floor((scrollPos - center) * scale.value);
16389
+ const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height);
16390
+ el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`);
16268
16391
  });
16269
16392
  }
16270
16393
 
@@ -16368,7 +16491,8 @@ const VRadioGroup = defineComponent({
16368
16491
  isReadonly
16369
16492
  } = _ref2;
16370
16493
  return createVNode(Fragment, null, [label && createVNode(VLabel, {
16371
- "for": id.value
16494
+ "for": id.value,
16495
+ "clickable": true
16372
16496
  }, {
16373
16497
  default: () => [label]
16374
16498
  }), createVNode(VSelectionControlGroup, mergeProps(controlProps, {
@@ -16477,6 +16601,7 @@ const VRangeSlider = defineComponent({
16477
16601
  const trackStop = computed(() => position(model.value[1]));
16478
16602
  useRender(() => {
16479
16603
  const [inputProps, _] = filterInputProps(props);
16604
+ const hasPrepend = !!(props.label || slots.label || slots.prepend);
16480
16605
  return createVNode(VInput, mergeProps({
16481
16606
  "class": ['v-slider', 'v-range-slider', {
16482
16607
  'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,
@@ -16488,6 +16613,14 @@ const VRangeSlider = defineComponent({
16488
16613
  }, inputProps, {
16489
16614
  "focused": isFocused.value
16490
16615
  }), { ...slots,
16616
+ prepend: hasPrepend ? slotProps => {
16617
+ var _slots$label, _slots$prepend;
16618
+
16619
+ return createVNode(Fragment, null, [((_slots$label = slots.label) == null ? void 0 : _slots$label.call(slots, slotProps)) ?? props.label ? createVNode(VLabel, {
16620
+ "class": "v-slider__label",
16621
+ "text": props.label
16622
+ }, null) : undefined, (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps)]);
16623
+ } : undefined,
16491
16624
  default: _ref2 => {
16492
16625
  var _startThumbRef$value4, _stopThumbRef$value4;
16493
16626
 
@@ -17248,7 +17381,7 @@ const VSlideGroupItem = defineComponent({
17248
17381
 
17249
17382
  });
17250
17383
 
17251
- const VSnackbar = defineComponent({
17384
+ const VSnackbar = genericComponent()({
17252
17385
  name: 'VSnackbar',
17253
17386
  props: {
17254
17387
  contentClass: {
@@ -17621,6 +17754,7 @@ const VTab = defineComponent({
17621
17754
  "tabindex": isSelected.value ? 0 : -1,
17622
17755
  "role": "tab",
17623
17756
  "aria-selected": String(isSelected.value),
17757
+ "active": false,
17624
17758
  "block": props.fixed,
17625
17759
  "maxWidth": props.fixed ? 300 : undefined,
17626
17760
  "variant": "text",
@@ -17934,7 +18068,8 @@ const VTextarea = defineComponent({
17934
18068
  'v-text-field--prefixed': props.prefix,
17935
18069
  'v-text-field--suffixed': props.suffix,
17936
18070
  'v-textarea--auto-grow': props.autoGrow,
17937
- 'v-textarea--no-resize': props.noResize || props.autoGrow
18071
+ 'v-textarea--no-resize': props.noResize || props.autoGrow,
18072
+ 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
17938
18073
  }],
17939
18074
  "onClick:prepend": props['onClick:prepend'],
17940
18075
  "onClick:append": props['onClick:append']
@@ -18060,6 +18195,11 @@ const VTimeline = defineComponent({
18060
18195
  default: 'vertical',
18061
18196
  validator: v => ['vertical', 'horizontal'].includes(v)
18062
18197
  },
18198
+ justify: {
18199
+ type: String,
18200
+ default: 'auto',
18201
+ validator: v => ['auto', 'center'].includes(v)
18202
+ },
18063
18203
  side: {
18064
18204
  type: String,
18065
18205
  validator: v => v == null || ['start', 'end'].includes(v)
@@ -18123,7 +18263,7 @@ const VTimeline = defineComponent({
18123
18263
  }
18124
18264
  });
18125
18265
  useRender(() => createVNode(props.tag, {
18126
- "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, truncateClasses.value, {
18266
+ "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
18127
18267
  'v-timeline--inset-line': !!props.lineInset
18128
18268
  }, themeClasses.value, densityClasses.value, sideClasses.value],
18129
18269
  "style": {
@@ -18668,21 +18808,25 @@ var directives = /*#__PURE__*/Object.freeze({
18668
18808
  });
18669
18809
 
18670
18810
  // Composables
18671
- const createVuetify$1 = function () {
18811
+ function createVuetify$1() {
18672
18812
  let vuetify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
18813
+ const {
18814
+ blueprint,
18815
+ ...rest
18816
+ } = vuetify;
18817
+ const options = mergeDeep(blueprint, rest);
18818
+ const {
18819
+ aliases = {},
18820
+ components = {},
18821
+ directives = {}
18822
+ } = options;
18823
+ const defaults = createDefaults(options.defaults);
18824
+ const display = createDisplay(options.display, options.ssr);
18825
+ const theme = createTheme(options.theme);
18826
+ const icons = createIcons(options.icons);
18827
+ const locale = createLocale(options.locale);
18673
18828
 
18674
18829
  const install = app => {
18675
- const {
18676
- blueprint,
18677
- ...rest
18678
- } = vuetify;
18679
- const options = mergeDeep(blueprint, rest);
18680
- const {
18681
- aliases = {},
18682
- components = {},
18683
- directives = {}
18684
- } = options;
18685
-
18686
18830
  for (const key in directives) {
18687
18831
  app.directive(key, directives[key]);
18688
18832
  }
@@ -18693,44 +18837,19 @@ const createVuetify$1 = function () {
18693
18837
 
18694
18838
  for (const key in aliases) {
18695
18839
  app.component(key, defineComponent({ ...aliases[key],
18696
- name: key
18840
+ name: key,
18841
+ aliasName: aliases[key].name
18697
18842
  }));
18698
18843
  }
18699
18844
 
18700
- function provideApp(isHydrate) {
18701
- app.provide(DefaultsSymbol, createDefaults(options.defaults));
18702
- app.provide(DisplaySymbol, createDisplay(options.display, isHydrate));
18703
- app.provide(ThemeSymbol, createTheme(app, options.theme));
18704
- app.provide(IconSymbol, createIcons(options.icons));
18705
- app.provide(LocaleAdapterSymbol, createLocale(app, options.locale));
18706
- }
18707
-
18708
- if (!IN_BROWSER) {
18709
- provideApp();
18710
- }
18711
-
18845
+ theme.install(app);
18846
+ locale.install(app);
18847
+ app.provide(DefaultsSymbol, defaults);
18848
+ app.provide(DisplaySymbol, display);
18849
+ app.provide(ThemeSymbol, theme);
18850
+ app.provide(IconSymbol, icons);
18851
+ app.provide(LocaleAdapterSymbol, locale.adapter);
18712
18852
  getUid.reset();
18713
- const mount = app.mount;
18714
-
18715
- app.mount = (rootContainer, isHydrate, isSVG) => {
18716
- provideApp(isHydrate);
18717
- const ret = mount(rootContainer, isHydrate, isSVG);
18718
- app.mount = mount;
18719
- return ret;
18720
- }; // Vue's inject() can only be used in setup
18721
-
18722
-
18723
- function inject(key) {
18724
- var _vm$parent, _vm$vnode$appContext;
18725
-
18726
- const vm = this.$;
18727
- const provides = ((_vm$parent = vm.parent) == null ? void 0 : _vm$parent.provides) ?? ((_vm$vnode$appContext = vm.vnode.appContext) == null ? void 0 : _vm$vnode$appContext.provides);
18728
-
18729
- if (provides && key in provides) {
18730
- return provides[key];
18731
- }
18732
- }
18733
-
18734
18853
  app.mixin({
18735
18854
  computed: {
18736
18855
  $vuetify() {
@@ -18749,11 +18868,27 @@ const createVuetify$1 = function () {
18749
18868
  };
18750
18869
 
18751
18870
  return {
18752
- install
18871
+ install,
18872
+ defaults,
18873
+ display,
18874
+ theme,
18875
+ icons,
18876
+ locale: locale.adapter
18753
18877
  };
18754
- };
18755
- const version$1 = "3.0.0-beta.10";
18756
- createVuetify$1.version = version$1;
18878
+ }
18879
+ const version$1 = "3.0.0-beta.13";
18880
+ createVuetify$1.version = version$1; // Vue's inject() can only be used in setup
18881
+
18882
+ function inject(key) {
18883
+ var _vm$parent, _vm$vnode$appContext;
18884
+
18885
+ const vm = this.$;
18886
+ const provides = ((_vm$parent = vm.parent) == null ? void 0 : _vm$parent.provides) ?? ((_vm$vnode$appContext = vm.vnode.appContext) == null ? void 0 : _vm$vnode$appContext.provides);
18887
+
18888
+ if (provides && key in provides) {
18889
+ return provides[key];
18890
+ }
18891
+ }
18757
18892
 
18758
18893
  const createVuetify = function () {
18759
18894
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -18763,7 +18898,7 @@ const createVuetify = function () {
18763
18898
  ...options
18764
18899
  });
18765
18900
  };
18766
- const version = "3.0.0-beta.10";
18901
+ const version = "3.0.0-beta.13";
18767
18902
  createVuetify.version = version;
18768
18903
 
18769
18904
  export { components, createVuetify, directives, provideRtl, useDisplay, useLayout, useLocale, useRtl, useTheme, version };