@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.
package/dist/vuetify.d.ts CHANGED
@@ -106111,41 +106111,40 @@ declare module 'vue' {
106111
106111
  $children?: VNodeChild
106112
106112
  }
106113
106113
  export interface GlobalComponents {
106114
+ VAlert: VAlert
106115
+ VAlertTitle: VAlertTitle
106114
106116
  VApp: VApp
106117
+ VAvatar: VAvatar
106115
106118
  VAppBar: VAppBar
106116
106119
  VAppBarNavIcon: VAppBarNavIcon
106117
106120
  VAppBarTitle: VAppBarTitle
106118
- VAlert: VAlert
106119
- VAlertTitle: VAlertTitle
106121
+ VBadge: VBadge
106122
+ VBottomSheet: VBottomSheet
106123
+ VAutocomplete: VAutocomplete
106120
106124
  VBanner: VBanner
106121
106125
  VBannerActions: VBannerActions
106122
106126
  VBannerText: VBannerText
106123
- VAvatar: VAvatar
106124
- VBottomSheet: VBottomSheet
106125
- VBadge: VBadge
106127
+ VBtn: VBtn
106128
+ VBtnToggle: VBtnToggle
106126
106129
  VBottomNavigation: VBottomNavigation
106127
- VAutocomplete: VAutocomplete
106128
106130
  VBreadcrumbs: VBreadcrumbs
106129
106131
  VBreadcrumbsItem: VBreadcrumbsItem
106130
106132
  VBreadcrumbsDivider: VBreadcrumbsDivider
106131
106133
  VBtnGroup: VBtnGroup
106132
- VBtnToggle: VBtnToggle
106133
- VCarousel: VCarousel
106134
- VCarouselItem: VCarouselItem
106135
106134
  VCard: VCard
106136
106135
  VCardActions: VCardActions
106137
106136
  VCardItem: VCardItem
106138
106137
  VCardSubtitle: VCardSubtitle
106139
106138
  VCardText: VCardText
106140
106139
  VCardTitle: VCardTitle
106141
- VBtn: VBtn
106142
- VCombobox: VCombobox
106140
+ VCarousel: VCarousel
106141
+ VCarouselItem: VCarouselItem
106143
106142
  VChip: VChip
106144
106143
  VCheckbox: VCheckbox
106145
106144
  VCheckboxBtn: VCheckboxBtn
106146
106145
  VCode: VCode
106147
106146
  VChipGroup: VChipGroup
106148
- VCounter: VCounter
106147
+ VCombobox: VCombobox
106149
106148
  VDatePicker: VDatePicker
106150
106149
  VDatePickerControls: VDatePickerControls
106151
106150
  VDatePickerHeader: VDatePickerHeader
@@ -106160,7 +106159,8 @@ declare module 'vue' {
106160
106159
  VDataTableRow: VDataTableRow
106161
106160
  VDataTableVirtual: VDataTableVirtual
106162
106161
  VDataTableServer: VDataTableServer
106163
- VEmptyState: VEmptyState
106162
+ VFab: VFab
106163
+ VCounter: VCounter
106164
106164
  VDivider: VDivider
106165
106165
  VDialog: VDialog
106166
106166
  VExpansionPanels: VExpansionPanels
@@ -106168,22 +106168,21 @@ declare module 'vue' {
106168
106168
  VExpansionPanelText: VExpansionPanelText
106169
106169
  VExpansionPanelTitle: VExpansionPanelTitle
106170
106170
  VFileInput: VFileInput
106171
+ VEmptyState: VEmptyState
106171
106172
  VField: VField
106172
106173
  VFieldLabel: VFieldLabel
106173
- VFab: VFab
106174
- VImg: VImg
106175
106174
  VFooter: VFooter
106176
- VInfiniteScroll: VInfiniteScroll
106175
+ VInput: VInput
106177
106176
  VIcon: VIcon
106178
106177
  VComponentIcon: VComponentIcon
106179
106178
  VSvgIcon: VSvgIcon
106180
106179
  VLigatureIcon: VLigatureIcon
106181
106180
  VClassIcon: VClassIcon
106182
- VInput: VInput
106183
- VLabel: VLabel
106184
- VKbd: VKbd
106181
+ VImg: VImg
106182
+ VInfiniteScroll: VInfiniteScroll
106185
106183
  VItemGroup: VItemGroup
106186
106184
  VItem: VItem
106185
+ VLabel: VLabel
106187
106186
  VList: VList
106188
106187
  VListGroup: VListGroup
106189
106188
  VListImg: VListImg
@@ -106193,22 +106192,26 @@ declare module 'vue' {
106193
106192
  VListItemSubtitle: VListItemSubtitle
106194
106193
  VListItemTitle: VListItemTitle
106195
106194
  VListSubheader: VListSubheader
106196
- VMain: VMain
106197
- VNavigationDrawer: VNavigationDrawer
106198
106195
  VMenu: VMenu
106199
- VOtpInput: VOtpInput
106196
+ VKbd: VKbd
106197
+ VNavigationDrawer: VNavigationDrawer
106198
+ VMain: VMain
106200
106199
  VMessages: VMessages
106201
106200
  VNumberInput: VNumberInput
106202
- VPagination: VPagination
106203
- VProgressLinear: VProgressLinear
106204
106201
  VOverlay: VOverlay
106205
- VProgressCircular: VProgressCircular
106202
+ VOtpInput: VOtpInput
106203
+ VProgressLinear: VProgressLinear
106206
106204
  VRating: VRating
106205
+ VPagination: VPagination
106206
+ VProgressCircular: VProgressCircular
106207
106207
  VRadioGroup: VRadioGroup
106208
- VSelectionControlGroup: VSelectionControlGroup
106209
- VSelectionControl: VSelectionControl
106210
106208
  VSelect: VSelect
106209
+ VSelectionControl: VSelectionControl
106210
+ VSlideGroup: VSlideGroup
106211
+ VSlideGroupItem: VSlideGroupItem
106212
+ VSkeletonLoader: VSkeletonLoader
106211
106213
  VSheet: VSheet
106214
+ VSelectionControlGroup: VSelectionControlGroup
106212
106215
  VSlider: VSlider
106213
106216
  VStepper: VStepper
106214
106217
  VStepperActions: VStepperActions
@@ -106216,28 +106219,25 @@ declare module 'vue' {
106216
106219
  VStepperItem: VStepperItem
106217
106220
  VStepperWindow: VStepperWindow
106218
106221
  VStepperWindowItem: VStepperWindowItem
106219
- VSkeletonLoader: VSkeletonLoader
106220
- VSnackbar: VSnackbar
106221
- VSlideGroup: VSlideGroup
106222
- VSlideGroupItem: VSlideGroupItem
106223
106222
  VSwitch: VSwitch
106224
- VTextarea: VTextarea
106223
+ VSystemBar: VSystemBar
106225
106224
  VTab: VTab
106226
106225
  VTabs: VTabs
106227
106226
  VTabsWindow: VTabsWindow
106228
106227
  VTabsWindowItem: VTabsWindowItem
106229
- VSystemBar: VSystemBar
106230
- VTable: VTable
106228
+ VSnackbar: VSnackbar
106229
+ VTextarea: VTextarea
106231
106230
  VTextField: VTextField
106231
+ VTable: VTable
106232
+ VTimeline: VTimeline
106233
+ VTimelineItem: VTimelineItem
106234
+ VTooltip: VTooltip
106232
106235
  VToolbar: VToolbar
106233
106236
  VToolbarTitle: VToolbarTitle
106234
106237
  VToolbarItems: VToolbarItems
106235
- VTimeline: VTimeline
106236
- VTimelineItem: VTimelineItem
106237
106238
  VTreeview: VTreeview
106238
106239
  VTreeviewItem: VTreeviewItem
106239
106240
  VTreeviewGroup: VTreeviewGroup
106240
- VTooltip: VTooltip
106241
106241
  VTimePicker: VTimePicker
106242
106242
  VTimePickerClock: VTimePickerClock
106243
106243
  VTimePickerControls: VTimePickerControls
@@ -106246,19 +106246,19 @@ declare module 'vue' {
106246
106246
  VConfirmEdit: VConfirmEdit
106247
106247
  VDataIterator: VDataIterator
106248
106248
  VDefaultsProvider: VDefaultsProvider
106249
+ VForm: VForm
106249
106250
  VContainer: VContainer
106250
106251
  VCol: VCol
106251
106252
  VRow: VRow
106252
106253
  VSpacer: VSpacer
106253
106254
  VHover: VHover
106254
- VForm: VForm
106255
- VLazy: VLazy
106256
106255
  VLayout: VLayout
106257
106256
  VLayoutItem: VLayoutItem
106257
+ VLazy: VLazy
106258
106258
  VLocaleProvider: VLocaleProvider
106259
106259
  VNoSsr: VNoSsr
106260
- VRadio: VRadio
106261
106260
  VParallax: VParallax
106261
+ VRadio: VRadio
106262
106262
  VRangeSlider: VRangeSlider
106263
106263
  VResponsive: VResponsive
106264
106264
  VSnackbarQueue: VSnackbarQueue
@@ -106283,26 +106283,26 @@ declare module 'vue' {
106283
106283
  VExpandTransition: VExpandTransition
106284
106284
  VExpandXTransition: VExpandXTransition
106285
106285
  VDialogTransition: VDialogTransition
106286
+ VIconBtn: VIconBtn
106286
106287
  VCalendar: VCalendar
106287
- VColorInput: VColorInput
106288
106288
  VFileUpload: VFileUpload
106289
106289
  VFileUploadItem: VFileUploadItem
106290
+ VPicker: VPicker
106291
+ VPickerTitle: VPickerTitle
106290
106292
  VStepperVertical: VStepperVertical
106291
106293
  VStepperVerticalItem: VStepperVerticalItem
106292
106294
  VStepperVerticalActions: VStepperVerticalActions
106295
+ VColorInput: VColorInput
106296
+ VHotkey: VHotkey
106293
106297
  VVideo: VVideo
106294
106298
  VVideoControls: VVideoControls
106295
106299
  VVideoVolume: VVideoVolume
106296
106300
  VPie: VPie
106297
106301
  VPieSegment: VPieSegment
106298
106302
  VPieTooltip: VPieTooltip
106299
- VPicker: VPicker
106300
- VPickerTitle: VPickerTitle
106301
- VHotkey: VHotkey
106302
- VIconBtn: VIconBtn
106303
106303
  VDateInput: VDateInput
106304
- VPullToRefresh: VPullToRefresh
106305
106304
  VMaskInput: VMaskInput
106305
+ VPullToRefresh: VPullToRefresh
106306
106306
  }
106307
106307
  export interface GlobalDirectives {
106308
106308
  vClickOutside: typeof import('vuetify/directives')['ClickOutside']
@@ -1,10 +1,23 @@
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, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, normalizeStyle, TransitionGroup, Transition, 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, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, normalizeStyle, TransitionGroup, Transition, 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
+
9
+ /* eslint-disable no-console */
10
+
11
+ function consoleWarn(message) {
12
+ warn(`Vuetify: ${message}`);
13
+ }
14
+ function consoleError(message) {
15
+ warn(`Vuetify error: ${message}`);
16
+ }
17
+ function deprecate(original, replacement) {
18
+ replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
19
+ warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
20
+ }
8
21
 
9
22
  const IN_BROWSER = typeof window !== 'undefined';
10
23
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -208,6 +221,39 @@ function debounce(fn, delay) {
208
221
  wrap.immediate = fn;
209
222
  return wrap;
210
223
  }
224
+ function throttle(fn, delay) {
225
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
226
+ leading: true,
227
+ trailing: true
228
+ };
229
+ let timeoutId = 0;
230
+ let lastExec = 0;
231
+ let throttling = false;
232
+ const wrap = function () {
233
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
234
+ args[_key2] = arguments[_key2];
235
+ }
236
+ clearTimeout(timeoutId);
237
+ const now = Date.now();
238
+ const elapsed = now - lastExec;
239
+ if (!throttling || elapsed >= delay) {
240
+ lastExec = now;
241
+ }
242
+ if (!throttling && options.leading || elapsed >= delay) {
243
+ window.setTimeout(() => fn(...args)); // ignore 'fn' executin errors
244
+ }
245
+ throttling = true;
246
+ timeoutId = window.setTimeout(() => {
247
+ throttling = false;
248
+ if (options.trailing) {
249
+ fn(...args);
250
+ }
251
+ }, delay);
252
+ };
253
+ wrap.clear = () => clearTimeout(timeoutId);
254
+ wrap.immediate = fn;
255
+ return wrap;
256
+ }
211
257
  function clamp(value) {
212
258
  let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
213
259
  let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
@@ -384,8 +430,8 @@ function hasEvent(props, name) {
384
430
  return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);
385
431
  }
386
432
  function callEvent(handler) {
387
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
388
- args[_key2 - 1] = arguments[_key2];
433
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
434
+ args[_key3 - 1] = arguments[_key3];
389
435
  }
390
436
  if (Array.isArray(handler)) {
391
437
  for (const h of handler) {
@@ -398,7 +444,14 @@ function callEvent(handler) {
398
444
  function focusableChildren(el) {
399
445
  let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
400
446
  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(', ');
401
- return [...el.querySelectorAll(targets)].filter(x => !x.closest('[inert]')) // does not have inert parent
447
+ let elements;
448
+ try {
449
+ elements = [...el.querySelectorAll(targets)];
450
+ } catch (err) {
451
+ consoleError(String(err));
452
+ return [];
453
+ }
454
+ return elements.filter(x => !x.closest('[inert]')) // does not have inert parent
402
455
  .filter(x => !!x.offsetParent || x.getClientRects().length > 0) // is rendered
403
456
  .filter(x => !x.parentElement?.closest('details:not([open])') || x.tagName === 'SUMMARY' && x.parentElement?.tagName === 'DETAILS');
404
457
  }
@@ -865,19 +918,6 @@ function APCAcontrast(text, background) {
865
918
  return outputContrast * 100;
866
919
  }
867
920
 
868
- /* eslint-disable no-console */
869
-
870
- function consoleWarn(message) {
871
- warn(`Vuetify: ${message}`);
872
- }
873
- function consoleError(message) {
874
- warn(`Vuetify error: ${message}`);
875
- }
876
- function deprecate(original, replacement) {
877
- replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
878
- warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
879
- }
880
-
881
921
  // Types
882
922
 
883
923
  const delta = 0.20689655172413793; // 6÷29
@@ -9655,6 +9695,10 @@ const useNested = props => {
9655
9695
  }
9656
9696
  const vm = getCurrentInstance('nested');
9657
9697
  const nodeIds = new Set();
9698
+ const itemsUpdatePropagation = throttle(() => {
9699
+ children.value = new Map(children.value);
9700
+ parents.value = new Map(parents.value);
9701
+ }, 100);
9658
9702
  const nested = {
9659
9703
  id: shallowRef(),
9660
9704
  root: {
@@ -9685,6 +9729,7 @@ const useNested = props => {
9685
9729
  if (parentId != null) {
9686
9730
  children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
9687
9731
  }
9732
+ itemsUpdatePropagation();
9688
9733
  },
9689
9734
  unregister: id => {
9690
9735
  if (isUnmounted) return;
@@ -9697,6 +9742,7 @@ const useNested = props => {
9697
9742
  children.value.set(parent, list.filter(child => child !== id));
9698
9743
  }
9699
9744
  parents.value.delete(id);
9745
+ itemsUpdatePropagation();
9700
9746
  },
9701
9747
  open: (id, value, event) => {
9702
9748
  vm.emit('click:open', {
@@ -11084,7 +11130,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
11084
11130
 
11085
11131
  const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
11086
11132
  const scrollParents = getScrollParents(data.contentEl.value);
11087
- const viewportMargin = 12;
11133
+ const viewportMargin = props.stickToTarget ? 0 : 12; // TOOD: prop.viewportMargin
11134
+
11088
11135
  if (!scrollParents.length) {
11089
11136
  scrollParents.push(document.documentElement);
11090
11137
  if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {
@@ -11104,10 +11151,17 @@ function connectedLocationStrategy(data, props, contentStyles) {
11104
11151
  }
11105
11152
  return scrollBox;
11106
11153
  }, undefined);
11107
- viewport.x += viewportMargin;
11108
- viewport.y += viewportMargin;
11109
- viewport.width -= viewportMargin * 2;
11110
- viewport.height -= viewportMargin * 2;
11154
+ if (props.stickToTarget) {
11155
+ viewport.x += Math.min(0, targetBox.x);
11156
+ viewport.y += Math.min(0, targetBox.y);
11157
+ viewport.width = Math.max(viewport.width, targetBox.x + targetBox.width);
11158
+ viewport.height = Math.max(viewport.height, targetBox.y + targetBox.height);
11159
+ } else {
11160
+ viewport.x += viewportMargin;
11161
+ viewport.y += viewportMargin;
11162
+ viewport.width -= viewportMargin * 2;
11163
+ viewport.height -= viewportMargin * 2;
11164
+ }
11111
11165
  let placement = {
11112
11166
  anchor: preferredAnchor.value,
11113
11167
  origin: preferredOrigin.value
@@ -11218,19 +11272,19 @@ function connectedLocationStrategy(data, props, contentStyles) {
11218
11272
 
11219
11273
  // shift
11220
11274
  if (overflows.x.before) {
11221
- if (!props.stickToTarget) x += overflows.x.before;
11275
+ x += overflows.x.before;
11222
11276
  contentBox.x += overflows.x.before;
11223
11277
  }
11224
11278
  if (overflows.x.after) {
11225
- if (!props.stickToTarget) x -= overflows.x.after;
11279
+ x -= overflows.x.after;
11226
11280
  contentBox.x -= overflows.x.after;
11227
11281
  }
11228
11282
  if (overflows.y.before) {
11229
- if (!props.stickToTarget) y += overflows.y.before;
11283
+ y += overflows.y.before;
11230
11284
  contentBox.y += overflows.y.before;
11231
11285
  }
11232
11286
  if (overflows.y.after) {
11233
- if (!props.stickToTarget) y -= overflows.y.after;
11287
+ y -= overflows.y.after;
11234
11288
  contentBox.y -= overflows.y.after;
11235
11289
  }
11236
11290
 
@@ -11239,9 +11293,9 @@ function connectedLocationStrategy(data, props, contentStyles) {
11239
11293
  const overflows = getOverflow(contentBox, viewport);
11240
11294
  available.x = viewport.width - overflows.x.before - overflows.x.after;
11241
11295
  available.y = viewport.height - overflows.y.before - overflows.y.after;
11242
- if (!props.stickToTarget) x += overflows.x.before;
11296
+ x += overflows.x.before;
11243
11297
  contentBox.x += overflows.x.before;
11244
- if (!props.stickToTarget) y += overflows.y.before;
11298
+ y += overflows.y.before;
11245
11299
  contentBox.y += overflows.y.before;
11246
11300
  }
11247
11301
  break;
@@ -11551,7 +11605,6 @@ function useActivator(props, _ref) {
11551
11605
  isActive.value = !isActive.value;
11552
11606
  },
11553
11607
  onMouseenter: e => {
11554
- if (e.sourceCapabilities?.firesTouchEvents) return;
11555
11608
  isHovered = true;
11556
11609
  activatorEl.value = e.currentTarget || e.target;
11557
11610
  runOpenDelay();
@@ -32523,7 +32576,7 @@ function createVuetify$1() {
32523
32576
  };
32524
32577
  });
32525
32578
  }
32526
- const version$1 = "3.10.7-dev.2025-10-23";
32579
+ const version$1 = "3.10.7-dev.2025-10-24";
32527
32580
  createVuetify$1.version = version$1;
32528
32581
 
32529
32582
  // Vue's inject() can only be used in setup
@@ -32548,7 +32601,7 @@ const createVuetify = function () {
32548
32601
  ...options
32549
32602
  });
32550
32603
  };
32551
- const version = "3.10.7-dev.2025-10-23";
32604
+ const version = "3.10.7-dev.2025-10-24";
32552
32605
  createVuetify.version = version;
32553
32606
 
32554
32607
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useMask, useRtl, useTheme, version };