vuetify 3.6.15 → 3.7.0
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/json/attributes.json +182 -26
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +150 -150
- package/dist/json/tags.json +44 -5
- package/dist/json/web-types.json +445 -42
- package/dist/vuetify-labs.css +2359 -2344
- package/dist/vuetify-labs.d.ts +690 -341
- package/dist/vuetify-labs.esm.js +253 -211
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +252 -210
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +2553 -2538
- package/dist/vuetify.d.ts +559 -315
- package/dist/vuetify.esm.js +189 -127
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +188 -126
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +160 -156
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VApp/VApp.mjs +2 -5
- package/lib/components/VApp/VApp.mjs.map +1 -1
- package/lib/components/VApp/index.d.mts +6 -6
- package/lib/components/VAppBar/VAppBar.mjs +5 -5
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.mts +8 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs +15 -8
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +78 -49
- package/lib/components/VAvatar/VAvatar.css +9 -0
- package/lib/components/VAvatar/VAvatar.mjs +6 -1
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.sass +1 -0
- package/lib/components/VAvatar/_variables.scss +13 -0
- package/lib/components/VAvatar/index.d.mts +6 -0
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs +2 -3
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBottomNavigation/index.d.mts +2 -2
- package/lib/components/VBreadcrumbs/index.d.mts +8 -8
- package/lib/components/VBtn/VBtn.css +0 -4
- package/lib/components/VBtn/VBtn.mjs +3 -1
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +0 -6
- package/lib/components/VBtn/_variables.scss +0 -1
- package/lib/components/VBtn/index.d.mts +6 -0
- package/lib/components/VCard/VCard.css +1 -0
- package/lib/components/VCard/VCard.sass +1 -0
- package/lib/components/VCard/_variables.scss +7 -3
- package/lib/components/VCarousel/index.d.mts +9 -0
- package/lib/components/VCheckbox/index.d.mts +7 -6
- package/lib/components/VCombobox/VCombobox.mjs +15 -8
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +78 -49
- package/lib/components/VDialog/index.d.mts +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +7 -2
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +72 -0
- package/lib/components/VFab/index.d.mts +6 -0
- package/lib/components/VFileInput/index.d.mts +19 -18
- package/lib/components/VFooter/VFooter.mjs +1 -3
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VFooter/index.d.mts +3 -3
- package/lib/components/VForm/index.d.mts +10 -9
- package/lib/components/VGrid/VContainer.mjs +6 -1
- package/lib/components/VGrid/VContainer.mjs.map +1 -1
- package/lib/components/VGrid/index.d.mts +36 -0
- package/lib/components/VImg/VImg.css +9 -0
- package/lib/components/VImg/VImg.mjs +2 -0
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +9 -0
- package/lib/components/VImg/index.d.mts +9 -0
- package/lib/components/VInput/index.d.mts +7 -6
- package/lib/components/VLayout/VLayout.mjs +2 -5
- package/lib/components/VLayout/VLayout.mjs.map +1 -1
- package/lib/components/VLayout/VLayoutItem.mjs +4 -6
- package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
- package/lib/components/VLayout/index.d.mts +9 -9
- package/lib/components/VList/VListItem.css +2 -2
- package/lib/components/VList/VListItem.mjs +3 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +1 -1
- package/lib/components/VList/index.d.mts +19 -18
- package/lib/components/VMain/VMain.mjs +2 -3
- package/lib/components/VMain/VMain.mjs.map +1 -1
- package/lib/components/VMain/index.d.mts +2 -2
- package/lib/components/VMenu/VMenu.mjs +26 -8
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.mts +30 -15
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +3 -4
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +5 -4
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/locationStrategies.mjs +0 -6
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +3 -2
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.mts +7 -6
- package/lib/components/VRangeSlider/index.d.mts +7 -6
- package/lib/components/VSelect/VSelect.mjs +15 -13
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +78 -49
- package/lib/components/VSelect/useScrolling.mjs +3 -3
- package/lib/components/VSelect/useScrolling.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.mjs +3 -1
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/index.d.mts +6 -0
- package/lib/components/VSlider/index.d.mts +7 -6
- package/lib/components/VSnackbar/index.d.mts +3 -3
- package/lib/components/VSpeedDial/VSpeedDial.mjs +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.mjs.map +1 -1
- package/lib/components/VSpeedDial/index.d.mts +28 -13
- package/lib/components/VSwitch/index.d.mts +7 -6
- package/lib/components/VTabs/index.d.mts +21 -3
- package/lib/components/VTextField/index.d.mts +19 -18
- package/lib/components/VTextarea/index.d.mts +19 -18
- package/lib/components/VTooltip/index.d.mts +3 -3
- package/lib/components/VValidation/index.d.mts +7 -6
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs +2 -0
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VVirtualScroll/index.d.mts +3 -0
- package/lib/components/index.d.mts +504 -259
- package/lib/composables/layout.mjs +37 -14
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +3 -3
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/openStrategies.mjs +4 -2
- package/lib/composables/nested/openStrategies.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +5 -5
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/validation.mjs +8 -6
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/virtual.mjs +1 -0
- package/lib/composables/virtual.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.mts +55 -56
- package/lib/labs/VDateInput/index.d.mts +7 -6
- package/lib/labs/VNumberInput/index.d.mts +43 -42
- package/lib/labs/VPullToRefresh/VPullToRefresh.mjs +4 -3
- package/lib/labs/VPullToRefresh/VPullToRefresh.mjs.map +1 -1
- package/lib/labs/VPullToRefresh/index.d.mts +9 -0
- package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
- package/lib/labs/VStepperVertical/index.d.mts +36 -0
- package/lib/labs/VTreeview/VTreeview.mjs +21 -6
- package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
- package/lib/labs/VTreeview/VTreeviewChildren.mjs +33 -10
- package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.css +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.mjs +14 -74
- package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.sass +2 -5
- package/lib/labs/VTreeview/index.d.mts +133 -95
- package/lib/labs/components.d.mts +193 -109
- package/lib/util/helpers.mjs +5 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +2 -2
package/dist/vuetify.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.
|
|
2
|
+
* Vuetify v3.7.0
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { shallowRef, Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment,
|
|
7
|
+
import { shallowRef, Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
|
|
8
8
|
|
|
9
9
|
const IN_BROWSER = typeof window !== 'undefined';
|
|
10
10
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
|
@@ -462,16 +462,6 @@ function defer(timeout, cb) {
|
|
|
462
462
|
const timeoutId = window.setTimeout(cb, timeout);
|
|
463
463
|
return () => window.clearTimeout(timeoutId);
|
|
464
464
|
}
|
|
465
|
-
function eagerComputed(fn, options) {
|
|
466
|
-
const result = shallowRef();
|
|
467
|
-
watchEffect(() => {
|
|
468
|
-
result.value = fn();
|
|
469
|
-
}, {
|
|
470
|
-
flush: 'sync',
|
|
471
|
-
...options
|
|
472
|
-
});
|
|
473
|
-
return readonly(result);
|
|
474
|
-
}
|
|
475
465
|
function isClickInsideElement(event, targetDiv) {
|
|
476
466
|
const mouseX = event.clientX;
|
|
477
467
|
const mouseY = event.clientY;
|
|
@@ -498,6 +488,11 @@ function templateRef() {
|
|
|
498
488
|
});
|
|
499
489
|
return fn;
|
|
500
490
|
}
|
|
491
|
+
function checkPrintable(e) {
|
|
492
|
+
const isPrintableChar = e.key.length === 1;
|
|
493
|
+
const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
|
|
494
|
+
return isPrintableChar && noModifier;
|
|
495
|
+
}
|
|
501
496
|
|
|
502
497
|
// Utilities
|
|
503
498
|
const block = ['top', 'bottom'];
|
|
@@ -2083,9 +2078,7 @@ const makeLayoutItemProps = propsFactory({
|
|
|
2083
2078
|
function useLayout() {
|
|
2084
2079
|
const layout = inject$1(VuetifyLayoutKey);
|
|
2085
2080
|
if (!layout) throw new Error('[Vuetify] Could not find injected layout');
|
|
2086
|
-
const layoutIsReady = nextTick();
|
|
2087
2081
|
return {
|
|
2088
|
-
layoutIsReady,
|
|
2089
2082
|
getLayoutItem: layout.getLayoutItem,
|
|
2090
2083
|
mainRect: layout.mainRect,
|
|
2091
2084
|
mainStyles: layout.mainStyles
|
|
@@ -2102,7 +2095,6 @@ function useLayoutItem(options) {
|
|
|
2102
2095
|
const isKeptAlive = shallowRef(false);
|
|
2103
2096
|
onDeactivated(() => isKeptAlive.value = true);
|
|
2104
2097
|
onActivated(() => isKeptAlive.value = false);
|
|
2105
|
-
const layoutIsReady = nextTick();
|
|
2106
2098
|
const {
|
|
2107
2099
|
layoutItemStyles,
|
|
2108
2100
|
layoutItemScrimStyles
|
|
@@ -2115,8 +2107,7 @@ function useLayoutItem(options) {
|
|
|
2115
2107
|
return {
|
|
2116
2108
|
layoutItemStyles,
|
|
2117
2109
|
layoutRect: layout.layoutRect,
|
|
2118
|
-
layoutItemScrimStyles
|
|
2119
|
-
layoutIsReady
|
|
2110
|
+
layoutItemScrimStyles
|
|
2120
2111
|
};
|
|
2121
2112
|
}
|
|
2122
2113
|
const generateLayers = (layout, positions, layoutSizes, activeItems) => {
|
|
@@ -2162,7 +2153,29 @@ function createLayout(props) {
|
|
|
2162
2153
|
resizeRef,
|
|
2163
2154
|
contentRect: layoutRect
|
|
2164
2155
|
} = useResizeObserver();
|
|
2165
|
-
const
|
|
2156
|
+
const computedOverlaps = computed(() => {
|
|
2157
|
+
const map = new Map();
|
|
2158
|
+
const overlaps = props.overlaps ?? [];
|
|
2159
|
+
for (const overlap of overlaps.filter(item => item.includes(':'))) {
|
|
2160
|
+
const [top, bottom] = overlap.split(':');
|
|
2161
|
+
if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;
|
|
2162
|
+
const topPosition = positions.get(top);
|
|
2163
|
+
const bottomPosition = positions.get(bottom);
|
|
2164
|
+
const topAmount = layoutSizes.get(top);
|
|
2165
|
+
const bottomAmount = layoutSizes.get(bottom);
|
|
2166
|
+
if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;
|
|
2167
|
+
map.set(bottom, {
|
|
2168
|
+
position: topPosition.value,
|
|
2169
|
+
amount: parseInt(topAmount.value, 10)
|
|
2170
|
+
});
|
|
2171
|
+
map.set(top, {
|
|
2172
|
+
position: bottomPosition.value,
|
|
2173
|
+
amount: -parseInt(bottomAmount.value, 10)
|
|
2174
|
+
});
|
|
2175
|
+
}
|
|
2176
|
+
return map;
|
|
2177
|
+
});
|
|
2178
|
+
const layers = computed(() => {
|
|
2166
2179
|
const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b);
|
|
2167
2180
|
const layout = [];
|
|
2168
2181
|
for (const p of uniquePriorities) {
|
|
@@ -2188,7 +2201,7 @@ function createLayout(props) {
|
|
|
2188
2201
|
})
|
|
2189
2202
|
};
|
|
2190
2203
|
});
|
|
2191
|
-
const items =
|
|
2204
|
+
const items = computed(() => {
|
|
2192
2205
|
return layers.value.slice(1).map((_ref, index) => {
|
|
2193
2206
|
let {
|
|
2194
2207
|
id
|
|
@@ -2210,7 +2223,10 @@ function createLayout(props) {
|
|
|
2210
2223
|
return items.value.find(item => item.id === id);
|
|
2211
2224
|
};
|
|
2212
2225
|
const rootVm = getCurrentInstance('createLayout');
|
|
2213
|
-
const
|
|
2226
|
+
const isMounted = shallowRef(false);
|
|
2227
|
+
onMounted(() => {
|
|
2228
|
+
isMounted.value = true;
|
|
2229
|
+
});
|
|
2214
2230
|
provide(VuetifyLayoutKey, {
|
|
2215
2231
|
register: (vm, _ref2) => {
|
|
2216
2232
|
let {
|
|
@@ -2248,9 +2264,13 @@ function createLayout(props) {
|
|
|
2248
2264
|
transition: 'none'
|
|
2249
2265
|
})
|
|
2250
2266
|
};
|
|
2251
|
-
if (
|
|
2267
|
+
if (!isMounted.value) return styles;
|
|
2252
2268
|
const item = items.value[index.value];
|
|
2253
2269
|
if (!item) throw new Error(`[Vuetify] Could not find layout item "${id}"`);
|
|
2270
|
+
const overlap = computedOverlaps.value.get(id);
|
|
2271
|
+
if (overlap) {
|
|
2272
|
+
item[overlap.position] += overlap.amount;
|
|
2273
|
+
}
|
|
2254
2274
|
return {
|
|
2255
2275
|
...styles,
|
|
2256
2276
|
height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,
|
|
@@ -2283,8 +2303,7 @@ function createLayout(props) {
|
|
|
2283
2303
|
getLayoutItem,
|
|
2284
2304
|
items,
|
|
2285
2305
|
layoutRect,
|
|
2286
|
-
rootZIndex
|
|
2287
|
-
layoutIsReady
|
|
2306
|
+
rootZIndex
|
|
2288
2307
|
});
|
|
2289
2308
|
const layoutClasses = computed(() => ['v-layout', {
|
|
2290
2309
|
'v-layout--full-height': props.fullHeight
|
|
@@ -2300,7 +2319,6 @@ function createLayout(props) {
|
|
|
2300
2319
|
getLayoutItem,
|
|
2301
2320
|
items,
|
|
2302
2321
|
layoutRect,
|
|
2303
|
-
layoutIsReady,
|
|
2304
2322
|
layoutRef: resizeRef
|
|
2305
2323
|
};
|
|
2306
2324
|
}
|
|
@@ -2997,9 +3015,7 @@ const VApp = genericComponent()({
|
|
|
2997
3015
|
"style": [props.style]
|
|
2998
3016
|
}, [createVNode("div", {
|
|
2999
3017
|
"class": "v-application__wrap"
|
|
3000
|
-
}, [
|
|
3001
|
-
default: () => [createVNode(Fragment, null, [slots.default?.()])]
|
|
3002
|
-
})])]));
|
|
3018
|
+
}, [slots.default?.()])]));
|
|
3003
3019
|
return {
|
|
3004
3020
|
getLayoutItem,
|
|
3005
3021
|
items,
|
|
@@ -3688,6 +3704,7 @@ const Intersect = {
|
|
|
3688
3704
|
// not intended for public use, this is passed in by vuetify-loader
|
|
3689
3705
|
|
|
3690
3706
|
const makeVImgProps = propsFactory({
|
|
3707
|
+
absolute: Boolean,
|
|
3691
3708
|
alt: String,
|
|
3692
3709
|
cover: Boolean,
|
|
3693
3710
|
color: String,
|
|
@@ -3944,6 +3961,7 @@ const VImg = genericComponent()({
|
|
|
3944
3961
|
const responsiveProps = VResponsive.filterProps(props);
|
|
3945
3962
|
return withDirectives(createVNode(VResponsive, mergeProps({
|
|
3946
3963
|
"class": ['v-img', {
|
|
3964
|
+
'v-img--absolute': props.absolute,
|
|
3947
3965
|
'v-img--booting': !isBooted.value
|
|
3948
3966
|
}, backgroundColorClasses.value, roundedClasses.value, props.class],
|
|
3949
3967
|
"style": [{
|
|
@@ -4356,8 +4374,9 @@ const VAppBar = genericComponent()({
|
|
|
4356
4374
|
const isFlat = computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
|
|
4357
4375
|
const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
|
|
4358
4376
|
const height = computed(() => {
|
|
4359
|
-
|
|
4360
|
-
const
|
|
4377
|
+
if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
|
|
4378
|
+
const height = vToolbarRef.value?.contentHeight ?? 0;
|
|
4379
|
+
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
|
|
4361
4380
|
if (!canHide.value) return height + extensionHeight;
|
|
4362
4381
|
return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
|
|
4363
4382
|
});
|
|
@@ -4378,8 +4397,7 @@ const VAppBar = genericComponent()({
|
|
|
4378
4397
|
ssrBootStyles
|
|
4379
4398
|
} = useSsrBoot();
|
|
4380
4399
|
const {
|
|
4381
|
-
layoutItemStyles
|
|
4382
|
-
layoutIsReady
|
|
4400
|
+
layoutItemStyles
|
|
4383
4401
|
} = useLayoutItem({
|
|
4384
4402
|
id: props.name,
|
|
4385
4403
|
order: computed(() => parseInt(props.order, 10)),
|
|
@@ -4407,7 +4425,7 @@ const VAppBar = genericComponent()({
|
|
|
4407
4425
|
"flat": isFlat.value
|
|
4408
4426
|
}), slots);
|
|
4409
4427
|
});
|
|
4410
|
-
return
|
|
4428
|
+
return {};
|
|
4411
4429
|
}
|
|
4412
4430
|
});
|
|
4413
4431
|
|
|
@@ -5744,6 +5762,7 @@ const makeVBtnProps = propsFactory({
|
|
|
5744
5762
|
type: Boolean,
|
|
5745
5763
|
default: undefined
|
|
5746
5764
|
},
|
|
5765
|
+
activeColor: String,
|
|
5747
5766
|
baseColor: String,
|
|
5748
5767
|
symbol: {
|
|
5749
5768
|
type: null,
|
|
@@ -5835,10 +5854,11 @@ const VBtn = genericComponent()({
|
|
|
5835
5854
|
}
|
|
5836
5855
|
return group?.isSelected.value;
|
|
5837
5856
|
});
|
|
5857
|
+
const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
|
|
5838
5858
|
const variantProps = computed(() => {
|
|
5839
5859
|
const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
|
|
5840
5860
|
return {
|
|
5841
|
-
color: showColor ?
|
|
5861
|
+
color: showColor ? color.value ?? props.baseColor : props.baseColor,
|
|
5842
5862
|
variant: props.variant
|
|
5843
5863
|
};
|
|
5844
5864
|
});
|
|
@@ -6179,6 +6199,7 @@ const makeVAvatarProps = propsFactory({
|
|
|
6179
6199
|
icon: IconValue,
|
|
6180
6200
|
image: String,
|
|
6181
6201
|
text: String,
|
|
6202
|
+
...makeBorderProps(),
|
|
6182
6203
|
...makeComponentProps(),
|
|
6183
6204
|
...makeDensityProps(),
|
|
6184
6205
|
...makeRoundedProps(),
|
|
@@ -6199,6 +6220,9 @@ const VAvatar = genericComponent()({
|
|
|
6199
6220
|
const {
|
|
6200
6221
|
themeClasses
|
|
6201
6222
|
} = provideTheme(props);
|
|
6223
|
+
const {
|
|
6224
|
+
borderClasses
|
|
6225
|
+
} = useBorder(props);
|
|
6202
6226
|
const {
|
|
6203
6227
|
colorClasses,
|
|
6204
6228
|
colorStyles,
|
|
@@ -6218,7 +6242,7 @@ const VAvatar = genericComponent()({
|
|
|
6218
6242
|
"class": ['v-avatar', {
|
|
6219
6243
|
'v-avatar--start': props.start,
|
|
6220
6244
|
'v-avatar--end': props.end
|
|
6221
|
-
}, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
|
|
6245
|
+
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
|
|
6222
6246
|
"style": [colorStyles.value, sizeStyles.value, props.style]
|
|
6223
6247
|
}, {
|
|
6224
6248
|
default: () => [!slots.default ? props.image ? createVNode(VImg, {
|
|
@@ -6918,12 +6942,14 @@ function useValidation(props) {
|
|
|
6918
6942
|
const validateOn = computed(() => {
|
|
6919
6943
|
let value = (props.validateOn ?? form?.validateOn.value) || 'input';
|
|
6920
6944
|
if (value === 'lazy') value = 'input lazy';
|
|
6945
|
+
if (value === 'eager') value = 'input eager';
|
|
6921
6946
|
const set = new Set(value?.split(' ') ?? []);
|
|
6922
6947
|
return {
|
|
6923
|
-
blur: set.has('blur') || set.has('input'),
|
|
6924
6948
|
input: set.has('input'),
|
|
6925
|
-
|
|
6926
|
-
|
|
6949
|
+
blur: set.has('blur') || set.has('input') || set.has('invalid-input'),
|
|
6950
|
+
invalidInput: set.has('invalid-input'),
|
|
6951
|
+
lazy: set.has('lazy'),
|
|
6952
|
+
eager: set.has('eager')
|
|
6927
6953
|
};
|
|
6928
6954
|
});
|
|
6929
6955
|
const isValid = computed(() => {
|
|
@@ -6960,11 +6986,11 @@ function useValidation(props) {
|
|
|
6960
6986
|
});
|
|
6961
6987
|
onMounted(async () => {
|
|
6962
6988
|
if (!validateOn.value.lazy) {
|
|
6963
|
-
await validate(
|
|
6989
|
+
await validate(!validateOn.value.eager);
|
|
6964
6990
|
}
|
|
6965
6991
|
form?.update(uid.value, isValid.value, errorMessages.value);
|
|
6966
6992
|
});
|
|
6967
|
-
useToggleScope(() => validateOn.value.input, () => {
|
|
6993
|
+
useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
|
|
6968
6994
|
watch(validationModel, () => {
|
|
6969
6995
|
if (validationModel.value != null) {
|
|
6970
6996
|
validate();
|
|
@@ -6992,7 +7018,7 @@ function useValidation(props) {
|
|
|
6992
7018
|
async function resetValidation() {
|
|
6993
7019
|
isPristine.value = true;
|
|
6994
7020
|
if (!validateOn.value.lazy) {
|
|
6995
|
-
await validate(
|
|
7021
|
+
await validate(!validateOn.value.eager);
|
|
6996
7022
|
} else {
|
|
6997
7023
|
internalErrorMessages.value = [];
|
|
6998
7024
|
}
|
|
@@ -7932,7 +7958,9 @@ const VSlideGroup = genericComponent()({
|
|
|
7932
7958
|
selected: group.selected,
|
|
7933
7959
|
scrollTo,
|
|
7934
7960
|
scrollOffset,
|
|
7935
|
-
focus
|
|
7961
|
+
focus,
|
|
7962
|
+
hasPrev,
|
|
7963
|
+
hasNext
|
|
7936
7964
|
};
|
|
7937
7965
|
}
|
|
7938
7966
|
});
|
|
@@ -8402,6 +8430,7 @@ const leafSingleActiveStrategy = mandatory => {
|
|
|
8402
8430
|
return strategy;
|
|
8403
8431
|
};
|
|
8404
8432
|
|
|
8433
|
+
// Utilities
|
|
8405
8434
|
const singleOpenStrategy = {
|
|
8406
8435
|
open: _ref => {
|
|
8407
8436
|
let {
|
|
@@ -8435,11 +8464,11 @@ const multipleOpenStrategy = {
|
|
|
8435
8464
|
parents
|
|
8436
8465
|
} = _ref2;
|
|
8437
8466
|
if (value) {
|
|
8438
|
-
let parent = parents.get(id);
|
|
8467
|
+
let parent = toRaw(parents.get(id));
|
|
8439
8468
|
opened.add(id);
|
|
8440
8469
|
while (parent != null && parent !== id) {
|
|
8441
8470
|
opened.add(parent);
|
|
8442
|
-
parent = parents.get(parent);
|
|
8471
|
+
parent = toRaw(parents.get(parent));
|
|
8443
8472
|
}
|
|
8444
8473
|
return opened;
|
|
8445
8474
|
} else {
|
|
@@ -8610,18 +8639,18 @@ const classicSelectStrategy = mandatory => {
|
|
|
8610
8639
|
const items = [id];
|
|
8611
8640
|
while (items.length) {
|
|
8612
8641
|
const item = items.shift();
|
|
8613
|
-
selected.set(item, value ? 'on' : 'off');
|
|
8642
|
+
selected.set(toRaw(item), value ? 'on' : 'off');
|
|
8614
8643
|
if (children.has(item)) {
|
|
8615
8644
|
items.push(...children.get(item));
|
|
8616
8645
|
}
|
|
8617
8646
|
}
|
|
8618
|
-
let parent = parents.get(id);
|
|
8647
|
+
let parent = toRaw(parents.get(id));
|
|
8619
8648
|
while (parent) {
|
|
8620
8649
|
const childrenIds = children.get(parent);
|
|
8621
|
-
const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
|
|
8622
|
-
const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
|
|
8650
|
+
const everySelected = childrenIds.every(cid => selected.get(toRaw(cid)) === 'on');
|
|
8651
|
+
const noneSelected = childrenIds.every(cid => !selected.has(toRaw(cid)) || selected.get(toRaw(cid)) === 'off');
|
|
8623
8652
|
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
|
8624
|
-
parent = parents.get(parent);
|
|
8653
|
+
parent = toRaw(parents.get(parent));
|
|
8625
8654
|
}
|
|
8626
8655
|
|
|
8627
8656
|
// If mandatory and planned deselect results in no selected
|
|
@@ -8699,7 +8728,7 @@ const useNested = props => {
|
|
|
8699
8728
|
let isUnmounted = false;
|
|
8700
8729
|
const children = ref(new Map());
|
|
8701
8730
|
const parents = ref(new Map());
|
|
8702
|
-
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
|
|
8731
|
+
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(toRaw(v)), v => [...v.values()]);
|
|
8703
8732
|
const activeStrategy = computed(() => {
|
|
8704
8733
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
|
8705
8734
|
if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
|
|
@@ -8872,9 +8901,9 @@ const useNestedItem = (id, isGroup) => {
|
|
|
8872
8901
|
const item = {
|
|
8873
8902
|
...parent,
|
|
8874
8903
|
id: computedId,
|
|
8875
|
-
open: (open, e) => parent.root.open(computedId.value, open, e),
|
|
8904
|
+
open: (open, e) => parent.root.open(toRaw(computedId.value), open, e),
|
|
8876
8905
|
openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
|
|
8877
|
-
isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
|
|
8906
|
+
isOpen: computed(() => parent.root.opened.value.has(toRaw(computedId.value))),
|
|
8878
8907
|
parent: computed(() => parent.root.parents.value.get(computedId.value)),
|
|
8879
8908
|
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
|
8880
8909
|
isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),
|
|
@@ -9098,6 +9127,7 @@ const VListItem = genericComponent()({
|
|
|
9098
9127
|
activate,
|
|
9099
9128
|
isActivated,
|
|
9100
9129
|
select,
|
|
9130
|
+
isOpen,
|
|
9101
9131
|
isSelected,
|
|
9102
9132
|
isIndeterminate,
|
|
9103
9133
|
isGroupActivator,
|
|
@@ -9152,6 +9182,7 @@ const VListItem = genericComponent()({
|
|
|
9152
9182
|
const slotProps = computed(() => ({
|
|
9153
9183
|
isActive: isActive.value,
|
|
9154
9184
|
select,
|
|
9185
|
+
isOpen: isOpen.value,
|
|
9155
9186
|
isSelected: isSelected.value,
|
|
9156
9187
|
isIndeterminate: isIndeterminate.value
|
|
9157
9188
|
}));
|
|
@@ -9171,7 +9202,7 @@ const VListItem = genericComponent()({
|
|
|
9171
9202
|
function onKeyDown(e) {
|
|
9172
9203
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
9173
9204
|
e.preventDefault();
|
|
9174
|
-
|
|
9205
|
+
e.target.dispatchEvent(new MouseEvent('click', e));
|
|
9175
9206
|
}
|
|
9176
9207
|
}
|
|
9177
9208
|
useRender(() => {
|
|
@@ -9961,12 +9992,6 @@ function getIntrinsicSize(el, isRtl) {
|
|
|
9961
9992
|
// el.style.removeProperty('max-width')
|
|
9962
9993
|
// el.style.removeProperty('max-height')
|
|
9963
9994
|
|
|
9964
|
-
if (isRtl) {
|
|
9965
|
-
el.style.removeProperty('left');
|
|
9966
|
-
} else {
|
|
9967
|
-
el.style.removeProperty('right');
|
|
9968
|
-
}
|
|
9969
|
-
|
|
9970
9995
|
/* eslint-disable-next-line sonarjs/prefer-immediate-return */
|
|
9971
9996
|
const contentBox = nullifyTransforms(el);
|
|
9972
9997
|
if (isRtl) {
|
|
@@ -10494,7 +10519,8 @@ const makeActivatorProps = propsFactory({
|
|
|
10494
10519
|
function useActivator(props, _ref) {
|
|
10495
10520
|
let {
|
|
10496
10521
|
isActive,
|
|
10497
|
-
isTop
|
|
10522
|
+
isTop,
|
|
10523
|
+
contentEl
|
|
10498
10524
|
} = _ref;
|
|
10499
10525
|
const vm = getCurrentInstance('useActivator');
|
|
10500
10526
|
const activatorEl = ref();
|
|
@@ -10611,7 +10637,7 @@ function useActivator(props, _ref) {
|
|
|
10611
10637
|
return events;
|
|
10612
10638
|
});
|
|
10613
10639
|
watch(isTop, val => {
|
|
10614
|
-
if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
|
|
10640
|
+
if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {
|
|
10615
10641
|
isActive.value = false;
|
|
10616
10642
|
}
|
|
10617
10643
|
});
|
|
@@ -11021,6 +11047,9 @@ const VOverlay = genericComponent()({
|
|
|
11021
11047
|
emit
|
|
11022
11048
|
} = _ref;
|
|
11023
11049
|
const vm = getCurrentInstance('VOverlay');
|
|
11050
|
+
const root = ref();
|
|
11051
|
+
const scrimEl = ref();
|
|
11052
|
+
const contentEl = ref();
|
|
11024
11053
|
const model = useProxiedModel(props, 'modelValue');
|
|
11025
11054
|
const isActive = computed({
|
|
11026
11055
|
get: () => model.value,
|
|
@@ -11058,7 +11087,8 @@ const VOverlay = genericComponent()({
|
|
|
11058
11087
|
scrimEvents
|
|
11059
11088
|
} = useActivator(props, {
|
|
11060
11089
|
isActive,
|
|
11061
|
-
isTop: localTop
|
|
11090
|
+
isTop: localTop,
|
|
11091
|
+
contentEl
|
|
11062
11092
|
});
|
|
11063
11093
|
const {
|
|
11064
11094
|
teleportTarget
|
|
@@ -11079,9 +11109,6 @@ const VOverlay = genericComponent()({
|
|
|
11079
11109
|
watch(() => props.disabled, v => {
|
|
11080
11110
|
if (v) isActive.value = false;
|
|
11081
11111
|
});
|
|
11082
|
-
const root = ref();
|
|
11083
|
-
const scrimEl = ref();
|
|
11084
|
-
const contentEl = ref();
|
|
11085
11112
|
const {
|
|
11086
11113
|
contentStyles,
|
|
11087
11114
|
updateLocation
|
|
@@ -11332,10 +11359,12 @@ const makeVMenuProps = propsFactory({
|
|
|
11332
11359
|
// TODO
|
|
11333
11360
|
// disableKeys: Boolean,
|
|
11334
11361
|
id: String,
|
|
11362
|
+
submenu: Boolean,
|
|
11335
11363
|
...omit(makeVOverlayProps({
|
|
11336
11364
|
closeDelay: 250,
|
|
11337
11365
|
closeOnContentClick: true,
|
|
11338
11366
|
locationStrategy: 'connected',
|
|
11367
|
+
location: undefined,
|
|
11339
11368
|
openDelay: 300,
|
|
11340
11369
|
scrim: false,
|
|
11341
11370
|
scrollStrategy: 'reposition',
|
|
@@ -11358,27 +11387,32 @@ const VMenu = genericComponent()({
|
|
|
11358
11387
|
const {
|
|
11359
11388
|
scopeId
|
|
11360
11389
|
} = useScopeId();
|
|
11390
|
+
const {
|
|
11391
|
+
isRtl
|
|
11392
|
+
} = useRtl();
|
|
11361
11393
|
const uid = getUid();
|
|
11362
11394
|
const id = computed(() => props.id || `v-menu-${uid}`);
|
|
11363
11395
|
const overlay = ref();
|
|
11364
11396
|
const parent = inject$1(VMenuSymbol, null);
|
|
11365
|
-
const openChildren = shallowRef(
|
|
11397
|
+
const openChildren = shallowRef(new Set());
|
|
11366
11398
|
provide(VMenuSymbol, {
|
|
11367
11399
|
register() {
|
|
11368
|
-
|
|
11400
|
+
openChildren.value.add(uid);
|
|
11369
11401
|
},
|
|
11370
11402
|
unregister() {
|
|
11371
|
-
|
|
11403
|
+
openChildren.value.delete(uid);
|
|
11372
11404
|
},
|
|
11373
11405
|
closeParents(e) {
|
|
11374
11406
|
setTimeout(() => {
|
|
11375
|
-
if (!openChildren.value && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
|
11407
|
+
if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
|
11376
11408
|
isActive.value = false;
|
|
11377
11409
|
parent?.closeParents();
|
|
11378
11410
|
}
|
|
11379
11411
|
}, 40);
|
|
11380
11412
|
}
|
|
11381
11413
|
});
|
|
11414
|
+
onBeforeUnmount(() => parent?.unregister());
|
|
11415
|
+
onDeactivated(() => isActive.value = false);
|
|
11382
11416
|
async function onFocusIn(e) {
|
|
11383
11417
|
const before = e.relatedTarget;
|
|
11384
11418
|
const after = e.target;
|
|
@@ -11418,9 +11452,9 @@ const VMenu = genericComponent()({
|
|
|
11418
11452
|
isActive.value = false;
|
|
11419
11453
|
overlay.value?.activatorEl?.focus();
|
|
11420
11454
|
}
|
|
11421
|
-
} else if (
|
|
11455
|
+
} else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
|
11422
11456
|
isActive.value = false;
|
|
11423
|
-
|
|
11457
|
+
overlay.value?.activatorEl?.focus();
|
|
11424
11458
|
}
|
|
11425
11459
|
}
|
|
11426
11460
|
function onActivatorKeydown(e) {
|
|
@@ -11429,12 +11463,21 @@ const VMenu = genericComponent()({
|
|
|
11429
11463
|
if (el && isActive.value) {
|
|
11430
11464
|
if (e.key === 'ArrowDown') {
|
|
11431
11465
|
e.preventDefault();
|
|
11466
|
+
e.stopImmediatePropagation();
|
|
11432
11467
|
focusChild(el, 'next');
|
|
11433
11468
|
} else if (e.key === 'ArrowUp') {
|
|
11434
11469
|
e.preventDefault();
|
|
11470
|
+
e.stopImmediatePropagation();
|
|
11435
11471
|
focusChild(el, 'prev');
|
|
11472
|
+
} else if (props.submenu) {
|
|
11473
|
+
if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
|
11474
|
+
isActive.value = false;
|
|
11475
|
+
} else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
|
|
11476
|
+
e.preventDefault();
|
|
11477
|
+
focusChild(el, 'first');
|
|
11478
|
+
}
|
|
11436
11479
|
}
|
|
11437
|
-
} else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
11480
|
+
} else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
11438
11481
|
isActive.value = true;
|
|
11439
11482
|
e.preventDefault();
|
|
11440
11483
|
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
|
@@ -11458,6 +11501,7 @@ const VMenu = genericComponent()({
|
|
|
11458
11501
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
11459
11502
|
"absolute": true,
|
|
11460
11503
|
"activatorProps": activatorProps.value,
|
|
11504
|
+
"location": props.location ?? (props.submenu ? 'end' : 'bottom'),
|
|
11461
11505
|
"onClick:outside": onClickOutside,
|
|
11462
11506
|
"onKeydown": onKeydown
|
|
11463
11507
|
}, scopeId), {
|
|
@@ -12290,6 +12334,7 @@ function useVirtual(props, items) {
|
|
|
12290
12334
|
deep: true
|
|
12291
12335
|
});
|
|
12292
12336
|
return {
|
|
12337
|
+
calculateVisibleItems,
|
|
12293
12338
|
containerRef,
|
|
12294
12339
|
markerRef,
|
|
12295
12340
|
computedItems,
|
|
@@ -12353,6 +12398,7 @@ const VVirtualScroll = genericComponent()({
|
|
|
12353
12398
|
dimensionStyles
|
|
12354
12399
|
} = useDimension(props);
|
|
12355
12400
|
const {
|
|
12401
|
+
calculateVisibleItems,
|
|
12356
12402
|
containerRef,
|
|
12357
12403
|
markerRef,
|
|
12358
12404
|
handleScroll,
|
|
@@ -12424,6 +12470,7 @@ const VVirtualScroll = genericComponent()({
|
|
|
12424
12470
|
}, [children])]);
|
|
12425
12471
|
});
|
|
12426
12472
|
return {
|
|
12473
|
+
calculateVisibleItems,
|
|
12427
12474
|
scrollToIndex
|
|
12428
12475
|
};
|
|
12429
12476
|
}
|
|
@@ -12492,9 +12539,9 @@ function useScrolling(listRef, textFieldRef) {
|
|
|
12492
12539
|
}
|
|
12493
12540
|
}
|
|
12494
12541
|
return {
|
|
12495
|
-
onListScroll,
|
|
12496
|
-
onListKeydown
|
|
12497
|
-
};
|
|
12542
|
+
onScrollPassive: onListScroll,
|
|
12543
|
+
onKeydown: onListKeydown
|
|
12544
|
+
}; // typescript doesn't know about vue's event merging
|
|
12498
12545
|
}
|
|
12499
12546
|
|
|
12500
12547
|
// Types
|
|
@@ -12569,7 +12616,7 @@ const VSelect = genericComponent()({
|
|
|
12569
12616
|
const menu = computed({
|
|
12570
12617
|
get: () => _menu.value,
|
|
12571
12618
|
set: v => {
|
|
12572
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
12619
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
12573
12620
|
_menu.value = v;
|
|
12574
12621
|
}
|
|
12575
12622
|
});
|
|
@@ -12608,10 +12655,7 @@ const VSelect = genericComponent()({
|
|
|
12608
12655
|
};
|
|
12609
12656
|
});
|
|
12610
12657
|
const listRef = ref();
|
|
12611
|
-
const
|
|
12612
|
-
onListScroll,
|
|
12613
|
-
onListKeydown
|
|
12614
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
12658
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
12615
12659
|
function onClear(e) {
|
|
12616
12660
|
if (props.openOnClear) {
|
|
12617
12661
|
menu.value = true;
|
|
@@ -12621,6 +12665,11 @@ const VSelect = genericComponent()({
|
|
|
12621
12665
|
if (menuDisabled.value) return;
|
|
12622
12666
|
menu.value = !menu.value;
|
|
12623
12667
|
}
|
|
12668
|
+
function onListKeydown(e) {
|
|
12669
|
+
if (checkPrintable(e)) {
|
|
12670
|
+
onKeydown(e);
|
|
12671
|
+
}
|
|
12672
|
+
}
|
|
12624
12673
|
function onKeydown(e) {
|
|
12625
12674
|
if (!e.key || props.readonly || form?.isReadonly.value) return;
|
|
12626
12675
|
if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
|
|
@@ -12641,11 +12690,6 @@ const VSelect = genericComponent()({
|
|
|
12641
12690
|
// html select hotkeys
|
|
12642
12691
|
const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
|
|
12643
12692
|
|
|
12644
|
-
function checkPrintable(e) {
|
|
12645
|
-
const isPrintableChar = e.key.length === 1;
|
|
12646
|
-
const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
|
|
12647
|
-
return isPrintableChar && noModifier;
|
|
12648
|
-
}
|
|
12649
12693
|
if (props.multiple || !checkPrintable(e)) return;
|
|
12650
12694
|
const now = performance.now();
|
|
12651
12695
|
if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
|
|
@@ -12690,6 +12734,11 @@ const VSelect = genericComponent()({
|
|
|
12690
12734
|
menu.value = false;
|
|
12691
12735
|
}
|
|
12692
12736
|
}
|
|
12737
|
+
function onAfterEnter() {
|
|
12738
|
+
if (props.eager) {
|
|
12739
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
12740
|
+
}
|
|
12741
|
+
}
|
|
12693
12742
|
function onAfterLeave() {
|
|
12694
12743
|
if (isFocused.value) {
|
|
12695
12744
|
vTextFieldRef.value?.focus();
|
|
@@ -12768,6 +12817,7 @@ const VSelect = genericComponent()({
|
|
|
12768
12817
|
"openOnClick": false,
|
|
12769
12818
|
"closeOnContentClick": false,
|
|
12770
12819
|
"transition": props.transition,
|
|
12820
|
+
"onAfterEnter": onAfterEnter,
|
|
12771
12821
|
"onAfterLeave": onAfterLeave
|
|
12772
12822
|
}, computedMenuProps.value), {
|
|
12773
12823
|
default: () => [hasList && createVNode(VList, mergeProps({
|
|
@@ -12777,11 +12827,10 @@ const VSelect = genericComponent()({
|
|
|
12777
12827
|
"onMousedown": e => e.preventDefault(),
|
|
12778
12828
|
"onKeydown": onListKeydown,
|
|
12779
12829
|
"onFocusin": onFocusin,
|
|
12780
|
-
"onScrollPassive": onListScroll,
|
|
12781
12830
|
"tabindex": "-1",
|
|
12782
12831
|
"aria-live": "polite",
|
|
12783
12832
|
"color": props.itemColor ?? props.color
|
|
12784
|
-
}, props.listProps), {
|
|
12833
|
+
}, listEvents, props.listProps), {
|
|
12785
12834
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
|
|
12786
12835
|
"title": t(props.noDataText)
|
|
12787
12836
|
}, null)), createVNode(VVirtualScroll, {
|
|
@@ -13076,7 +13125,7 @@ const VAutocomplete = genericComponent()({
|
|
|
13076
13125
|
const menu = computed({
|
|
13077
13126
|
get: () => _menu.value,
|
|
13078
13127
|
set: v => {
|
|
13079
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
13128
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
13080
13129
|
_menu.value = v;
|
|
13081
13130
|
}
|
|
13082
13131
|
});
|
|
@@ -13120,10 +13169,7 @@ const VAutocomplete = genericComponent()({
|
|
|
13120
13169
|
});
|
|
13121
13170
|
const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
|
|
13122
13171
|
const listRef = ref();
|
|
13123
|
-
const
|
|
13124
|
-
onListScroll,
|
|
13125
|
-
onListKeydown
|
|
13126
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
13172
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
13127
13173
|
function onClear(e) {
|
|
13128
13174
|
if (props.openOnClear) {
|
|
13129
13175
|
menu.value = true;
|
|
@@ -13142,6 +13188,11 @@ const VAutocomplete = genericComponent()({
|
|
|
13142
13188
|
}
|
|
13143
13189
|
menu.value = !menu.value;
|
|
13144
13190
|
}
|
|
13191
|
+
function onListKeydown(e) {
|
|
13192
|
+
if (checkPrintable(e)) {
|
|
13193
|
+
vTextFieldRef.value?.focus();
|
|
13194
|
+
}
|
|
13195
|
+
}
|
|
13145
13196
|
function onKeydown(e) {
|
|
13146
13197
|
if (props.readonly || form?.isReadonly.value) return;
|
|
13147
13198
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
@@ -13206,6 +13257,11 @@ const VAutocomplete = genericComponent()({
|
|
|
13206
13257
|
}
|
|
13207
13258
|
}
|
|
13208
13259
|
}
|
|
13260
|
+
function onAfterEnter() {
|
|
13261
|
+
if (props.eager) {
|
|
13262
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
13263
|
+
}
|
|
13264
|
+
}
|
|
13209
13265
|
function onAfterLeave() {
|
|
13210
13266
|
if (isFocused.value) {
|
|
13211
13267
|
isPristine.value = true;
|
|
@@ -13334,6 +13390,7 @@ const VAutocomplete = genericComponent()({
|
|
|
13334
13390
|
"openOnClick": false,
|
|
13335
13391
|
"closeOnContentClick": false,
|
|
13336
13392
|
"transition": props.transition,
|
|
13393
|
+
"onAfterEnter": onAfterEnter,
|
|
13337
13394
|
"onAfterLeave": onAfterLeave
|
|
13338
13395
|
}, props.menuProps), {
|
|
13339
13396
|
default: () => [hasList && createVNode(VList, mergeProps({
|
|
@@ -13344,11 +13401,10 @@ const VAutocomplete = genericComponent()({
|
|
|
13344
13401
|
"onKeydown": onListKeydown,
|
|
13345
13402
|
"onFocusin": onFocusin,
|
|
13346
13403
|
"onFocusout": onFocusout,
|
|
13347
|
-
"onScrollPassive": onListScroll,
|
|
13348
13404
|
"tabindex": "-1",
|
|
13349
13405
|
"aria-live": "polite",
|
|
13350
13406
|
"color": props.itemColor ?? props.color
|
|
13351
|
-
}, props.listProps), {
|
|
13407
|
+
}, listEvents, props.listProps), {
|
|
13352
13408
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
|
|
13353
13409
|
"title": t(props.noDataText)
|
|
13354
13410
|
}, null)), createVNode(VVirtualScroll, {
|
|
@@ -13798,8 +13854,7 @@ const VBottomNavigation = genericComponent()({
|
|
|
13798
13854
|
const height = computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
|
|
13799
13855
|
const isActive = useProxiedModel(props, 'active', props.active);
|
|
13800
13856
|
const {
|
|
13801
|
-
layoutItemStyles
|
|
13802
|
-
layoutIsReady
|
|
13857
|
+
layoutItemStyles
|
|
13803
13858
|
} = useLayoutItem({
|
|
13804
13859
|
id: props.name,
|
|
13805
13860
|
order: computed(() => parseInt(props.order, 10)),
|
|
@@ -13837,7 +13892,7 @@ const VBottomNavigation = genericComponent()({
|
|
|
13837
13892
|
}, [slots.default()])]
|
|
13838
13893
|
});
|
|
13839
13894
|
});
|
|
13840
|
-
return
|
|
13895
|
+
return {};
|
|
13841
13896
|
}
|
|
13842
13897
|
});
|
|
13843
13898
|
|
|
@@ -16909,7 +16964,7 @@ const VCombobox = genericComponent()({
|
|
|
16909
16964
|
const menu = computed({
|
|
16910
16965
|
get: () => _menu.value,
|
|
16911
16966
|
set: v => {
|
|
16912
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
16967
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
16913
16968
|
_menu.value = v;
|
|
16914
16969
|
}
|
|
16915
16970
|
});
|
|
@@ -16992,10 +17047,7 @@ const VCombobox = genericComponent()({
|
|
|
16992
17047
|
});
|
|
16993
17048
|
const menuDisabled = computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
|
|
16994
17049
|
const listRef = ref();
|
|
16995
|
-
const
|
|
16996
|
-
onListScroll,
|
|
16997
|
-
onListKeydown
|
|
16998
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
17050
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
16999
17051
|
function onClear(e) {
|
|
17000
17052
|
cleared = true;
|
|
17001
17053
|
if (props.openOnClear) {
|
|
@@ -17014,6 +17066,11 @@ const VCombobox = genericComponent()({
|
|
|
17014
17066
|
}
|
|
17015
17067
|
menu.value = !menu.value;
|
|
17016
17068
|
}
|
|
17069
|
+
function onListKeydown(e) {
|
|
17070
|
+
if (checkPrintable(e)) {
|
|
17071
|
+
vTextFieldRef.value?.focus();
|
|
17072
|
+
}
|
|
17073
|
+
}
|
|
17017
17074
|
// eslint-disable-next-line complexity
|
|
17018
17075
|
function onKeydown(e) {
|
|
17019
17076
|
if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
|
|
@@ -17078,6 +17135,11 @@ const VCombobox = genericComponent()({
|
|
|
17078
17135
|
}
|
|
17079
17136
|
}
|
|
17080
17137
|
}
|
|
17138
|
+
function onAfterEnter() {
|
|
17139
|
+
if (props.eager) {
|
|
17140
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
17141
|
+
}
|
|
17142
|
+
}
|
|
17081
17143
|
function onAfterLeave() {
|
|
17082
17144
|
if (isFocused.value) {
|
|
17083
17145
|
isPristine.value = true;
|
|
@@ -17202,6 +17264,7 @@ const VCombobox = genericComponent()({
|
|
|
17202
17264
|
"openOnClick": false,
|
|
17203
17265
|
"closeOnContentClick": false,
|
|
17204
17266
|
"transition": props.transition,
|
|
17267
|
+
"onAfterEnter": onAfterEnter,
|
|
17205
17268
|
"onAfterLeave": onAfterLeave
|
|
17206
17269
|
}, props.menuProps), {
|
|
17207
17270
|
default: () => [hasList && createVNode(VList, mergeProps({
|
|
@@ -17212,11 +17275,10 @@ const VCombobox = genericComponent()({
|
|
|
17212
17275
|
"onKeydown": onListKeydown,
|
|
17213
17276
|
"onFocusin": onFocusin,
|
|
17214
17277
|
"onFocusout": onFocusout,
|
|
17215
|
-
"onScrollPassive": onListScroll,
|
|
17216
17278
|
"tabindex": "-1",
|
|
17217
17279
|
"aria-live": "polite",
|
|
17218
17280
|
"color": props.itemColor ?? props.color
|
|
17219
|
-
}, props.listProps), {
|
|
17281
|
+
}, listEvents, props.listProps), {
|
|
17220
17282
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
|
|
17221
17283
|
"title": t(props.noDataText)
|
|
17222
17284
|
}, null)), createVNode(VVirtualScroll, {
|
|
@@ -21160,6 +21222,7 @@ const makeVContainerProps = propsFactory({
|
|
|
21160
21222
|
default: false
|
|
21161
21223
|
},
|
|
21162
21224
|
...makeComponentProps(),
|
|
21225
|
+
...makeDimensionProps(),
|
|
21163
21226
|
...makeTagProps()
|
|
21164
21227
|
}, 'VContainer');
|
|
21165
21228
|
const VContainer = genericComponent()({
|
|
@@ -21172,11 +21235,14 @@ const VContainer = genericComponent()({
|
|
|
21172
21235
|
const {
|
|
21173
21236
|
rtlClasses
|
|
21174
21237
|
} = useRtl();
|
|
21238
|
+
const {
|
|
21239
|
+
dimensionStyles
|
|
21240
|
+
} = useDimension(props);
|
|
21175
21241
|
useRender(() => createVNode(props.tag, {
|
|
21176
21242
|
"class": ['v-container', {
|
|
21177
21243
|
'v-container--fluid': props.fluid
|
|
21178
21244
|
}, rtlClasses.value, props.class],
|
|
21179
|
-
"style": props.style
|
|
21245
|
+
"style": [dimensionStyles.value, props.style]
|
|
21180
21246
|
}, slots));
|
|
21181
21247
|
return {};
|
|
21182
21248
|
}
|
|
@@ -22598,7 +22664,8 @@ const makeVExpansionPanelTitleProps = propsFactory({
|
|
|
22598
22664
|
default: false
|
|
22599
22665
|
},
|
|
22600
22666
|
readonly: Boolean,
|
|
22601
|
-
...makeComponentProps()
|
|
22667
|
+
...makeComponentProps(),
|
|
22668
|
+
...makeDimensionProps()
|
|
22602
22669
|
}, 'VExpansionPanelTitle');
|
|
22603
22670
|
const VExpansionPanelTitle = genericComponent()({
|
|
22604
22671
|
name: 'VExpansionPanelTitle',
|
|
@@ -22616,6 +22683,9 @@ const VExpansionPanelTitle = genericComponent()({
|
|
|
22616
22683
|
backgroundColorClasses,
|
|
22617
22684
|
backgroundColorStyles
|
|
22618
22685
|
} = useBackgroundColor(props, 'color');
|
|
22686
|
+
const {
|
|
22687
|
+
dimensionStyles
|
|
22688
|
+
} = useDimension(props);
|
|
22619
22689
|
const slotProps = computed(() => ({
|
|
22620
22690
|
collapseIcon: props.collapseIcon,
|
|
22621
22691
|
disabled: expansionPanel.disabled.value,
|
|
@@ -22630,7 +22700,7 @@ const VExpansionPanelTitle = genericComponent()({
|
|
|
22630
22700
|
'v-expansion-panel-title--focusable': props.focusable,
|
|
22631
22701
|
'v-expansion-panel-title--static': props.static
|
|
22632
22702
|
}, backgroundColorClasses.value, props.class],
|
|
22633
|
-
"style": [backgroundColorStyles.value, props.style],
|
|
22703
|
+
"style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
|
|
22634
22704
|
"type": "button",
|
|
22635
22705
|
"tabindex": expansionPanel.disabled.value ? -1 : undefined,
|
|
22636
22706
|
"disabled": expansionPanel.disabled.value,
|
|
@@ -23153,7 +23223,6 @@ const VFooter = genericComponent()({
|
|
|
23153
23223
|
slots
|
|
23154
23224
|
} = _ref;
|
|
23155
23225
|
const layoutItemStyles = ref();
|
|
23156
|
-
const layoutIsReady = shallowRef();
|
|
23157
23226
|
const {
|
|
23158
23227
|
themeClasses
|
|
23159
23228
|
} = provideTheme(props);
|
|
@@ -23190,7 +23259,6 @@ const VFooter = genericComponent()({
|
|
|
23190
23259
|
});
|
|
23191
23260
|
watchEffect(() => {
|
|
23192
23261
|
layoutItemStyles.value = layout.layoutItemStyles.value;
|
|
23193
|
-
layoutIsReady.value = layout.layoutIsReady;
|
|
23194
23262
|
});
|
|
23195
23263
|
});
|
|
23196
23264
|
useRender(() => createVNode(props.tag, {
|
|
@@ -23200,7 +23268,7 @@ const VFooter = genericComponent()({
|
|
|
23200
23268
|
height: convertToUnit(props.height)
|
|
23201
23269
|
}, props.style]
|
|
23202
23270
|
}, slots));
|
|
23203
|
-
return
|
|
23271
|
+
return {};
|
|
23204
23272
|
}
|
|
23205
23273
|
});
|
|
23206
23274
|
|
|
@@ -23627,9 +23695,7 @@ const VLayout = genericComponent()({
|
|
|
23627
23695
|
"ref": layoutRef,
|
|
23628
23696
|
"class": [layoutClasses.value, props.class],
|
|
23629
23697
|
"style": [dimensionStyles.value, layoutStyles.value, props.style]
|
|
23630
|
-
}, [
|
|
23631
|
-
default: () => [createVNode(Fragment, null, [slots.default?.()])]
|
|
23632
|
-
})]));
|
|
23698
|
+
}, [slots.default?.()]));
|
|
23633
23699
|
return {
|
|
23634
23700
|
getLayoutItem,
|
|
23635
23701
|
items
|
|
@@ -23660,8 +23726,7 @@ const VLayoutItem = genericComponent()({
|
|
|
23660
23726
|
slots
|
|
23661
23727
|
} = _ref;
|
|
23662
23728
|
const {
|
|
23663
|
-
layoutItemStyles
|
|
23664
|
-
layoutIsReady
|
|
23729
|
+
layoutItemStyles
|
|
23665
23730
|
} = useLayoutItem({
|
|
23666
23731
|
id: props.name,
|
|
23667
23732
|
order: computed(() => parseInt(props.order, 10)),
|
|
@@ -23671,11 +23736,10 @@ const VLayoutItem = genericComponent()({
|
|
|
23671
23736
|
active: toRef(props, 'modelValue'),
|
|
23672
23737
|
absolute: toRef(props, 'absolute')
|
|
23673
23738
|
});
|
|
23674
|
-
|
|
23739
|
+
return () => createVNode("div", {
|
|
23675
23740
|
"class": ['v-layout-item', props.class],
|
|
23676
23741
|
"style": [layoutItemStyles.value, props.style]
|
|
23677
|
-
}, [slots.default?.()])
|
|
23678
|
-
return layoutIsReady;
|
|
23742
|
+
}, [slots.default?.()]);
|
|
23679
23743
|
}
|
|
23680
23744
|
});
|
|
23681
23745
|
|
|
@@ -23786,8 +23850,7 @@ const VMain = genericComponent()({
|
|
|
23786
23850
|
dimensionStyles
|
|
23787
23851
|
} = useDimension(props);
|
|
23788
23852
|
const {
|
|
23789
|
-
mainStyles
|
|
23790
|
-
layoutIsReady
|
|
23853
|
+
mainStyles
|
|
23791
23854
|
} = useLayout();
|
|
23792
23855
|
const {
|
|
23793
23856
|
ssrBootStyles
|
|
@@ -23802,7 +23865,7 @@ const VMain = genericComponent()({
|
|
|
23802
23865
|
"class": "v-main__scroller"
|
|
23803
23866
|
}, [slots.default?.()]) : slots.default?.()]
|
|
23804
23867
|
}));
|
|
23805
|
-
return
|
|
23868
|
+
return {};
|
|
23806
23869
|
}
|
|
23807
23870
|
});
|
|
23808
23871
|
|
|
@@ -24272,8 +24335,7 @@ const VNavigationDrawer = genericComponent()({
|
|
|
24272
24335
|
const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);
|
|
24273
24336
|
const {
|
|
24274
24337
|
layoutItemStyles,
|
|
24275
|
-
layoutItemScrimStyles
|
|
24276
|
-
layoutIsReady
|
|
24338
|
+
layoutItemScrimStyles
|
|
24277
24339
|
} = useLayoutItem({
|
|
24278
24340
|
id: props.name,
|
|
24279
24341
|
order: computed(() => parseInt(props.order, 10)),
|
|
@@ -24369,9 +24431,9 @@ const VNavigationDrawer = genericComponent()({
|
|
|
24369
24431
|
}, scopeId), null)]
|
|
24370
24432
|
})]);
|
|
24371
24433
|
});
|
|
24372
|
-
return
|
|
24434
|
+
return {
|
|
24373
24435
|
isStuck
|
|
24374
|
-
}
|
|
24436
|
+
};
|
|
24375
24437
|
}
|
|
24376
24438
|
});
|
|
24377
24439
|
|
|
@@ -26060,7 +26122,7 @@ const VSpeedDial = genericComponent()({
|
|
|
26060
26122
|
const model = useProxiedModel(props, 'modelValue');
|
|
26061
26123
|
const menuRef = ref();
|
|
26062
26124
|
const location = computed(() => {
|
|
26063
|
-
const [y, x = 'center'] = props.location
|
|
26125
|
+
const [y, x = 'center'] = props.location?.split(' ') ?? [];
|
|
26064
26126
|
return `${y} ${x}`;
|
|
26065
26127
|
});
|
|
26066
26128
|
const locationClasses = computed(() => ({
|
|
@@ -28146,7 +28208,7 @@ function createVuetify$1() {
|
|
|
28146
28208
|
goTo
|
|
28147
28209
|
};
|
|
28148
28210
|
}
|
|
28149
|
-
const version$1 = "3.
|
|
28211
|
+
const version$1 = "3.7.0";
|
|
28150
28212
|
createVuetify$1.version = version$1;
|
|
28151
28213
|
|
|
28152
28214
|
// Vue's inject() can only be used in setup
|
|
@@ -28171,7 +28233,7 @@ const createVuetify = function () {
|
|
|
28171
28233
|
...options
|
|
28172
28234
|
});
|
|
28173
28235
|
};
|
|
28174
|
-
const version = "3.
|
|
28236
|
+
const version = "3.7.0";
|
|
28175
28237
|
createVuetify.version = version;
|
|
28176
28238
|
|
|
28177
28239
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|