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-labs.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
|
*/
|
|
@@ -543,16 +543,6 @@
|
|
|
543
543
|
const timeoutId = window.setTimeout(cb, timeout);
|
|
544
544
|
return () => window.clearTimeout(timeoutId);
|
|
545
545
|
}
|
|
546
|
-
function eagerComputed(fn, options) {
|
|
547
|
-
const result = vue.shallowRef();
|
|
548
|
-
vue.watchEffect(() => {
|
|
549
|
-
result.value = fn();
|
|
550
|
-
}, {
|
|
551
|
-
flush: 'sync',
|
|
552
|
-
...options
|
|
553
|
-
});
|
|
554
|
-
return vue.readonly(result);
|
|
555
|
-
}
|
|
556
546
|
function isClickInsideElement(event, targetDiv) {
|
|
557
547
|
const mouseX = event.clientX;
|
|
558
548
|
const mouseY = event.clientY;
|
|
@@ -579,6 +569,11 @@
|
|
|
579
569
|
});
|
|
580
570
|
return fn;
|
|
581
571
|
}
|
|
572
|
+
function checkPrintable(e) {
|
|
573
|
+
const isPrintableChar = e.key.length === 1;
|
|
574
|
+
const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
|
|
575
|
+
return isPrintableChar && noModifier;
|
|
576
|
+
}
|
|
582
577
|
|
|
583
578
|
// Utilities
|
|
584
579
|
const block = ['top', 'bottom'];
|
|
@@ -1647,9 +1642,7 @@
|
|
|
1647
1642
|
function useLayout() {
|
|
1648
1643
|
const layout = vue.inject(VuetifyLayoutKey);
|
|
1649
1644
|
if (!layout) throw new Error('[Vuetify] Could not find injected layout');
|
|
1650
|
-
const layoutIsReady = vue.nextTick();
|
|
1651
1645
|
return {
|
|
1652
|
-
layoutIsReady,
|
|
1653
1646
|
getLayoutItem: layout.getLayoutItem,
|
|
1654
1647
|
mainRect: layout.mainRect,
|
|
1655
1648
|
mainStyles: layout.mainStyles
|
|
@@ -1666,7 +1659,6 @@
|
|
|
1666
1659
|
const isKeptAlive = vue.shallowRef(false);
|
|
1667
1660
|
vue.onDeactivated(() => isKeptAlive.value = true);
|
|
1668
1661
|
vue.onActivated(() => isKeptAlive.value = false);
|
|
1669
|
-
const layoutIsReady = vue.nextTick();
|
|
1670
1662
|
const {
|
|
1671
1663
|
layoutItemStyles,
|
|
1672
1664
|
layoutItemScrimStyles
|
|
@@ -1679,8 +1671,7 @@
|
|
|
1679
1671
|
return {
|
|
1680
1672
|
layoutItemStyles,
|
|
1681
1673
|
layoutRect: layout.layoutRect,
|
|
1682
|
-
layoutItemScrimStyles
|
|
1683
|
-
layoutIsReady
|
|
1674
|
+
layoutItemScrimStyles
|
|
1684
1675
|
};
|
|
1685
1676
|
}
|
|
1686
1677
|
const generateLayers = (layout, positions, layoutSizes, activeItems) => {
|
|
@@ -1726,7 +1717,29 @@
|
|
|
1726
1717
|
resizeRef,
|
|
1727
1718
|
contentRect: layoutRect
|
|
1728
1719
|
} = useResizeObserver();
|
|
1729
|
-
const
|
|
1720
|
+
const computedOverlaps = vue.computed(() => {
|
|
1721
|
+
const map = new Map();
|
|
1722
|
+
const overlaps = props.overlaps ?? [];
|
|
1723
|
+
for (const overlap of overlaps.filter(item => item.includes(':'))) {
|
|
1724
|
+
const [top, bottom] = overlap.split(':');
|
|
1725
|
+
if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;
|
|
1726
|
+
const topPosition = positions.get(top);
|
|
1727
|
+
const bottomPosition = positions.get(bottom);
|
|
1728
|
+
const topAmount = layoutSizes.get(top);
|
|
1729
|
+
const bottomAmount = layoutSizes.get(bottom);
|
|
1730
|
+
if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;
|
|
1731
|
+
map.set(bottom, {
|
|
1732
|
+
position: topPosition.value,
|
|
1733
|
+
amount: parseInt(topAmount.value, 10)
|
|
1734
|
+
});
|
|
1735
|
+
map.set(top, {
|
|
1736
|
+
position: bottomPosition.value,
|
|
1737
|
+
amount: -parseInt(bottomAmount.value, 10)
|
|
1738
|
+
});
|
|
1739
|
+
}
|
|
1740
|
+
return map;
|
|
1741
|
+
});
|
|
1742
|
+
const layers = vue.computed(() => {
|
|
1730
1743
|
const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b);
|
|
1731
1744
|
const layout = [];
|
|
1732
1745
|
for (const p of uniquePriorities) {
|
|
@@ -1752,7 +1765,7 @@
|
|
|
1752
1765
|
})
|
|
1753
1766
|
};
|
|
1754
1767
|
});
|
|
1755
|
-
const items =
|
|
1768
|
+
const items = vue.computed(() => {
|
|
1756
1769
|
return layers.value.slice(1).map((_ref, index) => {
|
|
1757
1770
|
let {
|
|
1758
1771
|
id
|
|
@@ -1774,7 +1787,10 @@
|
|
|
1774
1787
|
return items.value.find(item => item.id === id);
|
|
1775
1788
|
};
|
|
1776
1789
|
const rootVm = getCurrentInstance('createLayout');
|
|
1777
|
-
const
|
|
1790
|
+
const isMounted = vue.shallowRef(false);
|
|
1791
|
+
vue.onMounted(() => {
|
|
1792
|
+
isMounted.value = true;
|
|
1793
|
+
});
|
|
1778
1794
|
vue.provide(VuetifyLayoutKey, {
|
|
1779
1795
|
register: (vm, _ref2) => {
|
|
1780
1796
|
let {
|
|
@@ -1812,9 +1828,13 @@
|
|
|
1812
1828
|
transition: 'none'
|
|
1813
1829
|
})
|
|
1814
1830
|
};
|
|
1815
|
-
if (
|
|
1831
|
+
if (!isMounted.value) return styles;
|
|
1816
1832
|
const item = items.value[index.value];
|
|
1817
1833
|
if (!item) throw new Error(`[Vuetify] Could not find layout item "${id}"`);
|
|
1834
|
+
const overlap = computedOverlaps.value.get(id);
|
|
1835
|
+
if (overlap) {
|
|
1836
|
+
item[overlap.position] += overlap.amount;
|
|
1837
|
+
}
|
|
1818
1838
|
return {
|
|
1819
1839
|
...styles,
|
|
1820
1840
|
height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,
|
|
@@ -1847,8 +1867,7 @@
|
|
|
1847
1867
|
getLayoutItem,
|
|
1848
1868
|
items,
|
|
1849
1869
|
layoutRect,
|
|
1850
|
-
rootZIndex
|
|
1851
|
-
layoutIsReady
|
|
1870
|
+
rootZIndex
|
|
1852
1871
|
});
|
|
1853
1872
|
const layoutClasses = vue.computed(() => ['v-layout', {
|
|
1854
1873
|
'v-layout--full-height': props.fullHeight
|
|
@@ -1864,7 +1883,6 @@
|
|
|
1864
1883
|
getLayoutItem,
|
|
1865
1884
|
items,
|
|
1866
1885
|
layoutRect,
|
|
1867
|
-
layoutIsReady,
|
|
1868
1886
|
layoutRef: resizeRef
|
|
1869
1887
|
};
|
|
1870
1888
|
}
|
|
@@ -2561,9 +2579,7 @@
|
|
|
2561
2579
|
"style": [props.style]
|
|
2562
2580
|
}, [vue.createVNode("div", {
|
|
2563
2581
|
"class": "v-application__wrap"
|
|
2564
|
-
}, [
|
|
2565
|
-
default: () => [vue.createVNode(vue.Fragment, null, [slots.default?.()])]
|
|
2566
|
-
})])]));
|
|
2582
|
+
}, [slots.default?.()])]));
|
|
2567
2583
|
return {
|
|
2568
2584
|
getLayoutItem,
|
|
2569
2585
|
items,
|
|
@@ -3252,6 +3268,7 @@
|
|
|
3252
3268
|
// not intended for public use, this is passed in by vuetify-loader
|
|
3253
3269
|
|
|
3254
3270
|
const makeVImgProps = propsFactory({
|
|
3271
|
+
absolute: Boolean,
|
|
3255
3272
|
alt: String,
|
|
3256
3273
|
cover: Boolean,
|
|
3257
3274
|
color: String,
|
|
@@ -3508,6 +3525,7 @@
|
|
|
3508
3525
|
const responsiveProps = VResponsive.filterProps(props);
|
|
3509
3526
|
return vue.withDirectives(vue.createVNode(VResponsive, vue.mergeProps({
|
|
3510
3527
|
"class": ['v-img', {
|
|
3528
|
+
'v-img--absolute': props.absolute,
|
|
3511
3529
|
'v-img--booting': !isBooted.value
|
|
3512
3530
|
}, backgroundColorClasses.value, roundedClasses.value, props.class],
|
|
3513
3531
|
"style": [{
|
|
@@ -3920,8 +3938,9 @@
|
|
|
3920
3938
|
const isFlat = vue.computed(() => props.flat || scrollBehavior.value.fullyHide && !isActive.value || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
|
|
3921
3939
|
const opacity = vue.computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
|
|
3922
3940
|
const height = vue.computed(() => {
|
|
3923
|
-
|
|
3924
|
-
const
|
|
3941
|
+
if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
|
|
3942
|
+
const height = vToolbarRef.value?.contentHeight ?? 0;
|
|
3943
|
+
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
|
|
3925
3944
|
if (!canHide.value) return height + extensionHeight;
|
|
3926
3945
|
return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide ? height + extensionHeight : height;
|
|
3927
3946
|
});
|
|
@@ -3942,8 +3961,7 @@
|
|
|
3942
3961
|
ssrBootStyles
|
|
3943
3962
|
} = useSsrBoot();
|
|
3944
3963
|
const {
|
|
3945
|
-
layoutItemStyles
|
|
3946
|
-
layoutIsReady
|
|
3964
|
+
layoutItemStyles
|
|
3947
3965
|
} = useLayoutItem({
|
|
3948
3966
|
id: props.name,
|
|
3949
3967
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -3971,7 +3989,7 @@
|
|
|
3971
3989
|
"flat": isFlat.value
|
|
3972
3990
|
}), slots);
|
|
3973
3991
|
});
|
|
3974
|
-
return
|
|
3992
|
+
return {};
|
|
3975
3993
|
}
|
|
3976
3994
|
});
|
|
3977
3995
|
|
|
@@ -5515,6 +5533,7 @@
|
|
|
5515
5533
|
type: Boolean,
|
|
5516
5534
|
default: undefined
|
|
5517
5535
|
},
|
|
5536
|
+
activeColor: String,
|
|
5518
5537
|
baseColor: String,
|
|
5519
5538
|
symbol: {
|
|
5520
5539
|
type: null,
|
|
@@ -5606,10 +5625,11 @@
|
|
|
5606
5625
|
}
|
|
5607
5626
|
return group?.isSelected.value;
|
|
5608
5627
|
});
|
|
5628
|
+
const color = vue.computed(() => isActive.value ? props.activeColor ?? props.color : props.color);
|
|
5609
5629
|
const variantProps = vue.computed(() => {
|
|
5610
5630
|
const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;
|
|
5611
5631
|
return {
|
|
5612
|
-
color: showColor ?
|
|
5632
|
+
color: showColor ? color.value ?? props.baseColor : props.baseColor,
|
|
5613
5633
|
variant: props.variant
|
|
5614
5634
|
};
|
|
5615
5635
|
});
|
|
@@ -5950,6 +5970,7 @@
|
|
|
5950
5970
|
icon: IconValue,
|
|
5951
5971
|
image: String,
|
|
5952
5972
|
text: String,
|
|
5973
|
+
...makeBorderProps(),
|
|
5953
5974
|
...makeComponentProps(),
|
|
5954
5975
|
...makeDensityProps(),
|
|
5955
5976
|
...makeRoundedProps(),
|
|
@@ -5970,6 +5991,9 @@
|
|
|
5970
5991
|
const {
|
|
5971
5992
|
themeClasses
|
|
5972
5993
|
} = provideTheme(props);
|
|
5994
|
+
const {
|
|
5995
|
+
borderClasses
|
|
5996
|
+
} = useBorder(props);
|
|
5973
5997
|
const {
|
|
5974
5998
|
colorClasses,
|
|
5975
5999
|
colorStyles,
|
|
@@ -5989,7 +6013,7 @@
|
|
|
5989
6013
|
"class": ['v-avatar', {
|
|
5990
6014
|
'v-avatar--start': props.start,
|
|
5991
6015
|
'v-avatar--end': props.end
|
|
5992
|
-
}, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
|
|
6016
|
+
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
|
|
5993
6017
|
"style": [colorStyles.value, sizeStyles.value, props.style]
|
|
5994
6018
|
}, {
|
|
5995
6019
|
default: () => [!slots.default ? props.image ? vue.createVNode(VImg, {
|
|
@@ -6689,12 +6713,14 @@
|
|
|
6689
6713
|
const validateOn = vue.computed(() => {
|
|
6690
6714
|
let value = (props.validateOn ?? form?.validateOn.value) || 'input';
|
|
6691
6715
|
if (value === 'lazy') value = 'input lazy';
|
|
6716
|
+
if (value === 'eager') value = 'input eager';
|
|
6692
6717
|
const set = new Set(value?.split(' ') ?? []);
|
|
6693
6718
|
return {
|
|
6694
|
-
blur: set.has('blur') || set.has('input'),
|
|
6695
6719
|
input: set.has('input'),
|
|
6696
|
-
|
|
6697
|
-
|
|
6720
|
+
blur: set.has('blur') || set.has('input') || set.has('invalid-input'),
|
|
6721
|
+
invalidInput: set.has('invalid-input'),
|
|
6722
|
+
lazy: set.has('lazy'),
|
|
6723
|
+
eager: set.has('eager')
|
|
6698
6724
|
};
|
|
6699
6725
|
});
|
|
6700
6726
|
const isValid = vue.computed(() => {
|
|
@@ -6731,11 +6757,11 @@
|
|
|
6731
6757
|
});
|
|
6732
6758
|
vue.onMounted(async () => {
|
|
6733
6759
|
if (!validateOn.value.lazy) {
|
|
6734
|
-
await validate(
|
|
6760
|
+
await validate(!validateOn.value.eager);
|
|
6735
6761
|
}
|
|
6736
6762
|
form?.update(uid.value, isValid.value, errorMessages.value);
|
|
6737
6763
|
});
|
|
6738
|
-
useToggleScope(() => validateOn.value.input, () => {
|
|
6764
|
+
useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
|
|
6739
6765
|
vue.watch(validationModel, () => {
|
|
6740
6766
|
if (validationModel.value != null) {
|
|
6741
6767
|
validate();
|
|
@@ -6763,7 +6789,7 @@
|
|
|
6763
6789
|
async function resetValidation() {
|
|
6764
6790
|
isPristine.value = true;
|
|
6765
6791
|
if (!validateOn.value.lazy) {
|
|
6766
|
-
await validate(
|
|
6792
|
+
await validate(!validateOn.value.eager);
|
|
6767
6793
|
} else {
|
|
6768
6794
|
internalErrorMessages.value = [];
|
|
6769
6795
|
}
|
|
@@ -7703,7 +7729,9 @@
|
|
|
7703
7729
|
selected: group.selected,
|
|
7704
7730
|
scrollTo,
|
|
7705
7731
|
scrollOffset,
|
|
7706
|
-
focus
|
|
7732
|
+
focus,
|
|
7733
|
+
hasPrev,
|
|
7734
|
+
hasNext
|
|
7707
7735
|
};
|
|
7708
7736
|
}
|
|
7709
7737
|
});
|
|
@@ -8173,6 +8201,7 @@
|
|
|
8173
8201
|
return strategy;
|
|
8174
8202
|
};
|
|
8175
8203
|
|
|
8204
|
+
// Utilities
|
|
8176
8205
|
const singleOpenStrategy = {
|
|
8177
8206
|
open: _ref => {
|
|
8178
8207
|
let {
|
|
@@ -8206,11 +8235,11 @@
|
|
|
8206
8235
|
parents
|
|
8207
8236
|
} = _ref2;
|
|
8208
8237
|
if (value) {
|
|
8209
|
-
let parent = parents.get(id);
|
|
8238
|
+
let parent = vue.toRaw(parents.get(id));
|
|
8210
8239
|
opened.add(id);
|
|
8211
8240
|
while (parent != null && parent !== id) {
|
|
8212
8241
|
opened.add(parent);
|
|
8213
|
-
parent = parents.get(parent);
|
|
8242
|
+
parent = vue.toRaw(parents.get(parent));
|
|
8214
8243
|
}
|
|
8215
8244
|
return opened;
|
|
8216
8245
|
} else {
|
|
@@ -8381,18 +8410,18 @@
|
|
|
8381
8410
|
const items = [id];
|
|
8382
8411
|
while (items.length) {
|
|
8383
8412
|
const item = items.shift();
|
|
8384
|
-
selected.set(item, value ? 'on' : 'off');
|
|
8413
|
+
selected.set(vue.toRaw(item), value ? 'on' : 'off');
|
|
8385
8414
|
if (children.has(item)) {
|
|
8386
8415
|
items.push(...children.get(item));
|
|
8387
8416
|
}
|
|
8388
8417
|
}
|
|
8389
|
-
let parent = parents.get(id);
|
|
8418
|
+
let parent = vue.toRaw(parents.get(id));
|
|
8390
8419
|
while (parent) {
|
|
8391
8420
|
const childrenIds = children.get(parent);
|
|
8392
|
-
const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
|
|
8393
|
-
const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
|
|
8421
|
+
const everySelected = childrenIds.every(cid => selected.get(vue.toRaw(cid)) === 'on');
|
|
8422
|
+
const noneSelected = childrenIds.every(cid => !selected.has(vue.toRaw(cid)) || selected.get(vue.toRaw(cid)) === 'off');
|
|
8394
8423
|
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
|
8395
|
-
parent = parents.get(parent);
|
|
8424
|
+
parent = vue.toRaw(parents.get(parent));
|
|
8396
8425
|
}
|
|
8397
8426
|
|
|
8398
8427
|
// If mandatory and planned deselect results in no selected
|
|
@@ -8470,7 +8499,7 @@
|
|
|
8470
8499
|
let isUnmounted = false;
|
|
8471
8500
|
const children = vue.ref(new Map());
|
|
8472
8501
|
const parents = vue.ref(new Map());
|
|
8473
|
-
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
|
|
8502
|
+
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(vue.toRaw(v)), v => [...v.values()]);
|
|
8474
8503
|
const activeStrategy = vue.computed(() => {
|
|
8475
8504
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
|
8476
8505
|
if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
|
|
@@ -8643,9 +8672,9 @@
|
|
|
8643
8672
|
const item = {
|
|
8644
8673
|
...parent,
|
|
8645
8674
|
id: computedId,
|
|
8646
|
-
open: (open, e) => parent.root.open(computedId.value, open, e),
|
|
8675
|
+
open: (open, e) => parent.root.open(vue.toRaw(computedId.value), open, e),
|
|
8647
8676
|
openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
|
|
8648
|
-
isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
|
|
8677
|
+
isOpen: vue.computed(() => parent.root.opened.value.has(vue.toRaw(computedId.value))),
|
|
8649
8678
|
parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
|
|
8650
8679
|
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
|
8651
8680
|
isActivated: vue.computed(() => parent.root.activated.value.has(vue.toRaw(computedId.value))),
|
|
@@ -8869,6 +8898,7 @@
|
|
|
8869
8898
|
activate,
|
|
8870
8899
|
isActivated,
|
|
8871
8900
|
select,
|
|
8901
|
+
isOpen,
|
|
8872
8902
|
isSelected,
|
|
8873
8903
|
isIndeterminate,
|
|
8874
8904
|
isGroupActivator,
|
|
@@ -8923,6 +8953,7 @@
|
|
|
8923
8953
|
const slotProps = vue.computed(() => ({
|
|
8924
8954
|
isActive: isActive.value,
|
|
8925
8955
|
select,
|
|
8956
|
+
isOpen: isOpen.value,
|
|
8926
8957
|
isSelected: isSelected.value,
|
|
8927
8958
|
isIndeterminate: isIndeterminate.value
|
|
8928
8959
|
}));
|
|
@@ -8942,7 +8973,7 @@
|
|
|
8942
8973
|
function onKeyDown(e) {
|
|
8943
8974
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
8944
8975
|
e.preventDefault();
|
|
8945
|
-
|
|
8976
|
+
e.target.dispatchEvent(new MouseEvent('click', e));
|
|
8946
8977
|
}
|
|
8947
8978
|
}
|
|
8948
8979
|
useRender(() => {
|
|
@@ -9732,12 +9763,6 @@
|
|
|
9732
9763
|
// el.style.removeProperty('max-width')
|
|
9733
9764
|
// el.style.removeProperty('max-height')
|
|
9734
9765
|
|
|
9735
|
-
if (isRtl) {
|
|
9736
|
-
el.style.removeProperty('left');
|
|
9737
|
-
} else {
|
|
9738
|
-
el.style.removeProperty('right');
|
|
9739
|
-
}
|
|
9740
|
-
|
|
9741
9766
|
/* eslint-disable-next-line sonarjs/prefer-immediate-return */
|
|
9742
9767
|
const contentBox = nullifyTransforms(el);
|
|
9743
9768
|
if (isRtl) {
|
|
@@ -10265,7 +10290,8 @@
|
|
|
10265
10290
|
function useActivator(props, _ref) {
|
|
10266
10291
|
let {
|
|
10267
10292
|
isActive,
|
|
10268
|
-
isTop
|
|
10293
|
+
isTop,
|
|
10294
|
+
contentEl
|
|
10269
10295
|
} = _ref;
|
|
10270
10296
|
const vm = getCurrentInstance('useActivator');
|
|
10271
10297
|
const activatorEl = vue.ref();
|
|
@@ -10382,7 +10408,7 @@
|
|
|
10382
10408
|
return events;
|
|
10383
10409
|
});
|
|
10384
10410
|
vue.watch(isTop, val => {
|
|
10385
|
-
if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))) {
|
|
10411
|
+
if (val && (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused) || openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered)) && !contentEl.value?.contains(document.activeElement)) {
|
|
10386
10412
|
isActive.value = false;
|
|
10387
10413
|
}
|
|
10388
10414
|
});
|
|
@@ -10792,6 +10818,9 @@
|
|
|
10792
10818
|
emit
|
|
10793
10819
|
} = _ref;
|
|
10794
10820
|
const vm = getCurrentInstance('VOverlay');
|
|
10821
|
+
const root = vue.ref();
|
|
10822
|
+
const scrimEl = vue.ref();
|
|
10823
|
+
const contentEl = vue.ref();
|
|
10795
10824
|
const model = useProxiedModel(props, 'modelValue');
|
|
10796
10825
|
const isActive = vue.computed({
|
|
10797
10826
|
get: () => model.value,
|
|
@@ -10829,7 +10858,8 @@
|
|
|
10829
10858
|
scrimEvents
|
|
10830
10859
|
} = useActivator(props, {
|
|
10831
10860
|
isActive,
|
|
10832
|
-
isTop: localTop
|
|
10861
|
+
isTop: localTop,
|
|
10862
|
+
contentEl
|
|
10833
10863
|
});
|
|
10834
10864
|
const {
|
|
10835
10865
|
teleportTarget
|
|
@@ -10850,9 +10880,6 @@
|
|
|
10850
10880
|
vue.watch(() => props.disabled, v => {
|
|
10851
10881
|
if (v) isActive.value = false;
|
|
10852
10882
|
});
|
|
10853
|
-
const root = vue.ref();
|
|
10854
|
-
const scrimEl = vue.ref();
|
|
10855
|
-
const contentEl = vue.ref();
|
|
10856
10883
|
const {
|
|
10857
10884
|
contentStyles,
|
|
10858
10885
|
updateLocation
|
|
@@ -11103,10 +11130,12 @@
|
|
|
11103
11130
|
// TODO
|
|
11104
11131
|
// disableKeys: Boolean,
|
|
11105
11132
|
id: String,
|
|
11133
|
+
submenu: Boolean,
|
|
11106
11134
|
...omit(makeVOverlayProps({
|
|
11107
11135
|
closeDelay: 250,
|
|
11108
11136
|
closeOnContentClick: true,
|
|
11109
11137
|
locationStrategy: 'connected',
|
|
11138
|
+
location: undefined,
|
|
11110
11139
|
openDelay: 300,
|
|
11111
11140
|
scrim: false,
|
|
11112
11141
|
scrollStrategy: 'reposition',
|
|
@@ -11129,27 +11158,32 @@
|
|
|
11129
11158
|
const {
|
|
11130
11159
|
scopeId
|
|
11131
11160
|
} = useScopeId();
|
|
11161
|
+
const {
|
|
11162
|
+
isRtl
|
|
11163
|
+
} = useRtl();
|
|
11132
11164
|
const uid = getUid();
|
|
11133
11165
|
const id = vue.computed(() => props.id || `v-menu-${uid}`);
|
|
11134
11166
|
const overlay = vue.ref();
|
|
11135
11167
|
const parent = vue.inject(VMenuSymbol, null);
|
|
11136
|
-
const openChildren = vue.shallowRef(
|
|
11168
|
+
const openChildren = vue.shallowRef(new Set());
|
|
11137
11169
|
vue.provide(VMenuSymbol, {
|
|
11138
11170
|
register() {
|
|
11139
|
-
|
|
11171
|
+
openChildren.value.add(uid);
|
|
11140
11172
|
},
|
|
11141
11173
|
unregister() {
|
|
11142
|
-
|
|
11174
|
+
openChildren.value.delete(uid);
|
|
11143
11175
|
},
|
|
11144
11176
|
closeParents(e) {
|
|
11145
11177
|
setTimeout(() => {
|
|
11146
|
-
if (!openChildren.value && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
|
11178
|
+
if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
|
11147
11179
|
isActive.value = false;
|
|
11148
11180
|
parent?.closeParents();
|
|
11149
11181
|
}
|
|
11150
11182
|
}, 40);
|
|
11151
11183
|
}
|
|
11152
11184
|
});
|
|
11185
|
+
vue.onBeforeUnmount(() => parent?.unregister());
|
|
11186
|
+
vue.onDeactivated(() => isActive.value = false);
|
|
11153
11187
|
async function onFocusIn(e) {
|
|
11154
11188
|
const before = e.relatedTarget;
|
|
11155
11189
|
const after = e.target;
|
|
@@ -11189,9 +11223,9 @@
|
|
|
11189
11223
|
isActive.value = false;
|
|
11190
11224
|
overlay.value?.activatorEl?.focus();
|
|
11191
11225
|
}
|
|
11192
|
-
} else if (
|
|
11226
|
+
} else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
|
11193
11227
|
isActive.value = false;
|
|
11194
|
-
|
|
11228
|
+
overlay.value?.activatorEl?.focus();
|
|
11195
11229
|
}
|
|
11196
11230
|
}
|
|
11197
11231
|
function onActivatorKeydown(e) {
|
|
@@ -11200,12 +11234,21 @@
|
|
|
11200
11234
|
if (el && isActive.value) {
|
|
11201
11235
|
if (e.key === 'ArrowDown') {
|
|
11202
11236
|
e.preventDefault();
|
|
11237
|
+
e.stopImmediatePropagation();
|
|
11203
11238
|
focusChild(el, 'next');
|
|
11204
11239
|
} else if (e.key === 'ArrowUp') {
|
|
11205
11240
|
e.preventDefault();
|
|
11241
|
+
e.stopImmediatePropagation();
|
|
11206
11242
|
focusChild(el, 'prev');
|
|
11243
|
+
} else if (props.submenu) {
|
|
11244
|
+
if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
|
11245
|
+
isActive.value = false;
|
|
11246
|
+
} else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
|
|
11247
|
+
e.preventDefault();
|
|
11248
|
+
focusChild(el, 'first');
|
|
11249
|
+
}
|
|
11207
11250
|
}
|
|
11208
|
-
} else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
11251
|
+
} else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
11209
11252
|
isActive.value = true;
|
|
11210
11253
|
e.preventDefault();
|
|
11211
11254
|
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
|
@@ -11229,6 +11272,7 @@
|
|
|
11229
11272
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
11230
11273
|
"absolute": true,
|
|
11231
11274
|
"activatorProps": activatorProps.value,
|
|
11275
|
+
"location": props.location ?? (props.submenu ? 'end' : 'bottom'),
|
|
11232
11276
|
"onClick:outside": onClickOutside,
|
|
11233
11277
|
"onKeydown": onKeydown
|
|
11234
11278
|
}, scopeId), {
|
|
@@ -12061,6 +12105,7 @@
|
|
|
12061
12105
|
deep: true
|
|
12062
12106
|
});
|
|
12063
12107
|
return {
|
|
12108
|
+
calculateVisibleItems,
|
|
12064
12109
|
containerRef,
|
|
12065
12110
|
markerRef,
|
|
12066
12111
|
computedItems,
|
|
@@ -12124,6 +12169,7 @@
|
|
|
12124
12169
|
dimensionStyles
|
|
12125
12170
|
} = useDimension(props);
|
|
12126
12171
|
const {
|
|
12172
|
+
calculateVisibleItems,
|
|
12127
12173
|
containerRef,
|
|
12128
12174
|
markerRef,
|
|
12129
12175
|
handleScroll,
|
|
@@ -12195,6 +12241,7 @@
|
|
|
12195
12241
|
}, [children])]);
|
|
12196
12242
|
});
|
|
12197
12243
|
return {
|
|
12244
|
+
calculateVisibleItems,
|
|
12198
12245
|
scrollToIndex
|
|
12199
12246
|
};
|
|
12200
12247
|
}
|
|
@@ -12263,9 +12310,9 @@
|
|
|
12263
12310
|
}
|
|
12264
12311
|
}
|
|
12265
12312
|
return {
|
|
12266
|
-
onListScroll,
|
|
12267
|
-
onListKeydown
|
|
12268
|
-
};
|
|
12313
|
+
onScrollPassive: onListScroll,
|
|
12314
|
+
onKeydown: onListKeydown
|
|
12315
|
+
}; // typescript doesn't know about vue's event merging
|
|
12269
12316
|
}
|
|
12270
12317
|
|
|
12271
12318
|
// Types
|
|
@@ -12340,7 +12387,7 @@
|
|
|
12340
12387
|
const menu = vue.computed({
|
|
12341
12388
|
get: () => _menu.value,
|
|
12342
12389
|
set: v => {
|
|
12343
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
12390
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
12344
12391
|
_menu.value = v;
|
|
12345
12392
|
}
|
|
12346
12393
|
});
|
|
@@ -12379,10 +12426,7 @@
|
|
|
12379
12426
|
};
|
|
12380
12427
|
});
|
|
12381
12428
|
const listRef = vue.ref();
|
|
12382
|
-
const
|
|
12383
|
-
onListScroll,
|
|
12384
|
-
onListKeydown
|
|
12385
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
12429
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
12386
12430
|
function onClear(e) {
|
|
12387
12431
|
if (props.openOnClear) {
|
|
12388
12432
|
menu.value = true;
|
|
@@ -12392,6 +12436,11 @@
|
|
|
12392
12436
|
if (menuDisabled.value) return;
|
|
12393
12437
|
menu.value = !menu.value;
|
|
12394
12438
|
}
|
|
12439
|
+
function onListKeydown(e) {
|
|
12440
|
+
if (checkPrintable(e)) {
|
|
12441
|
+
onKeydown(e);
|
|
12442
|
+
}
|
|
12443
|
+
}
|
|
12395
12444
|
function onKeydown(e) {
|
|
12396
12445
|
if (!e.key || props.readonly || form?.isReadonly.value) return;
|
|
12397
12446
|
if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
|
|
@@ -12412,11 +12461,6 @@
|
|
|
12412
12461
|
// html select hotkeys
|
|
12413
12462
|
const KEYBOARD_LOOKUP_THRESHOLD = 1000; // milliseconds
|
|
12414
12463
|
|
|
12415
|
-
function checkPrintable(e) {
|
|
12416
|
-
const isPrintableChar = e.key.length === 1;
|
|
12417
|
-
const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
|
|
12418
|
-
return isPrintableChar && noModifier;
|
|
12419
|
-
}
|
|
12420
12464
|
if (props.multiple || !checkPrintable(e)) return;
|
|
12421
12465
|
const now = performance.now();
|
|
12422
12466
|
if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {
|
|
@@ -12461,6 +12505,11 @@
|
|
|
12461
12505
|
menu.value = false;
|
|
12462
12506
|
}
|
|
12463
12507
|
}
|
|
12508
|
+
function onAfterEnter() {
|
|
12509
|
+
if (props.eager) {
|
|
12510
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
12511
|
+
}
|
|
12512
|
+
}
|
|
12464
12513
|
function onAfterLeave() {
|
|
12465
12514
|
if (isFocused.value) {
|
|
12466
12515
|
vTextFieldRef.value?.focus();
|
|
@@ -12539,6 +12588,7 @@
|
|
|
12539
12588
|
"openOnClick": false,
|
|
12540
12589
|
"closeOnContentClick": false,
|
|
12541
12590
|
"transition": props.transition,
|
|
12591
|
+
"onAfterEnter": onAfterEnter,
|
|
12542
12592
|
"onAfterLeave": onAfterLeave
|
|
12543
12593
|
}, computedMenuProps.value), {
|
|
12544
12594
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
|
@@ -12548,11 +12598,10 @@
|
|
|
12548
12598
|
"onMousedown": e => e.preventDefault(),
|
|
12549
12599
|
"onKeydown": onListKeydown,
|
|
12550
12600
|
"onFocusin": onFocusin,
|
|
12551
|
-
"onScrollPassive": onListScroll,
|
|
12552
12601
|
"tabindex": "-1",
|
|
12553
12602
|
"aria-live": "polite",
|
|
12554
12603
|
"color": props.itemColor ?? props.color
|
|
12555
|
-
}, props.listProps), {
|
|
12604
|
+
}, listEvents, props.listProps), {
|
|
12556
12605
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
12557
12606
|
"title": t(props.noDataText)
|
|
12558
12607
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
@@ -12847,7 +12896,7 @@
|
|
|
12847
12896
|
const menu = vue.computed({
|
|
12848
12897
|
get: () => _menu.value,
|
|
12849
12898
|
set: v => {
|
|
12850
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
12899
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
12851
12900
|
_menu.value = v;
|
|
12852
12901
|
}
|
|
12853
12902
|
});
|
|
@@ -12891,10 +12940,7 @@
|
|
|
12891
12940
|
});
|
|
12892
12941
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
|
|
12893
12942
|
const listRef = vue.ref();
|
|
12894
|
-
const
|
|
12895
|
-
onListScroll,
|
|
12896
|
-
onListKeydown
|
|
12897
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
12943
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
12898
12944
|
function onClear(e) {
|
|
12899
12945
|
if (props.openOnClear) {
|
|
12900
12946
|
menu.value = true;
|
|
@@ -12913,6 +12959,11 @@
|
|
|
12913
12959
|
}
|
|
12914
12960
|
menu.value = !menu.value;
|
|
12915
12961
|
}
|
|
12962
|
+
function onListKeydown(e) {
|
|
12963
|
+
if (checkPrintable(e)) {
|
|
12964
|
+
vTextFieldRef.value?.focus();
|
|
12965
|
+
}
|
|
12966
|
+
}
|
|
12916
12967
|
function onKeydown(e) {
|
|
12917
12968
|
if (props.readonly || form?.isReadonly.value) return;
|
|
12918
12969
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
@@ -12977,6 +13028,11 @@
|
|
|
12977
13028
|
}
|
|
12978
13029
|
}
|
|
12979
13030
|
}
|
|
13031
|
+
function onAfterEnter() {
|
|
13032
|
+
if (props.eager) {
|
|
13033
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
13034
|
+
}
|
|
13035
|
+
}
|
|
12980
13036
|
function onAfterLeave() {
|
|
12981
13037
|
if (isFocused.value) {
|
|
12982
13038
|
isPristine.value = true;
|
|
@@ -13105,6 +13161,7 @@
|
|
|
13105
13161
|
"openOnClick": false,
|
|
13106
13162
|
"closeOnContentClick": false,
|
|
13107
13163
|
"transition": props.transition,
|
|
13164
|
+
"onAfterEnter": onAfterEnter,
|
|
13108
13165
|
"onAfterLeave": onAfterLeave
|
|
13109
13166
|
}, props.menuProps), {
|
|
13110
13167
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
|
@@ -13115,11 +13172,10 @@
|
|
|
13115
13172
|
"onKeydown": onListKeydown,
|
|
13116
13173
|
"onFocusin": onFocusin,
|
|
13117
13174
|
"onFocusout": onFocusout,
|
|
13118
|
-
"onScrollPassive": onListScroll,
|
|
13119
13175
|
"tabindex": "-1",
|
|
13120
13176
|
"aria-live": "polite",
|
|
13121
13177
|
"color": props.itemColor ?? props.color
|
|
13122
|
-
}, props.listProps), {
|
|
13178
|
+
}, listEvents, props.listProps), {
|
|
13123
13179
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
13124
13180
|
"title": t(props.noDataText)
|
|
13125
13181
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
@@ -13569,8 +13625,7 @@
|
|
|
13569
13625
|
const height = vue.computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
|
|
13570
13626
|
const isActive = useProxiedModel(props, 'active', props.active);
|
|
13571
13627
|
const {
|
|
13572
|
-
layoutItemStyles
|
|
13573
|
-
layoutIsReady
|
|
13628
|
+
layoutItemStyles
|
|
13574
13629
|
} = useLayoutItem({
|
|
13575
13630
|
id: props.name,
|
|
13576
13631
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -13608,7 +13663,7 @@
|
|
|
13608
13663
|
}, [slots.default()])]
|
|
13609
13664
|
});
|
|
13610
13665
|
});
|
|
13611
|
-
return
|
|
13666
|
+
return {};
|
|
13612
13667
|
}
|
|
13613
13668
|
});
|
|
13614
13669
|
|
|
@@ -16680,7 +16735,7 @@
|
|
|
16680
16735
|
const menu = vue.computed({
|
|
16681
16736
|
get: () => _menu.value,
|
|
16682
16737
|
set: v => {
|
|
16683
|
-
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
16738
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren.size) return;
|
|
16684
16739
|
_menu.value = v;
|
|
16685
16740
|
}
|
|
16686
16741
|
});
|
|
@@ -16763,10 +16818,7 @@
|
|
|
16763
16818
|
});
|
|
16764
16819
|
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || props.readonly || form?.isReadonly.value);
|
|
16765
16820
|
const listRef = vue.ref();
|
|
16766
|
-
const
|
|
16767
|
-
onListScroll,
|
|
16768
|
-
onListKeydown
|
|
16769
|
-
} = useScrolling(listRef, vTextFieldRef);
|
|
16821
|
+
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
16770
16822
|
function onClear(e) {
|
|
16771
16823
|
cleared = true;
|
|
16772
16824
|
if (props.openOnClear) {
|
|
@@ -16785,6 +16837,11 @@
|
|
|
16785
16837
|
}
|
|
16786
16838
|
menu.value = !menu.value;
|
|
16787
16839
|
}
|
|
16840
|
+
function onListKeydown(e) {
|
|
16841
|
+
if (checkPrintable(e)) {
|
|
16842
|
+
vTextFieldRef.value?.focus();
|
|
16843
|
+
}
|
|
16844
|
+
}
|
|
16788
16845
|
// eslint-disable-next-line complexity
|
|
16789
16846
|
function onKeydown(e) {
|
|
16790
16847
|
if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
|
|
@@ -16849,6 +16906,11 @@
|
|
|
16849
16906
|
}
|
|
16850
16907
|
}
|
|
16851
16908
|
}
|
|
16909
|
+
function onAfterEnter() {
|
|
16910
|
+
if (props.eager) {
|
|
16911
|
+
vVirtualScrollRef.value?.calculateVisibleItems();
|
|
16912
|
+
}
|
|
16913
|
+
}
|
|
16852
16914
|
function onAfterLeave() {
|
|
16853
16915
|
if (isFocused.value) {
|
|
16854
16916
|
isPristine.value = true;
|
|
@@ -16973,6 +17035,7 @@
|
|
|
16973
17035
|
"openOnClick": false,
|
|
16974
17036
|
"closeOnContentClick": false,
|
|
16975
17037
|
"transition": props.transition,
|
|
17038
|
+
"onAfterEnter": onAfterEnter,
|
|
16976
17039
|
"onAfterLeave": onAfterLeave
|
|
16977
17040
|
}, props.menuProps), {
|
|
16978
17041
|
default: () => [hasList && vue.createVNode(VList, vue.mergeProps({
|
|
@@ -16983,11 +17046,10 @@
|
|
|
16983
17046
|
"onKeydown": onListKeydown,
|
|
16984
17047
|
"onFocusin": onFocusin,
|
|
16985
17048
|
"onFocusout": onFocusout,
|
|
16986
|
-
"onScrollPassive": onListScroll,
|
|
16987
17049
|
"tabindex": "-1",
|
|
16988
17050
|
"aria-live": "polite",
|
|
16989
17051
|
"color": props.itemColor ?? props.color
|
|
16990
|
-
}, props.listProps), {
|
|
17052
|
+
}, listEvents, props.listProps), {
|
|
16991
17053
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
16992
17054
|
"title": t(props.noDataText)
|
|
16993
17055
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
@@ -20931,6 +20993,7 @@
|
|
|
20931
20993
|
default: false
|
|
20932
20994
|
},
|
|
20933
20995
|
...makeComponentProps(),
|
|
20996
|
+
...makeDimensionProps(),
|
|
20934
20997
|
...makeTagProps()
|
|
20935
20998
|
}, 'VContainer');
|
|
20936
20999
|
const VContainer = genericComponent()({
|
|
@@ -20943,11 +21006,14 @@
|
|
|
20943
21006
|
const {
|
|
20944
21007
|
rtlClasses
|
|
20945
21008
|
} = useRtl();
|
|
21009
|
+
const {
|
|
21010
|
+
dimensionStyles
|
|
21011
|
+
} = useDimension(props);
|
|
20946
21012
|
useRender(() => vue.createVNode(props.tag, {
|
|
20947
21013
|
"class": ['v-container', {
|
|
20948
21014
|
'v-container--fluid': props.fluid
|
|
20949
21015
|
}, rtlClasses.value, props.class],
|
|
20950
|
-
"style": props.style
|
|
21016
|
+
"style": [dimensionStyles.value, props.style]
|
|
20951
21017
|
}, slots));
|
|
20952
21018
|
return {};
|
|
20953
21019
|
}
|
|
@@ -22369,7 +22435,8 @@
|
|
|
22369
22435
|
default: false
|
|
22370
22436
|
},
|
|
22371
22437
|
readonly: Boolean,
|
|
22372
|
-
...makeComponentProps()
|
|
22438
|
+
...makeComponentProps(),
|
|
22439
|
+
...makeDimensionProps()
|
|
22373
22440
|
}, 'VExpansionPanelTitle');
|
|
22374
22441
|
const VExpansionPanelTitle = genericComponent()({
|
|
22375
22442
|
name: 'VExpansionPanelTitle',
|
|
@@ -22387,6 +22454,9 @@
|
|
|
22387
22454
|
backgroundColorClasses,
|
|
22388
22455
|
backgroundColorStyles
|
|
22389
22456
|
} = useBackgroundColor(props, 'color');
|
|
22457
|
+
const {
|
|
22458
|
+
dimensionStyles
|
|
22459
|
+
} = useDimension(props);
|
|
22390
22460
|
const slotProps = vue.computed(() => ({
|
|
22391
22461
|
collapseIcon: props.collapseIcon,
|
|
22392
22462
|
disabled: expansionPanel.disabled.value,
|
|
@@ -22401,7 +22471,7 @@
|
|
|
22401
22471
|
'v-expansion-panel-title--focusable': props.focusable,
|
|
22402
22472
|
'v-expansion-panel-title--static': props.static
|
|
22403
22473
|
}, backgroundColorClasses.value, props.class],
|
|
22404
|
-
"style": [backgroundColorStyles.value, props.style],
|
|
22474
|
+
"style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
|
|
22405
22475
|
"type": "button",
|
|
22406
22476
|
"tabindex": expansionPanel.disabled.value ? -1 : undefined,
|
|
22407
22477
|
"disabled": expansionPanel.disabled.value,
|
|
@@ -22924,7 +22994,6 @@
|
|
|
22924
22994
|
slots
|
|
22925
22995
|
} = _ref;
|
|
22926
22996
|
const layoutItemStyles = vue.ref();
|
|
22927
|
-
const layoutIsReady = vue.shallowRef();
|
|
22928
22997
|
const {
|
|
22929
22998
|
themeClasses
|
|
22930
22999
|
} = provideTheme(props);
|
|
@@ -22961,7 +23030,6 @@
|
|
|
22961
23030
|
});
|
|
22962
23031
|
vue.watchEffect(() => {
|
|
22963
23032
|
layoutItemStyles.value = layout.layoutItemStyles.value;
|
|
22964
|
-
layoutIsReady.value = layout.layoutIsReady;
|
|
22965
23033
|
});
|
|
22966
23034
|
});
|
|
22967
23035
|
useRender(() => vue.createVNode(props.tag, {
|
|
@@ -22971,7 +23039,7 @@
|
|
|
22971
23039
|
height: convertToUnit(props.height)
|
|
22972
23040
|
}, props.style]
|
|
22973
23041
|
}, slots));
|
|
22974
|
-
return
|
|
23042
|
+
return {};
|
|
22975
23043
|
}
|
|
22976
23044
|
});
|
|
22977
23045
|
|
|
@@ -23398,9 +23466,7 @@
|
|
|
23398
23466
|
"ref": layoutRef,
|
|
23399
23467
|
"class": [layoutClasses.value, props.class],
|
|
23400
23468
|
"style": [dimensionStyles.value, layoutStyles.value, props.style]
|
|
23401
|
-
}, [
|
|
23402
|
-
default: () => [vue.createVNode(vue.Fragment, null, [slots.default?.()])]
|
|
23403
|
-
})]));
|
|
23469
|
+
}, [slots.default?.()]));
|
|
23404
23470
|
return {
|
|
23405
23471
|
getLayoutItem,
|
|
23406
23472
|
items
|
|
@@ -23431,8 +23497,7 @@
|
|
|
23431
23497
|
slots
|
|
23432
23498
|
} = _ref;
|
|
23433
23499
|
const {
|
|
23434
|
-
layoutItemStyles
|
|
23435
|
-
layoutIsReady
|
|
23500
|
+
layoutItemStyles
|
|
23436
23501
|
} = useLayoutItem({
|
|
23437
23502
|
id: props.name,
|
|
23438
23503
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -23442,11 +23507,10 @@
|
|
|
23442
23507
|
active: vue.toRef(props, 'modelValue'),
|
|
23443
23508
|
absolute: vue.toRef(props, 'absolute')
|
|
23444
23509
|
});
|
|
23445
|
-
|
|
23510
|
+
return () => vue.createVNode("div", {
|
|
23446
23511
|
"class": ['v-layout-item', props.class],
|
|
23447
23512
|
"style": [layoutItemStyles.value, props.style]
|
|
23448
|
-
}, [slots.default?.()])
|
|
23449
|
-
return layoutIsReady;
|
|
23513
|
+
}, [slots.default?.()]);
|
|
23450
23514
|
}
|
|
23451
23515
|
});
|
|
23452
23516
|
|
|
@@ -23557,8 +23621,7 @@
|
|
|
23557
23621
|
dimensionStyles
|
|
23558
23622
|
} = useDimension(props);
|
|
23559
23623
|
const {
|
|
23560
|
-
mainStyles
|
|
23561
|
-
layoutIsReady
|
|
23624
|
+
mainStyles
|
|
23562
23625
|
} = useLayout();
|
|
23563
23626
|
const {
|
|
23564
23627
|
ssrBootStyles
|
|
@@ -23573,7 +23636,7 @@
|
|
|
23573
23636
|
"class": "v-main__scroller"
|
|
23574
23637
|
}, [slots.default?.()]) : slots.default?.()]
|
|
23575
23638
|
}));
|
|
23576
|
-
return
|
|
23639
|
+
return {};
|
|
23577
23640
|
}
|
|
23578
23641
|
});
|
|
23579
23642
|
|
|
@@ -24043,8 +24106,7 @@
|
|
|
24043
24106
|
const elementSize = vue.computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value);
|
|
24044
24107
|
const {
|
|
24045
24108
|
layoutItemStyles,
|
|
24046
|
-
layoutItemScrimStyles
|
|
24047
|
-
layoutIsReady
|
|
24109
|
+
layoutItemScrimStyles
|
|
24048
24110
|
} = useLayoutItem({
|
|
24049
24111
|
id: props.name,
|
|
24050
24112
|
order: vue.computed(() => parseInt(props.order, 10)),
|
|
@@ -24140,9 +24202,9 @@
|
|
|
24140
24202
|
}, scopeId), null)]
|
|
24141
24203
|
})]);
|
|
24142
24204
|
});
|
|
24143
|
-
return
|
|
24205
|
+
return {
|
|
24144
24206
|
isStuck
|
|
24145
|
-
}
|
|
24207
|
+
};
|
|
24146
24208
|
}
|
|
24147
24209
|
});
|
|
24148
24210
|
|
|
@@ -25831,7 +25893,7 @@
|
|
|
25831
25893
|
const model = useProxiedModel(props, 'modelValue');
|
|
25832
25894
|
const menuRef = vue.ref();
|
|
25833
25895
|
const location = vue.computed(() => {
|
|
25834
|
-
const [y, x = 'center'] = props.location
|
|
25896
|
+
const [y, x = 'center'] = props.location?.split(' ') ?? [];
|
|
25835
25897
|
return `${y} ${x}`;
|
|
25836
25898
|
});
|
|
25837
25899
|
const locationClasses = vue.computed(() => ({
|
|
@@ -28570,6 +28632,7 @@
|
|
|
28570
28632
|
const VPullToRefresh = genericComponent()({
|
|
28571
28633
|
name: 'VPullToRefresh',
|
|
28572
28634
|
props: {
|
|
28635
|
+
disabled: Boolean,
|
|
28573
28636
|
pullDownThreshold: {
|
|
28574
28637
|
type: Number,
|
|
28575
28638
|
default: 64
|
|
@@ -28593,19 +28656,19 @@
|
|
|
28593
28656
|
const canRefresh = vue.computed(() => touchDiff.value >= props.pullDownThreshold && !refreshing.value);
|
|
28594
28657
|
const topOffset = vue.computed(() => clamp(touchDiff.value, 0, props.pullDownThreshold));
|
|
28595
28658
|
function onTouchstart(e) {
|
|
28596
|
-
if (refreshing.value) return;
|
|
28659
|
+
if (refreshing.value || props.disabled) return;
|
|
28597
28660
|
touching.value = true;
|
|
28598
28661
|
touchstartY = 'clientY' in e ? e.clientY : e.touches[0].clientY;
|
|
28599
28662
|
}
|
|
28600
28663
|
function onTouchmove(e) {
|
|
28601
|
-
if (refreshing.value || !touching.value) return;
|
|
28664
|
+
if (refreshing.value || !touching.value || props.disabled) return;
|
|
28602
28665
|
const touchY = 'clientY' in e ? e.clientY : e.touches[0].clientY;
|
|
28603
28666
|
if (scrollParents.length && !scrollParents[0].scrollTop) {
|
|
28604
28667
|
touchDiff.value = touchY - touchstartY;
|
|
28605
28668
|
}
|
|
28606
28669
|
}
|
|
28607
28670
|
function onTouchend(e) {
|
|
28608
|
-
if (refreshing.value) return;
|
|
28671
|
+
if (refreshing.value || props.disabled) return;
|
|
28609
28672
|
touching.value = false;
|
|
28610
28673
|
if (canRefresh.value) {
|
|
28611
28674
|
function done() {
|
|
@@ -29473,6 +29536,7 @@
|
|
|
29473
29536
|
|
|
29474
29537
|
const makeVTreeviewItemProps = propsFactory({
|
|
29475
29538
|
loading: Boolean,
|
|
29539
|
+
onToggleExpand: EventProp(),
|
|
29476
29540
|
toggleIcon: IconValue,
|
|
29477
29541
|
...makeVListItemProps({
|
|
29478
29542
|
slim: true
|
|
@@ -29493,24 +29557,12 @@
|
|
|
29493
29557
|
const {
|
|
29494
29558
|
activate,
|
|
29495
29559
|
isActivated,
|
|
29496
|
-
select,
|
|
29497
|
-
isSelected,
|
|
29498
|
-
isIndeterminate,
|
|
29499
29560
|
isGroupActivator,
|
|
29500
29561
|
root,
|
|
29501
29562
|
id
|
|
29502
29563
|
} = useNestedItem(rawId, false);
|
|
29503
29564
|
const isActivatableGroupActivator = vue.computed(() => root.activatable.value && isGroupActivator);
|
|
29504
|
-
const
|
|
29505
|
-
densityClasses
|
|
29506
|
-
} = useDensity(props, 'v-list-item');
|
|
29507
|
-
const slotProps = vue.computed(() => ({
|
|
29508
|
-
isActive: isActivated.value,
|
|
29509
|
-
select,
|
|
29510
|
-
isSelected: isSelected.value,
|
|
29511
|
-
isIndeterminate: isIndeterminate.value
|
|
29512
|
-
}));
|
|
29513
|
-
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list));
|
|
29565
|
+
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list || isActivatableGroupActivator.value));
|
|
29514
29566
|
function activateItem(e) {
|
|
29515
29567
|
if (!isClickable.value || !isActivatableGroupActivator.value && isGroupActivator) return;
|
|
29516
29568
|
if (root.activatable.value) {
|
|
@@ -29521,68 +29573,20 @@
|
|
|
29521
29573
|
}
|
|
29522
29574
|
}
|
|
29523
29575
|
}
|
|
29524
|
-
function onKeyDown(e) {
|
|
29525
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
29526
|
-
e.preventDefault();
|
|
29527
|
-
activateItem(e);
|
|
29528
|
-
}
|
|
29529
|
-
}
|
|
29530
29576
|
const visibleIds = vue.inject(VTreeviewSymbol, {
|
|
29531
29577
|
visibleIds: vue.ref()
|
|
29532
29578
|
}).visibleIds;
|
|
29533
29579
|
useRender(() => {
|
|
29534
|
-
const
|
|
29535
|
-
const hasSubtitle = slots.subtitle || props.subtitle != null;
|
|
29536
|
-
const listItemProps = VListItem.filterProps(props);
|
|
29580
|
+
const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
|
|
29537
29581
|
const hasPrepend = slots.prepend || props.toggleIcon;
|
|
29538
|
-
return
|
|
29539
|
-
"
|
|
29540
|
-
'v-list-item--active': isActivated.value || isSelected.value,
|
|
29541
|
-
'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
|
|
29542
|
-
}, densityClasses.value, props.class],
|
|
29543
|
-
"onClick": activateItem
|
|
29544
|
-
}, [vue.createVNode(vue.Fragment, null, [genOverlays(isActivated.value || isSelected.value, 'v-list-item'), props.toggleIcon && vue.createVNode(VListItemAction, {
|
|
29545
|
-
"start": false
|
|
29546
|
-
}, {
|
|
29547
|
-
default: () => [vue.createVNode(VBtn, {
|
|
29548
|
-
"density": "compact",
|
|
29549
|
-
"icon": props.toggleIcon,
|
|
29550
|
-
"loading": props.loading,
|
|
29551
|
-
"variant": "text",
|
|
29552
|
-
"onClick": props.onClick
|
|
29553
|
-
}, {
|
|
29554
|
-
loader() {
|
|
29555
|
-
return vue.createVNode(VProgressCircular, {
|
|
29556
|
-
"indeterminate": "disable-shrink",
|
|
29557
|
-
"size": "20",
|
|
29558
|
-
"width": "2"
|
|
29559
|
-
}, null);
|
|
29560
|
-
}
|
|
29561
|
-
})]
|
|
29562
|
-
})]), vue.createVNode("div", {
|
|
29563
|
-
"class": "v-list-item__content",
|
|
29564
|
-
"data-no-activator": ""
|
|
29565
|
-
}, [hasTitle && vue.createVNode(VListItemTitle, {
|
|
29566
|
-
"key": "title"
|
|
29567
|
-
}, {
|
|
29568
|
-
default: () => [slots.title?.({
|
|
29569
|
-
title: props.title
|
|
29570
|
-
}) ?? props.title]
|
|
29571
|
-
}), hasSubtitle && vue.createVNode(VListItemSubtitle, {
|
|
29572
|
-
"key": "subtitle"
|
|
29573
|
-
}, {
|
|
29574
|
-
default: () => [slots.subtitle?.({
|
|
29575
|
-
subtitle: props.subtitle
|
|
29576
|
-
}) ?? props.subtitle]
|
|
29577
|
-
}), slots.default?.(slotProps.value)])]), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]) : vue.createVNode(VListItem, vue.mergeProps({
|
|
29578
|
-
"ref": vListItemRef
|
|
29579
|
-
}, listItemProps, {
|
|
29582
|
+
return vue.createVNode(VListItem, vue.mergeProps(listItemProps, {
|
|
29583
|
+
"active": isActivated.value,
|
|
29580
29584
|
"class": ['v-treeview-item', {
|
|
29585
|
+
'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
|
|
29581
29586
|
'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
|
|
29582
29587
|
}, props.class],
|
|
29583
|
-
"
|
|
29584
|
-
"onClick": activateItem
|
|
29585
|
-
"onKeydown": isClickable.value && onKeyDown
|
|
29588
|
+
"ripple": false,
|
|
29589
|
+
"onClick": props.onClick ?? activateItem
|
|
29586
29590
|
}), {
|
|
29587
29591
|
...slots,
|
|
29588
29592
|
prepend: hasPrepend ? slotProps => {
|
|
@@ -29593,7 +29597,8 @@
|
|
|
29593
29597
|
"density": "compact",
|
|
29594
29598
|
"icon": props.toggleIcon,
|
|
29595
29599
|
"loading": props.loading,
|
|
29596
|
-
"variant": "text"
|
|
29600
|
+
"variant": "text",
|
|
29601
|
+
"onClick": props.onToggleExpand
|
|
29597
29602
|
}, {
|
|
29598
29603
|
loader() {
|
|
29599
29604
|
return vue.createVNode(VProgressCircular, {
|
|
@@ -29620,7 +29625,19 @@
|
|
|
29620
29625
|
default: '$loading'
|
|
29621
29626
|
},
|
|
29622
29627
|
items: Array,
|
|
29628
|
+
openOnClick: {
|
|
29629
|
+
type: Boolean,
|
|
29630
|
+
default: undefined
|
|
29631
|
+
},
|
|
29632
|
+
indeterminateIcon: {
|
|
29633
|
+
type: IconValue,
|
|
29634
|
+
default: '$checkboxIndeterminate'
|
|
29635
|
+
},
|
|
29636
|
+
falseIcon: IconValue,
|
|
29637
|
+
trueIcon: IconValue,
|
|
29638
|
+
returnObject: Boolean,
|
|
29623
29639
|
selectable: Boolean,
|
|
29640
|
+
selectedColor: String,
|
|
29624
29641
|
selectStrategy: [String, Function, Object]
|
|
29625
29642
|
}, 'VTreeviewChildren');
|
|
29626
29643
|
const VTreeviewChildren = genericComponent()({
|
|
@@ -29632,6 +29649,7 @@
|
|
|
29632
29649
|
slots
|
|
29633
29650
|
} = _ref;
|
|
29634
29651
|
const isLoading = vue.shallowRef(null);
|
|
29652
|
+
const isClickOnOpen = vue.computed(() => props.openOnClick != null ? props.openOnClick : props.selectable);
|
|
29635
29653
|
function checkChildren(item) {
|
|
29636
29654
|
return new Promise(resolve => {
|
|
29637
29655
|
if (!props.items?.length || !props.loadChildren) return resolve();
|
|
@@ -29662,7 +29680,11 @@
|
|
|
29662
29680
|
"key": item.value,
|
|
29663
29681
|
"modelValue": slotProps.isSelected,
|
|
29664
29682
|
"loading": loading,
|
|
29683
|
+
"color": props.selectedColor,
|
|
29665
29684
|
"indeterminate": slotProps.isIndeterminate,
|
|
29685
|
+
"indeterminateIcon": props.indeterminateIcon,
|
|
29686
|
+
"falseIcon": props.falseIcon,
|
|
29687
|
+
"trueIcon": props.trueIcon,
|
|
29666
29688
|
"onClick": vue.withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']),
|
|
29667
29689
|
"onKeydown": e => {
|
|
29668
29690
|
if (!['Enter', 'Space'].includes(e.key)) return;
|
|
@@ -29684,9 +29706,9 @@
|
|
|
29684
29706
|
};
|
|
29685
29707
|
const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
|
|
29686
29708
|
const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
|
|
29687
|
-
return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps({
|
|
29688
|
-
"value":
|
|
29689
|
-
}
|
|
29709
|
+
return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps(treeviewGroupProps, {
|
|
29710
|
+
"value": props.returnObject ? item : treeviewGroupProps?.value
|
|
29711
|
+
}), {
|
|
29690
29712
|
activator: _ref3 => {
|
|
29691
29713
|
let {
|
|
29692
29714
|
props: activatorProps
|
|
@@ -29694,19 +29716,24 @@
|
|
|
29694
29716
|
const listItemProps = {
|
|
29695
29717
|
...itemProps,
|
|
29696
29718
|
...activatorProps,
|
|
29697
|
-
value: itemProps?.value
|
|
29719
|
+
value: itemProps?.value,
|
|
29720
|
+
onToggleExpand: activatorProps.onClick,
|
|
29721
|
+
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : undefined
|
|
29698
29722
|
};
|
|
29699
29723
|
return vue.createVNode(VTreeviewItem, vue.mergeProps(listItemProps, {
|
|
29700
|
-
"
|
|
29701
|
-
"
|
|
29724
|
+
"value": props.returnObject ? vue.toRaw(item) : itemProps.value,
|
|
29725
|
+
"loading": loading
|
|
29702
29726
|
}), slotsWithItem);
|
|
29703
29727
|
},
|
|
29704
29728
|
default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
|
|
29705
|
-
"items": children
|
|
29729
|
+
"items": children,
|
|
29730
|
+
"returnObject": props.returnObject
|
|
29706
29731
|
}), slots)
|
|
29707
29732
|
}) : slots.item?.({
|
|
29708
29733
|
props: itemProps
|
|
29709
|
-
}) ?? vue.createVNode(VTreeviewItem, itemProps,
|
|
29734
|
+
}) ?? vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, {
|
|
29735
|
+
"value": props.returnObject ? vue.toRaw(item) : itemProps.value
|
|
29736
|
+
}), slotsWithItem);
|
|
29710
29737
|
});
|
|
29711
29738
|
}
|
|
29712
29739
|
});
|
|
@@ -29730,7 +29757,11 @@
|
|
|
29730
29757
|
collapseIcon: '$treeviewCollapse',
|
|
29731
29758
|
expandIcon: '$treeviewExpand',
|
|
29732
29759
|
slim: true
|
|
29733
|
-
}), ['itemType', 'nav'])
|
|
29760
|
+
}), ['itemType', 'nav', 'openStrategy']),
|
|
29761
|
+
modelValue: {
|
|
29762
|
+
type: Array,
|
|
29763
|
+
default: () => []
|
|
29764
|
+
}
|
|
29734
29765
|
}, 'VTreeview');
|
|
29735
29766
|
const VTreeview = genericComponent()({
|
|
29736
29767
|
name: 'VTreeview',
|
|
@@ -29739,6 +29770,7 @@
|
|
|
29739
29770
|
'update:opened': val => true,
|
|
29740
29771
|
'update:activated': val => true,
|
|
29741
29772
|
'update:selected': val => true,
|
|
29773
|
+
'update:modelValue': val => true,
|
|
29742
29774
|
'click:open': value => true,
|
|
29743
29775
|
'click:select': value => true
|
|
29744
29776
|
},
|
|
@@ -29753,7 +29785,15 @@
|
|
|
29753
29785
|
const baseColor = vue.toRef(props, 'baseColor');
|
|
29754
29786
|
const color = vue.toRef(props, 'color');
|
|
29755
29787
|
const activated = useProxiedModel(props, 'activated');
|
|
29756
|
-
const
|
|
29788
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
29789
|
+
const _selected = useProxiedModel(props, 'selected', props.modelValue);
|
|
29790
|
+
const selected = vue.computed({
|
|
29791
|
+
get: () => _selected.value,
|
|
29792
|
+
set(val) {
|
|
29793
|
+
_selected.value = val;
|
|
29794
|
+
model.value = val;
|
|
29795
|
+
}
|
|
29796
|
+
});
|
|
29757
29797
|
const vListRef = vue.ref();
|
|
29758
29798
|
const opened = vue.computed(() => props.openAll ? openAll(items.value) : props.opened);
|
|
29759
29799
|
const flatItems = vue.computed(() => flatten(items.value));
|
|
@@ -29789,11 +29829,11 @@
|
|
|
29789
29829
|
}
|
|
29790
29830
|
return arr;
|
|
29791
29831
|
}
|
|
29792
|
-
function openAll(
|
|
29832
|
+
function openAll(items) {
|
|
29793
29833
|
let ids = [];
|
|
29794
|
-
for (const i of
|
|
29834
|
+
for (const i of items) {
|
|
29795
29835
|
if (!i.children) continue;
|
|
29796
|
-
ids.push(i.value);
|
|
29836
|
+
ids.push(props.returnObject ? vue.toRaw(i.raw) : i.value);
|
|
29797
29837
|
if (i.children) {
|
|
29798
29838
|
ids = ids.concat(openAll(i.children));
|
|
29799
29839
|
}
|
|
@@ -29829,6 +29869,7 @@
|
|
|
29829
29869
|
"ref": vListRef
|
|
29830
29870
|
}, listProps, {
|
|
29831
29871
|
"class": ['v-treeview', props.class],
|
|
29872
|
+
"open-strategy": "multiple",
|
|
29832
29873
|
"style": props.style,
|
|
29833
29874
|
"opened": opened.value,
|
|
29834
29875
|
"activated": activated.value,
|
|
@@ -29837,6 +29878,7 @@
|
|
|
29837
29878
|
"onUpdate:selected": $event => selected.value = $event
|
|
29838
29879
|
}), {
|
|
29839
29880
|
default: () => [vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
|
|
29881
|
+
"returnObject": props.returnObject,
|
|
29840
29882
|
"items": items.value
|
|
29841
29883
|
}), slots)]
|
|
29842
29884
|
});
|
|
@@ -30340,7 +30382,7 @@
|
|
|
30340
30382
|
goTo
|
|
30341
30383
|
};
|
|
30342
30384
|
}
|
|
30343
|
-
const version$1 = "3.
|
|
30385
|
+
const version$1 = "3.7.0";
|
|
30344
30386
|
createVuetify$1.version = version$1;
|
|
30345
30387
|
|
|
30346
30388
|
// Vue's inject() can only be used in setup
|
|
@@ -30593,7 +30635,7 @@
|
|
|
30593
30635
|
|
|
30594
30636
|
/* eslint-disable local-rules/sort-imports */
|
|
30595
30637
|
|
|
30596
|
-
const version = "3.
|
|
30638
|
+
const version = "3.7.0";
|
|
30597
30639
|
|
|
30598
30640
|
/* eslint-disable local-rules/sort-imports */
|
|
30599
30641
|
|