@vuetify/nightly 3.7.12-master.2025-02-15 → 3.7.12-master.2025-02-18

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 (241) hide show
  1. package/CHANGELOG.md +17 -3
  2. package/dist/json/attributes.json +3373 -3361
  3. package/dist/json/importMap-labs.json +16 -16
  4. package/dist/json/importMap.json +184 -184
  5. package/dist/json/tags.json +3 -0
  6. package/dist/json/web-types.json +6346 -6318
  7. package/dist/vuetify-labs.css +3661 -3656
  8. package/dist/vuetify-labs.d.ts +190 -139
  9. package/dist/vuetify-labs.esm.js +135 -72
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +134 -71
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +3856 -3859
  14. package/dist/vuetify.d.ts +168 -156
  15. package/dist/vuetify.esm.js +36 -34
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +35 -33
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +16 -16
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/index.d.mts +1 -1
  23. package/lib/blueprints/md1.d.mts +1 -1
  24. package/lib/blueprints/md2.d.mts +1 -1
  25. package/lib/blueprints/md3.d.mts +1 -1
  26. package/lib/components/VAlert/VAlert.mjs +1 -1
  27. package/lib/components/VAlert/index.d.mts +1 -1
  28. package/lib/components/VAppBar/VAppBar.mjs +1 -1
  29. package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -1
  30. package/lib/components/VAppBar/VAppBarTitle.mjs +1 -1
  31. package/lib/components/VAppBar/index.d.mts +5 -5
  32. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  33. package/lib/components/VAutocomplete/index.d.mts +4 -4
  34. package/lib/components/VAvatar/index.d.mts +1 -1
  35. package/lib/components/VBadge/VBadge.mjs +1 -1
  36. package/lib/components/VBadge/index.d.mts +1 -1
  37. package/lib/components/VBanner/VBanner.mjs +1 -1
  38. package/lib/components/VBanner/index.d.mts +1 -1
  39. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -0
  40. package/lib/components/VBottomNavigation/VBottomNavigation.sass +1 -0
  41. package/lib/components/VBottomNavigation/index.d.mts +1 -1
  42. package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -1
  43. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
  44. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +1 -1
  45. package/lib/components/VBreadcrumbs/index.d.mts +5 -5
  46. package/lib/components/VBtn/VBtn.mjs +1 -1
  47. package/lib/components/VBtn/index.d.mts +5 -5
  48. package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -1
  49. package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -1
  50. package/lib/components/VBtnToggle/index.d.mts +1 -1
  51. package/lib/components/VCard/VCard.mjs +1 -1
  52. package/lib/components/VCard/VCardItem.mjs +1 -1
  53. package/lib/components/VCard/VCardSubtitle.mjs +1 -1
  54. package/lib/components/VCard/VCardText.mjs +1 -1
  55. package/lib/components/VCard/index.d.mts +5 -5
  56. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  57. package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
  58. package/lib/components/VCarousel/index.d.mts +1 -1
  59. package/lib/components/VCheckbox/VCheckbox.mjs +1 -1
  60. package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -1
  61. package/lib/components/VCheckbox/index.d.mts +1 -1
  62. package/lib/components/VChip/VChip.mjs +1 -1
  63. package/lib/components/VChip/index.d.mts +5 -5
  64. package/lib/components/VChipGroup/VChipGroup.mjs +1 -1
  65. package/lib/components/VChipGroup/index.d.mts +1 -1
  66. package/lib/components/VColorPicker/VColorPicker.mjs +1 -1
  67. package/lib/components/VColorPicker/index.d.mts +10 -10
  68. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  69. package/lib/components/VCombobox/index.d.mts +4 -4
  70. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +1 -1
  71. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +5 -5
  72. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs.map +1 -1
  73. package/lib/components/VConfirmEdit/index.d.mts +1 -1
  74. package/lib/components/VCounter/VCounter.mjs +1 -1
  75. package/lib/components/VDataIterator/index.d.mts +1 -1
  76. package/lib/components/VDataTable/VDataTable.mjs +1 -1
  77. package/lib/components/VDataTable/VDataTableFooter.mjs +1 -1
  78. package/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs +1 -1
  79. package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
  80. package/lib/components/VDataTable/VDataTableRow.mjs +1 -1
  81. package/lib/components/VDataTable/VDataTableRows.mjs +1 -1
  82. package/lib/components/VDataTable/VDataTableServer.mjs +1 -1
  83. package/lib/components/VDataTable/VDataTableVirtual.mjs +1 -1
  84. package/lib/components/VDataTable/composables/sort.mjs +12 -8
  85. package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
  86. package/lib/components/VDataTable/index.d.mts +1 -1
  87. package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
  88. package/lib/components/VDatePicker/VDatePickerControls.mjs +1 -1
  89. package/lib/components/VDatePicker/VDatePickerControls.mjs.map +1 -1
  90. package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
  91. package/lib/components/VDatePicker/VDatePickerMonths.mjs +1 -1
  92. package/lib/components/VDatePicker/VDatePickerYears.mjs +1 -1
  93. package/lib/components/VDatePicker/index.d.mts +28 -16
  94. package/lib/components/VDialog/VDialog.mjs +1 -1
  95. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs +1 -1
  96. package/lib/components/VDialog/index.d.mts +3 -3
  97. package/lib/components/VEmptyState/VEmptyState.mjs +1 -1
  98. package/lib/components/VEmptyState/index.d.mts +1 -1
  99. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +1 -1
  100. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
  101. package/lib/components/VExpansionPanel/index.d.mts +1 -1
  102. package/lib/components/VFab/VFab.mjs +1 -1
  103. package/lib/components/VFab/index.d.mts +5 -5
  104. package/lib/components/VField/VField.mjs +1 -1
  105. package/lib/components/VField/VFieldLabel.mjs +1 -1
  106. package/lib/components/VField/index.d.mts +1 -1
  107. package/lib/components/VFileInput/VFileInput.mjs +2 -3
  108. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  109. package/lib/components/VFileInput/index.d.mts +4 -4
  110. package/lib/components/VFooter/VFooter.mjs +1 -1
  111. package/lib/components/VGrid/VContainer.mjs +1 -1
  112. package/lib/components/VIcon/index.d.mts +1 -1
  113. package/lib/components/VImg/VImg.mjs +1 -1
  114. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
  115. package/lib/components/VInput/VInput.mjs +1 -1
  116. package/lib/components/VInput/index.d.mts +1 -1
  117. package/lib/components/VItemGroup/index.d.mts +1 -1
  118. package/lib/components/VLazy/VLazy.mjs +1 -1
  119. package/lib/components/VList/VList.mjs +1 -1
  120. package/lib/components/VList/VListChildren.mjs +1 -1
  121. package/lib/components/VList/VListGroup.mjs +1 -1
  122. package/lib/components/VList/VListItem.mjs +1 -1
  123. package/lib/components/VList/VListItemAction.mjs +1 -1
  124. package/lib/components/VList/VListItemMedia.mjs +1 -1
  125. package/lib/components/VList/VListItemSubtitle.mjs +1 -1
  126. package/lib/components/VList/index.d.mts +5 -5
  127. package/lib/components/VMenu/VMenu.mjs +1 -1
  128. package/lib/components/VMenu/index.d.mts +3 -3
  129. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +0 -4
  130. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +3 -6
  131. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  132. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -5
  133. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  134. package/lib/components/VOverlay/VOverlay.mjs +1 -1
  135. package/lib/components/VPagination/VPagination.mjs +1 -1
  136. package/lib/components/VPagination/index.d.mts +1 -1
  137. package/lib/components/VParallax/VParallax.mjs +1 -1
  138. package/lib/components/VRadio/VRadio.mjs +1 -1
  139. package/lib/components/VRadio/index.d.mts +1 -1
  140. package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -1
  141. package/lib/components/VRadioGroup/index.d.mts +1 -1
  142. package/lib/components/VRangeSlider/VRangeSlider.mjs +1 -1
  143. package/lib/components/VRating/VRating.mjs +1 -1
  144. package/lib/components/VRating/index.d.mts +1 -1
  145. package/lib/components/VSelect/VSelect.mjs +1 -1
  146. package/lib/components/VSelect/index.d.mts +4 -4
  147. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -1
  148. package/lib/components/VSelectionControl/index.d.mts +1 -1
  149. package/lib/components/VSelectionControlGroup/index.d.mts +1 -1
  150. package/lib/components/VSheet/VSheet.mjs +1 -1
  151. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +1 -1
  152. package/lib/components/VSlideGroup/index.d.mts +1 -1
  153. package/lib/components/VSlider/VSlider.mjs +1 -1
  154. package/lib/components/VSlider/VSliderThumb.mjs +1 -1
  155. package/lib/components/VSnackbar/VSnackbar.mjs +1 -1
  156. package/lib/components/VSnackbar/index.d.mts +3 -3
  157. package/lib/components/VSparkline/VBarline.mjs +1 -2
  158. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  159. package/lib/components/VSparkline/VSparkline.mjs +1 -1
  160. package/lib/components/VSparkline/VTrendline.mjs +1 -2
  161. package/lib/components/VSparkline/VTrendline.mjs.map +1 -1
  162. package/lib/components/VSpeedDial/VSpeedDial.mjs +1 -1
  163. package/lib/components/VStepper/VStepper.mjs +1 -1
  164. package/lib/components/VStepper/VStepperItem.mjs +1 -1
  165. package/lib/components/VStepper/VStepperWindow.mjs +1 -1
  166. package/lib/components/VStepper/VStepperWindowItem.mjs +1 -1
  167. package/lib/components/VStepper/index.d.mts +1 -1
  168. package/lib/components/VSwitch/VSwitch.mjs +1 -1
  169. package/lib/components/VSwitch/index.d.mts +1 -1
  170. package/lib/components/VSystemBar/VSystemBar.mjs +1 -1
  171. package/lib/components/VTabs/VTab.mjs +1 -1
  172. package/lib/components/VTabs/VTabs.mjs +1 -1
  173. package/lib/components/VTabs/VTabsWindow.mjs +1 -1
  174. package/lib/components/VTabs/VTabsWindowItem.mjs +1 -1
  175. package/lib/components/VTabs/index.d.mts +20 -20
  176. package/lib/components/VTextField/VTextField.mjs +1 -1
  177. package/lib/components/VTextField/index.d.mts +7 -7
  178. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  179. package/lib/components/VTextarea/index.d.mts +4 -4
  180. package/lib/components/VTimeline/VTimeline.mjs +1 -1
  181. package/lib/components/VTimeline/VTimelineDivider.mjs +1 -1
  182. package/lib/components/VTimeline/VTimelineItem.mjs +1 -1
  183. package/lib/components/VTimeline/index.d.mts +1 -1
  184. package/lib/components/VToolbar/VToolbar.mjs +1 -1
  185. package/lib/components/VTooltip/VTooltip.mjs +1 -1
  186. package/lib/components/VTooltip/index.d.mts +3 -3
  187. package/lib/components/VValidation/index.d.mts +1 -1
  188. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +1 -1
  189. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +1 -1
  190. package/lib/components/VVirtualScroll/index.d.mts +1 -1
  191. package/lib/components/VWindow/VWindow.mjs +1 -1
  192. package/lib/components/VWindow/VWindowItem.mjs +1 -1
  193. package/lib/components/VWindow/index.d.mts +1 -1
  194. package/lib/components/index.d.mts +109 -97
  195. package/lib/components/transitions/dialog-transition.mjs +1 -2
  196. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  197. package/lib/composables/calendar.mjs +4 -1
  198. package/lib/composables/calendar.mjs.map +1 -1
  199. package/lib/composables/icons.mjs +1 -1
  200. package/lib/composables/variant.mjs +1 -1
  201. package/lib/entry-bundler.mjs +1 -1
  202. package/lib/framework.mjs +1 -1
  203. package/lib/iconsets/fa-svg.d.mts +1 -1
  204. package/lib/iconsets/fa.d.mts +1 -1
  205. package/lib/iconsets/fa4.d.mts +1 -1
  206. package/lib/iconsets/md.d.mts +1 -1
  207. package/lib/iconsets/mdi-svg.d.mts +1 -1
  208. package/lib/iconsets/mdi.d.mts +1 -1
  209. package/lib/index.d.mts +60 -60
  210. package/lib/labs/VCalendar/VCalendar.mjs +1 -1
  211. package/lib/labs/VCalendar/VCalendarDay.mjs +1 -1
  212. package/lib/labs/VCalendar/index.d.mts +8 -2
  213. package/lib/labs/VDateInput/VDateInput.mjs +4 -3
  214. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  215. package/lib/labs/VDateInput/index.d.mts +8 -2
  216. package/lib/labs/VFileUpload/VFileUpload.mjs +1 -1
  217. package/lib/labs/VFileUpload/VFileUploadItem.mjs +1 -1
  218. package/lib/labs/VFileUpload/index.d.mts +5 -5
  219. package/lib/labs/VNumberInput/VNumberInput.css +10 -2
  220. package/lib/labs/VNumberInput/VNumberInput.mjs +94 -36
  221. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  222. package/lib/labs/VNumberInput/VNumberInput.sass +12 -2
  223. package/lib/labs/VNumberInput/index.d.mts +59 -32
  224. package/lib/labs/VPicker/VPicker.mjs +1 -1
  225. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +1 -1
  226. package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
  227. package/lib/labs/VStepperVertical/VStepperVertical.mjs +1 -1
  228. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +1 -1
  229. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +1 -1
  230. package/lib/labs/VStepperVertical/index.d.mts +1 -1
  231. package/lib/labs/VTimePicker/VTimePicker.mjs +1 -1
  232. package/lib/labs/VTimePicker/VTimePickerControls.mjs +1 -1
  233. package/lib/labs/VTreeview/VTreeview.mjs +1 -1
  234. package/lib/labs/VTreeview/VTreeviewChildren.mjs +1 -1
  235. package/lib/labs/VTreeview/VTreeviewGroup.mjs +1 -1
  236. package/lib/labs/VTreeview/VTreeviewItem.mjs +1 -1
  237. package/lib/labs/VTreeview/index.d.mts +5 -5
  238. package/lib/labs/components.d.mts +85 -46
  239. package/lib/locale/adapters/vue-i18n.mjs +0 -1
  240. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  241. package/package.json +16 -15
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.7.12-master.2025-02-15
2
+ * Vuetify v3.7.12-master.2025-02-18
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, computed, watchEffect, toRefs, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, onBeforeUnmount, watch, readonly, onMounted, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, createVNode, TransitionGroup, Transition, mergeProps, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -243,7 +243,7 @@ function pickWithRest(obj, paths, exclude) {
243
243
  const found = Object.create(null);
244
244
  const rest = Object.create(null);
245
245
  for (const key in obj) {
246
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
246
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && true) {
247
247
  found[key] = obj[key];
248
248
  } else {
249
249
  rest[key] = obj[key];
@@ -877,7 +877,7 @@ function APCAcontrast(text, background) {
877
877
  // WoB should always return negative value.
878
878
 
879
879
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
880
- outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
880
+ outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
881
881
  }
882
882
  return outputContrast * 100;
883
883
  }
@@ -917,7 +917,7 @@ function toXYZ$1(lab) {
917
917
  // Types
918
918
 
919
919
  // For converting XYZ to sRGB
920
- const srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.2040, 1.0570]];
920
+ const srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.204, 1.0570]];
921
921
 
922
922
  // Forward gamma adjust
923
923
  const srgbForwardTransform = C => C <= 0.0031308 ? C * 12.92 : 1.055 * C ** (1 / 2.4) - 0.055;
@@ -1265,7 +1265,7 @@ function getForeground(color) {
1265
1265
  function getCurrentInstance(name, message) {
1266
1266
  const vm = getCurrentInstance$1();
1267
1267
  if (!vm) {
1268
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1268
+ throw new Error(`[Vuetify] ${name} ${'must be called from inside a setup function'}`);
1269
1269
  }
1270
1270
  return vm;
1271
1271
  }
@@ -2818,6 +2818,8 @@ function ExpandTransitionGenerator () {
2818
2818
  }
2819
2819
  }
2820
2820
 
2821
+ // Utilities
2822
+
2821
2823
  // Types
2822
2824
 
2823
2825
  const makeVDialogTransitionProps = propsFactory({
@@ -4720,7 +4722,6 @@ function useIntersectionObserver(callback, options) {
4720
4722
  const isIntersecting = shallowRef(false);
4721
4723
  if (SUPPORTS_INTERSECTION) {
4722
4724
  const observer = new IntersectionObserver(entries => {
4723
- callback?.(entries, observer);
4724
4725
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4725
4726
  }, options);
4726
4727
  onBeforeUnmount(() => {
@@ -18380,13 +18381,7 @@ function provideGroupBy(options) {
18380
18381
  return [...new Set(arr)];
18381
18382
  }
18382
18383
  return dive({
18383
- type: 'group',
18384
- items,
18385
- id: 'dummy',
18386
- key: 'dummy',
18387
- value: 'dummy',
18388
- depth: 0
18389
- });
18384
+ items});
18390
18385
  }
18391
18386
 
18392
18387
  // onBeforeMount(() => {
@@ -18830,15 +18825,19 @@ function provideSort(options) {
18830
18825
  })) ?? [];
18831
18826
  const item = newSortBy.find(x => x.key === column.key);
18832
18827
  if (!item) {
18833
- if (multiSort.value) newSortBy = [...newSortBy, {
18834
- key: column.key,
18835
- order: 'asc'
18836
- }];else newSortBy = [{
18837
- key: column.key,
18838
- order: 'asc'
18839
- }];
18828
+ if (multiSort.value) {
18829
+ newSortBy.push({
18830
+ key: column.key,
18831
+ order: 'asc'
18832
+ });
18833
+ } else {
18834
+ newSortBy = [{
18835
+ key: column.key,
18836
+ order: 'asc'
18837
+ }];
18838
+ }
18840
18839
  } else if (item.order === 'desc') {
18841
- if (mustSort.value) {
18840
+ if (mustSort.value && newSortBy.length === 1) {
18842
18841
  item.order = 'asc';
18843
18842
  } else {
18844
18843
  newSortBy = newSortBy.filter(x => x.key !== column.key);
@@ -21463,7 +21462,7 @@ const makeVDatePickerControlsProps = propsFactory({
21463
21462
  },
21464
21463
  disabled: {
21465
21464
  type: [Boolean, String, Array],
21466
- default: false
21465
+ default: null
21467
21466
  },
21468
21467
  nextIcon: {
21469
21468
  type: IconValue,
@@ -21645,7 +21644,10 @@ const VDatePickerHeader = genericComponent()({
21645
21644
  // Composables
21646
21645
  const makeCalendarProps = propsFactory({
21647
21646
  allowedDates: [Array, Function],
21648
- disabled: Boolean,
21647
+ disabled: {
21648
+ type: Boolean,
21649
+ default: null
21650
+ },
21649
21651
  displayValue: null,
21650
21652
  modelValue: Array,
21651
21653
  month: [Number, String],
@@ -23074,8 +23076,7 @@ const VFileInput = genericComponent()({
23074
23076
  const fieldProps = filterFieldProps(props);
23075
23077
  return createVNode(VInput, mergeProps({
23076
23078
  "ref": vInputRef,
23077
- "modelValue": model.value,
23078
- "onUpdate:modelValue": $event => model.value = $event,
23079
+ "modelValue": props.multiple ? model.value : model.value[0],
23079
23080
  "class": ['v-file-input', {
23080
23081
  'v-file-input--chips': !!props.chips,
23081
23082
  'v-file-input--hide': props.hideInput,
@@ -23914,7 +23915,7 @@ const HISTORY = 20; // number of samples to keep
23914
23915
  /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
23915
23916
  function kineticEnergyToVelocity(work) {
23916
23917
  const sqrt2 = 1.41421356237;
23917
- return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23918
+ return (work < 0 ? -1 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23918
23919
  }
23919
23920
 
23920
23921
  /**
@@ -24296,7 +24297,6 @@ const VNavigationDrawer = genericComponent()({
24296
24297
  const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;
24297
24298
  return isDragging.value ? size * dragProgress.value : size;
24298
24299
  });
24299
- const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);
24300
24300
  const {
24301
24301
  layoutItemStyles,
24302
24302
  layoutItemScrimStyles
@@ -24305,7 +24305,7 @@ const VNavigationDrawer = genericComponent()({
24305
24305
  order: computed(() => parseInt(props.order, 10)),
24306
24306
  position: location,
24307
24307
  layoutSize,
24308
- elementSize,
24308
+ elementSize: width,
24309
24309
  active: computed(() => isActive.value || isDragging.value),
24310
24310
  disableTransitions: computed(() => isDragging.value),
24311
24311
  absolute: computed(() =>
@@ -24351,9 +24351,7 @@ const VNavigationDrawer = genericComponent()({
24351
24351
  'v-navigation-drawer--active': isActive.value,
24352
24352
  'v-navigation-drawer--sticky': isSticky.value
24353
24353
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
24354
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, ['top', 'bottom'].includes(location.value) ? {
24355
- height: 'auto'
24356
- } : {}]
24354
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
24357
24355
  }, scopeId, attrs), {
24358
24356
  default: () => [hasImage && createVNode("div", {
24359
24357
  "key": "image",
@@ -25673,6 +25671,8 @@ const makeLineProps = propsFactory({
25673
25671
  }
25674
25672
  }, 'Line');
25675
25673
 
25674
+ // Utilities
25675
+
25676
25676
  // Types
25677
25677
 
25678
25678
  const makeVBarlineProps = propsFactory({
@@ -25870,6 +25870,8 @@ function moveTo(to, from, radius) {
25870
25870
  };
25871
25871
  }
25872
25872
 
25873
+ // Utilities
25874
+
25873
25875
  // Types
25874
25876
 
25875
25877
  const makeVTrendlineProps = propsFactory({
@@ -27812,6 +27814,10 @@ const VCalendarInterval = genericComponent()({
27812
27814
  ...makeVCalendarIntervalProps()
27813
27815
  },
27814
27816
  setup(props, _ref) {
27817
+ let {
27818
+ emit,
27819
+ slots
27820
+ } = _ref;
27815
27821
  const adapter = useDate();
27816
27822
  const interval = computed(() => {
27817
27823
  const start = adapter.addMinutes(adapter.startOfDay(props.day.date), props.intervalDuration * (props.index + props.intervalStart));
@@ -28283,7 +28289,8 @@ const VDateInput = genericComponent()({
28283
28289
  "onClick:prepend": isInteractive.value ? onClick : undefined,
28284
28290
  "onUpdate:modelValue": onUpdateModel
28285
28291
  }), {
28286
- default: () => [createVNode(VMenu, {
28292
+ ...slots,
28293
+ default: () => createVNode(Fragment, null, [createVNode(VMenu, {
28287
28294
  "modelValue": menu.value,
28288
28295
  "onUpdate:modelValue": $event => menu.value = $event,
28289
28296
  "activator": "parent",
@@ -28326,7 +28333,7 @@ const VDateInput = genericComponent()({
28326
28333
  });
28327
28334
  }
28328
28335
  })]
28329
- }), slots.default?.()]
28336
+ }), slots.default?.()])
28330
28337
  });
28331
28338
  });
28332
28339
  return forwardRefs({}, vDateInputRef);
@@ -28671,7 +28678,11 @@ const makeVNumberInputProps = propsFactory({
28671
28678
  type: Number,
28672
28679
  default: 1
28673
28680
  },
28674
- ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
28681
+ precision: {
28682
+ type: Number,
28683
+ default: 0
28684
+ },
28685
+ ...omit(makeVTextFieldProps({}), ['modelValue'])
28675
28686
  }, 'VNumberInput');
28676
28687
  const VNumberInput = genericComponent()({
28677
28688
  name: 'VNumberInput',
@@ -28685,27 +28696,37 @@ const VNumberInput = genericComponent()({
28685
28696
  let {
28686
28697
  slots
28687
28698
  } = _ref;
28688
- const _model = useProxiedModel(props, 'modelValue');
28689
- const model = computed({
28690
- get: () => _model.value,
28691
- // model.value could be empty string from VTextField
28692
- // but _model.value should be eventually kept in type Number | null
28699
+ const vTextFieldRef = ref();
28700
+ const form = useForm(props);
28701
+ const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28702
+ const isFocused = ref(false);
28703
+ function correctPrecision(val) {
28704
+ let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
28705
+ const fixed = precision == null ? String(val) : val.toFixed(precision);
28706
+ return isFocused.value ? Number(fixed).toString() // trim zeros
28707
+ : fixed;
28708
+ }
28709
+ const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28710
+ const _inputText = shallowRef(null);
28711
+ watchEffect(() => {
28712
+ if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null || controlsDisabled.value) {
28713
+ _inputText.value = model.value && !isNaN(model.value) ? String(model.value) : null;
28714
+ } else if (!isNaN(model.value)) {
28715
+ _inputText.value = correctPrecision(model.value);
28716
+ }
28717
+ });
28718
+ const inputText = computed({
28719
+ get: () => _inputText.value,
28693
28720
  set(val) {
28694
28721
  if (val === null || val === '') {
28695
- _model.value = null;
28696
- return;
28697
- }
28698
- const value = Number(val);
28699
- if (!isNaN(value) && value <= props.max && value >= props.min) {
28700
- _model.value = value;
28722
+ model.value = null;
28723
+ _inputText.value = null;
28724
+ } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
28725
+ model.value = +val;
28726
+ _inputText.value = val;
28701
28727
  }
28702
28728
  }
28703
28729
  });
28704
- const vTextFieldRef = ref();
28705
- const stepDecimals = computed(() => getDecimals(props.step));
28706
- const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28707
- const form = useForm(props);
28708
- const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28709
28730
  const canIncrease = computed(() => {
28710
28731
  if (controlsDisabled.value) return false;
28711
28732
  return (model.value ?? 0) + props.step <= props.max;
@@ -28727,23 +28748,29 @@ const VNumberInput = genericComponent()({
28727
28748
  const decrementSlotProps = computed(() => ({
28728
28749
  click: onClickDown
28729
28750
  }));
28751
+ watch(() => props.precision, () => formatInputValue());
28730
28752
  onMounted(() => {
28731
- if (!controlsDisabled.value) {
28732
- clampModel();
28733
- }
28753
+ clampModel();
28734
28754
  });
28755
+ function inferPrecision(value) {
28756
+ if (value == null) return 0;
28757
+ const str = value.toString();
28758
+ const idx = str.indexOf('.');
28759
+ return ~idx ? str.length - idx : 0;
28760
+ }
28735
28761
  function toggleUpDown() {
28736
28762
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28737
28763
  if (controlsDisabled.value) return;
28738
28764
  if (model.value == null) {
28739
- model.value = clamp(0, props.min, props.max);
28765
+ inputText.value = correctPrecision(clamp(0, props.min, props.max));
28740
28766
  return;
28741
28767
  }
28742
- const decimals = Math.max(modelDecimals.value, stepDecimals.value);
28768
+ let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step));
28769
+ if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision);
28743
28770
  if (increment) {
28744
- if (canIncrease.value) model.value = +(model.value + props.step).toFixed(decimals);
28771
+ if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision);
28745
28772
  } else {
28746
- if (canDecrease.value) model.value = +(model.value - props.step).toFixed(decimals);
28773
+ if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
28747
28774
  }
28748
28775
  }
28749
28776
  function onClickUp(e) {
@@ -28766,6 +28793,16 @@ const VNumberInput = genericComponent()({
28766
28793
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
28767
28794
  e.preventDefault();
28768
28795
  }
28796
+ if (props.precision == null) return;
28797
+
28798
+ // Ignore decimal digits above precision limit
28799
+ if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
28800
+ e.preventDefault();
28801
+ }
28802
+ // Ignore decimal separator when precision = 0
28803
+ if (props.precision === 0 && potentialNewInputVal.includes('.')) {
28804
+ e.preventDefault();
28805
+ }
28769
28806
  }
28770
28807
  async function onKeydown(e) {
28771
28808
  if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
@@ -28785,14 +28822,39 @@ const VNumberInput = genericComponent()({
28785
28822
  e.stopPropagation();
28786
28823
  }
28787
28824
  function clampModel() {
28825
+ if (controlsDisabled.value) return;
28788
28826
  if (!vTextFieldRef.value) return;
28789
- const inputText = vTextFieldRef.value.value;
28790
- if (inputText && !isNaN(+inputText)) {
28791
- model.value = clamp(+inputText, props.min, props.max);
28827
+ const actualText = vTextFieldRef.value.value;
28828
+ if (actualText && !isNaN(+actualText)) {
28829
+ inputText.value = correctPrecision(clamp(+actualText, props.min, props.max));
28792
28830
  } else {
28793
- model.value = null;
28831
+ inputText.value = null;
28794
28832
  }
28795
28833
  }
28834
+ function formatInputValue() {
28835
+ if (controlsDisabled.value) return;
28836
+ if (model.value === null || isNaN(model.value)) {
28837
+ inputText.value = null;
28838
+ return;
28839
+ }
28840
+ inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
28841
+ }
28842
+ function trimDecimalZeros() {
28843
+ if (controlsDisabled.value) return;
28844
+ if (model.value === null || isNaN(model.value)) {
28845
+ inputText.value = null;
28846
+ return;
28847
+ }
28848
+ inputText.value = model.value.toString();
28849
+ }
28850
+ function onFocus() {
28851
+ isFocused.value = true;
28852
+ trimDecimalZeros();
28853
+ }
28854
+ function onBlur() {
28855
+ isFocused.value = false;
28856
+ clampModel();
28857
+ }
28796
28858
  useRender(() => {
28797
28859
  const {
28798
28860
  modelValue: _,
@@ -28870,20 +28932,21 @@ const VNumberInput = genericComponent()({
28870
28932
  "class": "v-number-input__control"
28871
28933
  }, [createVNode(VDivider, {
28872
28934
  "vertical": true
28873
- }, null), incrementControlNode()]) : props.reverse ? undefined : createVNode(Fragment, null, [dividerNode(), controlNode()]);
28935
+ }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : createVNode(Fragment, null, [dividerNode(), controlNode()]);
28874
28936
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
28875
28937
  const prependInnerControl = controlVariant.value === 'split' ? createVNode("div", {
28876
28938
  "class": "v-number-input__control"
28877
28939
  }, [decrementControlNode(), createVNode(VDivider, {
28878
28940
  "vertical": true
28879
- }, null)]) : props.reverse ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28941
+ }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28880
28942
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28881
28943
  return createVNode(VTextField, mergeProps({
28882
28944
  "ref": vTextFieldRef,
28883
- "modelValue": model.value,
28884
- "onUpdate:modelValue": $event => model.value = $event,
28945
+ "modelValue": inputText.value,
28946
+ "onUpdate:modelValue": $event => inputText.value = $event,
28885
28947
  "onBeforeinput": onBeforeinput,
28886
- "onChange": clampModel,
28948
+ "onFocus": onFocus,
28949
+ "onBlur": onBlur,
28887
28950
  "onKeydown": onKeydown,
28888
28951
  "class": ['v-number-input', {
28889
28952
  'v-number-input--default': controlVariant.value === 'default',
@@ -29769,7 +29832,7 @@ const VTimePickerControls = genericComponent()({
29769
29832
  const rangeHours24 = createRange(24);
29770
29833
  const rangeHours12am = createRange(12);
29771
29834
  const rangeHours12pm = rangeHours12am.map(v => v + 12);
29772
- const range60 = createRange(60);
29835
+ createRange(60);
29773
29836
  const selectingNames = {
29774
29837
  1: 'hour',
29775
29838
  2: 'minute',
@@ -29919,11 +29982,11 @@ const VTimePicker = genericComponent()({
29919
29982
  period.value = inputHour.value == null || inputHour.value < 12 ? 'am' : 'pm';
29920
29983
  }
29921
29984
  function firstAllowed(type, value) {
29922
- const allowedFn = type === 'hour' ? isAllowedHourCb.value : type === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value;
29985
+ const allowedFn = isAllowedHourCb.value ;
29923
29986
  if (!allowedFn) return value;
29924
29987
 
29925
29988
  // TODO: clean up (Note from V2 code)
29926
- const range = type === 'minute' ? range60 : type === 'second' ? range60 : isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29989
+ const range = isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29927
29990
  const first = range.find(v => allowedFn((v + value) % range.length + range[0]));
29928
29991
  return ((first || 0) + value) % range.length + range[0];
29929
29992
  }
@@ -30903,7 +30966,7 @@ function createVuetify$1() {
30903
30966
  goTo
30904
30967
  };
30905
30968
  }
30906
- const version$1 = "3.7.12-master.2025-02-15";
30969
+ const version$1 = "3.7.12-master.2025-02-18";
30907
30970
  createVuetify$1.version = version$1;
30908
30971
 
30909
30972
  // Vue's inject() can only be used in setup
@@ -31156,7 +31219,7 @@ var index = /*#__PURE__*/Object.freeze({
31156
31219
 
31157
31220
  /* eslint-disable local-rules/sort-imports */
31158
31221
 
31159
- const version = "3.7.12-master.2025-02-15";
31222
+ const version = "3.7.12-master.2025-02-18";
31160
31223
 
31161
31224
  /* eslint-disable local-rules/sort-imports */
31162
31225