@vuetify/nightly 3.10.7-dev.2025-10-23 → 3.10.7-dev.2025-10-24

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.
@@ -142968,41 +142968,40 @@ declare module 'vue' {
142968
142968
  $children?: VNodeChild
142969
142969
  }
142970
142970
  export interface GlobalComponents {
142971
+ VAlert: VAlert
142972
+ VAlertTitle: VAlertTitle
142971
142973
  VApp: VApp
142974
+ VAvatar: VAvatar
142972
142975
  VAppBar: VAppBar
142973
142976
  VAppBarNavIcon: VAppBarNavIcon
142974
142977
  VAppBarTitle: VAppBarTitle
142975
- VAlert: VAlert
142976
- VAlertTitle: VAlertTitle
142978
+ VBadge: VBadge
142979
+ VBottomSheet: VBottomSheet
142980
+ VAutocomplete: VAutocomplete
142977
142981
  VBanner: VBanner
142978
142982
  VBannerActions: VBannerActions
142979
142983
  VBannerText: VBannerText
142980
- VAvatar: VAvatar
142981
- VBottomSheet: VBottomSheet
142982
- VBadge: VBadge
142984
+ VBtn: VBtn
142985
+ VBtnToggle: VBtnToggle
142983
142986
  VBottomNavigation: VBottomNavigation
142984
- VAutocomplete: VAutocomplete
142985
142987
  VBreadcrumbs: VBreadcrumbs
142986
142988
  VBreadcrumbsItem: VBreadcrumbsItem
142987
142989
  VBreadcrumbsDivider: VBreadcrumbsDivider
142988
142990
  VBtnGroup: VBtnGroup
142989
- VBtnToggle: VBtnToggle
142990
- VCarousel: VCarousel
142991
- VCarouselItem: VCarouselItem
142992
142991
  VCard: VCard
142993
142992
  VCardActions: VCardActions
142994
142993
  VCardItem: VCardItem
142995
142994
  VCardSubtitle: VCardSubtitle
142996
142995
  VCardText: VCardText
142997
142996
  VCardTitle: VCardTitle
142998
- VBtn: VBtn
142999
- VCombobox: VCombobox
142997
+ VCarousel: VCarousel
142998
+ VCarouselItem: VCarouselItem
143000
142999
  VChip: VChip
143001
143000
  VCheckbox: VCheckbox
143002
143001
  VCheckboxBtn: VCheckboxBtn
143003
143002
  VCode: VCode
143004
143003
  VChipGroup: VChipGroup
143005
- VCounter: VCounter
143004
+ VCombobox: VCombobox
143006
143005
  VDatePicker: VDatePicker
143007
143006
  VDatePickerControls: VDatePickerControls
143008
143007
  VDatePickerHeader: VDatePickerHeader
@@ -143017,7 +143016,8 @@ declare module 'vue' {
143017
143016
  VDataTableRow: VDataTableRow
143018
143017
  VDataTableVirtual: VDataTableVirtual
143019
143018
  VDataTableServer: VDataTableServer
143020
- VEmptyState: VEmptyState
143019
+ VFab: VFab
143020
+ VCounter: VCounter
143021
143021
  VDivider: VDivider
143022
143022
  VDialog: VDialog
143023
143023
  VExpansionPanels: VExpansionPanels
@@ -143025,22 +143025,21 @@ declare module 'vue' {
143025
143025
  VExpansionPanelText: VExpansionPanelText
143026
143026
  VExpansionPanelTitle: VExpansionPanelTitle
143027
143027
  VFileInput: VFileInput
143028
+ VEmptyState: VEmptyState
143028
143029
  VField: VField
143029
143030
  VFieldLabel: VFieldLabel
143030
- VFab: VFab
143031
- VImg: VImg
143032
143031
  VFooter: VFooter
143033
- VInfiniteScroll: VInfiniteScroll
143032
+ VInput: VInput
143034
143033
  VIcon: VIcon
143035
143034
  VComponentIcon: VComponentIcon
143036
143035
  VSvgIcon: VSvgIcon
143037
143036
  VLigatureIcon: VLigatureIcon
143038
143037
  VClassIcon: VClassIcon
143039
- VInput: VInput
143040
- VLabel: VLabel
143041
- VKbd: VKbd
143038
+ VImg: VImg
143039
+ VInfiniteScroll: VInfiniteScroll
143042
143040
  VItemGroup: VItemGroup
143043
143041
  VItem: VItem
143042
+ VLabel: VLabel
143044
143043
  VList: VList
143045
143044
  VListGroup: VListGroup
143046
143045
  VListImg: VListImg
@@ -143050,22 +143049,26 @@ declare module 'vue' {
143050
143049
  VListItemSubtitle: VListItemSubtitle
143051
143050
  VListItemTitle: VListItemTitle
143052
143051
  VListSubheader: VListSubheader
143053
- VMain: VMain
143054
- VNavigationDrawer: VNavigationDrawer
143055
143052
  VMenu: VMenu
143056
- VOtpInput: VOtpInput
143053
+ VKbd: VKbd
143054
+ VNavigationDrawer: VNavigationDrawer
143055
+ VMain: VMain
143057
143056
  VMessages: VMessages
143058
143057
  VNumberInput: VNumberInput
143059
- VPagination: VPagination
143060
- VProgressLinear: VProgressLinear
143061
143058
  VOverlay: VOverlay
143062
- VProgressCircular: VProgressCircular
143059
+ VOtpInput: VOtpInput
143060
+ VProgressLinear: VProgressLinear
143063
143061
  VRating: VRating
143062
+ VPagination: VPagination
143063
+ VProgressCircular: VProgressCircular
143064
143064
  VRadioGroup: VRadioGroup
143065
- VSelectionControlGroup: VSelectionControlGroup
143066
- VSelectionControl: VSelectionControl
143067
143065
  VSelect: VSelect
143066
+ VSelectionControl: VSelectionControl
143067
+ VSlideGroup: VSlideGroup
143068
+ VSlideGroupItem: VSlideGroupItem
143069
+ VSkeletonLoader: VSkeletonLoader
143068
143070
  VSheet: VSheet
143071
+ VSelectionControlGroup: VSelectionControlGroup
143069
143072
  VSlider: VSlider
143070
143073
  VStepper: VStepper
143071
143074
  VStepperActions: VStepperActions
@@ -143073,28 +143076,25 @@ declare module 'vue' {
143073
143076
  VStepperItem: VStepperItem
143074
143077
  VStepperWindow: VStepperWindow
143075
143078
  VStepperWindowItem: VStepperWindowItem
143076
- VSkeletonLoader: VSkeletonLoader
143077
- VSnackbar: VSnackbar
143078
- VSlideGroup: VSlideGroup
143079
- VSlideGroupItem: VSlideGroupItem
143080
143079
  VSwitch: VSwitch
143081
- VTextarea: VTextarea
143080
+ VSystemBar: VSystemBar
143082
143081
  VTab: VTab
143083
143082
  VTabs: VTabs
143084
143083
  VTabsWindow: VTabsWindow
143085
143084
  VTabsWindowItem: VTabsWindowItem
143086
- VSystemBar: VSystemBar
143087
- VTable: VTable
143085
+ VSnackbar: VSnackbar
143086
+ VTextarea: VTextarea
143088
143087
  VTextField: VTextField
143088
+ VTable: VTable
143089
+ VTimeline: VTimeline
143090
+ VTimelineItem: VTimelineItem
143091
+ VTooltip: VTooltip
143089
143092
  VToolbar: VToolbar
143090
143093
  VToolbarTitle: VToolbarTitle
143091
143094
  VToolbarItems: VToolbarItems
143092
- VTimeline: VTimeline
143093
- VTimelineItem: VTimelineItem
143094
143095
  VTreeview: VTreeview
143095
143096
  VTreeviewItem: VTreeviewItem
143096
143097
  VTreeviewGroup: VTreeviewGroup
143097
- VTooltip: VTooltip
143098
143098
  VTimePicker: VTimePicker
143099
143099
  VTimePickerClock: VTimePickerClock
143100
143100
  VTimePickerControls: VTimePickerControls
@@ -143103,19 +143103,19 @@ declare module 'vue' {
143103
143103
  VConfirmEdit: VConfirmEdit
143104
143104
  VDataIterator: VDataIterator
143105
143105
  VDefaultsProvider: VDefaultsProvider
143106
+ VForm: VForm
143106
143107
  VContainer: VContainer
143107
143108
  VCol: VCol
143108
143109
  VRow: VRow
143109
143110
  VSpacer: VSpacer
143110
143111
  VHover: VHover
143111
- VForm: VForm
143112
- VLazy: VLazy
143113
143112
  VLayout: VLayout
143114
143113
  VLayoutItem: VLayoutItem
143114
+ VLazy: VLazy
143115
143115
  VLocaleProvider: VLocaleProvider
143116
143116
  VNoSsr: VNoSsr
143117
- VRadio: VRadio
143118
143117
  VParallax: VParallax
143118
+ VRadio: VRadio
143119
143119
  VRangeSlider: VRangeSlider
143120
143120
  VResponsive: VResponsive
143121
143121
  VSnackbarQueue: VSnackbarQueue
@@ -143140,26 +143140,26 @@ declare module 'vue' {
143140
143140
  VExpandTransition: VExpandTransition
143141
143141
  VExpandXTransition: VExpandXTransition
143142
143142
  VDialogTransition: VDialogTransition
143143
+ VIconBtn: VIconBtn
143143
143144
  VCalendar: VCalendar
143144
- VColorInput: VColorInput
143145
143145
  VFileUpload: VFileUpload
143146
143146
  VFileUploadItem: VFileUploadItem
143147
+ VPicker: VPicker
143148
+ VPickerTitle: VPickerTitle
143147
143149
  VStepperVertical: VStepperVertical
143148
143150
  VStepperVerticalItem: VStepperVerticalItem
143149
143151
  VStepperVerticalActions: VStepperVerticalActions
143152
+ VColorInput: VColorInput
143153
+ VHotkey: VHotkey
143150
143154
  VVideo: VVideo
143151
143155
  VVideoControls: VVideoControls
143152
143156
  VVideoVolume: VVideoVolume
143153
143157
  VPie: VPie
143154
143158
  VPieSegment: VPieSegment
143155
143159
  VPieTooltip: VPieTooltip
143156
- VPicker: VPicker
143157
- VPickerTitle: VPickerTitle
143158
- VHotkey: VHotkey
143159
- VIconBtn: VIconBtn
143160
143160
  VDateInput: VDateInput
143161
- VPullToRefresh: VPullToRefresh
143162
143161
  VMaskInput: VMaskInput
143162
+ VPullToRefresh: VPullToRefresh
143163
143163
  }
143164
143164
  export interface GlobalDirectives {
143165
143165
  vClickOutside: typeof import('vuetify/directives')['ClickOutside']
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.10.7-dev.2025-10-23
2
+ * Vuetify v3.10.7-dev.2025-10-24
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, toValue, watch, onBeforeUnmount, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
7
+ import { warn, shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, toValue, watch, onBeforeUnmount, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  // Types
10
10
  // eslint-disable-line vue/prefer-import-from-vue
@@ -77,6 +77,19 @@ const makeComponentProps = propsFactory({
77
77
  }
78
78
  }, 'component');
79
79
 
80
+ /* eslint-disable no-console */
81
+
82
+ function consoleWarn(message) {
83
+ warn(`Vuetify: ${message}`);
84
+ }
85
+ function consoleError(message) {
86
+ warn(`Vuetify error: ${message}`);
87
+ }
88
+ function deprecate(original, replacement) {
89
+ replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
90
+ warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
91
+ }
92
+
80
93
  const IN_BROWSER = typeof window !== 'undefined';
81
94
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
82
95
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
@@ -279,6 +292,39 @@ function debounce(fn, delay) {
279
292
  wrap.immediate = fn;
280
293
  return wrap;
281
294
  }
295
+ function throttle(fn, delay) {
296
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
297
+ leading: true,
298
+ trailing: true
299
+ };
300
+ let timeoutId = 0;
301
+ let lastExec = 0;
302
+ let throttling = false;
303
+ const wrap = function () {
304
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
305
+ args[_key2] = arguments[_key2];
306
+ }
307
+ clearTimeout(timeoutId);
308
+ const now = Date.now();
309
+ const elapsed = now - lastExec;
310
+ if (!throttling || elapsed >= delay) {
311
+ lastExec = now;
312
+ }
313
+ if (!throttling && options.leading || elapsed >= delay) {
314
+ window.setTimeout(() => fn(...args)); // ignore 'fn' executin errors
315
+ }
316
+ throttling = true;
317
+ timeoutId = window.setTimeout(() => {
318
+ throttling = false;
319
+ if (options.trailing) {
320
+ fn(...args);
321
+ }
322
+ }, delay);
323
+ };
324
+ wrap.clear = () => clearTimeout(timeoutId);
325
+ wrap.immediate = fn;
326
+ return wrap;
327
+ }
282
328
  function clamp(value) {
283
329
  let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
284
330
  let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
@@ -455,8 +501,8 @@ function hasEvent(props, name) {
455
501
  return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);
456
502
  }
457
503
  function callEvent(handler) {
458
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
459
- args[_key2 - 1] = arguments[_key2];
504
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
505
+ args[_key3 - 1] = arguments[_key3];
460
506
  }
461
507
  if (Array.isArray(handler)) {
462
508
  for (const h of handler) {
@@ -469,7 +515,14 @@ function callEvent(handler) {
469
515
  function focusableChildren(el) {
470
516
  let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
471
517
  const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', 'details:not(:has(> summary))', 'details > summary', '[tabindex]', '[contenteditable]:not([contenteditable="false"])', 'audio[controls]', 'video[controls]'].map(s => `${s}${filterByTabIndex ? ':not([tabindex="-1"])' : ''}:not([disabled], [inert])`).join(', ');
472
- return [...el.querySelectorAll(targets)].filter(x => !x.closest('[inert]')) // does not have inert parent
518
+ let elements;
519
+ try {
520
+ elements = [...el.querySelectorAll(targets)];
521
+ } catch (err) {
522
+ consoleError(String(err));
523
+ return [];
524
+ }
525
+ return elements.filter(x => !x.closest('[inert]')) // does not have inert parent
473
526
  .filter(x => !!x.offsetParent || x.getClientRects().length > 0) // is rendered
474
527
  .filter(x => !x.parentElement?.closest('details:not([open])') || x.tagName === 'SUMMARY' && x.parentElement?.tagName === 'DETAILS');
475
528
  }
@@ -936,19 +989,6 @@ function APCAcontrast(text, background) {
936
989
  return outputContrast * 100;
937
990
  }
938
991
 
939
- /* eslint-disable no-console */
940
-
941
- function consoleWarn(message) {
942
- warn(`Vuetify: ${message}`);
943
- }
944
- function consoleError(message) {
945
- warn(`Vuetify error: ${message}`);
946
- }
947
- function deprecate(original, replacement) {
948
- replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
949
- warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
950
- }
951
-
952
992
  // Types
953
993
 
954
994
  const delta = 0.20689655172413793; // 6÷29
@@ -9331,6 +9371,10 @@ const useNested = props => {
9331
9371
  }
9332
9372
  const vm = getCurrentInstance('nested');
9333
9373
  const nodeIds = new Set();
9374
+ const itemsUpdatePropagation = throttle(() => {
9375
+ children.value = new Map(children.value);
9376
+ parents.value = new Map(parents.value);
9377
+ }, 100);
9334
9378
  const nested = {
9335
9379
  id: shallowRef(),
9336
9380
  root: {
@@ -9361,6 +9405,7 @@ const useNested = props => {
9361
9405
  if (parentId != null) {
9362
9406
  children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
9363
9407
  }
9408
+ itemsUpdatePropagation();
9364
9409
  },
9365
9410
  unregister: id => {
9366
9411
  if (isUnmounted) return;
@@ -9373,6 +9418,7 @@ const useNested = props => {
9373
9418
  children.value.set(parent, list.filter(child => child !== id));
9374
9419
  }
9375
9420
  parents.value.delete(id);
9421
+ itemsUpdatePropagation();
9376
9422
  },
9377
9423
  open: (id, value, event) => {
9378
9424
  vm.emit('click:open', {
@@ -10760,7 +10806,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
10760
10806
 
10761
10807
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
10762
10808
  const scrollParents = getScrollParents(data.contentEl.value);
10763
- const viewportMargin = 12;
10809
+ const viewportMargin = props.stickToTarget ? 0 : 12; // TOOD: prop.viewportMargin
10810
+
10764
10811
  if (!scrollParents.length) {
10765
10812
  scrollParents.push(document.documentElement);
10766
10813
  if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {
@@ -10780,10 +10827,17 @@ function connectedLocationStrategy(data, props, contentStyles) {
10780
10827
  }
10781
10828
  return scrollBox;
10782
10829
  }, undefined);
10783
- viewport.x += viewportMargin;
10784
- viewport.y += viewportMargin;
10785
- viewport.width -= viewportMargin * 2;
10786
- viewport.height -= viewportMargin * 2;
10830
+ if (props.stickToTarget) {
10831
+ viewport.x += Math.min(0, targetBox.x);
10832
+ viewport.y += Math.min(0, targetBox.y);
10833
+ viewport.width = Math.max(viewport.width, targetBox.x + targetBox.width);
10834
+ viewport.height = Math.max(viewport.height, targetBox.y + targetBox.height);
10835
+ } else {
10836
+ viewport.x += viewportMargin;
10837
+ viewport.y += viewportMargin;
10838
+ viewport.width -= viewportMargin * 2;
10839
+ viewport.height -= viewportMargin * 2;
10840
+ }
10787
10841
  let placement = {
10788
10842
  anchor: preferredAnchor.value,
10789
10843
  origin: preferredOrigin.value
@@ -10894,19 +10948,19 @@ function connectedLocationStrategy(data, props, contentStyles) {
10894
10948
 
10895
10949
  // shift
10896
10950
  if (overflows.x.before) {
10897
- if (!props.stickToTarget) x += overflows.x.before;
10951
+ x += overflows.x.before;
10898
10952
  contentBox.x += overflows.x.before;
10899
10953
  }
10900
10954
  if (overflows.x.after) {
10901
- if (!props.stickToTarget) x -= overflows.x.after;
10955
+ x -= overflows.x.after;
10902
10956
  contentBox.x -= overflows.x.after;
10903
10957
  }
10904
10958
  if (overflows.y.before) {
10905
- if (!props.stickToTarget) y += overflows.y.before;
10959
+ y += overflows.y.before;
10906
10960
  contentBox.y += overflows.y.before;
10907
10961
  }
10908
10962
  if (overflows.y.after) {
10909
- if (!props.stickToTarget) y -= overflows.y.after;
10963
+ y -= overflows.y.after;
10910
10964
  contentBox.y -= overflows.y.after;
10911
10965
  }
10912
10966
 
@@ -10915,9 +10969,9 @@ function connectedLocationStrategy(data, props, contentStyles) {
10915
10969
  const overflows = getOverflow(contentBox, viewport);
10916
10970
  available.x = viewport.width - overflows.x.before - overflows.x.after;
10917
10971
  available.y = viewport.height - overflows.y.before - overflows.y.after;
10918
- if (!props.stickToTarget) x += overflows.x.before;
10972
+ x += overflows.x.before;
10919
10973
  contentBox.x += overflows.x.before;
10920
- if (!props.stickToTarget) y += overflows.y.before;
10974
+ y += overflows.y.before;
10921
10975
  contentBox.y += overflows.y.before;
10922
10976
  }
10923
10977
  break;
@@ -11227,7 +11281,6 @@ function useActivator(props, _ref) {
11227
11281
  isActive.value = !isActive.value;
11228
11282
  },
11229
11283
  onMouseenter: e => {
11230
- if (e.sourceCapabilities?.firesTouchEvents) return;
11231
11284
  isHovered = true;
11232
11285
  activatorEl.value = e.currentTarget || e.target;
11233
11286
  runOpenDelay();
@@ -38158,7 +38211,7 @@ function createVuetify$1() {
38158
38211
  };
38159
38212
  });
38160
38213
  }
38161
- const version$1 = "3.10.7-dev.2025-10-23";
38214
+ const version$1 = "3.10.7-dev.2025-10-24";
38162
38215
  createVuetify$1.version = version$1;
38163
38216
 
38164
38217
  // Vue's inject() can only be used in setup
@@ -38456,7 +38509,7 @@ var index = /*#__PURE__*/Object.freeze({
38456
38509
 
38457
38510
  /* eslint-disable local-rules/sort-imports */
38458
38511
 
38459
- const version = "3.10.7-dev.2025-10-23";
38512
+ const version = "3.10.7-dev.2025-10-24";
38460
38513
 
38461
38514
  /* eslint-disable local-rules/sort-imports */
38462
38515