@vuetify/nightly 3.0.0-beta.0 → 3.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -2
- package/dist/json/attributes.json +343 -195
- package/dist/json/importMap.json +20 -0
- package/dist/json/tags.json +106 -44
- package/dist/json/web-types.json +946 -549
- package/dist/vuetify.css +1486 -1085
- package/dist/vuetify.d.ts +9036 -8077
- package/dist/vuetify.esm.js +1511 -944
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +1510 -943
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +3 -3
- package/dist/vuetify.min.js +825 -754
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +29 -8
- package/lib/components/VAlert/VAlert.mjs +31 -17
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/VAlert.sass +27 -7
- package/lib/components/VAlert/VAlertTitle.mjs +1 -0
- package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
- package/lib/components/VAlert/_variables.scss +14 -7
- package/lib/components/VApp/VApp.css +1 -0
- package/lib/components/VApp/VApp.sass +1 -0
- package/lib/components/VAppBar/VAppBar.mjs +7 -3
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -69
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.mjs +15 -14
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.css +82 -58
- package/lib/components/VBanner/VBanner.mjs +39 -43
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.sass +61 -54
- package/lib/components/VBanner/VBannerActions.mjs +34 -2
- package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
- package/lib/components/VBanner/VBannerAvatar.mjs +20 -0
- package/lib/components/VBanner/VBannerAvatar.mjs.map +1 -0
- package/lib/components/VBanner/VBannerIcon.mjs +20 -0
- package/lib/components/VBanner/VBannerIcon.mjs.map +1 -0
- package/lib/components/VBanner/_variables.scss +10 -14
- package/lib/components/VBanner/index.mjs +2 -0
- package/lib/components/VBanner/index.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +2 -0
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +10 -9
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.css +20 -1
- package/lib/components/VBtn/VBtn.mjs +20 -7
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +15 -2
- package/lib/components/VBtn/_variables.scss +3 -0
- package/lib/components/VBtnGroup/VBtnGroup.css +14 -6
- package/lib/components/VBtnGroup/VBtnGroup.sass +14 -6
- package/lib/components/VCard/VCard.css +13 -11
- package/lib/components/VCard/VCard.mjs +5 -2
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCard.sass +12 -9
- package/lib/components/VCard/VCardActions.mjs +1 -2
- package/lib/components/VCard/VCardActions.mjs.map +1 -1
- package/lib/components/VCard/VCardContent.mjs +3 -0
- package/lib/components/VCard/VCardContent.mjs.map +1 -0
- package/lib/components/VCard/_variables.scss +11 -5
- package/lib/components/VCard/index.mjs +1 -0
- package/lib/components/VCard/index.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.mjs +1 -1
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VChip/VChip.css +3 -0
- package/lib/components/VChip/VChip.sass +3 -0
- package/lib/components/VChip/_variables.scss +3 -0
- package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +92 -74
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.css +31 -11
- package/lib/components/VDialog/VDialog.mjs +6 -9
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +27 -10
- package/lib/components/VDialog/_variables.scss +3 -6
- package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VField/VField.css +1 -1
- package/lib/components/VField/VField.mjs +3 -4
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +2 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFooter/VFooter.mjs +32 -15
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VForm/VForm.mjs +25 -11
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.css +27 -12
- package/lib/components/VIcon/VIcon.mjs +19 -16
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.sass +27 -16
- package/lib/components/VIcon/_variables.scss +1 -0
- package/lib/components/VInput/VInput.css +3 -1
- package/lib/components/VInput/VInput.mjs +3 -4
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.sass +3 -1
- package/lib/components/VInput/_variables.scss +4 -0
- package/lib/components/VList/VList.css +7 -6
- package/lib/components/VList/VList.mjs +36 -17
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VList.sass +3 -2
- package/lib/components/VList/VListChildren.mjs +1 -1
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +28 -10
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +119 -42
- package/lib/components/VList/VListItem.mjs +36 -32
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +76 -28
- package/lib/components/VList/VListItemAction.mjs +29 -0
- package/lib/components/VList/VListItemAction.mjs.map +1 -0
- package/lib/components/VList/VListItemAvatar.mjs +10 -16
- package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
- package/lib/components/VList/VListItemIcon.mjs +23 -0
- package/lib/components/VList/VListItemIcon.mjs.map +1 -0
- package/lib/components/VList/VListItemMedia.mjs +4 -4
- package/lib/components/VList/VListItemMedia.mjs.map +1 -1
- package/lib/components/VList/_variables.scss +12 -3
- package/lib/components/VList/index.mjs +2 -0
- package/lib/components/VList/index.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.css +2 -12
- package/lib/components/VMenu/VMenu.mjs +61 -31
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.sass +3 -6
- package/lib/components/VMenu/shared.mjs +2 -0
- package/lib/components/VMenu/shared.mjs.map +1 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +8 -0
- package/lib/components/VOverlay/VOverlay.mjs +16 -15
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.sass +9 -0
- package/lib/components/VOverlay/_variables.scss +1 -0
- package/lib/components/VOverlay/positionStrategies.mjs +7 -3
- package/lib/components/VOverlay/positionStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +9 -0
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +50 -14
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +10 -12
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
- package/lib/components/VRadio/VRadio.mjs +1 -2
- package/lib/components/VRadio/VRadio.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +5 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRating/VRating.css +2 -2
- package/lib/components/VRating/VRating.mjs +13 -3
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VRating/VRating.sass +2 -2
- package/lib/components/VSelect/VSelect.mjs +70 -91
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +2 -2
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.css +0 -5
- package/lib/components/VSlideGroup/VSlideGroup.mjs +36 -14
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.sass +0 -4
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -1
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.css +7 -2
- package/lib/components/VSlider/VSlider.sass +11 -5
- package/lib/components/VSlider/VSliderTrack.css +6 -6
- package/lib/components/VSlider/VSliderTrack.mjs +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.sass +7 -7
- package/lib/components/VSlider/_variables.scss +5 -2
- package/lib/components/VSnackbar/VSnackbar.css +14 -13
- package/lib/components/VSnackbar/VSnackbar.mjs +22 -10
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +15 -16
- package/lib/components/VSnackbar/_variables.scss +0 -4
- package/lib/components/VSwitch/VSwitch.mjs +8 -5
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +0 -5
- package/lib/components/VSystemBar/VSystemBar.mjs +31 -14
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.sass +0 -5
- package/lib/components/VSystemBar/_variables.scss +0 -3
- package/lib/components/VTabs/VTab.mjs +28 -32
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.css +6 -2
- package/lib/components/VTabs/VTabs.mjs +7 -8
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.sass +6 -1
- package/lib/components/VTabs/shared.mjs +2 -0
- package/lib/components/VTabs/shared.mjs.map +1 -0
- package/lib/components/VTextField/VTextField.css +4 -4
- package/lib/components/VTextField/VTextField.mjs +5 -9
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +5 -5
- package/lib/components/VTextarea/VTextarea.css +7 -4
- package/lib/components/VTextarea/VTextarea.sass +9 -5
- package/lib/components/VTimeline/VTimeline.css +187 -48
- package/lib/components/VTimeline/VTimeline.mjs +27 -11
- package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.sass +196 -51
- package/lib/components/VTimeline/VTimelineDivider.mjs +2 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/_variables.scss +2 -1
- package/lib/components/VToolbar/VToolbar.css +8 -1
- package/lib/components/VToolbar/VToolbar.mjs +8 -11
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.sass +2 -1
- package/lib/components/VToolbar/VToolbarItems.mjs +0 -1
- package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
- package/lib/components/VToolbar/_variables.scss +13 -1
- package/lib/components/VWindow/VWindow.mjs +0 -8
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/index.d.ts +9025 -8077
- package/lib/composables/defaults.mjs +2 -2
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/form.mjs +18 -5
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/forwardRef.mjs +10 -6
- package/lib/composables/forwardRef.mjs.map +1 -1
- package/lib/composables/group.mjs +14 -6
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/items.mjs +56 -0
- package/lib/composables/items.mjs.map +1 -0
- package/lib/composables/layout.mjs +7 -3
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +27 -14
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/openStrategies.mjs +63 -36
- package/lib/composables/nested/openStrategies.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +163 -122
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/overlay.mjs +5 -1
- package/lib/composables/overlay.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +1 -9
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/router.mjs +17 -5
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/selectLink.mjs +19 -0
- package/lib/composables/selectLink.mjs.map +1 -0
- package/lib/composables/stack.mjs +7 -4
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/validation.mjs +6 -3
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/variant.mjs +0 -3
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/directives/ripple/index.mjs +15 -3
- package/lib/directives/ripple/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +12 -7
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +18 -2
- package/lib/locale/ca.mjs +9 -9
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/styles/generic/_colors.scss +0 -1
- package/lib/styles/main.css +400 -392
- package/lib/styles/settings/_utilities.scss +54 -26
- package/lib/styles/tools/_states.sass +2 -1
- package/lib/util/defineComponent.mjs +37 -6
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/getCurrentInstance.mjs +1 -1
- package/lib/util/getCurrentInstance.mjs.map +1 -1
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +31 -29
package/dist/vuetify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.0.0-beta.
|
|
2
|
+
* Vuetify v3.0.0-beta.2
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -797,7 +797,7 @@
|
|
|
797
797
|
return properties;
|
|
798
798
|
}
|
|
799
799
|
|
|
800
|
-
return mergeDeep(properties, properties
|
|
800
|
+
return mergeDeep(properties.prev, properties);
|
|
801
801
|
});
|
|
802
802
|
vue.provide(DefaultsSymbol, newDefaults);
|
|
803
803
|
return newDefaults;
|
|
@@ -822,16 +822,33 @@
|
|
|
822
822
|
}
|
|
823
823
|
|
|
824
824
|
if (options._setup) {
|
|
825
|
+
var _options$props;
|
|
826
|
+
|
|
827
|
+
options.props = (_options$props = options.props) != null ? _options$props : {};
|
|
828
|
+
options.props._as = String;
|
|
829
|
+
|
|
825
830
|
options.setup = function setup(props, ctx) {
|
|
826
831
|
const vm = vue.getCurrentInstance();
|
|
827
832
|
const defaults = useDefaults();
|
|
828
833
|
|
|
834
|
+
const _subcomponentDefaults = vue.shallowRef();
|
|
835
|
+
|
|
829
836
|
const _props = vue.shallowReactive({ ...vue.toRaw(props)
|
|
830
837
|
});
|
|
831
838
|
|
|
832
839
|
vue.watchEffect(() => {
|
|
840
|
+
var _props$_as;
|
|
841
|
+
|
|
833
842
|
const globalDefaults = defaults.value.global;
|
|
834
|
-
const componentDefaults = defaults.value[options.name];
|
|
843
|
+
const componentDefaults = defaults.value[(_props$_as = props._as) != null ? _props$_as : options.name];
|
|
844
|
+
|
|
845
|
+
if (componentDefaults) {
|
|
846
|
+
const subComponents = Object.entries(componentDefaults).filter(_ref => {
|
|
847
|
+
let [key] = _ref;
|
|
848
|
+
return key.startsWith('V');
|
|
849
|
+
});
|
|
850
|
+
if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
|
|
851
|
+
}
|
|
835
852
|
|
|
836
853
|
for (const prop of Object.keys(props)) {
|
|
837
854
|
let newVal;
|
|
@@ -839,9 +856,9 @@
|
|
|
839
856
|
if (propIsDefined(vm.vnode, prop)) {
|
|
840
857
|
newVal = props[prop];
|
|
841
858
|
} else {
|
|
842
|
-
var
|
|
859
|
+
var _ref2, _componentDefaults$pr;
|
|
843
860
|
|
|
844
|
-
newVal = (
|
|
861
|
+
newVal = (_ref2 = (_componentDefaults$pr = componentDefaults == null ? void 0 : componentDefaults[prop]) != null ? _componentDefaults$pr : globalDefaults == null ? void 0 : globalDefaults[prop]) != null ? _ref2 : props[prop];
|
|
845
862
|
}
|
|
846
863
|
|
|
847
864
|
if (_props[prop] !== newVal) {
|
|
@@ -849,7 +866,21 @@
|
|
|
849
866
|
}
|
|
850
867
|
}
|
|
851
868
|
});
|
|
852
|
-
|
|
869
|
+
|
|
870
|
+
const setupBindings = options._setup(_props, ctx);
|
|
871
|
+
|
|
872
|
+
let scope;
|
|
873
|
+
vue.watch(_subcomponentDefaults, (val, oldVal) => {
|
|
874
|
+
if (!val && scope) scope.stop();else if (val && !oldVal) {
|
|
875
|
+
scope = vue.effectScope();
|
|
876
|
+
scope.run(() => {
|
|
877
|
+
provideDefaults(val);
|
|
878
|
+
});
|
|
879
|
+
}
|
|
880
|
+
}, {
|
|
881
|
+
immediate: true
|
|
882
|
+
});
|
|
883
|
+
return setupBindings;
|
|
853
884
|
};
|
|
854
885
|
}
|
|
855
886
|
|
|
@@ -1406,16 +1437,12 @@
|
|
|
1406
1437
|
function useResizeObserver(callback) {
|
|
1407
1438
|
const resizeRef = vue.ref();
|
|
1408
1439
|
const contentRect = vue.ref();
|
|
1409
|
-
const contentBoxSize = vue.ref();
|
|
1410
|
-
const borderBoxSize = vue.ref();
|
|
1411
1440
|
|
|
1412
1441
|
if (IN_BROWSER) {
|
|
1413
1442
|
const observer = new ResizeObserver(entries => {
|
|
1414
1443
|
callback == null ? void 0 : callback(entries, observer);
|
|
1415
1444
|
if (!entries.length) return;
|
|
1416
1445
|
contentRect.value = entries[0].contentRect;
|
|
1417
|
-
contentBoxSize.value = entries[0].contentBoxSize[0];
|
|
1418
|
-
borderBoxSize.value = entries[0].borderBoxSize[0];
|
|
1419
1446
|
});
|
|
1420
1447
|
vue.onBeforeUnmount(() => {
|
|
1421
1448
|
observer.disconnect();
|
|
@@ -1424,8 +1451,6 @@
|
|
|
1424
1451
|
if (oldValue) {
|
|
1425
1452
|
observer.unobserve(oldValue);
|
|
1426
1453
|
contentRect.value = undefined;
|
|
1427
|
-
contentBoxSize.value = undefined;
|
|
1428
|
-
borderBoxSize.value = undefined;
|
|
1429
1454
|
}
|
|
1430
1455
|
|
|
1431
1456
|
if (newValue) observer.observe(newValue);
|
|
@@ -1436,16 +1461,15 @@
|
|
|
1436
1461
|
|
|
1437
1462
|
return {
|
|
1438
1463
|
resizeRef,
|
|
1439
|
-
contentRect: vue.readonly(contentRect)
|
|
1440
|
-
contentBoxSize: vue.readonly(contentBoxSize),
|
|
1441
|
-
borderBoxSize: vue.readonly(borderBoxSize)
|
|
1464
|
+
contentRect: vue.readonly(contentRect)
|
|
1442
1465
|
};
|
|
1443
1466
|
}
|
|
1444
1467
|
|
|
1445
1468
|
// Composables
|
|
1446
1469
|
|
|
1447
1470
|
const VuetifyLayoutKey = Symbol.for('vuetify:layout');
|
|
1448
|
-
const
|
|
1471
|
+
const VuetifyLayoutItemKey = Symbol.for('vuetify:layout-item');
|
|
1472
|
+
const ROOT_ZINDEX = 1000;
|
|
1449
1473
|
const makeLayoutProps = propsFactory({
|
|
1450
1474
|
overlaps: {
|
|
1451
1475
|
type: Array,
|
|
@@ -1476,6 +1500,9 @@
|
|
|
1476
1500
|
if (!layout) throw new Error('Could not find injected Vuetify layout');
|
|
1477
1501
|
const id = (_options$id = options.id) != null ? _options$id : `layout-item-${getUid()}`;
|
|
1478
1502
|
const vm = getCurrentInstance('useLayoutItem');
|
|
1503
|
+
vue.provide(VuetifyLayoutItemKey, {
|
|
1504
|
+
id
|
|
1505
|
+
});
|
|
1479
1506
|
const isKeptAlive = vue.ref(false);
|
|
1480
1507
|
vue.onDeactivated(() => isKeptAlive.value = true);
|
|
1481
1508
|
vue.onActivated(() => isKeptAlive.value = false);
|
|
@@ -1527,7 +1554,7 @@
|
|
|
1527
1554
|
|
|
1528
1555
|
function createLayout(props) {
|
|
1529
1556
|
const parentLayout = vue.inject(VuetifyLayoutKey, null);
|
|
1530
|
-
const rootZIndex = vue.computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX
|
|
1557
|
+
const rootZIndex = vue.computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX);
|
|
1531
1558
|
const registered = vue.ref([]);
|
|
1532
1559
|
const positions = vue.reactive(new Map());
|
|
1533
1560
|
const layoutSizes = vue.reactive(new Map());
|
|
@@ -1638,7 +1665,7 @@
|
|
|
1638
1665
|
layoutSizes.set(id, layoutSize);
|
|
1639
1666
|
activeItems.set(id, active);
|
|
1640
1667
|
disableTransitions && disabledTransitions.set(id, disableTransitions);
|
|
1641
|
-
const instances = findChildrenWithProvide(
|
|
1668
|
+
const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm == null ? void 0 : rootVm.vnode);
|
|
1642
1669
|
const instanceIndex = instances.indexOf(vm);
|
|
1643
1670
|
if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id);else registered.value.push(id);
|
|
1644
1671
|
const index = vue.computed(() => items.value.findIndex(i => i.id === id));
|
|
@@ -1651,7 +1678,7 @@
|
|
|
1651
1678
|
[position.value]: 0,
|
|
1652
1679
|
zIndex: zIndex.value,
|
|
1653
1680
|
transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -110) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}%)`,
|
|
1654
|
-
position: absolute.value || rootZIndex.value !== ROOT_ZINDEX
|
|
1681
|
+
position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',
|
|
1655
1682
|
...(transitionsEnabled.value ? undefined : {
|
|
1656
1683
|
transition: 'none'
|
|
1657
1684
|
})
|
|
@@ -1667,17 +1694,17 @@
|
|
|
1667
1694
|
}
|
|
1668
1695
|
|
|
1669
1696
|
return { ...styles,
|
|
1670
|
-
height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : `${elementSize.value}px
|
|
1697
|
+
height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,
|
|
1671
1698
|
marginLeft: isOppositeHorizontal ? undefined : `${item.left}px`,
|
|
1672
1699
|
marginRight: isOppositeHorizontal ? `${item.right}px` : undefined,
|
|
1673
1700
|
marginTop: position.value !== 'bottom' ? `${item.top}px` : undefined,
|
|
1674
1701
|
marginBottom: position.value !== 'top' ? `${item.bottom}px` : undefined,
|
|
1675
|
-
width: !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)` : `${elementSize.value}px`
|
|
1702
|
+
width: !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)` : elementSize.value ? `${elementSize.value}px` : undefined
|
|
1676
1703
|
};
|
|
1677
1704
|
});
|
|
1678
1705
|
const layoutItemScrimStyles = vue.computed(() => ({
|
|
1679
1706
|
zIndex: zIndex.value - 1,
|
|
1680
|
-
position: rootZIndex.value === ROOT_ZINDEX
|
|
1707
|
+
position: rootZIndex.value === ROOT_ZINDEX ? 'fixed' : 'absolute'
|
|
1681
1708
|
}));
|
|
1682
1709
|
return {
|
|
1683
1710
|
layoutItemStyles,
|
|
@@ -2573,19 +2600,23 @@
|
|
|
2573
2600
|
|
|
2574
2601
|
getOwnPropertyDescriptor(target, key) {
|
|
2575
2602
|
const descriptor = Reflect.getOwnPropertyDescriptor(target, key);
|
|
2576
|
-
if (descriptor) return descriptor;
|
|
2603
|
+
if (descriptor) return descriptor; // Check each ref's own properties
|
|
2577
2604
|
|
|
2578
2605
|
for (const ref of refs) {
|
|
2579
2606
|
if (!ref.value) continue;
|
|
2580
2607
|
const descriptor = Reflect.getOwnPropertyDescriptor(ref.value, key);
|
|
2581
2608
|
if (descriptor) return descriptor;
|
|
2582
|
-
}
|
|
2609
|
+
} // Recursive search up each ref's prototype
|
|
2610
|
+
|
|
2583
2611
|
|
|
2584
2612
|
for (const ref of refs) {
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2613
|
+
let obj = ref.value && Object.getPrototypeOf(ref.value);
|
|
2614
|
+
|
|
2615
|
+
while (obj) {
|
|
2616
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(obj, key);
|
|
2617
|
+
if (descriptor) return descriptor;
|
|
2618
|
+
obj = Object.getPrototypeOf(obj);
|
|
2619
|
+
}
|
|
2589
2620
|
}
|
|
2590
2621
|
|
|
2591
2622
|
return undefined;
|
|
@@ -2649,24 +2680,20 @@
|
|
|
2649
2680
|
backgroundColorClasses,
|
|
2650
2681
|
backgroundColorStyles
|
|
2651
2682
|
} = useBackgroundColor(vue.toRef(props, 'color'));
|
|
2652
|
-
const
|
|
2683
|
+
const isExtended = vue.computed(() => !!(props.extended || slots.extension));
|
|
2684
|
+
const contentHeight = vue.computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
|
|
2685
|
+
const extensionHeight = vue.computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);
|
|
2653
2686
|
provideDefaults({
|
|
2654
2687
|
VBtn: {
|
|
2655
2688
|
flat: true,
|
|
2656
2689
|
variant: 'text'
|
|
2657
|
-
},
|
|
2658
|
-
VTextField: {
|
|
2659
|
-
hideDetails: true
|
|
2660
2690
|
}
|
|
2661
|
-
}, {
|
|
2662
|
-
scoped: true
|
|
2663
2691
|
});
|
|
2664
2692
|
useRender(() => {
|
|
2665
2693
|
var _slots$image, _slots$prepend, _slots$default, _slots$append, _slots$extension;
|
|
2666
2694
|
|
|
2667
2695
|
const hasTitle = !!(props.title || slots.title);
|
|
2668
2696
|
const hasImage = !!(slots.image || props.image);
|
|
2669
|
-
const isExtended = !!(props.extended || slots.extension);
|
|
2670
2697
|
return vue.createVNode(props.tag, {
|
|
2671
2698
|
"class": ['v-toolbar', {
|
|
2672
2699
|
'v-toolbar--absolute': props.absolute,
|
|
@@ -2702,16 +2729,17 @@
|
|
|
2702
2729
|
text: slots.title
|
|
2703
2730
|
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.append && vue.createVNode("div", {
|
|
2704
2731
|
"class": "v-toolbar__append"
|
|
2705
|
-
}, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots)])]), isExtended && vue.createVNode("div", {
|
|
2732
|
+
}, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots)])]), isExtended.value && vue.createVNode("div", {
|
|
2706
2733
|
"class": "v-toolbar__extension",
|
|
2707
2734
|
"style": {
|
|
2708
|
-
height: convertToUnit(
|
|
2735
|
+
height: convertToUnit(extensionHeight.value)
|
|
2709
2736
|
}
|
|
2710
2737
|
}, [(_slots$extension = slots.extension) == null ? void 0 : _slots$extension.call(slots)])]
|
|
2711
2738
|
});
|
|
2712
2739
|
});
|
|
2713
2740
|
return useForwardRef({
|
|
2714
|
-
contentHeight
|
|
2741
|
+
contentHeight,
|
|
2742
|
+
extensionHeight
|
|
2715
2743
|
});
|
|
2716
2744
|
}
|
|
2717
2745
|
|
|
@@ -2789,9 +2817,11 @@
|
|
|
2789
2817
|
const vToolbarRef = vue.ref();
|
|
2790
2818
|
const isActive = useProxiedModel(props, 'modelValue');
|
|
2791
2819
|
const height = vue.computed(() => {
|
|
2792
|
-
var _vToolbarRef$value;
|
|
2820
|
+
var _vToolbarRef$value$co, _vToolbarRef$value, _vToolbarRef$value$ex, _vToolbarRef$value2;
|
|
2793
2821
|
|
|
2794
|
-
|
|
2822
|
+
const height = (_vToolbarRef$value$co = (_vToolbarRef$value = vToolbarRef.value) == null ? void 0 : _vToolbarRef$value.contentHeight) != null ? _vToolbarRef$value$co : 0;
|
|
2823
|
+
const extensionHeight = (_vToolbarRef$value$ex = (_vToolbarRef$value2 = vToolbarRef.value) == null ? void 0 : _vToolbarRef$value2.extensionHeight) != null ? _vToolbarRef$value$ex : 0;
|
|
2824
|
+
return height + extensionHeight;
|
|
2795
2825
|
});
|
|
2796
2826
|
const {
|
|
2797
2827
|
layoutItemStyles
|
|
@@ -2811,7 +2841,9 @@
|
|
|
2811
2841
|
"class": ['v-app-bar', {
|
|
2812
2842
|
'v-app-bar--bottom': props.position === 'bottom'
|
|
2813
2843
|
}],
|
|
2814
|
-
"style": layoutItemStyles.value
|
|
2844
|
+
"style": { ...layoutItemStyles.value,
|
|
2845
|
+
height: undefined
|
|
2846
|
+
}
|
|
2815
2847
|
}, toolbarProps), slots);
|
|
2816
2848
|
};
|
|
2817
2849
|
}
|
|
@@ -2849,7 +2881,6 @@
|
|
|
2849
2881
|
}
|
|
2850
2882
|
const makeVariantProps = propsFactory({
|
|
2851
2883
|
color: String,
|
|
2852
|
-
textColor: String,
|
|
2853
2884
|
variant: {
|
|
2854
2885
|
type: String,
|
|
2855
2886
|
default: 'contained',
|
|
@@ -2869,12 +2900,10 @@
|
|
|
2869
2900
|
colorStyles
|
|
2870
2901
|
} = useColor(vue.computed(() => {
|
|
2871
2902
|
const {
|
|
2872
|
-
textColor,
|
|
2873
2903
|
variant,
|
|
2874
2904
|
color
|
|
2875
2905
|
} = vue.unref(props);
|
|
2876
2906
|
return {
|
|
2877
|
-
text: textColor,
|
|
2878
2907
|
[['contained', 'contained-flat'].includes(variant) ? 'background' : 'text']: color
|
|
2879
2908
|
};
|
|
2880
2909
|
}));
|
|
@@ -2985,10 +3014,11 @@
|
|
|
2985
3014
|
const isSelected = vue.computed(() => {
|
|
2986
3015
|
return group.isSelected(id);
|
|
2987
3016
|
});
|
|
2988
|
-
const selectedClass = vue.computed(() =>
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
3017
|
+
const selectedClass = vue.computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass]);
|
|
3018
|
+
vue.watch(isSelected, value => {
|
|
3019
|
+
vm.emit('group:selected', {
|
|
3020
|
+
value
|
|
3021
|
+
});
|
|
2992
3022
|
});
|
|
2993
3023
|
return {
|
|
2994
3024
|
id,
|
|
@@ -3115,12 +3145,19 @@
|
|
|
3115
3145
|
next: () => step(1),
|
|
3116
3146
|
isSelected: id => selected.value.includes(id),
|
|
3117
3147
|
selectedClass: vue.computed(() => props.selectedClass),
|
|
3118
|
-
items: vue.computed(() => items)
|
|
3148
|
+
items: vue.computed(() => items),
|
|
3149
|
+
getItemIndex: value => getItemIndex(items, value)
|
|
3119
3150
|
};
|
|
3120
3151
|
vue.provide(injectKey, state);
|
|
3121
3152
|
return state;
|
|
3122
3153
|
}
|
|
3123
3154
|
|
|
3155
|
+
function getItemIndex(items, value) {
|
|
3156
|
+
const ids = getIds(items, [value]);
|
|
3157
|
+
if (!ids.length) return -1;
|
|
3158
|
+
return items.findIndex(item => item.id === ids[0]);
|
|
3159
|
+
}
|
|
3160
|
+
|
|
3124
3161
|
function getIds(items, modelValue) {
|
|
3125
3162
|
const ids = [];
|
|
3126
3163
|
|
|
@@ -3348,24 +3385,26 @@
|
|
|
3348
3385
|
};
|
|
3349
3386
|
};
|
|
3350
3387
|
|
|
3388
|
+
const makeVIconProps = propsFactory({
|
|
3389
|
+
color: String,
|
|
3390
|
+
start: Boolean,
|
|
3391
|
+
end: Boolean,
|
|
3392
|
+
icon: {
|
|
3393
|
+
type: [String, Object]
|
|
3394
|
+
},
|
|
3395
|
+
...makeSizeProps(),
|
|
3396
|
+
...makeTagProps({
|
|
3397
|
+
tag: 'i'
|
|
3398
|
+
}),
|
|
3399
|
+
...makeThemeProps()
|
|
3400
|
+
}, 'v-icon');
|
|
3351
3401
|
const VIcon = defineComponent({
|
|
3352
3402
|
name: 'VIcon',
|
|
3353
|
-
props:
|
|
3354
|
-
color: String,
|
|
3355
|
-
left: Boolean,
|
|
3356
|
-
right: Boolean,
|
|
3357
|
-
icon: {
|
|
3358
|
-
type: [String, Object]
|
|
3359
|
-
},
|
|
3360
|
-
...makeSizeProps(),
|
|
3361
|
-
...makeTagProps({
|
|
3362
|
-
tag: 'i'
|
|
3363
|
-
}),
|
|
3364
|
-
...makeThemeProps()
|
|
3365
|
-
},
|
|
3403
|
+
props: makeVIconProps(),
|
|
3366
3404
|
|
|
3367
3405
|
setup(props, _ref) {
|
|
3368
3406
|
let {
|
|
3407
|
+
attrs,
|
|
3369
3408
|
slots
|
|
3370
3409
|
} = _ref;
|
|
3371
3410
|
let slotIcon;
|
|
@@ -3398,8 +3437,9 @@
|
|
|
3398
3437
|
"tag": props.tag,
|
|
3399
3438
|
"icon": iconData.value.icon,
|
|
3400
3439
|
"class": ['v-icon', 'notranslate', sizeClasses.value, textColorClasses.value, themeClasses.value, {
|
|
3401
|
-
'v-icon--
|
|
3402
|
-
'v-icon--
|
|
3440
|
+
'v-icon--clickable': !!attrs.onClick,
|
|
3441
|
+
'v-icon--start': props.start,
|
|
3442
|
+
'v-icon--end': props.end
|
|
3403
3443
|
}],
|
|
3404
3444
|
"style": [!sizeClasses.value ? {
|
|
3405
3445
|
fontSize: convertToUnit(props.size),
|
|
@@ -3489,21 +3529,33 @@
|
|
|
3489
3529
|
replace: Boolean,
|
|
3490
3530
|
to: [String, Object]
|
|
3491
3531
|
}, 'router');
|
|
3532
|
+
let inTransition = false;
|
|
3492
3533
|
function useBackButton(cb) {
|
|
3493
3534
|
const router = useRouter();
|
|
3494
3535
|
let popped = false;
|
|
3495
|
-
let
|
|
3536
|
+
let removeBefore;
|
|
3537
|
+
let removeAfter;
|
|
3496
3538
|
vue.onMounted(() => {
|
|
3497
3539
|
window.addEventListener('popstate', onPopstate);
|
|
3498
|
-
|
|
3499
|
-
|
|
3540
|
+
removeBefore = router == null ? void 0 : router.beforeEach((to, from, next) => {
|
|
3541
|
+
if (!inTransition) {
|
|
3542
|
+
setTimeout(() => popped ? cb(next) : next());
|
|
3543
|
+
} else {
|
|
3544
|
+
popped ? cb(next) : next();
|
|
3545
|
+
}
|
|
3546
|
+
|
|
3547
|
+
inTransition = true;
|
|
3548
|
+
});
|
|
3549
|
+
removeAfter = router == null ? void 0 : router.afterEach(() => {
|
|
3550
|
+
inTransition = false;
|
|
3500
3551
|
});
|
|
3501
3552
|
});
|
|
3502
3553
|
vue.onBeforeUnmount(() => {
|
|
3503
|
-
var
|
|
3554
|
+
var _removeBefore, _removeAfter;
|
|
3504
3555
|
|
|
3505
3556
|
window.removeEventListener('popstate', onPopstate);
|
|
3506
|
-
(
|
|
3557
|
+
(_removeBefore = removeBefore) == null ? void 0 : _removeBefore();
|
|
3558
|
+
(_removeAfter = removeAfter) == null ? void 0 : _removeAfter();
|
|
3507
3559
|
});
|
|
3508
3560
|
|
|
3509
3561
|
function onPopstate(e) {
|
|
@@ -3515,9 +3567,27 @@
|
|
|
3515
3567
|
}
|
|
3516
3568
|
}
|
|
3517
3569
|
|
|
3570
|
+
// Utilities
|
|
3571
|
+
|
|
3572
|
+
function useSelectLink(link, select) {
|
|
3573
|
+
vue.watch(() => {
|
|
3574
|
+
var _link$isExactActive;
|
|
3575
|
+
|
|
3576
|
+
return (_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value;
|
|
3577
|
+
}, isExactActive => {
|
|
3578
|
+
if (link.isLink.value && isExactActive && select) {
|
|
3579
|
+
vue.nextTick(() => {
|
|
3580
|
+
select(true);
|
|
3581
|
+
});
|
|
3582
|
+
}
|
|
3583
|
+
}, {
|
|
3584
|
+
immediate: true
|
|
3585
|
+
});
|
|
3586
|
+
}
|
|
3587
|
+
|
|
3518
3588
|
// Styles
|
|
3519
3589
|
|
|
3520
|
-
const
|
|
3590
|
+
const stopSymbol = Symbol('rippleStop');
|
|
3521
3591
|
const DELAY_RIPPLE = 80;
|
|
3522
3592
|
|
|
3523
3593
|
function transform(el, value) {
|
|
@@ -3665,9 +3735,9 @@
|
|
|
3665
3735
|
function rippleShow(e) {
|
|
3666
3736
|
const value = {};
|
|
3667
3737
|
const element = e.currentTarget;
|
|
3668
|
-
if (!(element != null && element._ripple) || element._ripple.touched || e[
|
|
3738
|
+
if (!(element != null && element._ripple) || element._ripple.touched || e[stopSymbol]) return; // Don't allow the event to trigger ripples on any other elements
|
|
3669
3739
|
|
|
3670
|
-
e[
|
|
3740
|
+
e[stopSymbol] = true;
|
|
3671
3741
|
|
|
3672
3742
|
if (isTouchEvent(e)) {
|
|
3673
3743
|
element._ripple.touched = true;
|
|
@@ -3708,6 +3778,10 @@
|
|
|
3708
3778
|
}
|
|
3709
3779
|
}
|
|
3710
3780
|
|
|
3781
|
+
function rippleStop(e) {
|
|
3782
|
+
e[stopSymbol] = true;
|
|
3783
|
+
}
|
|
3784
|
+
|
|
3711
3785
|
function rippleHide(e) {
|
|
3712
3786
|
const element = e.currentTarget;
|
|
3713
3787
|
if (!element || !element._ripple) return;
|
|
@@ -3788,6 +3862,14 @@
|
|
|
3788
3862
|
}
|
|
3789
3863
|
|
|
3790
3864
|
if (enabled && !wasEnabled) {
|
|
3865
|
+
if (modifiers.stop) {
|
|
3866
|
+
el.addEventListener('touchstart', rippleStop, {
|
|
3867
|
+
passive: true
|
|
3868
|
+
});
|
|
3869
|
+
el.addEventListener('mousedown', rippleStop);
|
|
3870
|
+
return;
|
|
3871
|
+
}
|
|
3872
|
+
|
|
3791
3873
|
el.addEventListener('touchstart', rippleShow, {
|
|
3792
3874
|
passive: true
|
|
3793
3875
|
});
|
|
@@ -3857,6 +3939,11 @@
|
|
|
3857
3939
|
Ripple
|
|
3858
3940
|
},
|
|
3859
3941
|
props: {
|
|
3942
|
+
active: Boolean,
|
|
3943
|
+
symbol: {
|
|
3944
|
+
type: null,
|
|
3945
|
+
default: VBtnToggleSymbol
|
|
3946
|
+
},
|
|
3860
3947
|
flat: Boolean,
|
|
3861
3948
|
icon: [Boolean, String],
|
|
3862
3949
|
prependIcon: String,
|
|
@@ -3920,21 +4007,22 @@
|
|
|
3920
4007
|
const {
|
|
3921
4008
|
sizeClasses
|
|
3922
4009
|
} = useSize(props);
|
|
3923
|
-
const group = useGroupItem(props,
|
|
4010
|
+
const group = useGroupItem(props, props.symbol, false);
|
|
3924
4011
|
const link = useLink(props, attrs);
|
|
3925
4012
|
const isDisabled = vue.computed(() => (group == null ? void 0 : group.disabled.value) || props.disabled);
|
|
3926
4013
|
const isElevated = vue.computed(() => {
|
|
3927
4014
|
return props.variant === 'contained' && !(props.disabled || props.flat || props.border);
|
|
3928
4015
|
});
|
|
4016
|
+
useSelectLink(link, group == null ? void 0 : group.select);
|
|
3929
4017
|
return () => {
|
|
3930
|
-
var
|
|
4018
|
+
var _slots$default;
|
|
3931
4019
|
|
|
3932
4020
|
const Tag = link.isLink.value ? 'a' : props.tag;
|
|
3933
4021
|
const hasColor = !group || group.isSelected.value;
|
|
3934
4022
|
return vue.withDirectives(vue.createVNode(Tag, {
|
|
3935
4023
|
"type": Tag === 'a' ? undefined : 'button',
|
|
3936
4024
|
"class": ['v-btn', group == null ? void 0 : group.selectedClass.value, {
|
|
3937
|
-
'v-btn--active':
|
|
4025
|
+
'v-btn--active': props.active,
|
|
3938
4026
|
'v-btn--block': props.block,
|
|
3939
4027
|
'v-btn--disabled': isDisabled.value,
|
|
3940
4028
|
'v-btn--elevated': isElevated.value,
|
|
@@ -3945,12 +4033,18 @@
|
|
|
3945
4033
|
"style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, positionStyles.value],
|
|
3946
4034
|
"disabled": isDisabled.value || undefined,
|
|
3947
4035
|
"href": link.href.value,
|
|
3948
|
-
"onClick":
|
|
4036
|
+
"onClick": e => {
|
|
4037
|
+
var _link$navigate;
|
|
4038
|
+
|
|
4039
|
+
if (isDisabled.value) return;
|
|
4040
|
+
(_link$navigate = link.navigate) == null ? void 0 : _link$navigate.call(link, e);
|
|
4041
|
+
group == null ? void 0 : group.toggle();
|
|
4042
|
+
}
|
|
3949
4043
|
}, {
|
|
3950
4044
|
default: () => [genOverlays(true, 'v-btn'), !props.icon && props.prependIcon && vue.createVNode(VIcon, {
|
|
3951
4045
|
"class": "v-btn__icon",
|
|
3952
4046
|
"icon": props.prependIcon,
|
|
3953
|
-
"
|
|
4047
|
+
"start": true
|
|
3954
4048
|
}, null), typeof props.icon === 'boolean' ? (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots) : vue.createVNode(VIcon, {
|
|
3955
4049
|
"class": "v-btn__icon",
|
|
3956
4050
|
"icon": props.icon,
|
|
@@ -3958,7 +4052,7 @@
|
|
|
3958
4052
|
}, null), !props.icon && props.appendIcon && vue.createVNode(VIcon, {
|
|
3959
4053
|
"class": "v-btn__icon",
|
|
3960
4054
|
"icon": props.appendIcon,
|
|
3961
|
-
"
|
|
4055
|
+
"end": true
|
|
3962
4056
|
}, null)]
|
|
3963
4057
|
}), [[vue.resolveDirective("ripple"), !isDisabled.value && props.ripple, null]]);
|
|
3964
4058
|
};
|
|
@@ -4008,7 +4102,6 @@
|
|
|
4008
4102
|
provideDefaults({
|
|
4009
4103
|
VBtn: {
|
|
4010
4104
|
color: vue.toRef(props, 'color'),
|
|
4011
|
-
textColor: vue.toRef(props, 'textColor'),
|
|
4012
4105
|
variant: vue.toRef(props, 'variant')
|
|
4013
4106
|
}
|
|
4014
4107
|
});
|
|
@@ -4035,6 +4128,7 @@
|
|
|
4035
4128
|
|
|
4036
4129
|
});
|
|
4037
4130
|
|
|
4131
|
+
// Utilities
|
|
4038
4132
|
const VAlertTitle = createSimpleFunctional('v-alert-title');
|
|
4039
4133
|
|
|
4040
4134
|
const allowedTypes = ['success', 'info', 'warning', 'error'];
|
|
@@ -4104,7 +4198,6 @@
|
|
|
4104
4198
|
|
|
4105
4199
|
return {
|
|
4106
4200
|
color: (_props$color = props.color) != null ? _props$color : props.type,
|
|
4107
|
-
textColor: props.textColor,
|
|
4108
4201
|
variant: props.variant
|
|
4109
4202
|
};
|
|
4110
4203
|
});
|
|
@@ -4144,9 +4237,10 @@
|
|
|
4144
4237
|
return () => {
|
|
4145
4238
|
var _slots$default;
|
|
4146
4239
|
|
|
4147
|
-
const hasClose = !!(slots.close || props.closable);
|
|
4148
4240
|
const hasPrepend = !!(slots.prepend || icon.value);
|
|
4149
4241
|
const hasTitle = !!(slots.title || props.title);
|
|
4242
|
+
const hasText = !!(props.text || slots.text);
|
|
4243
|
+
const hasClose = !!(slots.close || props.closable);
|
|
4150
4244
|
return isActive.value && vue.createVNode(props.tag, {
|
|
4151
4245
|
"class": ['v-alert', props.border && {
|
|
4152
4246
|
'v-alert--border': !!props.border,
|
|
@@ -4160,43 +4254,57 @@
|
|
|
4160
4254
|
default: () => [genOverlays(false, 'v-alert'), props.border && vue.createVNode("div", {
|
|
4161
4255
|
"class": ['v-alert__border', textColorClasses.value],
|
|
4162
4256
|
"style": textColorStyles.value
|
|
4163
|
-
}, null), hasPrepend && vue.createVNode(
|
|
4164
|
-
"
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4257
|
+
}, null), hasPrepend && vue.createVNode(VDefaultsProvider, {
|
|
4258
|
+
"defaults": {
|
|
4259
|
+
VIcon: {
|
|
4260
|
+
density: props.density,
|
|
4261
|
+
icon: icon.value,
|
|
4262
|
+
size: props.prominent ? 44 : 'default'
|
|
4263
|
+
}
|
|
4264
|
+
}
|
|
4265
|
+
}, {
|
|
4266
|
+
default: () => [vue.createVNode("div", {
|
|
4267
|
+
"class": "v-alert__prepend"
|
|
4268
|
+
}, [slots.prepend ? slots.prepend() : icon.value && vue.createVNode(VIcon, null, null)])]
|
|
4269
|
+
}), vue.createVNode("div", {
|
|
4169
4270
|
"class": "v-alert__content"
|
|
4170
4271
|
}, [hasTitle && vue.createVNode(VAlertTitle, null, {
|
|
4171
4272
|
default: () => [slots.title ? slots.title() : props.title]
|
|
4172
|
-
}), slots.text ? slots.text() : props.text, (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]), slots.append && vue.createVNode("div", {
|
|
4273
|
+
}), hasText && (slots.text ? slots.text() : props.text), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]), slots.append && vue.createVNode("div", {
|
|
4173
4274
|
"class": "v-alert__append"
|
|
4174
|
-
}, [slots.append()]), hasClose && vue.createVNode(
|
|
4175
|
-
"
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
|
|
4275
|
+
}, [slots.append()]), hasClose && vue.createVNode(VDefaultsProvider, {
|
|
4276
|
+
"defaults": {
|
|
4277
|
+
VIcon: {
|
|
4278
|
+
icon: props.closeIcon,
|
|
4279
|
+
size: 'small'
|
|
4280
|
+
}
|
|
4281
|
+
}
|
|
4282
|
+
}, {
|
|
4283
|
+
default: () => [vue.createVNode("div", {
|
|
4284
|
+
"class": "v-alert__close",
|
|
4285
|
+
"onClick": onCloseClick
|
|
4286
|
+
}, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
|
|
4287
|
+
})]
|
|
4181
4288
|
});
|
|
4182
4289
|
};
|
|
4183
4290
|
}
|
|
4184
4291
|
|
|
4185
4292
|
});
|
|
4186
4293
|
|
|
4294
|
+
const makeVAvatarProps = propsFactory({
|
|
4295
|
+
color: String,
|
|
4296
|
+
start: Boolean,
|
|
4297
|
+
end: Boolean,
|
|
4298
|
+
icon: String,
|
|
4299
|
+
image: String,
|
|
4300
|
+
...makeDensityProps(),
|
|
4301
|
+
...makeRoundedProps(),
|
|
4302
|
+
...makeSizeProps(),
|
|
4303
|
+
...makeTagProps()
|
|
4304
|
+
});
|
|
4187
4305
|
const VAvatar = defineComponent({
|
|
4188
4306
|
name: 'VAvatar',
|
|
4189
|
-
props:
|
|
4190
|
-
color: String,
|
|
4191
|
-
left: Boolean,
|
|
4192
|
-
right: Boolean,
|
|
4193
|
-
icon: String,
|
|
4194
|
-
image: String,
|
|
4195
|
-
...makeDensityProps(),
|
|
4196
|
-
...makeRoundedProps(),
|
|
4197
|
-
...makeSizeProps(),
|
|
4198
|
-
...makeTagProps()
|
|
4199
|
-
},
|
|
4307
|
+
props: makeVAvatarProps(),
|
|
4200
4308
|
|
|
4201
4309
|
setup(props, _ref) {
|
|
4202
4310
|
let {
|
|
@@ -4221,8 +4329,8 @@
|
|
|
4221
4329
|
|
|
4222
4330
|
return vue.createVNode(props.tag, {
|
|
4223
4331
|
"class": ['v-avatar', {
|
|
4224
|
-
'v-avatar--
|
|
4225
|
-
'v-avatar--
|
|
4332
|
+
'v-avatar--start': props.start,
|
|
4333
|
+
'v-avatar--end': props.end
|
|
4226
4334
|
}, backgroundColorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value],
|
|
4227
4335
|
"style": [backgroundColorStyles.value, sizeStyles.value]
|
|
4228
4336
|
}, {
|
|
@@ -4851,139 +4959,109 @@
|
|
|
4851
4959
|
return vue.inject(ListKey, null);
|
|
4852
4960
|
}
|
|
4853
4961
|
|
|
4854
|
-
const singleOpenStrategy =
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
if (value) {
|
|
4863
|
-
const newOpened = new Set();
|
|
4864
|
-
newOpened.add(id);
|
|
4865
|
-
let parent = parents.get(id);
|
|
4866
|
-
|
|
4867
|
-
while (parent != null) {
|
|
4868
|
-
newOpened.add(parent);
|
|
4869
|
-
parent = parents.get(parent);
|
|
4870
|
-
}
|
|
4962
|
+
const singleOpenStrategy = {
|
|
4963
|
+
open: _ref => {
|
|
4964
|
+
let {
|
|
4965
|
+
id,
|
|
4966
|
+
value,
|
|
4967
|
+
opened,
|
|
4968
|
+
parents
|
|
4969
|
+
} = _ref;
|
|
4871
4970
|
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
}
|
|
4877
|
-
};
|
|
4878
|
-
const multipleOpenStrategy = _ref2 => {
|
|
4879
|
-
let {
|
|
4880
|
-
id,
|
|
4881
|
-
value,
|
|
4882
|
-
opened,
|
|
4883
|
-
parents
|
|
4884
|
-
} = _ref2;
|
|
4971
|
+
if (value) {
|
|
4972
|
+
const newOpened = new Set();
|
|
4973
|
+
newOpened.add(id);
|
|
4974
|
+
let parent = parents.get(id);
|
|
4885
4975
|
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4976
|
+
while (parent != null) {
|
|
4977
|
+
newOpened.add(parent);
|
|
4978
|
+
parent = parents.get(parent);
|
|
4979
|
+
}
|
|
4889
4980
|
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4981
|
+
return newOpened;
|
|
4982
|
+
} else {
|
|
4983
|
+
opened.delete(id);
|
|
4984
|
+
return opened;
|
|
4893
4985
|
}
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
} else {
|
|
4897
|
-
opened.delete(id);
|
|
4898
|
-
}
|
|
4899
|
-
|
|
4900
|
-
return opened;
|
|
4986
|
+
},
|
|
4987
|
+
select: () => null
|
|
4901
4988
|
};
|
|
4902
|
-
|
|
4903
|
-
|
|
4904
|
-
select: _ref => {
|
|
4989
|
+
const multipleOpenStrategy = {
|
|
4990
|
+
open: _ref2 => {
|
|
4905
4991
|
let {
|
|
4906
4992
|
id,
|
|
4907
4993
|
value,
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
} =
|
|
4911
|
-
selected.set(id, value ? 'on' : mandatory && !Array.from(selected.entries()).find(_ref2 => {
|
|
4912
|
-
let [key, value] = _ref2;
|
|
4913
|
-
return value === 'on' && key !== id;
|
|
4914
|
-
}) ? 'on' : 'off');
|
|
4915
|
-
return selected;
|
|
4916
|
-
},
|
|
4917
|
-
in: (v, children, parents) => {
|
|
4918
|
-
let map = new Map();
|
|
4994
|
+
opened,
|
|
4995
|
+
parents
|
|
4996
|
+
} = _ref2;
|
|
4919
4997
|
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
|
|
4923
|
-
value: true,
|
|
4924
|
-
selected: new Map(map),
|
|
4925
|
-
children,
|
|
4926
|
-
parents
|
|
4927
|
-
});
|
|
4928
|
-
}
|
|
4998
|
+
if (value) {
|
|
4999
|
+
let parent = parents.get(id);
|
|
5000
|
+
opened.add(id);
|
|
4929
5001
|
|
|
4930
|
-
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
5002
|
+
while (parent != null && parent !== id) {
|
|
5003
|
+
opened.add(parent);
|
|
5004
|
+
parent = parents.get(parent);
|
|
5005
|
+
}
|
|
4934
5006
|
|
|
4935
|
-
|
|
4936
|
-
|
|
5007
|
+
return opened;
|
|
5008
|
+
} else {
|
|
5009
|
+
opened.delete(id);
|
|
4937
5010
|
}
|
|
4938
5011
|
|
|
4939
|
-
return
|
|
4940
|
-
}
|
|
5012
|
+
return opened;
|
|
5013
|
+
},
|
|
5014
|
+
select: () => null
|
|
4941
5015
|
};
|
|
4942
|
-
const
|
|
5016
|
+
const listOpenStrategy = {
|
|
5017
|
+
open: multipleOpenStrategy.open,
|
|
4943
5018
|
select: _ref3 => {
|
|
4944
5019
|
let {
|
|
4945
5020
|
id,
|
|
4946
5021
|
value,
|
|
4947
|
-
|
|
5022
|
+
opened,
|
|
5023
|
+
parents
|
|
4948
5024
|
} = _ref3;
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
selected: new Map()
|
|
4953
|
-
});
|
|
4954
|
-
},
|
|
4955
|
-
in: (v, children, parents) => {
|
|
4956
|
-
let map = new Map();
|
|
5025
|
+
if (!value) return opened;
|
|
5026
|
+
const path = [];
|
|
5027
|
+
let parent = parents.get(id);
|
|
4957
5028
|
|
|
4958
|
-
|
|
4959
|
-
|
|
5029
|
+
while (parent != null) {
|
|
5030
|
+
path.push(parent);
|
|
5031
|
+
parent = parents.get(parent);
|
|
4960
5032
|
}
|
|
4961
5033
|
|
|
4962
|
-
return
|
|
4963
|
-
},
|
|
4964
|
-
out: (v, children, parents) => {
|
|
4965
|
-
return independentSelectStrategy.out(v, children, parents);
|
|
5034
|
+
return new Set(path);
|
|
4966
5035
|
}
|
|
4967
5036
|
};
|
|
4968
|
-
|
|
4969
|
-
|
|
5037
|
+
|
|
5038
|
+
/* eslint-disable sonarjs/no-identical-functions */
|
|
5039
|
+
const independentSelectStrategy = mandatory => {
|
|
4970
5040
|
const strategy = {
|
|
4971
|
-
select:
|
|
5041
|
+
select: _ref => {
|
|
4972
5042
|
let {
|
|
4973
5043
|
id,
|
|
4974
5044
|
value,
|
|
4975
|
-
selected
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
5045
|
+
selected
|
|
5046
|
+
} = _ref;
|
|
5047
|
+
|
|
5048
|
+
// When mandatory and we're trying to deselect when id
|
|
5049
|
+
// is the only currently selected item then do nothing
|
|
5050
|
+
if (mandatory && !value) {
|
|
5051
|
+
const on = Array.from(selected.entries()).reduce((arr, _ref2) => {
|
|
5052
|
+
let [key, value] = _ref2;
|
|
5053
|
+
return value === 'on' ? [...arr, key] : arr;
|
|
5054
|
+
}, []);
|
|
5055
|
+
if (on.length === 1 && on[0] === id) return selected;
|
|
5056
|
+
}
|
|
5057
|
+
|
|
4980
5058
|
selected.set(id, value ? 'on' : 'off');
|
|
4981
5059
|
return selected;
|
|
4982
5060
|
},
|
|
4983
5061
|
in: (v, children, parents) => {
|
|
4984
5062
|
let map = new Map();
|
|
4985
5063
|
|
|
4986
|
-
for (const id of v
|
|
5064
|
+
for (const id of v || []) {
|
|
4987
5065
|
map = strategy.select({
|
|
4988
5066
|
id,
|
|
4989
5067
|
value: true,
|
|
@@ -4995,66 +5073,164 @@
|
|
|
4995
5073
|
|
|
4996
5074
|
return map;
|
|
4997
5075
|
},
|
|
4998
|
-
out:
|
|
5076
|
+
out: v => {
|
|
5077
|
+
const arr = [];
|
|
5078
|
+
|
|
5079
|
+
for (const [key, value] of v.entries()) {
|
|
5080
|
+
if (value === 'on') arr.push(key);
|
|
5081
|
+
}
|
|
5082
|
+
|
|
5083
|
+
return arr;
|
|
5084
|
+
}
|
|
4999
5085
|
};
|
|
5000
5086
|
return strategy;
|
|
5001
5087
|
};
|
|
5002
|
-
const
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5088
|
+
const independentSingleSelectStrategy = mandatory => {
|
|
5089
|
+
const parentStrategy = independentSelectStrategy(mandatory);
|
|
5090
|
+
const strategy = {
|
|
5091
|
+
select: _ref3 => {
|
|
5092
|
+
let {
|
|
5093
|
+
selected,
|
|
5094
|
+
id,
|
|
5095
|
+
...rest
|
|
5096
|
+
} = _ref3;
|
|
5097
|
+
const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();
|
|
5098
|
+
return parentStrategy.select({ ...rest,
|
|
5099
|
+
id,
|
|
5100
|
+
selected: singleSelected
|
|
5101
|
+
});
|
|
5102
|
+
},
|
|
5103
|
+
in: (v, children, parents) => {
|
|
5104
|
+
let map = new Map();
|
|
5016
5105
|
|
|
5017
|
-
if (
|
|
5018
|
-
|
|
5106
|
+
if (v != null && v.length) {
|
|
5107
|
+
map = parentStrategy.in(v.slice(0, 1), children, parents);
|
|
5019
5108
|
}
|
|
5020
|
-
}
|
|
5021
|
-
|
|
5022
|
-
let parent = parents.get(id);
|
|
5023
5109
|
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
5028
|
-
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
|
5029
|
-
parent = parents.get(parent);
|
|
5110
|
+
return map;
|
|
5111
|
+
},
|
|
5112
|
+
out: (v, children, parents) => {
|
|
5113
|
+
return parentStrategy.out(v, children, parents);
|
|
5030
5114
|
}
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5115
|
+
};
|
|
5116
|
+
return strategy;
|
|
5117
|
+
};
|
|
5118
|
+
const leafSelectStrategy = mandatory => {
|
|
5119
|
+
const parentStrategy = independentSelectStrategy(mandatory);
|
|
5120
|
+
const strategy = {
|
|
5121
|
+
select: _ref4 => {
|
|
5122
|
+
let {
|
|
5039
5123
|
id,
|
|
5040
|
-
|
|
5041
|
-
selected: new Map(map),
|
|
5124
|
+
selected,
|
|
5042
5125
|
children,
|
|
5043
|
-
|
|
5126
|
+
...rest
|
|
5127
|
+
} = _ref4;
|
|
5128
|
+
if (children.has(id)) return selected;
|
|
5129
|
+
return parentStrategy.select({
|
|
5130
|
+
id,
|
|
5131
|
+
selected,
|
|
5132
|
+
children,
|
|
5133
|
+
...rest
|
|
5044
5134
|
});
|
|
5045
|
-
}
|
|
5135
|
+
},
|
|
5136
|
+
in: parentStrategy.in,
|
|
5137
|
+
out: parentStrategy.out
|
|
5138
|
+
};
|
|
5139
|
+
return strategy;
|
|
5140
|
+
};
|
|
5141
|
+
const leafSingleSelectStrategy = mandatory => {
|
|
5142
|
+
const parentStrategy = independentSingleSelectStrategy(mandatory);
|
|
5143
|
+
const strategy = {
|
|
5144
|
+
select: _ref5 => {
|
|
5145
|
+
let {
|
|
5146
|
+
id,
|
|
5147
|
+
selected,
|
|
5148
|
+
children,
|
|
5149
|
+
...rest
|
|
5150
|
+
} = _ref5;
|
|
5151
|
+
if (children.has(id)) return selected;
|
|
5152
|
+
return parentStrategy.select({
|
|
5153
|
+
id,
|
|
5154
|
+
selected,
|
|
5155
|
+
children,
|
|
5156
|
+
...rest
|
|
5157
|
+
});
|
|
5158
|
+
},
|
|
5159
|
+
in: parentStrategy.in,
|
|
5160
|
+
out: parentStrategy.out
|
|
5161
|
+
};
|
|
5162
|
+
return strategy;
|
|
5163
|
+
};
|
|
5164
|
+
const classicSelectStrategy = mandatory => {
|
|
5165
|
+
const strategy = {
|
|
5166
|
+
select: _ref6 => {
|
|
5167
|
+
let {
|
|
5168
|
+
id,
|
|
5169
|
+
value,
|
|
5170
|
+
selected,
|
|
5171
|
+
children,
|
|
5172
|
+
parents
|
|
5173
|
+
} = _ref6;
|
|
5174
|
+
const original = new Map(selected);
|
|
5175
|
+
const items = [id];
|
|
5046
5176
|
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5050
|
-
const arr = [];
|
|
5177
|
+
while (items.length) {
|
|
5178
|
+
const item = items.shift();
|
|
5179
|
+
selected.set(item, value ? 'on' : 'off');
|
|
5051
5180
|
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5181
|
+
if (children.has(item)) {
|
|
5182
|
+
items.push(...children.get(item));
|
|
5183
|
+
}
|
|
5184
|
+
}
|
|
5055
5185
|
|
|
5056
|
-
|
|
5057
|
-
|
|
5186
|
+
let parent = parents.get(id);
|
|
5187
|
+
|
|
5188
|
+
while (parent) {
|
|
5189
|
+
const childrenIds = children.get(parent);
|
|
5190
|
+
const everySelected = childrenIds.every(cid => selected.get(cid) === 'on');
|
|
5191
|
+
const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off');
|
|
5192
|
+
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
|
5193
|
+
parent = parents.get(parent);
|
|
5194
|
+
} // If mandatory and planned deselect results in no selected
|
|
5195
|
+
// items then we can't do it, so return original state
|
|
5196
|
+
|
|
5197
|
+
|
|
5198
|
+
if (mandatory && !value) {
|
|
5199
|
+
const on = Array.from(selected.entries()).reduce((arr, _ref7) => {
|
|
5200
|
+
let [key, value] = _ref7;
|
|
5201
|
+
return value === 'on' ? [...arr, key] : arr;
|
|
5202
|
+
}, []);
|
|
5203
|
+
if (on.length === 0) return original;
|
|
5204
|
+
}
|
|
5205
|
+
|
|
5206
|
+
return selected;
|
|
5207
|
+
},
|
|
5208
|
+
in: (v, children, parents) => {
|
|
5209
|
+
let map = new Map();
|
|
5210
|
+
|
|
5211
|
+
for (const id of v || []) {
|
|
5212
|
+
map = strategy.select({
|
|
5213
|
+
id,
|
|
5214
|
+
value: true,
|
|
5215
|
+
selected: new Map(map),
|
|
5216
|
+
children,
|
|
5217
|
+
parents
|
|
5218
|
+
});
|
|
5219
|
+
}
|
|
5220
|
+
|
|
5221
|
+
return map;
|
|
5222
|
+
},
|
|
5223
|
+
out: (v, children) => {
|
|
5224
|
+
const arr = [];
|
|
5225
|
+
|
|
5226
|
+
for (const [key, value] of v.entries()) {
|
|
5227
|
+
if (value === 'on' && !children.has(key)) arr.push(key);
|
|
5228
|
+
}
|
|
5229
|
+
|
|
5230
|
+
return arr;
|
|
5231
|
+
}
|
|
5232
|
+
};
|
|
5233
|
+
return strategy;
|
|
5058
5234
|
};
|
|
5059
5235
|
|
|
5060
5236
|
const VNestedSymbol = Symbol.for('vuetify:nested');
|
|
@@ -5089,26 +5265,29 @@
|
|
|
5089
5265
|
|
|
5090
5266
|
switch (props.selectStrategy) {
|
|
5091
5267
|
case 'single-leaf':
|
|
5092
|
-
return
|
|
5268
|
+
return leafSingleSelectStrategy(props.mandatory);
|
|
5093
5269
|
|
|
5094
5270
|
case 'leaf':
|
|
5095
|
-
return leafSelectStrategy();
|
|
5271
|
+
return leafSelectStrategy(props.mandatory);
|
|
5096
5272
|
|
|
5097
5273
|
case 'independent':
|
|
5098
|
-
return independentSelectStrategy;
|
|
5274
|
+
return independentSelectStrategy(props.mandatory);
|
|
5099
5275
|
|
|
5100
5276
|
case 'single-independent':
|
|
5101
|
-
return independentSingleSelectStrategy;
|
|
5277
|
+
return independentSingleSelectStrategy(props.mandatory);
|
|
5102
5278
|
|
|
5103
5279
|
case 'classic':
|
|
5104
5280
|
default:
|
|
5105
|
-
return classicSelectStrategy;
|
|
5281
|
+
return classicSelectStrategy(props.mandatory);
|
|
5106
5282
|
}
|
|
5107
5283
|
});
|
|
5108
5284
|
const openStrategy = vue.computed(() => {
|
|
5109
5285
|
if (typeof props.openStrategy === 'function') return props.openStrategy;
|
|
5110
5286
|
|
|
5111
5287
|
switch (props.openStrategy) {
|
|
5288
|
+
case 'list':
|
|
5289
|
+
return listOpenStrategy;
|
|
5290
|
+
|
|
5112
5291
|
case 'single':
|
|
5113
5292
|
return singleOpenStrategy;
|
|
5114
5293
|
|
|
@@ -5179,7 +5358,7 @@
|
|
|
5179
5358
|
path: getPath(id),
|
|
5180
5359
|
event
|
|
5181
5360
|
});
|
|
5182
|
-
const newOpened = openStrategy.value({
|
|
5361
|
+
const newOpened = openStrategy.value.open({
|
|
5183
5362
|
id,
|
|
5184
5363
|
value,
|
|
5185
5364
|
opened: new Set(opened.value),
|
|
@@ -5202,10 +5381,19 @@
|
|
|
5202
5381
|
selected: new Map(selected.value),
|
|
5203
5382
|
children: children.value,
|
|
5204
5383
|
parents: parents.value,
|
|
5205
|
-
event
|
|
5206
|
-
mandatory: props.mandatory
|
|
5384
|
+
event
|
|
5207
5385
|
});
|
|
5208
5386
|
newSelected && (selected.value = newSelected);
|
|
5387
|
+
const newOpened = openStrategy.value.select({
|
|
5388
|
+
id,
|
|
5389
|
+
value,
|
|
5390
|
+
selected: new Map(selected.value),
|
|
5391
|
+
opened: new Set(opened.value),
|
|
5392
|
+
children: children.value,
|
|
5393
|
+
parents: parents.value,
|
|
5394
|
+
event
|
|
5395
|
+
});
|
|
5396
|
+
newOpened && (opened.value = newOpened);
|
|
5209
5397
|
},
|
|
5210
5398
|
children,
|
|
5211
5399
|
parents
|
|
@@ -5229,11 +5417,12 @@
|
|
|
5229
5417
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
|
5230
5418
|
isSelected: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
|
|
5231
5419
|
isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
|
5232
|
-
isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value))
|
|
5420
|
+
isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value)),
|
|
5421
|
+
isGroupActivator: parent.isGroupActivator
|
|
5233
5422
|
};
|
|
5234
|
-
!parent.
|
|
5423
|
+
!parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup);
|
|
5235
5424
|
vue.onBeforeUnmount(() => {
|
|
5236
|
-
!parent.
|
|
5425
|
+
!parent.isGroupActivator && parent.root.unregister(computedId.value);
|
|
5237
5426
|
});
|
|
5238
5427
|
isGroup && vue.provide(VNestedSymbol, item);
|
|
5239
5428
|
return item;
|
|
@@ -5241,11 +5430,11 @@
|
|
|
5241
5430
|
const useNestedGroupActivator = () => {
|
|
5242
5431
|
const parent = vue.inject(VNestedSymbol, emptyNested);
|
|
5243
5432
|
vue.provide(VNestedSymbol, { ...parent,
|
|
5244
|
-
|
|
5433
|
+
isGroupActivator: true
|
|
5245
5434
|
});
|
|
5246
5435
|
};
|
|
5247
5436
|
|
|
5248
|
-
const VListGroupActivator =
|
|
5437
|
+
const VListGroupActivator = defineComponent({
|
|
5249
5438
|
name: 'VListGroupActivator',
|
|
5250
5439
|
|
|
5251
5440
|
setup(_, _ref) {
|
|
@@ -5264,6 +5453,8 @@
|
|
|
5264
5453
|
const VListGroup = genericComponent()({
|
|
5265
5454
|
name: 'VListGroup',
|
|
5266
5455
|
props: {
|
|
5456
|
+
activeColor: String,
|
|
5457
|
+
color: String,
|
|
5267
5458
|
collapseIcon: {
|
|
5268
5459
|
type: String,
|
|
5269
5460
|
default: '$collapse'
|
|
@@ -5290,11 +5481,17 @@
|
|
|
5290
5481
|
open(!isOpen.value, e);
|
|
5291
5482
|
};
|
|
5292
5483
|
|
|
5293
|
-
const activatorProps = vue.computed(() =>
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5484
|
+
const activatorProps = vue.computed(() => {
|
|
5485
|
+
var _props$activeColor;
|
|
5486
|
+
|
|
5487
|
+
return {
|
|
5488
|
+
onClick,
|
|
5489
|
+
active: isOpen.value,
|
|
5490
|
+
appendIcon: isOpen.value ? props.collapseIcon : props.expandIcon,
|
|
5491
|
+
class: 'v-list-group__header',
|
|
5492
|
+
color: isOpen.value ? (_props$activeColor = props.activeColor) != null ? _props$activeColor : props.color : undefined
|
|
5493
|
+
};
|
|
5494
|
+
});
|
|
5298
5495
|
return () => {
|
|
5299
5496
|
var _slots$default2;
|
|
5300
5497
|
|
|
@@ -5303,9 +5500,18 @@
|
|
|
5303
5500
|
'v-list-group--prepend': list == null ? void 0 : list.hasPrepend.value
|
|
5304
5501
|
}]
|
|
5305
5502
|
}, {
|
|
5306
|
-
default: () => [slots.activator && vue.createVNode(
|
|
5307
|
-
|
|
5308
|
-
|
|
5503
|
+
default: () => [slots.activator && vue.createVNode(VDefaultsProvider, {
|
|
5504
|
+
"defaults": {
|
|
5505
|
+
VListItemIcon: {
|
|
5506
|
+
color: activatorProps.value.color
|
|
5507
|
+
}
|
|
5508
|
+
}
|
|
5509
|
+
}, {
|
|
5510
|
+
default: () => [vue.createVNode(VListGroupActivator, null, {
|
|
5511
|
+
default: () => [slots.activator({
|
|
5512
|
+
props: activatorProps.value,
|
|
5513
|
+
isOpen
|
|
5514
|
+
})]
|
|
5309
5515
|
})]
|
|
5310
5516
|
}), vue.createVNode(VExpandTransition, null, {
|
|
5311
5517
|
default: () => [vue.withDirectives(vue.createVNode("div", {
|
|
@@ -5320,30 +5526,42 @@
|
|
|
5320
5526
|
|
|
5321
5527
|
const VListItemAvatar = defineComponent({
|
|
5322
5528
|
name: 'VListItemAvatar',
|
|
5323
|
-
props:
|
|
5324
|
-
left: Boolean,
|
|
5325
|
-
right: Boolean,
|
|
5326
|
-
...makeTagProps()
|
|
5327
|
-
},
|
|
5529
|
+
props: makeVAvatarProps(),
|
|
5328
5530
|
|
|
5329
5531
|
setup(props, _ref) {
|
|
5330
5532
|
let {
|
|
5331
5533
|
slots
|
|
5332
5534
|
} = _ref;
|
|
5333
|
-
return () => {
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
}, slots);
|
|
5340
|
-
};
|
|
5535
|
+
return () => vue.createVNode(VAvatar, vue.mergeProps({
|
|
5536
|
+
"class": ['v-list-item-avatar', {
|
|
5537
|
+
'v-list-item-avatar--start': props.start,
|
|
5538
|
+
'v-list-item-avatar--end': props.end
|
|
5539
|
+
}]
|
|
5540
|
+
}, props), slots);
|
|
5341
5541
|
}
|
|
5342
5542
|
|
|
5343
5543
|
});
|
|
5344
5544
|
|
|
5345
5545
|
const VListItemHeader = createSimpleFunctional('v-list-item-header');
|
|
5346
5546
|
|
|
5547
|
+
const VListItemIcon = defineComponent({
|
|
5548
|
+
name: 'VListItemIcon',
|
|
5549
|
+
props: makeVIconProps(),
|
|
5550
|
+
|
|
5551
|
+
setup(props, _ref) {
|
|
5552
|
+
let {
|
|
5553
|
+
slots
|
|
5554
|
+
} = _ref;
|
|
5555
|
+
return () => vue.createVNode(VIcon, vue.mergeProps({
|
|
5556
|
+
"class": ['v-list-item-icon', {
|
|
5557
|
+
'v-list-item-icon--start': props.start,
|
|
5558
|
+
'v-list-item-icon--end': props.end
|
|
5559
|
+
}]
|
|
5560
|
+
}, props), slots);
|
|
5561
|
+
}
|
|
5562
|
+
|
|
5563
|
+
});
|
|
5564
|
+
|
|
5347
5565
|
const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle');
|
|
5348
5566
|
|
|
5349
5567
|
const VListItemTitle = createSimpleFunctional('v-list-item-title');
|
|
@@ -5360,12 +5578,14 @@
|
|
|
5360
5578
|
appendAvatar: String,
|
|
5361
5579
|
appendIcon: String,
|
|
5362
5580
|
disabled: Boolean,
|
|
5363
|
-
|
|
5581
|
+
lines: String,
|
|
5582
|
+
nav: Boolean,
|
|
5364
5583
|
prependAvatar: String,
|
|
5365
5584
|
prependIcon: String,
|
|
5366
5585
|
subtitle: String,
|
|
5367
5586
|
title: String,
|
|
5368
5587
|
value: null,
|
|
5588
|
+
link: Boolean,
|
|
5369
5589
|
...makeBorderProps(),
|
|
5370
5590
|
...makeDensityProps(),
|
|
5371
5591
|
...makeDimensionProps(),
|
|
@@ -5393,6 +5613,8 @@
|
|
|
5393
5613
|
const {
|
|
5394
5614
|
select,
|
|
5395
5615
|
isSelected,
|
|
5616
|
+
isIndeterminate,
|
|
5617
|
+
isGroupActivator,
|
|
5396
5618
|
root,
|
|
5397
5619
|
parent
|
|
5398
5620
|
} = useNestedItem(id, false);
|
|
@@ -5402,13 +5624,12 @@
|
|
|
5402
5624
|
|
|
5403
5625
|
return props.active || ((_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value) || isSelected.value;
|
|
5404
5626
|
});
|
|
5627
|
+
const roundedProps = vue.computed(() => props.rounded || props.nav);
|
|
5405
5628
|
const variantProps = vue.computed(() => {
|
|
5406
5629
|
var _props$activeColor;
|
|
5407
5630
|
|
|
5408
|
-
const activeColor = (_props$activeColor = props.activeColor) != null ? _props$activeColor : props.color;
|
|
5409
5631
|
return {
|
|
5410
|
-
color: isActive.value ? activeColor : props.color,
|
|
5411
|
-
textColor: props.textColor,
|
|
5632
|
+
color: isActive.value ? (_props$activeColor = props.activeColor) != null ? _props$activeColor : props.color : props.color,
|
|
5412
5633
|
variant: props.variant
|
|
5413
5634
|
};
|
|
5414
5635
|
});
|
|
@@ -5450,50 +5671,53 @@
|
|
|
5450
5671
|
} = useElevation(props);
|
|
5451
5672
|
const {
|
|
5452
5673
|
roundedClasses
|
|
5453
|
-
} = useRounded(
|
|
5674
|
+
} = useRounded(roundedProps);
|
|
5675
|
+
const lineClasses = vue.computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined);
|
|
5454
5676
|
const slotProps = vue.computed(() => ({
|
|
5455
5677
|
isActive: isActive.value,
|
|
5456
5678
|
select,
|
|
5457
|
-
isSelected: isSelected.value
|
|
5679
|
+
isSelected: isSelected.value,
|
|
5680
|
+
isIndeterminate: isIndeterminate.value
|
|
5458
5681
|
}));
|
|
5459
5682
|
useRender(() => {
|
|
5460
|
-
var _slots$default;
|
|
5683
|
+
var _slots$prepend, _slots$default, _slots$append;
|
|
5461
5684
|
|
|
5462
5685
|
const Tag = link.isLink.value ? 'a' : props.tag;
|
|
5686
|
+
const hasColor = !list || isSelected.value || isActive.value;
|
|
5463
5687
|
const hasTitle = slots.title || props.title;
|
|
5464
5688
|
const hasSubtitle = slots.subtitle || props.subtitle;
|
|
5465
5689
|
const hasHeader = !!(hasTitle || hasSubtitle);
|
|
5466
5690
|
const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon);
|
|
5467
5691
|
const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon);
|
|
5468
|
-
const isClickable = !props.disabled && (link.isClickable.value || props.
|
|
5692
|
+
const isClickable = !props.disabled && (props.link || link.isClickable.value || props.value != null && !!list);
|
|
5469
5693
|
list == null ? void 0 : list.updateHasPrepend(hasPrepend);
|
|
5470
5694
|
return vue.withDirectives(vue.createVNode(Tag, {
|
|
5471
5695
|
"class": ['v-list-item', {
|
|
5472
5696
|
'v-list-item--active': isActive.value,
|
|
5473
5697
|
'v-list-item--disabled': props.disabled,
|
|
5474
5698
|
'v-list-item--link': isClickable,
|
|
5699
|
+
'v-list-item--nav': props.nav,
|
|
5475
5700
|
'v-list-item--prepend': !hasPrepend && (list == null ? void 0 : list.hasPrepend.value),
|
|
5476
|
-
[`${props.activeClass}`]: isActive.value
|
|
5477
|
-
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, variantClasses.value],
|
|
5478
|
-
"style": [colorStyles.value, dimensionStyles.value],
|
|
5701
|
+
[`${props.activeClass}`]: isActive.value
|
|
5702
|
+
}, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value],
|
|
5703
|
+
"style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value],
|
|
5479
5704
|
"href": link.href.value,
|
|
5480
5705
|
"tabindex": isClickable ? 0 : undefined,
|
|
5481
5706
|
"onClick": isClickable && (e => {
|
|
5482
5707
|
var _link$navigate;
|
|
5483
5708
|
|
|
5709
|
+
if (isGroupActivator) return;
|
|
5484
5710
|
(_link$navigate = link.navigate) == null ? void 0 : _link$navigate.call(link, e);
|
|
5485
|
-
select(!isSelected.value, e);
|
|
5711
|
+
props.value != null && select(!isSelected.value, e);
|
|
5486
5712
|
})
|
|
5487
5713
|
}, {
|
|
5488
|
-
default: () => [genOverlays(isClickable || isActive.value, 'v-list-item'), hasPrepend && (
|
|
5489
|
-
"
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
}, null)]
|
|
5496
|
-
})), hasHeader && vue.createVNode(VListItemHeader, null, {
|
|
5714
|
+
default: () => [genOverlays(isClickable || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VListItemAvatar, {
|
|
5715
|
+
"image": props.prependAvatar,
|
|
5716
|
+
"start": true
|
|
5717
|
+
}, null), props.prependIcon && vue.createVNode(VListItemIcon, {
|
|
5718
|
+
"icon": props.prependIcon,
|
|
5719
|
+
"start": true
|
|
5720
|
+
}, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)]), hasHeader && vue.createVNode(VListItemHeader, null, {
|
|
5497
5721
|
default: () => [hasTitle && vue.createVNode(VListItemTitle, null, {
|
|
5498
5722
|
default: () => [slots.title ? slots.title({
|
|
5499
5723
|
title: props.title
|
|
@@ -5503,15 +5727,13 @@
|
|
|
5503
5727
|
subtitle: props.subtitle
|
|
5504
5728
|
}) : props.subtitle]
|
|
5505
5729
|
})]
|
|
5506
|
-
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value), hasAppend && (slots.append ?
|
|
5507
|
-
"
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
}, null)]
|
|
5514
|
-
}))]
|
|
5730
|
+
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value), hasAppend && vue.createVNode(vue.Fragment, null, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value), props.appendAvatar && vue.createVNode(VListItemAvatar, {
|
|
5731
|
+
"image": props.appendAvatar,
|
|
5732
|
+
"end": true
|
|
5733
|
+
}, null), props.appendIcon && vue.createVNode(VListItemIcon, {
|
|
5734
|
+
"icon": props.appendIcon,
|
|
5735
|
+
"end": true
|
|
5736
|
+
}, null)])]
|
|
5515
5737
|
}), [[vue.resolveDirective("ripple"), isClickable]]);
|
|
5516
5738
|
});
|
|
5517
5739
|
}
|
|
@@ -5589,7 +5811,7 @@
|
|
|
5589
5811
|
} = _ref3;
|
|
5590
5812
|
return slots.header ? slots.header({ ...itemProps,
|
|
5591
5813
|
...activatorProps
|
|
5592
|
-
}) : vue.createVNode(VListItem, vue.mergeProps(itemProps, activatorProps),
|
|
5814
|
+
}) : vue.createVNode(VListItem, vue.mergeProps(itemProps, activatorProps), slots);
|
|
5593
5815
|
},
|
|
5594
5816
|
default: () => vue.createVNode(VListChildren, {
|
|
5595
5817
|
"items": children
|
|
@@ -5633,17 +5855,19 @@
|
|
|
5633
5855
|
const VList = genericComponent()({
|
|
5634
5856
|
name: 'VList',
|
|
5635
5857
|
props: {
|
|
5636
|
-
|
|
5858
|
+
activeColor: String,
|
|
5859
|
+
activeClass: String,
|
|
5860
|
+
bgColor: String,
|
|
5637
5861
|
disabled: Boolean,
|
|
5638
5862
|
lines: {
|
|
5639
|
-
type: String,
|
|
5863
|
+
type: [Boolean, String],
|
|
5640
5864
|
default: 'one'
|
|
5641
5865
|
},
|
|
5642
5866
|
nav: Boolean,
|
|
5643
5867
|
items: Array,
|
|
5644
5868
|
...makeNestedProps({
|
|
5645
5869
|
selectStrategy: 'single-leaf',
|
|
5646
|
-
openStrategy: '
|
|
5870
|
+
openStrategy: 'list'
|
|
5647
5871
|
}),
|
|
5648
5872
|
...makeBorderProps(),
|
|
5649
5873
|
...makeDensityProps(),
|
|
@@ -5651,7 +5875,10 @@
|
|
|
5651
5875
|
...makeElevationProps(),
|
|
5652
5876
|
...makeRoundedProps(),
|
|
5653
5877
|
...makeTagProps(),
|
|
5654
|
-
...makeThemeProps()
|
|
5878
|
+
...makeThemeProps(),
|
|
5879
|
+
...makeVariantProps({
|
|
5880
|
+
variant: 'text'
|
|
5881
|
+
})
|
|
5655
5882
|
},
|
|
5656
5883
|
emits: {
|
|
5657
5884
|
'update:selected': val => true,
|
|
@@ -5671,7 +5898,7 @@
|
|
|
5671
5898
|
const {
|
|
5672
5899
|
backgroundColorClasses,
|
|
5673
5900
|
backgroundColorStyles
|
|
5674
|
-
} = useBackgroundColor(vue.toRef(props, '
|
|
5901
|
+
} = useBackgroundColor(vue.toRef(props, 'bgColor'));
|
|
5675
5902
|
const {
|
|
5676
5903
|
borderClasses
|
|
5677
5904
|
} = useBorder(props);
|
|
@@ -5691,25 +5918,37 @@
|
|
|
5691
5918
|
open,
|
|
5692
5919
|
select
|
|
5693
5920
|
} = useNested(props);
|
|
5921
|
+
const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
|
|
5922
|
+
const activeColor = vue.toRef(props, 'activeColor');
|
|
5923
|
+
const color = vue.toRef(props, 'color');
|
|
5694
5924
|
createList();
|
|
5925
|
+
provideDefaults({
|
|
5926
|
+
VListGroup: {
|
|
5927
|
+
activeColor,
|
|
5928
|
+
color
|
|
5929
|
+
},
|
|
5930
|
+
VListItem: {
|
|
5931
|
+
activeClass: vue.toRef(props, 'activeClass'),
|
|
5932
|
+
activeColor,
|
|
5933
|
+
color,
|
|
5934
|
+
density: vue.toRef(props, 'density'),
|
|
5935
|
+
disabled: vue.toRef(props, 'disabled'),
|
|
5936
|
+
lines: vue.toRef(props, 'lines'),
|
|
5937
|
+
nav: vue.toRef(props, 'nav'),
|
|
5938
|
+
variant: vue.toRef(props, 'variant')
|
|
5939
|
+
}
|
|
5940
|
+
});
|
|
5695
5941
|
useRender(() => {
|
|
5696
5942
|
return vue.createVNode(props.tag, {
|
|
5697
5943
|
"class": ['v-list', {
|
|
5698
5944
|
'v-list--disabled': props.disabled,
|
|
5699
|
-
'v-list--nav': props.nav
|
|
5700
|
-
|
|
5701
|
-
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
|
|
5945
|
+
'v-list--nav': props.nav
|
|
5946
|
+
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value],
|
|
5702
5947
|
"style": [backgroundColorStyles.value, dimensionStyles.value]
|
|
5703
5948
|
}, {
|
|
5704
5949
|
default: () => [vue.createVNode(VListChildren, {
|
|
5705
5950
|
"items": items.value
|
|
5706
|
-
},
|
|
5707
|
-
default: slots.default,
|
|
5708
|
-
item: slots.item,
|
|
5709
|
-
title: slots.title,
|
|
5710
|
-
subtitle: slots.subtitle,
|
|
5711
|
-
header: slots.header
|
|
5712
|
-
})]
|
|
5951
|
+
}, slots)]
|
|
5713
5952
|
});
|
|
5714
5953
|
});
|
|
5715
5954
|
return {
|
|
@@ -5722,11 +5961,35 @@
|
|
|
5722
5961
|
|
|
5723
5962
|
const VListImg = createSimpleFunctional('v-list-img');
|
|
5724
5963
|
|
|
5964
|
+
const VListItemAction = defineComponent({
|
|
5965
|
+
name: 'VListItemAction',
|
|
5966
|
+
props: {
|
|
5967
|
+
start: Boolean,
|
|
5968
|
+
end: Boolean,
|
|
5969
|
+
...makeTagProps()
|
|
5970
|
+
},
|
|
5971
|
+
|
|
5972
|
+
setup(props, _ref) {
|
|
5973
|
+
let {
|
|
5974
|
+
slots
|
|
5975
|
+
} = _ref;
|
|
5976
|
+
return () => {
|
|
5977
|
+
return vue.createVNode(props.tag, {
|
|
5978
|
+
"class": ['v-list-item-action', {
|
|
5979
|
+
'v-list-item-action--start': props.start,
|
|
5980
|
+
'v-list-item-action--end': props.end
|
|
5981
|
+
}]
|
|
5982
|
+
}, slots);
|
|
5983
|
+
};
|
|
5984
|
+
}
|
|
5985
|
+
|
|
5986
|
+
});
|
|
5987
|
+
|
|
5725
5988
|
const VListItemMedia = defineComponent({
|
|
5726
5989
|
name: 'VListItemMedia',
|
|
5727
5990
|
props: {
|
|
5728
|
-
|
|
5729
|
-
|
|
5991
|
+
start: Boolean,
|
|
5992
|
+
end: Boolean,
|
|
5730
5993
|
...makeTagProps()
|
|
5731
5994
|
},
|
|
5732
5995
|
|
|
@@ -5737,8 +6000,8 @@
|
|
|
5737
6000
|
return () => {
|
|
5738
6001
|
return vue.createVNode(props.tag, {
|
|
5739
6002
|
"class": ['v-list-item-media', {
|
|
5740
|
-
'v-list-item-media--start': props.
|
|
5741
|
-
'v-list-item-media--end': props.
|
|
6003
|
+
'v-list-item-media--start': props.start,
|
|
6004
|
+
'v-list-item-media--end': props.end
|
|
5742
6005
|
}]
|
|
5743
6006
|
}, slots);
|
|
5744
6007
|
};
|
|
@@ -5781,6 +6044,8 @@
|
|
|
5781
6044
|
};
|
|
5782
6045
|
}
|
|
5783
6046
|
|
|
6047
|
+
const VMenuSymbol = Symbol.for('vuetify:v-menu');
|
|
6048
|
+
|
|
5784
6049
|
// Utilities
|
|
5785
6050
|
|
|
5786
6051
|
const makeActivatorProps = propsFactory({
|
|
@@ -5798,9 +6063,14 @@
|
|
|
5798
6063
|
type: Boolean,
|
|
5799
6064
|
default: undefined
|
|
5800
6065
|
},
|
|
6066
|
+
closeOnContentClick: Boolean,
|
|
5801
6067
|
...makeDelayProps()
|
|
5802
6068
|
});
|
|
5803
|
-
function useActivator(props,
|
|
6069
|
+
function useActivator(props, _ref) {
|
|
6070
|
+
let {
|
|
6071
|
+
isActive,
|
|
6072
|
+
isTop
|
|
6073
|
+
} = _ref;
|
|
5804
6074
|
const activatorEl = vue.ref();
|
|
5805
6075
|
let isHovered = false;
|
|
5806
6076
|
let isFocused = false;
|
|
@@ -5810,7 +6080,7 @@
|
|
|
5810
6080
|
runOpenDelay,
|
|
5811
6081
|
runCloseDelay
|
|
5812
6082
|
} = useDelay(props, value => {
|
|
5813
|
-
if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused)) {
|
|
6083
|
+
if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {
|
|
5814
6084
|
isActive.value = value;
|
|
5815
6085
|
}
|
|
5816
6086
|
});
|
|
@@ -5861,6 +6131,37 @@
|
|
|
5861
6131
|
|
|
5862
6132
|
return events;
|
|
5863
6133
|
});
|
|
6134
|
+
const contentEvents = vue.computed(() => {
|
|
6135
|
+
const events = {};
|
|
6136
|
+
|
|
6137
|
+
if (props.openOnHover) {
|
|
6138
|
+
events.mouseenter = () => {
|
|
6139
|
+
isHovered = true;
|
|
6140
|
+
runOpenDelay();
|
|
6141
|
+
};
|
|
6142
|
+
|
|
6143
|
+
events.mouseleave = () => {
|
|
6144
|
+
isHovered = false;
|
|
6145
|
+
runCloseDelay();
|
|
6146
|
+
};
|
|
6147
|
+
}
|
|
6148
|
+
|
|
6149
|
+
if (props.closeOnContentClick) {
|
|
6150
|
+
const menu = vue.inject(VMenuSymbol, null);
|
|
6151
|
+
|
|
6152
|
+
events.click = () => {
|
|
6153
|
+
isActive.value = false;
|
|
6154
|
+
menu == null ? void 0 : menu.closeParents();
|
|
6155
|
+
};
|
|
6156
|
+
}
|
|
6157
|
+
|
|
6158
|
+
return events;
|
|
6159
|
+
});
|
|
6160
|
+
vue.watch(isTop, val => {
|
|
6161
|
+
if (val && props.openOnHover && !isHovered) {
|
|
6162
|
+
isActive.value = false;
|
|
6163
|
+
}
|
|
6164
|
+
});
|
|
5864
6165
|
const activatorRef = vue.ref();
|
|
5865
6166
|
vue.watchEffect(() => {
|
|
5866
6167
|
if (!activatorRef.value) return;
|
|
@@ -5869,14 +6170,14 @@
|
|
|
5869
6170
|
activatorEl.value = isComponentInstance(activator) ? activator.$el : activator;
|
|
5870
6171
|
});
|
|
5871
6172
|
});
|
|
6173
|
+
const vm = getCurrentInstance('useActivator');
|
|
5872
6174
|
let scope;
|
|
5873
6175
|
vue.watch(() => !!props.activator, val => {
|
|
5874
6176
|
if (val && IN_BROWSER) {
|
|
5875
6177
|
scope = vue.effectScope();
|
|
5876
6178
|
scope.run(() => {
|
|
5877
|
-
_useActivator(props, {
|
|
6179
|
+
_useActivator(props, vm, {
|
|
5878
6180
|
activatorEl,
|
|
5879
|
-
activatorRef,
|
|
5880
6181
|
activatorEvents
|
|
5881
6182
|
});
|
|
5882
6183
|
});
|
|
@@ -5890,15 +6191,16 @@
|
|
|
5890
6191
|
return {
|
|
5891
6192
|
activatorEl,
|
|
5892
6193
|
activatorRef,
|
|
5893
|
-
activatorEvents
|
|
6194
|
+
activatorEvents,
|
|
6195
|
+
contentEvents
|
|
5894
6196
|
};
|
|
5895
6197
|
}
|
|
5896
6198
|
|
|
5897
|
-
function _useActivator(props,
|
|
6199
|
+
function _useActivator(props, vm, _ref2) {
|
|
5898
6200
|
let {
|
|
5899
6201
|
activatorEl,
|
|
5900
6202
|
activatorEvents
|
|
5901
|
-
} =
|
|
6203
|
+
} = _ref2;
|
|
5902
6204
|
vue.watch(() => props.activator, (val, oldVal) => {
|
|
5903
6205
|
if (oldVal && val !== oldVal) {
|
|
5904
6206
|
const activator = getActivator(oldVal);
|
|
@@ -5924,8 +6226,8 @@
|
|
|
5924
6226
|
let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;
|
|
5925
6227
|
|
|
5926
6228
|
if (!el) return;
|
|
5927
|
-
Object.entries(activatorEvents.value).forEach(
|
|
5928
|
-
let [name, cb] =
|
|
6229
|
+
Object.entries(activatorEvents.value).forEach(_ref3 => {
|
|
6230
|
+
let [name, cb] = _ref3;
|
|
5929
6231
|
el.addEventListener(name, cb);
|
|
5930
6232
|
});
|
|
5931
6233
|
Object.keys(_props).forEach(k => {
|
|
@@ -5943,8 +6245,8 @@
|
|
|
5943
6245
|
let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;
|
|
5944
6246
|
|
|
5945
6247
|
if (!el) return;
|
|
5946
|
-
Object.entries(activatorEvents.value).forEach(
|
|
5947
|
-
let [name, cb] =
|
|
6248
|
+
Object.entries(activatorEvents.value).forEach(_ref4 => {
|
|
6249
|
+
let [name, cb] = _ref4;
|
|
5948
6250
|
el.removeEventListener(name, cb);
|
|
5949
6251
|
});
|
|
5950
6252
|
Object.keys(_props).forEach(k => {
|
|
@@ -5952,8 +6254,6 @@
|
|
|
5952
6254
|
});
|
|
5953
6255
|
}
|
|
5954
6256
|
|
|
5955
|
-
const vm = getCurrentInstance('useActivator');
|
|
5956
|
-
|
|
5957
6257
|
function getActivator() {
|
|
5958
6258
|
var _activator;
|
|
5959
6259
|
|
|
@@ -6190,6 +6490,8 @@
|
|
|
6190
6490
|
|
|
6191
6491
|
|
|
6192
6492
|
function updatePosition() {
|
|
6493
|
+
var _props$maxWidth;
|
|
6494
|
+
|
|
6193
6495
|
observe = false;
|
|
6194
6496
|
requestAnimationFrame(() => {
|
|
6195
6497
|
requestAnimationFrame(() => observe = true);
|
|
@@ -6230,13 +6532,15 @@
|
|
|
6230
6532
|
el.scrollTo(...position);
|
|
6231
6533
|
});
|
|
6232
6534
|
}
|
|
6233
|
-
const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height);
|
|
6535
|
+
const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height); // Regard undefined maxWidth as maximally occupying whole remaining space by default
|
|
6536
|
+
|
|
6537
|
+
const maxFreeSpaceWidth = props.maxWidth === undefined ? Number.MAX_VALUE : parseInt((_props$maxWidth = props.maxWidth) != null ? _props$maxWidth : 0, 10);
|
|
6234
6538
|
const viewportMargin = 12;
|
|
6235
6539
|
const freeSpace = {
|
|
6236
6540
|
top: targetBox.top - viewportMargin,
|
|
6237
6541
|
bottom: viewportHeight - targetBox.bottom - viewportMargin,
|
|
6238
|
-
left: targetBox.left - viewportMargin,
|
|
6239
|
-
right: viewportWidth - targetBox.right - viewportMargin
|
|
6542
|
+
left: Math.min(targetBox.left - viewportMargin, maxFreeSpaceWidth),
|
|
6543
|
+
right: Math.min(viewportWidth - targetBox.right - viewportMargin, maxFreeSpaceWidth)
|
|
6240
6544
|
};
|
|
6241
6545
|
const fitsY = preferredAnchor.value.side === 'bottom' && contentHeight <= freeSpace.bottom || preferredAnchor.value.side === 'top' && contentHeight <= freeSpace.top;
|
|
6242
6546
|
const anchor = fitsY ? preferredAnchor.value : preferredAnchor.value.side === 'bottom' && freeSpace.top > freeSpace.bottom || preferredAnchor.value.side === 'top' && freeSpace.bottom > freeSpace.top ? oppositeAnchor(preferredAnchor.value) : preferredAnchor.value;
|
|
@@ -6308,6 +6612,7 @@
|
|
|
6308
6612
|
// Utilities
|
|
6309
6613
|
|
|
6310
6614
|
const scrollStrategies = {
|
|
6615
|
+
none: null,
|
|
6311
6616
|
close: closeScrollStrategy,
|
|
6312
6617
|
block: blockScrollStrategy,
|
|
6313
6618
|
reposition: repositionScrollStrategy
|
|
@@ -6364,13 +6669,21 @@
|
|
|
6364
6669
|
}
|
|
6365
6670
|
|
|
6366
6671
|
scrollElements.forEach((el, i) => {
|
|
6672
|
+
el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft));
|
|
6673
|
+
el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop));
|
|
6367
6674
|
el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));
|
|
6368
6675
|
el.classList.add('v-overlay-scroll-blocked');
|
|
6369
6676
|
});
|
|
6370
6677
|
vue.onScopeDispose(() => {
|
|
6371
6678
|
scrollElements.forEach((el, i) => {
|
|
6679
|
+
const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));
|
|
6680
|
+
const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));
|
|
6681
|
+
el.style.removeProperty('--v-body-scroll-x');
|
|
6682
|
+
el.style.removeProperty('--v-body-scroll-y');
|
|
6372
6683
|
el.style.removeProperty('--v-scrollbar-offset');
|
|
6373
6684
|
el.classList.remove('v-overlay-scroll-blocked');
|
|
6685
|
+
el.scrollLeft = -x;
|
|
6686
|
+
el.scrollTop = -y;
|
|
6374
6687
|
});
|
|
6375
6688
|
|
|
6376
6689
|
if (scrollableParent) {
|
|
@@ -6500,39 +6813,14 @@
|
|
|
6500
6813
|
}, {
|
|
6501
6814
|
immediate: true
|
|
6502
6815
|
});
|
|
6503
|
-
const isTop = vue.
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
return {
|
|
6507
|
-
isTop
|
|
6508
|
-
};
|
|
6509
|
-
}
|
|
6510
|
-
|
|
6511
|
-
// Utilities
|
|
6816
|
+
const isTop = vue.ref(true);
|
|
6817
|
+
vue.watchEffect(() => {
|
|
6818
|
+
const _isTop = vue.toRaw(stack.value[stack.value.length - 1]) === vm;
|
|
6512
6819
|
|
|
6513
|
-
|
|
6514
|
-
const ROOT_ZINDEX = 2000;
|
|
6515
|
-
function useOverlay(isActive) {
|
|
6516
|
-
const {
|
|
6517
|
-
zIndex,
|
|
6518
|
-
overlays
|
|
6519
|
-
} = vue.inject(VuetifyOverlayKey, {
|
|
6520
|
-
zIndex: vue.ref(ROOT_ZINDEX),
|
|
6521
|
-
overlays: vue.ref([])
|
|
6820
|
+
setTimeout(() => isTop.value = _isTop);
|
|
6522
6821
|
});
|
|
6523
|
-
const id = getUid();
|
|
6524
|
-
vue.watch(isActive, value => {
|
|
6525
|
-
if (value) {
|
|
6526
|
-
overlays.value.push(id);
|
|
6527
|
-
} else {
|
|
6528
|
-
overlays.value = overlays.value.filter(x => x !== id);
|
|
6529
|
-
}
|
|
6530
|
-
}, {
|
|
6531
|
-
immediate: true
|
|
6532
|
-
});
|
|
6533
|
-
const overlayZIndex = vue.computed(() => zIndex.value + overlays.value.indexOf(id) + 1);
|
|
6534
6822
|
return {
|
|
6535
|
-
|
|
6823
|
+
isTop: vue.readonly(isTop)
|
|
6536
6824
|
};
|
|
6537
6825
|
}
|
|
6538
6826
|
|
|
@@ -6706,17 +6994,21 @@
|
|
|
6706
6994
|
const scrimColor = useBackgroundColor(vue.computed(() => {
|
|
6707
6995
|
return typeof props.scrim === 'string' ? props.scrim : null;
|
|
6708
6996
|
}));
|
|
6997
|
+
const {
|
|
6998
|
+
isTop
|
|
6999
|
+
} = useStack(isActive);
|
|
6709
7000
|
const {
|
|
6710
7001
|
activatorEl,
|
|
6711
7002
|
activatorRef,
|
|
6712
|
-
activatorEvents
|
|
6713
|
-
|
|
7003
|
+
activatorEvents,
|
|
7004
|
+
contentEvents
|
|
7005
|
+
} = useActivator(props, {
|
|
7006
|
+
isActive,
|
|
7007
|
+
isTop
|
|
7008
|
+
});
|
|
6714
7009
|
const {
|
|
6715
7010
|
dimensionStyles
|
|
6716
7011
|
} = useDimension(props);
|
|
6717
|
-
const {
|
|
6718
|
-
isTop
|
|
6719
|
-
} = useStack(isActive);
|
|
6720
7012
|
const root = vue.ref();
|
|
6721
7013
|
const contentEl = vue.ref();
|
|
6722
7014
|
const {
|
|
@@ -6797,9 +7089,6 @@
|
|
|
6797
7089
|
});
|
|
6798
7090
|
}
|
|
6799
7091
|
|
|
6800
|
-
const {
|
|
6801
|
-
overlayZIndex
|
|
6802
|
-
} = useOverlay(isActive);
|
|
6803
7092
|
useRender(() => {
|
|
6804
7093
|
var _slots$activator, _slots$default;
|
|
6805
7094
|
|
|
@@ -6819,8 +7108,7 @@
|
|
|
6819
7108
|
'v-overlay--contained': props.contained
|
|
6820
7109
|
}, themeClasses.value, rtlClasses.value],
|
|
6821
7110
|
"style": {
|
|
6822
|
-
top: convertToUnit(top.value)
|
|
6823
|
-
zIndex: overlayZIndex.value
|
|
7111
|
+
top: convertToUnit(top.value)
|
|
6824
7112
|
},
|
|
6825
7113
|
"ref": root
|
|
6826
7114
|
}, attrs), [vue.createVNode(Scrim, {
|
|
@@ -6836,11 +7124,11 @@
|
|
|
6836
7124
|
emit('afterLeave');
|
|
6837
7125
|
}
|
|
6838
7126
|
}, {
|
|
6839
|
-
default: () => [vue.withDirectives(vue.createVNode("div", {
|
|
7127
|
+
default: () => [vue.withDirectives(vue.createVNode("div", vue.mergeProps({
|
|
6840
7128
|
"ref": contentEl,
|
|
6841
7129
|
"class": ['v-overlay__content', props.contentClass],
|
|
6842
7130
|
"style": [dimensionStyles.value, contentStyles.value]
|
|
6843
|
-
}, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
|
|
7131
|
+
}, vue.toHandlers(contentEvents.value)), [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
|
|
6844
7132
|
isActive
|
|
6845
7133
|
})]), [[vue.vShow, isActive.value], [vue.resolveDirective("click-outside"), {
|
|
6846
7134
|
handler: onClickOutside,
|
|
@@ -6853,7 +7141,9 @@
|
|
|
6853
7141
|
return {
|
|
6854
7142
|
animateClick,
|
|
6855
7143
|
contentEl,
|
|
6856
|
-
activatorEl
|
|
7144
|
+
activatorEl,
|
|
7145
|
+
isTop,
|
|
7146
|
+
updatePosition
|
|
6857
7147
|
};
|
|
6858
7148
|
}
|
|
6859
7149
|
|
|
@@ -6864,15 +7154,7 @@
|
|
|
6864
7154
|
inheritAttrs: false,
|
|
6865
7155
|
props: {
|
|
6866
7156
|
// TODO
|
|
6867
|
-
//
|
|
6868
|
-
// type: Boolean,
|
|
6869
|
-
// default: true,
|
|
6870
|
-
// },
|
|
6871
|
-
// closeOnContentClick: {
|
|
6872
|
-
// type: Boolean,
|
|
6873
|
-
// default: true,
|
|
6874
|
-
// },
|
|
6875
|
-
disableKeys: Boolean,
|
|
7157
|
+
// disableKeys: Boolean,
|
|
6876
7158
|
modelValue: Boolean,
|
|
6877
7159
|
id: String,
|
|
6878
7160
|
...makeTransitionProps({
|
|
@@ -6893,26 +7175,62 @@
|
|
|
6893
7175
|
const isActive = useProxiedModel(props, 'modelValue');
|
|
6894
7176
|
const uid = getUid();
|
|
6895
7177
|
const id = vue.computed(() => props.id || `v-menu-${uid}`);
|
|
6896
|
-
|
|
6897
|
-
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
|
|
6906
|
-
|
|
6907
|
-
|
|
6908
|
-
|
|
6909
|
-
|
|
6910
|
-
|
|
6911
|
-
|
|
6912
|
-
|
|
6913
|
-
|
|
6914
|
-
|
|
6915
|
-
|
|
7178
|
+
const overlay = vue.ref();
|
|
7179
|
+
const parent = vue.inject(VMenuSymbol, null);
|
|
7180
|
+
let openChildren = 0;
|
|
7181
|
+
vue.provide(VMenuSymbol, {
|
|
7182
|
+
register() {
|
|
7183
|
+
++openChildren;
|
|
7184
|
+
},
|
|
7185
|
+
|
|
7186
|
+
unregister() {
|
|
7187
|
+
--openChildren;
|
|
7188
|
+
},
|
|
7189
|
+
|
|
7190
|
+
closeParents() {
|
|
7191
|
+
setTimeout(() => {
|
|
7192
|
+
if (!openChildren) {
|
|
7193
|
+
isActive.value = false;
|
|
7194
|
+
parent == null ? void 0 : parent.closeParents();
|
|
7195
|
+
}
|
|
7196
|
+
}, 40);
|
|
7197
|
+
}
|
|
7198
|
+
|
|
7199
|
+
});
|
|
7200
|
+
vue.watch(isActive, val => {
|
|
7201
|
+
val ? parent == null ? void 0 : parent.register() : parent == null ? void 0 : parent.unregister();
|
|
7202
|
+
});
|
|
7203
|
+
|
|
7204
|
+
function onClickOutside() {
|
|
7205
|
+
parent == null ? void 0 : parent.closeParents();
|
|
7206
|
+
}
|
|
7207
|
+
|
|
7208
|
+
useRender(() => vue.createVNode(VOverlay, vue.mergeProps({
|
|
7209
|
+
"ref": overlay,
|
|
7210
|
+
"modelValue": isActive.value,
|
|
7211
|
+
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
7212
|
+
"class": ['v-menu'],
|
|
7213
|
+
"transition": props.transition,
|
|
7214
|
+
"absolute": true,
|
|
7215
|
+
"closeOnContentClick": true,
|
|
7216
|
+
"positionStrategy": "connected",
|
|
7217
|
+
"scrollStrategy": "reposition",
|
|
7218
|
+
"scrim": false,
|
|
7219
|
+
"openDelay": "300",
|
|
7220
|
+
"closeDelay": "250",
|
|
7221
|
+
"activatorProps": {
|
|
7222
|
+
'aria-haspopup': 'menu',
|
|
7223
|
+
'aria-expanded': String(isActive.value),
|
|
7224
|
+
'aria-owns': id.value
|
|
7225
|
+
},
|
|
7226
|
+
"onClick:outside": onClickOutside
|
|
7227
|
+
}, attrs), {
|
|
7228
|
+
default: slots.default,
|
|
7229
|
+
activator: slots.activator
|
|
7230
|
+
}));
|
|
7231
|
+
return useForwardRef({
|
|
7232
|
+
id
|
|
7233
|
+
}, overlay);
|
|
6916
7234
|
}
|
|
6917
7235
|
|
|
6918
7236
|
});
|
|
@@ -6986,7 +7304,6 @@
|
|
|
6986
7304
|
const results = [];
|
|
6987
7305
|
let valid = true;
|
|
6988
7306
|
errorMessages.value = [];
|
|
6989
|
-
model.value = null;
|
|
6990
7307
|
isValidating.value = true;
|
|
6991
7308
|
|
|
6992
7309
|
for (const item of items.value) {
|
|
@@ -7004,7 +7321,6 @@
|
|
|
7004
7321
|
}
|
|
7005
7322
|
|
|
7006
7323
|
errorMessages.value = results;
|
|
7007
|
-
model.value = valid;
|
|
7008
7324
|
isValidating.value = false;
|
|
7009
7325
|
return {
|
|
7010
7326
|
valid,
|
|
@@ -7023,8 +7339,21 @@
|
|
|
7023
7339
|
model.value = null;
|
|
7024
7340
|
}
|
|
7025
7341
|
|
|
7342
|
+
vue.watch(items, () => {
|
|
7343
|
+
let valid = null;
|
|
7344
|
+
|
|
7345
|
+
if (items.value.some(item => item.isValid === false)) {
|
|
7346
|
+
valid = false;
|
|
7347
|
+
} else if (items.value.every(item => item.isValid === true)) {
|
|
7348
|
+
valid = true;
|
|
7349
|
+
}
|
|
7350
|
+
|
|
7351
|
+
model.value = valid;
|
|
7352
|
+
}, {
|
|
7353
|
+
deep: true
|
|
7354
|
+
});
|
|
7026
7355
|
vue.provide(FormKey, {
|
|
7027
|
-
register: (id, validate, reset, resetValidation) => {
|
|
7356
|
+
register: (id, validate, reset, resetValidation, isValid) => {
|
|
7028
7357
|
if (items.value.some(item => item.id === id)) {
|
|
7029
7358
|
consoleWarn(`Duplicate input name "${id}"`);
|
|
7030
7359
|
}
|
|
@@ -7033,7 +7362,9 @@
|
|
|
7033
7362
|
id,
|
|
7034
7363
|
validate,
|
|
7035
7364
|
reset,
|
|
7036
|
-
resetValidation
|
|
7365
|
+
resetValidation,
|
|
7366
|
+
isValid: isValid // TODO: Better way to type this unwrapping?
|
|
7367
|
+
|
|
7037
7368
|
});
|
|
7038
7369
|
},
|
|
7039
7370
|
unregister: id => {
|
|
@@ -7088,7 +7419,7 @@
|
|
|
7088
7419
|
const form = useForm();
|
|
7089
7420
|
const internalErrorMessages = vue.ref([]);
|
|
7090
7421
|
const isPristine = vue.ref(true);
|
|
7091
|
-
const isDirty = vue.computed(() => wrapInArray(model.value
|
|
7422
|
+
const isDirty = vue.computed(() => wrapInArray(model.value === '' ? null : model.value).length > 0);
|
|
7092
7423
|
const isDisabled = vue.computed(() => !!(props.disabled || form != null && form.isDisabled.value));
|
|
7093
7424
|
const isReadonly = vue.computed(() => !!(props.readonly || form != null && form.isReadonly.value));
|
|
7094
7425
|
const errorMessages = vue.computed(() => {
|
|
@@ -7113,11 +7444,14 @@
|
|
|
7113
7444
|
return (_props$name = props.name) != null ? _props$name : getUid();
|
|
7114
7445
|
});
|
|
7115
7446
|
vue.onBeforeMount(() => {
|
|
7116
|
-
form == null ? void 0 : form.register(uid.value, validate, reset, resetValidation);
|
|
7447
|
+
form == null ? void 0 : form.register(uid.value, validate, reset, resetValidation, isValid);
|
|
7117
7448
|
});
|
|
7118
7449
|
vue.onBeforeUnmount(() => {
|
|
7119
7450
|
form == null ? void 0 : form.unregister(uid.value);
|
|
7120
7451
|
});
|
|
7452
|
+
vue.watch(model, () => {
|
|
7453
|
+
if (model.value != null) validate();
|
|
7454
|
+
});
|
|
7121
7455
|
|
|
7122
7456
|
function reset() {
|
|
7123
7457
|
resetValidation();
|
|
@@ -7194,13 +7528,12 @@
|
|
|
7194
7528
|
props: { ...makeVInputProps()
|
|
7195
7529
|
},
|
|
7196
7530
|
emits: {
|
|
7197
|
-
'click:prepend': e => true,
|
|
7198
|
-
'click:append': e => true,
|
|
7199
7531
|
'update:modelValue': val => true
|
|
7200
7532
|
},
|
|
7201
7533
|
|
|
7202
7534
|
setup(props, _ref) {
|
|
7203
7535
|
let {
|
|
7536
|
+
attrs,
|
|
7204
7537
|
slots,
|
|
7205
7538
|
emit
|
|
7206
7539
|
} = _ref;
|
|
@@ -7246,14 +7579,14 @@
|
|
|
7246
7579
|
}, [hasPrepend && vue.createVNode("div", {
|
|
7247
7580
|
"class": "v-input__prepend"
|
|
7248
7581
|
}, [slots == null ? void 0 : (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value), props.prependIcon && vue.createVNode(VIcon, {
|
|
7249
|
-
"onClick":
|
|
7582
|
+
"onClick": attrs['onClick:prepend'],
|
|
7250
7583
|
"icon": props.prependIcon
|
|
7251
7584
|
}, null)]), slots.default && vue.createVNode("div", {
|
|
7252
7585
|
"class": "v-input__control"
|
|
7253
7586
|
}, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && vue.createVNode("div", {
|
|
7254
7587
|
"class": "v-input__append"
|
|
7255
7588
|
}, [slots == null ? void 0 : (_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots, slotProps.value), props.appendIcon && vue.createVNode(VIcon, {
|
|
7256
|
-
"onClick":
|
|
7589
|
+
"onClick": attrs['onClick:append'],
|
|
7257
7590
|
"icon": props.appendIcon
|
|
7258
7591
|
}, null)]), hasDetails && vue.createVNode("div", {
|
|
7259
7592
|
"class": "v-input__details"
|
|
@@ -7603,8 +7936,6 @@
|
|
|
7603
7936
|
},
|
|
7604
7937
|
emits: {
|
|
7605
7938
|
'click:clear': e => true,
|
|
7606
|
-
'click:prepend-inner': e => true,
|
|
7607
|
-
'click:append-inner': e => true,
|
|
7608
7939
|
'click:control': e => true,
|
|
7609
7940
|
'update:focused': focused => true,
|
|
7610
7941
|
'update:modelValue': val => true
|
|
@@ -7719,6 +8050,7 @@
|
|
|
7719
8050
|
'v-field--prepended': hasPrepend,
|
|
7720
8051
|
'v-field--reverse': props.reverse,
|
|
7721
8052
|
'v-field--single-line': props.singleLine,
|
|
8053
|
+
'v-field--has-label': !!label,
|
|
7722
8054
|
[`v-field--variant-${props.variant}`]: true
|
|
7723
8055
|
}, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value],
|
|
7724
8056
|
"style": [backgroundColorStyles.value, textColorStyles.value],
|
|
@@ -7734,7 +8066,7 @@
|
|
|
7734
8066
|
}), hasPrepend && vue.createVNode("div", {
|
|
7735
8067
|
"class": "v-field__prepend-inner"
|
|
7736
8068
|
}, [props.prependInnerIcon && vue.createVNode(VIcon, {
|
|
7737
|
-
"onClick":
|
|
8069
|
+
"onClick": attrs['onClick:prependInner'],
|
|
7738
8070
|
"icon": props.prependInnerIcon
|
|
7739
8071
|
}, null), slots == null ? void 0 : (_slots$prependInner = slots.prependInner) == null ? void 0 : _slots$prependInner.call(slots, slotProps.value)]), vue.createVNode("div", {
|
|
7740
8072
|
"class": "v-field__field"
|
|
@@ -7766,7 +8098,7 @@
|
|
|
7766
8098
|
}), hasAppend && vue.createVNode("div", {
|
|
7767
8099
|
"class": "v-field__append-inner"
|
|
7768
8100
|
}, [slots == null ? void 0 : (_slots$appendInner = slots.appendInner) == null ? void 0 : _slots$appendInner.call(slots, slotProps.value), props.appendInnerIcon && vue.createVNode(VIcon, {
|
|
7769
|
-
"onClick":
|
|
8101
|
+
"onClick": attrs['onClick:appendInner'],
|
|
7770
8102
|
"icon": props.appendInnerIcon
|
|
7771
8103
|
}, null)]), vue.createVNode("div", {
|
|
7772
8104
|
"class": ['v-field__outline', textColorClasses.value]
|
|
@@ -7866,13 +8198,9 @@
|
|
|
7866
8198
|
...makeVFieldProps()
|
|
7867
8199
|
},
|
|
7868
8200
|
emits: {
|
|
7869
|
-
'click:append': e => true,
|
|
7870
|
-
'click:append-inner': e => true,
|
|
7871
8201
|
'click:clear': e => true,
|
|
7872
8202
|
'click:control': e => true,
|
|
7873
8203
|
'click:input': e => true,
|
|
7874
|
-
'click:prepend': e => true,
|
|
7875
|
-
'click:prepend-inner': e => true,
|
|
7876
8204
|
'update:modelValue': val => true
|
|
7877
8205
|
},
|
|
7878
8206
|
|
|
@@ -7947,13 +8275,12 @@
|
|
|
7947
8275
|
"modelValue": model.value,
|
|
7948
8276
|
"onUpdate:modelValue": $event => model.value = $event,
|
|
7949
8277
|
"class": ['v-text-field', {
|
|
7950
|
-
'v-text-field--persistent-placeholder': props.persistentPlaceholder,
|
|
7951
8278
|
'v-text-field--prefixed': props.prefix,
|
|
7952
8279
|
'v-text-field--suffixed': props.suffix,
|
|
7953
8280
|
'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
|
|
7954
8281
|
}],
|
|
7955
|
-
"onClick:prepend":
|
|
7956
|
-
"onClick:append":
|
|
8282
|
+
"onClick:prepend": attrs['onClick:prepend'],
|
|
8283
|
+
"onClick:append": attrs['onClick:append']
|
|
7957
8284
|
}, rootAttrs, inputProps, {
|
|
7958
8285
|
"messages": messages.value
|
|
7959
8286
|
}), { ...slots,
|
|
@@ -7972,8 +8299,8 @@
|
|
|
7972
8299
|
},
|
|
7973
8300
|
"onClick:control": onControlClick,
|
|
7974
8301
|
"onClick:clear": onClear,
|
|
7975
|
-
"onClick:prependInner":
|
|
7976
|
-
"onClick:appendInner":
|
|
8302
|
+
"onClick:prependInner": attrs['onClick:prependInner'],
|
|
8303
|
+
"onClick:appendInner": attrs['onClick:prependInner'],
|
|
7977
8304
|
"role": "textbox"
|
|
7978
8305
|
}, fieldProps, {
|
|
7979
8306
|
"active": isActive.value || isDirty.value,
|
|
@@ -8001,6 +8328,7 @@
|
|
|
8001
8328
|
"autofocus": props.autofocus,
|
|
8002
8329
|
"readonly": isReadonly.value,
|
|
8003
8330
|
"disabled": isDisabled.value,
|
|
8331
|
+
"name": props.name,
|
|
8004
8332
|
"placeholder": props.placeholder,
|
|
8005
8333
|
"size": 1,
|
|
8006
8334
|
"type": props.type,
|
|
@@ -8028,6 +8356,60 @@
|
|
|
8028
8356
|
|
|
8029
8357
|
});
|
|
8030
8358
|
|
|
8359
|
+
// Utilities
|
|
8360
|
+
|
|
8361
|
+
// Composables
|
|
8362
|
+
const makeItemsProps = propsFactory({
|
|
8363
|
+
items: {
|
|
8364
|
+
type: Array,
|
|
8365
|
+
default: () => []
|
|
8366
|
+
},
|
|
8367
|
+
itemTitle: {
|
|
8368
|
+
type: [String, Array, Function],
|
|
8369
|
+
default: 'title'
|
|
8370
|
+
},
|
|
8371
|
+
itemValue: {
|
|
8372
|
+
type: [String, Array, Function],
|
|
8373
|
+
default: 'value'
|
|
8374
|
+
},
|
|
8375
|
+
itemChildren: {
|
|
8376
|
+
type: String,
|
|
8377
|
+
default: 'children'
|
|
8378
|
+
},
|
|
8379
|
+
itemProps: {
|
|
8380
|
+
type: Function,
|
|
8381
|
+
default: item => ({})
|
|
8382
|
+
}
|
|
8383
|
+
}, 'item');
|
|
8384
|
+
function transformItem(props, item) {
|
|
8385
|
+
var _props$itemProps;
|
|
8386
|
+
|
|
8387
|
+
const title = getPropertyFromItem(item, props.itemTitle, item);
|
|
8388
|
+
const value = getPropertyFromItem(item, props.itemValue, title);
|
|
8389
|
+
const children = getObjectValueByPath(item, props.itemChildren);
|
|
8390
|
+
return {
|
|
8391
|
+
title,
|
|
8392
|
+
value,
|
|
8393
|
+
children: Array.isArray(children) ? transformItems(props, children) : undefined,
|
|
8394
|
+
...((_props$itemProps = props.itemProps) == null ? void 0 : _props$itemProps.call(props, item))
|
|
8395
|
+
};
|
|
8396
|
+
}
|
|
8397
|
+
function transformItems(props, items) {
|
|
8398
|
+
const array = [];
|
|
8399
|
+
|
|
8400
|
+
for (const item of items) {
|
|
8401
|
+
array.push(transformItem(props, item));
|
|
8402
|
+
}
|
|
8403
|
+
|
|
8404
|
+
return array;
|
|
8405
|
+
}
|
|
8406
|
+
function useItems(props) {
|
|
8407
|
+
const items = vue.computed(() => transformItems(props, props.items));
|
|
8408
|
+
return {
|
|
8409
|
+
items
|
|
8410
|
+
};
|
|
8411
|
+
}
|
|
8412
|
+
|
|
8031
8413
|
const LocaleAdapterSymbol = Symbol.for('vuetify:locale-adapter');
|
|
8032
8414
|
const VuetifyLocaleSymbol = Symbol.for('vuetify:locale');
|
|
8033
8415
|
function provideLocale(props) {
|
|
@@ -8162,24 +8544,12 @@
|
|
|
8162
8544
|
};
|
|
8163
8545
|
}
|
|
8164
8546
|
|
|
8165
|
-
function genItem(item) {
|
|
8166
|
-
var _ref;
|
|
8167
|
-
|
|
8168
|
-
return {
|
|
8169
|
-
title: String((_ref = typeof item === 'object' ? item.title : item) != null ? _ref : ''),
|
|
8170
|
-
value: typeof item === 'object' ? item.value : item
|
|
8171
|
-
};
|
|
8172
|
-
}
|
|
8173
8547
|
const makeSelectProps = propsFactory({
|
|
8174
8548
|
chips: Boolean,
|
|
8175
8549
|
closableChips: Boolean,
|
|
8176
8550
|
eager: Boolean,
|
|
8177
8551
|
hideNoData: Boolean,
|
|
8178
8552
|
hideSelected: Boolean,
|
|
8179
|
-
items: {
|
|
8180
|
-
type: Array,
|
|
8181
|
-
default: () => []
|
|
8182
|
-
},
|
|
8183
8553
|
menuIcon: {
|
|
8184
8554
|
type: String,
|
|
8185
8555
|
default: '$dropdown'
|
|
@@ -8193,7 +8563,8 @@
|
|
|
8193
8563
|
type: String,
|
|
8194
8564
|
default: '$vuetify.noDataText'
|
|
8195
8565
|
},
|
|
8196
|
-
openOnClear: Boolean
|
|
8566
|
+
openOnClear: Boolean,
|
|
8567
|
+
...makeItemsProps()
|
|
8197
8568
|
}, 'select');
|
|
8198
8569
|
const VSelect = genericComponent()({
|
|
8199
8570
|
name: 'VSelect',
|
|
@@ -8206,36 +8577,21 @@
|
|
|
8206
8577
|
'update:modelValue': val => true
|
|
8207
8578
|
},
|
|
8208
8579
|
|
|
8209
|
-
setup(props,
|
|
8580
|
+
setup(props, _ref) {
|
|
8210
8581
|
let {
|
|
8211
8582
|
slots
|
|
8212
|
-
} =
|
|
8583
|
+
} = _ref;
|
|
8213
8584
|
const {
|
|
8214
8585
|
t
|
|
8215
8586
|
} = useLocale();
|
|
8216
8587
|
const vTextFieldRef = vue.ref();
|
|
8217
8588
|
const activator = vue.ref();
|
|
8218
8589
|
const menu = vue.ref(false);
|
|
8219
|
-
const
|
|
8590
|
+
const {
|
|
8591
|
+
items
|
|
8592
|
+
} = useItems(props);
|
|
8220
8593
|
const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v), v => props.multiple ? v : v[0]);
|
|
8221
|
-
const selections = vue.computed(() =>
|
|
8222
|
-
const array = [];
|
|
8223
|
-
let index = 0;
|
|
8224
|
-
|
|
8225
|
-
for (const unwrapped of model.value) {
|
|
8226
|
-
const item = genItem(unwrapped);
|
|
8227
|
-
const found = array.find(selection => selection.value === item.value);
|
|
8228
|
-
|
|
8229
|
-
if (found == null) {
|
|
8230
|
-
array.push({ ...item,
|
|
8231
|
-
index
|
|
8232
|
-
});
|
|
8233
|
-
index++;
|
|
8234
|
-
}
|
|
8235
|
-
}
|
|
8236
|
-
|
|
8237
|
-
return array;
|
|
8238
|
-
});
|
|
8594
|
+
const selections = vue.computed(() => items.value.filter(item => model.value.includes(item.value)));
|
|
8239
8595
|
const selected = vue.computed(() => selections.value.map(selection => selection.value));
|
|
8240
8596
|
|
|
8241
8597
|
function onClear(e) {
|
|
@@ -8263,12 +8619,14 @@
|
|
|
8263
8619
|
|
|
8264
8620
|
function select(item) {
|
|
8265
8621
|
if (props.multiple) {
|
|
8266
|
-
const index =
|
|
8622
|
+
const index = selected.value.findIndex(selection => selection === item.value);
|
|
8267
8623
|
|
|
8268
8624
|
if (index === -1) {
|
|
8269
|
-
model.value.
|
|
8625
|
+
model.value = [...model.value, item.value];
|
|
8270
8626
|
} else {
|
|
8271
|
-
|
|
8627
|
+
const value = [...model.value];
|
|
8628
|
+
value.splice(index, 1);
|
|
8629
|
+
model.value = value;
|
|
8272
8630
|
}
|
|
8273
8631
|
} else {
|
|
8274
8632
|
model.value = [item.value];
|
|
@@ -8297,62 +8655,64 @@
|
|
|
8297
8655
|
"modelValue": model.value.join(', '),
|
|
8298
8656
|
"onKeydown": onKeydown
|
|
8299
8657
|
}, { ...slots,
|
|
8300
|
-
default: () =>
|
|
8301
|
-
|
|
8302
|
-
|
|
8303
|
-
|
|
8304
|
-
|
|
8305
|
-
|
|
8306
|
-
|
|
8307
|
-
|
|
8308
|
-
|
|
8309
|
-
|
|
8310
|
-
"
|
|
8311
|
-
"selectStrategy": props.multiple ? 'independent' : 'single-independent'
|
|
8658
|
+
default: () => {
|
|
8659
|
+
var _slots$noData, _slots$noData2;
|
|
8660
|
+
|
|
8661
|
+
return vue.createVNode(vue.Fragment, null, [activator.value && vue.createVNode(VMenu, {
|
|
8662
|
+
"modelValue": menu.value,
|
|
8663
|
+
"onUpdate:modelValue": $event => menu.value = $event,
|
|
8664
|
+
"activator": activator.value,
|
|
8665
|
+
"contentClass": "v-select__content",
|
|
8666
|
+
"eager": props.eager,
|
|
8667
|
+
"openOnClick": false,
|
|
8668
|
+
"transition": props.transition
|
|
8312
8669
|
}, {
|
|
8313
|
-
default: () => [
|
|
8314
|
-
"
|
|
8315
|
-
|
|
8316
|
-
|
|
8317
|
-
|
|
8318
|
-
|
|
8319
|
-
|
|
8320
|
-
|
|
8321
|
-
|
|
8322
|
-
|
|
8323
|
-
|
|
8324
|
-
|
|
8325
|
-
e
|
|
8326
|
-
|
|
8327
|
-
|
|
8670
|
+
default: () => [vue.createVNode(VList, {
|
|
8671
|
+
"selected": selected.value,
|
|
8672
|
+
"selectStrategy": props.multiple ? 'independent' : 'single-independent'
|
|
8673
|
+
}, {
|
|
8674
|
+
default: () => [!items.value.length && !props.hideNoData && ((_slots$noData = (_slots$noData2 = slots['no-data']) == null ? void 0 : _slots$noData2.call(slots)) != null ? _slots$noData : vue.createVNode(VListItem, {
|
|
8675
|
+
"title": t(props.noDataText)
|
|
8676
|
+
}, null)), items.value.map(item => vue.createVNode(VListItem, vue.mergeProps(item, {
|
|
8677
|
+
"onMousedown": e => e.preventDefault(),
|
|
8678
|
+
"onClick": () => select(item)
|
|
8679
|
+
}), null))]
|
|
8680
|
+
})]
|
|
8681
|
+
}), selections.value.map((selection, index) => {
|
|
8682
|
+
function onChipClose(e) {
|
|
8683
|
+
e.stopPropagation();
|
|
8684
|
+
e.preventDefault();
|
|
8685
|
+
select(selection);
|
|
8686
|
+
}
|
|
8328
8687
|
|
|
8329
|
-
|
|
8330
|
-
|
|
8331
|
-
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8338
|
-
|
|
8339
|
-
|
|
8340
|
-
|
|
8688
|
+
const slotProps = {
|
|
8689
|
+
'onClick:close': onChipClose,
|
|
8690
|
+
modelValue: true
|
|
8691
|
+
};
|
|
8692
|
+
return vue.createVNode("div", {
|
|
8693
|
+
"class": "v-select__selection"
|
|
8694
|
+
}, [hasChips && vue.createVNode(VDefaultsProvider, {
|
|
8695
|
+
"defaults": {
|
|
8696
|
+
VChip: {
|
|
8697
|
+
closable: props.closableChips,
|
|
8698
|
+
size: 'small',
|
|
8699
|
+
text: selection.title
|
|
8700
|
+
}
|
|
8341
8701
|
}
|
|
8342
|
-
}
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8702
|
+
}, {
|
|
8703
|
+
default: () => [slots.chip ? slots.chip({
|
|
8704
|
+
props: slotProps,
|
|
8705
|
+
selection
|
|
8706
|
+
}) : vue.createVNode(VChip, slotProps, null)]
|
|
8707
|
+
}), !hasChips && (slots.selection ? slots.selection({
|
|
8346
8708
|
selection
|
|
8347
|
-
}) : vue.createVNode(
|
|
8348
|
-
|
|
8349
|
-
selection
|
|
8350
|
-
|
|
8351
|
-
|
|
8352
|
-
}
|
|
8353
|
-
|
|
8354
|
-
}, [vue.createTextVNode(",")])]))]);
|
|
8355
|
-
})])
|
|
8709
|
+
}) : vue.createVNode("span", {
|
|
8710
|
+
"class": "v-select__selection-text"
|
|
8711
|
+
}, [selection.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
8712
|
+
"class": "v-select__selection-comma"
|
|
8713
|
+
}, [vue.createTextVNode(",")])]))]);
|
|
8714
|
+
})]);
|
|
8715
|
+
}
|
|
8356
8716
|
});
|
|
8357
8717
|
});
|
|
8358
8718
|
return useForwardRef({}, vTextFieldRef);
|
|
@@ -8485,7 +8845,9 @@
|
|
|
8485
8845
|
const isFocused = vue.ref(false);
|
|
8486
8846
|
const isPristine = vue.ref(true);
|
|
8487
8847
|
const menu = vue.ref(false);
|
|
8488
|
-
const
|
|
8848
|
+
const {
|
|
8849
|
+
items
|
|
8850
|
+
} = useItems(props);
|
|
8489
8851
|
const search = useProxiedModel(props, 'search', '');
|
|
8490
8852
|
const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v || []), v => props.multiple ? v : v[0]);
|
|
8491
8853
|
const {
|
|
@@ -8496,7 +8858,7 @@
|
|
|
8496
8858
|
let index = 0;
|
|
8497
8859
|
|
|
8498
8860
|
for (const unwrapped of model.value) {
|
|
8499
|
-
const item =
|
|
8861
|
+
const item = transformItem(props, unwrapped);
|
|
8500
8862
|
const found = array.find(selection => selection.value === item.value);
|
|
8501
8863
|
|
|
8502
8864
|
if (found == null) {
|
|
@@ -8540,6 +8902,10 @@
|
|
|
8540
8902
|
}
|
|
8541
8903
|
}
|
|
8542
8904
|
|
|
8905
|
+
function onInput(e) {
|
|
8906
|
+
search.value = e.target.value;
|
|
8907
|
+
}
|
|
8908
|
+
|
|
8543
8909
|
function onAfterLeave() {
|
|
8544
8910
|
if (isFocused.value) isPristine.value = true;
|
|
8545
8911
|
}
|
|
@@ -8548,12 +8914,14 @@
|
|
|
8548
8914
|
|
|
8549
8915
|
function select(item) {
|
|
8550
8916
|
if (props.multiple) {
|
|
8551
|
-
const index =
|
|
8917
|
+
const index = selected.value.findIndex(selection => selection === item.value);
|
|
8552
8918
|
|
|
8553
8919
|
if (index === -1) {
|
|
8554
|
-
model.value.
|
|
8920
|
+
model.value = [...model.value, item.value];
|
|
8555
8921
|
} else {
|
|
8556
|
-
|
|
8922
|
+
const value = [...model.value];
|
|
8923
|
+
value.splice(index, 1);
|
|
8924
|
+
model.value = value;
|
|
8557
8925
|
}
|
|
8558
8926
|
} else {
|
|
8559
8927
|
model.value = [item.value];
|
|
@@ -8591,7 +8959,7 @@
|
|
|
8591
8959
|
return vue.createVNode(VTextField, {
|
|
8592
8960
|
"ref": vTextFieldRef,
|
|
8593
8961
|
"modelValue": search.value,
|
|
8594
|
-
"
|
|
8962
|
+
"onInput": onInput,
|
|
8595
8963
|
"class": ['v-autocomplete', {
|
|
8596
8964
|
'v-autocomplete--active-menu': menu.value,
|
|
8597
8965
|
'v-autocomplete--chips': !!props.chips,
|
|
@@ -8606,74 +8974,78 @@
|
|
|
8606
8974
|
"onBlur": () => isFocused.value = false,
|
|
8607
8975
|
"onKeydown": onKeydown
|
|
8608
8976
|
}, { ...slots,
|
|
8609
|
-
default: () =>
|
|
8610
|
-
|
|
8611
|
-
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
|
|
8615
|
-
|
|
8616
|
-
|
|
8617
|
-
|
|
8618
|
-
|
|
8619
|
-
|
|
8620
|
-
"
|
|
8621
|
-
"selectStrategy": props.multiple ? 'independent' : 'single-independent'
|
|
8977
|
+
default: () => {
|
|
8978
|
+
var _slots$noData, _slots$noData2;
|
|
8979
|
+
|
|
8980
|
+
return vue.createVNode(vue.Fragment, null, [activator.value && vue.createVNode(VMenu, {
|
|
8981
|
+
"modelValue": menu.value,
|
|
8982
|
+
"onUpdate:modelValue": $event => menu.value = $event,
|
|
8983
|
+
"activator": activator.value,
|
|
8984
|
+
"contentClass": "v-autocomplete__content",
|
|
8985
|
+
"eager": props.eager,
|
|
8986
|
+
"openOnClick": false,
|
|
8987
|
+
"transition": props.transition,
|
|
8988
|
+
"onAfterLeave": onAfterLeave
|
|
8622
8989
|
}, {
|
|
8623
|
-
default: () => [
|
|
8624
|
-
"
|
|
8625
|
-
|
|
8626
|
-
|
|
8627
|
-
|
|
8628
|
-
|
|
8629
|
-
}
|
|
8630
|
-
|
|
8631
|
-
|
|
8632
|
-
|
|
8633
|
-
|
|
8634
|
-
|
|
8635
|
-
|
|
8636
|
-
|
|
8637
|
-
|
|
8638
|
-
|
|
8639
|
-
|
|
8640
|
-
|
|
8990
|
+
default: () => [vue.createVNode(VList, {
|
|
8991
|
+
"selected": selected.value,
|
|
8992
|
+
"selectStrategy": props.multiple ? 'independent' : 'single-independent'
|
|
8993
|
+
}, {
|
|
8994
|
+
default: () => [!filteredItems.value.length && !props.hideNoData && ((_slots$noData = (_slots$noData2 = slots['no-data']) == null ? void 0 : _slots$noData2.call(slots)) != null ? _slots$noData : vue.createVNode(VListItem, {
|
|
8995
|
+
"title": t(props.noDataText)
|
|
8996
|
+
}, null)), filteredItems.value.map(_ref2 => {
|
|
8997
|
+
let {
|
|
8998
|
+
item,
|
|
8999
|
+
matches
|
|
9000
|
+
} = _ref2;
|
|
9001
|
+
return vue.createVNode(VListItem, {
|
|
9002
|
+
"value": item.value,
|
|
9003
|
+
"onMousedown": e => e.preventDefault(),
|
|
9004
|
+
"onClick": () => select(item)
|
|
9005
|
+
}, {
|
|
9006
|
+
title: () => {
|
|
9007
|
+
var _search$value$length, _search$value;
|
|
9008
|
+
|
|
9009
|
+
return isPristine.value ? item.title : highlightResult$1(item.title, matches.title, (_search$value$length = (_search$value = search.value) == null ? void 0 : _search$value.length) != null ? _search$value$length : 0);
|
|
9010
|
+
}
|
|
9011
|
+
});
|
|
9012
|
+
})]
|
|
8641
9013
|
})]
|
|
8642
|
-
})
|
|
8643
|
-
|
|
8644
|
-
|
|
8645
|
-
|
|
8646
|
-
|
|
8647
|
-
|
|
8648
|
-
}
|
|
9014
|
+
}), selections.value.map((selection, index) => {
|
|
9015
|
+
function onChipClose(e) {
|
|
9016
|
+
e.stopPropagation();
|
|
9017
|
+
e.preventDefault();
|
|
9018
|
+
select(selection);
|
|
9019
|
+
}
|
|
8649
9020
|
|
|
8650
|
-
|
|
8651
|
-
|
|
8652
|
-
|
|
8653
|
-
|
|
8654
|
-
|
|
8655
|
-
|
|
8656
|
-
|
|
8657
|
-
|
|
8658
|
-
|
|
8659
|
-
|
|
8660
|
-
|
|
8661
|
-
|
|
9021
|
+
const slotProps = {
|
|
9022
|
+
'onClick:close': onChipClose,
|
|
9023
|
+
modelValue: true
|
|
9024
|
+
};
|
|
9025
|
+
return vue.createVNode("div", {
|
|
9026
|
+
"class": "v-autocomplete__selection"
|
|
9027
|
+
}, [hasChips && vue.createVNode(VDefaultsProvider, {
|
|
9028
|
+
"defaults": {
|
|
9029
|
+
VChip: {
|
|
9030
|
+
closable: props.closableChips,
|
|
9031
|
+
size: 'small',
|
|
9032
|
+
text: selection.title
|
|
9033
|
+
}
|
|
8662
9034
|
}
|
|
8663
|
-
}
|
|
8664
|
-
|
|
8665
|
-
|
|
8666
|
-
|
|
9035
|
+
}, {
|
|
9036
|
+
default: () => [slots.chip ? slots.chip({
|
|
9037
|
+
props: slotProps,
|
|
9038
|
+
selection
|
|
9039
|
+
}) : vue.createVNode(VChip, slotProps, null)]
|
|
9040
|
+
}), !hasChips && (slots.selection ? slots.selection({
|
|
8667
9041
|
selection
|
|
8668
|
-
}) : vue.createVNode(
|
|
8669
|
-
|
|
8670
|
-
selection
|
|
8671
|
-
|
|
8672
|
-
|
|
8673
|
-
}
|
|
8674
|
-
|
|
8675
|
-
}, [vue.createTextVNode(",")])]))]);
|
|
8676
|
-
})])
|
|
9042
|
+
}) : vue.createVNode("span", {
|
|
9043
|
+
"class": "v-autocomplete__selection-text"
|
|
9044
|
+
}, [selection.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
9045
|
+
"class": "v-autocomplete__selection-comma"
|
|
9046
|
+
}, [vue.createTextVNode(",")])]))]);
|
|
9047
|
+
})]);
|
|
9048
|
+
}
|
|
8677
9049
|
});
|
|
8678
9050
|
});
|
|
8679
9051
|
return useForwardRef({
|
|
@@ -8808,7 +9180,65 @@
|
|
|
8808
9180
|
|
|
8809
9181
|
});
|
|
8810
9182
|
|
|
8811
|
-
const VBannerActions =
|
|
9183
|
+
const VBannerActions = defineComponent({
|
|
9184
|
+
name: 'VBannerActions',
|
|
9185
|
+
props: {
|
|
9186
|
+
color: String,
|
|
9187
|
+
density: String
|
|
9188
|
+
},
|
|
9189
|
+
|
|
9190
|
+
setup(props, _ref) {
|
|
9191
|
+
let {
|
|
9192
|
+
slots
|
|
9193
|
+
} = _ref;
|
|
9194
|
+
provideDefaults({
|
|
9195
|
+
VBtn: {
|
|
9196
|
+
color: props.color,
|
|
9197
|
+
density: props.density,
|
|
9198
|
+
variant: 'text'
|
|
9199
|
+
}
|
|
9200
|
+
});
|
|
9201
|
+
useRender(() => {
|
|
9202
|
+
var _slots$default;
|
|
9203
|
+
|
|
9204
|
+
return vue.createVNode("div", {
|
|
9205
|
+
"class": "v-banner-actions"
|
|
9206
|
+
}, [slots == null ? void 0 : (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]);
|
|
9207
|
+
});
|
|
9208
|
+
return {};
|
|
9209
|
+
}
|
|
9210
|
+
|
|
9211
|
+
});
|
|
9212
|
+
|
|
9213
|
+
const VBannerAvatar = defineComponent({
|
|
9214
|
+
name: 'VBannerAvatar',
|
|
9215
|
+
props: makeVAvatarProps(),
|
|
9216
|
+
|
|
9217
|
+
setup(props, _ref) {
|
|
9218
|
+
let {
|
|
9219
|
+
slots
|
|
9220
|
+
} = _ref;
|
|
9221
|
+
return () => vue.createVNode(VAvatar, vue.mergeProps({
|
|
9222
|
+
"class": "v-banner-avatar"
|
|
9223
|
+
}, props), slots);
|
|
9224
|
+
}
|
|
9225
|
+
|
|
9226
|
+
});
|
|
9227
|
+
|
|
9228
|
+
const VBannerIcon = defineComponent({
|
|
9229
|
+
name: 'VBannerIcon',
|
|
9230
|
+
props: makeVAvatarProps(),
|
|
9231
|
+
|
|
9232
|
+
setup(props, _ref) {
|
|
9233
|
+
let {
|
|
9234
|
+
slots
|
|
9235
|
+
} = _ref;
|
|
9236
|
+
return () => vue.createVNode(VAvatar, vue.mergeProps({
|
|
9237
|
+
"class": "v-banner-icon"
|
|
9238
|
+
}, props), slots);
|
|
9239
|
+
}
|
|
9240
|
+
|
|
9241
|
+
});
|
|
8812
9242
|
|
|
8813
9243
|
const VBannerText = createSimpleFunctional('v-banner-text');
|
|
8814
9244
|
|
|
@@ -8948,6 +9378,7 @@
|
|
|
8948
9378
|
color: String,
|
|
8949
9379
|
icon: String,
|
|
8950
9380
|
lines: String,
|
|
9381
|
+
stacked: Boolean,
|
|
8951
9382
|
sticky: Boolean,
|
|
8952
9383
|
text: String,
|
|
8953
9384
|
...makeBorderProps(),
|
|
@@ -8964,21 +9395,18 @@
|
|
|
8964
9395
|
let {
|
|
8965
9396
|
slots
|
|
8966
9397
|
} = _ref;
|
|
8967
|
-
const {
|
|
8968
|
-
themeClasses
|
|
8969
|
-
} = provideTheme(props);
|
|
8970
9398
|
const {
|
|
8971
9399
|
borderClasses
|
|
8972
9400
|
} = useBorder(props);
|
|
8973
9401
|
const {
|
|
8974
9402
|
densityClasses
|
|
8975
9403
|
} = useDensity(props);
|
|
8976
|
-
const {
|
|
8977
|
-
dimensionStyles
|
|
8978
|
-
} = useDimension(props);
|
|
8979
9404
|
const {
|
|
8980
9405
|
mobile
|
|
8981
9406
|
} = useDisplay();
|
|
9407
|
+
const {
|
|
9408
|
+
dimensionStyles
|
|
9409
|
+
} = useDimension(props);
|
|
8982
9410
|
const {
|
|
8983
9411
|
elevationClasses
|
|
8984
9412
|
} = useElevation(props);
|
|
@@ -8989,50 +9417,46 @@
|
|
|
8989
9417
|
const {
|
|
8990
9418
|
roundedClasses
|
|
8991
9419
|
} = useRounded(props);
|
|
9420
|
+
const {
|
|
9421
|
+
themeClasses
|
|
9422
|
+
} = provideTheme(props);
|
|
9423
|
+
const color = vue.toRef(props, 'color');
|
|
9424
|
+
const density = vue.toRef(props, 'density');
|
|
9425
|
+
provideDefaults({
|
|
9426
|
+
VBannerActions: {
|
|
9427
|
+
color,
|
|
9428
|
+
density
|
|
9429
|
+
},
|
|
9430
|
+
VBannerAvatar: {
|
|
9431
|
+
density,
|
|
9432
|
+
image: vue.toRef(props, 'avatar')
|
|
9433
|
+
},
|
|
9434
|
+
VBannerIcon: {
|
|
9435
|
+
color,
|
|
9436
|
+
density,
|
|
9437
|
+
icon: vue.toRef(props, 'icon')
|
|
9438
|
+
}
|
|
9439
|
+
});
|
|
8992
9440
|
useRender(() => {
|
|
8993
9441
|
var _slots$default;
|
|
8994
9442
|
|
|
8995
|
-
const hasAvatar = !!(props.avatar || props.icon || slots.avatar || slots.icon);
|
|
8996
9443
|
const hasText = !!(props.text || slots.text);
|
|
8997
|
-
const
|
|
9444
|
+
const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
|
|
8998
9445
|
return vue.createVNode(props.tag, {
|
|
8999
9446
|
"class": ['v-banner', {
|
|
9000
|
-
'v-banner--
|
|
9447
|
+
'v-banner--stacked': props.stacked || mobile.value,
|
|
9001
9448
|
'v-banner--sticky': props.sticky,
|
|
9002
|
-
[`v-banner--${props.lines}-line`]:
|
|
9449
|
+
[`v-banner--${props.lines}-line`]: !!props.lines
|
|
9003
9450
|
}, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value],
|
|
9004
9451
|
"style": [dimensionStyles.value, positionStyles.value],
|
|
9005
9452
|
"role": "banner"
|
|
9006
9453
|
}, {
|
|
9007
|
-
default: () => [
|
|
9008
|
-
"class": "v-
|
|
9009
|
-
}, [
|
|
9010
|
-
"defaults": {
|
|
9011
|
-
VAvatar: {
|
|
9012
|
-
color: props.color,
|
|
9013
|
-
density: props.density,
|
|
9014
|
-
icon: props.icon,
|
|
9015
|
-
image: props.avatar
|
|
9016
|
-
}
|
|
9017
|
-
}
|
|
9018
|
-
}, {
|
|
9019
|
-
default: () => [vue.createVNode("div", {
|
|
9020
|
-
"class": "v-banner__avatar"
|
|
9021
|
-
}, [slots.avatar ? slots.avatar() : vue.createVNode(VAvatar, null, null)])]
|
|
9022
|
-
}), hasText && vue.createVNode(VBannerText, null, {
|
|
9454
|
+
default: () => [hasPrepend && vue.createVNode(vue.Fragment, null, [slots.prepend ? vue.createVNode("div", {
|
|
9455
|
+
"class": "v-banner__prepend"
|
|
9456
|
+
}, [slots.prepend()]) : props.avatar ? vue.createVNode(VBannerAvatar, null, null) : props.icon ? vue.createVNode(VBannerIcon, null, null) : undefined]), hasText && vue.createVNode(VBannerText, null, {
|
|
9023
9457
|
default: () => [slots.text ? slots.text() : props.text]
|
|
9024
|
-
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)
|
|
9025
|
-
|
|
9026
|
-
VBtn: {
|
|
9027
|
-
color: props.color,
|
|
9028
|
-
density: props.density,
|
|
9029
|
-
variant: 'text'
|
|
9030
|
-
}
|
|
9031
|
-
}
|
|
9032
|
-
}, {
|
|
9033
|
-
default: () => [vue.createVNode(VBannerActions, null, {
|
|
9034
|
-
default: slots.actions
|
|
9035
|
-
})]
|
|
9458
|
+
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.actions && vue.createVNode(VBannerActions, null, {
|
|
9459
|
+
default: () => [slots.actions()]
|
|
9036
9460
|
})]
|
|
9037
9461
|
});
|
|
9038
9462
|
});
|
|
@@ -9162,30 +9586,31 @@
|
|
|
9162
9586
|
slots,
|
|
9163
9587
|
attrs
|
|
9164
9588
|
} = _ref;
|
|
9165
|
-
const
|
|
9166
|
-
|
|
9167
|
-
|
|
9168
|
-
|
|
9169
|
-
|
|
9170
|
-
|
|
9589
|
+
const link = useLink(props, attrs);
|
|
9590
|
+
const isActive = vue.computed(() => {
|
|
9591
|
+
var _link$isExactActive;
|
|
9592
|
+
|
|
9593
|
+
return props.active || ((_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value);
|
|
9594
|
+
});
|
|
9171
9595
|
const color = vue.computed(() => isActive.value ? props.activeColor : props.color);
|
|
9172
9596
|
const {
|
|
9173
9597
|
textColorClasses,
|
|
9174
9598
|
textColorStyles
|
|
9175
9599
|
} = useTextColor(color);
|
|
9176
9600
|
useRender(() => {
|
|
9177
|
-
const Tag = isLink.value ? 'a' : props.tag;
|
|
9601
|
+
const Tag = link.isLink.value ? 'a' : props.tag;
|
|
9178
9602
|
const hasText = !!(slots.default || props.text);
|
|
9179
9603
|
return vue.createVNode(Tag, {
|
|
9180
9604
|
"class": ['v-breadcrumbs-item', {
|
|
9181
9605
|
'v-breadcrumbs-item--active': isActive.value,
|
|
9182
9606
|
'v-breadcrumbs-item--disabled': props.disabled,
|
|
9183
|
-
'v-breadcrumbs-item--link': isLink.value,
|
|
9607
|
+
'v-breadcrumbs-item--link': link.isLink.value,
|
|
9184
9608
|
[`${props.activeClass}`]: isActive.value && props.activeClass
|
|
9185
9609
|
}, textColorClasses.value],
|
|
9186
9610
|
"style": [textColorStyles.value],
|
|
9611
|
+
"href": link.href.value,
|
|
9187
9612
|
"aria-current": isActive.value ? 'page' : undefined,
|
|
9188
|
-
"onClick":
|
|
9613
|
+
"onClick": link.navigate
|
|
9189
9614
|
}, {
|
|
9190
9615
|
default: hasText ? () => {
|
|
9191
9616
|
var _slots$default, _slots$default2;
|
|
@@ -9205,6 +9630,7 @@
|
|
|
9205
9630
|
name: 'VBreadcrumbs',
|
|
9206
9631
|
props: {
|
|
9207
9632
|
activeClass: String,
|
|
9633
|
+
activeColor: String,
|
|
9208
9634
|
bgColor: String,
|
|
9209
9635
|
color: String,
|
|
9210
9636
|
disabled: Boolean,
|
|
@@ -9241,6 +9667,7 @@
|
|
|
9241
9667
|
provideDefaults({
|
|
9242
9668
|
VBreadcrumbsItem: {
|
|
9243
9669
|
activeClass: vue.toRef(props, 'activeClass'),
|
|
9670
|
+
activeColor: vue.toRef(props, 'activeColor'),
|
|
9244
9671
|
color: vue.toRef(props, 'color'),
|
|
9245
9672
|
disabled: vue.toRef(props, 'disabled')
|
|
9246
9673
|
}
|
|
@@ -9286,7 +9713,7 @@
|
|
|
9286
9713
|
|
|
9287
9714
|
});
|
|
9288
9715
|
|
|
9289
|
-
const VCardActions =
|
|
9716
|
+
const VCardActions = defineComponent({
|
|
9290
9717
|
name: 'VCardActions',
|
|
9291
9718
|
|
|
9292
9719
|
setup(_, _ref) {
|
|
@@ -9312,6 +9739,8 @@
|
|
|
9312
9739
|
|
|
9313
9740
|
const VCardAvatar = createSimpleFunctional('v-card-avatar');
|
|
9314
9741
|
|
|
9742
|
+
const VCardContent = createSimpleFunctional('v-card-content');
|
|
9743
|
+
|
|
9315
9744
|
const VCardHeader = createSimpleFunctional('v-card-header');
|
|
9316
9745
|
|
|
9317
9746
|
const VCardHeaderText = createSimpleFunctional('v-card-header-text');
|
|
@@ -9391,7 +9820,7 @@
|
|
|
9391
9820
|
} = useRounded(props);
|
|
9392
9821
|
const link = useLink(props, attrs);
|
|
9393
9822
|
return () => {
|
|
9394
|
-
var _slots$image, _slots$media, _slots$default;
|
|
9823
|
+
var _slots$image, _slots$media, _slots$headerText, _slots$default;
|
|
9395
9824
|
|
|
9396
9825
|
const Tag = link.isLink.value ? 'a' : props.tag;
|
|
9397
9826
|
const hasTitle = !!(slots.title || props.title);
|
|
@@ -9445,7 +9874,7 @@
|
|
|
9445
9874
|
default: () => [slots.title ? slots.title() : props.title]
|
|
9446
9875
|
}), hasSubtitle && vue.createVNode(VCardSubtitle, null, {
|
|
9447
9876
|
default: () => [slots.subtitle ? slots.subtitle() : props.subtitle]
|
|
9448
|
-
})]
|
|
9877
|
+
}), (_slots$headerText = slots.headerText) == null ? void 0 : _slots$headerText.call(slots)]
|
|
9449
9878
|
}), hasAppend && vue.createVNode(VDefaultsProvider, {
|
|
9450
9879
|
"defaults": {
|
|
9451
9880
|
VAvatar: {
|
|
@@ -9461,6 +9890,8 @@
|
|
|
9461
9890
|
})]
|
|
9462
9891
|
}), hasText && vue.createVNode(VCardText, null, {
|
|
9463
9892
|
default: () => [slots.text ? slots.text() : props.text]
|
|
9893
|
+
}), slots.content && vue.createVNode(VCardContent, null, {
|
|
9894
|
+
default: slots.content
|
|
9464
9895
|
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.actions && vue.createVNode(VCardActions, null, {
|
|
9465
9896
|
default: slots.actions
|
|
9466
9897
|
})]
|
|
@@ -9702,13 +10133,6 @@
|
|
|
9702
10133
|
canMoveForward.value && group.next();
|
|
9703
10134
|
}
|
|
9704
10135
|
|
|
9705
|
-
provideDefaults({
|
|
9706
|
-
VBtn: {
|
|
9707
|
-
variant: 'text'
|
|
9708
|
-
}
|
|
9709
|
-
}, {
|
|
9710
|
-
scoped: true
|
|
9711
|
-
});
|
|
9712
10136
|
const arrows = vue.computed(() => {
|
|
9713
10137
|
const arrows = [];
|
|
9714
10138
|
const prevProps = {
|
|
@@ -10010,7 +10434,7 @@
|
|
|
10010
10434
|
})]), props.progress && vue.createVNode(VProgressLinear, {
|
|
10011
10435
|
"class": "v-carousel__progress",
|
|
10012
10436
|
"color": typeof props.progress === 'string' ? props.progress : undefined,
|
|
10013
|
-
"modelValue": (
|
|
10437
|
+
"modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
|
|
10014
10438
|
}, null)]);
|
|
10015
10439
|
},
|
|
10016
10440
|
prev: slots.prev,
|
|
@@ -10043,7 +10467,7 @@
|
|
|
10043
10467
|
});
|
|
10044
10468
|
|
|
10045
10469
|
const VSelectionControlGroupSymbol = Symbol.for('vuetify:selection-control-group');
|
|
10046
|
-
const VSelectionControlGroup =
|
|
10470
|
+
const VSelectionControlGroup = defineComponent({
|
|
10047
10471
|
name: 'VSelectionControlGroup',
|
|
10048
10472
|
props: {
|
|
10049
10473
|
disabled: Boolean,
|
|
@@ -10144,6 +10568,7 @@
|
|
|
10144
10568
|
},
|
|
10145
10569
|
|
|
10146
10570
|
set(val) {
|
|
10571
|
+
if (props.readonly) return;
|
|
10147
10572
|
const currentValue = val ? trueValue.value : falseValue.value;
|
|
10148
10573
|
let newVal = currentValue;
|
|
10149
10574
|
|
|
@@ -10258,7 +10683,7 @@
|
|
|
10258
10683
|
"id": id.value,
|
|
10259
10684
|
"onBlur": onBlur,
|
|
10260
10685
|
"onFocus": onFocus,
|
|
10261
|
-
"readonly": props.readonly,
|
|
10686
|
+
"aria-readonly": props.readonly,
|
|
10262
10687
|
"type": type,
|
|
10263
10688
|
"value": trueValue.value,
|
|
10264
10689
|
"name": (_group$name$value = group == null ? void 0 : group.name.value) != null ? _group$name$value : props.name,
|
|
@@ -10351,7 +10776,7 @@
|
|
|
10351
10776
|
"aria-checked": indeterminate.value ? 'mixed' : undefined,
|
|
10352
10777
|
"disabled": isDisabled.value,
|
|
10353
10778
|
"readonly": isReadonly.value
|
|
10354
|
-
}, controlAttrs),
|
|
10779
|
+
}, controlAttrs), slots);
|
|
10355
10780
|
}
|
|
10356
10781
|
});
|
|
10357
10782
|
});
|
|
@@ -10917,7 +11342,7 @@
|
|
|
10917
11342
|
return ticks.map((tick, index) => {
|
|
10918
11343
|
var _slots$tickLabel, _slots$tickLabel2;
|
|
10919
11344
|
|
|
10920
|
-
const directionProperty = vertical.value ? '
|
|
11345
|
+
const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
|
|
10921
11346
|
return vue.createVNode("div", {
|
|
10922
11347
|
"key": tick.value,
|
|
10923
11348
|
"class": ['v-slider-track__tick', {
|
|
@@ -12120,11 +12545,13 @@
|
|
|
12120
12545
|
})
|
|
12121
12546
|
},
|
|
12122
12547
|
emits: {
|
|
12123
|
-
'update:modelValue': val => true
|
|
12548
|
+
'update:modelValue': val => true,
|
|
12549
|
+
'update:searchInput': val => true
|
|
12124
12550
|
},
|
|
12125
12551
|
|
|
12126
12552
|
setup(props, _ref) {
|
|
12127
12553
|
let {
|
|
12554
|
+
emit,
|
|
12128
12555
|
slots
|
|
12129
12556
|
} = _ref;
|
|
12130
12557
|
const {
|
|
@@ -12141,7 +12568,9 @@
|
|
|
12141
12568
|
|
|
12142
12569
|
return (_vTextFieldRef$value = vTextFieldRef.value) == null ? void 0 : _vTextFieldRef$value.color;
|
|
12143
12570
|
});
|
|
12144
|
-
const
|
|
12571
|
+
const {
|
|
12572
|
+
items
|
|
12573
|
+
} = useItems(props);
|
|
12145
12574
|
const {
|
|
12146
12575
|
textColorClasses,
|
|
12147
12576
|
textColorStyles
|
|
@@ -12151,7 +12580,7 @@
|
|
|
12151
12580
|
const _search = vue.ref('');
|
|
12152
12581
|
|
|
12153
12582
|
const search = vue.computed({
|
|
12154
|
-
get: () => props.multiple ? _search.value :
|
|
12583
|
+
get: () => props.multiple ? _search.value : transformItem(props, model.value[0]).value,
|
|
12155
12584
|
set: val => {
|
|
12156
12585
|
var _props$delimiters;
|
|
12157
12586
|
|
|
@@ -12180,6 +12609,9 @@
|
|
|
12180
12609
|
isPristine.value = !val;
|
|
12181
12610
|
}
|
|
12182
12611
|
});
|
|
12612
|
+
vue.watch(_search, value => {
|
|
12613
|
+
emit('update:searchInput', value);
|
|
12614
|
+
});
|
|
12183
12615
|
const {
|
|
12184
12616
|
filteredItems
|
|
12185
12617
|
} = useFilter(props, items, vue.computed(() => isPristine.value ? undefined : search.value));
|
|
@@ -12188,7 +12620,7 @@
|
|
|
12188
12620
|
let index = 0;
|
|
12189
12621
|
|
|
12190
12622
|
for (const unwrapped of model.value) {
|
|
12191
|
-
const item =
|
|
12623
|
+
const item = transformItem(props, unwrapped);
|
|
12192
12624
|
const found = array.find(selection => selection.value === item.value);
|
|
12193
12625
|
|
|
12194
12626
|
if (found == null) {
|
|
@@ -12282,18 +12714,24 @@
|
|
|
12282
12714
|
}
|
|
12283
12715
|
}
|
|
12284
12716
|
|
|
12717
|
+
function onInput(e) {
|
|
12718
|
+
search.value = e.target.value;
|
|
12719
|
+
}
|
|
12720
|
+
|
|
12285
12721
|
function onAfterLeave() {
|
|
12286
12722
|
if (isFocused.value) isPristine.value = true;
|
|
12287
12723
|
}
|
|
12288
12724
|
|
|
12289
12725
|
function select(item) {
|
|
12290
12726
|
if (props.multiple) {
|
|
12291
|
-
const index =
|
|
12727
|
+
const index = selected.value.findIndex(selection => selection === item.value);
|
|
12292
12728
|
|
|
12293
12729
|
if (index === -1) {
|
|
12294
|
-
model.value.
|
|
12730
|
+
model.value = [...model.value, item.value];
|
|
12295
12731
|
} else {
|
|
12296
|
-
|
|
12732
|
+
const value = [...model.value];
|
|
12733
|
+
value.splice(index, 1);
|
|
12734
|
+
model.value = value;
|
|
12297
12735
|
}
|
|
12298
12736
|
|
|
12299
12737
|
search.value = '';
|
|
@@ -12319,7 +12757,7 @@
|
|
|
12319
12757
|
} else {
|
|
12320
12758
|
menu.value = false;
|
|
12321
12759
|
if (!props.multiple || !search.value) return;
|
|
12322
|
-
model.value.
|
|
12760
|
+
model.value = [...model.value, search.value];
|
|
12323
12761
|
search.value = '';
|
|
12324
12762
|
}
|
|
12325
12763
|
});
|
|
@@ -12328,7 +12766,7 @@
|
|
|
12328
12766
|
return vue.createVNode(VTextField, {
|
|
12329
12767
|
"ref": vTextFieldRef,
|
|
12330
12768
|
"modelValue": search.value,
|
|
12331
|
-
"
|
|
12769
|
+
"onInput": onInput,
|
|
12332
12770
|
"class": ['v-combobox', {
|
|
12333
12771
|
'v-combobox--active-menu': menu.value,
|
|
12334
12772
|
'v-combobox--chips': !!props.chips,
|
|
@@ -12344,75 +12782,79 @@
|
|
|
12344
12782
|
"onBlur": () => isFocused.value = false,
|
|
12345
12783
|
"onKeydown": onKeydown
|
|
12346
12784
|
}, { ...slots,
|
|
12347
|
-
default: () =>
|
|
12348
|
-
|
|
12349
|
-
|
|
12350
|
-
|
|
12351
|
-
|
|
12352
|
-
|
|
12353
|
-
|
|
12354
|
-
|
|
12355
|
-
|
|
12356
|
-
|
|
12357
|
-
|
|
12358
|
-
"
|
|
12359
|
-
"selectStrategy": props.multiple ? 'independent' : 'single-independent'
|
|
12785
|
+
default: () => {
|
|
12786
|
+
var _slots$noData, _slots$noData2;
|
|
12787
|
+
|
|
12788
|
+
return vue.createVNode(vue.Fragment, null, [activator.value && vue.createVNode(VMenu, {
|
|
12789
|
+
"modelValue": menu.value,
|
|
12790
|
+
"onUpdate:modelValue": $event => menu.value = $event,
|
|
12791
|
+
"activator": activator.value,
|
|
12792
|
+
"contentClass": "v-combobox__content",
|
|
12793
|
+
"eager": props.eager,
|
|
12794
|
+
"openOnClick": false,
|
|
12795
|
+
"transition": props.transition,
|
|
12796
|
+
"onAfterLeave": onAfterLeave
|
|
12360
12797
|
}, {
|
|
12361
|
-
default: () => [
|
|
12362
|
-
"
|
|
12363
|
-
|
|
12364
|
-
|
|
12365
|
-
|
|
12366
|
-
|
|
12367
|
-
}
|
|
12368
|
-
|
|
12369
|
-
|
|
12370
|
-
|
|
12371
|
-
|
|
12372
|
-
|
|
12373
|
-
|
|
12374
|
-
|
|
12375
|
-
|
|
12376
|
-
|
|
12377
|
-
|
|
12378
|
-
|
|
12798
|
+
default: () => [vue.createVNode(VList, {
|
|
12799
|
+
"selected": selected.value,
|
|
12800
|
+
"selectStrategy": props.multiple ? 'independent' : 'single-independent'
|
|
12801
|
+
}, {
|
|
12802
|
+
default: () => [!filteredItems.value.length && !props.hideNoData && ((_slots$noData = (_slots$noData2 = slots['no-data']) == null ? void 0 : _slots$noData2.call(slots)) != null ? _slots$noData : vue.createVNode(VListItem, {
|
|
12803
|
+
"title": t(props.noDataText)
|
|
12804
|
+
}, null)), filteredItems.value.map(_ref2 => {
|
|
12805
|
+
let {
|
|
12806
|
+
item,
|
|
12807
|
+
matches
|
|
12808
|
+
} = _ref2;
|
|
12809
|
+
return vue.createVNode(VListItem, {
|
|
12810
|
+
"value": item.value,
|
|
12811
|
+
"onMousedown": e => e.preventDefault(),
|
|
12812
|
+
"onClick": () => select(item)
|
|
12813
|
+
}, {
|
|
12814
|
+
title: () => {
|
|
12815
|
+
var _search$value$length, _search$value;
|
|
12816
|
+
|
|
12817
|
+
return isPristine.value ? item.title : highlightResult(item.title, matches.title, (_search$value$length = (_search$value = search.value) == null ? void 0 : _search$value.length) != null ? _search$value$length : 0);
|
|
12818
|
+
}
|
|
12819
|
+
});
|
|
12820
|
+
})]
|
|
12379
12821
|
})]
|
|
12380
|
-
})
|
|
12381
|
-
|
|
12382
|
-
|
|
12383
|
-
|
|
12384
|
-
|
|
12385
|
-
|
|
12386
|
-
}
|
|
12822
|
+
}), selections.value.map((selection, index) => {
|
|
12823
|
+
function onChipClose(e) {
|
|
12824
|
+
e.stopPropagation();
|
|
12825
|
+
e.preventDefault();
|
|
12826
|
+
select(selection);
|
|
12827
|
+
}
|
|
12387
12828
|
|
|
12388
|
-
|
|
12389
|
-
|
|
12390
|
-
|
|
12391
|
-
|
|
12392
|
-
|
|
12393
|
-
|
|
12394
|
-
|
|
12395
|
-
|
|
12396
|
-
|
|
12397
|
-
|
|
12398
|
-
|
|
12399
|
-
|
|
12400
|
-
|
|
12829
|
+
const slotProps = {
|
|
12830
|
+
'onClick:close': onChipClose,
|
|
12831
|
+
modelValue: true
|
|
12832
|
+
};
|
|
12833
|
+
return vue.createVNode("div", {
|
|
12834
|
+
"class": ['v-combobox__selection', selection.selected && ['v-combobox__selection--selected', textColorClasses.value]],
|
|
12835
|
+
"style": selection.selected ? textColorStyles.value : {}
|
|
12836
|
+
}, [hasChips && vue.createVNode(VDefaultsProvider, {
|
|
12837
|
+
"defaults": {
|
|
12838
|
+
VChip: {
|
|
12839
|
+
closable: props.closableChips,
|
|
12840
|
+
size: 'small',
|
|
12841
|
+
text: selection.title
|
|
12842
|
+
}
|
|
12401
12843
|
}
|
|
12402
|
-
}
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
|
|
12844
|
+
}, {
|
|
12845
|
+
default: () => [slots.chip ? slots.chip({
|
|
12846
|
+
props: slotProps,
|
|
12847
|
+
selection
|
|
12848
|
+
}) : vue.createVNode(VChip, slotProps, null)]
|
|
12849
|
+
}), !hasChips && (slots.selection ? slots.selection({
|
|
12406
12850
|
selection
|
|
12407
|
-
}) : vue.createVNode(
|
|
12408
|
-
|
|
12409
|
-
selection
|
|
12410
|
-
|
|
12411
|
-
|
|
12412
|
-
}
|
|
12413
|
-
|
|
12414
|
-
}, [vue.createTextVNode(",")])]))]);
|
|
12415
|
-
})])
|
|
12851
|
+
}) : vue.createVNode("span", {
|
|
12852
|
+
"class": "v-combobox__selection-text"
|
|
12853
|
+
}, [selection.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
12854
|
+
"class": "v-combobox__selection-comma"
|
|
12855
|
+
}, [vue.createTextVNode(",")])]))]);
|
|
12856
|
+
})]);
|
|
12857
|
+
}
|
|
12416
12858
|
});
|
|
12417
12859
|
});
|
|
12418
12860
|
return useForwardRef({
|
|
@@ -12468,19 +12910,15 @@
|
|
|
12468
12910
|
const overlay = vue.ref();
|
|
12469
12911
|
|
|
12470
12912
|
function onFocusin(e) {
|
|
12471
|
-
var _overlay$value;
|
|
12913
|
+
var _overlay$value, _overlay$value2;
|
|
12472
12914
|
|
|
12473
12915
|
const before = e.relatedTarget;
|
|
12474
12916
|
const after = e.target;
|
|
12475
12917
|
|
|
12476
|
-
if (before !== after && (_overlay$value = overlay.value) != null && _overlay$value.contentEl && //
|
|
12918
|
+
if (before !== after && (_overlay$value = overlay.value) != null && _overlay$value.contentEl && // We're the topmost dialog
|
|
12919
|
+
(_overlay$value2 = overlay.value) != null && _overlay$value2.isTop && // It isn't the document or the dialog body
|
|
12477
12920
|
![document, overlay.value.contentEl].includes(after) && // It isn't inside the dialog body
|
|
12478
|
-
!overlay.value.contentEl.contains(after)
|
|
12479
|
-
// TODO: this.activeZIndex >= this.getMaxZIndex() &&
|
|
12480
|
-
// It isn't inside a dependent element (like a menu)
|
|
12481
|
-
// TODO: !this.getOpenDependentElements().some(el => el.contains(target))
|
|
12482
|
-
// So we must have focused something outside the dialog and its children
|
|
12483
|
-
) {
|
|
12921
|
+
!overlay.value.contentEl.contains(after)) {
|
|
12484
12922
|
const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
|
|
12485
12923
|
if (!focusable.length) return;
|
|
12486
12924
|
const firstElement = focusable[0];
|
|
@@ -12524,7 +12962,8 @@
|
|
|
12524
12962
|
"modelValue": isActive.value,
|
|
12525
12963
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
12526
12964
|
"class": ['v-dialog', {
|
|
12527
|
-
'v-dialog--fullscreen': props.fullscreen
|
|
12965
|
+
'v-dialog--fullscreen': props.fullscreen,
|
|
12966
|
+
'v-dialog--scrollable': props.scrollable
|
|
12528
12967
|
}],
|
|
12529
12968
|
"style": dimensionStyles.value,
|
|
12530
12969
|
"transition": props.transition,
|
|
@@ -12555,6 +12994,7 @@
|
|
|
12555
12994
|
default: 'default',
|
|
12556
12995
|
validator: v => allowedVariants.includes(v)
|
|
12557
12996
|
},
|
|
12997
|
+
readonly: Boolean,
|
|
12558
12998
|
...makeGroupProps(),
|
|
12559
12999
|
...makeTagProps(),
|
|
12560
13000
|
...makeThemeProps()
|
|
@@ -12575,6 +13015,9 @@
|
|
|
12575
13015
|
provideDefaults({
|
|
12576
13016
|
VExpansionPanel: {
|
|
12577
13017
|
color: vue.toRef(props, 'color')
|
|
13018
|
+
},
|
|
13019
|
+
VExpansionPanelTitle: {
|
|
13020
|
+
readonly: vue.toRef(props, 'readonly')
|
|
12578
13021
|
}
|
|
12579
13022
|
});
|
|
12580
13023
|
useRender(() => vue.createVNode(props.tag, {
|
|
@@ -12599,7 +13042,8 @@
|
|
|
12599
13042
|
ripple: {
|
|
12600
13043
|
type: [Boolean, Object],
|
|
12601
13044
|
default: false
|
|
12602
|
-
}
|
|
13045
|
+
},
|
|
13046
|
+
readonly: Boolean
|
|
12603
13047
|
});
|
|
12604
13048
|
const VExpansionPanelTitle = defineComponent({
|
|
12605
13049
|
name: 'VExpansionPanelTitle',
|
|
@@ -12623,7 +13067,8 @@
|
|
|
12623
13067
|
collapseIcon: props.collapseIcon,
|
|
12624
13068
|
disabled: expansionPanel.disabled.value,
|
|
12625
13069
|
expanded: expansionPanel.isSelected.value,
|
|
12626
|
-
expandIcon: props.expandIcon
|
|
13070
|
+
expandIcon: props.expandIcon,
|
|
13071
|
+
readonly: props.readonly
|
|
12627
13072
|
}));
|
|
12628
13073
|
useRender(() => {
|
|
12629
13074
|
var _slots$default;
|
|
@@ -12637,7 +13082,7 @@
|
|
|
12637
13082
|
"tabindex": expansionPanel.disabled.value ? -1 : undefined,
|
|
12638
13083
|
"disabled": expansionPanel.disabled.value,
|
|
12639
13084
|
"aria-expanded": expansionPanel.isSelected.value,
|
|
12640
|
-
"onClick": expansionPanel.toggle
|
|
13085
|
+
"onClick": !props.readonly ? expansionPanel.toggle : undefined
|
|
12641
13086
|
}, [vue.createVNode("div", {
|
|
12642
13087
|
"class": "v-expansion-panel-title__overlay"
|
|
12643
13088
|
}, null), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value), !props.hideActions && vue.createVNode("div", {
|
|
@@ -12714,13 +13159,17 @@
|
|
|
12714
13159
|
roundedClasses
|
|
12715
13160
|
} = useRounded(props);
|
|
12716
13161
|
const isDisabled = vue.computed(() => (groupItem == null ? void 0 : groupItem.disabled.value) || props.disabled);
|
|
13162
|
+
const selectedIndices = vue.computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
|
|
13163
|
+
if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
|
|
13164
|
+
return arr;
|
|
13165
|
+
}, []));
|
|
12717
13166
|
const isBeforeSelected = vue.computed(() => {
|
|
12718
13167
|
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
|
12719
|
-
return !groupItem.isSelected.value &&
|
|
13168
|
+
return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === 1);
|
|
12720
13169
|
});
|
|
12721
13170
|
const isAfterSelected = vue.computed(() => {
|
|
12722
13171
|
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
|
12723
|
-
return !groupItem.isSelected.value &&
|
|
13172
|
+
return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === -1);
|
|
12724
13173
|
});
|
|
12725
13174
|
vue.provide(VExpansionPanelSymbol, groupItem);
|
|
12726
13175
|
useRender(() => {
|
|
@@ -12888,7 +13337,7 @@
|
|
|
12888
13337
|
}
|
|
12889
13338
|
|
|
12890
13339
|
useRender(() => {
|
|
12891
|
-
const hasCounter = !!(slots.counter || props.counter
|
|
13340
|
+
const hasCounter = !!(slots.counter || props.counter);
|
|
12892
13341
|
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
|
12893
13342
|
const [{
|
|
12894
13343
|
modelValue: _,
|
|
@@ -12966,6 +13415,7 @@
|
|
|
12966
13415
|
});
|
|
12967
13416
|
},
|
|
12968
13417
|
details: hasCounter ? () => vue.createVNode(vue.Fragment, null, [vue.createVNode("span", null, null), vue.createVNode(VCounter, {
|
|
13418
|
+
"active": !!model.value.length,
|
|
12969
13419
|
"value": counterValue.value
|
|
12970
13420
|
}, slots.counter)]) : undefined
|
|
12971
13421
|
});
|
|
@@ -12978,11 +13428,15 @@
|
|
|
12978
13428
|
const VFooter = defineComponent({
|
|
12979
13429
|
name: 'VFooter',
|
|
12980
13430
|
props: {
|
|
13431
|
+
app: Boolean,
|
|
12981
13432
|
color: String,
|
|
13433
|
+
height: {
|
|
13434
|
+
type: [Number, String],
|
|
13435
|
+
default: 'auto'
|
|
13436
|
+
},
|
|
12982
13437
|
...makeBorderProps(),
|
|
12983
|
-
...makeDimensionProps(),
|
|
12984
13438
|
...makeElevationProps(),
|
|
12985
|
-
...
|
|
13439
|
+
...makeLayoutItemProps(),
|
|
12986
13440
|
...makeRoundedProps(),
|
|
12987
13441
|
...makeTagProps({
|
|
12988
13442
|
tag: 'footer'
|
|
@@ -13004,22 +13458,35 @@
|
|
|
13004
13458
|
const {
|
|
13005
13459
|
borderClasses
|
|
13006
13460
|
} = useBorder(props);
|
|
13007
|
-
const {
|
|
13008
|
-
dimensionStyles
|
|
13009
|
-
} = useDimension(props);
|
|
13010
13461
|
const {
|
|
13011
13462
|
elevationClasses
|
|
13012
13463
|
} = useElevation(props);
|
|
13013
13464
|
const {
|
|
13014
|
-
|
|
13015
|
-
|
|
13016
|
-
|
|
13465
|
+
roundedClasses
|
|
13466
|
+
} = useRounded(props);
|
|
13467
|
+
const autoHeight = vue.ref(32);
|
|
13468
|
+
const {
|
|
13469
|
+
resizeRef
|
|
13470
|
+
} = useResizeObserver(entries => {
|
|
13471
|
+
if (!entries.length) return;
|
|
13472
|
+
autoHeight.value = entries[0].target.clientHeight;
|
|
13473
|
+
});
|
|
13474
|
+
const height = vue.computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10));
|
|
13017
13475
|
const {
|
|
13018
|
-
|
|
13019
|
-
} =
|
|
13476
|
+
layoutItemStyles
|
|
13477
|
+
} = useLayoutItem({
|
|
13478
|
+
id: props.name,
|
|
13479
|
+
priority: vue.computed(() => parseInt(props.priority, 10)),
|
|
13480
|
+
position: vue.computed(() => 'bottom'),
|
|
13481
|
+
layoutSize: height,
|
|
13482
|
+
elementSize: vue.computed(() => props.height === 'auto' ? undefined : height.value),
|
|
13483
|
+
active: vue.computed(() => props.app),
|
|
13484
|
+
absolute: vue.toRef(props, 'absolute')
|
|
13485
|
+
});
|
|
13020
13486
|
return () => vue.createVNode(props.tag, {
|
|
13021
|
-
"
|
|
13022
|
-
"
|
|
13487
|
+
"ref": resizeRef,
|
|
13488
|
+
"class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
|
|
13489
|
+
"style": [backgroundColorStyles, props.app ? layoutItemStyles.value : undefined]
|
|
13023
13490
|
}, slots);
|
|
13024
13491
|
}
|
|
13025
13492
|
|
|
@@ -13047,17 +13514,29 @@
|
|
|
13047
13514
|
form.reset();
|
|
13048
13515
|
}
|
|
13049
13516
|
|
|
13050
|
-
function onSubmit(
|
|
13051
|
-
e
|
|
13052
|
-
form.validate()
|
|
13053
|
-
|
|
13054
|
-
|
|
13055
|
-
|
|
13517
|
+
function onSubmit(_e) {
|
|
13518
|
+
const e = _e;
|
|
13519
|
+
const ready = form.validate();
|
|
13520
|
+
e.then = ready.then.bind(ready);
|
|
13521
|
+
e.catch = ready.catch.bind(ready);
|
|
13522
|
+
e.finally = ready.finally.bind(ready);
|
|
13523
|
+
emit('submit', e);
|
|
13056
13524
|
|
|
13057
|
-
|
|
13058
|
-
|
|
13059
|
-
|
|
13060
|
-
|
|
13525
|
+
if (!e.defaultPrevented) {
|
|
13526
|
+
ready.then(_ref2 => {
|
|
13527
|
+
let {
|
|
13528
|
+
valid
|
|
13529
|
+
} = _ref2;
|
|
13530
|
+
|
|
13531
|
+
if (valid) {
|
|
13532
|
+
var _formRef$value;
|
|
13533
|
+
|
|
13534
|
+
(_formRef$value = formRef.value) == null ? void 0 : _formRef$value.submit();
|
|
13535
|
+
}
|
|
13536
|
+
});
|
|
13537
|
+
}
|
|
13538
|
+
|
|
13539
|
+
e.preventDefault();
|
|
13061
13540
|
}
|
|
13062
13541
|
|
|
13063
13542
|
useRender(() => {
|
|
@@ -13071,7 +13550,7 @@
|
|
|
13071
13550
|
"onSubmit": onSubmit
|
|
13072
13551
|
}, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, form)]);
|
|
13073
13552
|
});
|
|
13074
|
-
return form;
|
|
13553
|
+
return useForwardRef(form, formRef);
|
|
13075
13554
|
}
|
|
13076
13555
|
|
|
13077
13556
|
});
|
|
@@ -14030,7 +14509,7 @@
|
|
|
14030
14509
|
roundedClasses
|
|
14031
14510
|
} = useRounded(props);
|
|
14032
14511
|
const router = useRouter();
|
|
14033
|
-
const isActive = useProxiedModel(props, 'modelValue');
|
|
14512
|
+
const isActive = useProxiedModel(props, 'modelValue', null, v => !!v);
|
|
14034
14513
|
const isHovering = vue.ref(false);
|
|
14035
14514
|
const width = vue.computed(() => {
|
|
14036
14515
|
return props.rail && props.expandOnHover && isHovering.value ? Number(props.width) : Number(props.rail ? props.railWidth : props.width);
|
|
@@ -14319,27 +14798,25 @@
|
|
|
14319
14798
|
});
|
|
14320
14799
|
const range = vue.computed(() => {
|
|
14321
14800
|
if (length.value <= 0) return [];
|
|
14801
|
+
if (totalVisible.value <= 2) return [page.value];
|
|
14322
14802
|
|
|
14323
|
-
if (
|
|
14324
|
-
return [Math.min(Math.max(start.value, page.value), start.value + length.value)];
|
|
14325
|
-
}
|
|
14326
|
-
|
|
14327
|
-
if (props.length <= totalVisible.value) {
|
|
14803
|
+
if (length.value <= totalVisible.value) {
|
|
14328
14804
|
return createRange(length.value, start.value);
|
|
14329
14805
|
}
|
|
14330
14806
|
|
|
14331
|
-
const
|
|
14332
|
-
const
|
|
14807
|
+
const even = totalVisible.value % 2 === 0;
|
|
14808
|
+
const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2);
|
|
14809
|
+
const left = even ? middle : middle + 1;
|
|
14333
14810
|
const right = length.value - middle;
|
|
14334
14811
|
|
|
14335
|
-
if (page.value
|
|
14336
|
-
return [...createRange(Math.max(1, totalVisible.value -
|
|
14337
|
-
} else if (page.value
|
|
14338
|
-
const rangeLength = totalVisible.value -
|
|
14812
|
+
if (left - page.value >= 0) {
|
|
14813
|
+
return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value];
|
|
14814
|
+
} else if (page.value - right >= 0) {
|
|
14815
|
+
const rangeLength = totalVisible.value - 1;
|
|
14339
14816
|
const rangeStart = length.value - rangeLength + start.value;
|
|
14340
14817
|
return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)];
|
|
14341
14818
|
} else {
|
|
14342
|
-
const rangeLength = Math.max(1, totalVisible.value -
|
|
14819
|
+
const rangeLength = Math.max(1, totalVisible.value - 3);
|
|
14343
14820
|
const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value;
|
|
14344
14821
|
return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value];
|
|
14345
14822
|
}
|
|
@@ -14682,7 +15159,7 @@
|
|
|
14682
15159
|
|
|
14683
15160
|
});
|
|
14684
15161
|
|
|
14685
|
-
const VRadio =
|
|
15162
|
+
const VRadio = defineComponent({
|
|
14686
15163
|
name: 'VRadio',
|
|
14687
15164
|
props: {
|
|
14688
15165
|
falseIcon: {
|
|
@@ -14710,7 +15187,7 @@
|
|
|
14710
15187
|
|
|
14711
15188
|
});
|
|
14712
15189
|
|
|
14713
|
-
const VRadioGroup =
|
|
15190
|
+
const VRadioGroup = defineComponent({
|
|
14714
15191
|
name: 'VRadioGroup',
|
|
14715
15192
|
inheritAttrs: false,
|
|
14716
15193
|
props: {
|
|
@@ -14779,7 +15256,7 @@
|
|
|
14779
15256
|
|
|
14780
15257
|
});
|
|
14781
15258
|
|
|
14782
|
-
const VRangeSlider =
|
|
15259
|
+
const VRangeSlider = defineComponent({
|
|
14783
15260
|
name: 'VRangeSlider',
|
|
14784
15261
|
props: { ...makeFocusProps(),
|
|
14785
15262
|
...makeVInputProps(),
|
|
@@ -15166,6 +15643,12 @@
|
|
|
15166
15643
|
}, null)]);
|
|
15167
15644
|
}
|
|
15168
15645
|
|
|
15646
|
+
function createLabel(labelProps) {
|
|
15647
|
+
if (slots['item-label']) return slots['item-label'](labelProps);
|
|
15648
|
+
if (labelProps.label) return vue.createVNode("span", null, [labelProps.label]);
|
|
15649
|
+
return vue.createVNode("span", null, [vue.createTextVNode("\xA0")]);
|
|
15650
|
+
}
|
|
15651
|
+
|
|
15169
15652
|
return () => {
|
|
15170
15653
|
var _props$itemLabels;
|
|
15171
15654
|
|
|
@@ -15185,11 +15668,11 @@
|
|
|
15185
15668
|
|
|
15186
15669
|
return vue.createVNode("div", {
|
|
15187
15670
|
"class": "v-rating__wrapper"
|
|
15188
|
-
}, [
|
|
15671
|
+
}, [hasLabels && props.itemLabelPosition === 'top' ? createLabel({
|
|
15189
15672
|
value,
|
|
15190
15673
|
index: i,
|
|
15191
15674
|
label: (_props$itemLabels2 = props.itemLabels) == null ? void 0 : _props$itemLabels2[i]
|
|
15192
|
-
}) :
|
|
15675
|
+
}) : undefined, vue.createVNode("div", {
|
|
15193
15676
|
"class": ['v-rating__item', {
|
|
15194
15677
|
'v-rating__item--focused': Math.ceil(focusIndex.value) === value
|
|
15195
15678
|
}]
|
|
@@ -15202,7 +15685,11 @@
|
|
|
15202
15685
|
}, null)]) : vue.createVNode(VRatingItem, {
|
|
15203
15686
|
"value": value,
|
|
15204
15687
|
"index": i
|
|
15205
|
-
}, null)])
|
|
15688
|
+
}, null)]), hasLabels && props.itemLabelPosition === 'bottom' ? createLabel({
|
|
15689
|
+
value,
|
|
15690
|
+
index: i,
|
|
15691
|
+
label: (_props$itemLabels3 = props.itemLabels) == null ? void 0 : _props$itemLabels3[i]
|
|
15692
|
+
}) : undefined]);
|
|
15206
15693
|
})]
|
|
15207
15694
|
});
|
|
15208
15695
|
};
|
|
@@ -15268,10 +15755,6 @@
|
|
|
15268
15755
|
const VSlideGroup = defineComponent({
|
|
15269
15756
|
name: 'VSlideGroup',
|
|
15270
15757
|
props: {
|
|
15271
|
-
activeClass: {
|
|
15272
|
-
type: String,
|
|
15273
|
-
default: 'v-slide-item--active'
|
|
15274
|
-
},
|
|
15275
15758
|
centerActive: Boolean,
|
|
15276
15759
|
direction: {
|
|
15277
15760
|
type: String,
|
|
@@ -15294,7 +15777,9 @@
|
|
|
15294
15777
|
validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
|
|
15295
15778
|
},
|
|
15296
15779
|
...makeTagProps(),
|
|
15297
|
-
...makeGroupProps(
|
|
15780
|
+
...makeGroupProps({
|
|
15781
|
+
selectedClass: 'v-slide-group-item--active'
|
|
15782
|
+
})
|
|
15298
15783
|
},
|
|
15299
15784
|
emits: {
|
|
15300
15785
|
'update:modelValue': value => true
|
|
@@ -15320,21 +15805,31 @@
|
|
|
15320
15805
|
resizeRef: containerRef,
|
|
15321
15806
|
contentRect: containerRect
|
|
15322
15807
|
} = useResizeObserver();
|
|
15323
|
-
const
|
|
15808
|
+
const {
|
|
15809
|
+
resizeRef: contentRef,
|
|
15810
|
+
contentRect
|
|
15811
|
+
} = useResizeObserver();
|
|
15324
15812
|
vue.watchEffect(() => {
|
|
15325
|
-
if (!containerRect.value || !
|
|
15813
|
+
if (!containerRect.value || !contentRect.value) return;
|
|
15326
15814
|
const sizeProperty = isHorizontal.value ? 'width' : 'height';
|
|
15327
15815
|
containerSize.value = containerRect.value[sizeProperty];
|
|
15328
|
-
contentSize.value =
|
|
15816
|
+
contentSize.value = contentRect.value[sizeProperty];
|
|
15329
15817
|
isOverflowing.value = containerSize.value + 1 < contentSize.value;
|
|
15330
15818
|
});
|
|
15331
|
-
vue.
|
|
15332
|
-
if (!selected.length
|
|
15333
|
-
|
|
15819
|
+
const firstSelectedIndex = vue.computed(() => {
|
|
15820
|
+
if (!group.selected.value.length) return -1;
|
|
15821
|
+
return group.items.value.findIndex(item => item.id === group.selected.value[0]);
|
|
15822
|
+
});
|
|
15823
|
+
const lastSelectedIndex = vue.computed(() => {
|
|
15824
|
+
if (!group.selected.value.length) return -1;
|
|
15825
|
+
return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1]);
|
|
15826
|
+
});
|
|
15827
|
+
vue.watch(group.selected, () => {
|
|
15828
|
+
if (firstSelectedIndex.value < 0 || !contentRef.value) return; // TODO: Is this too naive? Should we store element references in group composable?
|
|
15334
15829
|
|
|
15335
|
-
const selectedElement = contentRef.value.children[
|
|
15830
|
+
const selectedElement = contentRef.value.children[lastSelectedIndex.value];
|
|
15336
15831
|
|
|
15337
|
-
if (
|
|
15832
|
+
if (firstSelectedIndex.value === 0 || !isOverflowing.value) {
|
|
15338
15833
|
scrollOffset.value = 0;
|
|
15339
15834
|
} else if (props.centerActive) {
|
|
15340
15835
|
scrollOffset.value = calculateCenteredOffset({
|
|
@@ -15355,6 +15850,20 @@
|
|
|
15355
15850
|
});
|
|
15356
15851
|
}
|
|
15357
15852
|
});
|
|
15853
|
+
let firstOverflow = true;
|
|
15854
|
+
vue.watch(isOverflowing, () => {
|
|
15855
|
+
if (!firstOverflow || !contentRef.value || firstSelectedIndex.value < 0) return;
|
|
15856
|
+
firstOverflow = false; // TODO: Is this too naive? Should we store element references in group composable?
|
|
15857
|
+
|
|
15858
|
+
const selectedElement = contentRef.value.children[firstSelectedIndex.value];
|
|
15859
|
+
scrollOffset.value = calculateCenteredOffset({
|
|
15860
|
+
selectedElement,
|
|
15861
|
+
containerSize: containerSize.value,
|
|
15862
|
+
contentSize: contentSize.value,
|
|
15863
|
+
isRtl: isRtl.value,
|
|
15864
|
+
isHorizontal: isHorizontal.value
|
|
15865
|
+
});
|
|
15866
|
+
});
|
|
15358
15867
|
const disableTransition = vue.ref(false);
|
|
15359
15868
|
let startTouch = 0;
|
|
15360
15869
|
let startOffset = 0;
|
|
@@ -15502,7 +16011,7 @@
|
|
|
15502
16011
|
// Always show arrows on desktop
|
|
15503
16012
|
|
|
15504
16013
|
case 'desktop':
|
|
15505
|
-
return mobile.value;
|
|
16014
|
+
return !mobile.value;
|
|
15506
16015
|
// Show arrows on mobile when overflowing.
|
|
15507
16016
|
// This matches the default 2.2 behavior
|
|
15508
16017
|
|
|
@@ -15601,7 +16110,9 @@
|
|
|
15601
16110
|
|
|
15602
16111
|
return (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
|
|
15603
16112
|
isSelected: slideGroupItem.isSelected.value,
|
|
15604
|
-
select: slideGroupItem.select
|
|
16113
|
+
select: slideGroupItem.select,
|
|
16114
|
+
toggle: slideGroupItem.toggle,
|
|
16115
|
+
selectedClass: slideGroupItem.selectedClass.value
|
|
15605
16116
|
});
|
|
15606
16117
|
};
|
|
15607
16118
|
}
|
|
@@ -15625,6 +16136,7 @@
|
|
|
15625
16136
|
vertical: Boolean,
|
|
15626
16137
|
modelValue: Boolean,
|
|
15627
16138
|
...makePositionProps(),
|
|
16139
|
+
...makeRoundedProps(),
|
|
15628
16140
|
...makeVariantProps(),
|
|
15629
16141
|
...makeTransitionProps({
|
|
15630
16142
|
transition: 'v-snackbar-transition'
|
|
@@ -15648,6 +16160,9 @@
|
|
|
15648
16160
|
colorStyles,
|
|
15649
16161
|
variantClasses
|
|
15650
16162
|
} = useVariant(props);
|
|
16163
|
+
const {
|
|
16164
|
+
roundedClasses
|
|
16165
|
+
} = useRounded(props);
|
|
15651
16166
|
vue.watch(isActive, startTimeout);
|
|
15652
16167
|
vue.watch(() => props.timeout, startTimeout);
|
|
15653
16168
|
vue.onMounted(() => {
|
|
@@ -15671,7 +16186,9 @@
|
|
|
15671
16186
|
useRender(() => {
|
|
15672
16187
|
var _slots$default, _slots$actions;
|
|
15673
16188
|
|
|
15674
|
-
return vue.createVNode(
|
|
16189
|
+
return vue.createVNode(VOverlay, {
|
|
16190
|
+
"modelValue": isActive.value,
|
|
16191
|
+
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
15675
16192
|
"class": ['v-snackbar', {
|
|
15676
16193
|
'v-snackbar--active': isActive.value,
|
|
15677
16194
|
'v-snackbar--bottom': props.bottom || !props.top,
|
|
@@ -15682,12 +16199,15 @@
|
|
|
15682
16199
|
'v-snackbar--top': props.top,
|
|
15683
16200
|
'v-snackbar--vertical': props.vertical
|
|
15684
16201
|
}, positionClasses.value],
|
|
15685
|
-
"style": [colorStyles.value, positionStyles.value]
|
|
15686
|
-
|
|
16202
|
+
"style": [colorStyles.value, positionStyles.value],
|
|
16203
|
+
"persistent": true,
|
|
16204
|
+
"noClickAnimation": true,
|
|
16205
|
+
"scrim": false,
|
|
16206
|
+
"scrollStrategy": "none",
|
|
15687
16207
|
"transition": props.transition
|
|
15688
16208
|
}, {
|
|
15689
|
-
default: () => [vue.
|
|
15690
|
-
"class": ['v-snackbar__wrapper', colorClasses.value, variantClasses.value],
|
|
16209
|
+
default: () => [vue.createVNode("div", {
|
|
16210
|
+
"class": ['v-snackbar__wrapper', colorClasses.value, roundedClasses.value, variantClasses.value],
|
|
15691
16211
|
"onPointerenter": onPointerenter,
|
|
15692
16212
|
"onPointerleave": startTimeout
|
|
15693
16213
|
}, [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
|
|
@@ -15705,21 +16225,25 @@
|
|
|
15705
16225
|
default: () => [vue.createVNode("div", {
|
|
15706
16226
|
"class": "v-snackbar__actions"
|
|
15707
16227
|
}, [(_slots$actions = slots.actions) == null ? void 0 : _slots$actions.call(slots)])]
|
|
15708
|
-
})]),
|
|
15709
|
-
|
|
16228
|
+
})])],
|
|
16229
|
+
activator: slots.activator
|
|
16230
|
+
});
|
|
15710
16231
|
});
|
|
15711
16232
|
}
|
|
15712
16233
|
|
|
15713
16234
|
});
|
|
15714
16235
|
|
|
15715
|
-
const VSwitch =
|
|
16236
|
+
const VSwitch = defineComponent({
|
|
15716
16237
|
name: 'VSwitch',
|
|
15717
16238
|
inheritAttrs: false,
|
|
15718
16239
|
props: {
|
|
15719
16240
|
indeterminate: Boolean,
|
|
15720
16241
|
inset: Boolean,
|
|
15721
16242
|
flat: Boolean,
|
|
15722
|
-
|
|
16243
|
+
loading: {
|
|
16244
|
+
type: [Boolean, String],
|
|
16245
|
+
default: false
|
|
16246
|
+
},
|
|
15723
16247
|
...makeVInputProps(),
|
|
15724
16248
|
...makeSelectionControlProps()
|
|
15725
16249
|
},
|
|
@@ -15779,7 +16303,7 @@
|
|
|
15779
16303
|
"aria-checked": indeterminate.value ? 'mixed' : undefined,
|
|
15780
16304
|
"disabled": isDisabled.value,
|
|
15781
16305
|
"readonly": isReadonly.value
|
|
15782
|
-
}, controlAttrs), {
|
|
16306
|
+
}, controlAttrs), { ...slots,
|
|
15783
16307
|
default: () => vue.createVNode("div", {
|
|
15784
16308
|
"class": "v-switch__track",
|
|
15785
16309
|
"onClick": onClick
|
|
@@ -15817,10 +16341,10 @@
|
|
|
15817
16341
|
name: 'VSystemBar',
|
|
15818
16342
|
props: {
|
|
15819
16343
|
color: String,
|
|
16344
|
+
height: [Number, String],
|
|
15820
16345
|
window: Boolean,
|
|
15821
|
-
...makeDimensionProps(),
|
|
15822
16346
|
...makeElevationProps(),
|
|
15823
|
-
...
|
|
16347
|
+
...makeLayoutItemProps(),
|
|
15824
16348
|
...makeRoundedProps(),
|
|
15825
16349
|
...makeTagProps(),
|
|
15826
16350
|
...makeThemeProps()
|
|
@@ -15837,29 +16361,48 @@
|
|
|
15837
16361
|
backgroundColorClasses,
|
|
15838
16362
|
backgroundColorStyles
|
|
15839
16363
|
} = useBackgroundColor(vue.toRef(props, 'color'));
|
|
15840
|
-
const {
|
|
15841
|
-
dimensionStyles
|
|
15842
|
-
} = useDimension(props);
|
|
15843
16364
|
const {
|
|
15844
16365
|
elevationClasses
|
|
15845
16366
|
} = useElevation(props);
|
|
15846
|
-
const {
|
|
15847
|
-
positionClasses,
|
|
15848
|
-
positionStyles
|
|
15849
|
-
} = usePosition(props);
|
|
15850
16367
|
const {
|
|
15851
16368
|
roundedClasses
|
|
15852
16369
|
} = useRounded(props);
|
|
16370
|
+
const height = vue.computed(() => {
|
|
16371
|
+
var _props$height;
|
|
16372
|
+
|
|
16373
|
+
return ((_props$height = props.height) != null ? _props$height : props.window) ? 32 : 24;
|
|
16374
|
+
});
|
|
16375
|
+
const {
|
|
16376
|
+
layoutItemStyles
|
|
16377
|
+
} = useLayoutItem({
|
|
16378
|
+
id: props.name,
|
|
16379
|
+
priority: vue.computed(() => parseInt(props.priority, 10)),
|
|
16380
|
+
position: vue.ref('top'),
|
|
16381
|
+
layoutSize: height,
|
|
16382
|
+
elementSize: height,
|
|
16383
|
+
active: vue.computed(() => true),
|
|
16384
|
+
absolute: vue.toRef(props, 'absolute')
|
|
16385
|
+
});
|
|
16386
|
+
provideDefaults({
|
|
16387
|
+
VBtn: {
|
|
16388
|
+
variant: 'text',
|
|
16389
|
+
density: 'compact'
|
|
16390
|
+
}
|
|
16391
|
+
}, {
|
|
16392
|
+
scoped: true
|
|
16393
|
+
});
|
|
15853
16394
|
return () => vue.createVNode(props.tag, {
|
|
15854
16395
|
"class": ['v-system-bar', {
|
|
15855
16396
|
'v-system-bar--window': props.window
|
|
15856
|
-
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value,
|
|
15857
|
-
"style": [backgroundColorStyles.value,
|
|
16397
|
+
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
|
|
16398
|
+
"style": [backgroundColorStyles.value, layoutItemStyles.value]
|
|
15858
16399
|
}, slots);
|
|
15859
16400
|
}
|
|
15860
16401
|
|
|
15861
16402
|
});
|
|
15862
16403
|
|
|
16404
|
+
const VTabsSymbol = Symbol.for('vuetify:v-tabs');
|
|
16405
|
+
|
|
15863
16406
|
const VTab = defineComponent({
|
|
15864
16407
|
name: 'VTab',
|
|
15865
16408
|
props: {
|
|
@@ -15893,31 +16436,22 @@
|
|
|
15893
16436
|
slots,
|
|
15894
16437
|
attrs
|
|
15895
16438
|
} = _ref;
|
|
15896
|
-
const {
|
|
15897
|
-
isSelected,
|
|
15898
|
-
select,
|
|
15899
|
-
selectedClass
|
|
15900
|
-
} = useGroupItem(props, VTabsSymbol);
|
|
15901
16439
|
const {
|
|
15902
16440
|
textColorClasses: sliderColorClasses,
|
|
15903
16441
|
textColorStyles: sliderColorStyles
|
|
15904
16442
|
} = useTextColor(props, 'sliderColor');
|
|
15905
16443
|
const isHorizontal = vue.computed(() => props.direction === 'horizontal');
|
|
15906
|
-
|
|
15907
|
-
VBtn: {
|
|
15908
|
-
block: vue.toRef(props, 'fixed'),
|
|
15909
|
-
maxWidth: vue.computed(() => props.fixed ? 300 : undefined),
|
|
15910
|
-
color: vue.computed(() => isSelected.value ? props.color : undefined),
|
|
15911
|
-
variant: 'text',
|
|
15912
|
-
rounded: 0
|
|
15913
|
-
}
|
|
15914
|
-
}, {
|
|
15915
|
-
scoped: true
|
|
15916
|
-
});
|
|
16444
|
+
const isSelected = vue.ref(false);
|
|
15917
16445
|
const rootEl = vue.ref();
|
|
15918
16446
|
const sliderEl = vue.ref();
|
|
15919
|
-
|
|
15920
|
-
|
|
16447
|
+
|
|
16448
|
+
function updateSlider(_ref2) {
|
|
16449
|
+
let {
|
|
16450
|
+
value
|
|
16451
|
+
} = _ref2;
|
|
16452
|
+
isSelected.value = value;
|
|
16453
|
+
|
|
16454
|
+
if (value) {
|
|
15921
16455
|
var _rootEl$value, _rootEl$value$$el$par;
|
|
15922
16456
|
|
|
15923
16457
|
const prevEl = (_rootEl$value = rootEl.value) == null ? void 0 : (_rootEl$value$$el$par = _rootEl$value.$el.parentElement) == null ? void 0 : _rootEl$value$$el$par.querySelector('.v-tab--selected .v-tab__slider');
|
|
@@ -15947,17 +16481,25 @@
|
|
|
15947
16481
|
easing: standardEasing
|
|
15948
16482
|
});
|
|
15949
16483
|
}
|
|
15950
|
-
}
|
|
16484
|
+
}
|
|
16485
|
+
|
|
15951
16486
|
useRender(() => {
|
|
15952
|
-
const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled']);
|
|
16487
|
+
const [btnProps] = pick(props, ['href', 'to', 'replace', 'icon', 'stacked', 'prependIcon', 'appendIcon', 'ripple', 'theme', 'disabled', 'selectedClass', 'value', 'color']);
|
|
15953
16488
|
return vue.createVNode(VBtn, vue.mergeProps({
|
|
16489
|
+
"_as": "VTab",
|
|
16490
|
+
"symbol": VTabsSymbol,
|
|
15954
16491
|
"ref": rootEl,
|
|
15955
|
-
"class": ['v-tab'
|
|
16492
|
+
"class": ['v-tab'],
|
|
15956
16493
|
"tabindex": isSelected.value ? 0 : -1,
|
|
15957
16494
|
"role": "tab",
|
|
15958
16495
|
"aria-selected": String(isSelected.value),
|
|
15959
|
-
"
|
|
15960
|
-
|
|
16496
|
+
"block": props.fixed,
|
|
16497
|
+
"maxWidth": props.fixed ? 300 : undefined,
|
|
16498
|
+
"variant": "text",
|
|
16499
|
+
"rounded": 0
|
|
16500
|
+
}, btnProps, attrs, {
|
|
16501
|
+
"onGroup:selected": updateSlider
|
|
16502
|
+
}), {
|
|
15961
16503
|
default: () => [slots.default ? slots.default() : props.title, !props.hideSlider && vue.createVNode("div", {
|
|
15962
16504
|
"ref": sliderEl,
|
|
15963
16505
|
"class": ['v-tab__slider', sliderColorClasses.value],
|
|
@@ -15965,9 +16507,7 @@
|
|
|
15965
16507
|
}, null)]
|
|
15966
16508
|
});
|
|
15967
16509
|
});
|
|
15968
|
-
return {
|
|
15969
|
-
isSelected
|
|
15970
|
-
};
|
|
16510
|
+
return {};
|
|
15971
16511
|
}
|
|
15972
16512
|
|
|
15973
16513
|
});
|
|
@@ -15983,7 +16523,6 @@
|
|
|
15983
16523
|
});
|
|
15984
16524
|
}
|
|
15985
16525
|
|
|
15986
|
-
const VTabsSymbol = Symbol.for('vuetify:v-tabs');
|
|
15987
16526
|
const VTabs = defineComponent({
|
|
15988
16527
|
name: 'VTabs',
|
|
15989
16528
|
props: {
|
|
@@ -16008,7 +16547,7 @@
|
|
|
16008
16547
|
},
|
|
16009
16548
|
hideSlider: Boolean,
|
|
16010
16549
|
optional: Boolean,
|
|
16011
|
-
|
|
16550
|
+
end: Boolean,
|
|
16012
16551
|
sliderColor: String,
|
|
16013
16552
|
modelValue: null,
|
|
16014
16553
|
...makeDensityProps(),
|
|
@@ -16047,7 +16586,7 @@
|
|
|
16047
16586
|
'v-tabs--centered': props.centered,
|
|
16048
16587
|
'v-tabs--fixed-tabs': props.fixedTabs,
|
|
16049
16588
|
'v-tabs--grow': props.grow,
|
|
16050
|
-
'v-tabs--
|
|
16589
|
+
'v-tabs--end': props.end,
|
|
16051
16590
|
'v-tabs--stacked': props.stacked
|
|
16052
16591
|
}, densityClasses.value, backgroundColorClasses.value],
|
|
16053
16592
|
"style": backgroundColorStyles.value,
|
|
@@ -16361,7 +16900,96 @@
|
|
|
16361
16900
|
|
|
16362
16901
|
const VTimelineSymbol = Symbol.for('vuetify:timeline');
|
|
16363
16902
|
|
|
16364
|
-
const
|
|
16903
|
+
const VTimeline = defineComponent({
|
|
16904
|
+
name: 'VTimeline',
|
|
16905
|
+
props: {
|
|
16906
|
+
align: {
|
|
16907
|
+
type: String,
|
|
16908
|
+
default: 'center',
|
|
16909
|
+
validator: v => ['center', 'start'].includes(v)
|
|
16910
|
+
},
|
|
16911
|
+
direction: {
|
|
16912
|
+
type: String,
|
|
16913
|
+
default: 'vertical',
|
|
16914
|
+
validator: v => ['vertical', 'horizontal'].includes(v)
|
|
16915
|
+
},
|
|
16916
|
+
side: {
|
|
16917
|
+
type: String,
|
|
16918
|
+
validator: v => v == null || ['start', 'end'].includes(v)
|
|
16919
|
+
},
|
|
16920
|
+
lineInset: {
|
|
16921
|
+
type: [String, Number],
|
|
16922
|
+
default: 0
|
|
16923
|
+
},
|
|
16924
|
+
lineThickness: {
|
|
16925
|
+
type: [String, Number],
|
|
16926
|
+
default: 2
|
|
16927
|
+
},
|
|
16928
|
+
lineColor: String,
|
|
16929
|
+
truncateLine: {
|
|
16930
|
+
type: String,
|
|
16931
|
+
validator: v => ['start', 'end', 'both'].includes(v)
|
|
16932
|
+
},
|
|
16933
|
+
...makeDensityProps(),
|
|
16934
|
+
...makeTagProps(),
|
|
16935
|
+
...makeThemeProps()
|
|
16936
|
+
},
|
|
16937
|
+
|
|
16938
|
+
setup(props, _ref) {
|
|
16939
|
+
let {
|
|
16940
|
+
slots
|
|
16941
|
+
} = _ref;
|
|
16942
|
+
const {
|
|
16943
|
+
themeClasses
|
|
16944
|
+
} = provideTheme(props);
|
|
16945
|
+
const {
|
|
16946
|
+
densityClasses
|
|
16947
|
+
} = useDensity(props);
|
|
16948
|
+
vue.provide(VTimelineSymbol, {
|
|
16949
|
+
density: vue.toRef(props, 'density'),
|
|
16950
|
+
lineColor: vue.toRef(props, 'lineColor')
|
|
16951
|
+
});
|
|
16952
|
+
const sideClass = vue.computed(() => {
|
|
16953
|
+
const side = props.side ? props.side : props.density !== 'default' ? 'end' : null;
|
|
16954
|
+
return side && `v-timeline--side-${side}`;
|
|
16955
|
+
});
|
|
16956
|
+
const truncateClasses = vue.computed(() => {
|
|
16957
|
+
const classes = ['v-timeline--truncate-line-start', 'v-timeline--truncate-line-end'];
|
|
16958
|
+
|
|
16959
|
+
switch (props.truncateLine) {
|
|
16960
|
+
case 'both':
|
|
16961
|
+
return classes;
|
|
16962
|
+
|
|
16963
|
+
case 'start':
|
|
16964
|
+
return classes[0];
|
|
16965
|
+
|
|
16966
|
+
case 'end':
|
|
16967
|
+
return classes[1];
|
|
16968
|
+
|
|
16969
|
+
default:
|
|
16970
|
+
return null;
|
|
16971
|
+
}
|
|
16972
|
+
});
|
|
16973
|
+
return () => {
|
|
16974
|
+
var _slots$default;
|
|
16975
|
+
|
|
16976
|
+
return vue.createVNode(props.tag, {
|
|
16977
|
+
"class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, !props.lineInset && truncateClasses.value, {
|
|
16978
|
+
'v-timeline--inset-line': !!props.lineInset
|
|
16979
|
+
}, themeClasses.value, densityClasses.value, sideClass.value],
|
|
16980
|
+
"style": {
|
|
16981
|
+
'--v-timeline-line-thickness': convertToUnit(props.lineThickness),
|
|
16982
|
+
'--v-timeline-line-inset': convertToUnit(props.lineInset)
|
|
16983
|
+
}
|
|
16984
|
+
}, {
|
|
16985
|
+
default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]
|
|
16986
|
+
});
|
|
16987
|
+
};
|
|
16988
|
+
}
|
|
16989
|
+
|
|
16990
|
+
});
|
|
16991
|
+
|
|
16992
|
+
const VTimelineDivider = defineComponent({
|
|
16365
16993
|
name: 'VTimelineDivider',
|
|
16366
16994
|
props: {
|
|
16367
16995
|
hideDot: Boolean,
|
|
@@ -16496,77 +17124,6 @@
|
|
|
16496
17124
|
|
|
16497
17125
|
});
|
|
16498
17126
|
|
|
16499
|
-
const VTimeline = defineComponent({
|
|
16500
|
-
name: 'VTimeline',
|
|
16501
|
-
props: {
|
|
16502
|
-
direction: {
|
|
16503
|
-
type: String,
|
|
16504
|
-
default: 'vertical',
|
|
16505
|
-
validator: v => ['vertical', 'horizontal'].includes(v)
|
|
16506
|
-
},
|
|
16507
|
-
side: {
|
|
16508
|
-
type: String,
|
|
16509
|
-
validator: v => v == null || ['start', 'end'].includes(v)
|
|
16510
|
-
},
|
|
16511
|
-
lineInset: {
|
|
16512
|
-
type: [String, Number],
|
|
16513
|
-
default: 0
|
|
16514
|
-
},
|
|
16515
|
-
lineThickness: {
|
|
16516
|
-
type: [String, Number],
|
|
16517
|
-
default: 2
|
|
16518
|
-
},
|
|
16519
|
-
lineColor: String,
|
|
16520
|
-
truncateLine: {
|
|
16521
|
-
type: String,
|
|
16522
|
-
default: 'start',
|
|
16523
|
-
validator: v => ['none', 'start', 'end', 'both'].includes(v)
|
|
16524
|
-
},
|
|
16525
|
-
...makeDensityProps(),
|
|
16526
|
-
...makeTagProps(),
|
|
16527
|
-
...makeThemeProps()
|
|
16528
|
-
},
|
|
16529
|
-
|
|
16530
|
-
setup(props, _ref) {
|
|
16531
|
-
let {
|
|
16532
|
-
slots
|
|
16533
|
-
} = _ref;
|
|
16534
|
-
const {
|
|
16535
|
-
themeClasses
|
|
16536
|
-
} = provideTheme(props);
|
|
16537
|
-
const {
|
|
16538
|
-
densityClasses
|
|
16539
|
-
} = useDensity(props);
|
|
16540
|
-
vue.provide(VTimelineSymbol, {
|
|
16541
|
-
density: vue.toRef(props, 'density'),
|
|
16542
|
-
lineColor: vue.toRef(props, 'lineColor')
|
|
16543
|
-
});
|
|
16544
|
-
const sideClass = vue.computed(() => {
|
|
16545
|
-
const side = props.side ? props.side : props.density !== 'default' ? 'end' : null;
|
|
16546
|
-
return side && `v-timeline--side-${side}`;
|
|
16547
|
-
});
|
|
16548
|
-
return () => {
|
|
16549
|
-
var _slots$default;
|
|
16550
|
-
|
|
16551
|
-
return vue.createVNode(props.tag, {
|
|
16552
|
-
"class": ['v-timeline', `v-timeline--${props.direction}`, {
|
|
16553
|
-
'v-timeline--inset-line': !!props.lineInset,
|
|
16554
|
-
'v-timeline--truncate-line-end': props.truncateLine === 'end' || props.truncateLine === 'both'
|
|
16555
|
-
}, themeClasses.value, densityClasses.value, sideClass.value],
|
|
16556
|
-
"style": {
|
|
16557
|
-
'--v-timeline-line-thickness': convertToUnit(props.lineThickness),
|
|
16558
|
-
'--v-timeline-line-inset': convertToUnit(props.lineInset)
|
|
16559
|
-
}
|
|
16560
|
-
}, {
|
|
16561
|
-
default: () => [(props.truncateLine === 'none' || props.truncateLine === 'end') && vue.createVNode(VTimelineItem, {
|
|
16562
|
-
"hideDot": true
|
|
16563
|
-
}, null), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]
|
|
16564
|
-
});
|
|
16565
|
-
};
|
|
16566
|
-
}
|
|
16567
|
-
|
|
16568
|
-
});
|
|
16569
|
-
|
|
16570
17127
|
const VTooltip = genericComponent()({
|
|
16571
17128
|
name: 'VTooltip',
|
|
16572
17129
|
inheritAttrs: false,
|
|
@@ -16684,6 +17241,8 @@
|
|
|
16684
17241
|
VBadge: VBadge,
|
|
16685
17242
|
VBanner: VBanner,
|
|
16686
17243
|
VBannerActions: VBannerActions,
|
|
17244
|
+
VBannerAvatar: VBannerAvatar,
|
|
17245
|
+
VBannerIcon: VBannerIcon,
|
|
16687
17246
|
VBannerText: VBannerText,
|
|
16688
17247
|
VBottomNavigation: VBottomNavigation,
|
|
16689
17248
|
VBreadcrumbs: VBreadcrumbs,
|
|
@@ -16695,6 +17254,7 @@
|
|
|
16695
17254
|
VCard: VCard,
|
|
16696
17255
|
VCardActions: VCardActions,
|
|
16697
17256
|
VCardAvatar: VCardAvatar,
|
|
17257
|
+
VCardContent: VCardContent,
|
|
16698
17258
|
VCardHeader: VCardHeader,
|
|
16699
17259
|
VCardHeaderText: VCardHeaderText,
|
|
16700
17260
|
VCardImg: VCardImg,
|
|
@@ -16745,8 +17305,10 @@
|
|
|
16745
17305
|
VListSubheader: VListSubheader,
|
|
16746
17306
|
VListImg: VListImg,
|
|
16747
17307
|
VListItem: VListItem,
|
|
17308
|
+
VListItemAction: VListItemAction,
|
|
16748
17309
|
VListItemAvatar: VListItemAvatar,
|
|
16749
17310
|
VListItemHeader: VListItemHeader,
|
|
17311
|
+
VListItemIcon: VListItemIcon,
|
|
16750
17312
|
VListItemMedia: VListItemMedia,
|
|
16751
17313
|
VListItemSubtitle: VListItemSubtitle,
|
|
16752
17314
|
VListItemTitle: VListItemTitle,
|
|
@@ -17016,19 +17578,24 @@
|
|
|
17016
17578
|
|
|
17017
17579
|
const install = app => {
|
|
17018
17580
|
const {
|
|
17581
|
+
aliases: aliases$1 = {},
|
|
17019
17582
|
components = {},
|
|
17020
17583
|
directives = {},
|
|
17021
17584
|
icons = {}
|
|
17022
17585
|
} = options;
|
|
17023
17586
|
|
|
17024
17587
|
for (const key in directives) {
|
|
17025
|
-
|
|
17026
|
-
app.directive(key, directive);
|
|
17588
|
+
app.directive(key, directives[key]);
|
|
17027
17589
|
}
|
|
17028
17590
|
|
|
17029
17591
|
for (const key in components) {
|
|
17030
|
-
|
|
17031
|
-
|
|
17592
|
+
app.component(key, components[key]);
|
|
17593
|
+
}
|
|
17594
|
+
|
|
17595
|
+
for (const key in aliases$1) {
|
|
17596
|
+
app.component(key, defineComponent({ ...aliases$1[key],
|
|
17597
|
+
name: key
|
|
17598
|
+
}));
|
|
17032
17599
|
}
|
|
17033
17600
|
|
|
17034
17601
|
app.provide(DefaultsSymbol, createDefaults(options.defaults));
|
|
@@ -17039,7 +17606,7 @@
|
|
|
17039
17606
|
sets: { ...defaultSets,
|
|
17040
17607
|
mdi
|
|
17041
17608
|
},
|
|
17042
|
-
aliases
|
|
17609
|
+
aliases: aliases
|
|
17043
17610
|
}, icons));
|
|
17044
17611
|
const {
|
|
17045
17612
|
adapter,
|
|
@@ -17089,7 +17656,7 @@
|
|
|
17089
17656
|
...options
|
|
17090
17657
|
});
|
|
17091
17658
|
};
|
|
17092
|
-
const version = "3.0.0-beta.
|
|
17659
|
+
const version = "3.0.0-beta.2";
|
|
17093
17660
|
|
|
17094
17661
|
exports.components = components;
|
|
17095
17662
|
exports.createVuetify = createVuetify;
|