vuetify 3.7.11 → 3.7.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/dist/json/attributes.json +2699 -2703
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +166 -166
  4. package/dist/json/tags.json +3 -4
  5. package/dist/json/web-types.json +5312 -5321
  6. package/dist/vuetify-labs.css +3272 -3266
  7. package/dist/vuetify-labs.d.ts +296 -326
  8. package/dist/vuetify-labs.esm.js +301 -159
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +300 -158
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +2292 -2294
  13. package/dist/vuetify.d.ts +258 -297
  14. package/dist/vuetify.esm.js +177 -99
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +176 -98
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +266 -252
  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 +3 -3
  32. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  33. package/lib/components/VAutocomplete/index.d.mts +29 -51
  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 +4 -4
  69. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  70. package/lib/components/VCombobox/index.d.mts +29 -51
  71. package/lib/components/VConfirmEdit/VConfirmEdit.mjs +1 -1
  72. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +5 -5
  73. package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs.map +1 -1
  74. package/lib/components/VConfirmEdit/index.d.mts +1 -1
  75. package/lib/components/VCounter/VCounter.mjs +1 -1
  76. package/lib/components/VDataIterator/index.d.mts +1 -1
  77. package/lib/components/VDataTable/VDataTable.mjs +1 -1
  78. package/lib/components/VDataTable/VDataTableFooter.mjs +1 -1
  79. package/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs +1 -1
  80. package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
  81. package/lib/components/VDataTable/VDataTableRow.mjs +1 -1
  82. package/lib/components/VDataTable/VDataTableRows.mjs +1 -1
  83. package/lib/components/VDataTable/VDataTableServer.mjs +1 -1
  84. package/lib/components/VDataTable/VDataTableVirtual.mjs +1 -1
  85. package/lib/components/VDataTable/composables/sort.mjs +12 -8
  86. package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
  87. package/lib/components/VDataTable/index.d.mts +1 -1
  88. package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
  89. package/lib/components/VDatePicker/VDatePickerControls.mjs +1 -1
  90. package/lib/components/VDatePicker/VDatePickerControls.mjs.map +1 -1
  91. package/lib/components/VDatePicker/VDatePickerMonth.mjs +3 -3
  92. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  93. package/lib/components/VDatePicker/VDatePickerMonths.mjs +1 -1
  94. package/lib/components/VDatePicker/VDatePickerYears.mjs +1 -1
  95. package/lib/components/VDatePicker/index.d.mts +38 -38
  96. package/lib/components/VDialog/VDialog.mjs +1 -1
  97. package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs +1 -1
  98. package/lib/components/VDialog/index.d.mts +3 -3
  99. package/lib/components/VEmptyState/VEmptyState.mjs +1 -1
  100. package/lib/components/VEmptyState/index.d.mts +1 -1
  101. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +1 -1
  102. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
  103. package/lib/components/VExpansionPanel/index.d.mts +1 -1
  104. package/lib/components/VFab/VFab.mjs +1 -1
  105. package/lib/components/VFab/index.d.mts +5 -5
  106. package/lib/components/VField/VField.mjs +1 -1
  107. package/lib/components/VField/VFieldLabel.mjs +1 -1
  108. package/lib/components/VField/index.d.mts +1 -1
  109. package/lib/components/VFileInput/VFileInput.mjs +2 -3
  110. package/lib/components/VFileInput/VFileInput.mjs.map +1 -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 +3 -6
  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 +24 -21
  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.css +2 -1
  141. package/lib/components/VOverlay/VOverlay.mjs +1 -1
  142. package/lib/components/VOverlay/VOverlay.sass +2 -1
  143. package/lib/components/VOverlay/_variables.scss +1 -1
  144. package/lib/components/VPagination/VPagination.mjs +1 -1
  145. package/lib/components/VPagination/index.d.mts +1 -1
  146. package/lib/components/VParallax/VParallax.mjs +1 -1
  147. package/lib/components/VRadio/VRadio.mjs +1 -1
  148. package/lib/components/VRadio/index.d.mts +1 -1
  149. package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -1
  150. package/lib/components/VRadioGroup/index.d.mts +1 -1
  151. package/lib/components/VRangeSlider/VRangeSlider.mjs +1 -1
  152. package/lib/components/VRating/VRating.mjs +1 -1
  153. package/lib/components/VRating/index.d.mts +1 -1
  154. package/lib/components/VSelect/VSelect.mjs +5 -5
  155. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  156. package/lib/components/VSelect/index.d.mts +29 -51
  157. package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -1
  158. package/lib/components/VSelectionControl/index.d.mts +1 -1
  159. package/lib/components/VSelectionControlGroup/index.d.mts +1 -1
  160. package/lib/components/VSheet/VSheet.mjs +1 -1
  161. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +1 -1
  162. package/lib/components/VSlideGroup/index.d.mts +1 -1
  163. package/lib/components/VSlider/VSlider.mjs +1 -1
  164. package/lib/components/VSlider/VSliderThumb.mjs +1 -1
  165. package/lib/components/VSlider/slider.mjs +25 -12
  166. package/lib/components/VSlider/slider.mjs.map +1 -1
  167. package/lib/components/VSnackbar/VSnackbar.mjs +1 -1
  168. package/lib/components/VSnackbar/index.d.mts +3 -3
  169. package/lib/components/VSparkline/VBarline.mjs +1 -2
  170. package/lib/components/VSparkline/VBarline.mjs.map +1 -1
  171. package/lib/components/VSparkline/VSparkline.mjs +1 -1
  172. package/lib/components/VSparkline/VTrendline.mjs +1 -2
  173. package/lib/components/VSparkline/VTrendline.mjs.map +1 -1
  174. package/lib/components/VSpeedDial/VSpeedDial.mjs +1 -1
  175. package/lib/components/VStepper/VStepper.mjs +3 -3
  176. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  177. package/lib/components/VStepper/VStepperItem.mjs +1 -1
  178. package/lib/components/VStepper/VStepperWindow.mjs +1 -1
  179. package/lib/components/VStepper/VStepperWindowItem.mjs +1 -1
  180. package/lib/components/VStepper/index.d.mts +1 -1
  181. package/lib/components/VSwitch/VSwitch.mjs +1 -1
  182. package/lib/components/VSwitch/index.d.mts +1 -1
  183. package/lib/components/VSystemBar/VSystemBar.mjs +1 -1
  184. package/lib/components/VTabs/VTab.mjs +1 -1
  185. package/lib/components/VTabs/VTabs.mjs +1 -1
  186. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  187. package/lib/components/VTabs/VTabsWindow.mjs +1 -1
  188. package/lib/components/VTabs/VTabsWindowItem.mjs +1 -1
  189. package/lib/components/VTabs/index.d.mts +21 -21
  190. package/lib/components/VTextField/VTextField.mjs +1 -1
  191. package/lib/components/VTextField/index.d.mts +7 -7
  192. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  193. package/lib/components/VTextarea/index.d.mts +4 -4
  194. package/lib/components/VTimeline/VTimeline.mjs +3 -3
  195. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  196. package/lib/components/VTimeline/VTimelineDivider.mjs +1 -1
  197. package/lib/components/VTimeline/VTimelineItem.mjs +1 -1
  198. package/lib/components/VTimeline/index.d.mts +1 -1
  199. package/lib/components/VToolbar/VToolbar.mjs +1 -1
  200. package/lib/components/VTooltip/VTooltip.mjs +1 -1
  201. package/lib/components/VTooltip/index.d.mts +3 -3
  202. package/lib/components/VValidation/index.d.mts +1 -1
  203. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +1 -1
  204. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +1 -1
  205. package/lib/components/VVirtualScroll/index.d.mts +1 -1
  206. package/lib/components/VWindow/VWindow.mjs +1 -1
  207. package/lib/components/VWindow/VWindowItem.mjs +1 -1
  208. package/lib/components/VWindow/index.d.mts +1 -1
  209. package/lib/components/index.d.mts +198 -237
  210. package/lib/components/transitions/dialog-transition.mjs +1 -2
  211. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  212. package/lib/composables/calendar.mjs +4 -1
  213. package/lib/composables/calendar.mjs.map +1 -1
  214. package/lib/composables/icons.mjs +1 -1
  215. package/lib/composables/list-items.mjs +69 -17
  216. package/lib/composables/list-items.mjs.map +1 -1
  217. package/lib/composables/nested/nested.mjs +16 -1
  218. package/lib/composables/nested/nested.mjs.map +1 -1
  219. package/lib/composables/nested/selectStrategies.mjs +6 -7
  220. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  221. package/lib/composables/variant.mjs +1 -1
  222. package/lib/directives/ripple/index.mjs +7 -5
  223. package/lib/directives/ripple/index.mjs.map +1 -1
  224. package/lib/entry-bundler.mjs +1 -1
  225. package/lib/framework.mjs +1 -1
  226. package/lib/iconsets/fa-svg.d.mts +1 -1
  227. package/lib/iconsets/fa.d.mts +1 -1
  228. package/lib/iconsets/fa4.d.mts +1 -1
  229. package/lib/iconsets/md.d.mts +1 -1
  230. package/lib/iconsets/mdi-svg.d.mts +1 -1
  231. package/lib/iconsets/mdi.d.mts +1 -1
  232. package/lib/index.d.mts +61 -61
  233. package/lib/labs/VCalendar/VCalendar.mjs +1 -1
  234. package/lib/labs/VCalendar/VCalendarDay.mjs +1 -1
  235. package/lib/labs/VCalendar/index.d.mts +8 -2
  236. package/lib/labs/VDateInput/VDateInput.mjs +21 -10
  237. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  238. package/lib/labs/VDateInput/index.d.mts +19 -19
  239. package/lib/labs/VFileUpload/VFileUpload.mjs +3 -3
  240. package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -1
  241. package/lib/labs/VFileUpload/VFileUploadItem.mjs +1 -1
  242. package/lib/labs/VFileUpload/index.d.mts +5 -5
  243. package/lib/labs/VNumberInput/VNumberInput.css +10 -2
  244. package/lib/labs/VNumberInput/VNumberInput.mjs +94 -36
  245. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  246. package/lib/labs/VNumberInput/VNumberInput.sass +12 -2
  247. package/lib/labs/VNumberInput/index.d.mts +59 -32
  248. package/lib/labs/VPicker/VPicker.mjs +1 -1
  249. package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +1 -1
  250. package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
  251. package/lib/labs/VStepperVertical/VStepperVertical.mjs +1 -1
  252. package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +1 -1
  253. package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +1 -1
  254. package/lib/labs/VStepperVertical/index.d.mts +1 -1
  255. package/lib/labs/VTimePicker/VTimePicker.mjs +1 -1
  256. package/lib/labs/VTimePicker/VTimePickerControls.mjs +1 -1
  257. package/lib/labs/VTreeview/VTreeview.mjs +2 -2
  258. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  259. package/lib/labs/VTreeview/VTreeviewChildren.mjs +2 -8
  260. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  261. package/lib/labs/VTreeview/VTreeviewGroup.mjs +1 -1
  262. package/lib/labs/VTreeview/VTreeviewItem.mjs +10 -12
  263. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  264. package/lib/labs/VTreeview/index.d.mts +12 -36
  265. package/lib/labs/components.d.mts +103 -94
  266. package/lib/locale/adapters/vue-i18n.mjs +0 -1
  267. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  268. package/lib/util/helpers.mjs +6 -9
  269. package/lib/util/helpers.mjs.map +1 -1
  270. package/package.json +17 -16
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.7.11
2
+ * Vuetify v3.7.13
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'];
@@ -577,6 +571,9 @@ function checkPrintable(e) {
577
571
  const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
578
572
  return isPrintableChar && noModifier;
579
573
  }
574
+ function isPrimitive(value) {
575
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';
576
+ }
580
577
 
581
578
  // Utilities
582
579
  const block = ['top', 'bottom'];
@@ -874,7 +871,7 @@ function APCAcontrast(text, background) {
874
871
  // WoB should always return negative value.
875
872
 
876
873
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
877
- 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;
878
875
  }
879
876
  return outputContrast * 100;
880
877
  }
@@ -914,7 +911,7 @@ function toXYZ$1(lab) {
914
911
  // Types
915
912
 
916
913
  // For converting XYZ to sRGB
917
- 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]];
918
915
 
919
916
  // Forward gamma adjust
920
917
  const srgbForwardTransform = C => C <= 0.0031308 ? C * 12.92 : 1.055 * C ** (1 / 2.4) - 0.055;
@@ -1262,7 +1259,7 @@ function getForeground(color) {
1262
1259
  function getCurrentInstance(name, message) {
1263
1260
  const vm = getCurrentInstance$1();
1264
1261
  if (!vm) {
1265
- 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'}`);
1266
1263
  }
1267
1264
  return vm;
1268
1265
  }
@@ -2815,6 +2812,8 @@ function ExpandTransitionGenerator () {
2815
2812
  }
2816
2813
  }
2817
2814
 
2815
+ // Utilities
2816
+
2818
2817
  // Types
2819
2818
 
2820
2819
  const makeVDialogTransitionProps = propsFactory({
@@ -4717,7 +4716,6 @@ function useIntersectionObserver(callback, options) {
4717
4716
  const isIntersecting = shallowRef(false);
4718
4717
  if (SUPPORTS_INTERSECTION) {
4719
4718
  const observer = new IntersectionObserver(entries => {
4720
- callback?.(entries, observer);
4721
4719
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4722
4720
  }, options);
4723
4721
  onBeforeUnmount(() => {
@@ -5345,11 +5343,13 @@ const ripples = {
5345
5343
  animation.classList.add('v-ripple__animation--visible');
5346
5344
  transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
5347
5345
  animation.dataset.activated = String(performance.now());
5348
- setTimeout(() => {
5349
- animation.classList.remove('v-ripple__animation--enter');
5350
- animation.classList.add('v-ripple__animation--in');
5351
- transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
5352
- }, 0);
5346
+ requestAnimationFrame(() => {
5347
+ requestAnimationFrame(() => {
5348
+ animation.classList.remove('v-ripple__animation--enter');
5349
+ animation.classList.add('v-ripple__animation--in');
5350
+ transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
5351
+ });
5352
+ });
5353
5353
  },
5354
5354
  hide(el) {
5355
5355
  if (!el?._ripple?.enabled) return;
@@ -6887,7 +6887,7 @@ const makeVInputProps = propsFactory({
6887
6887
  'onClick:append': EventProp(),
6888
6888
  ...makeComponentProps(),
6889
6889
  ...makeDensityProps(),
6890
- ...only(makeDimensionProps(), ['maxWidth', 'minWidth', 'width']),
6890
+ ...pick(makeDimensionProps(), ['maxWidth', 'minWidth', 'width']),
6891
6891
  ...makeThemeProps(),
6892
6892
  ...makeValidationProps()
6893
6893
  }, 'VInput');
@@ -8344,12 +8344,12 @@ const independentSelectStrategy = mandatory => {
8344
8344
  return selected;
8345
8345
  },
8346
8346
  in: (v, children, parents) => {
8347
- let map = new Map();
8347
+ const map = new Map();
8348
8348
  for (const id of v || []) {
8349
- map = strategy.select({
8349
+ strategy.select({
8350
8350
  id,
8351
8351
  value: true,
8352
- selected: new Map(map),
8352
+ selected: map,
8353
8353
  children,
8354
8354
  parents
8355
8355
  });
@@ -8384,11 +8384,10 @@ const independentSingleSelectStrategy = mandatory => {
8384
8384
  });
8385
8385
  },
8386
8386
  in: (v, children, parents) => {
8387
- let map = new Map();
8388
8387
  if (v?.length) {
8389
- map = parentStrategy.in(v.slice(0, 1), children, parents);
8388
+ return parentStrategy.in(v.slice(0, 1), children, parents);
8390
8389
  }
8391
- return map;
8390
+ return new Map();
8392
8391
  },
8393
8392
  out: (v, children, parents) => {
8394
8393
  return parentStrategy.out(v, children, parents);
@@ -8491,7 +8490,7 @@ const classicSelectStrategy = mandatory => {
8491
8490
  map = strategy.select({
8492
8491
  id,
8493
8492
  value: true,
8494
- selected: new Map(map),
8493
+ selected: map,
8495
8494
  children,
8496
8495
  parents
8497
8496
  });
@@ -8716,7 +8715,22 @@ const useNested = props => {
8716
8715
  parents: parents.value,
8717
8716
  event
8718
8717
  });
8719
- 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
+ }
8720
8734
  },
8721
8735
  children,
8722
8736
  parents,
@@ -9163,7 +9177,8 @@ const VListItem = genericComponent()({
9163
9177
  list,
9164
9178
  select,
9165
9179
  root,
9166
- id: uid
9180
+ id: uid,
9181
+ link
9167
9182
  };
9168
9183
  }
9169
9184
  });
@@ -9375,10 +9390,7 @@ const makeItemsProps = propsFactory({
9375
9390
  default: 'props'
9376
9391
  },
9377
9392
  returnObject: Boolean,
9378
- valueComparator: {
9379
- type: Function,
9380
- default: deepEqual
9381
- }
9393
+ valueComparator: Function
9382
9394
  }, 'list-items');
9383
9395
  function transformItem$3(props, item) {
9384
9396
  const title = getPropertyFromItem(item, props.itemTitle, item);
@@ -9399,29 +9411,84 @@ function transformItem$3(props, item) {
9399
9411
  };
9400
9412
  }
9401
9413
  function transformItems$3(props, items) {
9414
+ const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
9402
9415
  const array = [];
9403
9416
  for (const item of items) {
9404
- array.push(transformItem$3(props, item));
9417
+ array.push(transformItem$3(_props, item));
9405
9418
  }
9406
9419
  return array;
9407
9420
  }
9408
9421
  function useItems(props) {
9409
9422
  const items = computed(() => transformItems$3(props, props.items));
9410
9423
  const hasNullItem = computed(() => items.value.some(item => item.value === null));
9424
+ const itemsMap = shallowRef(new Map());
9425
+ const keylessItems = shallowRef([]);
9426
+ watchEffect(() => {
9427
+ const _items = items.value;
9428
+ const map = new Map();
9429
+ const keyless = [];
9430
+ for (let i = 0; i < _items.length; i++) {
9431
+ const item = _items[i];
9432
+ if (isPrimitive(item.value) || item.value === null) {
9433
+ let values = map.get(item.value);
9434
+ if (!values) {
9435
+ values = [];
9436
+ map.set(item.value, values);
9437
+ }
9438
+ values.push(item);
9439
+ } else {
9440
+ keyless.push(item);
9441
+ }
9442
+ }
9443
+ itemsMap.value = map;
9444
+ keylessItems.value = keyless;
9445
+ });
9411
9446
  function transformIn(value) {
9412
- if (!hasNullItem.value) {
9447
+ // Cache unrefed values outside the loop,
9448
+ // proxy getters can be slow when you call them a billion times
9449
+ const _items = itemsMap.value;
9450
+ const _allItems = items.value;
9451
+ const _keylessItems = keylessItems.value;
9452
+ const _hasNullItem = hasNullItem.value;
9453
+ const _returnObject = props.returnObject;
9454
+ const hasValueComparator = !!props.valueComparator;
9455
+ const valueComparator = props.valueComparator || deepEqual;
9456
+ const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
9457
+ const returnValue = [];
9458
+ main: for (const v of value) {
9413
9459
  // When the model value is null, return an InternalItem
9414
9460
  // based on null only if null is one of the items
9415
- value = value.filter(v => v !== null);
9416
- }
9417
- return value.map(v => {
9418
- if (props.returnObject && typeof v === 'string') {
9419
- // String model value means value is a custom input value from combobox
9420
- // Don't look up existing items if the model value is a string
9421
- return transformItem$3(props, v);
9461
+ if (!_hasNullItem && v === null) continue;
9462
+
9463
+ // String model value means value is a custom input value from combobox
9464
+ // Don't look up existing items if the model value is a string
9465
+ if (_returnObject && typeof v === 'string') {
9466
+ returnValue.push(transformItem$3(_props, v));
9467
+ continue;
9422
9468
  }
9423
- return items.value.find(item => props.valueComparator(v, item.value)) || transformItem$3(props, v);
9424
- });
9469
+
9470
+ // Fast path, items with primitive values and no
9471
+ // custom valueComparator can use a constant-time
9472
+ // map lookup instead of searching the items array
9473
+ const fastItems = _items.get(v);
9474
+
9475
+ // Slow path, always use valueComparator.
9476
+ // This is O(n^2) so we really don't want to
9477
+ // do it for more than a couple hundred items.
9478
+ if (hasValueComparator || !fastItems) {
9479
+ for (const item of hasValueComparator ? _allItems : _keylessItems) {
9480
+ if (valueComparator(v, item.value)) {
9481
+ returnValue.push(item);
9482
+ continue main;
9483
+ }
9484
+ }
9485
+ // Not an existing item, construct it from the model (#4000)
9486
+ returnValue.push(transformItem$3(_props, v));
9487
+ continue;
9488
+ }
9489
+ returnValue.push(...fastItems);
9490
+ }
9491
+ return returnValue;
9425
9492
  }
9426
9493
  function transformOut(value) {
9427
9494
  return props.returnObject ? value.map(_ref => {
@@ -9445,9 +9512,6 @@ function useItems(props) {
9445
9512
 
9446
9513
  // Types
9447
9514
 
9448
- function isPrimitive(value) {
9449
- return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
9450
- }
9451
9515
  function transformItem$2(props, item) {
9452
9516
  const type = getPropertyFromItem(item, props.itemType, 'item');
9453
9517
  const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
@@ -9637,7 +9701,7 @@ const VList = genericComponent()({
9637
9701
  'v-list--slim': props.slim
9638
9702
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
9639
9703
  "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
9640
- "tabindex": props.disabled || isFocused.value ? -1 : 0,
9704
+ "tabindex": props.disabled ? -1 : 0,
9641
9705
  "role": "listbox",
9642
9706
  "aria-activedescendant": undefined,
9643
9707
  "onFocusin": onFocusin,
@@ -12496,7 +12560,7 @@ const VSelect = genericComponent()({
12496
12560
  let keyboardLookupLastTime;
12497
12561
  const displayItems = computed(() => {
12498
12562
  if (props.hideSelected) {
12499
- return items.value.filter(item => !model.value.some(s => props.valueComparator(s, item)));
12563
+ return items.value.filter(item => !model.value.some(s => (props.valueComparator || deepEqual)(s, item)));
12500
12564
  }
12501
12565
  return items.value;
12502
12566
  });
@@ -12568,7 +12632,7 @@ const VSelect = genericComponent()({
12568
12632
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12569
12633
  if (item.props.disabled) return;
12570
12634
  if (props.multiple) {
12571
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12635
+ const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
12572
12636
  const add = set == null ? !~index : set;
12573
12637
  if (~index) {
12574
12638
  const value = add ? [...model.value, item] : [...model.value];
@@ -12615,7 +12679,7 @@ const VSelect = genericComponent()({
12615
12679
  }
12616
12680
  watch(menu, () => {
12617
12681
  if (!props.hideSelected && menu.value && model.value.length) {
12618
- const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
12682
+ const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
12619
12683
  IN_BROWSER && window.requestAnimationFrame(() => {
12620
12684
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
12621
12685
  });
@@ -13147,7 +13211,7 @@ const VAutocomplete = genericComponent()({
13147
13211
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
13148
13212
  if (!item || item.props.disabled) return;
13149
13213
  if (props.multiple) {
13150
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
13214
+ const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
13151
13215
  const add = set == null ? !~index : set;
13152
13216
  if (~index) {
13153
13217
  const value = add ? [...model.value, item] : [...model.value];
@@ -15536,6 +15600,8 @@ const useSlider = _ref => {
15536
15600
  const trackContainerRef = ref();
15537
15601
  const activeThumbRef = ref();
15538
15602
  function parseMouseMove(e) {
15603
+ const el = trackContainerRef.value?.$el;
15604
+ if (!el) return;
15539
15605
  const vertical = props.direction === 'vertical';
15540
15606
  const start = vertical ? 'top' : 'left';
15541
15607
  const length = vertical ? 'height' : 'width';
@@ -15543,7 +15609,7 @@ const useSlider = _ref => {
15543
15609
  const {
15544
15610
  [start]: trackStart,
15545
15611
  [length]: trackLength
15546
- } = trackContainerRef.value?.$el.getBoundingClientRect();
15612
+ } = el.getBoundingClientRect();
15547
15613
  const clickOffset = getPosition(e, position);
15548
15614
 
15549
15615
  // It is possible for left to be NaN, force to number
@@ -15552,13 +15618,17 @@ const useSlider = _ref => {
15552
15618
  return roundValue(min.value + clickPos * (max.value - min.value));
15553
15619
  }
15554
15620
  const handleStop = e => {
15555
- onSliderEnd({
15556
- value: parseMouseMove(e)
15557
- });
15621
+ const value = parseMouseMove(e);
15622
+ if (value != null) {
15623
+ onSliderEnd({
15624
+ value
15625
+ });
15626
+ }
15558
15627
  mousePressed.value = false;
15559
15628
  startOffset.value = 0;
15560
15629
  };
15561
15630
  const handleStart = e => {
15631
+ const value = parseMouseMove(e);
15562
15632
  activeThumbRef.value = getActiveThumb(e);
15563
15633
  if (!activeThumbRef.value) return;
15564
15634
  mousePressed.value = true;
@@ -15566,13 +15636,17 @@ const useSlider = _ref => {
15566
15636
  startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
15567
15637
  } else {
15568
15638
  startOffset.value = 0;
15569
- onSliderMove({
15570
- value: parseMouseMove(e)
15639
+ if (value != null) {
15640
+ onSliderMove({
15641
+ value
15642
+ });
15643
+ }
15644
+ }
15645
+ if (value != null) {
15646
+ onSliderStart({
15647
+ value
15571
15648
  });
15572
15649
  }
15573
- onSliderStart({
15574
- value: parseMouseMove(e)
15575
- });
15576
15650
  nextTick(() => activeThumbRef.value?.focus());
15577
15651
  };
15578
15652
  const moveListenerOptions = {
@@ -15580,9 +15654,12 @@ const useSlider = _ref => {
15580
15654
  capture: true
15581
15655
  };
15582
15656
  function onMouseMove(e) {
15583
- onSliderMove({
15584
- value: parseMouseMove(e)
15585
- });
15657
+ const value = parseMouseMove(e);
15658
+ if (value != null) {
15659
+ onSliderMove({
15660
+ value
15661
+ });
15662
+ }
15586
15663
  }
15587
15664
  function onSliderMouseUp(e) {
15588
15665
  e.stopPropagation();
@@ -17021,7 +17098,7 @@ const VCombobox = genericComponent()({
17021
17098
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
17022
17099
  if (!item || item.props.disabled) return;
17023
17100
  if (props.multiple) {
17024
- const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
17101
+ const index = model.value.findIndex(selection => (props.valueComparator || deepEqual)(selection.value, item.value));
17025
17102
  const add = set == null ? !~index : set;
17026
17103
  if (~index) {
17027
17104
  const value = add ? [...model.value, item] : [...model.value];
@@ -17081,7 +17158,7 @@ const VCombobox = genericComponent()({
17081
17158
  });
17082
17159
  watch(menu, () => {
17083
17160
  if (!props.hideSelected && menu.value && model.value.length) {
17084
- const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
17161
+ const index = displayItems.value.findIndex(item => model.value.some(s => (props.valueComparator || deepEqual)(s.value, item.value)));
17085
17162
  IN_BROWSER && window.requestAnimationFrame(() => {
17086
17163
  index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
17087
17164
  });
@@ -18298,13 +18375,7 @@ function provideGroupBy(options) {
18298
18375
  return [...new Set(arr)];
18299
18376
  }
18300
18377
  return dive({
18301
- type: 'group',
18302
- items,
18303
- id: 'dummy',
18304
- key: 'dummy',
18305
- value: 'dummy',
18306
- depth: 0
18307
- });
18378
+ items});
18308
18379
  }
18309
18380
 
18310
18381
  // onBeforeMount(() => {
@@ -18748,15 +18819,19 @@ function provideSort(options) {
18748
18819
  })) ?? [];
18749
18820
  const item = newSortBy.find(x => x.key === column.key);
18750
18821
  if (!item) {
18751
- if (multiSort.value) newSortBy = [...newSortBy, {
18752
- key: column.key,
18753
- order: 'asc'
18754
- }];else newSortBy = [{
18755
- key: column.key,
18756
- order: 'asc'
18757
- }];
18822
+ if (multiSort.value) {
18823
+ newSortBy.push({
18824
+ key: column.key,
18825
+ order: 'asc'
18826
+ });
18827
+ } else {
18828
+ newSortBy = [{
18829
+ key: column.key,
18830
+ order: 'asc'
18831
+ }];
18832
+ }
18758
18833
  } else if (item.order === 'desc') {
18759
- if (mustSort.value) {
18834
+ if (mustSort.value && newSortBy.length === 1) {
18760
18835
  item.order = 'asc';
18761
18836
  } else {
18762
18837
  newSortBy = newSortBy.filter(x => x.key !== column.key);
@@ -21381,7 +21456,7 @@ const makeVDatePickerControlsProps = propsFactory({
21381
21456
  },
21382
21457
  disabled: {
21383
21458
  type: [Boolean, String, Array],
21384
- default: false
21459
+ default: null
21385
21460
  },
21386
21461
  nextIcon: {
21387
21462
  type: IconValue,
@@ -21563,7 +21638,10 @@ const VDatePickerHeader = genericComponent()({
21563
21638
  // Composables
21564
21639
  const makeCalendarProps = propsFactory({
21565
21640
  allowedDates: [Array, Function],
21566
- disabled: Boolean,
21641
+ disabled: {
21642
+ type: Boolean,
21643
+ default: null
21644
+ },
21567
21645
  displayValue: null,
21568
21646
  modelValue: Array,
21569
21647
  month: [Number, String],
@@ -21715,7 +21793,7 @@ const makeVDatePickerMonthProps = propsFactory({
21715
21793
  type: String,
21716
21794
  default: 'picker-reverse-transition'
21717
21795
  },
21718
- ...makeCalendarProps()
21796
+ ...omit(makeCalendarProps(), ['displayValue'])
21719
21797
  }, 'VDatePickerMonth');
21720
21798
  const VDatePickerMonth = genericComponent()({
21721
21799
  name: 'VDatePickerMonth',
@@ -22992,8 +23070,7 @@ const VFileInput = genericComponent()({
22992
23070
  const fieldProps = filterFieldProps(props);
22993
23071
  return createVNode(VInput, mergeProps({
22994
23072
  "ref": vInputRef,
22995
- "modelValue": model.value,
22996
- "onUpdate:modelValue": $event => model.value = $event,
23073
+ "modelValue": props.multiple ? model.value : model.value[0],
22997
23074
  "class": ['v-file-input', {
22998
23075
  'v-file-input--chips': !!props.chips,
22999
23076
  'v-file-input--hide': props.hideInput,
@@ -23832,7 +23909,7 @@ const HISTORY = 20; // number of samples to keep
23832
23909
  /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
23833
23910
  function kineticEnergyToVelocity(work) {
23834
23911
  const sqrt2 = 1.41421356237;
23835
- return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23912
+ return (work < 0 ? -1 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
23836
23913
  }
23837
23914
 
23838
23915
  /**
@@ -24214,7 +24291,6 @@ const VNavigationDrawer = genericComponent()({
24214
24291
  const size = isTemporary.value ? 0 : props.rail && props.expandOnHover ? Number(props.railWidth) : width.value;
24215
24292
  return isDragging.value ? size * dragProgress.value : size;
24216
24293
  });
24217
- const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);
24218
24294
  const {
24219
24295
  layoutItemStyles,
24220
24296
  layoutItemScrimStyles
@@ -24223,7 +24299,7 @@ const VNavigationDrawer = genericComponent()({
24223
24299
  order: computed(() => parseInt(props.order, 10)),
24224
24300
  position: location,
24225
24301
  layoutSize,
24226
- elementSize,
24302
+ elementSize: width,
24227
24303
  active: computed(() => isActive.value || isDragging.value),
24228
24304
  disableTransitions: computed(() => isDragging.value),
24229
24305
  absolute: computed(() =>
@@ -24269,9 +24345,7 @@ const VNavigationDrawer = genericComponent()({
24269
24345
  'v-navigation-drawer--active': isActive.value,
24270
24346
  'v-navigation-drawer--sticky': isSticky.value
24271
24347
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
24272
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style, ['top', 'bottom'].includes(location.value) ? {
24273
- height: 'auto'
24274
- } : {}]
24348
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
24275
24349
  }, scopeId, attrs), {
24276
24350
  default: () => [hasImage && createVNode("div", {
24277
24351
  "key": "image",
@@ -24358,7 +24432,7 @@ const makeVOtpInputProps = propsFactory({
24358
24432
  },
24359
24433
  ...makeDimensionProps(),
24360
24434
  ...makeFocusProps(),
24361
- ...only(makeVFieldProps({
24435
+ ...pick(makeVFieldProps({
24362
24436
  variant: 'outlined'
24363
24437
  }), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'rounded', 'style', 'theme', 'variant'])
24364
24438
  }, 'VOtpInput');
@@ -25591,6 +25665,8 @@ const makeLineProps = propsFactory({
25591
25665
  }
25592
25666
  }, 'Line');
25593
25667
 
25668
+ // Utilities
25669
+
25594
25670
  // Types
25595
25671
 
25596
25672
  const makeVBarlineProps = propsFactory({
@@ -25788,6 +25864,8 @@ function moveTo(to, from, radius) {
25788
25864
  };
25789
25865
  }
25790
25866
 
25867
+ // Utilities
25868
+
25791
25869
  // Types
25792
25870
 
25793
25871
  const makeVTrendlineProps = propsFactory({
@@ -26342,7 +26420,7 @@ const makeVStepperProps = propsFactory({
26342
26420
  selectedClass: 'v-stepper-item--selected'
26343
26421
  }),
26344
26422
  ...makeVSheetProps(),
26345
- ...only(makeVStepperActionsProps(), ['prevText', 'nextText'])
26423
+ ...pick(makeVStepperActionsProps(), ['prevText', 'nextText'])
26346
26424
  }, 'VStepper');
26347
26425
  const VStepper = genericComponent()({
26348
26426
  name: 'VStepper',
@@ -27424,7 +27502,7 @@ const makeVTimelineProps = propsFactory({
27424
27502
  type: String,
27425
27503
  validator: v => ['start', 'end', 'both'].includes(v)
27426
27504
  },
27427
- ...only(makeVTimelineItemProps({
27505
+ ...pick(makeVTimelineItemProps({
27428
27506
  lineInset: 0
27429
27507
  }), ['dotColor', 'fillDot', 'hideOpposite', 'iconColor', 'lineInset', 'size']),
27430
27508
  ...makeComponentProps(),
@@ -27730,6 +27808,10 @@ const VCalendarInterval = genericComponent()({
27730
27808
  ...makeVCalendarIntervalProps()
27731
27809
  },
27732
27810
  setup(props, _ref) {
27811
+ let {
27812
+ emit,
27813
+ slots
27814
+ } = _ref;
27733
27815
  const adapter = useDate();
27734
27816
  const interval = computed(() => {
27735
27817
  const start = adapter.addMinutes(adapter.startOfDay(props.day.date), props.intervalDuration * (props.index + props.intervalStart));
@@ -28124,7 +28206,7 @@ const makeVDateInputProps = propsFactory({
28124
28206
  ...omit(makeVDatePickerProps({
28125
28207
  weeksInMonth: 'dynamic',
28126
28208
  hideHeader: true
28127
- }), ['active', 'location'])
28209
+ }), ['active', 'location', 'rounded'])
28128
28210
  }, 'VDateInput');
28129
28211
  const VDateInput = genericComponent()({
28130
28212
  name: 'VDateInput',
@@ -28145,8 +28227,9 @@ const VDateInput = genericComponent()({
28145
28227
  focus,
28146
28228
  blur
28147
28229
  } = useFocus(props);
28148
- const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null);
28230
+ const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null, val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
28149
28231
  const menu = shallowRef(false);
28232
+ const vDateInputRef = ref();
28150
28233
  const display = computed(() => {
28151
28234
  const value = wrapInArray(model.value);
28152
28235
  if (!value.length) return null;
@@ -28168,7 +28251,7 @@ const VDateInput = genericComponent()({
28168
28251
  return;
28169
28252
  }
28170
28253
  const target = e.target;
28171
- model.value = adapter.date(target.value);
28254
+ model.value = target.value;
28172
28255
  }
28173
28256
  function onClick(e) {
28174
28257
  e.preventDefault();
@@ -28178,11 +28261,17 @@ const VDateInput = genericComponent()({
28178
28261
  function onSave() {
28179
28262
  menu.value = false;
28180
28263
  }
28264
+ function onUpdateModel(value) {
28265
+ if (value != null) return;
28266
+ model.value = null;
28267
+ }
28181
28268
  useRender(() => {
28182
28269
  const confirmEditProps = VConfirmEdit.filterProps(props);
28183
- const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location']));
28270
+ const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
28184
28271
  const textFieldProps = VTextField.filterProps(props);
28185
- return createVNode(VTextField, mergeProps(textFieldProps, {
28272
+ return createVNode(VTextField, mergeProps({
28273
+ "ref": vDateInputRef
28274
+ }, textFieldProps, {
28186
28275
  "class": props.class,
28187
28276
  "style": props.style,
28188
28277
  "modelValue": display.value,
@@ -28191,9 +28280,11 @@ const VDateInput = genericComponent()({
28191
28280
  "onFocus": focus,
28192
28281
  "onBlur": blur,
28193
28282
  "onClick:control": isInteractive.value ? onClick : undefined,
28194
- "onClick:prepend": isInteractive.value ? onClick : undefined
28283
+ "onClick:prepend": isInteractive.value ? onClick : undefined,
28284
+ "onUpdate:modelValue": onUpdateModel
28195
28285
  }), {
28196
- default: () => [createVNode(VMenu, {
28286
+ ...slots,
28287
+ default: () => createVNode(Fragment, null, [createVNode(VMenu, {
28197
28288
  "modelValue": menu.value,
28198
28289
  "onUpdate:modelValue": $event => menu.value = $event,
28199
28290
  "activator": "parent",
@@ -28236,9 +28327,10 @@ const VDateInput = genericComponent()({
28236
28327
  });
28237
28328
  }
28238
28329
  })]
28239
- }), slots.default?.()]
28330
+ }), slots.default?.()])
28240
28331
  });
28241
28332
  });
28333
+ return forwardRefs({}, vDateInputRef);
28242
28334
  }
28243
28335
  });
28244
28336
 
@@ -28370,7 +28462,7 @@ const makeVFileUploadProps = propsFactory({
28370
28462
  name: String,
28371
28463
  ...makeDelayProps(),
28372
28464
  ...makeDensityProps(),
28373
- ...only(makeVDividerProps({
28465
+ ...pick(makeVDividerProps({
28374
28466
  length: 150
28375
28467
  }), ['length', 'thickness', 'opacity']),
28376
28468
  ...makeVSheetProps()
@@ -28580,7 +28672,11 @@ const makeVNumberInputProps = propsFactory({
28580
28672
  type: Number,
28581
28673
  default: 1
28582
28674
  },
28583
- ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
28675
+ precision: {
28676
+ type: Number,
28677
+ default: 0
28678
+ },
28679
+ ...omit(makeVTextFieldProps({}), ['modelValue'])
28584
28680
  }, 'VNumberInput');
28585
28681
  const VNumberInput = genericComponent()({
28586
28682
  name: 'VNumberInput',
@@ -28594,27 +28690,37 @@ const VNumberInput = genericComponent()({
28594
28690
  let {
28595
28691
  slots
28596
28692
  } = _ref;
28597
- const _model = useProxiedModel(props, 'modelValue');
28598
- const model = computed({
28599
- get: () => _model.value,
28600
- // model.value could be empty string from VTextField
28601
- // but _model.value should be eventually kept in type Number | null
28693
+ const vTextFieldRef = ref();
28694
+ const form = useForm(props);
28695
+ const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28696
+ const isFocused = ref(false);
28697
+ function correctPrecision(val) {
28698
+ let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
28699
+ const fixed = precision == null ? String(val) : val.toFixed(precision);
28700
+ return isFocused.value ? Number(fixed).toString() // trim zeros
28701
+ : fixed;
28702
+ }
28703
+ const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(+val, props.min, props.max));
28704
+ const _inputText = shallowRef(null);
28705
+ watchEffect(() => {
28706
+ if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null || controlsDisabled.value) {
28707
+ _inputText.value = model.value && !isNaN(model.value) ? String(model.value) : null;
28708
+ } else if (!isNaN(model.value)) {
28709
+ _inputText.value = correctPrecision(model.value);
28710
+ }
28711
+ });
28712
+ const inputText = computed({
28713
+ get: () => _inputText.value,
28602
28714
  set(val) {
28603
28715
  if (val === null || val === '') {
28604
- _model.value = null;
28605
- return;
28606
- }
28607
- const value = Number(val);
28608
- if (!isNaN(value) && value <= props.max && value >= props.min) {
28609
- _model.value = value;
28716
+ model.value = null;
28717
+ _inputText.value = null;
28718
+ } else if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
28719
+ model.value = +val;
28720
+ _inputText.value = val;
28610
28721
  }
28611
28722
  }
28612
28723
  });
28613
- const vTextFieldRef = ref();
28614
- const stepDecimals = computed(() => getDecimals(props.step));
28615
- const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
28616
- const form = useForm(props);
28617
- const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
28618
28724
  const canIncrease = computed(() => {
28619
28725
  if (controlsDisabled.value) return false;
28620
28726
  return (model.value ?? 0) + props.step <= props.max;
@@ -28636,23 +28742,29 @@ const VNumberInput = genericComponent()({
28636
28742
  const decrementSlotProps = computed(() => ({
28637
28743
  click: onClickDown
28638
28744
  }));
28745
+ watch(() => props.precision, () => formatInputValue());
28639
28746
  onMounted(() => {
28640
- if (!controlsDisabled.value) {
28641
- clampModel();
28642
- }
28747
+ clampModel();
28643
28748
  });
28749
+ function inferPrecision(value) {
28750
+ if (value == null) return 0;
28751
+ const str = value.toString();
28752
+ const idx = str.indexOf('.');
28753
+ return ~idx ? str.length - idx : 0;
28754
+ }
28644
28755
  function toggleUpDown() {
28645
28756
  let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
28646
28757
  if (controlsDisabled.value) return;
28647
28758
  if (model.value == null) {
28648
- model.value = clamp(0, props.min, props.max);
28759
+ inputText.value = correctPrecision(clamp(0, props.min, props.max));
28649
28760
  return;
28650
28761
  }
28651
- const decimals = Math.max(modelDecimals.value, stepDecimals.value);
28762
+ let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step));
28763
+ if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision);
28652
28764
  if (increment) {
28653
- if (canIncrease.value) model.value = +(model.value + props.step).toFixed(decimals);
28765
+ if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision);
28654
28766
  } else {
28655
- if (canDecrease.value) model.value = +(model.value - props.step).toFixed(decimals);
28767
+ if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
28656
28768
  }
28657
28769
  }
28658
28770
  function onClickUp(e) {
@@ -28675,6 +28787,16 @@ const VNumberInput = genericComponent()({
28675
28787
  if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
28676
28788
  e.preventDefault();
28677
28789
  }
28790
+ if (props.precision == null) return;
28791
+
28792
+ // Ignore decimal digits above precision limit
28793
+ if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
28794
+ e.preventDefault();
28795
+ }
28796
+ // Ignore decimal separator when precision = 0
28797
+ if (props.precision === 0 && potentialNewInputVal.includes('.')) {
28798
+ e.preventDefault();
28799
+ }
28678
28800
  }
28679
28801
  async function onKeydown(e) {
28680
28802
  if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
@@ -28694,13 +28816,38 @@ const VNumberInput = genericComponent()({
28694
28816
  e.stopPropagation();
28695
28817
  }
28696
28818
  function clampModel() {
28819
+ if (controlsDisabled.value) return;
28697
28820
  if (!vTextFieldRef.value) return;
28698
- const inputText = vTextFieldRef.value.value;
28699
- if (inputText && !isNaN(+inputText)) {
28700
- model.value = clamp(+inputText, props.min, props.max);
28821
+ const actualText = vTextFieldRef.value.value;
28822
+ if (actualText && !isNaN(+actualText)) {
28823
+ inputText.value = correctPrecision(clamp(+actualText, props.min, props.max));
28701
28824
  } else {
28702
- model.value = null;
28825
+ inputText.value = null;
28826
+ }
28827
+ }
28828
+ function formatInputValue() {
28829
+ if (controlsDisabled.value) return;
28830
+ if (model.value === null || isNaN(model.value)) {
28831
+ inputText.value = null;
28832
+ return;
28703
28833
  }
28834
+ inputText.value = props.precision == null ? String(model.value) : model.value.toFixed(props.precision);
28835
+ }
28836
+ function trimDecimalZeros() {
28837
+ if (controlsDisabled.value) return;
28838
+ if (model.value === null || isNaN(model.value)) {
28839
+ inputText.value = null;
28840
+ return;
28841
+ }
28842
+ inputText.value = model.value.toString();
28843
+ }
28844
+ function onFocus() {
28845
+ isFocused.value = true;
28846
+ trimDecimalZeros();
28847
+ }
28848
+ function onBlur() {
28849
+ isFocused.value = false;
28850
+ clampModel();
28704
28851
  }
28705
28852
  useRender(() => {
28706
28853
  const {
@@ -28779,20 +28926,21 @@ const VNumberInput = genericComponent()({
28779
28926
  "class": "v-number-input__control"
28780
28927
  }, [createVNode(VDivider, {
28781
28928
  "vertical": true
28782
- }, null), incrementControlNode()]) : props.reverse ? undefined : createVNode(Fragment, null, [dividerNode(), controlNode()]);
28929
+ }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : createVNode(Fragment, null, [dividerNode(), controlNode()]);
28783
28930
  const hasAppendInner = slots['append-inner'] || appendInnerControl;
28784
28931
  const prependInnerControl = controlVariant.value === 'split' ? createVNode("div", {
28785
28932
  "class": "v-number-input__control"
28786
28933
  }, [decrementControlNode(), createVNode(VDivider, {
28787
28934
  "vertical": true
28788
- }, null)]) : props.reverse ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28935
+ }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? createVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
28789
28936
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
28790
28937
  return createVNode(VTextField, mergeProps({
28791
28938
  "ref": vTextFieldRef,
28792
- "modelValue": model.value,
28793
- "onUpdate:modelValue": $event => model.value = $event,
28939
+ "modelValue": inputText.value,
28940
+ "onUpdate:modelValue": $event => inputText.value = $event,
28794
28941
  "onBeforeinput": onBeforeinput,
28795
- "onChange": clampModel,
28942
+ "onFocus": onFocus,
28943
+ "onBlur": onBlur,
28796
28944
  "onKeydown": onKeydown,
28797
28945
  "class": ['v-number-input', {
28798
28946
  'v-number-input--default': controlVariant.value === 'default',
@@ -29678,7 +29826,7 @@ const VTimePickerControls = genericComponent()({
29678
29826
  const rangeHours24 = createRange(24);
29679
29827
  const rangeHours12am = createRange(12);
29680
29828
  const rangeHours12pm = rangeHours12am.map(v => v + 12);
29681
- const range60 = createRange(60);
29829
+ createRange(60);
29682
29830
  const selectingNames = {
29683
29831
  1: 'hour',
29684
29832
  2: 'minute',
@@ -29828,11 +29976,11 @@ const VTimePicker = genericComponent()({
29828
29976
  period.value = inputHour.value == null || inputHour.value < 12 ? 'am' : 'pm';
29829
29977
  }
29830
29978
  function firstAllowed(type, value) {
29831
- const allowedFn = type === 'hour' ? isAllowedHourCb.value : type === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value;
29979
+ const allowedFn = isAllowedHourCb.value ;
29832
29980
  if (!allowedFn) return value;
29833
29981
 
29834
29982
  // TODO: clean up (Note from V2 code)
29835
- const range = type === 'minute' ? range60 : type === 'second' ? range60 : isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29983
+ const range = isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;
29836
29984
  const first = range.find(v => allowedFn((v + value) % range.length + range[0]));
29837
29985
  return ((first || 0) + value) % range.length + range[0];
29838
29986
  }
@@ -29985,22 +30133,21 @@ const VTreeviewItem = genericComponent()({
29985
30133
  props: makeVTreeviewItemProps(),
29986
30134
  setup(props, _ref) {
29987
30135
  let {
29988
- attrs,
29989
- slots,
29990
- emit
30136
+ slots
29991
30137
  } = _ref;
29992
- const link = useLink(props, attrs);
30138
+ const visibleIds = inject$1(VTreeviewSymbol, {
30139
+ visibleIds: ref()
30140
+ }).visibleIds;
29993
30141
  const vListItemRef = ref();
29994
30142
  const isActivatableGroupActivator = computed(() => vListItemRef.value?.root.activatable.value && vListItemRef.value?.isGroupActivator);
29995
- const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
30143
+ const vListItemRefIsClickable = computed(() => vListItemRef.value?.link.isClickable.value || props.value != null && !!vListItemRef.value?.list);
30144
+ const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || vListItemRefIsClickable.value || isActivatableGroupActivator.value));
30145
+ const isFiltered = computed(() => visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id)));
29996
30146
  function activateGroupActivator(e) {
29997
30147
  if (isClickable.value && isActivatableGroupActivator.value) {
29998
30148
  vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
29999
30149
  }
30000
30150
  }
30001
- const visibleIds = inject$1(VTreeviewSymbol, {
30002
- visibleIds: ref()
30003
- }).visibleIds;
30004
30151
  useRender(() => {
30005
30152
  const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
30006
30153
  const hasPrepend = slots.prepend || props.toggleIcon;
@@ -30010,7 +30157,7 @@ const VTreeviewItem = genericComponent()({
30010
30157
  "active": vListItemRef.value?.isActivated,
30011
30158
  "class": ['v-treeview-item', {
30012
30159
  'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
30013
- 'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id))
30160
+ 'v-treeview-item--filtered': isFiltered.value
30014
30161
  }, props.class],
30015
30162
  "ripple": false,
30016
30163
  "onClick": props.onClick ?? activateGroupActivator
@@ -30094,11 +30241,6 @@ const VTreeviewChildren = genericComponent()({
30094
30241
  }
30095
30242
  }
30096
30243
  return () => slots.default?.() ?? props.items?.map(item => {
30097
- if (item.type === 'divider') {
30098
- return slots.divider?.({
30099
- props: item.props
30100
- }) ?? createVNode(VDivider, item.props, null);
30101
- }
30102
30244
  const {
30103
30245
  children,
30104
30246
  props: itemProps
@@ -30197,7 +30339,7 @@ const makeVTreeviewProps = propsFactory({
30197
30339
  collapseIcon: '$treeviewCollapse',
30198
30340
  expandIcon: '$treeviewExpand',
30199
30341
  slim: true
30200
- }), ['nav', 'openStrategy']),
30342
+ }), ['itemType', 'nav', 'openStrategy']),
30201
30343
  modelValue: {
30202
30344
  type: Array,
30203
30345
  default: () => []
@@ -30817,7 +30959,7 @@ function createVuetify$1() {
30817
30959
  goTo
30818
30960
  };
30819
30961
  }
30820
- const version$1 = "3.7.11";
30962
+ const version$1 = "3.7.13";
30821
30963
  createVuetify$1.version = version$1;
30822
30964
 
30823
30965
  // Vue's inject() can only be used in setup
@@ -31070,7 +31212,7 @@ var index = /*#__PURE__*/Object.freeze({
31070
31212
 
31071
31213
  /* eslint-disable local-rules/sort-imports */
31072
31214
 
31073
- const version = "3.7.11";
31215
+ const version = "3.7.13";
31074
31216
 
31075
31217
  /* eslint-disable local-rules/sort-imports */
31076
31218