vuetify 3.7.12 → 3.7.14

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 (272) hide show
  1. package/dist/json/attributes.json +2442 -2430
  2. package/dist/json/importMap-labs.json +8 -8
  3. package/dist/json/importMap.json +146 -146
  4. package/dist/json/tags.json +4 -1
  5. package/dist/json/web-types.json +4796 -4506
  6. package/dist/vuetify-labs.css +2781 -2771
  7. package/dist/vuetify-labs.d.ts +427 -163
  8. package/dist/vuetify-labs.esm.js +224 -143
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +223 -142
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +4465 -4469
  13. package/dist/vuetify.d.ts +173 -152
  14. package/dist/vuetify.esm.js +103 -85
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +102 -84
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +1082 -1077
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/index.d.mts +1 -1
  22. package/lib/blueprints/md1.d.mts +1 -1
  23. package/lib/blueprints/md2.d.mts +1 -1
  24. package/lib/blueprints/md3.d.mts +1 -1
  25. package/lib/components/VAlert/VAlert.mjs +1 -1
  26. package/lib/components/VAlert/index.d.mts +1 -1
  27. package/lib/components/VAppBar/VAppBar.mjs +1 -1
  28. package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -1
  29. package/lib/components/VAppBar/VAppBarTitle.mjs +1 -1
  30. package/lib/components/VAppBar/index.d.mts +5 -5
  31. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  32. package/lib/components/VAutocomplete/index.d.mts +4 -4
  33. package/lib/components/VAvatar/index.d.mts +1 -1
  34. package/lib/components/VBadge/VBadge.mjs +1 -1
  35. package/lib/components/VBadge/index.d.mts +1 -1
  36. package/lib/components/VBanner/VBanner.mjs +1 -1
  37. package/lib/components/VBanner/index.d.mts +1 -1
  38. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -0
  39. package/lib/components/VBottomNavigation/VBottomNavigation.sass +1 -0
  40. package/lib/components/VBottomNavigation/index.d.mts +1 -1
  41. package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -1
  42. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
  43. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +1 -1
  44. package/lib/components/VBreadcrumbs/index.d.mts +5 -5
  45. package/lib/components/VBtn/VBtn.mjs +1 -1
  46. package/lib/components/VBtn/index.d.mts +5 -5
  47. package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -1
  48. package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -1
  49. package/lib/components/VBtnToggle/index.d.mts +1 -1
  50. package/lib/components/VCard/VCard.mjs +1 -1
  51. package/lib/components/VCard/VCardItem.mjs +1 -1
  52. package/lib/components/VCard/VCardSubtitle.mjs +1 -1
  53. package/lib/components/VCard/VCardText.mjs +1 -1
  54. package/lib/components/VCard/index.d.mts +5 -5
  55. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  56. package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
  57. package/lib/components/VCarousel/index.d.mts +1 -1
  58. package/lib/components/VCheckbox/VCheckbox.mjs +1 -1
  59. package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -1
  60. package/lib/components/VCheckbox/index.d.mts +1 -1
  61. package/lib/components/VChip/VChip.mjs +1 -1
  62. package/lib/components/VChip/index.d.mts +5 -5
  63. package/lib/components/VChipGroup/VChipGroup.mjs +1 -1
  64. package/lib/components/VChipGroup/index.d.mts +1 -1
  65. package/lib/components/VColorPicker/VColorPicker.mjs +1 -1
  66. package/lib/components/VColorPicker/index.d.mts +10 -10
  67. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  68. package/lib/components/VCombobox/index.d.mts +4 -4
  69. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +1 -1
  70. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +5 -5
  71. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs.map +1 -1
  72. package/lib/components/VConfirmEdit/index.d.mts +1 -1
  73. package/lib/components/VCounter/VCounter.mjs +1 -1
  74. package/lib/components/VDataIterator/index.d.mts +1 -1
  75. package/lib/components/VDataTable/VDataTable.mjs +1 -1
  76. package/lib/components/VDataTable/VDataTableFooter.mjs +1 -1
  77. package/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs +1 -1
  78. package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
  79. package/lib/components/VDataTable/VDataTableRow.mjs +1 -1
  80. package/lib/components/VDataTable/VDataTableRows.mjs +1 -1
  81. package/lib/components/VDataTable/VDataTableServer.mjs +1 -1
  82. package/lib/components/VDataTable/VDataTableVirtual.mjs +1 -1
  83. package/lib/components/VDataTable/composables/sort.mjs +12 -8
  84. package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
  85. package/lib/components/VDataTable/index.d.mts +1 -1
  86. package/lib/components/VDatePicker/VDatePicker.mjs +20 -11
  87. package/lib/components/VDatePicker/VDatePicker.mjs.map +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.css +0 -1
  108. package/lib/components/VFileInput/VFileInput.mjs +13 -4
  109. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  110. package/lib/components/VFileInput/VFileInput.sass +0 -1
  111. package/lib/components/VFileInput/index.d.mts +4 -4
  112. package/lib/components/VFooter/VFooter.mjs +1 -1
  113. package/lib/components/VGrid/VContainer.mjs +1 -1
  114. package/lib/components/VIcon/index.d.mts +1 -1
  115. package/lib/components/VImg/VImg.mjs +1 -1
  116. package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
  117. package/lib/components/VInput/VInput.mjs +3 -3
  118. package/lib/components/VInput/VInput.mjs.map +1 -1
  119. package/lib/components/VInput/index.d.mts +1 -1
  120. package/lib/components/VItemGroup/index.d.mts +1 -1
  121. package/lib/components/VLazy/VLazy.mjs +1 -1
  122. package/lib/components/VList/VList.mjs +2 -2
  123. package/lib/components/VList/VList.mjs.map +1 -1
  124. package/lib/components/VList/VListChildren.mjs +1 -1
  125. package/lib/components/VList/VListGroup.mjs +1 -1
  126. package/lib/components/VList/VListItem.mjs +3 -2
  127. package/lib/components/VList/VListItem.mjs.map +1 -1
  128. package/lib/components/VList/VListItemAction.mjs +1 -1
  129. package/lib/components/VList/VListItemMedia.mjs +1 -1
  130. package/lib/components/VList/VListItemSubtitle.mjs +1 -1
  131. package/lib/components/VList/index.d.mts +17 -5
  132. package/lib/components/VMenu/VMenu.mjs +1 -1
  133. package/lib/components/VMenu/index.d.mts +3 -3
  134. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +0 -4
  135. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +3 -6
  136. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  137. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -5
  138. package/lib/components/VOtpInput/VOtpInput.mjs +3 -3
  139. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  140. package/lib/components/VOverlay/VOverlay.mjs +1 -1
  141. package/lib/components/VPagination/VPagination.mjs +1 -1
  142. package/lib/components/VPagination/index.d.mts +1 -1
  143. package/lib/components/VParallax/VParallax.mjs +1 -1
  144. package/lib/components/VRadio/VRadio.mjs +1 -1
  145. package/lib/components/VRadio/index.d.mts +1 -1
  146. package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -1
  147. package/lib/components/VRadioGroup/index.d.mts +1 -1
  148. package/lib/components/VRangeSlider/VRangeSlider.mjs +1 -1
  149. package/lib/components/VRating/VRating.mjs +1 -1
  150. package/lib/components/VRating/index.d.mts +1 -1
  151. package/lib/components/VSelect/VSelect.mjs +1 -1
  152. package/lib/components/VSelect/index.d.mts +4 -4
  153. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -1
  154. package/lib/components/VSelectionControl/index.d.mts +1 -1
  155. package/lib/components/VSelectionControlGroup/index.d.mts +1 -1
  156. package/lib/components/VSheet/VSheet.mjs +1 -1
  157. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +1 -1
  158. package/lib/components/VSlideGroup/index.d.mts +1 -1
  159. package/lib/components/VSlider/VSlider.mjs +1 -1
  160. package/lib/components/VSlider/VSliderThumb.mjs +1 -1
  161. package/lib/components/VSnackbar/VSnackbar.mjs +1 -1
  162. package/lib/components/VSnackbar/index.d.mts +3 -3
  163. package/lib/components/VSparkline/VBarline.mjs +1 -2
  164. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  165. package/lib/components/VSparkline/VSparkline.mjs +1 -1
  166. package/lib/components/VSparkline/VTrendline.mjs +1 -2
  167. package/lib/components/VSparkline/VTrendline.mjs.map +1 -1
  168. package/lib/components/VSpeedDial/VSpeedDial.mjs +1 -1
  169. package/lib/components/VStepper/VStepper.mjs +3 -3
  170. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  171. package/lib/components/VStepper/VStepperItem.mjs +1 -1
  172. package/lib/components/VStepper/VStepperWindow.mjs +1 -1
  173. package/lib/components/VStepper/VStepperWindowItem.mjs +1 -1
  174. package/lib/components/VStepper/index.d.mts +1 -1
  175. package/lib/components/VSwitch/VSwitch.mjs +1 -1
  176. package/lib/components/VSwitch/index.d.mts +1 -1
  177. package/lib/components/VSystemBar/VSystemBar.mjs +1 -1
  178. package/lib/components/VTabs/VTab.mjs +1 -1
  179. package/lib/components/VTabs/VTabs.mjs +1 -1
  180. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  181. package/lib/components/VTabs/VTabsWindow.mjs +1 -1
  182. package/lib/components/VTabs/VTabsWindowItem.mjs +1 -1
  183. package/lib/components/VTabs/index.d.mts +21 -21
  184. package/lib/components/VTextField/VTextField.mjs +1 -1
  185. package/lib/components/VTextField/index.d.mts +7 -7
  186. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  187. package/lib/components/VTextarea/index.d.mts +4 -4
  188. package/lib/components/VTimeline/VTimeline.mjs +3 -3
  189. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  190. package/lib/components/VTimeline/VTimelineDivider.mjs +1 -1
  191. package/lib/components/VTimeline/VTimelineItem.mjs +1 -1
  192. package/lib/components/VTimeline/index.d.mts +1 -1
  193. package/lib/components/VToolbar/VToolbar.mjs +1 -1
  194. package/lib/components/VTooltip/VTooltip.mjs +1 -1
  195. package/lib/components/VTooltip/index.d.mts +3 -3
  196. package/lib/components/VValidation/index.d.mts +1 -1
  197. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +1 -1
  198. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +1 -1
  199. package/lib/components/VVirtualScroll/index.d.mts +1 -1
  200. package/lib/components/VWindow/VWindow.mjs +1 -1
  201. package/lib/components/VWindow/VWindowItem.mjs +1 -1
  202. package/lib/components/VWindow/index.d.mts +1 -1
  203. package/lib/components/index.d.mts +127 -106
  204. package/lib/components/transitions/dialog-transition.mjs +1 -2
  205. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  206. package/lib/composables/calendar.mjs +4 -1
  207. package/lib/composables/calendar.mjs.map +1 -1
  208. package/lib/composables/date/adapters/vuetify.mjs +9 -21
  209. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  210. package/lib/composables/density.mjs +1 -1
  211. package/lib/composables/density.mjs.map +1 -1
  212. package/lib/composables/icons.mjs +1 -1
  213. package/lib/composables/list-items.mjs +2 -3
  214. package/lib/composables/list-items.mjs.map +1 -1
  215. package/lib/composables/nested/nested.mjs +16 -1
  216. package/lib/composables/nested/nested.mjs.map +1 -1
  217. package/lib/composables/variant.mjs +1 -1
  218. package/lib/entry-bundler.mjs +1 -1
  219. package/lib/framework.mjs +1 -1
  220. package/lib/iconsets/fa-svg.d.mts +1 -1
  221. package/lib/iconsets/fa.d.mts +1 -1
  222. package/lib/iconsets/fa4.d.mts +1 -1
  223. package/lib/iconsets/md.d.mts +1 -1
  224. package/lib/iconsets/mdi-svg.d.mts +1 -1
  225. package/lib/iconsets/mdi.d.mts +1 -1
  226. package/lib/index.d.mts +47 -47
  227. package/lib/labs/VCalendar/VCalendar.mjs +1 -1
  228. package/lib/labs/VCalendar/VCalendarDay.mjs +1 -1
  229. package/lib/labs/VCalendar/index.d.mts +8 -2
  230. package/lib/labs/VDateInput/VDateInput.mjs +4 -3
  231. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  232. package/lib/labs/VDateInput/index.d.mts +256 -3
  233. package/lib/labs/VFileUpload/VFileUpload.mjs +3 -3
  234. package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -1
  235. package/lib/labs/VFileUpload/VFileUploadItem.mjs +1 -1
  236. package/lib/labs/VFileUpload/index.d.mts +5 -5
  237. package/lib/labs/VNumberInput/VNumberInput.css +10 -2
  238. package/lib/labs/VNumberInput/VNumberInput.mjs +94 -36
  239. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  240. package/lib/labs/VNumberInput/VNumberInput.sass +12 -2
  241. package/lib/labs/VNumberInput/index.d.mts +59 -32
  242. package/lib/labs/VPicker/VPicker.mjs +1 -1
  243. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +1 -1
  244. package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
  245. package/lib/labs/VStepperVertical/VStepperVertical.mjs +1 -1
  246. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +1 -1
  247. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +1 -1
  248. package/lib/labs/VStepperVertical/index.d.mts +1 -1
  249. package/lib/labs/VTimePicker/VTimePicker.mjs +1 -1
  250. package/lib/labs/VTimePicker/VTimePickerControls.mjs +1 -1
  251. package/lib/labs/VTimePicker/VTimePickerControls.sass +16 -16
  252. package/lib/labs/VTimePicker/_variables.scss +12 -12
  253. package/lib/labs/VTreeview/VTreeview.mjs +7 -3
  254. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  255. package/lib/labs/VTreeview/VTreeviewChildren.mjs +6 -9
  256. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  257. package/lib/labs/VTreeview/VTreeviewGroup.mjs +1 -1
  258. package/lib/labs/VTreeview/VTreeviewItem.css +15 -9
  259. package/lib/labs/VTreeview/VTreeviewItem.mjs +14 -14
  260. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  261. package/lib/labs/VTreeview/VTreeviewItem.sass +16 -10
  262. package/lib/labs/VTreeview/_variables.scss +2 -5
  263. package/lib/labs/VTreeview/index.d.mts +14 -20
  264. package/lib/labs/components.d.mts +365 -122
  265. package/lib/locale/adapters/vue-i18n.mjs +0 -1
  266. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  267. package/lib/locale/ja.mjs +19 -19
  268. package/lib/locale/ja.mjs.map +1 -1
  269. package/lib/styles/tools/_functions.sass +1 -1
  270. package/lib/util/helpers.mjs +3 -9
  271. package/lib/util/helpers.mjs.map +1 -1
  272. package/package.json +17 -16
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.7.12
2
+ * Vuetify v3.7.14
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
@@ -226,10 +226,9 @@ function has(obj, key) {
226
226
  // Array of keys
227
227
  function pick(obj, paths) {
228
228
  const found = {};
229
- const keys = new Set(Object.keys(obj));
230
- for (const path of paths) {
231
- if (keys.has(path)) {
232
- found[path] = obj[path];
229
+ for (const key of paths) {
230
+ if (Object.hasOwn(obj, key)) {
231
+ found[key] = obj[key];
233
232
  }
234
233
  }
235
234
  return found;
@@ -243,7 +242,7 @@ function pickWithRest(obj, paths, exclude) {
243
242
  const found = Object.create(null);
244
243
  const rest = Object.create(null);
245
244
  for (const key in obj) {
246
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
245
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && true) {
247
246
  found[key] = obj[key];
248
247
  } else {
249
248
  rest[key] = obj[key];
@@ -258,11 +257,6 @@ function omit(obj, exclude) {
258
257
  exclude.forEach(prop => delete clone[prop]);
259
258
  return clone;
260
259
  }
261
- function only(obj, include) {
262
- const clone = {};
263
- include.forEach(prop => clone[prop] = obj[prop]);
264
- return clone;
265
- }
266
260
  const onRE = /^on[^a-z]/;
267
261
  const isOn = key => onRE.test(key);
268
262
  const bubblingEvents = ['onAfterscriptexecute', 'onAnimationcancel', 'onAnimationend', 'onAnimationiteration', 'onAnimationstart', 'onAuxclick', 'onBeforeinput', 'onBeforescriptexecute', 'onChange', 'onClick', 'onCompositionend', 'onCompositionstart', 'onCompositionupdate', 'onContextmenu', 'onCopy', 'onCut', 'onDblclick', 'onFocusin', 'onFocusout', 'onFullscreenchange', 'onFullscreenerror', 'onGesturechange', 'onGestureend', 'onGesturestart', 'onGotpointercapture', 'onInput', 'onKeydown', 'onKeypress', 'onKeyup', 'onLostpointercapture', 'onMousedown', 'onMousemove', 'onMouseout', 'onMouseover', 'onMouseup', 'onMousewheel', 'onPaste', 'onPointercancel', 'onPointerdown', 'onPointerenter', 'onPointerleave', 'onPointermove', 'onPointerout', 'onPointerover', 'onPointerup', 'onReset', 'onSelect', 'onSubmit', 'onTouchcancel', 'onTouchend', 'onTouchmove', 'onTouchstart', 'onTransitioncancel', 'onTransitionend', 'onTransitionrun', 'onTransitionstart', 'onWheel'];
@@ -877,7 +871,7 @@ function APCAcontrast(text, background) {
877
871
  // WoB should always return negative value.
878
872
 
879
873
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
880
- outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
874
+ outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
881
875
  }
882
876
  return outputContrast * 100;
883
877
  }
@@ -917,7 +911,7 @@ function toXYZ$1(lab) {
917
911
  // Types
918
912
 
919
913
  // 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]];
914
+ const srgbForwardMatrix = [[3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.204, 1.0570]];
921
915
 
922
916
  // Forward gamma adjust
923
917
  const srgbForwardTransform = C => C <= 0.0031308 ? C * 12.92 : 1.055 * C ** (1 / 2.4) - 0.055;
@@ -1265,7 +1259,7 @@ function getForeground(color) {
1265
1259
  function getCurrentInstance(name, message) {
1266
1260
  const vm = getCurrentInstance$1();
1267
1261
  if (!vm) {
1268
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1262
+ throw new Error(`[Vuetify] ${name} ${'must be called from inside a setup function'}`);
1269
1263
  }
1270
1264
  return vm;
1271
1265
  }
@@ -2818,6 +2812,8 @@ function ExpandTransitionGenerator () {
2818
2812
  }
2819
2813
  }
2820
2814
 
2815
+ // Utilities
2816
+
2821
2817
  // Types
2822
2818
 
2823
2819
  const makeVDialogTransitionProps = propsFactory({
@@ -4012,7 +4008,7 @@ const VAppBar = genericComponent()({
4012
4008
 
4013
4009
  const allowedDensities = [null, 'default', 'comfortable', 'compact'];
4014
4010
 
4015
- // typeof allowedDensities[number] evalutes to any
4011
+ // typeof allowedDensities[number] evaluates to any
4016
4012
  // when generating api types for whatever reason.
4017
4013
 
4018
4014
  // Composables
@@ -4720,7 +4716,6 @@ function useIntersectionObserver(callback, options) {
4720
4716
  const isIntersecting = shallowRef(false);
4721
4717
  if (SUPPORTS_INTERSECTION) {
4722
4718
  const observer = new IntersectionObserver(entries => {
4723
- callback?.(entries, observer);
4724
4719
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4725
4720
  }, options);
4726
4721
  onBeforeUnmount(() => {
@@ -6892,7 +6887,7 @@ const makeVInputProps = propsFactory({
6892
6887
  'onClick:append': EventProp(),
6893
6888
  ...makeComponentProps(),
6894
6889
  ...makeDensityProps(),
6895
- ...only(makeDimensionProps(), ['maxWidth', 'minWidth', 'width']),
6890
+ ...pick(makeDimensionProps(), ['maxWidth', 'minWidth', 'width']),
6896
6891
  ...makeThemeProps(),
6897
6892
  ...makeValidationProps()
6898
6893
  }, 'VInput');
@@ -8720,7 +8715,22 @@ const useNested = props => {
8720
8715
  parents: parents.value,
8721
8716
  event
8722
8717
  });
8723
- newActivated && (activated.value = newActivated);
8718
+ if (newActivated.size !== activated.value.size) {
8719
+ activated.value = newActivated;
8720
+ } else {
8721
+ for (const value of newActivated) {
8722
+ if (!activated.value.has(value)) {
8723
+ activated.value = newActivated;
8724
+ return;
8725
+ }
8726
+ }
8727
+ for (const value of activated.value) {
8728
+ if (!newActivated.has(value)) {
8729
+ activated.value = newActivated;
8730
+ return;
8731
+ }
8732
+ }
8733
+ }
8724
8734
  },
8725
8735
  children,
8726
8736
  parents,
@@ -9167,7 +9177,8 @@ const VListItem = genericComponent()({
9167
9177
  list,
9168
9178
  select,
9169
9179
  root,
9170
- id: uid
9180
+ id: uid,
9181
+ link
9171
9182
  };
9172
9183
  }
9173
9184
  });
@@ -9435,7 +9446,6 @@ function useItems(props) {
9435
9446
  function transformIn(value) {
9436
9447
  // Cache unrefed values outside the loop,
9437
9448
  // proxy getters can be slow when you call them a billion times
9438
- const _value = toRaw(value);
9439
9449
  const _items = itemsMap.value;
9440
9450
  const _allItems = items.value;
9441
9451
  const _keylessItems = keylessItems.value;
@@ -9445,7 +9455,7 @@ function useItems(props) {
9445
9455
  const valueComparator = props.valueComparator || deepEqual;
9446
9456
  const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
9447
9457
  const returnValue = [];
9448
- main: for (const v of _value) {
9458
+ main: for (const v of value) {
9449
9459
  // When the model value is null, return an InternalItem
9450
9460
  // based on null only if null is one of the items
9451
9461
  if (!_hasNullItem && v === null) continue;
@@ -9691,7 +9701,7 @@ const VList = genericComponent()({
9691
9701
  'v-list--slim': props.slim
9692
9702
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
9693
9703
  "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
9694
- "tabindex": props.disabled || isFocused.value ? -1 : 0,
9704
+ "tabindex": props.disabled ? -1 : 0,
9695
9705
  "role": "listbox",
9696
9706
  "aria-activedescendant": undefined,
9697
9707
  "onFocusin": onFocusin,
@@ -17703,16 +17713,13 @@ function format(value, formatString, locale, formats) {
17703
17713
  case 'fullTime':
17704
17714
  options = {
17705
17715
  hour: 'numeric',
17706
- minute: 'numeric',
17707
- second: 'numeric',
17708
- hour12: true
17716
+ minute: 'numeric'
17709
17717
  };
17710
17718
  break;
17711
17719
  case 'fullTime12h':
17712
17720
  options = {
17713
17721
  hour: 'numeric',
17714
17722
  minute: 'numeric',
17715
- second: 'numeric',
17716
17723
  hour12: true
17717
17724
  };
17718
17725
  break;
@@ -17720,40 +17727,35 @@ function format(value, formatString, locale, formats) {
17720
17727
  options = {
17721
17728
  hour: 'numeric',
17722
17729
  minute: 'numeric',
17723
- second: 'numeric',
17724
17730
  hour12: false
17725
17731
  };
17726
17732
  break;
17727
17733
  case 'fullDateTime':
17728
17734
  options = {
17729
17735
  year: 'numeric',
17730
- month: 'long',
17736
+ month: 'short',
17731
17737
  day: 'numeric',
17732
17738
  hour: 'numeric',
17733
- minute: 'numeric',
17734
- second: 'numeric',
17735
- hour12: true
17739
+ minute: 'numeric'
17736
17740
  };
17737
17741
  break;
17738
17742
  case 'fullDateTime12h':
17739
17743
  options = {
17740
17744
  year: 'numeric',
17741
- month: 'long',
17745
+ month: 'short',
17742
17746
  day: 'numeric',
17743
17747
  hour: 'numeric',
17744
17748
  minute: 'numeric',
17745
- second: 'numeric',
17746
17749
  hour12: true
17747
17750
  };
17748
17751
  break;
17749
17752
  case 'fullDateTime24h':
17750
17753
  options = {
17751
17754
  year: 'numeric',
17752
- month: 'long',
17755
+ month: 'short',
17753
17756
  day: 'numeric',
17754
17757
  hour: 'numeric',
17755
17758
  minute: 'numeric',
17756
- second: 'numeric',
17757
17759
  hour12: false
17758
17760
  };
17759
17761
  break;
@@ -17770,11 +17772,9 @@ function format(value, formatString, locale, formats) {
17770
17772
  month: '2-digit',
17771
17773
  day: '2-digit',
17772
17774
  hour: 'numeric',
17773
- minute: 'numeric',
17774
- second: 'numeric',
17775
- hour12: false
17775
+ minute: 'numeric'
17776
17776
  };
17777
- break;
17777
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17778
17778
  case 'keyboardDateTime12h':
17779
17779
  options = {
17780
17780
  year: 'numeric',
@@ -17782,10 +17782,9 @@ function format(value, formatString, locale, formats) {
17782
17782
  day: '2-digit',
17783
17783
  hour: 'numeric',
17784
17784
  minute: 'numeric',
17785
- second: 'numeric',
17786
17785
  hour12: true
17787
17786
  };
17788
- break;
17787
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17789
17788
  case 'keyboardDateTime24h':
17790
17789
  options = {
17791
17790
  year: 'numeric',
@@ -17793,10 +17792,9 @@ function format(value, formatString, locale, formats) {
17793
17792
  day: '2-digit',
17794
17793
  hour: 'numeric',
17795
17794
  minute: 'numeric',
17796
- second: 'numeric',
17797
17795
  hour12: false
17798
17796
  };
17799
- break;
17797
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
17800
17798
  default:
17801
17799
  options = customFormat ?? {
17802
17800
  timeZone: 'UTC',
@@ -18365,13 +18363,7 @@ function provideGroupBy(options) {
18365
18363
  return [...new Set(arr)];
18366
18364
  }
18367
18365
  return dive({
18368
- type: 'group',
18369
- items,
18370
- id: 'dummy',
18371
- key: 'dummy',
18372
- value: 'dummy',
18373
- depth: 0
18374
- });
18366
+ items});
18375
18367
  }
18376
18368
 
18377
18369
  // onBeforeMount(() => {
@@ -18815,15 +18807,19 @@ function provideSort(options) {
18815
18807
  })) ?? [];
18816
18808
  const item = newSortBy.find(x => x.key === column.key);
18817
18809
  if (!item) {
18818
- if (multiSort.value) newSortBy = [...newSortBy, {
18819
- key: column.key,
18820
- order: 'asc'
18821
- }];else newSortBy = [{
18822
- key: column.key,
18823
- order: 'asc'
18824
- }];
18810
+ if (multiSort.value) {
18811
+ newSortBy.push({
18812
+ key: column.key,
18813
+ order: 'asc'
18814
+ });
18815
+ } else {
18816
+ newSortBy = [{
18817
+ key: column.key,
18818
+ order: 'asc'
18819
+ }];
18820
+ }
18825
18821
  } else if (item.order === 'desc') {
18826
- if (mustSort.value) {
18822
+ if (mustSort.value && newSortBy.length === 1) {
18827
18823
  item.order = 'asc';
18828
18824
  } else {
18829
18825
  newSortBy = newSortBy.filter(x => x.key !== column.key);
@@ -21448,7 +21444,7 @@ const makeVDatePickerControlsProps = propsFactory({
21448
21444
  },
21449
21445
  disabled: {
21450
21446
  type: [Boolean, String, Array],
21451
- default: false
21447
+ default: null
21452
21448
  },
21453
21449
  nextIcon: {
21454
21450
  type: IconValue,
@@ -21630,7 +21626,10 @@ const VDatePickerHeader = genericComponent()({
21630
21626
  // Composables
21631
21627
  const makeCalendarProps = propsFactory({
21632
21628
  allowedDates: [Array, Function],
21633
- disabled: Boolean,
21629
+ disabled: {
21630
+ type: Boolean,
21631
+ default: null
21632
+ },
21634
21633
  displayValue: null,
21635
21634
  modelValue: Array,
21636
21635
  month: [Number, String],
@@ -22234,9 +22233,26 @@ const VDatePicker = genericComponent()({
22234
22233
  const model = useProxiedModel(props, 'modelValue', undefined, v => wrapInArray(v), v => props.multiple ? v : v[0]);
22235
22234
  const viewMode = useProxiedModel(props, 'viewMode');
22236
22235
  // const inputMode = useProxiedModel(props, 'inputMode')
22236
+
22237
+ const minDate = computed(() => {
22238
+ const date = adapter.date(props.min);
22239
+ return props.min && adapter.isValid(date) ? date : null;
22240
+ });
22241
+ const maxDate = computed(() => {
22242
+ const date = adapter.date(props.max);
22243
+ return props.max && adapter.isValid(date) ? date : null;
22244
+ });
22237
22245
  const internal = computed(() => {
22238
- const value = adapter.date(model.value?.[0]);
22239
- return value && adapter.isValid(value) ? value : adapter.date();
22246
+ const today = adapter.date();
22247
+ let value = today;
22248
+ if (model.value?.[0]) {
22249
+ value = adapter.date(model.value[0]);
22250
+ } else if (minDate.value && adapter.isBefore(today, minDate.value)) {
22251
+ value = minDate.value;
22252
+ } else if (maxDate.value && adapter.isAfter(today, maxDate.value)) {
22253
+ value = maxDate.value;
22254
+ }
22255
+ return value && adapter.isValid(value) ? value : today;
22240
22256
  });
22241
22257
  const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22242
22258
  const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
@@ -22256,14 +22272,6 @@ const VDatePicker = genericComponent()({
22256
22272
  });
22257
22273
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
22258
22274
  const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
22259
- const minDate = computed(() => {
22260
- const date = adapter.date(props.min);
22261
- return props.min && adapter.isValid(date) ? date : null;
22262
- });
22263
- const maxDate = computed(() => {
22264
- const date = adapter.date(props.max);
22265
- return props.max && adapter.isValid(date) ? date : null;
22266
- });
22267
22275
  const disabled = computed(() => {
22268
22276
  if (props.disabled) return true;
22269
22277
  const targets = [];
@@ -23042,6 +23050,14 @@ const VFileInput = genericComponent()({
23042
23050
  callEvent(props['onClick:clear'], e);
23043
23051
  });
23044
23052
  }
23053
+ function onDragover(e) {
23054
+ e.preventDefault();
23055
+ }
23056
+ function onDrop(e) {
23057
+ e.preventDefault();
23058
+ if (!e.dataTransfer) return;
23059
+ model.value = [...(e.dataTransfer.files ?? [])];
23060
+ }
23045
23061
  watch(model, newValue => {
23046
23062
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
23047
23063
  if (hasModelReset && inputRef.value) {
@@ -23059,8 +23075,7 @@ const VFileInput = genericComponent()({
23059
23075
  const fieldProps = filterFieldProps(props);
23060
23076
  return createVNode(VInput, mergeProps({
23061
23077
  "ref": vInputRef,
23062
- "modelValue": model.value,
23063
- "onUpdate:modelValue": $event => model.value = $event,
23078
+ "modelValue": props.multiple ? model.value : model.value[0],
23064
23079
  "class": ['v-file-input', {
23065
23080
  'v-file-input--chips': !!props.chips,
23066
23081
  'v-file-input--hide': props.hideInput,
@@ -23095,7 +23110,9 @@ const VFileInput = genericComponent()({
23095
23110
  "dirty": isDirty.value || props.dirty,
23096
23111
  "disabled": isDisabled.value,
23097
23112
  "focused": isFocused.value,
23098
- "error": isValid.value === false
23113
+ "error": isValid.value === false,
23114
+ "onDragover": onDragover,
23115
+ "onDrop": onDrop
23099
23116
  }), {
23100
23117
  ...slots,
23101
23118
  default: _ref4 => {
@@ -23899,7 +23916,7 @@ const HISTORY = 20; // number of samples to keep
23899
23916
  /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
23900
23917
  function kineticEnergyToVelocity(work) {
23901
23918
  const sqrt2 = 1.41421356237;
23902
- return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23919
+ return (work < 0 ? -1 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23903
23920
  }
23904
23921
 
23905
23922
  /**
@@ -24281,7 +24298,6 @@ const VNavigationDrawer = genericComponent()({
24281
24298
  const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;
24282
24299
  return isDragging.value ? size * dragProgress.value : size;
24283
24300
  });
24284
- const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);
24285
24301
  const {
24286
24302
  layoutItemStyles,
24287
24303
  layoutItemScrimStyles
@@ -24290,7 +24306,7 @@ const VNavigationDrawer = genericComponent()({
24290
24306
  order: computed(() => parseInt(props.order, 10)),
24291
24307
  position: location,
24292
24308
  layoutSize,
24293
- elementSize,
24309
+ elementSize: width,
24294
24310
  active: computed(() => isActive.value || isDragging.value),
24295
24311
  disableTransitions: computed(() => isDragging.value),
24296
24312
  absolute: computed(() =>
@@ -24336,9 +24352,7 @@ const VNavigationDrawer = genericComponent()({
24336
24352
  'v-navigation-drawer--active': isActive.value,
24337
24353
  'v-navigation-drawer--sticky': isSticky.value
24338
24354
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
24339
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, ['top', 'bottom'].includes(location.value) ? {
24340
- height: 'auto'
24341
- } : {}]
24355
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
24342
24356
  }, scopeId, attrs), {
24343
24357
  default: () => [hasImage && createVNode("div", {
24344
24358
  "key": "image",
@@ -24425,7 +24439,7 @@ const makeVOtpInputProps = propsFactory({
24425
24439
  },
24426
24440
  ...makeDimensionProps(),
24427
24441
  ...makeFocusProps(),
24428
- ...only(makeVFieldProps({
24442
+ ...pick(makeVFieldProps({
24429
24443
  variant: 'outlined'
24430
24444
  }), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'rounded', 'style', 'theme', 'variant'])
24431
24445
  }, 'VOtpInput');
@@ -25658,6 +25672,8 @@ const makeLineProps = propsFactory({
25658
25672
  }
25659
25673
  }, 'Line');
25660
25674
 
25675
+ // Utilities
25676
+
25661
25677
  // Types
25662
25678
 
25663
25679
  const makeVBarlineProps = propsFactory({
@@ -25855,6 +25871,8 @@ function moveTo(to, from, radius) {
25855
25871
  };
25856
25872
  }
25857
25873
 
25874
+ // Utilities
25875
+
25858
25876
  // Types
25859
25877
 
25860
25878
  const makeVTrendlineProps = propsFactory({
@@ -26409,7 +26427,7 @@ const makeVStepperProps = propsFactory({
26409
26427
  selectedClass: 'v-stepper-item--selected'
26410
26428
  }),
26411
26429
  ...makeVSheetProps(),
26412
- ...only(makeVStepperActionsProps(), ['prevText', 'nextText'])
26430
+ ...pick(makeVStepperActionsProps(), ['prevText', 'nextText'])
26413
26431
  }, 'VStepper');
26414
26432
  const VStepper = genericComponent()({
26415
26433
  name: 'VStepper',
@@ -27491,7 +27509,7 @@ const makeVTimelineProps = propsFactory({
27491
27509
  type: String,
27492
27510
  validator: v => ['start', 'end', 'both'].includes(v)
27493
27511
  },
27494
- ...only(makeVTimelineItemProps({
27512
+ ...pick(makeVTimelineItemProps({
27495
27513
  lineInset: 0
27496
27514
  }), ['dotColor', 'fillDot', 'hideOpposite', 'iconColor', 'lineInset', 'size']),
27497
27515
  ...makeComponentProps(),
@@ -27797,6 +27815,10 @@ const VCalendarInterval = genericComponent()({
27797
27815
  ...makeVCalendarIntervalProps()
27798
27816
  },
27799
27817
  setup(props, _ref) {
27818
+ let {
27819
+ emit,
27820
+ slots
27821
+ } = _ref;
27800
27822
  const adapter = useDate();
27801
27823
  const interval = computed(() => {
27802
27824
  const start = adapter.addMinutes(adapter.startOfDay(props.day.date), props.intervalDuration * (props.index + props.intervalStart));
@@ -28268,7 +28290,8 @@ const VDateInput = genericComponent()({
28268
28290
  "onClick:prepend": isInteractive.value ? onClick : undefined,
28269
28291
  "onUpdate:modelValue": onUpdateModel
28270
28292
  }), {
28271
- default: () => [createVNode(VMenu, {
28293
+ ...slots,
28294
+ default: () => createVNode(Fragment, null, [createVNode(VMenu, {
28272
28295
  "modelValue": menu.value,
28273
28296
  "onUpdate:modelValue": $event => menu.value = $event,
28274
28297
  "activator": "parent",
@@ -28311,7 +28334,7 @@ const VDateInput = genericComponent()({
28311
28334
  });
28312
28335
  }
28313
28336
  })]
28314
- }), slots.default?.()]
28337
+ }), slots.default?.()])
28315
28338
  });
28316
28339
  });
28317
28340
  return forwardRefs({}, vDateInputRef);
@@ -28446,7 +28469,7 @@ const makeVFileUploadProps = propsFactory({
28446
28469
  name: String,
28447
28470
  ...makeDelayProps(),
28448
28471
  ...makeDensityProps(),
28449
- ...only(makeVDividerProps({
28472
+ ...pick(makeVDividerProps({
28450
28473
  length: 150
28451
28474
  }), ['length', 'thickness', 'opacity']),
28452
28475
  ...makeVSheetProps()
@@ -28656,7 +28679,11 @@ const makeVNumberInputProps = propsFactory({
28656
28679
  type: Number,
28657
28680
  default: 1
28658
28681
  },
28659
- ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
28682
+ precision: {
28683
+ type: Number,
28684
+ default: 0
28685
+ },
28686
+ ...omit(makeVTextFieldProps({}), ['modelValue'])
28660
28687
  }, 'VNumberInput');
28661
28688
  const VNumberInput = genericComponent()({
28662
28689
  name: 'VNumberInput',
@@ -28670,27 +28697,37 @@ const VNumberInput = genericComponent()({
28670
28697
  let {
28671
28698
  slots
28672
28699
  } = _ref;
28673
- const _model = useProxiedModel(props, 'modelValue');
28674
- const model = computed({
28675
- get: () => _model.value,
28676
- // model.value could be empty string from VTextField
28677
- // but _model.value should be eventually kept in type Number | null
28700
+ const vTextFieldRef = ref();
28701
+ const form = useForm(props);
28702
+ const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28703
+ const isFocused = ref(false);
28704
+ function correctPrecision(val) {
28705
+ let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
28706
+ const fixed = precision == null ? String(val) : val.toFixed(precision);
28707
+ return isFocused.value ? Number(fixed).toString() // trim zeros
28708
+ : fixed;
28709
+ }
28710
+ const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28711
+ const _inputText = shallowRef(null);
28712
+ watchEffect(() => {
28713
+ if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
28714
+ _inputText.value = null;
28715
+ } else if (!isNaN(model.value)) {
28716
+ _inputText.value = correctPrecision(model.value);
28717
+ }
28718
+ });
28719
+ const inputText = computed({
28720
+ get: () => _inputText.value,
28678
28721
  set(val) {
28679
28722
  if (val === null || val === '') {
28680
- _model.value = null;
28681
- return;
28682
- }
28683
- const value = Number(val);
28684
- if (!isNaN(value) && value <= props.max && value >= props.min) {
28685
- _model.value = value;
28723
+ model.value = null;
28724
+ _inputText.value = null;
28725
+ } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
28726
+ model.value = +val;
28727
+ _inputText.value = val;
28686
28728
  }
28687
28729
  }
28688
28730
  });
28689
- const vTextFieldRef = ref();
28690
- const stepDecimals = computed(() => getDecimals(props.step));
28691
- const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28692
- const form = useForm(props);
28693
- const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28694
28731
  const canIncrease = computed(() => {
28695
28732
  if (controlsDisabled.value) return false;
28696
28733
  return (model.value ?? 0) + props.step <= props.max;
@@ -28712,23 +28749,29 @@ const VNumberInput = genericComponent()({
28712
28749
  const decrementSlotProps = computed(() => ({
28713
28750
  click: onClickDown
28714
28751
  }));
28752
+ watch(() => props.precision, () => formatInputValue());
28715
28753
  onMounted(() => {
28716
- if (!controlsDisabled.value) {
28717
- clampModel();
28718
- }
28754
+ clampModel();
28719
28755
  });
28756
+ function inferPrecision(value) {
28757
+ if (value == null) return 0;
28758
+ const str = value.toString();
28759
+ const idx = str.indexOf('.');
28760
+ return ~idx ? str.length - idx : 0;
28761
+ }
28720
28762
  function toggleUpDown() {
28721
28763
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28722
28764
  if (controlsDisabled.value) return;
28723
28765
  if (model.value == null) {
28724
- model.value = clamp(0, props.min, props.max);
28766
+ inputText.value = correctPrecision(clamp(0, props.min, props.max));
28725
28767
  return;
28726
28768
  }
28727
- const decimals = Math.max(modelDecimals.value, stepDecimals.value);
28769
+ let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step));
28770
+ if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision);
28728
28771
  if (increment) {
28729
- if (canIncrease.value) model.value = +(model.value + props.step).toFixed(decimals);
28772
+ if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision);
28730
28773
  } else {
28731
- if (canDecrease.value) model.value = +(model.value - props.step).toFixed(decimals);
28774
+ if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
28732
28775
  }
28733
28776
  }
28734
28777
  function onClickUp(e) {
@@ -28751,6 +28794,16 @@ const VNumberInput = genericComponent()({
28751
28794
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
28752
28795
  e.preventDefault();
28753
28796
  }
28797
+ if (props.precision == null) return;
28798
+
28799
+ // Ignore decimal digits above precision limit
28800
+ if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
28801
+ e.preventDefault();
28802
+ }
28803
+ // Ignore decimal separator when precision = 0
28804
+ if (props.precision === 0 && potentialNewInputVal.includes('.')) {
28805
+ e.preventDefault();
28806
+ }
28754
28807
  }
28755
28808
  async function onKeydown(e) {
28756
28809
  if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
@@ -28770,13 +28823,38 @@ const VNumberInput = genericComponent()({
28770
28823
  e.stopPropagation();
28771
28824
  }
28772
28825
  function clampModel() {
28826
+ if (controlsDisabled.value) return;
28773
28827
  if (!vTextFieldRef.value) return;
28774
- const inputText = vTextFieldRef.value.value;
28775
- if (inputText && !isNaN(+inputText)) {
28776
- model.value = clamp(+inputText, props.min, props.max);
28828
+ const actualText = vTextFieldRef.value.value;
28829
+ if (actualText && !isNaN(+actualText)) {
28830
+ inputText.value = correctPrecision(clamp(+actualText, props.min, props.max));
28777
28831
  } else {
28778
- model.value = null;
28832
+ inputText.value = null;
28833
+ }
28834
+ }
28835
+ function formatInputValue() {
28836
+ if (controlsDisabled.value) return;
28837
+ if (model.value === null || isNaN(model.value)) {
28838
+ inputText.value = null;
28839
+ return;
28840
+ }
28841
+ inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
28842
+ }
28843
+ function trimDecimalZeros() {
28844
+ if (controlsDisabled.value) return;
28845
+ if (model.value === null || isNaN(model.value)) {
28846
+ inputText.value = null;
28847
+ return;
28779
28848
  }
28849
+ inputText.value = model.value.toString();
28850
+ }
28851
+ function onFocus() {
28852
+ isFocused.value = true;
28853
+ trimDecimalZeros();
28854
+ }
28855
+ function onBlur() {
28856
+ isFocused.value = false;
28857
+ clampModel();
28780
28858
  }
28781
28859
  useRender(() => {
28782
28860
  const {
@@ -28855,20 +28933,21 @@ const VNumberInput = genericComponent()({
28855
28933
  "class": "v-number-input__control"
28856
28934
  }, [createVNode(VDivider, {
28857
28935
  "vertical": true
28858
- }, null), incrementControlNode()]) : props.reverse ? undefined : createVNode(Fragment, null, [dividerNode(), controlNode()]);
28936
+ }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : createVNode(Fragment, null, [dividerNode(), controlNode()]);
28859
28937
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
28860
28938
  const prependInnerControl = controlVariant.value === 'split' ? createVNode("div", {
28861
28939
  "class": "v-number-input__control"
28862
28940
  }, [decrementControlNode(), createVNode(VDivider, {
28863
28941
  "vertical": true
28864
- }, null)]) : props.reverse ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28942
+ }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28865
28943
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28866
28944
  return createVNode(VTextField, mergeProps({
28867
28945
  "ref": vTextFieldRef,
28868
- "modelValue": model.value,
28869
- "onUpdate:modelValue": $event => model.value = $event,
28946
+ "modelValue": inputText.value,
28947
+ "onUpdate:modelValue": $event => inputText.value = $event,
28870
28948
  "onBeforeinput": onBeforeinput,
28871
- "onChange": clampModel,
28949
+ "onFocus": onFocus,
28950
+ "onBlur": onBlur,
28872
28951
  "onKeydown": onKeydown,
28873
28952
  "class": ['v-number-input', {
28874
28953
  'v-number-input--default': controlVariant.value === 'default',
@@ -29754,7 +29833,7 @@ const VTimePickerControls = genericComponent()({
29754
29833
  const rangeHours24 = createRange(24);
29755
29834
  const rangeHours12am = createRange(12);
29756
29835
  const rangeHours12pm = rangeHours12am.map(v => v + 12);
29757
- const range60 = createRange(60);
29836
+ createRange(60);
29758
29837
  const selectingNames = {
29759
29838
  1: 'hour',
29760
29839
  2: 'minute',
@@ -29904,11 +29983,11 @@ const VTimePicker = genericComponent()({
29904
29983
  period.value = inputHour.value == null || inputHour.value < 12 ? 'am' : 'pm';
29905
29984
  }
29906
29985
  function firstAllowed(type, value) {
29907
- const allowedFn = type === 'hour' ? isAllowedHourCb.value : type === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value;
29986
+ const allowedFn = isAllowedHourCb.value ;
29908
29987
  if (!allowedFn) return value;
29909
29988
 
29910
29989
  // TODO: clean up (Note from V2 code)
29911
- const range = type === 'minute' ? range60 : type === 'second' ? range60 : isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29990
+ const range = isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29912
29991
  const first = range.find(v => allowedFn((v + value) % range.length + range[0]));
29913
29992
  return ((first || 0) + value) % range.length + range[0];
29914
29993
  }
@@ -30061,22 +30140,21 @@ const VTreeviewItem = genericComponent()({
30061
30140
  props: makeVTreeviewItemProps(),
30062
30141
  setup(props, _ref) {
30063
30142
  let {
30064
- attrs,
30065
- slots,
30066
- emit
30143
+ slots
30067
30144
  } = _ref;
30068
- const link = useLink(props, attrs);
30145
+ const visibleIds = inject$1(VTreeviewSymbol, {
30146
+ visibleIds: ref()
30147
+ }).visibleIds;
30069
30148
  const vListItemRef = ref();
30070
30149
  const isActivatableGroupActivator = computed(() => vListItemRef.value?.root.activatable.value && vListItemRef.value?.isGroupActivator);
30071
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
30150
+ const vListItemRefIsClickable = computed(() => vListItemRef.value?.link.isClickable.value || props.value != null && !!vListItemRef.value?.list);
30151
+ const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || vListItemRefIsClickable.value || isActivatableGroupActivator.value));
30152
+ const isFiltered = computed(() => visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id)));
30072
30153
  function activateGroupActivator(e) {
30073
30154
  if (isClickable.value && isActivatableGroupActivator.value) {
30074
30155
  vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
30075
30156
  }
30076
30157
  }
30077
- const visibleIds = inject$1(VTreeviewSymbol, {
30078
- visibleIds: ref()
30079
- }).visibleIds;
30080
30158
  useRender(() => {
30081
30159
  const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
30082
30160
  const hasPrepend = slots.prepend || props.toggleIcon;
@@ -30086,7 +30164,7 @@ const VTreeviewItem = genericComponent()({
30086
30164
  "active": vListItemRef.value?.isActivated,
30087
30165
  "class": ['v-treeview-item', {
30088
30166
  'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
30089
- 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id))
30167
+ 'v-treeview-item--filtered': isFiltered.value
30090
30168
  }, props.class],
30091
30169
  "ripple": false,
30092
30170
  "onClick": props.onClick ?? activateGroupActivator
@@ -30096,7 +30174,7 @@ const VTreeviewItem = genericComponent()({
30096
30174
  return createVNode(Fragment, null, [createVNode(VListItemAction, {
30097
30175
  "start": false
30098
30176
  }, {
30099
- default: () => [props.toggleIcon && createVNode(VBtn, {
30177
+ default: () => [props.toggleIcon ? createVNode(VBtn, {
30100
30178
  "density": "compact",
30101
30179
  "icon": props.toggleIcon,
30102
30180
  "loading": props.loading,
@@ -30110,7 +30188,9 @@ const VTreeviewItem = genericComponent()({
30110
30188
  "width": "2"
30111
30189
  }, null);
30112
30190
  }
30113
- })]
30191
+ }) : createVNode("div", {
30192
+ "class": "v-treeview-item__level"
30193
+ }, null)]
30114
30194
  }), slots.prepend?.(slotProps)]);
30115
30195
  } : undefined
30116
30196
  });
@@ -30142,7 +30222,8 @@ const makeVTreeviewChildrenProps = propsFactory({
30142
30222
  returnObject: Boolean,
30143
30223
  selectable: Boolean,
30144
30224
  selectedColor: String,
30145
- selectStrategy: [String, Function, Object]
30225
+ selectStrategy: [String, Function, Object],
30226
+ ...makeDensityProps()
30146
30227
  }, 'VTreeviewChildren');
30147
30228
  const VTreeviewChildren = genericComponent()({
30148
30229
  name: 'VTreeviewChildren',
@@ -30170,11 +30251,6 @@ const VTreeviewChildren = genericComponent()({
30170
30251
  }
30171
30252
  }
30172
30253
  return () => slots.default?.() ?? props.items?.map(item => {
30173
- if (item.type === 'divider') {
30174
- return slots.divider?.({
30175
- props: item.props
30176
- }) ?? createVNode(VDivider, item.props, null);
30177
- }
30178
30254
  const {
30179
30255
  children,
30180
30256
  props: itemProps
@@ -30187,6 +30263,7 @@ const VTreeviewChildren = genericComponent()({
30187
30263
  "disabled": props.disabled,
30188
30264
  "loading": loading,
30189
30265
  "color": props.selectedColor,
30266
+ "density": props.density,
30190
30267
  "indeterminate": slotProps.isIndeterminate,
30191
30268
  "indeterminateIcon": props.indeterminateIcon,
30192
30269
  "falseIcon": props.falseIcon,
@@ -30263,6 +30340,7 @@ function flatten(items) {
30263
30340
  return flat;
30264
30341
  }
30265
30342
  const makeVTreeviewProps = propsFactory({
30343
+ fluid: Boolean,
30266
30344
  openAll: Boolean,
30267
30345
  search: String,
30268
30346
  ...makeFilterProps({
@@ -30273,7 +30351,7 @@ const makeVTreeviewProps = propsFactory({
30273
30351
  collapseIcon: '$treeviewCollapse',
30274
30352
  expandIcon: '$treeviewExpand',
30275
30353
  slim: true
30276
- }), ['nav', 'openStrategy']),
30354
+ }), ['itemType', 'nav', 'openStrategy']),
30277
30355
  modelValue: {
30278
30356
  type: Array,
30279
30357
  default: () => []
@@ -30376,7 +30454,9 @@ const VTreeview = genericComponent()({
30376
30454
  return createVNode(VList, mergeProps({
30377
30455
  "ref": vListRef
30378
30456
  }, listProps, {
30379
- "class": ['v-treeview', props.class],
30457
+ "class": ['v-treeview', {
30458
+ 'v-treeview--fluid': props.fluid
30459
+ }, props.class],
30380
30460
  "open-strategy": "multiple",
30381
30461
  "style": props.style,
30382
30462
  "opened": opened.value,
@@ -30386,6 +30466,7 @@ const VTreeview = genericComponent()({
30386
30466
  "onUpdate:selected": $event => selected.value = $event
30387
30467
  }), {
30388
30468
  default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
30469
+ "density": props.density,
30389
30470
  "returnObject": props.returnObject,
30390
30471
  "items": items.value
30391
30472
  }), slots)]
@@ -30893,7 +30974,7 @@ function createVuetify$1() {
30893
30974
  goTo
30894
30975
  };
30895
30976
  }
30896
- const version$1 = "3.7.12";
30977
+ const version$1 = "3.7.14";
30897
30978
  createVuetify$1.version = version$1;
30898
30979
 
30899
30980
  // Vue's inject() can only be used in setup
@@ -31146,7 +31227,7 @@ var index = /*#__PURE__*/Object.freeze({
31146
31227
 
31147
31228
  /* eslint-disable local-rules/sort-imports */
31148
31229
 
31149
- const version = "3.7.12";
31230
+ const version = "3.7.14";
31150
31231
 
31151
31232
  /* eslint-disable local-rules/sort-imports */
31152
31233