@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,5 +1,5 @@
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
  */
@@ -247,7 +247,7 @@
247
247
  const found = Object.create(null);
248
248
  const rest = Object.create(null);
249
249
  for (const key in obj) {
250
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
250
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && true) {
251
251
  found[key] = obj[key];
252
252
  } else {
253
253
  rest[key] = obj[key];
@@ -881,7 +881,7 @@
881
881
  // WoB should always return negative value.
882
882
 
883
883
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
884
- outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
884
+ outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
885
885
  }
886
886
  return outputContrast * 100;
887
887
  }
@@ -921,7 +921,7 @@
921
921
  // Types
922
922
 
923
923
  // For converting XYZ to sRGB
924
- const srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.2040, 1.0570]];
924
+ const srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.204, 1.0570]];
925
925
 
926
926
  // Forward gamma adjust
927
927
  const srgbForwardTransform = C => C <= 0.0031308 ? C * 12.92 : 1.055 * C ** (1 / 2.4) - 0.055;
@@ -1269,7 +1269,7 @@
1269
1269
  function getCurrentInstance(name, message) {
1270
1270
  const vm = vue.getCurrentInstance();
1271
1271
  if (!vm) {
1272
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1272
+ throw new Error(`[Vuetify] ${name} ${'must be called from inside a setup function'}`);
1273
1273
  }
1274
1274
  return vm;
1275
1275
  }
@@ -2822,6 +2822,8 @@
2822
2822
  }
2823
2823
  }
2824
2824
 
2825
+ // Utilities
2826
+
2825
2827
  // Types
2826
2828
 
2827
2829
  const makeVDialogTransitionProps = propsFactory({
@@ -4724,7 +4726,6 @@
4724
4726
  const isIntersecting = vue.shallowRef(false);
4725
4727
  if (SUPPORTS_INTERSECTION) {
4726
4728
  const observer = new IntersectionObserver(entries => {
4727
- callback?.(entries, observer);
4728
4729
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4729
4730
  }, options);
4730
4731
  vue.onBeforeUnmount(() => {
@@ -18384,13 +18385,7 @@
18384
18385
  return [...new Set(arr)];
18385
18386
  }
18386
18387
  return dive({
18387
- type: 'group',
18388
- items,
18389
- id: 'dummy',
18390
- key: 'dummy',
18391
- value: 'dummy',
18392
- depth: 0
18393
- });
18388
+ items});
18394
18389
  }
18395
18390
 
18396
18391
  // onBeforeMount(() => {
@@ -18834,15 +18829,19 @@
18834
18829
  })) ?? [];
18835
18830
  const item = newSortBy.find(x => x.key === column.key);
18836
18831
  if (!item) {
18837
- if (multiSort.value) newSortBy = [...newSortBy, {
18838
- key: column.key,
18839
- order: 'asc'
18840
- }];else newSortBy = [{
18841
- key: column.key,
18842
- order: 'asc'
18843
- }];
18832
+ if (multiSort.value) {
18833
+ newSortBy.push({
18834
+ key: column.key,
18835
+ order: 'asc'
18836
+ });
18837
+ } else {
18838
+ newSortBy = [{
18839
+ key: column.key,
18840
+ order: 'asc'
18841
+ }];
18842
+ }
18844
18843
  } else if (item.order === 'desc') {
18845
- if (mustSort.value) {
18844
+ if (mustSort.value && newSortBy.length === 1) {
18846
18845
  item.order = 'asc';
18847
18846
  } else {
18848
18847
  newSortBy = newSortBy.filter(x => x.key !== column.key);
@@ -21467,7 +21466,7 @@
21467
21466
  },
21468
21467
  disabled: {
21469
21468
  type: [Boolean, String, Array],
21470
- default: false
21469
+ default: null
21471
21470
  },
21472
21471
  nextIcon: {
21473
21472
  type: IconValue,
@@ -21649,7 +21648,10 @@
21649
21648
  // Composables
21650
21649
  const makeCalendarProps = propsFactory({
21651
21650
  allowedDates: [Array, Function],
21652
- disabled: Boolean,
21651
+ disabled: {
21652
+ type: Boolean,
21653
+ default: null
21654
+ },
21653
21655
  displayValue: null,
21654
21656
  modelValue: Array,
21655
21657
  month: [Number, String],
@@ -23078,8 +23080,7 @@
23078
23080
  const fieldProps = filterFieldProps(props);
23079
23081
  return vue.createVNode(VInput, vue.mergeProps({
23080
23082
  "ref": vInputRef,
23081
- "modelValue": model.value,
23082
- "onUpdate:modelValue": $event => model.value = $event,
23083
+ "modelValue": props.multiple ? model.value : model.value[0],
23083
23084
  "class": ['v-file-input', {
23084
23085
  'v-file-input--chips': !!props.chips,
23085
23086
  'v-file-input--hide': props.hideInput,
@@ -23918,7 +23919,7 @@
23918
23919
  /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
23919
23920
  function kineticEnergyToVelocity(work) {
23920
23921
  const sqrt2 = 1.41421356237;
23921
- return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23922
+ return (work < 0 ? -1 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23922
23923
  }
23923
23924
 
23924
23925
  /**
@@ -24300,7 +24301,6 @@
24300
24301
  const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;
24301
24302
  return isDragging.value ? size * dragProgress.value : size;
24302
24303
  });
24303
- const elementSize = vue.computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);
24304
24304
  const {
24305
24305
  layoutItemStyles,
24306
24306
  layoutItemScrimStyles
@@ -24309,7 +24309,7 @@
24309
24309
  order: vue.computed(() => parseInt(props.order, 10)),
24310
24310
  position: location,
24311
24311
  layoutSize,
24312
- elementSize,
24312
+ elementSize: width,
24313
24313
  active: vue.computed(() => isActive.value || isDragging.value),
24314
24314
  disableTransitions: vue.computed(() => isDragging.value),
24315
24315
  absolute: vue.computed(() =>
@@ -24355,9 +24355,7 @@
24355
24355
  'v-navigation-drawer--active': isActive.value,
24356
24356
  'v-navigation-drawer--sticky': isSticky.value
24357
24357
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
24358
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, ['top', 'bottom'].includes(location.value) ? {
24359
- height: 'auto'
24360
- } : {}]
24358
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
24361
24359
  }, scopeId, attrs), {
24362
24360
  default: () => [hasImage && vue.createVNode("div", {
24363
24361
  "key": "image",
@@ -25677,6 +25675,8 @@
25677
25675
  }
25678
25676
  }, 'Line');
25679
25677
 
25678
+ // Utilities
25679
+
25680
25680
  // Types
25681
25681
 
25682
25682
  const makeVBarlineProps = propsFactory({
@@ -25874,6 +25874,8 @@
25874
25874
  };
25875
25875
  }
25876
25876
 
25877
+ // Utilities
25878
+
25877
25879
  // Types
25878
25880
 
25879
25881
  const makeVTrendlineProps = propsFactory({
@@ -27816,6 +27818,10 @@
27816
27818
  ...makeVCalendarIntervalProps()
27817
27819
  },
27818
27820
  setup(props, _ref) {
27821
+ let {
27822
+ emit,
27823
+ slots
27824
+ } = _ref;
27819
27825
  const adapter = useDate();
27820
27826
  const interval = vue.computed(() => {
27821
27827
  const start = adapter.addMinutes(adapter.startOfDay(props.day.date), props.intervalDuration * (props.index + props.intervalStart));
@@ -28287,7 +28293,8 @@
28287
28293
  "onClick:prepend": isInteractive.value ? onClick : undefined,
28288
28294
  "onUpdate:modelValue": onUpdateModel
28289
28295
  }), {
28290
- default: () => [vue.createVNode(VMenu, {
28296
+ ...slots,
28297
+ default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, {
28291
28298
  "modelValue": menu.value,
28292
28299
  "onUpdate:modelValue": $event => menu.value = $event,
28293
28300
  "activator": "parent",
@@ -28330,7 +28337,7 @@
28330
28337
  });
28331
28338
  }
28332
28339
  })]
28333
- }), slots.default?.()]
28340
+ }), slots.default?.()])
28334
28341
  });
28335
28342
  });
28336
28343
  return forwardRefs({}, vDateInputRef);
@@ -28675,7 +28682,11 @@
28675
28682
  type: Number,
28676
28683
  default: 1
28677
28684
  },
28678
- ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
28685
+ precision: {
28686
+ type: Number,
28687
+ default: 0
28688
+ },
28689
+ ...omit(makeVTextFieldProps({}), ['modelValue'])
28679
28690
  }, 'VNumberInput');
28680
28691
  const VNumberInput = genericComponent()({
28681
28692
  name: 'VNumberInput',
@@ -28689,27 +28700,37 @@
28689
28700
  let {
28690
28701
  slots
28691
28702
  } = _ref;
28692
- const _model = useProxiedModel(props, 'modelValue');
28693
- const model = vue.computed({
28694
- get: () => _model.value,
28695
- // model.value could be empty string from VTextField
28696
- // but _model.value should be eventually kept in type Number | null
28703
+ const vTextFieldRef = vue.ref();
28704
+ const form = useForm(props);
28705
+ const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
28706
+ const isFocused = vue.ref(false);
28707
+ function correctPrecision(val) {
28708
+ let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
28709
+ const fixed = precision == null ? String(val) : val.toFixed(precision);
28710
+ return isFocused.value ? Number(fixed).toString() // trim zeros
28711
+ : fixed;
28712
+ }
28713
+ const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28714
+ const _inputText = vue.shallowRef(null);
28715
+ vue.watchEffect(() => {
28716
+ if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null || controlsDisabled.value) {
28717
+ _inputText.value = model.value && !isNaN(model.value) ? String(model.value) : null;
28718
+ } else if (!isNaN(model.value)) {
28719
+ _inputText.value = correctPrecision(model.value);
28720
+ }
28721
+ });
28722
+ const inputText = vue.computed({
28723
+ get: () => _inputText.value,
28697
28724
  set(val) {
28698
28725
  if (val === null || val === '') {
28699
- _model.value = null;
28700
- return;
28701
- }
28702
- const value = Number(val);
28703
- if (!isNaN(value) && value <= props.max && value >= props.min) {
28704
- _model.value = value;
28726
+ model.value = null;
28727
+ _inputText.value = null;
28728
+ } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
28729
+ model.value = +val;
28730
+ _inputText.value = val;
28705
28731
  }
28706
28732
  }
28707
28733
  });
28708
- const vTextFieldRef = vue.ref();
28709
- const stepDecimals = vue.computed(() => getDecimals(props.step));
28710
- const modelDecimals = vue.computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28711
- const form = useForm(props);
28712
- const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
28713
28734
  const canIncrease = vue.computed(() => {
28714
28735
  if (controlsDisabled.value) return false;
28715
28736
  return (model.value ?? 0) + props.step <= props.max;
@@ -28731,23 +28752,29 @@
28731
28752
  const decrementSlotProps = vue.computed(() => ({
28732
28753
  click: onClickDown
28733
28754
  }));
28755
+ vue.watch(() => props.precision, () => formatInputValue());
28734
28756
  vue.onMounted(() => {
28735
- if (!controlsDisabled.value) {
28736
- clampModel();
28737
- }
28757
+ clampModel();
28738
28758
  });
28759
+ function inferPrecision(value) {
28760
+ if (value == null) return 0;
28761
+ const str = value.toString();
28762
+ const idx = str.indexOf('.');
28763
+ return ~idx ? str.length - idx : 0;
28764
+ }
28739
28765
  function toggleUpDown() {
28740
28766
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28741
28767
  if (controlsDisabled.value) return;
28742
28768
  if (model.value == null) {
28743
- model.value = clamp(0, props.min, props.max);
28769
+ inputText.value = correctPrecision(clamp(0, props.min, props.max));
28744
28770
  return;
28745
28771
  }
28746
- const decimals = Math.max(modelDecimals.value, stepDecimals.value);
28772
+ let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step));
28773
+ if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision);
28747
28774
  if (increment) {
28748
- if (canIncrease.value) model.value = +(model.value + props.step).toFixed(decimals);
28775
+ if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision);
28749
28776
  } else {
28750
- if (canDecrease.value) model.value = +(model.value - props.step).toFixed(decimals);
28777
+ if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
28751
28778
  }
28752
28779
  }
28753
28780
  function onClickUp(e) {
@@ -28770,6 +28797,16 @@
28770
28797
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
28771
28798
  e.preventDefault();
28772
28799
  }
28800
+ if (props.precision == null) return;
28801
+
28802
+ // Ignore decimal digits above precision limit
28803
+ if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
28804
+ e.preventDefault();
28805
+ }
28806
+ // Ignore decimal separator when precision = 0
28807
+ if (props.precision === 0 && potentialNewInputVal.includes('.')) {
28808
+ e.preventDefault();
28809
+ }
28773
28810
  }
28774
28811
  async function onKeydown(e) {
28775
28812
  if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
@@ -28789,14 +28826,39 @@
28789
28826
  e.stopPropagation();
28790
28827
  }
28791
28828
  function clampModel() {
28829
+ if (controlsDisabled.value) return;
28792
28830
  if (!vTextFieldRef.value) return;
28793
- const inputText = vTextFieldRef.value.value;
28794
- if (inputText && !isNaN(+inputText)) {
28795
- model.value = clamp(+inputText, props.min, props.max);
28831
+ const actualText = vTextFieldRef.value.value;
28832
+ if (actualText && !isNaN(+actualText)) {
28833
+ inputText.value = correctPrecision(clamp(+actualText, props.min, props.max));
28796
28834
  } else {
28797
- model.value = null;
28835
+ inputText.value = null;
28798
28836
  }
28799
28837
  }
28838
+ function formatInputValue() {
28839
+ if (controlsDisabled.value) return;
28840
+ if (model.value === null || isNaN(model.value)) {
28841
+ inputText.value = null;
28842
+ return;
28843
+ }
28844
+ inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
28845
+ }
28846
+ function trimDecimalZeros() {
28847
+ if (controlsDisabled.value) return;
28848
+ if (model.value === null || isNaN(model.value)) {
28849
+ inputText.value = null;
28850
+ return;
28851
+ }
28852
+ inputText.value = model.value.toString();
28853
+ }
28854
+ function onFocus() {
28855
+ isFocused.value = true;
28856
+ trimDecimalZeros();
28857
+ }
28858
+ function onBlur() {
28859
+ isFocused.value = false;
28860
+ clampModel();
28861
+ }
28800
28862
  useRender(() => {
28801
28863
  const {
28802
28864
  modelValue: _,
@@ -28874,20 +28936,21 @@
28874
28936
  "class": "v-number-input__control"
28875
28937
  }, [vue.createVNode(VDivider, {
28876
28938
  "vertical": true
28877
- }, null), incrementControlNode()]) : props.reverse ? undefined : vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]);
28939
+ }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]);
28878
28940
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
28879
28941
  const prependInnerControl = controlVariant.value === 'split' ? vue.createVNode("div", {
28880
28942
  "class": "v-number-input__control"
28881
28943
  }, [decrementControlNode(), vue.createVNode(VDivider, {
28882
28944
  "vertical": true
28883
- }, null)]) : props.reverse ? vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
28945
+ }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
28884
28946
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28885
28947
  return vue.createVNode(VTextField, vue.mergeProps({
28886
28948
  "ref": vTextFieldRef,
28887
- "modelValue": model.value,
28888
- "onUpdate:modelValue": $event => model.value = $event,
28949
+ "modelValue": inputText.value,
28950
+ "onUpdate:modelValue": $event => inputText.value = $event,
28889
28951
  "onBeforeinput": onBeforeinput,
28890
- "onChange": clampModel,
28952
+ "onFocus": onFocus,
28953
+ "onBlur": onBlur,
28891
28954
  "onKeydown": onKeydown,
28892
28955
  "class": ['v-number-input', {
28893
28956
  'v-number-input--default': controlVariant.value === 'default',
@@ -29773,7 +29836,7 @@
29773
29836
  const rangeHours24 = createRange(24);
29774
29837
  const rangeHours12am = createRange(12);
29775
29838
  const rangeHours12pm = rangeHours12am.map(v => v + 12);
29776
- const range60 = createRange(60);
29839
+ createRange(60);
29777
29840
  const selectingNames = {
29778
29841
  1: 'hour',
29779
29842
  2: 'minute',
@@ -29923,11 +29986,11 @@
29923
29986
  period.value = inputHour.value == null || inputHour.value < 12 ? 'am' : 'pm';
29924
29987
  }
29925
29988
  function firstAllowed(type, value) {
29926
- const allowedFn = type === 'hour' ? isAllowedHourCb.value : type === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value;
29989
+ const allowedFn = isAllowedHourCb.value ;
29927
29990
  if (!allowedFn) return value;
29928
29991
 
29929
29992
  // TODO: clean up (Note from V2 code)
29930
- const range = type === 'minute' ? range60 : type === 'second' ? range60 : isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29993
+ const range = isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29931
29994
  const first = range.find(v => allowedFn((v + value) % range.length + range[0]));
29932
29995
  return ((first || 0) + value) % range.length + range[0];
29933
29996
  }
@@ -30907,7 +30970,7 @@
30907
30970
  goTo
30908
30971
  };
30909
30972
  }
30910
- const version$1 = "3.7.12-master.2025-02-15";
30973
+ const version$1 = "3.7.12-master.2025-02-18";
30911
30974
  createVuetify$1.version = version$1;
30912
30975
 
30913
30976
  // Vue's inject() can only be used in setup
@@ -31160,7 +31223,7 @@
31160
31223
 
31161
31224
  /* eslint-disable local-rules/sort-imports */
31162
31225
 
31163
- const version = "3.7.12-master.2025-02-15";
31226
+ const version = "3.7.12-master.2025-02-18";
31164
31227
 
31165
31228
  /* eslint-disable local-rules/sort-imports */
31166
31229