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.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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
|
*/
|
|
@@ -466,16 +466,6 @@
|
|
|
466
466
|
const timeoutId = window.setTimeout(cb, timeout);
|
|
467
467
|
return () => window.clearTimeout(timeoutId);
|
|
468
468
|
}
|
|
469
|
-
function eagerComputed(fn, options) {
|
|
470
|
-
const result = vue.shallowRef();
|
|
471
|
-
vue.watchEffect(() => {
|
|
472
|
-
result.value = fn();
|
|
473
|
-
}, {
|
|
474
|
-
flush: 'sync',
|
|
475
|
-
...options
|
|
476
|
-
});
|
|
477
|
-
return vue.readonly(result);
|
|
478
|
-
}
|
|
479
469
|
function isClickInsideElement(event, targetDiv) {
|
|
480
470
|
const mouseX = event.clientX;
|
|
481
471
|
const mouseY = event.clientY;
|
|
@@ -502,6 +492,11 @@
|
|
|
502
492
|
});
|
|
503
493
|
return fn;
|
|
504
494
|
}
|
|
495
|
+
function checkPrintable(e) {
|
|
496
|
+
const isPrintableChar = e.key.length === 1;
|
|
497
|
+
const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
|
|
498
|
+
return isPrintableChar && noModifier;
|
|
499
|
+
}
|
|
505
500
|
|
|
506
501
|
// Utilities
|
|
507
502
|
const block = ['top', 'bottom'];
|
|
@@ -2087,9 +2082,7 @@
|
|
|
2087
2082
|
function useLayout() {
|
|
2088
2083
|
const layout = vue.inject(VuetifyLayoutKey);
|
|
2089
2084
|
if (!layout) throw new Error('[Vuetify] Could not find injected layout');
|
|
2090
|
-
const layoutIsReady = vue.nextTick();
|
|
2091
2085
|
return {
|
|
2092
|
-
layoutIsReady,
|
|
2093
2086
|
getLayoutItem: layout.getLayoutItem,
|
|
2094
2087
|
mainRect: layout.mainRect,
|
|
2095
2088
|
mainStyles: layout.mainStyles
|
|
@@ -2106,7 +2099,6 @@
|
|
|
2106
2099
|
const isKeptAlive = vue.shallowRef(false);
|
|
2107
2100
|
vue.onDeactivated(() => isKeptAlive.value = true);
|
|
2108
2101
|
vue.onActivated(() => isKeptAlive.value = false);
|
|
2109
|
-
const layoutIsReady = vue.nextTick();
|
|
2110
2102
|
const {
|
|
2111
2103
|
layoutItemStyles,
|
|
2112
2104
|
layoutItemScrimStyles
|
|
@@ -2119,8 +2111,7 @@
|
|
|
2119
2111
|
return {
|
|
2120
2112
|
layoutItemStyles,
|
|
2121
2113
|
layoutRect: layout.layoutRect,
|
|
2122
|
-
layoutItemScrimStyles
|
|
2123
|
-
layoutIsReady
|
|
2114
|
+
layoutItemScrimStyles
|
|
2124
2115
|
};
|
|
2125
2116
|
}
|
|
2126
2117
|
const generateLayers = (layout, positions, layoutSizes, activeItems) => {
|
|
@@ -2166,7 +2157,29 @@
|
|
|
2166
2157
|
resizeRef,
|
|
2167
2158
|
contentRect: layoutRect
|
|
2168
2159
|
} = useResizeObserver();
|
|
2169
|
-
const
|
|
2160
|
+
const computedOverlaps = vue.computed(() => {
|
|
2161
|
+
const map = new Map();
|
|
2162
|
+
const overlaps = props.overlaps ?? [];
|
|
2163
|
+
for (const overlap of overlaps.filter(item => item.includes(':'))) {
|
|
2164
|
+
const [top, bottom] = overlap.split(':');
|
|
2165
|
+
if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;
|
|
2166
|
+
const topPosition = positions.get(top);
|
|
2167
|
+
const bottomPosition = positions.get(bottom);
|
|
2168
|
+
const topAmount = layoutSizes.get(top);
|
|
2169
|
+
const bottomAmount = layoutSizes.get(bottom);
|
|
2170
|
+
if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;
|
|
2171
|
+
map.set(bottom, {
|
|
2172
|
+
position: topPosition.value,
|
|
2173
|
+
amount: parseInt(topAmount.value, 10)
|
|
2174
|
+
});
|
|
2175
|
+
map.set(top, {
|
|
2176
|
+
position: bottomPosition.value,
|
|
2177
|
+
amount: -parseInt(bottomAmount.value, 10)
|
|
2178
|
+
});
|
|
2179
|
+
}
|
|
2180
|
+
return map;
|
|
2181
|
+
});
|
|
2182
|
+
const layers = vue.computed(() => {
|
|
2170
2183
|
const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b);
|
|
2171
2184
|
const layout = [];
|
|
2172
2185
|
for (const p of uniquePriorities) {
|
|
@@ -2192,7 +2205,7 @@
|
|
|
2192
2205
|
})
|
|
2193
2206
|
};
|
|
2194
2207
|
});
|
|
2195
|
-
const items =
|
|
2208
|
+
const items = vue.computed(() => {
|
|
2196
2209
|
return layers.value.slice(1).map((_ref, index) => {
|
|
2197
2210
|
let {
|
|
2198
2211
|
id
|
|
@@ -2214,7 +2227,10 @@
|
|
|
2214
2227
|
return items.value.find(item => item.id === id);
|
|
2215
2228
|
};
|
|
2216
2229
|
const rootVm = getCurrentInstance('createLayout');
|
|
2217
|
-
const
|
|
2230
|
+
const isMounted = vue.shallowRef(false);
|
|
2231
|
+
vue.onMounted(() => {
|
|
2232
|
+
isMounted.value = true;
|
|
2233
|
+
});
|
|
2218
2234
|
vue.provide(VuetifyLayoutKey, {
|
|
2219
2235
|
register: (vm, _ref2) => {
|
|
2220
2236
|
let {
|
|
@@ -2252,9 +2268,13 @@
|
|
|
2252
2268
|
transition: 'none'
|
|
2253
2269
|
})
|
|
2254
2270
|
};
|
|
2255
|
-
if (
|
|
2271
|
+
if (!isMounted.value) return styles;
|
|
2256
2272
|
const item = items.value[index.value];
|
|
2257
2273
|
if (!item) throw new Error(`[Vuetify] Could not find layout item "${id}"`);
|
|
2274
|
+
const overlap = computedOverlaps.value.get(id);
|
|
2275
|
+
if (overlap) {
|
|
2276
|
+
item[overlap.position] += overlap.amount;
|
|
2277
|
+
}
|
|
2258
2278
|
return {
|
|
2259
2279
|
...styles,
|
|
2260
2280
|
height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,
|
|
@@ -2287,8 +2307,7 @@
|
|
|
2287
2307
|
getLayoutItem,
|
|
2288
2308
|
items,
|
|
2289
2309
|
layoutRect,
|
|
2290
|
-
rootZIndex
|
|
2291
|
-
layoutIsReady
|
|
2310
|
+
rootZIndex
|
|
2292
2311
|
});
|
|
2293
2312
|
const layoutClasses = vue.computed(() => ['v-layout', {
|
|
2294
2313
|
'v-layout--full-height': props.fullHeight
|
|
@@ -2304,7 +2323,6 @@
|
|
|
2304
2323
|
getLayoutItem,
|
|
2305
2324
|
items,
|
|
2306
2325
|
layoutRect,
|
|
2307
|
-
layoutIsReady,
|
|
2308
2326
|
layoutRef: resizeRef
|
|
2309
2327
|
};
|
|
2310
2328
|
}
|
|
@@ -3001,9 +3019,7 @@
|
|
|
3001
3019
|
"style": [props.style]
|
|
3002
3020
|
}, [vue.createVNode("div", {
|
|
3003
3021
|
"class": "v-application__wrap"
|
|
3004
|
-
}, [
|
|
3005
|
-
default: () => [vue.createVNode(vue.Fragment, null, [slots.default?.()])]
|
|
3006
|
-
})])]));
|
|
3022
|
+
}, [slots.default?.()])]));
|
|
3007
3023
|
return {
|
|
3008
3024
|
getLayoutItem,
|
|
3009
3025
|
items,
|
|
@@ -3692,6 +3708,7 @@
|
|
|
3692
3708
|
// not intended for public use, this is passed in by vuetify-loader
|
|
3693
3709
|
|
|
3694
3710
|
const makeVImgProps = propsFactory({
|
|
3711
|
+
absolute: Boolean,
|
|
3695
3712
|
alt: String,
|
|
3696
3713
|
cover: Boolean,
|
|
3697
3714
|
color: String,
|
|
@@ -3948,6 +3965,7 @@
|
|
|
3948
3965
|
const responsiveProps = VResponsive.filterProps(props);
|
|
3949
3966
|
return vue.withDirectives(vue.createVNode(VResponsive, vue.mergeProps({
|
|
3950
3967
|
"class": ['v-img', {
|
|
3968
|
+
'v-img--absolute': props.absolute,
|
|
3951
3969
|
'v-img--booting': !isBooted.value
|
|
3952
3970
|
}, backgroundColorClasses.value, roundedClasses.value, props.class],
|
|
3953
3971
|
"style": [{
|
|
@@ -4360,8 +4378,9 @@
|
|
|
4360
4378
|
const isFlat = vue.computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
|
|
4361
4379
|
const opacity = vue.computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
|
|
4362
4380
|
const height = vue.computed(() => {
|
|
4363
|
-
|
|
4364
|
-
const
|
|
4381
|
+
if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
|
|
4382
|
+
const height = vToolbarRef.value?.contentHeight ?? 0;
|
|
4383
|
+
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
|
|
4365
4384
|
if (!canHide.value) return height + extensionHeight;
|
|
4366
4385
|
return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
|
|
4367
4386
|
});
|
|
@@ -4382,8 +4401,7 @@
|
|
|
4382
4401
|
ssrBootStyles
|
|
4383
4402
|
} = useSsrBoot();
|
|
4384
4403
|
const {
|
|
4385
|
-
layoutItemStyles
|
|
4386
|
-
layoutIsReady
|
|
4404
|
+
layoutItemStyles
|
|
4387
4405
|
} = useLayoutItem({
|
|
4388
4406
|
id: props.name,
|
|
4389
4407
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -4411,7 +4429,7 @@
|
|
|
4411
4429
|
"flat": isFlat.value
|
|
4412
4430
|
}), slots);
|
|
4413
4431
|
});
|
|
4414
|
-
return
|
|
4432
|
+
return {};
|
|
4415
4433
|
}
|
|
4416
4434
|
});
|
|
4417
4435
|
|
|
@@ -5748,6 +5766,7 @@
|
|
|
5748
5766
|
type: Boolean,
|
|
5749
5767
|
default: undefined
|
|
5750
5768
|
},
|
|
5769
|
+
activeColor: String,
|
|
5751
5770
|
baseColor: String,
|
|
5752
5771
|
symbol: {
|
|
5753
5772
|
type: null,
|
|
@@ -5839,10 +5858,11 @@
|
|
|
5839
5858
|
}
|
|
5840
5859
|
return group?.isSelected.value;
|
|
5841
5860
|
});
|
|
5861
|
+
const color = vue.computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
|
|
5842
5862
|
const variantProps = vue.computed(() => {
|
|
5843
5863
|
const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
|
|
5844
5864
|
return {
|
|
5845
|
-
color: showColor ?
|
|
5865
|
+
color: showColor ? color.value ?? props.baseColor : props.baseColor,
|
|
5846
5866
|
variant: props.variant
|
|
5847
5867
|
};
|
|
5848
5868
|
});
|
|
@@ -6183,6 +6203,7 @@
|
|
|
6183
6203
|
icon: IconValue,
|
|
6184
6204
|
image: String,
|
|
6185
6205
|
text: String,
|
|
6206
|
+
...makeBorderProps(),
|
|
6186
6207
|
...makeComponentProps(),
|
|
6187
6208
|
...makeDensityProps(),
|
|
6188
6209
|
...makeRoundedProps(),
|
|
@@ -6203,6 +6224,9 @@
|
|
|
6203
6224
|
const {
|
|
6204
6225
|
themeClasses
|
|
6205
6226
|
} = provideTheme(props);
|
|
6227
|
+
const {
|
|
6228
|
+
borderClasses
|
|
6229
|
+
} = useBorder(props);
|
|
6206
6230
|
const {
|
|
6207
6231
|
colorClasses,
|
|
6208
6232
|
colorStyles,
|
|
@@ -6222,7 +6246,7 @@
|
|
|
6222
6246
|
"class": ['v-avatar', {
|
|
6223
6247
|
'v-avatar--start': props.start,
|
|
6224
6248
|
'v-avatar--end': props.end
|
|
6225
|
-
}, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
|
|
6249
|
+
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
|
|
6226
6250
|
"style": [colorStyles.value, sizeStyles.value, props.style]
|
|
6227
6251
|
}, {
|
|
6228
6252
|
default: () => [!slots.default ? props.image ? vue.createVNode(VImg, {
|
|
@@ -6922,12 +6946,14 @@
|
|
|
6922
6946
|
const validateOn = vue.computed(() => {
|
|
6923
6947
|
let value = (props.validateOn ?? form?.validateOn.value) || 'input';
|
|
6924
6948
|
if (value === 'lazy') value = 'input lazy';
|
|
6949
|
+
if (value === 'eager') value = 'input eager';
|
|
6925
6950
|
const set = new Set(value?.split(' ') ?? []);
|
|
6926
6951
|
return {
|
|
6927
|
-
blur: set.has('blur') || set.has('input'),
|
|
6928
6952
|
input: set.has('input'),
|
|
6929
|
-
|
|
6930
|
-
|
|
6953
|
+
blur: set.has('blur') || set.has('input') || set.has('invalid-input'),
|
|
6954
|
+
invalidInput: set.has('invalid-input'),
|
|
6955
|
+
lazy: set.has('lazy'),
|
|
6956
|
+
eager: set.has('eager')
|
|
6931
6957
|
};
|
|
6932
6958
|
});
|
|
6933
6959
|
const isValid = vue.computed(() => {
|
|
@@ -6964,11 +6990,11 @@
|
|
|
6964
6990
|
});
|
|
6965
6991
|
vue.onMounted(async () => {
|
|
6966
6992
|
if (!validateOn.value.lazy) {
|
|
6967
|
-
await validate(
|
|
6993
|
+
await validate(!validateOn.value.eager);
|
|
6968
6994
|
}
|
|
6969
6995
|
form?.update(uid.value, isValid.value, errorMessages.value);
|
|
6970
6996
|
});
|
|
6971
|
-
useToggleScope(() => validateOn.value.input, () => {
|
|
6997
|
+
useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
|
|
6972
6998
|
vue.watch(validationModel, () => {
|
|
6973
6999
|
if (validationModel.value != null) {
|
|
6974
7000
|
validate();
|
|
@@ -6996,7 +7022,7 @@
|
|
|
6996
7022
|
async function resetValidation() {
|
|
6997
7023
|
isPristine.value = true;
|
|
6998
7024
|
if (!validateOn.value.lazy) {
|
|
6999
|
-
await validate(
|
|
7025
|
+
await validate(!validateOn.value.eager);
|
|
7000
7026
|
} else {
|
|
7001
7027
|
internalErrorMessages.value = [];
|
|
7002
7028
|
}
|
|
@@ -7936,7 +7962,9 @@
|
|
|
7936
7962
|
selected: group.selected,
|
|
7937
7963
|
scrollTo,
|
|
7938
7964
|
scrollOffset,
|
|
7939
|
-
focus
|
|
7965
|
+
focus,
|
|
7966
|
+
hasPrev,
|
|
7967
|
+
hasNext
|
|
7940
7968
|
};
|
|
7941
7969
|
}
|
|
7942
7970
|
});
|
|
@@ -8406,6 +8434,7 @@
|
|
|
8406
8434
|
return strategy;
|
|
8407
8435
|
};
|
|
8408
8436
|
|
|
8437
|
+
// Utilities
|
|
8409
8438
|
const singleOpenStrategy = {
|
|
8410
8439
|
open: _ref => {
|
|
8411
8440
|
let {
|
|
@@ -8439,11 +8468,11 @@
|
|
|
8439
8468
|
parents
|
|
8440
8469
|
} = _ref2;
|
|
8441
8470
|
if (value) {
|
|
8442
|
-
let parent = parents.get(id);
|
|
8471
|
+
let parent = vue.toRaw(parents.get(id));
|
|
8443
8472
|
opened.add(id);
|
|
8444
8473
|
while (parent != null && parent !== id) {
|
|
8445
8474
|
opened.add(parent);
|
|
8446
|
-
parent = parents.get(parent);
|
|
8475
|
+
parent = vue.toRaw(parents.get(parent));
|
|
8447
8476
|
}
|
|
8448
8477
|
return opened;
|
|
8449
8478
|
} else {
|
|
@@ -8614,18 +8643,18 @@
|
|
|
8614
8643
|
const items = [id];
|
|
8615
8644
|
while (items.length) {
|
|
8616
8645
|
const item = items.shift();
|
|
8617
|
-
selected.set(item, value ? 'on' : 'off');
|
|
8646
|
+
selected.set(vue.toRaw(item), value ? 'on' : 'off');
|
|
8618
8647
|
if (children.has(item)) {
|
|
8619
8648
|
items.push(...children.get(item));
|
|
8620
8649
|
}
|
|
8621
8650
|
}
|
|
8622
|
-
let parent = parents.get(id);
|
|
8651
|
+
let parent = vue.toRaw(parents.get(id));
|
|
8623
8652
|
while (parent) {
|
|
8624
8653
|
const childrenIds = children.get(parent);
|
|
8625
|
-
const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
|
|
8626
|
-
const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
|
|
8654
|
+
const everySelected = childrenIds.every(cid => selected.get(vue.toRaw(cid)) === 'on');
|
|
8655
|
+
const noneSelected = childrenIds.every(cid => !selected.has(vue.toRaw(cid)) || selected.get(vue.toRaw(cid)) === 'off');
|
|
8627
8656
|
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
|
8628
|
-
parent = parents.get(parent);
|
|
8657
|
+
parent = vue.toRaw(parents.get(parent));
|
|
8629
8658
|
}
|
|
8630
8659
|
|
|
8631
8660
|
// If mandatory and planned deselect results in no selected
|
|
@@ -8703,7 +8732,7 @@
|
|
|
8703
8732
|
let isUnmounted = false;
|
|
8704
8733
|
const children = vue.ref(new Map());
|
|
8705
8734
|
const parents = vue.ref(new Map());
|
|
8706
|
-
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
|
|
8735
|
+
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(vue.toRaw(v)), v => [...v.values()]);
|
|
8707
8736
|
const activeStrategy = vue.computed(() => {
|
|
8708
8737
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
|
8709
8738
|
if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
|
|
@@ -8876,9 +8905,9 @@
|
|
|
8876
8905
|
const item = {
|
|
8877
8906
|
...parent,
|
|
8878
8907
|
id: computedId,
|
|
8879
|
-
open: (open, e) => parent.root.open(computedId.value, open, e),
|
|
8908
|
+
open: (open, e) => parent.root.open(vue.toRaw(computedId.value), open, e),
|
|
8880
8909
|
openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
|
|
8881
|
-
isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
|
|
8910
|
+
isOpen: vue.computed(() => parent.root.opened.value.has(vue.toRaw(computedId.value))),
|
|
8882
8911
|
parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
|
|
8883
8912
|
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
|
8884
8913
|
isActivated: vue.computed(() => parent.root.activated.value.has(vue.toRaw(computedId.value))),
|
|
@@ -9102,6 +9131,7 @@
|
|
|
9102
9131
|
activate,
|
|
9103
9132
|
isActivated,
|
|
9104
9133
|
select,
|
|
9134
|
+
isOpen,
|
|
9105
9135
|
isSelected,
|
|
9106
9136
|
isIndeterminate,
|
|
9107
9137
|
isGroupActivator,
|
|
@@ -9156,6 +9186,7 @@
|
|
|
9156
9186
|
const slotProps = vue.computed(() => ({
|
|
9157
9187
|
isActive: isActive.value,
|
|
9158
9188
|
select,
|
|
9189
|
+
isOpen: isOpen.value,
|
|
9159
9190
|
isSelected: isSelected.value,
|
|
9160
9191
|
isIndeterminate: isIndeterminate.value
|
|
9161
9192
|
}));
|
|
@@ -9175,7 +9206,7 @@
|
|
|
9175
9206
|
function onKeyDown(e) {
|
|
9176
9207
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
9177
9208
|
e.preventDefault();
|
|
9178
|
-
|
|
9209
|
+
e.target.dispatchEvent(new MouseEvent('click', e));
|
|
9179
9210
|
}
|
|
9180
9211
|
}
|
|
9181
9212
|
useRender(() => {
|
|
@@ -9965,12 +9996,6 @@
|
|
|
9965
9996
|
// el.style.removeProperty('max-width')
|
|
9966
9997
|
// el.style.removeProperty('max-height')
|
|
9967
9998
|
|
|
9968
|
-
if (isRtl) {
|
|
9969
|
-
el.style.removeProperty('left');
|
|
9970
|
-
} else {
|
|
9971
|
-
el.style.removeProperty('right');
|
|
9972
|
-
}
|
|
9973
|
-
|
|
9974
9999
|
/* eslint-disable-next-line sonarjs/prefer-immediate-return */
|
|
9975
10000
|
const contentBox = nullifyTransforms(el);
|
|
9976
10001
|
if (isRtl) {
|
|
@@ -10498,7 +10523,8 @@
|
|
|
10498
10523
|
function useActivator(props, _ref) {
|
|
10499
10524
|
let {
|
|
10500
10525
|
isActive,
|
|
10501
|
-
isTop
|
|
10526
|
+
isTop,
|
|
10527
|
+
contentEl
|
|
10502
10528
|
} = _ref;
|
|
10503
10529
|
const vm = getCurrentInstance('useActivator');
|
|
10504
10530
|
const activatorEl = vue.ref();
|
|
@@ -10615,7 +10641,7 @@
|
|
|
10615
10641
|
return events;
|
|
10616
10642
|
});
|
|
10617
10643
|
vue.watch(isTop, val => {
|
|
10618
|
-
if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
|
|
10644
|
+
if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {
|
|
10619
10645
|
isActive.value = false;
|
|
10620
10646
|
}
|
|
10621
10647
|
});
|
|
@@ -11025,6 +11051,9 @@
|
|
|
11025
11051
|
emit
|
|
11026
11052
|
} = _ref;
|
|
11027
11053
|
const vm = getCurrentInstance('VOverlay');
|
|
11054
|
+
const root = vue.ref();
|
|
11055
|
+
const scrimEl = vue.ref();
|
|
11056
|
+
const contentEl = vue.ref();
|
|
11028
11057
|
const model = useProxiedModel(props, 'modelValue');
|
|
11029
11058
|
const isActive = vue.computed({
|
|
11030
11059
|
get: () => model.value,
|
|
@@ -11062,7 +11091,8 @@
|
|
|
11062
11091
|
scrimEvents
|
|
11063
11092
|
} = useActivator(props, {
|
|
11064
11093
|
isActive,
|
|
11065
|
-
isTop: localTop
|
|
11094
|
+
isTop: localTop,
|
|
11095
|
+
contentEl
|
|
11066
11096
|
});
|
|
11067
11097
|
const {
|
|
11068
11098
|
teleportTarget
|
|
@@ -11083,9 +11113,6 @@
|
|
|
11083
11113
|
vue.watch(() => props.disabled, v => {
|
|
11084
11114
|
if (v) isActive.value = false;
|
|
11085
11115
|
});
|
|
11086
|
-
const root = vue.ref();
|
|
11087
|
-
const scrimEl = vue.ref();
|
|
11088
|
-
const contentEl = vue.ref();
|
|
11089
11116
|
const {
|
|
11090
11117
|
contentStyles,
|
|
11091
11118
|
updateLocation
|
|
@@ -11336,10 +11363,12 @@
|
|
|
11336
11363
|
// TODO
|
|
11337
11364
|
// disableKeys: Boolean,
|
|
11338
11365
|
id: String,
|
|
11366
|
+
submenu: Boolean,
|
|
11339
11367
|
...omit(makeVOverlayProps({
|
|
11340
11368
|
closeDelay: 250,
|
|
11341
11369
|
closeOnContentClick: true,
|
|
11342
11370
|
locationStrategy: 'connected',
|
|
11371
|
+
location: undefined,
|
|
11343
11372
|
openDelay: 300,
|
|
11344
11373
|
scrim: false,
|
|
11345
11374
|
scrollStrategy: 'reposition',
|
|
@@ -11362,27 +11391,32 @@
|
|
|
11362
11391
|
const {
|
|
11363
11392
|
scopeId
|
|
11364
11393
|
} = useScopeId();
|
|
11394
|
+
const {
|
|
11395
|
+
isRtl
|
|
11396
|
+
} = useRtl();
|
|
11365
11397
|
const uid = getUid();
|
|
11366
11398
|
const id = vue.computed(() => props.id || `v-menu-${uid}`);
|
|
11367
11399
|
const overlay = vue.ref();
|
|
11368
11400
|
const parent = vue.inject(VMenuSymbol, null);
|
|
11369
|
-
const openChildren = vue.shallowRef(
|
|
11401
|
+
const openChildren = vue.shallowRef(new Set());
|
|
11370
11402
|
vue.provide(VMenuSymbol, {
|
|
11371
11403
|
register() {
|
|
11372
|
-
|
|
11404
|
+
openChildren.value.add(uid);
|
|
11373
11405
|
},
|
|
11374
11406
|
unregister() {
|
|
11375
|
-
|
|
11407
|
+
openChildren.value.delete(uid);
|
|
11376
11408
|
},
|
|
11377
11409
|
closeParents(e) {
|
|
11378
11410
|
setTimeout(() => {
|
|
11379
|
-
if (!openChildren.value && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
|
11411
|
+
if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
|
11380
11412
|
isActive.value = false;
|
|
11381
11413
|
parent?.closeParents();
|
|
11382
11414
|
}
|
|
11383
11415
|
}, 40);
|
|
11384
11416
|
}
|
|
11385
11417
|
});
|
|
11418
|
+
vue.onBeforeUnmount(() => parent?.unregister());
|
|
11419
|
+
vue.onDeactivated(() => isActive.value = false);
|
|
11386
11420
|
async function onFocusIn(e) {
|
|
11387
11421
|
const before = e.relatedTarget;
|
|
11388
11422
|
const after = e.target;
|
|
@@ -11422,9 +11456,9 @@
|
|
|
11422
11456
|
isActive.value = false;
|
|
11423
11457
|
overlay.value?.activatorEl?.focus();
|
|
11424
11458
|
}
|
|
11425
|
-
} else if (
|
|
11459
|
+
} else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
|
11426
11460
|
isActive.value = false;
|
|
11427
|
-
|
|
11461
|
+
overlay.value?.activatorEl?.focus();
|
|
11428
11462
|
}
|
|
11429
11463
|
}
|
|
11430
11464
|
function onActivatorKeydown(e) {
|
|
@@ -11433,12 +11467,21 @@
|
|
|
11433
11467
|
if (el && isActive.value) {
|
|
11434
11468
|
if (e.key === 'ArrowDown') {
|
|
11435
11469
|
e.preventDefault();
|
|
11470
|
+
e.stopImmediatePropagation();
|
|
11436
11471
|
focusChild(el, 'next');
|
|
11437
11472
|
} else if (e.key === 'ArrowUp') {
|
|
11438
11473
|
e.preventDefault();
|
|
11474
|
+
e.stopImmediatePropagation();
|
|
11439
11475
|
focusChild(el, 'prev');
|
|
11476
|
+
} else if (props.submenu) {
|
|
11477
|
+
if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
|
11478
|
+
isActive.value = false;
|
|
11479
|
+
} else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
|
|
11480
|
+
e.preventDefault();
|
|
11481
|
+
focusChild(el, 'first');
|
|
11482
|
+
}
|
|
11440
11483
|
}
|
|
11441
|
-
} else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
11484
|
+
} else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
11442
11485
|
isActive.value = true;
|
|
11443
11486
|
e.preventDefault();
|
|
11444
11487
|
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
|
@@ -11462,6 +11505,7 @@
|
|
|
11462
11505
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
11463
11506
|
"absolute": true,
|
|
11464
11507
|
"activatorProps": activatorProps.value,
|
|
11508
|
+
"location": props.location ?? (props.submenu ? 'end' : 'bottom'),
|
|
11465
11509
|
"onClick:outside": onClickOutside,
|
|
11466
11510
|
"onKeydown": onKeydown
|
|
11467
11511
|
}, scopeId), {
|
|
@@ -12294,6 +12338,7 @@
|
|
|
12294
12338
|
deep: true
|
|
12295
12339
|
});
|
|
12296
12340
|
return {
|
|
12341
|
+
calculateVisibleItems,
|
|
12297
12342
|
containerRef,
|
|
12298
12343
|
markerRef,
|
|
12299
12344
|
computedItems,
|
|
@@ -12357,6 +12402,7 @@
|
|
|
12357
12402
|
dimensionStyles
|
|
12358
12403
|
} = useDimension(props);
|
|
12359
12404
|
const {
|
|
12405
|
+
calculateVisibleItems,
|
|
12360
12406
|
containerRef,
|
|
12361
12407
|
markerRef,
|
|
12362
12408
|
handleScroll,
|
|
@@ -12428,6 +12474,7 @@
|
|
|
12428
12474
|
}, [children])]);
|
|
12429
12475
|
});
|
|
12430
12476
|
return {
|
|
12477
|
+
calculateVisibleItems,
|
|
12431
12478
|
scrollToIndex
|
|
12432
12479
|
};
|
|
12433
12480
|
}
|
|
@@ -12496,9 +12543,9 @@
|
|
|
12496
12543
|
}
|
|
12497
12544
|
}
|
|
12498
12545
|
return {
|
|
12499
|
-
onListScroll,
|
|
12500
|
-
onListKeydown
|
|
12501
|
-
};
|
|
12546
|
+
onScrollPassive: onListScroll,
|
|
12547
|
+
onKeydown: onListKeydown
|
|
12548
|
+
}; // typescript doesn't know about vue's event merging
|
|
12502
12549
|
}
|
|
12503
12550
|
|
|
12504
12551
|
// Types
|
|
@@ -12573,7 +12620,7 @@
|
|
|
12573
12620
|
const menu = vue.computed({
|
|
12574
12621
|
get: () => _menu.value,
|
|
12575
12622
|
set: v => {
|
|
12576
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
12623
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
12577
12624
|
_menu.value = v;
|
|
12578
12625
|
}
|
|
12579
12626
|
});
|
|
@@ -12612,10 +12659,7 @@
|
|
|
12612
12659
|
};
|
|
12613
12660
|
});
|
|
12614
12661
|
const listRef = vue.ref();
|
|
12615
|
-
const
|
|
12616
|
-
onListScroll,
|
|
12617
|
-
onListKeydown
|
|
12618
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
12662
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
12619
12663
|
function onClear(e) {
|
|
12620
12664
|
if (props.openOnClear) {
|
|
12621
12665
|
menu.value = true;
|
|
@@ -12625,6 +12669,11 @@
|
|
|
12625
12669
|
if (menuDisabled.value) return;
|
|
12626
12670
|
menu.value = !menu.value;
|
|
12627
12671
|
}
|
|
12672
|
+
function onListKeydown(e) {
|
|
12673
|
+
if (checkPrintable(e)) {
|
|
12674
|
+
onKeydown(e);
|
|
12675
|
+
}
|
|
12676
|
+
}
|
|
12628
12677
|
function onKeydown(e) {
|
|
12629
12678
|
if (!e.key || props.readonly || form?.isReadonly.value) return;
|
|
12630
12679
|
if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
|
|
@@ -12645,11 +12694,6 @@
|
|
|
12645
12694
|
// html select hotkeys
|
|
12646
12695
|
const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
|
|
12647
12696
|
|
|
12648
|
-
function checkPrintable(e) {
|
|
12649
|
-
const isPrintableChar = e.key.length === 1;
|
|
12650
|
-
const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
|
|
12651
|
-
return isPrintableChar && noModifier;
|
|
12652
|
-
}
|
|
12653
12697
|
if (props.multiple || !checkPrintable(e)) return;
|
|
12654
12698
|
const now = performance.now();
|
|
12655
12699
|
if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
|
|
@@ -12694,6 +12738,11 @@
|
|
|
12694
12738
|
menu.value = false;
|
|
12695
12739
|
}
|
|
12696
12740
|
}
|
|
12741
|
+
function onAfterEnter() {
|
|
12742
|
+
if (props.eager) {
|
|
12743
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
12744
|
+
}
|
|
12745
|
+
}
|
|
12697
12746
|
function onAfterLeave() {
|
|
12698
12747
|
if (isFocused.value) {
|
|
12699
12748
|
vTextFieldRef.value?.focus();
|
|
@@ -12772,6 +12821,7 @@
|
|
|
12772
12821
|
"openOnClick": false,
|
|
12773
12822
|
"closeOnContentClick": false,
|
|
12774
12823
|
"transition": props.transition,
|
|
12824
|
+
"onAfterEnter": onAfterEnter,
|
|
12775
12825
|
"onAfterLeave": onAfterLeave
|
|
12776
12826
|
}, computedMenuProps.value), {
|
|
12777
12827
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
|
@@ -12781,11 +12831,10 @@
|
|
|
12781
12831
|
"onMousedown": e => e.preventDefault(),
|
|
12782
12832
|
"onKeydown": onListKeydown,
|
|
12783
12833
|
"onFocusin": onFocusin,
|
|
12784
|
-
"onScrollPassive": onListScroll,
|
|
12785
12834
|
"tabindex": "-1",
|
|
12786
12835
|
"aria-live": "polite",
|
|
12787
12836
|
"color": props.itemColor ?? props.color
|
|
12788
|
-
}, props.listProps), {
|
|
12837
|
+
}, listEvents, props.listProps), {
|
|
12789
12838
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
12790
12839
|
"title": t(props.noDataText)
|
|
12791
12840
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
@@ -13080,7 +13129,7 @@
|
|
|
13080
13129
|
const menu = vue.computed({
|
|
13081
13130
|
get: () => _menu.value,
|
|
13082
13131
|
set: v => {
|
|
13083
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
13132
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
13084
13133
|
_menu.value = v;
|
|
13085
13134
|
}
|
|
13086
13135
|
});
|
|
@@ -13124,10 +13173,7 @@
|
|
|
13124
13173
|
});
|
|
13125
13174
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
|
|
13126
13175
|
const listRef = vue.ref();
|
|
13127
|
-
const
|
|
13128
|
-
onListScroll,
|
|
13129
|
-
onListKeydown
|
|
13130
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
13176
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
13131
13177
|
function onClear(e) {
|
|
13132
13178
|
if (props.openOnClear) {
|
|
13133
13179
|
menu.value = true;
|
|
@@ -13146,6 +13192,11 @@
|
|
|
13146
13192
|
}
|
|
13147
13193
|
menu.value = !menu.value;
|
|
13148
13194
|
}
|
|
13195
|
+
function onListKeydown(e) {
|
|
13196
|
+
if (checkPrintable(e)) {
|
|
13197
|
+
vTextFieldRef.value?.focus();
|
|
13198
|
+
}
|
|
13199
|
+
}
|
|
13149
13200
|
function onKeydown(e) {
|
|
13150
13201
|
if (props.readonly || form?.isReadonly.value) return;
|
|
13151
13202
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
@@ -13210,6 +13261,11 @@
|
|
|
13210
13261
|
}
|
|
13211
13262
|
}
|
|
13212
13263
|
}
|
|
13264
|
+
function onAfterEnter() {
|
|
13265
|
+
if (props.eager) {
|
|
13266
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
13267
|
+
}
|
|
13268
|
+
}
|
|
13213
13269
|
function onAfterLeave() {
|
|
13214
13270
|
if (isFocused.value) {
|
|
13215
13271
|
isPristine.value = true;
|
|
@@ -13338,6 +13394,7 @@
|
|
|
13338
13394
|
"openOnClick": false,
|
|
13339
13395
|
"closeOnContentClick": false,
|
|
13340
13396
|
"transition": props.transition,
|
|
13397
|
+
"onAfterEnter": onAfterEnter,
|
|
13341
13398
|
"onAfterLeave": onAfterLeave
|
|
13342
13399
|
}, props.menuProps), {
|
|
13343
13400
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
|
@@ -13348,11 +13405,10 @@
|
|
|
13348
13405
|
"onKeydown": onListKeydown,
|
|
13349
13406
|
"onFocusin": onFocusin,
|
|
13350
13407
|
"onFocusout": onFocusout,
|
|
13351
|
-
"onScrollPassive": onListScroll,
|
|
13352
13408
|
"tabindex": "-1",
|
|
13353
13409
|
"aria-live": "polite",
|
|
13354
13410
|
"color": props.itemColor ?? props.color
|
|
13355
|
-
}, props.listProps), {
|
|
13411
|
+
}, listEvents, props.listProps), {
|
|
13356
13412
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
13357
13413
|
"title": t(props.noDataText)
|
|
13358
13414
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
@@ -13802,8 +13858,7 @@
|
|
|
13802
13858
|
const height = vue.computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
|
|
13803
13859
|
const isActive = useProxiedModel(props, 'active', props.active);
|
|
13804
13860
|
const {
|
|
13805
|
-
layoutItemStyles
|
|
13806
|
-
layoutIsReady
|
|
13861
|
+
layoutItemStyles
|
|
13807
13862
|
} = useLayoutItem({
|
|
13808
13863
|
id: props.name,
|
|
13809
13864
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -13841,7 +13896,7 @@
|
|
|
13841
13896
|
}, [slots.default()])]
|
|
13842
13897
|
});
|
|
13843
13898
|
});
|
|
13844
|
-
return
|
|
13899
|
+
return {};
|
|
13845
13900
|
}
|
|
13846
13901
|
});
|
|
13847
13902
|
|
|
@@ -16913,7 +16968,7 @@
|
|
|
16913
16968
|
const menu = vue.computed({
|
|
16914
16969
|
get: () => _menu.value,
|
|
16915
16970
|
set: v => {
|
|
16916
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
16971
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
16917
16972
|
_menu.value = v;
|
|
16918
16973
|
}
|
|
16919
16974
|
});
|
|
@@ -16996,10 +17051,7 @@
|
|
|
16996
17051
|
});
|
|
16997
17052
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
|
|
16998
17053
|
const listRef = vue.ref();
|
|
16999
|
-
const
|
|
17000
|
-
onListScroll,
|
|
17001
|
-
onListKeydown
|
|
17002
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
17054
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
17003
17055
|
function onClear(e) {
|
|
17004
17056
|
cleared = true;
|
|
17005
17057
|
if (props.openOnClear) {
|
|
@@ -17018,6 +17070,11 @@
|
|
|
17018
17070
|
}
|
|
17019
17071
|
menu.value = !menu.value;
|
|
17020
17072
|
}
|
|
17073
|
+
function onListKeydown(e) {
|
|
17074
|
+
if (checkPrintable(e)) {
|
|
17075
|
+
vTextFieldRef.value?.focus();
|
|
17076
|
+
}
|
|
17077
|
+
}
|
|
17021
17078
|
// eslint-disable-next-line complexity
|
|
17022
17079
|
function onKeydown(e) {
|
|
17023
17080
|
if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
|
|
@@ -17082,6 +17139,11 @@
|
|
|
17082
17139
|
}
|
|
17083
17140
|
}
|
|
17084
17141
|
}
|
|
17142
|
+
function onAfterEnter() {
|
|
17143
|
+
if (props.eager) {
|
|
17144
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
17145
|
+
}
|
|
17146
|
+
}
|
|
17085
17147
|
function onAfterLeave() {
|
|
17086
17148
|
if (isFocused.value) {
|
|
17087
17149
|
isPristine.value = true;
|
|
@@ -17206,6 +17268,7 @@
|
|
|
17206
17268
|
"openOnClick": false,
|
|
17207
17269
|
"closeOnContentClick": false,
|
|
17208
17270
|
"transition": props.transition,
|
|
17271
|
+
"onAfterEnter": onAfterEnter,
|
|
17209
17272
|
"onAfterLeave": onAfterLeave
|
|
17210
17273
|
}, props.menuProps), {
|
|
17211
17274
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
|
@@ -17216,11 +17279,10 @@
|
|
|
17216
17279
|
"onKeydown": onListKeydown,
|
|
17217
17280
|
"onFocusin": onFocusin,
|
|
17218
17281
|
"onFocusout": onFocusout,
|
|
17219
|
-
"onScrollPassive": onListScroll,
|
|
17220
17282
|
"tabindex": "-1",
|
|
17221
17283
|
"aria-live": "polite",
|
|
17222
17284
|
"color": props.itemColor ?? props.color
|
|
17223
|
-
}, props.listProps), {
|
|
17285
|
+
}, listEvents, props.listProps), {
|
|
17224
17286
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
17225
17287
|
"title": t(props.noDataText)
|
|
17226
17288
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
@@ -21164,6 +21226,7 @@
|
|
|
21164
21226
|
default: false
|
|
21165
21227
|
},
|
|
21166
21228
|
...makeComponentProps(),
|
|
21229
|
+
...makeDimensionProps(),
|
|
21167
21230
|
...makeTagProps()
|
|
21168
21231
|
}, 'VContainer');
|
|
21169
21232
|
const VContainer = genericComponent()({
|
|
@@ -21176,11 +21239,14 @@
|
|
|
21176
21239
|
const {
|
|
21177
21240
|
rtlClasses
|
|
21178
21241
|
} = useRtl();
|
|
21242
|
+
const {
|
|
21243
|
+
dimensionStyles
|
|
21244
|
+
} = useDimension(props);
|
|
21179
21245
|
useRender(() => vue.createVNode(props.tag, {
|
|
21180
21246
|
"class": ['v-container', {
|
|
21181
21247
|
'v-container--fluid': props.fluid
|
|
21182
21248
|
}, rtlClasses.value, props.class],
|
|
21183
|
-
"style": props.style
|
|
21249
|
+
"style": [dimensionStyles.value, props.style]
|
|
21184
21250
|
}, slots));
|
|
21185
21251
|
return {};
|
|
21186
21252
|
}
|
|
@@ -22602,7 +22668,8 @@
|
|
|
22602
22668
|
default: false
|
|
22603
22669
|
},
|
|
22604
22670
|
readonly: Boolean,
|
|
22605
|
-
...makeComponentProps()
|
|
22671
|
+
...makeComponentProps(),
|
|
22672
|
+
...makeDimensionProps()
|
|
22606
22673
|
}, 'VExpansionPanelTitle');
|
|
22607
22674
|
const VExpansionPanelTitle = genericComponent()({
|
|
22608
22675
|
name: 'VExpansionPanelTitle',
|
|
@@ -22620,6 +22687,9 @@
|
|
|
22620
22687
|
backgroundColorClasses,
|
|
22621
22688
|
backgroundColorStyles
|
|
22622
22689
|
} = useBackgroundColor(props, 'color');
|
|
22690
|
+
const {
|
|
22691
|
+
dimensionStyles
|
|
22692
|
+
} = useDimension(props);
|
|
22623
22693
|
const slotProps = vue.computed(() => ({
|
|
22624
22694
|
collapseIcon: props.collapseIcon,
|
|
22625
22695
|
disabled: expansionPanel.disabled.value,
|
|
@@ -22634,7 +22704,7 @@
|
|
|
22634
22704
|
'v-expansion-panel-title--focusable': props.focusable,
|
|
22635
22705
|
'v-expansion-panel-title--static': props.static
|
|
22636
22706
|
}, backgroundColorClasses.value, props.class],
|
|
22637
|
-
"style": [backgroundColorStyles.value, props.style],
|
|
22707
|
+
"style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
|
|
22638
22708
|
"type": "button",
|
|
22639
22709
|
"tabindex": expansionPanel.disabled.value ? -1 : undefined,
|
|
22640
22710
|
"disabled": expansionPanel.disabled.value,
|
|
@@ -23157,7 +23227,6 @@
|
|
|
23157
23227
|
slots
|
|
23158
23228
|
} = _ref;
|
|
23159
23229
|
const layoutItemStyles = vue.ref();
|
|
23160
|
-
const layoutIsReady = vue.shallowRef();
|
|
23161
23230
|
const {
|
|
23162
23231
|
themeClasses
|
|
23163
23232
|
} = provideTheme(props);
|
|
@@ -23194,7 +23263,6 @@
|
|
|
23194
23263
|
});
|
|
23195
23264
|
vue.watchEffect(() => {
|
|
23196
23265
|
layoutItemStyles.value = layout.layoutItemStyles.value;
|
|
23197
|
-
layoutIsReady.value = layout.layoutIsReady;
|
|
23198
23266
|
});
|
|
23199
23267
|
});
|
|
23200
23268
|
useRender(() => vue.createVNode(props.tag, {
|
|
@@ -23204,7 +23272,7 @@
|
|
|
23204
23272
|
height: convertToUnit(props.height)
|
|
23205
23273
|
}, props.style]
|
|
23206
23274
|
}, slots));
|
|
23207
|
-
return
|
|
23275
|
+
return {};
|
|
23208
23276
|
}
|
|
23209
23277
|
});
|
|
23210
23278
|
|
|
@@ -23631,9 +23699,7 @@
|
|
|
23631
23699
|
"ref": layoutRef,
|
|
23632
23700
|
"class": [layoutClasses.value, props.class],
|
|
23633
23701
|
"style": [dimensionStyles.value, layoutStyles.value, props.style]
|
|
23634
|
-
}, [
|
|
23635
|
-
default: () => [vue.createVNode(vue.Fragment, null, [slots.default?.()])]
|
|
23636
|
-
})]));
|
|
23702
|
+
}, [slots.default?.()]));
|
|
23637
23703
|
return {
|
|
23638
23704
|
getLayoutItem,
|
|
23639
23705
|
items
|
|
@@ -23664,8 +23730,7 @@
|
|
|
23664
23730
|
slots
|
|
23665
23731
|
} = _ref;
|
|
23666
23732
|
const {
|
|
23667
|
-
layoutItemStyles
|
|
23668
|
-
layoutIsReady
|
|
23733
|
+
layoutItemStyles
|
|
23669
23734
|
} = useLayoutItem({
|
|
23670
23735
|
id: props.name,
|
|
23671
23736
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -23675,11 +23740,10 @@
|
|
|
23675
23740
|
active: vue.toRef(props, 'modelValue'),
|
|
23676
23741
|
absolute: vue.toRef(props, 'absolute')
|
|
23677
23742
|
});
|
|
23678
|
-
|
|
23743
|
+
return () => vue.createVNode("div", {
|
|
23679
23744
|
"class": ['v-layout-item', props.class],
|
|
23680
23745
|
"style": [layoutItemStyles.value, props.style]
|
|
23681
|
-
}, [slots.default?.()])
|
|
23682
|
-
return layoutIsReady;
|
|
23746
|
+
}, [slots.default?.()]);
|
|
23683
23747
|
}
|
|
23684
23748
|
});
|
|
23685
23749
|
|
|
@@ -23790,8 +23854,7 @@
|
|
|
23790
23854
|
dimensionStyles
|
|
23791
23855
|
} = useDimension(props);
|
|
23792
23856
|
const {
|
|
23793
|
-
mainStyles
|
|
23794
|
-
layoutIsReady
|
|
23857
|
+
mainStyles
|
|
23795
23858
|
} = useLayout();
|
|
23796
23859
|
const {
|
|
23797
23860
|
ssrBootStyles
|
|
@@ -23806,7 +23869,7 @@
|
|
|
23806
23869
|
"class": "v-main__scroller"
|
|
23807
23870
|
}, [slots.default?.()]) : slots.default?.()]
|
|
23808
23871
|
}));
|
|
23809
|
-
return
|
|
23872
|
+
return {};
|
|
23810
23873
|
}
|
|
23811
23874
|
});
|
|
23812
23875
|
|
|
@@ -24276,8 +24339,7 @@
|
|
|
24276
24339
|
const elementSize = vue.computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);
|
|
24277
24340
|
const {
|
|
24278
24341
|
layoutItemStyles,
|
|
24279
|
-
layoutItemScrimStyles
|
|
24280
|
-
layoutIsReady
|
|
24342
|
+
layoutItemScrimStyles
|
|
24281
24343
|
} = useLayoutItem({
|
|
24282
24344
|
id: props.name,
|
|
24283
24345
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -24373,9 +24435,9 @@
|
|
|
24373
24435
|
}, scopeId), null)]
|
|
24374
24436
|
})]);
|
|
24375
24437
|
});
|
|
24376
|
-
return
|
|
24438
|
+
return {
|
|
24377
24439
|
isStuck
|
|
24378
|
-
}
|
|
24440
|
+
};
|
|
24379
24441
|
}
|
|
24380
24442
|
});
|
|
24381
24443
|
|
|
@@ -26064,7 +26126,7 @@
|
|
|
26064
26126
|
const model = useProxiedModel(props, 'modelValue');
|
|
26065
26127
|
const menuRef = vue.ref();
|
|
26066
26128
|
const location = vue.computed(() => {
|
|
26067
|
-
const [y, x = 'center'] = props.location
|
|
26129
|
+
const [y, x = 'center'] = props.location?.split(' ') ?? [];
|
|
26068
26130
|
return `${y} ${x}`;
|
|
26069
26131
|
});
|
|
26070
26132
|
const locationClasses = vue.computed(() => ({
|
|
@@ -28150,7 +28212,7 @@
|
|
|
28150
28212
|
goTo
|
|
28151
28213
|
};
|
|
28152
28214
|
}
|
|
28153
|
-
const version$1 = "3.
|
|
28215
|
+
const version$1 = "3.7.0";
|
|
28154
28216
|
createVuetify$1.version = version$1;
|
|
28155
28217
|
|
|
28156
28218
|
// Vue's inject() can only be used in setup
|
|
@@ -28175,7 +28237,7 @@
|
|
|
28175
28237
|
...options
|
|
28176
28238
|
});
|
|
28177
28239
|
};
|
|
28178
|
-
const version = "3.
|
|
28240
|
+
const version = "3.7.0";
|
|
28179
28241
|
createVuetify.version = version;
|
|
28180
28242
|
|
|
28181
28243
|
exports.blueprints = index;
|