@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.
- package/CHANGELOG.md +7 -3
- package/dist/json/attributes.json +3449 -3445
- package/dist/json/importMap-labs.json +50 -50
- package/dist/json/importMap.json +140 -140
- package/dist/json/tags.json +1 -0
- package/dist/json/web-types.json +6332 -6323
- package/dist/vuetify-labs.cjs +14 -11
- package/dist/vuetify-labs.css +3682 -3681
- package/dist/vuetify-labs.d.ts +65 -60
- package/dist/vuetify-labs.esm.js +14 -11
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +14 -11
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +10 -10
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4880 -4879
- package/dist/vuetify.d.ts +60 -60
- package/dist/vuetify.esm.js +10 -10
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +10 -10
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +459 -459
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -0
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +1 -0
- package/lib/components/VOverlay/scrollStrategies.js +7 -7
- package/lib/components/VOverlay/scrollStrategies.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +60 -60
- package/lib/framework.js +1 -1
- package/lib/labs/VVideo/VVideo.css +3 -3
- package/lib/labs/VVideo/VVideo.d.ts +10 -0
- package/lib/labs/VVideo/VVideo.js +4 -1
- package/lib/labs/VVideo/VVideo.js.map +1 -1
- package/lib/labs/VVideo/VVideo.sass +2 -2
- package/lib/labs/VVideo/_variables.scss +3 -2
- package/package.json +1 -1
@@ -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
|
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 =
|
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
|
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
|
-
|
119
|
-
|
120
|
-
|
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":[]}
|
package/lib/entry-bundler.js
CHANGED
@@ -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-
|
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";
|
package/lib/framework.d.ts
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
2665
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
2711
|
-
|
2712
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
2757
|
-
|
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
|
-
|
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
|
-
|
2782
|
-
|
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
@@ -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:
|
149
|
+
width: 100%;
|
149
150
|
}
|
150
151
|
.v-video--variant-player > .v-video__content {
|
151
152
|
width: 100%;
|
152
|
-
|
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([
|
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", {
|