vuetify 3.5.8 → 3.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +525 -13
- package/dist/json/importMap-labs.json +24 -8
- package/dist/json/importMap.json +130 -130
- package/dist/json/tags.json +148 -0
- package/dist/json/web-types.json +2021 -147
- package/dist/vuetify-labs.css +2819 -2760
- package/dist/vuetify-labs.d.ts +5860 -2816
- package/dist/vuetify-labs.esm.js +1286 -248
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +1286 -247
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +553 -547
- package/dist/vuetify.d.ts +2835 -2281
- package/dist/vuetify.esm.js +883 -408
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +882 -406
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1137 -1109
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/index.d.mts +15 -15
- package/lib/components/VApp/index.d.mts +8 -8
- package/lib/components/VAppBar/index.d.mts +7 -7
- package/lib/components/VAutocomplete/VAutocomplete.mjs +9 -7
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +232 -100
- package/lib/components/VAvatar/index.d.mts +8 -8
- package/lib/components/VBadge/index.d.mts +7 -7
- package/lib/components/VBanner/index.d.mts +20 -20
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/index.d.mts +27 -26
- package/lib/components/VBtnGroup/index.d.mts +8 -8
- package/lib/components/VCard/index.d.mts +32 -32
- package/lib/components/VCarousel/index.d.mts +6 -6
- package/lib/components/VCheckbox/index.d.mts +44 -44
- package/lib/components/VChip/index.d.mts +7 -7
- package/lib/components/VCode/index.d.mts +8 -8
- package/lib/components/VColorPicker/VColorPickerPreview.css +1 -0
- package/lib/components/VColorPicker/VColorPickerPreview.sass +1 -0
- package/lib/components/VColorPicker/_variables.scss +1 -0
- package/lib/components/VCombobox/VCombobox.mjs +10 -7
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +232 -100
- package/lib/components/VDataTable/index.d.mts +6 -6
- package/lib/components/VDatePicker/VDatePickerControls.mjs +1 -0
- package/lib/components/VDatePicker/VDatePickerControls.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +10 -4
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/components/VDatePicker/index.d.mts +10 -10
- package/lib/components/VDefaultsProvider/index.d.mts +8 -8
- package/lib/components/VDialog/index.d.mts +12 -6
- package/lib/components/VDivider/index.d.mts +8 -8
- package/lib/components/VExpansionPanel/index.d.mts +19 -19
- package/lib/components/VField/VField.css +2 -0
- package/lib/components/VField/VField.mjs +1 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +2 -0
- package/lib/components/VField/index.d.mts +28 -28
- package/lib/components/VFileInput/index.d.mts +133 -133
- package/lib/components/VFooter/index.d.mts +8 -8
- package/lib/components/VGrid/index.d.mts +32 -32
- package/lib/components/VIcon/VIcon.css +4 -0
- package/lib/components/VIcon/VIcon.mjs +7 -3
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.sass +4 -0
- package/lib/components/VIcon/_variables.scss +1 -0
- package/lib/components/VIcon/index.d.mts +25 -16
- package/lib/components/VImg/index.d.mts +4 -4
- package/lib/components/VInput/index.d.mts +21 -21
- package/lib/components/VKbd/index.d.mts +8 -8
- package/lib/components/VLabel/index.d.mts +8 -8
- package/lib/components/VLayout/index.d.mts +16 -16
- package/lib/components/VLazy/index.d.mts +8 -8
- package/lib/components/VList/VList.mjs +8 -2
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +3 -1
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +17 -4
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +156 -54
- package/lib/components/VLocaleProvider/index.d.mts +12 -12
- package/lib/components/VMain/index.d.mts +8 -8
- package/lib/components/VMenu/VMenu.mjs +3 -0
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.mts +14 -8
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +22 -8
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -1
- package/lib/components/VNavigationDrawer/index.d.mts +11 -11
- package/lib/components/VOtpInput/VOtpInput.mjs +7 -2
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/components/VOtpInput/index.d.mts +31 -31
- package/lib/components/VOverlay/VOverlay.mjs +8 -3
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.mts +3 -0
- package/lib/components/VOverlay/scrollStrategies.mjs +2 -2
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VPagination/index.d.mts +7 -7
- package/lib/components/VProgressLinear/VProgressLinear.css +0 -1
- package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
- package/lib/components/VProgressLinear/index.d.mts +7 -7
- package/lib/components/VRadioGroup/index.d.mts +44 -44
- package/lib/components/VRangeSlider/index.d.mts +47 -47
- package/lib/components/VRating/index.d.mts +7 -7
- package/lib/components/VResponsive/index.d.mts +8 -8
- package/lib/components/VSelect/VSelect.mjs +5 -3
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +232 -100
- package/lib/components/VSheet/index.d.mts +8 -8
- package/lib/components/VSkeletonLoader/index.d.mts +8 -8
- package/lib/components/VSlider/index.d.mts +47 -47
- package/lib/components/VSnackbar/index.d.mts +25 -19
- package/lib/components/VStepper/index.d.mts +41 -41
- package/lib/components/VSwitch/index.d.mts +39 -39
- package/lib/components/VSystemBar/index.d.mts +8 -8
- package/lib/components/VTabs/index.d.mts +15 -15
- package/lib/components/VTextField/index.d.mts +173 -173
- package/lib/components/VTextarea/index.d.mts +119 -119
- package/lib/components/VThemeProvider/index.d.mts +8 -8
- package/lib/components/VTimeline/index.d.mts +8 -8
- package/lib/components/VToolbar/index.d.mts +8 -8
- package/lib/components/VTooltip/index.d.mts +14 -8
- package/lib/components/VWindow/index.d.mts +10 -10
- package/lib/components/index.d.mts +2478 -1943
- package/lib/components/transitions/index.d.mts +128 -128
- package/lib/composables/date/adapters/vuetify.mjs +1 -1
- package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
- package/lib/composables/nested/activeStrategies.mjs +121 -0
- package/lib/composables/nested/activeStrategies.mjs.map +1 -0
- package/lib/composables/nested/nested.mjs +50 -1
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +4 -2
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/theme.mjs +1 -1
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +3 -2
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/iconsets/fa.mjs +2 -0
- package/lib/iconsets/fa.mjs.map +1 -1
- package/lib/iconsets/fa4.mjs +2 -0
- package/lib/iconsets/fa4.mjs.map +1 -1
- package/lib/iconsets/md.mjs +2 -0
- package/lib/iconsets/md.mjs.map +1 -1
- package/lib/iconsets/mdi-svg.mjs +2 -0
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/iconsets/mdi.mjs +2 -0
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.mts +48 -44
- package/lib/labs/VCalendar/index.d.mts +32 -32
- package/lib/labs/VFab/index.d.mts +15 -15
- package/lib/labs/VNumberInput/VNumberInput.css +38 -0
- package/lib/labs/VNumberInput/VNumberInput.mjs +209 -0
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -0
- package/lib/labs/VNumberInput/VNumberInput.sass +47 -0
- package/lib/labs/VNumberInput/_variables.scss +1 -0
- package/lib/labs/VNumberInput/index.d.mts +607 -0
- package/lib/labs/VNumberInput/index.mjs +2 -0
- package/lib/labs/VNumberInput/index.mjs.map +1 -0
- package/lib/labs/VPicker/index.d.mts +8 -8
- package/lib/labs/VSparkline/index.d.mts +7 -7
- package/lib/labs/VSpeedDial/VSpeedDial.mjs +9 -5
- package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -1
- package/lib/labs/VSpeedDial/index.d.mts +120 -24
- package/lib/labs/VTreeview/VTreeview.mjs +154 -0
- package/lib/labs/VTreeview/VTreeview.mjs.map +1 -0
- package/lib/labs/VTreeview/VTreeviewChildren.mjs +98 -0
- package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -0
- package/lib/labs/VTreeview/VTreeviewGroup.mjs +48 -0
- package/lib/labs/VTreeview/VTreeviewGroup.mjs.map +1 -0
- package/lib/labs/VTreeview/VTreeviewItem.css +17 -0
- package/lib/labs/VTreeview/VTreeviewItem.mjs +86 -0
- package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -0
- package/lib/labs/VTreeview/VTreeviewItem.sass +19 -0
- package/lib/labs/VTreeview/index.d.mts +1975 -0
- package/lib/labs/VTreeview/index.mjs +4 -0
- package/lib/labs/VTreeview/index.mjs.map +1 -0
- package/lib/labs/VTreeview/shared.mjs +4 -0
- package/lib/labs/VTreeview/shared.mjs.map +1 -0
- package/lib/labs/VTreeview/variables.scss +8 -0
- package/lib/labs/components.d.mts +4553 -1925
- package/lib/labs/components.mjs +4 -2
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/no.mjs +1 -1
- package/lib/locale/no.mjs.map +1 -1
- package/package.json +2 -2
package/dist/vuetify-labs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.5.
|
|
2
|
+
* Vuetify v3.5.10
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -2392,7 +2392,7 @@
|
|
|
2392
2392
|
const current = vue.computed(() => computedThemes.value[name.value]);
|
|
2393
2393
|
const styles = vue.computed(() => {
|
|
2394
2394
|
const lines = [];
|
|
2395
|
-
if (current.value
|
|
2395
|
+
if (current.value?.dark) {
|
|
2396
2396
|
createCssClass(lines, ':root', ['color-scheme: dark']);
|
|
2397
2397
|
}
|
|
2398
2398
|
createCssClass(lines, ':root', genCssVariables(current.value));
|
|
@@ -4376,6 +4376,8 @@
|
|
|
4376
4376
|
plus: 'mdi-plus',
|
|
4377
4377
|
minus: 'mdi-minus',
|
|
4378
4378
|
calendar: 'mdi-calendar',
|
|
4379
|
+
treeviewCollapse: 'mdi-menu-down',
|
|
4380
|
+
treeviewExpand: 'mdi-menu-right',
|
|
4379
4381
|
eyeDropper: 'mdi-eyedropper'
|
|
4380
4382
|
};
|
|
4381
4383
|
const mdi = {
|
|
@@ -4570,6 +4572,7 @@
|
|
|
4570
4572
|
|
|
4571
4573
|
const makeVIconProps = propsFactory({
|
|
4572
4574
|
color: String,
|
|
4575
|
+
disabled: Boolean,
|
|
4573
4576
|
start: Boolean,
|
|
4574
4577
|
end: Boolean,
|
|
4575
4578
|
icon: IconValue,
|
|
@@ -4607,11 +4610,13 @@
|
|
|
4607
4610
|
if (slotValue) {
|
|
4608
4611
|
slotIcon.value = flattenFragments(slotValue).filter(node => node.type === vue.Text && node.children && typeof node.children === 'string')[0]?.children;
|
|
4609
4612
|
}
|
|
4613
|
+
const hasClick = !!(attrs.onClick || attrs.onClickOnce);
|
|
4610
4614
|
return vue.createVNode(iconData.value.component, {
|
|
4611
4615
|
"tag": props.tag,
|
|
4612
4616
|
"icon": iconData.value.icon,
|
|
4613
4617
|
"class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
|
|
4614
|
-
'v-icon--clickable':
|
|
4618
|
+
'v-icon--clickable': hasClick,
|
|
4619
|
+
'v-icon--disabled': props.disabled,
|
|
4615
4620
|
'v-icon--start': props.start,
|
|
4616
4621
|
'v-icon--end': props.end
|
|
4617
4622
|
}, props.class],
|
|
@@ -4620,8 +4625,9 @@
|
|
|
4620
4625
|
height: convertToUnit(props.size),
|
|
4621
4626
|
width: convertToUnit(props.size)
|
|
4622
4627
|
} : undefined, textColorStyles.value, props.style],
|
|
4623
|
-
"role":
|
|
4624
|
-
"aria-hidden": !
|
|
4628
|
+
"role": hasClick ? 'button' : undefined,
|
|
4629
|
+
"aria-hidden": !hasClick,
|
|
4630
|
+
"tabindex": hasClick ? props.disabled ? -1 : 0 : undefined
|
|
4625
4631
|
}, {
|
|
4626
4632
|
default: () => [slotValue]
|
|
4627
4633
|
});
|
|
@@ -7762,6 +7768,126 @@
|
|
|
7762
7768
|
return vue.inject(ListKey, null);
|
|
7763
7769
|
}
|
|
7764
7770
|
|
|
7771
|
+
/* eslint-disable sonarjs/no-identical-functions */
|
|
7772
|
+
// Utilities
|
|
7773
|
+
const independentActiveStrategy = mandatory => {
|
|
7774
|
+
const strategy = {
|
|
7775
|
+
activate: _ref => {
|
|
7776
|
+
let {
|
|
7777
|
+
id,
|
|
7778
|
+
value,
|
|
7779
|
+
activated
|
|
7780
|
+
} = _ref;
|
|
7781
|
+
id = vue.toRaw(id);
|
|
7782
|
+
|
|
7783
|
+
// When mandatory and we're trying to deselect when id
|
|
7784
|
+
// is the only currently selected item then do nothing
|
|
7785
|
+
if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated;
|
|
7786
|
+
if (value) {
|
|
7787
|
+
activated.add(id);
|
|
7788
|
+
} else {
|
|
7789
|
+
activated.delete(id);
|
|
7790
|
+
}
|
|
7791
|
+
return activated;
|
|
7792
|
+
},
|
|
7793
|
+
in: (v, children, parents) => {
|
|
7794
|
+
let set = new Set();
|
|
7795
|
+
for (const id of v || []) {
|
|
7796
|
+
set = strategy.activate({
|
|
7797
|
+
id,
|
|
7798
|
+
value: true,
|
|
7799
|
+
activated: new Set(set),
|
|
7800
|
+
children,
|
|
7801
|
+
parents
|
|
7802
|
+
});
|
|
7803
|
+
}
|
|
7804
|
+
return set;
|
|
7805
|
+
},
|
|
7806
|
+
out: v => {
|
|
7807
|
+
return Array.from(v);
|
|
7808
|
+
}
|
|
7809
|
+
};
|
|
7810
|
+
return strategy;
|
|
7811
|
+
};
|
|
7812
|
+
const independentSingleActiveStrategy = mandatory => {
|
|
7813
|
+
const parentStrategy = independentActiveStrategy(mandatory);
|
|
7814
|
+
const strategy = {
|
|
7815
|
+
activate: _ref2 => {
|
|
7816
|
+
let {
|
|
7817
|
+
activated,
|
|
7818
|
+
id,
|
|
7819
|
+
...rest
|
|
7820
|
+
} = _ref2;
|
|
7821
|
+
id = vue.toRaw(id);
|
|
7822
|
+
const singleSelected = activated.has(id) ? new Set([id]) : new Set();
|
|
7823
|
+
return parentStrategy.activate({
|
|
7824
|
+
...rest,
|
|
7825
|
+
id,
|
|
7826
|
+
activated: singleSelected
|
|
7827
|
+
});
|
|
7828
|
+
},
|
|
7829
|
+
in: (v, children, parents) => {
|
|
7830
|
+
let set = new Set();
|
|
7831
|
+
if (v?.length) {
|
|
7832
|
+
set = parentStrategy.in(v.slice(0, 1), children, parents);
|
|
7833
|
+
}
|
|
7834
|
+
return set;
|
|
7835
|
+
},
|
|
7836
|
+
out: (v, children, parents) => {
|
|
7837
|
+
return parentStrategy.out(v, children, parents);
|
|
7838
|
+
}
|
|
7839
|
+
};
|
|
7840
|
+
return strategy;
|
|
7841
|
+
};
|
|
7842
|
+
const leafActiveStrategy = mandatory => {
|
|
7843
|
+
const parentStrategy = independentActiveStrategy(mandatory);
|
|
7844
|
+
const strategy = {
|
|
7845
|
+
activate: _ref3 => {
|
|
7846
|
+
let {
|
|
7847
|
+
id,
|
|
7848
|
+
activated,
|
|
7849
|
+
children,
|
|
7850
|
+
...rest
|
|
7851
|
+
} = _ref3;
|
|
7852
|
+
id = vue.toRaw(id);
|
|
7853
|
+
if (children.has(id)) return activated;
|
|
7854
|
+
return parentStrategy.activate({
|
|
7855
|
+
id,
|
|
7856
|
+
activated,
|
|
7857
|
+
children,
|
|
7858
|
+
...rest
|
|
7859
|
+
});
|
|
7860
|
+
},
|
|
7861
|
+
in: parentStrategy.in,
|
|
7862
|
+
out: parentStrategy.out
|
|
7863
|
+
};
|
|
7864
|
+
return strategy;
|
|
7865
|
+
};
|
|
7866
|
+
const leafSingleActiveStrategy = mandatory => {
|
|
7867
|
+
const parentStrategy = independentSingleActiveStrategy(mandatory);
|
|
7868
|
+
const strategy = {
|
|
7869
|
+
activate: _ref4 => {
|
|
7870
|
+
let {
|
|
7871
|
+
id,
|
|
7872
|
+
activated,
|
|
7873
|
+
children,
|
|
7874
|
+
...rest
|
|
7875
|
+
} = _ref4;
|
|
7876
|
+
id = vue.toRaw(id);
|
|
7877
|
+
if (children.has(id)) return activated;
|
|
7878
|
+
return parentStrategy.activate({
|
|
7879
|
+
id,
|
|
7880
|
+
activated,
|
|
7881
|
+
children,
|
|
7882
|
+
...rest
|
|
7883
|
+
});
|
|
7884
|
+
},
|
|
7885
|
+
in: parentStrategy.in,
|
|
7886
|
+
out: parentStrategy.out
|
|
7887
|
+
};
|
|
7888
|
+
return strategy;
|
|
7889
|
+
};
|
|
7890
|
+
|
|
7765
7891
|
const singleOpenStrategy = {
|
|
7766
7892
|
open: _ref => {
|
|
7767
7893
|
let {
|
|
@@ -7846,7 +7972,8 @@
|
|
|
7846
7972
|
if (mandatory && !value) {
|
|
7847
7973
|
const on = Array.from(selected.entries()).reduce((arr, _ref2) => {
|
|
7848
7974
|
let [key, value] = _ref2;
|
|
7849
|
-
|
|
7975
|
+
if (value === 'on') arr.push(key);
|
|
7976
|
+
return arr;
|
|
7850
7977
|
}, []);
|
|
7851
7978
|
if (on.length === 1 && on[0] === id) return selected;
|
|
7852
7979
|
}
|
|
@@ -7988,7 +8115,8 @@
|
|
|
7988
8115
|
if (mandatory && !value) {
|
|
7989
8116
|
const on = Array.from(selected.entries()).reduce((arr, _ref7) => {
|
|
7990
8117
|
let [key, value] = _ref7;
|
|
7991
|
-
|
|
8118
|
+
if (value === 'on') arr.push(key);
|
|
8119
|
+
return arr;
|
|
7992
8120
|
}, []);
|
|
7993
8121
|
if (on.length === 0) return original;
|
|
7994
8122
|
}
|
|
@@ -8032,16 +8160,24 @@
|
|
|
8032
8160
|
children: vue.ref(new Map()),
|
|
8033
8161
|
open: () => null,
|
|
8034
8162
|
openOnSelect: () => null,
|
|
8163
|
+
activate: () => null,
|
|
8035
8164
|
select: () => null,
|
|
8165
|
+
activatable: vue.ref(false),
|
|
8166
|
+
selectable: vue.ref(false),
|
|
8036
8167
|
opened: vue.ref(new Set()),
|
|
8168
|
+
activated: vue.ref(new Set()),
|
|
8037
8169
|
selected: vue.ref(new Map()),
|
|
8038
8170
|
selectedValues: vue.ref([])
|
|
8039
8171
|
}
|
|
8040
8172
|
};
|
|
8041
8173
|
const makeNestedProps = propsFactory({
|
|
8174
|
+
activatable: Boolean,
|
|
8175
|
+
selectable: Boolean,
|
|
8176
|
+
activeStrategy: [String, Function],
|
|
8042
8177
|
selectStrategy: [String, Function],
|
|
8043
8178
|
openStrategy: [String, Object],
|
|
8044
8179
|
opened: Array,
|
|
8180
|
+
activated: Array,
|
|
8045
8181
|
selected: Array,
|
|
8046
8182
|
mandatory: Boolean
|
|
8047
8183
|
}, 'nested');
|
|
@@ -8050,6 +8186,20 @@
|
|
|
8050
8186
|
const children = vue.ref(new Map());
|
|
8051
8187
|
const parents = vue.ref(new Map());
|
|
8052
8188
|
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
|
|
8189
|
+
const activeStrategy = vue.computed(() => {
|
|
8190
|
+
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
|
8191
|
+
switch (props.activeStrategy) {
|
|
8192
|
+
case 'leaf':
|
|
8193
|
+
return leafActiveStrategy(props.mandatory);
|
|
8194
|
+
case 'single-leaf':
|
|
8195
|
+
return leafSingleActiveStrategy(props.mandatory);
|
|
8196
|
+
case 'independent':
|
|
8197
|
+
return independentActiveStrategy(props.mandatory);
|
|
8198
|
+
case 'single-independent':
|
|
8199
|
+
default:
|
|
8200
|
+
return independentSingleActiveStrategy(props.mandatory);
|
|
8201
|
+
}
|
|
8202
|
+
});
|
|
8053
8203
|
const selectStrategy = vue.computed(() => {
|
|
8054
8204
|
if (typeof props.selectStrategy === 'object') return props.selectStrategy;
|
|
8055
8205
|
switch (props.selectStrategy) {
|
|
@@ -8078,6 +8228,7 @@
|
|
|
8078
8228
|
return multipleOpenStrategy;
|
|
8079
8229
|
}
|
|
8080
8230
|
});
|
|
8231
|
+
const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
|
|
8081
8232
|
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));
|
|
8082
8233
|
vue.onBeforeUnmount(() => {
|
|
8083
8234
|
isUnmounted = true;
|
|
@@ -8096,6 +8247,9 @@
|
|
|
8096
8247
|
id: vue.shallowRef(),
|
|
8097
8248
|
root: {
|
|
8098
8249
|
opened,
|
|
8250
|
+
activatable: vue.toRef(props, 'activatable'),
|
|
8251
|
+
selectable: vue.toRef(props, 'selectable'),
|
|
8252
|
+
activated,
|
|
8099
8253
|
selected,
|
|
8100
8254
|
selectedValues: vue.computed(() => {
|
|
8101
8255
|
const arr = [];
|
|
@@ -8169,6 +8323,26 @@
|
|
|
8169
8323
|
newSelected && (selected.value = newSelected);
|
|
8170
8324
|
nested.root.openOnSelect(id, value, event);
|
|
8171
8325
|
},
|
|
8326
|
+
activate: (id, value, event) => {
|
|
8327
|
+
if (!props.activatable) {
|
|
8328
|
+
return nested.root.select(id, true, event);
|
|
8329
|
+
}
|
|
8330
|
+
vm.emit('click:activate', {
|
|
8331
|
+
id,
|
|
8332
|
+
value,
|
|
8333
|
+
path: getPath(id),
|
|
8334
|
+
event
|
|
8335
|
+
});
|
|
8336
|
+
const newActivated = activeStrategy.value.activate({
|
|
8337
|
+
id,
|
|
8338
|
+
value,
|
|
8339
|
+
activated: new Set(activated.value),
|
|
8340
|
+
children: children.value,
|
|
8341
|
+
parents: parents.value,
|
|
8342
|
+
event
|
|
8343
|
+
});
|
|
8344
|
+
newActivated && (activated.value = newActivated);
|
|
8345
|
+
},
|
|
8172
8346
|
children,
|
|
8173
8347
|
parents
|
|
8174
8348
|
}
|
|
@@ -8187,6 +8361,8 @@
|
|
|
8187
8361
|
openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
|
|
8188
8362
|
isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
|
|
8189
8363
|
parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
|
|
8364
|
+
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
|
8365
|
+
isActivated: vue.computed(() => parent.root.activated.value.has(vue.toRaw(computedId.value))),
|
|
8190
8366
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
|
8191
8367
|
isSelected: vue.computed(() => parent.root.selected.value.get(vue.toRaw(computedId.value)) === 'on'),
|
|
8192
8368
|
isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
|
@@ -8309,7 +8485,9 @@
|
|
|
8309
8485
|
}, [slots.default?.()]), [[vue.vShow, isOpen.value]])]
|
|
8310
8486
|
})]
|
|
8311
8487
|
}));
|
|
8312
|
-
return {
|
|
8488
|
+
return {
|
|
8489
|
+
isOpen
|
|
8490
|
+
};
|
|
8313
8491
|
}
|
|
8314
8492
|
});
|
|
8315
8493
|
|
|
@@ -8382,6 +8560,8 @@
|
|
|
8382
8560
|
const link = useLink(props, attrs);
|
|
8383
8561
|
const id = vue.computed(() => props.value === undefined ? link.href.value : props.value);
|
|
8384
8562
|
const {
|
|
8563
|
+
activate,
|
|
8564
|
+
isActivated,
|
|
8385
8565
|
select,
|
|
8386
8566
|
isSelected,
|
|
8387
8567
|
isIndeterminate,
|
|
@@ -8391,9 +8571,9 @@
|
|
|
8391
8571
|
openOnSelect
|
|
8392
8572
|
} = useNestedItem(id, false);
|
|
8393
8573
|
const list = useList();
|
|
8394
|
-
const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || isSelected.value));
|
|
8574
|
+
const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
|
|
8395
8575
|
const isLink = vue.computed(() => props.link !== false && link.isLink.value);
|
|
8396
|
-
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null
|
|
8576
|
+
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));
|
|
8397
8577
|
const roundedProps = vue.computed(() => props.rounded || props.nav);
|
|
8398
8578
|
const color = vue.computed(() => props.color ?? props.activeColor);
|
|
8399
8579
|
const variantProps = vue.computed(() => ({
|
|
@@ -8444,7 +8624,13 @@
|
|
|
8444
8624
|
emit('click', e);
|
|
8445
8625
|
if (isGroupActivator || !isClickable.value) return;
|
|
8446
8626
|
link.navigate?.(e);
|
|
8447
|
-
|
|
8627
|
+
if (root.activatable.value) {
|
|
8628
|
+
activate(!isActivated.value, e);
|
|
8629
|
+
} else if (root.selectable.value) {
|
|
8630
|
+
select(!isSelected.value, e);
|
|
8631
|
+
} else if (props.value != null) {
|
|
8632
|
+
select(!isSelected.value, e);
|
|
8633
|
+
}
|
|
8448
8634
|
}
|
|
8449
8635
|
function onKeyDown(e) {
|
|
8450
8636
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
@@ -8560,7 +8746,12 @@
|
|
|
8560
8746
|
}, null)])]
|
|
8561
8747
|
}), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
|
|
8562
8748
|
});
|
|
8563
|
-
return {
|
|
8749
|
+
return {
|
|
8750
|
+
isGroupActivator,
|
|
8751
|
+
isSelected,
|
|
8752
|
+
list,
|
|
8753
|
+
select
|
|
8754
|
+
};
|
|
8564
8755
|
}
|
|
8565
8756
|
});
|
|
8566
8757
|
|
|
@@ -8902,8 +9093,10 @@
|
|
|
8902
9093
|
props: makeVListProps(),
|
|
8903
9094
|
emits: {
|
|
8904
9095
|
'update:selected': value => true,
|
|
9096
|
+
'update:activated': value => true,
|
|
8905
9097
|
'update:opened': value => true,
|
|
8906
9098
|
'click:open': value => true,
|
|
9099
|
+
'click:activate': value => true,
|
|
8907
9100
|
'click:select': value => true
|
|
8908
9101
|
},
|
|
8909
9102
|
setup(props, _ref) {
|
|
@@ -8936,7 +9129,9 @@
|
|
|
8936
9129
|
roundedClasses
|
|
8937
9130
|
} = useRounded(props);
|
|
8938
9131
|
const {
|
|
9132
|
+
children,
|
|
8939
9133
|
open,
|
|
9134
|
+
parents,
|
|
8940
9135
|
select
|
|
8941
9136
|
} = useNested(props);
|
|
8942
9137
|
const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
|
|
@@ -9026,7 +9221,9 @@
|
|
|
9026
9221
|
return {
|
|
9027
9222
|
open,
|
|
9028
9223
|
select,
|
|
9029
|
-
focus
|
|
9224
|
+
focus,
|
|
9225
|
+
children,
|
|
9226
|
+
parents
|
|
9030
9227
|
};
|
|
9031
9228
|
}
|
|
9032
9229
|
});
|
|
@@ -9568,7 +9765,7 @@
|
|
|
9568
9765
|
scope?.stop();
|
|
9569
9766
|
if (!(data.isActive.value && props.scrollStrategy)) return;
|
|
9570
9767
|
scope = vue.effectScope();
|
|
9571
|
-
await
|
|
9768
|
+
await new Promise(resolve => setTimeout(resolve));
|
|
9572
9769
|
scope.active && scope.run(() => {
|
|
9573
9770
|
if (typeof props.scrollStrategy === 'function') {
|
|
9574
9771
|
props.scrollStrategy(data, props, scope);
|
|
@@ -10317,6 +10514,7 @@
|
|
|
10317
10514
|
if (v) isActive.value = false;
|
|
10318
10515
|
});
|
|
10319
10516
|
const root = vue.ref();
|
|
10517
|
+
const scrimEl = vue.ref();
|
|
10320
10518
|
const contentEl = vue.ref();
|
|
10321
10519
|
const {
|
|
10322
10520
|
contentStyles,
|
|
@@ -10338,8 +10536,10 @@
|
|
|
10338
10536
|
emit('click:outside', e);
|
|
10339
10537
|
if (!props.persistent) isActive.value = false;else animateClick();
|
|
10340
10538
|
}
|
|
10341
|
-
function closeConditional() {
|
|
10342
|
-
return isActive.value && globalTop.value
|
|
10539
|
+
function closeConditional(e) {
|
|
10540
|
+
return isActive.value && globalTop.value && (
|
|
10541
|
+
// If using scrim, only close if clicking on it rather than anything opened on top
|
|
10542
|
+
!props.scrim || e.target === scrimEl.value);
|
|
10343
10543
|
}
|
|
10344
10544
|
IN_BROWSER && vue.watch(isActive, val => {
|
|
10345
10545
|
if (val) {
|
|
@@ -10426,7 +10626,8 @@
|
|
|
10426
10626
|
"ref": root
|
|
10427
10627
|
}, scopeId, attrs), [vue.createVNode(Scrim, vue.mergeProps({
|
|
10428
10628
|
"color": scrimColor,
|
|
10429
|
-
"modelValue": isActive.value && !!props.scrim
|
|
10629
|
+
"modelValue": isActive.value && !!props.scrim,
|
|
10630
|
+
"ref": scrimEl
|
|
10430
10631
|
}, scrimEvents.value), null), vue.createVNode(MaybeTransition, {
|
|
10431
10632
|
"appear": true,
|
|
10432
10633
|
"persisted": true,
|
|
@@ -10449,6 +10650,7 @@
|
|
|
10449
10650
|
})]));
|
|
10450
10651
|
return {
|
|
10451
10652
|
activatorEl,
|
|
10653
|
+
scrimEl,
|
|
10452
10654
|
target,
|
|
10453
10655
|
animateClick,
|
|
10454
10656
|
contentEl,
|
|
@@ -10644,6 +10846,9 @@
|
|
|
10644
10846
|
isActive.value = false;
|
|
10645
10847
|
overlay.value?.activatorEl?.focus();
|
|
10646
10848
|
}
|
|
10849
|
+
} else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
|
|
10850
|
+
isActive.value = false;
|
|
10851
|
+
parent?.closeParents();
|
|
10647
10852
|
}
|
|
10648
10853
|
}
|
|
10649
10854
|
function onActivatorKeydown(e) {
|
|
@@ -10921,7 +11126,7 @@
|
|
|
10921
11126
|
}
|
|
10922
11127
|
useRender(() => {
|
|
10923
11128
|
const isOutlined = props.variant === 'outlined';
|
|
10924
|
-
const hasPrepend = slots['prepend-inner'] || props.prependInnerIcon;
|
|
11129
|
+
const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);
|
|
10925
11130
|
const hasClear = !!(props.clearable || slots.clear);
|
|
10926
11131
|
const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);
|
|
10927
11132
|
const label = () => slots.label ? slots.label({
|
|
@@ -11906,9 +12111,11 @@
|
|
|
11906
12111
|
});
|
|
11907
12112
|
}
|
|
11908
12113
|
});
|
|
11909
|
-
vue.watch(() => props.items,
|
|
11910
|
-
if (
|
|
11911
|
-
|
|
12114
|
+
vue.watch(() => props.items, (newVal, oldVal) => {
|
|
12115
|
+
if (menu.value) return;
|
|
12116
|
+
if (isFocused.value && !oldVal.length && newVal.length) {
|
|
12117
|
+
menu.value = true;
|
|
12118
|
+
}
|
|
11912
12119
|
});
|
|
11913
12120
|
useRender(() => {
|
|
11914
12121
|
const hasChips = !!(props.chips || slots.chip);
|
|
@@ -12343,8 +12550,8 @@
|
|
|
12343
12550
|
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
12344
12551
|
listRef.value?.focus('next');
|
|
12345
12552
|
}
|
|
12346
|
-
if (!props.multiple) return;
|
|
12347
12553
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
12554
|
+
if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
|
|
12348
12555
|
if (selectionIndex.value < 0) {
|
|
12349
12556
|
if (e.key === 'Backspace' && !search.value) {
|
|
12350
12557
|
selectionIndex.value = length - 1;
|
|
@@ -12352,10 +12559,10 @@
|
|
|
12352
12559
|
return;
|
|
12353
12560
|
}
|
|
12354
12561
|
const originalSelectionIndex = selectionIndex.value;
|
|
12355
|
-
|
|
12356
|
-
if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
|
|
12562
|
+
select(model.value[selectionIndex.value], false);
|
|
12357
12563
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
12358
12564
|
}
|
|
12565
|
+
if (!props.multiple) return;
|
|
12359
12566
|
if (e.key === 'ArrowLeft') {
|
|
12360
12567
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
12361
12568
|
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
@@ -12408,7 +12615,7 @@
|
|
|
12408
12615
|
/** @param set - null means toggle */
|
|
12409
12616
|
function select(item) {
|
|
12410
12617
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
12411
|
-
if (item.props.disabled) return;
|
|
12618
|
+
if (!item || item.props.disabled) return;
|
|
12412
12619
|
if (props.multiple) {
|
|
12413
12620
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
12414
12621
|
const add = set == null ? !~index : set;
|
|
@@ -12468,9 +12675,11 @@
|
|
|
12468
12675
|
});
|
|
12469
12676
|
}
|
|
12470
12677
|
});
|
|
12471
|
-
vue.watch(() => props.items,
|
|
12472
|
-
if (
|
|
12473
|
-
|
|
12678
|
+
vue.watch(() => props.items, (newVal, oldVal) => {
|
|
12679
|
+
if (menu.value) return;
|
|
12680
|
+
if (isFocused.value && !oldVal.length && newVal.length) {
|
|
12681
|
+
menu.value = true;
|
|
12682
|
+
}
|
|
12474
12683
|
});
|
|
12475
12684
|
useRender(() => {
|
|
12476
12685
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
@@ -16127,6 +16336,7 @@
|
|
|
16127
16336
|
}
|
|
16128
16337
|
menu.value = !menu.value;
|
|
16129
16338
|
}
|
|
16339
|
+
// eslint-disable-next-line complexity
|
|
16130
16340
|
function onKeydown(e) {
|
|
16131
16341
|
if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
|
|
16132
16342
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
@@ -16153,8 +16363,8 @@
|
|
|
16153
16363
|
select(transformItem$3(props, search.value));
|
|
16154
16364
|
if (hasSelectionSlot.value) _search.value = '';
|
|
16155
16365
|
}
|
|
16156
|
-
if (!props.multiple) return;
|
|
16157
16366
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
16367
|
+
if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
|
|
16158
16368
|
if (selectionIndex.value < 0) {
|
|
16159
16369
|
if (e.key === 'Backspace' && !search.value) {
|
|
16160
16370
|
selectionIndex.value = length - 1;
|
|
@@ -16162,10 +16372,10 @@
|
|
|
16162
16372
|
return;
|
|
16163
16373
|
}
|
|
16164
16374
|
const originalSelectionIndex = selectionIndex.value;
|
|
16165
|
-
|
|
16166
|
-
if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
|
|
16375
|
+
select(model.value[selectionIndex.value], false);
|
|
16167
16376
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
16168
16377
|
}
|
|
16378
|
+
if (!props.multiple) return;
|
|
16169
16379
|
if (e.key === 'ArrowLeft') {
|
|
16170
16380
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
16171
16381
|
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
@@ -16196,7 +16406,7 @@
|
|
|
16196
16406
|
/** @param set - null means toggle */
|
|
16197
16407
|
function select(item) {
|
|
16198
16408
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
16199
|
-
if (item.props.disabled) return;
|
|
16409
|
+
if (!item || item.props.disabled) return;
|
|
16200
16410
|
if (props.multiple) {
|
|
16201
16411
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
16202
16412
|
const add = set == null ? !~index : set;
|
|
@@ -16273,9 +16483,11 @@
|
|
|
16273
16483
|
});
|
|
16274
16484
|
}
|
|
16275
16485
|
});
|
|
16276
|
-
vue.watch(() => props.items,
|
|
16277
|
-
if (
|
|
16278
|
-
|
|
16486
|
+
vue.watch(() => props.items, (newVal, oldVal) => {
|
|
16487
|
+
if (menu.value) return;
|
|
16488
|
+
if (isFocused.value && !oldVal.length && newVal.length) {
|
|
16489
|
+
menu.value = true;
|
|
16490
|
+
}
|
|
16279
16491
|
});
|
|
16280
16492
|
useRender(() => {
|
|
16281
16493
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
@@ -17422,7 +17634,7 @@
|
|
|
17422
17634
|
return d;
|
|
17423
17635
|
}
|
|
17424
17636
|
function startOfDay(date) {
|
|
17425
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
17637
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);
|
|
17426
17638
|
}
|
|
17427
17639
|
function endOfDay(date) {
|
|
17428
17640
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
|
|
@@ -20296,6 +20508,7 @@
|
|
|
20296
20508
|
emit('click:month');
|
|
20297
20509
|
}
|
|
20298
20510
|
useRender(() => {
|
|
20511
|
+
// TODO: add slot support and scope defaults
|
|
20299
20512
|
return vue.createVNode("div", {
|
|
20300
20513
|
"class": ['v-date-picker-controls']
|
|
20301
20514
|
}, [vue.createVNode(VBtn, {
|
|
@@ -20574,6 +20787,12 @@
|
|
|
20574
20787
|
const adapter = useDate();
|
|
20575
20788
|
const rangeStart = vue.shallowRef();
|
|
20576
20789
|
const rangeStop = vue.shallowRef();
|
|
20790
|
+
if (props.multiple === 'range' && model.value.length > 0) {
|
|
20791
|
+
rangeStart.value = model.value[0];
|
|
20792
|
+
if (model.value.length > 1) {
|
|
20793
|
+
rangeStop.value = model.value[model.value.length - 1];
|
|
20794
|
+
}
|
|
20795
|
+
}
|
|
20577
20796
|
const atMax = vue.computed(() => {
|
|
20578
20797
|
const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;
|
|
20579
20798
|
return model.value.length >= max;
|
|
@@ -20584,15 +20803,15 @@
|
|
|
20584
20803
|
rangeStart.value = _value;
|
|
20585
20804
|
model.value = [rangeStart.value];
|
|
20586
20805
|
} else if (!rangeStop.value) {
|
|
20587
|
-
if (adapter.isSameDay(
|
|
20806
|
+
if (adapter.isSameDay(_value, rangeStart.value)) {
|
|
20588
20807
|
rangeStart.value = undefined;
|
|
20589
20808
|
model.value = [];
|
|
20590
20809
|
return;
|
|
20591
|
-
} else if (adapter.isBefore(
|
|
20592
|
-
rangeStop.value = rangeStart.value;
|
|
20810
|
+
} else if (adapter.isBefore(_value, rangeStart.value)) {
|
|
20811
|
+
rangeStop.value = adapter.endOfDay(rangeStart.value);
|
|
20593
20812
|
rangeStart.value = _value;
|
|
20594
20813
|
} else {
|
|
20595
|
-
rangeStop.value = _value;
|
|
20814
|
+
rangeStop.value = adapter.endOfDay(_value);
|
|
20596
20815
|
}
|
|
20597
20816
|
const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
|
|
20598
20817
|
const datesInRange = [rangeStart.value];
|
|
@@ -22759,12 +22978,24 @@
|
|
|
22759
22978
|
default: () => [hasImage && vue.createVNode("div", {
|
|
22760
22979
|
"key": "image",
|
|
22761
22980
|
"class": "v-navigation-drawer__img"
|
|
22762
|
-
}, [slots.image ?
|
|
22763
|
-
|
|
22764
|
-
|
|
22765
|
-
"
|
|
22766
|
-
"
|
|
22767
|
-
|
|
22981
|
+
}, [!slots.image ? vue.createVNode(VImg, {
|
|
22982
|
+
"key": "image-img",
|
|
22983
|
+
"alt": "",
|
|
22984
|
+
"cover": true,
|
|
22985
|
+
"height": "inherit",
|
|
22986
|
+
"src": props.image
|
|
22987
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
22988
|
+
"key": "image-defaults",
|
|
22989
|
+
"disabled": !props.image,
|
|
22990
|
+
"defaults": {
|
|
22991
|
+
VImg: {
|
|
22992
|
+
alt: '',
|
|
22993
|
+
cover: true,
|
|
22994
|
+
height: 'inherit',
|
|
22995
|
+
src: props.image
|
|
22996
|
+
}
|
|
22997
|
+
}
|
|
22998
|
+
}, slots.image)]), slots.prepend && vue.createVNode("div", {
|
|
22768
22999
|
"class": "v-navigation-drawer__prepend"
|
|
22769
23000
|
}, [slots.prepend?.()]), vue.createVNode("div", {
|
|
22770
23001
|
"class": "v-navigation-drawer__content"
|
|
@@ -22865,7 +23096,7 @@
|
|
|
22865
23096
|
function onInput() {
|
|
22866
23097
|
// The maxlength attribute doesn't work for the number type input, so the text type is used.
|
|
22867
23098
|
// The following logic simulates the behavior of a number input.
|
|
22868
|
-
if (
|
|
23099
|
+
if (isValidNumber(current.value.value)) {
|
|
22869
23100
|
current.value.value = '';
|
|
22870
23101
|
return;
|
|
22871
23102
|
}
|
|
@@ -22911,7 +23142,9 @@
|
|
|
22911
23142
|
function onPaste(index, e) {
|
|
22912
23143
|
e.preventDefault();
|
|
22913
23144
|
e.stopPropagation();
|
|
22914
|
-
|
|
23145
|
+
const clipboardText = e?.clipboardData?.getData('Text') ?? '';
|
|
23146
|
+
if (!isValidNumber(clipboardText)) return;
|
|
23147
|
+
model.value = clipboardText.split('');
|
|
22915
23148
|
inputRef.value?.[index].blur();
|
|
22916
23149
|
}
|
|
22917
23150
|
function reset() {
|
|
@@ -22925,6 +23158,9 @@
|
|
|
22925
23158
|
blur();
|
|
22926
23159
|
focusIndex.value = -1;
|
|
22927
23160
|
}
|
|
23161
|
+
function isValidNumber(value) {
|
|
23162
|
+
return props.type === 'number' && !isNaN(Number(value));
|
|
23163
|
+
}
|
|
22928
23164
|
provideDefaults({
|
|
22929
23165
|
VField: {
|
|
22930
23166
|
color: vue.computed(() => props.color),
|
|
@@ -25402,78 +25638,6 @@
|
|
|
25402
25638
|
}
|
|
25403
25639
|
});
|
|
25404
25640
|
|
|
25405
|
-
// Types
|
|
25406
|
-
|
|
25407
|
-
const makeVConfirmEditProps = propsFactory({
|
|
25408
|
-
modelValue: null,
|
|
25409
|
-
color: String,
|
|
25410
|
-
cancelText: {
|
|
25411
|
-
type: String,
|
|
25412
|
-
default: '$vuetify.confirmEdit.cancel'
|
|
25413
|
-
},
|
|
25414
|
-
okText: {
|
|
25415
|
-
type: String,
|
|
25416
|
-
default: '$vuetify.confirmEdit.ok'
|
|
25417
|
-
}
|
|
25418
|
-
}, 'VConfirmEdit');
|
|
25419
|
-
const VConfirmEdit = genericComponent()({
|
|
25420
|
-
name: 'VConfirmEdit',
|
|
25421
|
-
props: makeVConfirmEditProps(),
|
|
25422
|
-
emits: {
|
|
25423
|
-
cancel: () => true,
|
|
25424
|
-
save: value => true,
|
|
25425
|
-
'update:modelValue': value => true
|
|
25426
|
-
},
|
|
25427
|
-
setup(props, _ref) {
|
|
25428
|
-
let {
|
|
25429
|
-
emit,
|
|
25430
|
-
slots
|
|
25431
|
-
} = _ref;
|
|
25432
|
-
const model = useProxiedModel(props, 'modelValue');
|
|
25433
|
-
const internalModel = vue.ref();
|
|
25434
|
-
vue.watchEffect(() => {
|
|
25435
|
-
internalModel.value = structuredClone(vue.toRaw(model.value));
|
|
25436
|
-
});
|
|
25437
|
-
const {
|
|
25438
|
-
t
|
|
25439
|
-
} = useLocale();
|
|
25440
|
-
const isPristine = vue.computed(() => {
|
|
25441
|
-
return deepEqual(model.value, internalModel.value);
|
|
25442
|
-
});
|
|
25443
|
-
function save() {
|
|
25444
|
-
model.value = internalModel.value;
|
|
25445
|
-
emit('save', internalModel.value);
|
|
25446
|
-
}
|
|
25447
|
-
function cancel() {
|
|
25448
|
-
internalModel.value = structuredClone(vue.toRaw(model.value));
|
|
25449
|
-
emit('cancel');
|
|
25450
|
-
}
|
|
25451
|
-
let actionsUsed = false;
|
|
25452
|
-
useRender(() => {
|
|
25453
|
-
const actions = vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, {
|
|
25454
|
-
"disabled": isPristine.value,
|
|
25455
|
-
"variant": "text",
|
|
25456
|
-
"color": props.color,
|
|
25457
|
-
"onClick": cancel,
|
|
25458
|
-
"text": t(props.cancelText)
|
|
25459
|
-
}, null), vue.createVNode(VBtn, {
|
|
25460
|
-
"disabled": isPristine.value,
|
|
25461
|
-
"variant": "text",
|
|
25462
|
-
"color": props.color,
|
|
25463
|
-
"onClick": save,
|
|
25464
|
-
"text": t(props.okText)
|
|
25465
|
-
}, null)]);
|
|
25466
|
-
return vue.createVNode(vue.Fragment, null, [slots.default?.({
|
|
25467
|
-
model: internalModel,
|
|
25468
|
-
get actions() {
|
|
25469
|
-
actionsUsed = true;
|
|
25470
|
-
return actions;
|
|
25471
|
-
}
|
|
25472
|
-
}), !actionsUsed && actions]);
|
|
25473
|
-
});
|
|
25474
|
-
}
|
|
25475
|
-
});
|
|
25476
|
-
|
|
25477
25641
|
const makeVCalendarIntervalEventProps = propsFactory({
|
|
25478
25642
|
allDay: Boolean,
|
|
25479
25643
|
interval: Object,
|
|
@@ -25945,20 +26109,223 @@
|
|
|
25945
26109
|
}
|
|
25946
26110
|
});
|
|
25947
26111
|
|
|
25948
|
-
|
|
25949
|
-
|
|
25950
|
-
|
|
25951
|
-
|
|
25952
|
-
|
|
26112
|
+
// Types
|
|
26113
|
+
|
|
26114
|
+
const makeVConfirmEditProps = propsFactory({
|
|
26115
|
+
modelValue: null,
|
|
26116
|
+
color: String,
|
|
26117
|
+
cancelText: {
|
|
25953
26118
|
type: String,
|
|
25954
|
-
default: '
|
|
26119
|
+
default: '$vuetify.confirmEdit.cancel'
|
|
25955
26120
|
},
|
|
25956
|
-
|
|
25957
|
-
|
|
25958
|
-
|
|
25959
|
-
|
|
26121
|
+
okText: {
|
|
26122
|
+
type: String,
|
|
26123
|
+
default: '$vuetify.confirmEdit.ok'
|
|
26124
|
+
}
|
|
26125
|
+
}, 'VConfirmEdit');
|
|
26126
|
+
const VConfirmEdit = genericComponent()({
|
|
26127
|
+
name: 'VConfirmEdit',
|
|
26128
|
+
props: makeVConfirmEditProps(),
|
|
26129
|
+
emits: {
|
|
26130
|
+
cancel: () => true,
|
|
26131
|
+
save: value => true,
|
|
26132
|
+
'update:modelValue': value => true
|
|
25960
26133
|
},
|
|
25961
|
-
|
|
26134
|
+
setup(props, _ref) {
|
|
26135
|
+
let {
|
|
26136
|
+
emit,
|
|
26137
|
+
slots
|
|
26138
|
+
} = _ref;
|
|
26139
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
26140
|
+
const internalModel = vue.ref();
|
|
26141
|
+
vue.watchEffect(() => {
|
|
26142
|
+
internalModel.value = structuredClone(vue.toRaw(model.value));
|
|
26143
|
+
});
|
|
26144
|
+
const {
|
|
26145
|
+
t
|
|
26146
|
+
} = useLocale();
|
|
26147
|
+
const isPristine = vue.computed(() => {
|
|
26148
|
+
return deepEqual(model.value, internalModel.value);
|
|
26149
|
+
});
|
|
26150
|
+
function save() {
|
|
26151
|
+
model.value = internalModel.value;
|
|
26152
|
+
emit('save', internalModel.value);
|
|
26153
|
+
}
|
|
26154
|
+
function cancel() {
|
|
26155
|
+
internalModel.value = structuredClone(vue.toRaw(model.value));
|
|
26156
|
+
emit('cancel');
|
|
26157
|
+
}
|
|
26158
|
+
let actionsUsed = false;
|
|
26159
|
+
useRender(() => {
|
|
26160
|
+
const actions = vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, {
|
|
26161
|
+
"disabled": isPristine.value,
|
|
26162
|
+
"variant": "text",
|
|
26163
|
+
"color": props.color,
|
|
26164
|
+
"onClick": cancel,
|
|
26165
|
+
"text": t(props.cancelText)
|
|
26166
|
+
}, null), vue.createVNode(VBtn, {
|
|
26167
|
+
"disabled": isPristine.value,
|
|
26168
|
+
"variant": "text",
|
|
26169
|
+
"color": props.color,
|
|
26170
|
+
"onClick": save,
|
|
26171
|
+
"text": t(props.okText)
|
|
26172
|
+
}, null)]);
|
|
26173
|
+
return vue.createVNode(vue.Fragment, null, [slots.default?.({
|
|
26174
|
+
model: internalModel,
|
|
26175
|
+
get actions() {
|
|
26176
|
+
actionsUsed = true;
|
|
26177
|
+
return actions;
|
|
26178
|
+
}
|
|
26179
|
+
}), !actionsUsed && actions]);
|
|
26180
|
+
});
|
|
26181
|
+
}
|
|
26182
|
+
});
|
|
26183
|
+
|
|
26184
|
+
// Types
|
|
26185
|
+
|
|
26186
|
+
// Types
|
|
26187
|
+
|
|
26188
|
+
const makeVEmptyStateProps = propsFactory({
|
|
26189
|
+
actionText: String,
|
|
26190
|
+
bgColor: String,
|
|
26191
|
+
color: String,
|
|
26192
|
+
icon: IconValue,
|
|
26193
|
+
image: String,
|
|
26194
|
+
justify: {
|
|
26195
|
+
type: String,
|
|
26196
|
+
default: 'center'
|
|
26197
|
+
},
|
|
26198
|
+
headline: String,
|
|
26199
|
+
title: String,
|
|
26200
|
+
text: String,
|
|
26201
|
+
textWidth: {
|
|
26202
|
+
type: [Number, String],
|
|
26203
|
+
default: 500
|
|
26204
|
+
},
|
|
26205
|
+
href: String,
|
|
26206
|
+
to: String,
|
|
26207
|
+
...makeComponentProps(),
|
|
26208
|
+
...makeDimensionProps(),
|
|
26209
|
+
...makeSizeProps({
|
|
26210
|
+
size: undefined
|
|
26211
|
+
}),
|
|
26212
|
+
...makeThemeProps()
|
|
26213
|
+
}, 'VEmptyState');
|
|
26214
|
+
const VEmptyState = genericComponent()({
|
|
26215
|
+
name: 'VEmptyState',
|
|
26216
|
+
props: makeVEmptyStateProps(),
|
|
26217
|
+
emits: {
|
|
26218
|
+
'click:action': e => true
|
|
26219
|
+
},
|
|
26220
|
+
setup(props, _ref) {
|
|
26221
|
+
let {
|
|
26222
|
+
emit,
|
|
26223
|
+
slots
|
|
26224
|
+
} = _ref;
|
|
26225
|
+
const {
|
|
26226
|
+
themeClasses
|
|
26227
|
+
} = provideTheme(props);
|
|
26228
|
+
const {
|
|
26229
|
+
backgroundColorClasses,
|
|
26230
|
+
backgroundColorStyles
|
|
26231
|
+
} = useBackgroundColor(vue.toRef(props, 'bgColor'));
|
|
26232
|
+
const {
|
|
26233
|
+
dimensionStyles
|
|
26234
|
+
} = useDimension(props);
|
|
26235
|
+
function onClickAction(e) {
|
|
26236
|
+
emit('click:action', e);
|
|
26237
|
+
}
|
|
26238
|
+
useRender(() => {
|
|
26239
|
+
const hasActions = !!(slots.actions || props.actionText);
|
|
26240
|
+
const hasHeadline = !!(slots.headline || props.headline);
|
|
26241
|
+
const hasTitle = !!(slots.title || props.title);
|
|
26242
|
+
const hasText = !!(slots.text || props.text);
|
|
26243
|
+
const hasMedia = !!(slots.media || props.image || props.icon);
|
|
26244
|
+
const size = props.size || (props.image ? 200 : 96);
|
|
26245
|
+
return vue.createVNode("div", {
|
|
26246
|
+
"class": ['v-empty-state', {
|
|
26247
|
+
[`v-empty-state--${props.justify}`]: true
|
|
26248
|
+
}, themeClasses.value, backgroundColorClasses.value, props.class],
|
|
26249
|
+
"style": [backgroundColorStyles.value, dimensionStyles.value, props.style]
|
|
26250
|
+
}, [hasMedia && vue.createVNode("div", {
|
|
26251
|
+
"key": "media",
|
|
26252
|
+
"class": "v-empty-state__media"
|
|
26253
|
+
}, [!slots.media ? vue.createVNode(vue.Fragment, null, [props.image ? vue.createVNode(VImg, {
|
|
26254
|
+
"key": "image",
|
|
26255
|
+
"src": props.image,
|
|
26256
|
+
"height": size
|
|
26257
|
+
}, null) : props.icon ? vue.createVNode(VIcon, {
|
|
26258
|
+
"key": "icon",
|
|
26259
|
+
"size": size,
|
|
26260
|
+
"icon": props.icon
|
|
26261
|
+
}, null) : undefined]) : vue.createVNode(VDefaultsProvider, {
|
|
26262
|
+
"key": "media-defaults",
|
|
26263
|
+
"defaults": {
|
|
26264
|
+
VImg: {
|
|
26265
|
+
src: props.image,
|
|
26266
|
+
height: size
|
|
26267
|
+
},
|
|
26268
|
+
VIcon: {
|
|
26269
|
+
size,
|
|
26270
|
+
icon: props.icon
|
|
26271
|
+
}
|
|
26272
|
+
}
|
|
26273
|
+
}, {
|
|
26274
|
+
default: () => [slots.media()]
|
|
26275
|
+
})]), hasHeadline && vue.createVNode("div", {
|
|
26276
|
+
"key": "headline",
|
|
26277
|
+
"class": "v-empty-state__headline"
|
|
26278
|
+
}, [slots.headline?.() ?? props.headline]), hasTitle && vue.createVNode("div", {
|
|
26279
|
+
"key": "title",
|
|
26280
|
+
"class": "v-empty-state__title"
|
|
26281
|
+
}, [slots.title?.() ?? props.title]), hasText && vue.createVNode("div", {
|
|
26282
|
+
"key": "text",
|
|
26283
|
+
"class": "v-empty-state__text",
|
|
26284
|
+
"style": {
|
|
26285
|
+
maxWidth: convertToUnit(props.textWidth)
|
|
26286
|
+
}
|
|
26287
|
+
}, [slots.text?.() ?? props.text]), slots.default && vue.createVNode("div", {
|
|
26288
|
+
"key": "content",
|
|
26289
|
+
"class": "v-empty-state__content"
|
|
26290
|
+
}, [slots.default()]), hasActions && vue.createVNode("div", {
|
|
26291
|
+
"key": "actions",
|
|
26292
|
+
"class": "v-empty-state__actions"
|
|
26293
|
+
}, [vue.createVNode(VDefaultsProvider, {
|
|
26294
|
+
"defaults": {
|
|
26295
|
+
VBtn: {
|
|
26296
|
+
class: 'v-empty-state__action-btn',
|
|
26297
|
+
color: props.color,
|
|
26298
|
+
text: props.actionText
|
|
26299
|
+
}
|
|
26300
|
+
}
|
|
26301
|
+
}, {
|
|
26302
|
+
default: () => [slots.actions?.({
|
|
26303
|
+
props: {
|
|
26304
|
+
onClick: onClickAction
|
|
26305
|
+
}
|
|
26306
|
+
}) ?? vue.createVNode(VBtn, {
|
|
26307
|
+
"onClick": onClickAction
|
|
26308
|
+
}, null)]
|
|
26309
|
+
})])]);
|
|
26310
|
+
});
|
|
26311
|
+
return {};
|
|
26312
|
+
}
|
|
26313
|
+
});
|
|
26314
|
+
|
|
26315
|
+
const makeVFabProps = propsFactory({
|
|
26316
|
+
app: Boolean,
|
|
26317
|
+
appear: Boolean,
|
|
26318
|
+
extended: Boolean,
|
|
26319
|
+
location: {
|
|
26320
|
+
type: String,
|
|
26321
|
+
default: 'bottom end'
|
|
26322
|
+
},
|
|
26323
|
+
offset: Boolean,
|
|
26324
|
+
modelValue: {
|
|
26325
|
+
type: Boolean,
|
|
26326
|
+
default: true
|
|
26327
|
+
},
|
|
26328
|
+
...omit(makeVBtnProps({
|
|
25962
26329
|
active: true
|
|
25963
26330
|
}), ['location']),
|
|
25964
26331
|
...makeLayoutItemProps(),
|
|
@@ -26045,6 +26412,203 @@
|
|
|
26045
26412
|
}
|
|
26046
26413
|
});
|
|
26047
26414
|
|
|
26415
|
+
// Types
|
|
26416
|
+
|
|
26417
|
+
const makeVNumberInputProps = propsFactory({
|
|
26418
|
+
controlVariant: {
|
|
26419
|
+
type: String,
|
|
26420
|
+
default: 'default'
|
|
26421
|
+
},
|
|
26422
|
+
inset: Boolean,
|
|
26423
|
+
hideInput: Boolean,
|
|
26424
|
+
min: Number,
|
|
26425
|
+
max: Number,
|
|
26426
|
+
step: Number,
|
|
26427
|
+
...only(makeVInputProps(), ['density', 'disabled', 'focused', 'hideDetails', 'hint', 'label', 'persistentHint', 'readonly']),
|
|
26428
|
+
...only(makeVFieldProps(), ['baseColor', 'bgColor', 'class', 'color', 'disabled', 'error', 'loading', 'reverse', 'rounded', 'style', 'theme', 'variant']),
|
|
26429
|
+
...makeFocusProps()
|
|
26430
|
+
}, 'VNumberInput');
|
|
26431
|
+
const VNumberInput = genericComponent()({
|
|
26432
|
+
name: 'VNumberInput',
|
|
26433
|
+
inheritAttrs: false,
|
|
26434
|
+
props: {
|
|
26435
|
+
...makeVNumberInputProps(),
|
|
26436
|
+
modelValue: {
|
|
26437
|
+
type: [Number, String],
|
|
26438
|
+
default: 0
|
|
26439
|
+
}
|
|
26440
|
+
},
|
|
26441
|
+
emits: {
|
|
26442
|
+
'update:modelValue': val => true
|
|
26443
|
+
},
|
|
26444
|
+
setup(props, _ref) {
|
|
26445
|
+
let {
|
|
26446
|
+
attrs,
|
|
26447
|
+
emit,
|
|
26448
|
+
slots
|
|
26449
|
+
} = _ref;
|
|
26450
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
26451
|
+
const {
|
|
26452
|
+
isFocused,
|
|
26453
|
+
focus,
|
|
26454
|
+
blur
|
|
26455
|
+
} = useFocus(props);
|
|
26456
|
+
const inputRef = vue.ref();
|
|
26457
|
+
function onFocus() {
|
|
26458
|
+
if (!isFocused.value) focus();
|
|
26459
|
+
}
|
|
26460
|
+
const controlVariant = vue.computed(() => {
|
|
26461
|
+
return props.hideInput ? 'stacked' : props.controlVariant;
|
|
26462
|
+
});
|
|
26463
|
+
function toggleUpDown() {
|
|
26464
|
+
let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
26465
|
+
if (increment) {
|
|
26466
|
+
inputRef.value?.stepUp();
|
|
26467
|
+
} else {
|
|
26468
|
+
inputRef.value?.stepDown();
|
|
26469
|
+
}
|
|
26470
|
+
if (inputRef.value) model.value = parseInt(inputRef.value.value, 10);
|
|
26471
|
+
}
|
|
26472
|
+
function onClickUp() {
|
|
26473
|
+
toggleUpDown();
|
|
26474
|
+
}
|
|
26475
|
+
function onClickDown() {
|
|
26476
|
+
toggleUpDown(false);
|
|
26477
|
+
}
|
|
26478
|
+
const incrementSlotProps = vue.computed(() => ({
|
|
26479
|
+
click: onClickUp
|
|
26480
|
+
}));
|
|
26481
|
+
const decrementSlotProps = vue.computed(() => ({
|
|
26482
|
+
click: onClickDown
|
|
26483
|
+
}));
|
|
26484
|
+
useRender(() => {
|
|
26485
|
+
const fieldProps = filterFieldProps(props);
|
|
26486
|
+
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
|
26487
|
+
const {
|
|
26488
|
+
modelValue: _,
|
|
26489
|
+
...inputProps
|
|
26490
|
+
} = VInput.filterProps(props);
|
|
26491
|
+
function controlNode() {
|
|
26492
|
+
const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%';
|
|
26493
|
+
return vue.createVNode("div", {
|
|
26494
|
+
"class": "v-number-input__control"
|
|
26495
|
+
}, [!slots.decrement ? vue.createVNode(VBtn, {
|
|
26496
|
+
"flat": true,
|
|
26497
|
+
"key": "decrement-btn",
|
|
26498
|
+
"height": defaultHeight,
|
|
26499
|
+
"icon": "mdi-chevron-down",
|
|
26500
|
+
"rounded": "0",
|
|
26501
|
+
"size": "small",
|
|
26502
|
+
"onClick": onClickDown
|
|
26503
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
26504
|
+
"key": "decrement-defaults",
|
|
26505
|
+
"defaults": {
|
|
26506
|
+
VBtn: {
|
|
26507
|
+
flat: true,
|
|
26508
|
+
rounded: '0',
|
|
26509
|
+
height: defaultHeight,
|
|
26510
|
+
size: 'small',
|
|
26511
|
+
icon: 'mdi-chevron-down'
|
|
26512
|
+
}
|
|
26513
|
+
}
|
|
26514
|
+
}, {
|
|
26515
|
+
default: () => [slots.decrement(decrementSlotProps.value)]
|
|
26516
|
+
}), vue.createVNode(VDivider, {
|
|
26517
|
+
"vertical": controlVariant.value !== 'stacked'
|
|
26518
|
+
}, null), !slots.increment ? vue.createVNode(VBtn, {
|
|
26519
|
+
"flat": true,
|
|
26520
|
+
"key": "increment-btn",
|
|
26521
|
+
"height": defaultHeight,
|
|
26522
|
+
"icon": "mdi-chevron-up",
|
|
26523
|
+
"onClick": onClickUp,
|
|
26524
|
+
"rounded": "0",
|
|
26525
|
+
"size": "small"
|
|
26526
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
26527
|
+
"key": "increment-defaults",
|
|
26528
|
+
"defaults": {
|
|
26529
|
+
VBtn: {
|
|
26530
|
+
flat: true,
|
|
26531
|
+
height: defaultHeight,
|
|
26532
|
+
rounded: '0',
|
|
26533
|
+
size: 'small',
|
|
26534
|
+
icon: 'mdi-chevron-up'
|
|
26535
|
+
}
|
|
26536
|
+
}
|
|
26537
|
+
}, {
|
|
26538
|
+
default: () => [slots.increment(incrementSlotProps.value)]
|
|
26539
|
+
})]);
|
|
26540
|
+
}
|
|
26541
|
+
function dividerNode() {
|
|
26542
|
+
return !props.hideInput && !props.inset ? vue.createVNode(VDivider, {
|
|
26543
|
+
"vertical": true
|
|
26544
|
+
}, null) : undefined;
|
|
26545
|
+
}
|
|
26546
|
+
return vue.createVNode(VInput, vue.mergeProps({
|
|
26547
|
+
"class": ['v-number-input', {
|
|
26548
|
+
'v-number-input--default': controlVariant.value === 'default',
|
|
26549
|
+
'v-number-input--hide-input': props.hideInput,
|
|
26550
|
+
'v-number-input--inset': props.inset,
|
|
26551
|
+
'v-number-input--reverse': props.reverse,
|
|
26552
|
+
'v-number-input--split': controlVariant.value === 'split',
|
|
26553
|
+
'v-number-input--stacked': controlVariant.value === 'stacked'
|
|
26554
|
+
}, props.class]
|
|
26555
|
+
}, rootAttrs, inputProps, {
|
|
26556
|
+
"focused": isFocused.value,
|
|
26557
|
+
"style": props.style
|
|
26558
|
+
}), {
|
|
26559
|
+
...slots,
|
|
26560
|
+
default: () => vue.createVNode(VField, vue.mergeProps(fieldProps, {
|
|
26561
|
+
"active": true,
|
|
26562
|
+
"focused": isFocused.value
|
|
26563
|
+
}), {
|
|
26564
|
+
...slots,
|
|
26565
|
+
default: _ref2 => {
|
|
26566
|
+
let {
|
|
26567
|
+
props: {
|
|
26568
|
+
class: fieldClass,
|
|
26569
|
+
...slotProps
|
|
26570
|
+
}
|
|
26571
|
+
} = _ref2;
|
|
26572
|
+
return vue.createVNode("input", vue.mergeProps({
|
|
26573
|
+
"ref": inputRef,
|
|
26574
|
+
"type": "number",
|
|
26575
|
+
"value": model.value,
|
|
26576
|
+
"class": fieldClass,
|
|
26577
|
+
"max": props.max,
|
|
26578
|
+
"min": props.min,
|
|
26579
|
+
"step": props.step,
|
|
26580
|
+
"onFocus": onFocus,
|
|
26581
|
+
"onBlur": blur
|
|
26582
|
+
}, inputAttrs), null);
|
|
26583
|
+
},
|
|
26584
|
+
'append-inner': controlVariant.value === 'split' ? () => vue.createVNode("div", {
|
|
26585
|
+
"class": "v-number-input__control"
|
|
26586
|
+
}, [vue.createVNode(VDivider, {
|
|
26587
|
+
"vertical": true
|
|
26588
|
+
}, null), vue.createVNode(VBtn, {
|
|
26589
|
+
"flat": true,
|
|
26590
|
+
"height": "100%",
|
|
26591
|
+
"icon": "mdi-plus",
|
|
26592
|
+
"tile": true,
|
|
26593
|
+
"onClick": onClickUp
|
|
26594
|
+
}, null)]) : !props.reverse ? () => vue.createVNode(vue.Fragment, null, [dividerNode(), controlNode()]) : undefined,
|
|
26595
|
+
'prepend-inner': controlVariant.value === 'split' ? () => vue.createVNode("div", {
|
|
26596
|
+
"class": "v-number-input__control"
|
|
26597
|
+
}, [vue.createVNode(VBtn, {
|
|
26598
|
+
"flat": true,
|
|
26599
|
+
"height": "100%",
|
|
26600
|
+
"icon": "mdi-minus",
|
|
26601
|
+
"tile": true,
|
|
26602
|
+
"onClick": onClickDown
|
|
26603
|
+
}, null), vue.createVNode(VDivider, {
|
|
26604
|
+
"vertical": true
|
|
26605
|
+
}, null)]) : props.reverse ? () => vue.createVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined
|
|
26606
|
+
})
|
|
26607
|
+
});
|
|
26608
|
+
});
|
|
26609
|
+
}
|
|
26610
|
+
});
|
|
26611
|
+
|
|
26048
26612
|
// Utilities
|
|
26049
26613
|
|
|
26050
26614
|
// Types
|
|
@@ -26492,6 +27056,8 @@
|
|
|
26492
27056
|
}
|
|
26493
27057
|
});
|
|
26494
27058
|
|
|
27059
|
+
// Types
|
|
27060
|
+
|
|
26495
27061
|
const makeVSpeedDialProps = propsFactory({
|
|
26496
27062
|
...makeComponentProps(),
|
|
26497
27063
|
...makeVMenuProps({
|
|
@@ -26510,14 +27076,17 @@
|
|
|
26510
27076
|
let {
|
|
26511
27077
|
slots
|
|
26512
27078
|
} = _ref;
|
|
27079
|
+
const menuRef = vue.ref();
|
|
26513
27080
|
useRender(() => {
|
|
26514
27081
|
const menuProps = VMenu.filterProps(props);
|
|
26515
27082
|
return vue.createVNode(VMenu, vue.mergeProps(menuProps, {
|
|
26516
27083
|
"class": props.class,
|
|
26517
27084
|
"style": props.style,
|
|
26518
|
-
"contentClass": "v-speed-dial__content"
|
|
27085
|
+
"contentClass": "v-speed-dial__content",
|
|
27086
|
+
"ref": menuRef
|
|
26519
27087
|
}), {
|
|
26520
|
-
|
|
27088
|
+
...slots,
|
|
27089
|
+
default: slotProps => vue.createVNode(VDefaultsProvider, {
|
|
26521
27090
|
"defaults": {
|
|
26522
27091
|
VBtn: {
|
|
26523
27092
|
size: 'small'
|
|
@@ -26529,9 +27098,9 @@
|
|
|
26529
27098
|
"group": true,
|
|
26530
27099
|
"transition": props.transition
|
|
26531
27100
|
}, {
|
|
26532
|
-
default: () => [slots.default?.()]
|
|
27101
|
+
default: () => [slots.default?.(slotProps)]
|
|
26533
27102
|
})]
|
|
26534
|
-
})
|
|
27103
|
+
})
|
|
26535
27104
|
});
|
|
26536
27105
|
});
|
|
26537
27106
|
return {};
|
|
@@ -26540,132 +27109,358 @@
|
|
|
26540
27109
|
|
|
26541
27110
|
// Types
|
|
26542
27111
|
|
|
27112
|
+
const makeVTreeviewGroupProps = propsFactory({
|
|
27113
|
+
...omit(makeVListGroupProps({
|
|
27114
|
+
collapseIcon: '$treeviewCollapse',
|
|
27115
|
+
expandIcon: '$treeviewExpand'
|
|
27116
|
+
}), ['subgroup'])
|
|
27117
|
+
}, 'VTreeviewGroup');
|
|
27118
|
+
const VTreeviewGroup = genericComponent()({
|
|
27119
|
+
name: 'VTreeviewGroup',
|
|
27120
|
+
props: makeVTreeviewGroupProps(),
|
|
27121
|
+
setup(props, _ref) {
|
|
27122
|
+
let {
|
|
27123
|
+
slots
|
|
27124
|
+
} = _ref;
|
|
27125
|
+
const vListGroupRef = vue.ref();
|
|
27126
|
+
const toggleIcon = vue.computed(() => vListGroupRef.value?.isOpen ? props.collapseIcon : props.expandIcon);
|
|
27127
|
+
const activatorDefaults = vue.computed(() => ({
|
|
27128
|
+
VTreeviewItem: {
|
|
27129
|
+
prependIcon: undefined,
|
|
27130
|
+
appendIcon: undefined,
|
|
27131
|
+
active: vListGroupRef.value?.isOpen,
|
|
27132
|
+
toggleIcon: toggleIcon.value
|
|
27133
|
+
}
|
|
27134
|
+
}));
|
|
27135
|
+
useRender(() => {
|
|
27136
|
+
const listGroupProps = VListGroup.filterProps(props);
|
|
27137
|
+
return vue.createVNode(VListGroup, vue.mergeProps(listGroupProps, {
|
|
27138
|
+
"ref": vListGroupRef,
|
|
27139
|
+
"class": ['v-treeview-group', props.class],
|
|
27140
|
+
"subgroup": true
|
|
27141
|
+
}), {
|
|
27142
|
+
...slots,
|
|
27143
|
+
activator: slots.activator ? slotProps => vue.createVNode(vue.Fragment, null, [vue.createVNode(VDefaultsProvider, {
|
|
27144
|
+
"defaults": activatorDefaults.value
|
|
27145
|
+
}, {
|
|
27146
|
+
default: () => [slots.activator?.(slotProps)]
|
|
27147
|
+
})]) : undefined
|
|
27148
|
+
});
|
|
27149
|
+
});
|
|
27150
|
+
return {};
|
|
27151
|
+
}
|
|
27152
|
+
});
|
|
27153
|
+
|
|
26543
27154
|
// Types
|
|
26544
27155
|
|
|
26545
|
-
const
|
|
26546
|
-
|
|
26547
|
-
|
|
26548
|
-
|
|
26549
|
-
|
|
26550
|
-
|
|
26551
|
-
|
|
27156
|
+
const VTreeviewSymbol = Symbol.for('vuetify:v-treeview');
|
|
27157
|
+
|
|
27158
|
+
const makeVTreeviewItemProps = propsFactory({
|
|
27159
|
+
loading: Boolean,
|
|
27160
|
+
toggleIcon: IconValue,
|
|
27161
|
+
...makeVListItemProps({
|
|
27162
|
+
slim: true
|
|
27163
|
+
})
|
|
27164
|
+
}, 'VTreeviewItem');
|
|
27165
|
+
const VTreeviewItem = genericComponent()({
|
|
27166
|
+
name: 'VTreeviewItem',
|
|
27167
|
+
props: makeVTreeviewItemProps(),
|
|
27168
|
+
setup(props, _ref) {
|
|
27169
|
+
let {
|
|
27170
|
+
attrs,
|
|
27171
|
+
slots,
|
|
27172
|
+
emit
|
|
27173
|
+
} = _ref;
|
|
27174
|
+
const link = useLink(props, attrs);
|
|
27175
|
+
const id = vue.computed(() => props.value === undefined ? link.href.value : props.value);
|
|
27176
|
+
const vListItemRef = vue.ref();
|
|
27177
|
+
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!vListItemRef.value?.list));
|
|
27178
|
+
function onClick(e) {
|
|
27179
|
+
if (!vListItemRef.value?.isGroupActivator || !isClickable.value) return;
|
|
27180
|
+
props.value != null && vListItemRef.value?.select(!vListItemRef.value?.isSelected, e);
|
|
27181
|
+
}
|
|
27182
|
+
function onKeyDown(e) {
|
|
27183
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
27184
|
+
e.preventDefault();
|
|
27185
|
+
onClick(e);
|
|
27186
|
+
}
|
|
27187
|
+
}
|
|
27188
|
+
const visibleIds = vue.inject(VTreeviewSymbol, {
|
|
27189
|
+
visibleIds: vue.ref()
|
|
27190
|
+
}).visibleIds;
|
|
27191
|
+
useRender(() => {
|
|
27192
|
+
const listItemProps = VListItem.filterProps(props);
|
|
27193
|
+
const hasPrepend = slots.prepend || props.toggleIcon;
|
|
27194
|
+
return vue.createVNode(VListItem, vue.mergeProps({
|
|
27195
|
+
"ref": vListItemRef
|
|
27196
|
+
}, listItemProps, {
|
|
27197
|
+
"class": ['v-treeview-item', {
|
|
27198
|
+
'v-treeview-item--filtered': visibleIds.value && !visibleIds.value.has(id.value)
|
|
27199
|
+
}, props.class],
|
|
27200
|
+
"onClick": onClick,
|
|
27201
|
+
"onKeydown": isClickable.value && onKeyDown
|
|
27202
|
+
}), {
|
|
27203
|
+
...slots,
|
|
27204
|
+
prepend: hasPrepend ? slotProps => {
|
|
27205
|
+
return vue.createVNode(vue.Fragment, null, [props.toggleIcon && vue.createVNode(VListItemAction, {
|
|
27206
|
+
"start": false
|
|
27207
|
+
}, {
|
|
27208
|
+
default: () => [vue.createVNode(VBtn, {
|
|
27209
|
+
"density": "compact",
|
|
27210
|
+
"icon": props.toggleIcon,
|
|
27211
|
+
"loading": props.loading,
|
|
27212
|
+
"variant": "text"
|
|
27213
|
+
}, {
|
|
27214
|
+
loader() {
|
|
27215
|
+
return vue.createVNode(VProgressCircular, {
|
|
27216
|
+
"indeterminate": "disable-shrink",
|
|
27217
|
+
"size": "20",
|
|
27218
|
+
"width": "2"
|
|
27219
|
+
}, null);
|
|
27220
|
+
}
|
|
27221
|
+
})]
|
|
27222
|
+
}), slots.prepend?.(slotProps)]);
|
|
27223
|
+
} : undefined
|
|
27224
|
+
});
|
|
27225
|
+
});
|
|
27226
|
+
return {};
|
|
27227
|
+
}
|
|
27228
|
+
});
|
|
27229
|
+
|
|
27230
|
+
// Types
|
|
27231
|
+
|
|
27232
|
+
const makeVTreeviewChildrenProps = propsFactory({
|
|
27233
|
+
loadChildren: Function,
|
|
27234
|
+
loadingIcon: {
|
|
26552
27235
|
type: String,
|
|
26553
|
-
default: '
|
|
26554
|
-
},
|
|
26555
|
-
headline: String,
|
|
26556
|
-
title: String,
|
|
26557
|
-
text: String,
|
|
26558
|
-
textWidth: {
|
|
26559
|
-
type: [Number, String],
|
|
26560
|
-
default: 500
|
|
27236
|
+
default: '$loading'
|
|
26561
27237
|
},
|
|
26562
|
-
|
|
26563
|
-
|
|
26564
|
-
|
|
26565
|
-
|
|
26566
|
-
|
|
26567
|
-
|
|
27238
|
+
items: Array,
|
|
27239
|
+
selectable: Boolean
|
|
27240
|
+
}, 'VTreeviewChildren');
|
|
27241
|
+
const VTreeviewChildren = genericComponent()({
|
|
27242
|
+
name: 'VTreeviewChildren',
|
|
27243
|
+
props: makeVTreeviewChildrenProps(),
|
|
27244
|
+
setup(props, _ref) {
|
|
27245
|
+
let {
|
|
27246
|
+
emit,
|
|
27247
|
+
slots
|
|
27248
|
+
} = _ref;
|
|
27249
|
+
const isLoading = vue.shallowRef(false);
|
|
27250
|
+
const hasLoaded = vue.shallowRef(false);
|
|
27251
|
+
function checkChildren(item) {
|
|
27252
|
+
return new Promise(resolve => {
|
|
27253
|
+
if (!props.items?.length || !props.loadChildren || hasLoaded.value) return resolve();
|
|
27254
|
+
isLoading.value = true;
|
|
27255
|
+
props.loadChildren(item).then(resolve);
|
|
27256
|
+
}).then(() => {
|
|
27257
|
+
hasLoaded.value = true;
|
|
27258
|
+
}).finally(() => {
|
|
27259
|
+
isLoading.value = false;
|
|
27260
|
+
});
|
|
27261
|
+
}
|
|
27262
|
+
function onClick(e, item) {
|
|
27263
|
+
e.stopPropagation();
|
|
27264
|
+
checkChildren(item);
|
|
27265
|
+
}
|
|
27266
|
+
return () => slots.default?.() ?? props.items?.map(_ref2 => {
|
|
27267
|
+
let {
|
|
27268
|
+
children,
|
|
27269
|
+
props: itemProps,
|
|
27270
|
+
raw: item
|
|
27271
|
+
} = _ref2;
|
|
27272
|
+
const slotsWithItem = {
|
|
27273
|
+
prepend: slots.prepend ? slotProps => slots.prepend?.({
|
|
27274
|
+
...slotProps,
|
|
27275
|
+
item
|
|
27276
|
+
}) : props.selectable ? _ref3 => {
|
|
27277
|
+
let {
|
|
27278
|
+
isSelected,
|
|
27279
|
+
isIndeterminate
|
|
27280
|
+
} = _ref3;
|
|
27281
|
+
return vue.createVNode(VCheckboxBtn, {
|
|
27282
|
+
"key": item.value,
|
|
27283
|
+
"tabindex": "-1",
|
|
27284
|
+
"modelValue": isSelected,
|
|
27285
|
+
"loading": isLoading.value,
|
|
27286
|
+
"indeterminate": isIndeterminate,
|
|
27287
|
+
"onClick": e => onClick(e, item)
|
|
27288
|
+
}, null);
|
|
27289
|
+
} : undefined,
|
|
27290
|
+
append: slots.append ? slotProps => slots.append?.({
|
|
27291
|
+
...slotProps,
|
|
27292
|
+
item
|
|
27293
|
+
}) : undefined,
|
|
27294
|
+
title: slots.title ? slotProps => slots.title?.({
|
|
27295
|
+
...slotProps,
|
|
27296
|
+
item
|
|
27297
|
+
}) : undefined
|
|
27298
|
+
};
|
|
27299
|
+
const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
|
|
27300
|
+
const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
|
|
27301
|
+
return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps({
|
|
27302
|
+
"value": itemProps?.value
|
|
27303
|
+
}, treeviewGroupProps), {
|
|
27304
|
+
activator: _ref4 => {
|
|
27305
|
+
let {
|
|
27306
|
+
props: activatorProps
|
|
27307
|
+
} = _ref4;
|
|
27308
|
+
return vue.createVNode(VTreeviewItem, vue.mergeProps(itemProps, activatorProps, {
|
|
27309
|
+
"loading": isLoading.value,
|
|
27310
|
+
"onClick": e => onClick(e, item)
|
|
27311
|
+
}), slotsWithItem);
|
|
27312
|
+
},
|
|
27313
|
+
default: () => vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
|
|
27314
|
+
"items": children
|
|
27315
|
+
}), slots)
|
|
27316
|
+
}) : slots.item?.({
|
|
27317
|
+
props: itemProps
|
|
27318
|
+
}) ?? vue.createVNode(VTreeviewItem, itemProps, slotsWithItem);
|
|
27319
|
+
});
|
|
27320
|
+
}
|
|
27321
|
+
});
|
|
27322
|
+
|
|
27323
|
+
function flatten(items) {
|
|
27324
|
+
let flat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
27325
|
+
for (const item of items) {
|
|
27326
|
+
flat.push(item);
|
|
27327
|
+
if (item.children) flatten(item.children, flat);
|
|
27328
|
+
}
|
|
27329
|
+
return flat;
|
|
27330
|
+
}
|
|
27331
|
+
const makeVTreeviewProps = propsFactory({
|
|
27332
|
+
openAll: Boolean,
|
|
27333
|
+
search: String,
|
|
27334
|
+
...makeFilterProps({
|
|
27335
|
+
filterKeys: ['title']
|
|
26568
27336
|
}),
|
|
26569
|
-
...
|
|
26570
|
-
|
|
26571
|
-
|
|
26572
|
-
|
|
26573
|
-
|
|
27337
|
+
...makeVTreeviewChildrenProps(),
|
|
27338
|
+
...omit(makeVListProps({
|
|
27339
|
+
collapseIcon: '$treeviewCollapse',
|
|
27340
|
+
expandIcon: '$treeviewExpand',
|
|
27341
|
+
selectStrategy: 'independent',
|
|
27342
|
+
openStrategy: 'multiple',
|
|
27343
|
+
slim: true
|
|
27344
|
+
}), ['nav'])
|
|
27345
|
+
}, 'VTreeview');
|
|
27346
|
+
const VTreeview = genericComponent()({
|
|
27347
|
+
name: 'VTreeview',
|
|
27348
|
+
props: makeVTreeviewProps(),
|
|
26574
27349
|
emits: {
|
|
26575
|
-
'
|
|
27350
|
+
'update:opened': val => true,
|
|
27351
|
+
'update:activated': val => true,
|
|
27352
|
+
'update:selected': val => true,
|
|
27353
|
+
'click:open': value => true,
|
|
27354
|
+
'click:select': value => true
|
|
26576
27355
|
},
|
|
26577
27356
|
setup(props, _ref) {
|
|
26578
27357
|
let {
|
|
26579
|
-
emit,
|
|
26580
27358
|
slots
|
|
26581
27359
|
} = _ref;
|
|
26582
27360
|
const {
|
|
26583
|
-
|
|
26584
|
-
} =
|
|
26585
|
-
const
|
|
26586
|
-
|
|
26587
|
-
|
|
26588
|
-
|
|
27361
|
+
items
|
|
27362
|
+
} = useListItems(props);
|
|
27363
|
+
const activeColor = vue.toRef(props, 'activeColor');
|
|
27364
|
+
const baseColor = vue.toRef(props, 'baseColor');
|
|
27365
|
+
const color = vue.toRef(props, 'color');
|
|
27366
|
+
const opened = useProxiedModel(props, 'opened');
|
|
27367
|
+
const activated = useProxiedModel(props, 'activated');
|
|
27368
|
+
const selected = useProxiedModel(props, 'selected');
|
|
27369
|
+
const vListRef = vue.ref();
|
|
27370
|
+
const flatItems = vue.computed(() => flatten(items.value));
|
|
27371
|
+
const search = vue.toRef(props, 'search');
|
|
26589
27372
|
const {
|
|
26590
|
-
|
|
26591
|
-
} =
|
|
26592
|
-
|
|
26593
|
-
|
|
27373
|
+
filteredItems
|
|
27374
|
+
} = useFilter(props, flatItems, search);
|
|
27375
|
+
const visibleIds = vue.computed(() => {
|
|
27376
|
+
if (!search.value) {
|
|
27377
|
+
return null;
|
|
27378
|
+
}
|
|
27379
|
+
return new Set(filteredItems.value.flatMap(item => {
|
|
27380
|
+
return [...getPath(item.props.value), ...getChildren(item.props.value)];
|
|
27381
|
+
}));
|
|
27382
|
+
});
|
|
27383
|
+
function getPath(id) {
|
|
27384
|
+
const path = [];
|
|
27385
|
+
let parent = id;
|
|
27386
|
+
while (parent != null) {
|
|
27387
|
+
path.unshift(parent);
|
|
27388
|
+
parent = vListRef.value?.parents.get(parent);
|
|
27389
|
+
}
|
|
27390
|
+
return path;
|
|
26594
27391
|
}
|
|
26595
|
-
|
|
26596
|
-
const
|
|
26597
|
-
const
|
|
26598
|
-
|
|
26599
|
-
|
|
26600
|
-
|
|
26601
|
-
|
|
26602
|
-
|
|
26603
|
-
|
|
26604
|
-
|
|
26605
|
-
|
|
26606
|
-
|
|
26607
|
-
|
|
26608
|
-
|
|
26609
|
-
|
|
26610
|
-
|
|
26611
|
-
|
|
26612
|
-
|
|
26613
|
-
|
|
26614
|
-
|
|
26615
|
-
|
|
26616
|
-
|
|
26617
|
-
|
|
26618
|
-
}, null) : undefined]) : vue.createVNode(VDefaultsProvider, {
|
|
26619
|
-
"key": "media-defaults",
|
|
26620
|
-
"defaults": {
|
|
26621
|
-
VImg: {
|
|
26622
|
-
src: props.image,
|
|
26623
|
-
height: size
|
|
26624
|
-
},
|
|
26625
|
-
VIcon: {
|
|
26626
|
-
size,
|
|
26627
|
-
icon: props.icon
|
|
26628
|
-
}
|
|
26629
|
-
}
|
|
26630
|
-
}, {
|
|
26631
|
-
default: () => [slots.media()]
|
|
26632
|
-
})]), hasHeadline && vue.createVNode("div", {
|
|
26633
|
-
"key": "headline",
|
|
26634
|
-
"class": "v-empty-state__headline"
|
|
26635
|
-
}, [slots.headline?.() ?? props.headline]), hasTitle && vue.createVNode("div", {
|
|
26636
|
-
"key": "title",
|
|
26637
|
-
"class": "v-empty-state__title"
|
|
26638
|
-
}, [slots.title?.() ?? props.title]), hasText && vue.createVNode("div", {
|
|
26639
|
-
"key": "text",
|
|
26640
|
-
"class": "v-empty-state__text",
|
|
26641
|
-
"style": {
|
|
26642
|
-
maxWidth: convertToUnit(props.textWidth)
|
|
26643
|
-
}
|
|
26644
|
-
}, [slots.text?.() ?? props.text]), slots.default && vue.createVNode("div", {
|
|
26645
|
-
"key": "content",
|
|
26646
|
-
"class": "v-empty-state__content"
|
|
26647
|
-
}, [slots.default()]), hasActions && vue.createVNode("div", {
|
|
26648
|
-
"key": "actions",
|
|
26649
|
-
"class": "v-empty-state__actions"
|
|
26650
|
-
}, [vue.createVNode(VDefaultsProvider, {
|
|
26651
|
-
"defaults": {
|
|
26652
|
-
VBtn: {
|
|
26653
|
-
class: 'v-empty-state__action-btn',
|
|
26654
|
-
color: props.color,
|
|
26655
|
-
text: props.actionText
|
|
26656
|
-
}
|
|
27392
|
+
function getChildren(id) {
|
|
27393
|
+
const arr = [];
|
|
27394
|
+
const queue = (vListRef.value?.children.get(id) ?? []).slice();
|
|
27395
|
+
while (queue.length) {
|
|
27396
|
+
const child = queue.shift();
|
|
27397
|
+
if (!child) continue;
|
|
27398
|
+
arr.push(child);
|
|
27399
|
+
queue.push(...(vListRef.value?.children.get(child) ?? []).slice());
|
|
27400
|
+
}
|
|
27401
|
+
return arr;
|
|
27402
|
+
}
|
|
27403
|
+
vue.watch(() => props.openAll, val => {
|
|
27404
|
+
opened.value = val ? openAll(items.value) : [];
|
|
27405
|
+
}, {
|
|
27406
|
+
immediate: true
|
|
27407
|
+
});
|
|
27408
|
+
function openAll(item) {
|
|
27409
|
+
let ids = [];
|
|
27410
|
+
for (const i of item) {
|
|
27411
|
+
if (!i.children) continue;
|
|
27412
|
+
ids.push(i.value);
|
|
27413
|
+
if (i.children) {
|
|
27414
|
+
ids = ids.concat(openAll(i.children));
|
|
26657
27415
|
}
|
|
26658
|
-
}
|
|
26659
|
-
|
|
26660
|
-
|
|
26661
|
-
|
|
26662
|
-
|
|
26663
|
-
}) ?? vue.createVNode(VBtn, {
|
|
26664
|
-
"onClick": onClickAction
|
|
26665
|
-
}, null)]
|
|
26666
|
-
})])]);
|
|
27416
|
+
}
|
|
27417
|
+
return ids;
|
|
27418
|
+
}
|
|
27419
|
+
vue.provide(VTreeviewSymbol, {
|
|
27420
|
+
visibleIds
|
|
26667
27421
|
});
|
|
26668
|
-
|
|
27422
|
+
provideDefaults({
|
|
27423
|
+
VTreeviewGroup: {
|
|
27424
|
+
activeColor,
|
|
27425
|
+
baseColor,
|
|
27426
|
+
color,
|
|
27427
|
+
collapseIcon: vue.toRef(props, 'collapseIcon'),
|
|
27428
|
+
expandIcon: vue.toRef(props, 'expandIcon')
|
|
27429
|
+
},
|
|
27430
|
+
VTreeviewItem: {
|
|
27431
|
+
activeClass: vue.toRef(props, 'activeClass'),
|
|
27432
|
+
activeColor,
|
|
27433
|
+
baseColor,
|
|
27434
|
+
color,
|
|
27435
|
+
density: vue.toRef(props, 'density'),
|
|
27436
|
+
disabled: vue.toRef(props, 'disabled'),
|
|
27437
|
+
lines: vue.toRef(props, 'lines'),
|
|
27438
|
+
variant: vue.toRef(props, 'variant')
|
|
27439
|
+
}
|
|
27440
|
+
});
|
|
27441
|
+
useRender(() => {
|
|
27442
|
+
const listProps = VList.filterProps(props);
|
|
27443
|
+
const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
|
|
27444
|
+
return vue.createVNode(VList, vue.mergeProps({
|
|
27445
|
+
"ref": vListRef
|
|
27446
|
+
}, listProps, {
|
|
27447
|
+
"class": ['v-treeview', props.class],
|
|
27448
|
+
"style": props.style,
|
|
27449
|
+
"opened": opened.value,
|
|
27450
|
+
"onUpdate:opened": $event => opened.value = $event,
|
|
27451
|
+
"activated": activated.value,
|
|
27452
|
+
"onUpdate:activated": $event => activated.value = $event,
|
|
27453
|
+
"selected": selected.value,
|
|
27454
|
+
"onUpdate:selected": $event => selected.value = $event
|
|
27455
|
+
}), {
|
|
27456
|
+
default: () => [vue.createVNode(VTreeviewChildren, vue.mergeProps(treeviewChildrenProps, {
|
|
27457
|
+
"items": items.value
|
|
27458
|
+
}), slots)]
|
|
27459
|
+
});
|
|
27460
|
+
});
|
|
27461
|
+
return {
|
|
27462
|
+
open
|
|
27463
|
+
};
|
|
26669
27464
|
}
|
|
26670
27465
|
});
|
|
26671
27466
|
|
|
@@ -26781,6 +27576,7 @@
|
|
|
26781
27576
|
VMessages: VMessages,
|
|
26782
27577
|
VNavigationDrawer: VNavigationDrawer,
|
|
26783
27578
|
VNoSsr: VNoSsr,
|
|
27579
|
+
VNumberInput: VNumberInput,
|
|
26784
27580
|
VOtpInput: VOtpInput,
|
|
26785
27581
|
VOverlay: VOverlay,
|
|
26786
27582
|
VPagination: VPagination,
|
|
@@ -26837,6 +27633,9 @@
|
|
|
26837
27633
|
VToolbarItems: VToolbarItems,
|
|
26838
27634
|
VToolbarTitle: VToolbarTitle,
|
|
26839
27635
|
VTooltip: VTooltip,
|
|
27636
|
+
VTreeview: VTreeview,
|
|
27637
|
+
VTreeviewGroup: VTreeviewGroup,
|
|
27638
|
+
VTreeviewItem: VTreeviewItem,
|
|
26840
27639
|
VValidation: VValidation,
|
|
26841
27640
|
VVirtualScroll: VVirtualScroll,
|
|
26842
27641
|
VWindow: VWindow,
|
|
@@ -27063,7 +27862,7 @@
|
|
|
27063
27862
|
goTo
|
|
27064
27863
|
};
|
|
27065
27864
|
}
|
|
27066
|
-
const version$1 = "3.5.
|
|
27865
|
+
const version$1 = "3.5.10";
|
|
27067
27866
|
createVuetify$1.version = version$1;
|
|
27068
27867
|
|
|
27069
27868
|
// Vue's inject() can only be used in setup
|
|
@@ -27075,9 +27874,248 @@
|
|
|
27075
27874
|
}
|
|
27076
27875
|
}
|
|
27077
27876
|
|
|
27877
|
+
// Icons
|
|
27878
|
+
|
|
27879
|
+
// Types
|
|
27880
|
+
|
|
27881
|
+
const md1 = {
|
|
27882
|
+
defaults: {
|
|
27883
|
+
global: {
|
|
27884
|
+
rounded: 'sm'
|
|
27885
|
+
},
|
|
27886
|
+
VAvatar: {
|
|
27887
|
+
rounded: 'circle'
|
|
27888
|
+
},
|
|
27889
|
+
VAutocomplete: {
|
|
27890
|
+
variant: 'underlined'
|
|
27891
|
+
},
|
|
27892
|
+
VBanner: {
|
|
27893
|
+
color: 'primary'
|
|
27894
|
+
},
|
|
27895
|
+
VBtn: {
|
|
27896
|
+
color: 'primary',
|
|
27897
|
+
rounded: 0
|
|
27898
|
+
},
|
|
27899
|
+
VCheckbox: {
|
|
27900
|
+
color: 'secondary'
|
|
27901
|
+
},
|
|
27902
|
+
VCombobox: {
|
|
27903
|
+
variant: 'underlined'
|
|
27904
|
+
},
|
|
27905
|
+
VSelect: {
|
|
27906
|
+
variant: 'underlined'
|
|
27907
|
+
},
|
|
27908
|
+
VSlider: {
|
|
27909
|
+
color: 'primary'
|
|
27910
|
+
},
|
|
27911
|
+
VTabs: {
|
|
27912
|
+
color: 'primary'
|
|
27913
|
+
},
|
|
27914
|
+
VTextarea: {
|
|
27915
|
+
variant: 'underlined'
|
|
27916
|
+
},
|
|
27917
|
+
VTextField: {
|
|
27918
|
+
variant: 'underlined'
|
|
27919
|
+
},
|
|
27920
|
+
VToolbar: {
|
|
27921
|
+
VBtn: {
|
|
27922
|
+
color: null
|
|
27923
|
+
}
|
|
27924
|
+
}
|
|
27925
|
+
},
|
|
27926
|
+
icons: {
|
|
27927
|
+
defaultSet: 'mdi',
|
|
27928
|
+
sets: {
|
|
27929
|
+
mdi
|
|
27930
|
+
}
|
|
27931
|
+
},
|
|
27932
|
+
theme: {
|
|
27933
|
+
themes: {
|
|
27934
|
+
light: {
|
|
27935
|
+
colors: {
|
|
27936
|
+
primary: '#3F51B5',
|
|
27937
|
+
'primary-darken-1': '#303F9F',
|
|
27938
|
+
'primary-lighten-1': '#C5CAE9',
|
|
27939
|
+
secondary: '#FF4081',
|
|
27940
|
+
'secondary-darken-1': '#F50057',
|
|
27941
|
+
'secondary-lighten-1': '#FF80AB',
|
|
27942
|
+
accent: '#009688'
|
|
27943
|
+
}
|
|
27944
|
+
}
|
|
27945
|
+
}
|
|
27946
|
+
}
|
|
27947
|
+
};
|
|
27948
|
+
|
|
27949
|
+
// Icons
|
|
27950
|
+
|
|
27951
|
+
// Types
|
|
27952
|
+
|
|
27953
|
+
const md2 = {
|
|
27954
|
+
defaults: {
|
|
27955
|
+
global: {
|
|
27956
|
+
rounded: 'md'
|
|
27957
|
+
},
|
|
27958
|
+
VAvatar: {
|
|
27959
|
+
rounded: 'circle'
|
|
27960
|
+
},
|
|
27961
|
+
VAutocomplete: {
|
|
27962
|
+
variant: 'filled'
|
|
27963
|
+
},
|
|
27964
|
+
VBanner: {
|
|
27965
|
+
color: 'primary'
|
|
27966
|
+
},
|
|
27967
|
+
VBtn: {
|
|
27968
|
+
color: 'primary'
|
|
27969
|
+
},
|
|
27970
|
+
VCheckbox: {
|
|
27971
|
+
color: 'secondary'
|
|
27972
|
+
},
|
|
27973
|
+
VCombobox: {
|
|
27974
|
+
variant: 'filled'
|
|
27975
|
+
},
|
|
27976
|
+
VSelect: {
|
|
27977
|
+
variant: 'filled'
|
|
27978
|
+
},
|
|
27979
|
+
VSlider: {
|
|
27980
|
+
color: 'primary'
|
|
27981
|
+
},
|
|
27982
|
+
VTabs: {
|
|
27983
|
+
color: 'primary'
|
|
27984
|
+
},
|
|
27985
|
+
VTextarea: {
|
|
27986
|
+
variant: 'filled'
|
|
27987
|
+
},
|
|
27988
|
+
VTextField: {
|
|
27989
|
+
variant: 'filled'
|
|
27990
|
+
},
|
|
27991
|
+
VToolbar: {
|
|
27992
|
+
VBtn: {
|
|
27993
|
+
color: null
|
|
27994
|
+
}
|
|
27995
|
+
}
|
|
27996
|
+
},
|
|
27997
|
+
icons: {
|
|
27998
|
+
defaultSet: 'mdi',
|
|
27999
|
+
sets: {
|
|
28000
|
+
mdi
|
|
28001
|
+
}
|
|
28002
|
+
},
|
|
28003
|
+
theme: {
|
|
28004
|
+
themes: {
|
|
28005
|
+
light: {
|
|
28006
|
+
colors: {
|
|
28007
|
+
primary: '#6200EE',
|
|
28008
|
+
'primary-darken-1': '#3700B3',
|
|
28009
|
+
secondary: '#03DAC6',
|
|
28010
|
+
'secondary-darken-1': '#018786',
|
|
28011
|
+
error: '#B00020'
|
|
28012
|
+
}
|
|
28013
|
+
}
|
|
28014
|
+
}
|
|
28015
|
+
}
|
|
28016
|
+
};
|
|
28017
|
+
|
|
28018
|
+
// Icons
|
|
28019
|
+
|
|
28020
|
+
// Types
|
|
28021
|
+
|
|
28022
|
+
const md3 = {
|
|
28023
|
+
defaults: {
|
|
28024
|
+
VAppBar: {
|
|
28025
|
+
flat: true
|
|
28026
|
+
},
|
|
28027
|
+
VAutocomplete: {
|
|
28028
|
+
variant: 'filled'
|
|
28029
|
+
},
|
|
28030
|
+
VBanner: {
|
|
28031
|
+
color: 'primary'
|
|
28032
|
+
},
|
|
28033
|
+
VBottomSheet: {
|
|
28034
|
+
contentClass: 'rounded-t-xl overflow-hidden'
|
|
28035
|
+
},
|
|
28036
|
+
VBtn: {
|
|
28037
|
+
color: 'primary',
|
|
28038
|
+
rounded: 'xl'
|
|
28039
|
+
},
|
|
28040
|
+
VBtnGroup: {
|
|
28041
|
+
rounded: 'xl',
|
|
28042
|
+
VBtn: {
|
|
28043
|
+
rounded: null
|
|
28044
|
+
}
|
|
28045
|
+
},
|
|
28046
|
+
VCard: {
|
|
28047
|
+
rounded: 'lg'
|
|
28048
|
+
},
|
|
28049
|
+
VCheckbox: {
|
|
28050
|
+
color: 'secondary',
|
|
28051
|
+
inset: true
|
|
28052
|
+
},
|
|
28053
|
+
VChip: {
|
|
28054
|
+
rounded: 'sm'
|
|
28055
|
+
},
|
|
28056
|
+
VCombobox: {
|
|
28057
|
+
variant: 'filled'
|
|
28058
|
+
},
|
|
28059
|
+
VNavigationDrawer: {
|
|
28060
|
+
// VList: {
|
|
28061
|
+
// nav: true,
|
|
28062
|
+
// VListItem: {
|
|
28063
|
+
// rounded: 'xl',
|
|
28064
|
+
// },
|
|
28065
|
+
// },
|
|
28066
|
+
},
|
|
28067
|
+
VSelect: {
|
|
28068
|
+
variant: 'filled'
|
|
28069
|
+
},
|
|
28070
|
+
VSlider: {
|
|
28071
|
+
color: 'primary'
|
|
28072
|
+
},
|
|
28073
|
+
VTabs: {
|
|
28074
|
+
color: 'primary'
|
|
28075
|
+
},
|
|
28076
|
+
VTextarea: {
|
|
28077
|
+
variant: 'filled'
|
|
28078
|
+
},
|
|
28079
|
+
VTextField: {
|
|
28080
|
+
variant: 'filled'
|
|
28081
|
+
},
|
|
28082
|
+
VToolbar: {
|
|
28083
|
+
VBtn: {
|
|
28084
|
+
color: null
|
|
28085
|
+
}
|
|
28086
|
+
}
|
|
28087
|
+
},
|
|
28088
|
+
icons: {
|
|
28089
|
+
defaultSet: 'mdi',
|
|
28090
|
+
sets: {
|
|
28091
|
+
mdi
|
|
28092
|
+
}
|
|
28093
|
+
},
|
|
28094
|
+
theme: {
|
|
28095
|
+
themes: {
|
|
28096
|
+
light: {
|
|
28097
|
+
colors: {
|
|
28098
|
+
primary: '#6750a4',
|
|
28099
|
+
secondary: '#b4b0bb',
|
|
28100
|
+
tertiary: '#7d5260',
|
|
28101
|
+
error: '#b3261e',
|
|
28102
|
+
surface: '#fffbfe'
|
|
28103
|
+
}
|
|
28104
|
+
}
|
|
28105
|
+
}
|
|
28106
|
+
}
|
|
28107
|
+
};
|
|
28108
|
+
|
|
28109
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
28110
|
+
__proto__: null,
|
|
28111
|
+
md1: md1,
|
|
28112
|
+
md2: md2,
|
|
28113
|
+
md3: md3
|
|
28114
|
+
});
|
|
28115
|
+
|
|
27078
28116
|
/* eslint-disable local-rules/sort-imports */
|
|
27079
28117
|
|
|
27080
|
-
const version = "3.5.
|
|
28118
|
+
const version = "3.5.10";
|
|
27081
28119
|
|
|
27082
28120
|
/* eslint-disable local-rules/sort-imports */
|
|
27083
28121
|
|
|
@@ -27090,6 +28128,7 @@
|
|
|
27090
28128
|
});
|
|
27091
28129
|
};
|
|
27092
28130
|
|
|
28131
|
+
exports.blueprints = index;
|
|
27093
28132
|
exports.components = components;
|
|
27094
28133
|
exports.createVuetify = createVuetify;
|
|
27095
28134
|
exports.directives = directives;
|