@vuetify/nightly 3.9.3-master.2025-08-03 → 3.9.3-master.2025-08-04

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 (38) hide show
  1. package/CHANGELOG.md +7 -3
  2. package/dist/json/attributes.json +3449 -3445
  3. package/dist/json/importMap-labs.json +50 -50
  4. package/dist/json/importMap.json +140 -140
  5. package/dist/json/tags.json +1 -0
  6. package/dist/json/web-types.json +6332 -6323
  7. package/dist/vuetify-labs.cjs +14 -11
  8. package/dist/vuetify-labs.css +3682 -3681
  9. package/dist/vuetify-labs.d.ts +65 -60
  10. package/dist/vuetify-labs.esm.js +14 -11
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +14 -11
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +10 -10
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +4880 -4879
  17. package/dist/vuetify.d.ts +60 -60
  18. package/dist/vuetify.esm.js +10 -10
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +10 -10
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +459 -459
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -0
  26. package/lib/components/VColorPicker/VColorPickerCanvas.sass +1 -0
  27. package/lib/components/VOverlay/scrollStrategies.js +7 -7
  28. package/lib/components/VOverlay/scrollStrategies.js.map +1 -1
  29. package/lib/entry-bundler.js +1 -1
  30. package/lib/framework.d.ts +60 -60
  31. package/lib/framework.js +1 -1
  32. package/lib/labs/VVideo/VVideo.css +3 -3
  33. package/lib/labs/VVideo/VVideo.d.ts +10 -0
  34. package/lib/labs/VVideo/VVideo.js +4 -1
  35. package/lib/labs/VVideo/VVideo.js.map +1 -1
  36. package/lib/labs/VVideo/VVideo.sass +2 -2
  37. package/lib/labs/VVideo/_variables.scss +3 -2
  38. package/package.json +1 -1
@@ -4,6 +4,7 @@
4
4
  overflow: hidden;
5
5
  contain: content;
6
6
  touch-action: none;
7
+ width: 100%;
7
8
  }
8
9
  .v-color-picker-canvas__dot {
9
10
  position: absolute;
@@ -9,6 +9,7 @@
9
9
  overflow: hidden
10
10
  contain: content
11
11
  touch-action: none
12
+ width: 100%
12
13
 
13
14
  &__dot
14
15
  position: absolute
@@ -39,11 +39,11 @@ function closeScrollStrategy(data) {
39
39
  function onScroll(e) {
40
40
  data.isActive.value = false;
41
41
  }
42
- bindScroll(data.target.value ?? data.contentEl.value, onScroll);
42
+ bindScroll(getTargetEl(data.target.value, data.contentEl.value), onScroll);
43
43
  }
44
44
  function blockScrollStrategy(data, props) {
45
45
  const offsetParent = data.root.value?.offsetParent;
46
- const target = Array.isArray(data.target.value) ? document.elementFromPoint(...data.target.value) : data.target.value;
46
+ const target = getTargetEl(data.target.value, data.contentEl.value);
47
47
  const scrollElements = [...new Set([...getScrollParents(target, props.contained ? offsetParent : undefined), ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));
48
48
  const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;
49
49
  const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement);
@@ -91,7 +91,7 @@ function repositionScrollStrategy(data, props, scope) {
91
91
  }
92
92
  ric = (typeof requestIdleCallback === 'undefined' ? cb => cb() : requestIdleCallback)(() => {
93
93
  scope.run(() => {
94
- bindScroll(data.target.value ?? data.contentEl.value, e => {
94
+ bindScroll(getTargetEl(data.target.value, data.contentEl.value), e => {
95
95
  if (slow) {
96
96
  // If the position calculation is slow,
97
97
  // defer updates until scrolling is finished.
@@ -114,10 +114,10 @@ function repositionScrollStrategy(data, props, scope) {
114
114
  cancelAnimationFrame(raf);
115
115
  });
116
116
  }
117
-
118
- /** @private */
119
- function bindScroll(target, onScroll) {
120
- const el = Array.isArray(target) ? document.elementFromPoint(...target) : target;
117
+ function getTargetEl(target, contentEl) {
118
+ return Array.isArray(target) ? document.elementsFromPoint(...target).find(el => !contentEl?.contains(el)) : target ?? contentEl;
119
+ }
120
+ function bindScroll(el, onScroll) {
121
121
  const scrollElements = [document, ...getScrollParents(el)];
122
122
  scrollElements.forEach(el => {
123
123
  el.addEventListener('scroll', onScroll, {
@@ -1 +1 @@
1
- {"version":3,"file":"scrollStrategies.js","names":["effectScope","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","Promise","resolve","setTimeout","active","run","onScroll","e","bindScroll","target","contentEl","offsetParent","root","Array","isArray","document","elementFromPoint","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","scrollBehavior","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\nexport type ScrollStrategyFunction = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFunction\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await new Promise(resolve => setTimeout(resolve))\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.target.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const target = Array.isArray(data.target.value)\n ? document.elementFromPoint(...data.target.value)\n : data.target.value\n const scrollElements = [...new Set([\n ...getScrollParents(target, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n\n el.style.scrollBehavior = scrollBehavior\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.target.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (target: HTMLElement | [x: number, y: number] | undefined, onScroll: (e: Event) => void) {\n const el = Array.isArray(target) ? document.elementFromPoint(...target) : target\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"scrollStrategies.js","names":["effectScope","onScopeDispose","watchEffect","requestNewFrame","convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","Promise","resolve","setTimeout","active","run","onScroll","e","bindScroll","getTargetEl","target","contentEl","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","scrollBehavior","removeProperty","remove","slow","raf","ric","update","start","performance","now","updateLocation","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","Array","isArray","elementsFromPoint","find","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n targetEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\nexport type ScrollStrategyFunction = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFunction\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await new Promise(resolve => setTimeout(resolve))\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(getTargetEl(data.target.value, data.contentEl.value), onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const target = getTargetEl(data.target.value, data.contentEl.value)\n const scrollElements = [...new Set([\n ...getScrollParents(target, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n\n el.style.scrollBehavior = scrollBehavior\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(getTargetEl(data.target.value, data.contentEl.value), e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\nfunction getTargetEl (\n target: HTMLElement | [x: number, y: number] | undefined,\n contentEl: HTMLElement | undefined,\n) {\n return Array.isArray(target)\n ? document.elementsFromPoint(...target).find(el => !contentEl?.contains(el))\n : target ?? contentEl\n}\n\nfunction bindScroll (el: Element | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.9.3-master.2025-08-03";
19
+ export const version = "3.9.3-master.2025-08-04";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2606,39 +2606,37 @@ declare module 'vue' {
2606
2606
  }
2607
2607
  export interface GlobalComponents {
2608
2608
  VApp: typeof import('vuetify/components')['VApp']
2609
- VAlert: typeof import('vuetify/components')['VAlert']
2610
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2611
2609
  VAppBar: typeof import('vuetify/components')['VAppBar']
2612
2610
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2613
2611
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2614
- VAvatar: typeof import('vuetify/components')['VAvatar']
2615
- VBadge: typeof import('vuetify/components')['VBadge']
2616
2612
  VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2613
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2614
+ VAlert: typeof import('vuetify/components')['VAlert']
2615
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2617
2616
  VBanner: typeof import('vuetify/components')['VBanner']
2618
2617
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2619
2618
  VBannerText: typeof import('vuetify/components')['VBannerText']
2620
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2621
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2619
+ VBadge: typeof import('vuetify/components')['VBadge']
2622
2620
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2623
2621
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2624
2622
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2625
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2626
2623
  VBtn: typeof import('vuetify/components')['VBtn']
2624
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2625
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2627
2626
  VCard: typeof import('vuetify/components')['VCard']
2628
2627
  VCardActions: typeof import('vuetify/components')['VCardActions']
2629
2628
  VCardItem: typeof import('vuetify/components')['VCardItem']
2630
2629
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2631
2630
  VCardText: typeof import('vuetify/components')['VCardText']
2632
2631
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2632
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2633
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2633
2634
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
2634
2635
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2635
- VChip: typeof import('vuetify/components')['VChip']
2636
- VCode: typeof import('vuetify/components')['VCode']
2637
2636
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
2638
- VCombobox: typeof import('vuetify/components')['VCombobox']
2637
+ VCode: typeof import('vuetify/components')['VCode']
2638
+ VChip: typeof import('vuetify/components')['VChip']
2639
2639
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
2640
- VCarousel: typeof import('vuetify/components')['VCarousel']
2641
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2642
2640
  VCounter: typeof import('vuetify/components')['VCounter']
2643
2641
  VDataTable: typeof import('vuetify/components')['VDataTable']
2644
2642
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
@@ -2654,29 +2652,28 @@ declare module 'vue' {
2654
2652
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2655
2653
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2656
2654
  VDialog: typeof import('vuetify/components')['VDialog']
2657
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2658
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2659
2655
  VDivider: typeof import('vuetify/components')['VDivider']
2656
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2660
2657
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2661
2658
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2662
2659
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2663
2660
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2664
- VFab: typeof import('vuetify/components')['VFab']
2665
- VFooter: typeof import('vuetify/components')['VFooter']
2661
+ VField: typeof import('vuetify/components')['VField']
2662
+ VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2666
2663
  VFileInput: typeof import('vuetify/components')['VFileInput']
2664
+ VFooter: typeof import('vuetify/components')['VFooter']
2667
2665
  VIcon: typeof import('vuetify/components')['VIcon']
2668
2666
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2669
2667
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2670
2668
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2671
2669
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2672
2670
  VImg: typeof import('vuetify/components')['VImg']
2673
- VField: typeof import('vuetify/components')['VField']
2674
- VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2675
- VKbd: typeof import('vuetify/components')['VKbd']
2671
+ VFab: typeof import('vuetify/components')['VFab']
2676
2672
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2677
2673
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2678
2674
  VItem: typeof import('vuetify/components')['VItem']
2679
2675
  VInput: typeof import('vuetify/components')['VInput']
2676
+ VKbd: typeof import('vuetify/components')['VKbd']
2680
2677
  VLabel: typeof import('vuetify/components')['VLabel']
2681
2678
  VList: typeof import('vuetify/components')['VList']
2682
2679
  VListGroup: typeof import('vuetify/components')['VListGroup']
@@ -2688,52 +2685,57 @@ declare module 'vue' {
2688
2685
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2689
2686
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2690
2687
  VMain: typeof import('vuetify/components')['VMain']
2691
- VMessages: typeof import('vuetify/components')['VMessages']
2692
2688
  VMenu: typeof import('vuetify/components')['VMenu']
2689
+ VMessages: typeof import('vuetify/components')['VMessages']
2693
2690
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2694
2691
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
2695
2692
  VOverlay: typeof import('vuetify/components')['VOverlay']
2696
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2697
2693
  VPagination: typeof import('vuetify/components')['VPagination']
2694
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2695
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2698
2696
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2699
2697
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2700
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2701
2698
  VRating: typeof import('vuetify/components')['VRating']
2702
2699
  VSelect: typeof import('vuetify/components')['VSelect']
2703
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2704
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2700
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2705
2701
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2706
- VSlider: typeof import('vuetify/components')['VSlider']
2707
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2708
2702
  VSheet: typeof import('vuetify/components')['VSheet']
2709
2703
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2710
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2711
- VSwitch: typeof import('vuetify/components')['VSwitch']
2712
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
2704
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2705
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2706
+ VSlider: typeof import('vuetify/components')['VSlider']
2707
+ VStepper: typeof import('vuetify/components')['VStepper']
2708
+ VStepperActions: typeof import('vuetify/components')['VStepperActions']
2709
+ VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2710
+ VStepperItem: typeof import('vuetify/components')['VStepperItem']
2711
+ VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2712
+ VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2713
2713
  VTable: typeof import('vuetify/components')['VTable']
2714
- VTextarea: typeof import('vuetify/components')['VTextarea']
2714
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
2715
2715
  VTab: typeof import('vuetify/components')['VTab']
2716
2716
  VTabs: typeof import('vuetify/components')['VTabs']
2717
2717
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2718
2718
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2719
+ VTextarea: typeof import('vuetify/components')['VTextarea']
2720
+ VTextField: typeof import('vuetify/components')['VTextField']
2719
2721
  VTimeline: typeof import('vuetify/components')['VTimeline']
2720
2722
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2721
- VTooltip: typeof import('vuetify/components')['VTooltip']
2722
2723
  VTimePicker: typeof import('vuetify/components')['VTimePicker']
2723
2724
  VTimePickerClock: typeof import('vuetify/components')['VTimePickerClock']
2724
2725
  VTimePickerControls: typeof import('vuetify/components')['VTimePickerControls']
2725
- VTextField: typeof import('vuetify/components')['VTextField']
2726
2726
  VToolbar: typeof import('vuetify/components')['VToolbar']
2727
2727
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2728
2728
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2729
2729
  VTreeview: typeof import('vuetify/components')['VTreeview']
2730
2730
  VTreeviewItem: typeof import('vuetify/components')['VTreeviewItem']
2731
2731
  VTreeviewGroup: typeof import('vuetify/components')['VTreeviewGroup']
2732
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2732
2733
  VWindow: typeof import('vuetify/components')['VWindow']
2733
2734
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2735
+ VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2734
2736
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2737
+ VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2735
2738
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2736
- VHover: typeof import('vuetify/components')['VHover']
2737
2739
  VForm: typeof import('vuetify/components')['VForm']
2738
2740
  VContainer: typeof import('vuetify/components')['VContainer']
2739
2741
  VCol: typeof import('vuetify/components')['VCol']
@@ -2741,25 +2743,22 @@ declare module 'vue' {
2741
2743
  VSpacer: typeof import('vuetify/components')['VSpacer']
2742
2744
  VLayout: typeof import('vuetify/components')['VLayout']
2743
2745
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2744
- VStepper: typeof import('vuetify/components')['VStepper']
2745
- VStepperActions: typeof import('vuetify/components')['VStepperActions']
2746
- VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2747
- VStepperItem: typeof import('vuetify/components')['VStepperItem']
2748
- VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2749
- VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2750
2746
  VLazy: typeof import('vuetify/components')['VLazy']
2751
- VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2747
+ VHover: typeof import('vuetify/components')['VHover']
2752
2748
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2749
+ VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2753
2750
  VParallax: typeof import('vuetify/components')['VParallax']
2754
- VRadio: typeof import('vuetify/components')['VRadio']
2755
2751
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2756
- VResponsive: typeof import('vuetify/components')['VResponsive']
2757
- VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2752
+ VRadio: typeof import('vuetify/components')['VRadio']
2753
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2758
2754
  VSparkline: typeof import('vuetify/components')['VSparkline']
2755
+ VResponsive: typeof import('vuetify/components')['VResponsive']
2759
2756
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2757
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2758
+ VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2760
2759
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2761
- VValidation: typeof import('vuetify/components')['VValidation']
2762
2760
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2761
+ VValidation: typeof import('vuetify/components')['VValidation']
2763
2762
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2764
2763
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2765
2764
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2776,32 +2775,33 @@ declare module 'vue' {
2776
2775
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2777
2776
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2778
2777
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2779
- VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2778
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2779
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2780
+ VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2781
+ VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2782
+ VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2783
+ VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2784
+ VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2785
+ VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2786
+ VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2780
2787
  VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2781
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2782
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2788
+ VPie: typeof import('vuetify/labs/components')['VPie']
2789
+ VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
2790
+ VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
2791
+ VVideo: typeof import('vuetify/labs/components')['VVideo']
2792
+ VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
2793
+ VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
2783
2794
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2784
2795
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2785
2796
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2786
2797
  VPicker: typeof import('vuetify/labs/components')['VPicker']
2787
2798
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2788
- VVideo: typeof import('vuetify/labs/components')['VVideo']
2789
- VVideoControls: typeof import('vuetify/labs/components')['VVideoControls']
2790
- VVideoVolume: typeof import('vuetify/labs/components')['VVideoVolume']
2791
2799
  VHotkey: typeof import('vuetify/labs/components')['VHotkey']
2800
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2801
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2792
2802
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2793
2803
  VMaskInput: typeof import('vuetify/labs/components')['VMaskInput']
2794
2804
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2795
- VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2796
- VPie: typeof import('vuetify/labs/components')['VPie']
2797
- VPieSegment: typeof import('vuetify/labs/components')['VPieSegment']
2798
- VPieTooltip: typeof import('vuetify/labs/components')['VPieTooltip']
2799
- VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2800
- VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2801
- VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2802
- VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2803
- VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2804
- VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2805
2805
  }
2806
2806
  export interface GlobalDirectives {
2807
2807
  vClickOutside: typeof import('vuetify/directives')['ClickOutside']
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.9.3-master.2025-08-03";
112
+ export const version = "3.9.3-master.2025-08-04";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
@@ -3,6 +3,7 @@
3
3
  flex-direction: column;
4
4
  align-items: center;
5
5
  position: relative;
6
+ --v-video-aspect-ratio: 1.7777777778;
6
7
  --v-video-controls-height: 58px;
7
8
  --v-video-controls-pill-border-radius: 99px;
8
9
  }
@@ -145,17 +146,16 @@
145
146
  letter-spacing: 0.02em;
146
147
  }
147
148
  .v-video--variant-player {
148
- width: 480px;
149
+ width: 100%;
149
150
  }
150
151
  .v-video--variant-player > .v-video__content {
151
152
  width: 100%;
152
- height: 270px;
153
+ aspect-ratio: var(--v-video-aspect-ratio);
153
154
  }
154
155
  .v-video--variant-background {
155
156
  outline: none;
156
157
  position: absolute;
157
158
  pointer-events: none;
158
- width: 100%;
159
159
  height: 100%;
160
160
  }
161
161
  .v-video--variant-background > .v-video__content {
@@ -39,6 +39,7 @@ export declare const makeVVideoProps: <Defaults extends {
39
39
  width?: unknown;
40
40
  class?: unknown;
41
41
  style?: unknown;
42
+ aspectRatio?: unknown;
42
43
  autoplay?: unknown;
43
44
  muted?: unknown;
44
45
  eager?: unknown;
@@ -2110,6 +2111,10 @@ export declare const makeVVideoProps: <Defaults extends {
2110
2111
  type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : import("vue").StyleValue | Defaults["style"]>;
2111
2112
  default: unknown extends Defaults["style"] ? import("vue").StyleValue : NonNullable<import("vue").StyleValue> | Defaults["style"];
2112
2113
  };
2114
+ aspectRatio: unknown extends Defaults["aspectRatio"] ? (StringConstructor | NumberConstructor)[] : {
2115
+ type: PropType<unknown extends Defaults["aspectRatio"] ? string | number : string | number | Defaults["aspectRatio"]>;
2116
+ default: unknown extends Defaults["aspectRatio"] ? string | number : NonNullable<string | number> | Defaults["aspectRatio"];
2117
+ };
2113
2118
  autoplay: unknown extends Defaults["autoplay"] ? BooleanConstructor : {
2114
2119
  type: PropType<unknown extends Defaults["autoplay"] ? boolean : boolean | Defaults["autoplay"]>;
2115
2120
  default: unknown extends Defaults["autoplay"] ? boolean : boolean | Defaults["autoplay"];
@@ -3984,6 +3989,7 @@ export declare const VVideo: {
3984
3989
  type?: string | undefined;
3985
3990
  height?: string | number | undefined;
3986
3991
  width?: string | number | undefined;
3992
+ aspectRatio?: string | number | undefined;
3987
3993
  backgroundColor?: string | undefined;
3988
3994
  color?: string | undefined;
3989
3995
  maxHeight?: string | number | undefined;
@@ -4933,6 +4939,7 @@ export declare const VVideo: {
4933
4939
  type?: string | undefined;
4934
4940
  height?: string | number | undefined;
4935
4941
  width?: string | number | undefined;
4942
+ aspectRatio?: string | number | undefined;
4936
4943
  backgroundColor?: string | undefined;
4937
4944
  color?: string | undefined;
4938
4945
  maxHeight?: string | number | undefined;
@@ -5867,6 +5874,7 @@ export declare const VVideo: {
5867
5874
  type?: string | undefined;
5868
5875
  height?: string | number | undefined;
5869
5876
  width?: string | number | undefined;
5877
+ aspectRatio?: string | number | undefined;
5870
5878
  backgroundColor?: string | undefined;
5871
5879
  color?: string | undefined;
5872
5880
  maxHeight?: string | number | undefined;
@@ -6828,6 +6836,7 @@ export declare const VVideo: {
6828
6836
  type: PropType<import("vue").StyleValue>;
6829
6837
  default: null;
6830
6838
  };
6839
+ aspectRatio: (StringConstructor | NumberConstructor)[];
6831
6840
  autoplay: BooleanConstructor;
6832
6841
  muted: BooleanConstructor;
6833
6842
  eager: BooleanConstructor;
@@ -6899,6 +6908,7 @@ export declare const VVideo: {
6899
6908
  type: PropType<import("vue").StyleValue>;
6900
6909
  default: null;
6901
6910
  };
6911
+ aspectRatio: (StringConstructor | NumberConstructor)[];
6902
6912
  autoplay: BooleanConstructor;
6903
6913
  muted: BooleanConstructor;
6904
6914
  eager: BooleanConstructor;
@@ -24,6 +24,7 @@ import { nextTick, onBeforeUnmount, onMounted, ref, shallowRef, toRef, watch } f
24
24
  import { createRange, genericComponent, omit, pick, propsFactory, useRender } from "../../util/index.js"; // Types
25
25
  const allowedVariants = ['background', 'player'];
26
26
  export const makeVVideoProps = propsFactory({
27
+ aspectRatio: [String, Number],
27
28
  autoplay: Boolean,
28
29
  muted: Boolean,
29
30
  eager: Boolean,
@@ -340,7 +341,9 @@ export const VVideo = genericComponent()({
340
341
  "class": _normalizeClass(['v-video', `v-video--variant-${props.variant}`, `v-video--${state.value}`, {
341
342
  'v-video--playing': playing.value
342
343
  }, themeClasses.value, densityClasses.value, roundedContainerClasses.value, props.class]),
343
- "style": _normalizeStyle([props.variant === 'background' ? [] : pick(dimensionStyles.value, ['width', 'min-width', 'max-width']), props.style]),
344
+ "style": _normalizeStyle([{
345
+ '--v-video-aspect-ratio': props.aspectRatio
346
+ }, props.variant === 'background' ? [] : pick(dimensionStyles.value, ['width', 'minWidth', 'maxWidth']), props.style]),
344
347
  "onKeydown": onKeydown,
345
348
  "onClick": onClick
346
349
  }, [_createElementVNode("div", {