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.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
|
*/
|
|
@@ -10,77 +10,6 @@
|
|
|
10
10
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Vuetify = {}, global.Vue));
|
|
11
11
|
})(this, (function (exports, vue) { 'use strict';
|
|
12
12
|
|
|
13
|
-
// Types
|
|
14
|
-
// eslint-disable-line vue/prefer-import-from-vue
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Creates a factory function for props definitions.
|
|
18
|
-
* This is used to define props in a composable then override
|
|
19
|
-
* default values in an implementing component.
|
|
20
|
-
*
|
|
21
|
-
* @example Simplified signature
|
|
22
|
-
* (props: Props) => (defaults?: Record<keyof props, any>) => Props
|
|
23
|
-
*
|
|
24
|
-
* @example Usage
|
|
25
|
-
* const makeProps = propsFactory({
|
|
26
|
-
* foo: String,
|
|
27
|
-
* })
|
|
28
|
-
*
|
|
29
|
-
* defineComponent({
|
|
30
|
-
* props: {
|
|
31
|
-
* ...makeProps({
|
|
32
|
-
* foo: 'a',
|
|
33
|
-
* }),
|
|
34
|
-
* },
|
|
35
|
-
* setup (props) {
|
|
36
|
-
* // would be "string | undefined", now "string" because a default has been provided
|
|
37
|
-
* props.foo
|
|
38
|
-
* },
|
|
39
|
-
* }
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
function propsFactory(props, source) {
|
|
43
|
-
return defaults => {
|
|
44
|
-
return Object.keys(props).reduce((obj, prop) => {
|
|
45
|
-
const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop]);
|
|
46
|
-
const definition = isObjectDefinition ? props[prop] : {
|
|
47
|
-
type: props[prop]
|
|
48
|
-
};
|
|
49
|
-
if (defaults && prop in defaults) {
|
|
50
|
-
obj[prop] = {
|
|
51
|
-
...definition,
|
|
52
|
-
default: defaults[prop]
|
|
53
|
-
};
|
|
54
|
-
} else {
|
|
55
|
-
obj[prop] = definition;
|
|
56
|
-
}
|
|
57
|
-
if (source && !obj[prop].source) {
|
|
58
|
-
obj[prop].source = source;
|
|
59
|
-
}
|
|
60
|
-
return obj;
|
|
61
|
-
}, {});
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Like `Partial<T>` but doesn't care what the value is
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
// Copied from Vue
|
|
70
|
-
|
|
71
|
-
// Utilities
|
|
72
|
-
|
|
73
|
-
// Types
|
|
74
|
-
|
|
75
|
-
// Composables
|
|
76
|
-
const makeComponentProps = propsFactory({
|
|
77
|
-
class: [String, Array],
|
|
78
|
-
style: {
|
|
79
|
-
type: [String, Array, Object],
|
|
80
|
-
default: null
|
|
81
|
-
}
|
|
82
|
-
}, 'component');
|
|
83
|
-
|
|
84
13
|
const IN_BROWSER = typeof window !== 'undefined';
|
|
85
14
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
|
86
15
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
|
@@ -1231,6 +1160,77 @@
|
|
|
1231
1160
|
return whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000';
|
|
1232
1161
|
}
|
|
1233
1162
|
|
|
1163
|
+
// Types
|
|
1164
|
+
// eslint-disable-line vue/prefer-import-from-vue
|
|
1165
|
+
|
|
1166
|
+
/**
|
|
1167
|
+
* Creates a factory function for props definitions.
|
|
1168
|
+
* This is used to define props in a composable then override
|
|
1169
|
+
* default values in an implementing component.
|
|
1170
|
+
*
|
|
1171
|
+
* @example Simplified signature
|
|
1172
|
+
* (props: Props) => (defaults?: Record<keyof props, any>) => Props
|
|
1173
|
+
*
|
|
1174
|
+
* @example Usage
|
|
1175
|
+
* const makeProps = propsFactory({
|
|
1176
|
+
* foo: String,
|
|
1177
|
+
* })
|
|
1178
|
+
*
|
|
1179
|
+
* defineComponent({
|
|
1180
|
+
* props: {
|
|
1181
|
+
* ...makeProps({
|
|
1182
|
+
* foo: 'a',
|
|
1183
|
+
* }),
|
|
1184
|
+
* },
|
|
1185
|
+
* setup (props) {
|
|
1186
|
+
* // would be "string | undefined", now "string" because a default has been provided
|
|
1187
|
+
* props.foo
|
|
1188
|
+
* },
|
|
1189
|
+
* }
|
|
1190
|
+
*/
|
|
1191
|
+
|
|
1192
|
+
function propsFactory(props, source) {
|
|
1193
|
+
return defaults => {
|
|
1194
|
+
return Object.keys(props).reduce((obj, prop) => {
|
|
1195
|
+
const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop]);
|
|
1196
|
+
const definition = isObjectDefinition ? props[prop] : {
|
|
1197
|
+
type: props[prop]
|
|
1198
|
+
};
|
|
1199
|
+
if (defaults && prop in defaults) {
|
|
1200
|
+
obj[prop] = {
|
|
1201
|
+
...definition,
|
|
1202
|
+
default: defaults[prop]
|
|
1203
|
+
};
|
|
1204
|
+
} else {
|
|
1205
|
+
obj[prop] = definition;
|
|
1206
|
+
}
|
|
1207
|
+
if (source && !obj[prop].source) {
|
|
1208
|
+
obj[prop].source = source;
|
|
1209
|
+
}
|
|
1210
|
+
return obj;
|
|
1211
|
+
}, {});
|
|
1212
|
+
};
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
/**
|
|
1216
|
+
* Like `Partial<T>` but doesn't care what the value is
|
|
1217
|
+
*/
|
|
1218
|
+
|
|
1219
|
+
// Copied from Vue
|
|
1220
|
+
|
|
1221
|
+
// Utilities
|
|
1222
|
+
|
|
1223
|
+
// Types
|
|
1224
|
+
|
|
1225
|
+
// Composables
|
|
1226
|
+
const makeComponentProps = propsFactory({
|
|
1227
|
+
class: [String, Array],
|
|
1228
|
+
style: {
|
|
1229
|
+
type: [String, Array, Object],
|
|
1230
|
+
default: null
|
|
1231
|
+
}
|
|
1232
|
+
}, 'component');
|
|
1233
|
+
|
|
1234
1234
|
// Utilities
|
|
1235
1235
|
|
|
1236
1236
|
// Types
|
|
@@ -1537,19 +1537,464 @@
|
|
|
1537
1537
|
if (window.getComputedStyle(el).position === 'fixed') {
|
|
1538
1538
|
return true;
|
|
1539
1539
|
}
|
|
1540
|
-
el = el.offsetParent;
|
|
1540
|
+
el = el.offsetParent;
|
|
1541
|
+
}
|
|
1542
|
+
return false;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
// Utilities
|
|
1546
|
+
|
|
1547
|
+
// Types
|
|
1548
|
+
|
|
1549
|
+
function useRender(render) {
|
|
1550
|
+
const vm = getCurrentInstance('useRender');
|
|
1551
|
+
vm.render = render;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
// Types
|
|
1555
|
+
|
|
1556
|
+
const IconValue = [String, Function, Object, Array];
|
|
1557
|
+
const IconSymbol = Symbol.for('vuetify:icons');
|
|
1558
|
+
const makeIconProps = propsFactory({
|
|
1559
|
+
icon: {
|
|
1560
|
+
type: IconValue
|
|
1561
|
+
},
|
|
1562
|
+
// Could not remove this and use makeTagProps, types complained because it is not required
|
|
1563
|
+
tag: {
|
|
1564
|
+
type: String,
|
|
1565
|
+
required: true
|
|
1566
|
+
}
|
|
1567
|
+
}, 'icon');
|
|
1568
|
+
const VComponentIcon = genericComponent()({
|
|
1569
|
+
name: 'VComponentIcon',
|
|
1570
|
+
props: makeIconProps(),
|
|
1571
|
+
setup(props, _ref) {
|
|
1572
|
+
let {
|
|
1573
|
+
slots
|
|
1574
|
+
} = _ref;
|
|
1575
|
+
return () => {
|
|
1576
|
+
const Icon = props.icon;
|
|
1577
|
+
return vue.createVNode(props.tag, null, {
|
|
1578
|
+
default: () => [props.icon ? vue.createVNode(Icon, null, null) : slots.default?.()]
|
|
1579
|
+
});
|
|
1580
|
+
};
|
|
1581
|
+
}
|
|
1582
|
+
});
|
|
1583
|
+
const VSvgIcon = defineComponent({
|
|
1584
|
+
name: 'VSvgIcon',
|
|
1585
|
+
inheritAttrs: false,
|
|
1586
|
+
props: makeIconProps(),
|
|
1587
|
+
setup(props, _ref2) {
|
|
1588
|
+
let {
|
|
1589
|
+
attrs
|
|
1590
|
+
} = _ref2;
|
|
1591
|
+
return () => {
|
|
1592
|
+
return vue.createVNode(props.tag, vue.mergeProps(attrs, {
|
|
1593
|
+
"style": null
|
|
1594
|
+
}), {
|
|
1595
|
+
default: () => [vue.createVNode("svg", {
|
|
1596
|
+
"class": "v-icon__svg",
|
|
1597
|
+
"xmlns": "http://www.w3.org/2000/svg",
|
|
1598
|
+
"viewBox": "0 0 24 24",
|
|
1599
|
+
"role": "img",
|
|
1600
|
+
"aria-hidden": "true"
|
|
1601
|
+
}, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? vue.createVNode("path", {
|
|
1602
|
+
"d": path[0],
|
|
1603
|
+
"fill-opacity": path[1]
|
|
1604
|
+
}, null) : vue.createVNode("path", {
|
|
1605
|
+
"d": path
|
|
1606
|
+
}, null)) : vue.createVNode("path", {
|
|
1607
|
+
"d": props.icon
|
|
1608
|
+
}, null)])]
|
|
1609
|
+
});
|
|
1610
|
+
};
|
|
1611
|
+
}
|
|
1612
|
+
});
|
|
1613
|
+
const VLigatureIcon = defineComponent({
|
|
1614
|
+
name: 'VLigatureIcon',
|
|
1615
|
+
props: makeIconProps(),
|
|
1616
|
+
setup(props) {
|
|
1617
|
+
return () => {
|
|
1618
|
+
return vue.createVNode(props.tag, null, {
|
|
1619
|
+
default: () => [props.icon]
|
|
1620
|
+
});
|
|
1621
|
+
};
|
|
1622
|
+
}
|
|
1623
|
+
});
|
|
1624
|
+
const VClassIcon = defineComponent({
|
|
1625
|
+
name: 'VClassIcon',
|
|
1626
|
+
props: makeIconProps(),
|
|
1627
|
+
setup(props) {
|
|
1628
|
+
return () => {
|
|
1629
|
+
return vue.createVNode(props.tag, {
|
|
1630
|
+
"class": props.icon
|
|
1631
|
+
}, null);
|
|
1632
|
+
};
|
|
1633
|
+
}
|
|
1634
|
+
});
|
|
1635
|
+
function genDefaults$3() {
|
|
1636
|
+
return {
|
|
1637
|
+
svg: {
|
|
1638
|
+
component: VSvgIcon
|
|
1639
|
+
},
|
|
1640
|
+
class: {
|
|
1641
|
+
component: VClassIcon
|
|
1642
|
+
}
|
|
1643
|
+
};
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
// Composables
|
|
1647
|
+
function createIcons(options) {
|
|
1648
|
+
const sets = genDefaults$3();
|
|
1649
|
+
const defaultSet = options?.defaultSet ?? 'mdi';
|
|
1650
|
+
if (defaultSet === 'mdi' && !sets.mdi) {
|
|
1651
|
+
sets.mdi = mdi;
|
|
1652
|
+
}
|
|
1653
|
+
return mergeDeep({
|
|
1654
|
+
defaultSet,
|
|
1655
|
+
sets,
|
|
1656
|
+
aliases: {
|
|
1657
|
+
...aliases,
|
|
1658
|
+
/* eslint-disable max-len */
|
|
1659
|
+
vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],
|
|
1660
|
+
'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z'
|
|
1661
|
+
/* eslint-enable max-len */
|
|
1662
|
+
}
|
|
1663
|
+
}, options);
|
|
1664
|
+
}
|
|
1665
|
+
const useIcon = props => {
|
|
1666
|
+
const icons = vue.inject(IconSymbol);
|
|
1667
|
+
if (!icons) throw new Error('Missing Vuetify Icons provide!');
|
|
1668
|
+
const iconData = vue.computed(() => {
|
|
1669
|
+
const iconAlias = vue.unref(props);
|
|
1670
|
+
if (!iconAlias) return {
|
|
1671
|
+
component: VComponentIcon
|
|
1672
|
+
};
|
|
1673
|
+
let icon = iconAlias;
|
|
1674
|
+
if (typeof icon === 'string') {
|
|
1675
|
+
icon = icon.trim();
|
|
1676
|
+
if (icon.startsWith('$')) {
|
|
1677
|
+
icon = icons.aliases?.[icon.slice(1)];
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
|
|
1681
|
+
if (Array.isArray(icon)) {
|
|
1682
|
+
return {
|
|
1683
|
+
component: VSvgIcon,
|
|
1684
|
+
icon
|
|
1685
|
+
};
|
|
1686
|
+
} else if (typeof icon !== 'string') {
|
|
1687
|
+
return {
|
|
1688
|
+
component: VComponentIcon,
|
|
1689
|
+
icon
|
|
1690
|
+
};
|
|
1691
|
+
}
|
|
1692
|
+
const iconSetName = Object.keys(icons.sets).find(setName => typeof icon === 'string' && icon.startsWith(`${setName}:`));
|
|
1693
|
+
const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;
|
|
1694
|
+
const iconSet = icons.sets[iconSetName ?? icons.defaultSet];
|
|
1695
|
+
return {
|
|
1696
|
+
component: iconSet.component,
|
|
1697
|
+
icon: iconName
|
|
1698
|
+
};
|
|
1699
|
+
});
|
|
1700
|
+
return {
|
|
1701
|
+
iconData
|
|
1702
|
+
};
|
|
1703
|
+
};
|
|
1704
|
+
|
|
1705
|
+
// Composables
|
|
1706
|
+
|
|
1707
|
+
// Types
|
|
1708
|
+
|
|
1709
|
+
const aliases = {
|
|
1710
|
+
collapse: 'mdi-chevron-up',
|
|
1711
|
+
complete: 'mdi-check',
|
|
1712
|
+
cancel: 'mdi-close-circle',
|
|
1713
|
+
close: 'mdi-close',
|
|
1714
|
+
delete: 'mdi-close-circle',
|
|
1715
|
+
// delete (e.g. v-chip close)
|
|
1716
|
+
clear: 'mdi-close-circle',
|
|
1717
|
+
success: 'mdi-check-circle',
|
|
1718
|
+
info: 'mdi-information',
|
|
1719
|
+
warning: 'mdi-alert-circle',
|
|
1720
|
+
error: 'mdi-close-circle',
|
|
1721
|
+
prev: 'mdi-chevron-left',
|
|
1722
|
+
next: 'mdi-chevron-right',
|
|
1723
|
+
checkboxOn: 'mdi-checkbox-marked',
|
|
1724
|
+
checkboxOff: 'mdi-checkbox-blank-outline',
|
|
1725
|
+
checkboxIndeterminate: 'mdi-minus-box',
|
|
1726
|
+
delimiter: 'mdi-circle',
|
|
1727
|
+
// for carousel
|
|
1728
|
+
sortAsc: 'mdi-arrow-up',
|
|
1729
|
+
sortDesc: 'mdi-arrow-down',
|
|
1730
|
+
expand: 'mdi-chevron-down',
|
|
1731
|
+
menu: 'mdi-menu',
|
|
1732
|
+
subgroup: 'mdi-menu-down',
|
|
1733
|
+
dropdown: 'mdi-menu-down',
|
|
1734
|
+
radioOn: 'mdi-radiobox-marked',
|
|
1735
|
+
radioOff: 'mdi-radiobox-blank',
|
|
1736
|
+
edit: 'mdi-pencil',
|
|
1737
|
+
ratingEmpty: 'mdi-star-outline',
|
|
1738
|
+
ratingFull: 'mdi-star',
|
|
1739
|
+
ratingHalf: 'mdi-star-half-full',
|
|
1740
|
+
loading: 'mdi-cached',
|
|
1741
|
+
first: 'mdi-page-first',
|
|
1742
|
+
last: 'mdi-page-last',
|
|
1743
|
+
unfold: 'mdi-unfold-more-horizontal',
|
|
1744
|
+
file: 'mdi-paperclip',
|
|
1745
|
+
plus: 'mdi-plus',
|
|
1746
|
+
minus: 'mdi-minus',
|
|
1747
|
+
calendar: 'mdi-calendar',
|
|
1748
|
+
treeviewCollapse: 'mdi-menu-down',
|
|
1749
|
+
treeviewExpand: 'mdi-menu-right',
|
|
1750
|
+
eyeDropper: 'mdi-eyedropper'
|
|
1751
|
+
};
|
|
1752
|
+
const mdi = {
|
|
1753
|
+
// Not using mergeProps here, functional components merge props by default (?)
|
|
1754
|
+
component: props => vue.h(VClassIcon, {
|
|
1755
|
+
...props,
|
|
1756
|
+
class: 'mdi'
|
|
1757
|
+
})
|
|
1758
|
+
};
|
|
1759
|
+
|
|
1760
|
+
// Icons
|
|
1761
|
+
|
|
1762
|
+
// Types
|
|
1763
|
+
|
|
1764
|
+
const md1 = {
|
|
1765
|
+
defaults: {
|
|
1766
|
+
global: {
|
|
1767
|
+
rounded: 'sm'
|
|
1768
|
+
},
|
|
1769
|
+
VAvatar: {
|
|
1770
|
+
rounded: 'circle'
|
|
1771
|
+
},
|
|
1772
|
+
VAutocomplete: {
|
|
1773
|
+
variant: 'underlined'
|
|
1774
|
+
},
|
|
1775
|
+
VBanner: {
|
|
1776
|
+
color: 'primary'
|
|
1777
|
+
},
|
|
1778
|
+
VBtn: {
|
|
1779
|
+
color: 'primary',
|
|
1780
|
+
rounded: 0
|
|
1781
|
+
},
|
|
1782
|
+
VCheckbox: {
|
|
1783
|
+
color: 'secondary'
|
|
1784
|
+
},
|
|
1785
|
+
VCombobox: {
|
|
1786
|
+
variant: 'underlined'
|
|
1787
|
+
},
|
|
1788
|
+
VSelect: {
|
|
1789
|
+
variant: 'underlined'
|
|
1790
|
+
},
|
|
1791
|
+
VSlider: {
|
|
1792
|
+
color: 'primary'
|
|
1793
|
+
},
|
|
1794
|
+
VTabs: {
|
|
1795
|
+
color: 'primary'
|
|
1796
|
+
},
|
|
1797
|
+
VTextarea: {
|
|
1798
|
+
variant: 'underlined'
|
|
1799
|
+
},
|
|
1800
|
+
VTextField: {
|
|
1801
|
+
variant: 'underlined'
|
|
1802
|
+
},
|
|
1803
|
+
VToolbar: {
|
|
1804
|
+
VBtn: {
|
|
1805
|
+
color: null
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1808
|
+
},
|
|
1809
|
+
icons: {
|
|
1810
|
+
defaultSet: 'mdi',
|
|
1811
|
+
sets: {
|
|
1812
|
+
mdi
|
|
1813
|
+
}
|
|
1814
|
+
},
|
|
1815
|
+
theme: {
|
|
1816
|
+
themes: {
|
|
1817
|
+
light: {
|
|
1818
|
+
colors: {
|
|
1819
|
+
primary: '#3F51B5',
|
|
1820
|
+
'primary-darken-1': '#303F9F',
|
|
1821
|
+
'primary-lighten-1': '#C5CAE9',
|
|
1822
|
+
secondary: '#FF4081',
|
|
1823
|
+
'secondary-darken-1': '#F50057',
|
|
1824
|
+
'secondary-lighten-1': '#FF80AB',
|
|
1825
|
+
accent: '#009688'
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
}
|
|
1829
|
+
}
|
|
1830
|
+
};
|
|
1831
|
+
|
|
1832
|
+
// Icons
|
|
1833
|
+
|
|
1834
|
+
// Types
|
|
1835
|
+
|
|
1836
|
+
const md2 = {
|
|
1837
|
+
defaults: {
|
|
1838
|
+
global: {
|
|
1839
|
+
rounded: 'md'
|
|
1840
|
+
},
|
|
1841
|
+
VAvatar: {
|
|
1842
|
+
rounded: 'circle'
|
|
1843
|
+
},
|
|
1844
|
+
VAutocomplete: {
|
|
1845
|
+
variant: 'filled'
|
|
1846
|
+
},
|
|
1847
|
+
VBanner: {
|
|
1848
|
+
color: 'primary'
|
|
1849
|
+
},
|
|
1850
|
+
VBtn: {
|
|
1851
|
+
color: 'primary'
|
|
1852
|
+
},
|
|
1853
|
+
VCheckbox: {
|
|
1854
|
+
color: 'secondary'
|
|
1855
|
+
},
|
|
1856
|
+
VCombobox: {
|
|
1857
|
+
variant: 'filled'
|
|
1858
|
+
},
|
|
1859
|
+
VSelect: {
|
|
1860
|
+
variant: 'filled'
|
|
1861
|
+
},
|
|
1862
|
+
VSlider: {
|
|
1863
|
+
color: 'primary'
|
|
1864
|
+
},
|
|
1865
|
+
VTabs: {
|
|
1866
|
+
color: 'primary'
|
|
1867
|
+
},
|
|
1868
|
+
VTextarea: {
|
|
1869
|
+
variant: 'filled'
|
|
1870
|
+
},
|
|
1871
|
+
VTextField: {
|
|
1872
|
+
variant: 'filled'
|
|
1873
|
+
},
|
|
1874
|
+
VToolbar: {
|
|
1875
|
+
VBtn: {
|
|
1876
|
+
color: null
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
},
|
|
1880
|
+
icons: {
|
|
1881
|
+
defaultSet: 'mdi',
|
|
1882
|
+
sets: {
|
|
1883
|
+
mdi
|
|
1884
|
+
}
|
|
1885
|
+
},
|
|
1886
|
+
theme: {
|
|
1887
|
+
themes: {
|
|
1888
|
+
light: {
|
|
1889
|
+
colors: {
|
|
1890
|
+
primary: '#6200EE',
|
|
1891
|
+
'primary-darken-1': '#3700B3',
|
|
1892
|
+
secondary: '#03DAC6',
|
|
1893
|
+
'secondary-darken-1': '#018786',
|
|
1894
|
+
error: '#B00020'
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
}
|
|
1899
|
+
};
|
|
1900
|
+
|
|
1901
|
+
// Icons
|
|
1902
|
+
|
|
1903
|
+
// Types
|
|
1904
|
+
|
|
1905
|
+
const md3 = {
|
|
1906
|
+
defaults: {
|
|
1907
|
+
VAppBar: {
|
|
1908
|
+
flat: true
|
|
1909
|
+
},
|
|
1910
|
+
VAutocomplete: {
|
|
1911
|
+
variant: 'filled'
|
|
1912
|
+
},
|
|
1913
|
+
VBanner: {
|
|
1914
|
+
color: 'primary'
|
|
1915
|
+
},
|
|
1916
|
+
VBottomSheet: {
|
|
1917
|
+
contentClass: 'rounded-t-xl overflow-hidden'
|
|
1918
|
+
},
|
|
1919
|
+
VBtn: {
|
|
1920
|
+
color: 'primary',
|
|
1921
|
+
rounded: 'xl'
|
|
1922
|
+
},
|
|
1923
|
+
VBtnGroup: {
|
|
1924
|
+
rounded: 'xl',
|
|
1925
|
+
VBtn: {
|
|
1926
|
+
rounded: null
|
|
1927
|
+
}
|
|
1928
|
+
},
|
|
1929
|
+
VCard: {
|
|
1930
|
+
rounded: 'lg'
|
|
1931
|
+
},
|
|
1932
|
+
VCheckbox: {
|
|
1933
|
+
color: 'secondary',
|
|
1934
|
+
inset: true
|
|
1935
|
+
},
|
|
1936
|
+
VChip: {
|
|
1937
|
+
rounded: 'sm'
|
|
1938
|
+
},
|
|
1939
|
+
VCombobox: {
|
|
1940
|
+
variant: 'filled'
|
|
1941
|
+
},
|
|
1942
|
+
VNavigationDrawer: {
|
|
1943
|
+
// VList: {
|
|
1944
|
+
// nav: true,
|
|
1945
|
+
// VListItem: {
|
|
1946
|
+
// rounded: 'xl',
|
|
1947
|
+
// },
|
|
1948
|
+
// },
|
|
1949
|
+
},
|
|
1950
|
+
VSelect: {
|
|
1951
|
+
variant: 'filled'
|
|
1952
|
+
},
|
|
1953
|
+
VSlider: {
|
|
1954
|
+
color: 'primary'
|
|
1955
|
+
},
|
|
1956
|
+
VTabs: {
|
|
1957
|
+
color: 'primary'
|
|
1958
|
+
},
|
|
1959
|
+
VTextarea: {
|
|
1960
|
+
variant: 'filled'
|
|
1961
|
+
},
|
|
1962
|
+
VTextField: {
|
|
1963
|
+
variant: 'filled'
|
|
1964
|
+
},
|
|
1965
|
+
VToolbar: {
|
|
1966
|
+
VBtn: {
|
|
1967
|
+
color: null
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
},
|
|
1971
|
+
icons: {
|
|
1972
|
+
defaultSet: 'mdi',
|
|
1973
|
+
sets: {
|
|
1974
|
+
mdi
|
|
1975
|
+
}
|
|
1976
|
+
},
|
|
1977
|
+
theme: {
|
|
1978
|
+
themes: {
|
|
1979
|
+
light: {
|
|
1980
|
+
colors: {
|
|
1981
|
+
primary: '#6750a4',
|
|
1982
|
+
secondary: '#b4b0bb',
|
|
1983
|
+
tertiary: '#7d5260',
|
|
1984
|
+
error: '#b3261e',
|
|
1985
|
+
surface: '#fffbfe'
|
|
1986
|
+
}
|
|
1987
|
+
}
|
|
1988
|
+
}
|
|
1541
1989
|
}
|
|
1542
|
-
|
|
1543
|
-
}
|
|
1544
|
-
|
|
1545
|
-
// Utilities
|
|
1546
|
-
|
|
1547
|
-
// Types
|
|
1990
|
+
};
|
|
1548
1991
|
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1992
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
1993
|
+
__proto__: null,
|
|
1994
|
+
md1: md1,
|
|
1995
|
+
md2: md2,
|
|
1996
|
+
md3: md3
|
|
1997
|
+
});
|
|
1553
1998
|
|
|
1554
1999
|
// Utilities
|
|
1555
2000
|
|
|
@@ -2164,7 +2609,7 @@
|
|
|
2164
2609
|
vue.provide(LocaleSymbol, data);
|
|
2165
2610
|
return data;
|
|
2166
2611
|
}
|
|
2167
|
-
function genDefaults$
|
|
2612
|
+
function genDefaults$2() {
|
|
2168
2613
|
return {
|
|
2169
2614
|
af: false,
|
|
2170
2615
|
ar: true,
|
|
@@ -2211,7 +2656,7 @@
|
|
|
2211
2656
|
};
|
|
2212
2657
|
}
|
|
2213
2658
|
function createRtl(i18n, options) {
|
|
2214
|
-
const rtl = vue.ref(options?.rtl ?? genDefaults$
|
|
2659
|
+
const rtl = vue.ref(options?.rtl ?? genDefaults$2());
|
|
2215
2660
|
const isRtl = vue.computed(() => rtl.value[i18n.current.value] ?? false);
|
|
2216
2661
|
return {
|
|
2217
2662
|
isRtl,
|
|
@@ -2244,7 +2689,7 @@
|
|
|
2244
2689
|
const makeThemeProps = propsFactory({
|
|
2245
2690
|
theme: String
|
|
2246
2691
|
}, 'theme');
|
|
2247
|
-
function genDefaults$
|
|
2692
|
+
function genDefaults$1() {
|
|
2248
2693
|
return {
|
|
2249
2694
|
defaultTheme: 'light',
|
|
2250
2695
|
variations: {
|
|
@@ -2331,8 +2776,8 @@
|
|
|
2331
2776
|
};
|
|
2332
2777
|
}
|
|
2333
2778
|
function parseThemeOptions() {
|
|
2334
|
-
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$
|
|
2335
|
-
const defaults = genDefaults$
|
|
2779
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults$1();
|
|
2780
|
+
const defaults = genDefaults$1();
|
|
2336
2781
|
if (!options) return {
|
|
2337
2782
|
...defaults,
|
|
2338
2783
|
isDisabled: true
|
|
@@ -2386,7 +2831,7 @@
|
|
|
2386
2831
|
const current = vue.computed(() => computedThemes.value[name.value]);
|
|
2387
2832
|
const styles = vue.computed(() => {
|
|
2388
2833
|
const lines = [];
|
|
2389
|
-
if (current.value
|
|
2834
|
+
if (current.value?.dark) {
|
|
2390
2835
|
createCssClass(lines, ':root', ['color-scheme: dark']);
|
|
2391
2836
|
}
|
|
2392
2837
|
createCssClass(lines, ':root', genCssVariables(current.value));
|
|
@@ -4256,280 +4701,76 @@
|
|
|
4256
4701
|
}
|
|
4257
4702
|
function getIds(items, modelValue) {
|
|
4258
4703
|
const ids = [];
|
|
4259
|
-
modelValue.forEach(value => {
|
|
4260
|
-
const item = items.find(item => deepEqual(value, item.value));
|
|
4261
|
-
const itemByIndex = items[value];
|
|
4262
|
-
if (item?.value != null) {
|
|
4263
|
-
ids.push(item.id);
|
|
4264
|
-
} else if (itemByIndex != null) {
|
|
4265
|
-
ids.push(itemByIndex.id);
|
|
4266
|
-
}
|
|
4267
|
-
});
|
|
4268
|
-
return ids;
|
|
4269
|
-
}
|
|
4270
|
-
function getValues(items, ids) {
|
|
4271
|
-
const values = [];
|
|
4272
|
-
ids.forEach(id => {
|
|
4273
|
-
const itemIndex = items.findIndex(item => item.id === id);
|
|
4274
|
-
if (~itemIndex) {
|
|
4275
|
-
const item = items[itemIndex];
|
|
4276
|
-
values.push(item.value != null ? item.value : itemIndex);
|
|
4277
|
-
}
|
|
4278
|
-
});
|
|
4279
|
-
return values;
|
|
4280
|
-
}
|
|
4281
|
-
|
|
4282
|
-
// Types
|
|
4283
|
-
|
|
4284
|
-
const VBtnToggleSymbol = Symbol.for('vuetify:v-btn-toggle');
|
|
4285
|
-
const makeVBtnToggleProps = propsFactory({
|
|
4286
|
-
...makeVBtnGroupProps(),
|
|
4287
|
-
...makeGroupProps()
|
|
4288
|
-
}, 'VBtnToggle');
|
|
4289
|
-
const VBtnToggle = genericComponent()({
|
|
4290
|
-
name: 'VBtnToggle',
|
|
4291
|
-
props: makeVBtnToggleProps(),
|
|
4292
|
-
emits: {
|
|
4293
|
-
'update:modelValue': value => true
|
|
4294
|
-
},
|
|
4295
|
-
setup(props, _ref) {
|
|
4296
|
-
let {
|
|
4297
|
-
slots
|
|
4298
|
-
} = _ref;
|
|
4299
|
-
const {
|
|
4300
|
-
isSelected,
|
|
4301
|
-
next,
|
|
4302
|
-
prev,
|
|
4303
|
-
select,
|
|
4304
|
-
selected
|
|
4305
|
-
} = useGroup(props, VBtnToggleSymbol);
|
|
4306
|
-
useRender(() => {
|
|
4307
|
-
const btnGroupProps = VBtnGroup.filterProps(props);
|
|
4308
|
-
return vue.createVNode(VBtnGroup, vue.mergeProps({
|
|
4309
|
-
"class": ['v-btn-toggle', props.class]
|
|
4310
|
-
}, btnGroupProps, {
|
|
4311
|
-
"style": props.style
|
|
4312
|
-
}), {
|
|
4313
|
-
default: () => [slots.default?.({
|
|
4314
|
-
isSelected,
|
|
4315
|
-
next,
|
|
4316
|
-
prev,
|
|
4317
|
-
select,
|
|
4318
|
-
selected
|
|
4319
|
-
})]
|
|
4320
|
-
});
|
|
4321
|
-
});
|
|
4322
|
-
return {
|
|
4323
|
-
next,
|
|
4324
|
-
prev,
|
|
4325
|
-
select
|
|
4326
|
-
};
|
|
4327
|
-
}
|
|
4328
|
-
});
|
|
4329
|
-
|
|
4330
|
-
// Composables
|
|
4331
|
-
|
|
4332
|
-
// Types
|
|
4333
|
-
|
|
4334
|
-
const aliases = {
|
|
4335
|
-
collapse: 'mdi-chevron-up',
|
|
4336
|
-
complete: 'mdi-check',
|
|
4337
|
-
cancel: 'mdi-close-circle',
|
|
4338
|
-
close: 'mdi-close',
|
|
4339
|
-
delete: 'mdi-close-circle',
|
|
4340
|
-
// delete (e.g. v-chip close)
|
|
4341
|
-
clear: 'mdi-close-circle',
|
|
4342
|
-
success: 'mdi-check-circle',
|
|
4343
|
-
info: 'mdi-information',
|
|
4344
|
-
warning: 'mdi-alert-circle',
|
|
4345
|
-
error: 'mdi-close-circle',
|
|
4346
|
-
prev: 'mdi-chevron-left',
|
|
4347
|
-
next: 'mdi-chevron-right',
|
|
4348
|
-
checkboxOn: 'mdi-checkbox-marked',
|
|
4349
|
-
checkboxOff: 'mdi-checkbox-blank-outline',
|
|
4350
|
-
checkboxIndeterminate: 'mdi-minus-box',
|
|
4351
|
-
delimiter: 'mdi-circle',
|
|
4352
|
-
// for carousel
|
|
4353
|
-
sortAsc: 'mdi-arrow-up',
|
|
4354
|
-
sortDesc: 'mdi-arrow-down',
|
|
4355
|
-
expand: 'mdi-chevron-down',
|
|
4356
|
-
menu: 'mdi-menu',
|
|
4357
|
-
subgroup: 'mdi-menu-down',
|
|
4358
|
-
dropdown: 'mdi-menu-down',
|
|
4359
|
-
radioOn: 'mdi-radiobox-marked',
|
|
4360
|
-
radioOff: 'mdi-radiobox-blank',
|
|
4361
|
-
edit: 'mdi-pencil',
|
|
4362
|
-
ratingEmpty: 'mdi-star-outline',
|
|
4363
|
-
ratingFull: 'mdi-star',
|
|
4364
|
-
ratingHalf: 'mdi-star-half-full',
|
|
4365
|
-
loading: 'mdi-cached',
|
|
4366
|
-
first: 'mdi-page-first',
|
|
4367
|
-
last: 'mdi-page-last',
|
|
4368
|
-
unfold: 'mdi-unfold-more-horizontal',
|
|
4369
|
-
file: 'mdi-paperclip',
|
|
4370
|
-
plus: 'mdi-plus',
|
|
4371
|
-
minus: 'mdi-minus',
|
|
4372
|
-
calendar: 'mdi-calendar',
|
|
4373
|
-
eyeDropper: 'mdi-eyedropper'
|
|
4374
|
-
};
|
|
4375
|
-
const mdi = {
|
|
4376
|
-
// Not using mergeProps here, functional components merge props by default (?)
|
|
4377
|
-
component: props => vue.h(VClassIcon, {
|
|
4378
|
-
...props,
|
|
4379
|
-
class: 'mdi'
|
|
4380
|
-
})
|
|
4381
|
-
};
|
|
4382
|
-
|
|
4383
|
-
// Types
|
|
4384
|
-
|
|
4385
|
-
const IconValue = [String, Function, Object, Array];
|
|
4386
|
-
const IconSymbol = Symbol.for('vuetify:icons');
|
|
4387
|
-
const makeIconProps = propsFactory({
|
|
4388
|
-
icon: {
|
|
4389
|
-
type: IconValue
|
|
4390
|
-
},
|
|
4391
|
-
// Could not remove this and use makeTagProps, types complained because it is not required
|
|
4392
|
-
tag: {
|
|
4393
|
-
type: String,
|
|
4394
|
-
required: true
|
|
4395
|
-
}
|
|
4396
|
-
}, 'icon');
|
|
4397
|
-
const VComponentIcon = genericComponent()({
|
|
4398
|
-
name: 'VComponentIcon',
|
|
4399
|
-
props: makeIconProps(),
|
|
4400
|
-
setup(props, _ref) {
|
|
4401
|
-
let {
|
|
4402
|
-
slots
|
|
4403
|
-
} = _ref;
|
|
4404
|
-
return () => {
|
|
4405
|
-
const Icon = props.icon;
|
|
4406
|
-
return vue.createVNode(props.tag, null, {
|
|
4407
|
-
default: () => [props.icon ? vue.createVNode(Icon, null, null) : slots.default?.()]
|
|
4408
|
-
});
|
|
4409
|
-
};
|
|
4410
|
-
}
|
|
4411
|
-
});
|
|
4412
|
-
const VSvgIcon = defineComponent({
|
|
4413
|
-
name: 'VSvgIcon',
|
|
4414
|
-
inheritAttrs: false,
|
|
4415
|
-
props: makeIconProps(),
|
|
4416
|
-
setup(props, _ref2) {
|
|
4417
|
-
let {
|
|
4418
|
-
attrs
|
|
4419
|
-
} = _ref2;
|
|
4420
|
-
return () => {
|
|
4421
|
-
return vue.createVNode(props.tag, vue.mergeProps(attrs, {
|
|
4422
|
-
"style": null
|
|
4423
|
-
}), {
|
|
4424
|
-
default: () => [vue.createVNode("svg", {
|
|
4425
|
-
"class": "v-icon__svg",
|
|
4426
|
-
"xmlns": "http://www.w3.org/2000/svg",
|
|
4427
|
-
"viewBox": "0 0 24 24",
|
|
4428
|
-
"role": "img",
|
|
4429
|
-
"aria-hidden": "true"
|
|
4430
|
-
}, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? vue.createVNode("path", {
|
|
4431
|
-
"d": path[0],
|
|
4432
|
-
"fill-opacity": path[1]
|
|
4433
|
-
}, null) : vue.createVNode("path", {
|
|
4434
|
-
"d": path
|
|
4435
|
-
}, null)) : vue.createVNode("path", {
|
|
4436
|
-
"d": props.icon
|
|
4437
|
-
}, null)])]
|
|
4438
|
-
});
|
|
4439
|
-
};
|
|
4440
|
-
}
|
|
4441
|
-
});
|
|
4442
|
-
const VLigatureIcon = defineComponent({
|
|
4443
|
-
name: 'VLigatureIcon',
|
|
4444
|
-
props: makeIconProps(),
|
|
4445
|
-
setup(props) {
|
|
4446
|
-
return () => {
|
|
4447
|
-
return vue.createVNode(props.tag, null, {
|
|
4448
|
-
default: () => [props.icon]
|
|
4449
|
-
});
|
|
4450
|
-
};
|
|
4451
|
-
}
|
|
4452
|
-
});
|
|
4453
|
-
const VClassIcon = defineComponent({
|
|
4454
|
-
name: 'VClassIcon',
|
|
4455
|
-
props: makeIconProps(),
|
|
4456
|
-
setup(props) {
|
|
4457
|
-
return () => {
|
|
4458
|
-
return vue.createVNode(props.tag, {
|
|
4459
|
-
"class": props.icon
|
|
4460
|
-
}, null);
|
|
4461
|
-
};
|
|
4462
|
-
}
|
|
4463
|
-
});
|
|
4464
|
-
function genDefaults$1() {
|
|
4465
|
-
return {
|
|
4466
|
-
svg: {
|
|
4467
|
-
component: VSvgIcon
|
|
4468
|
-
},
|
|
4469
|
-
class: {
|
|
4470
|
-
component: VClassIcon
|
|
4471
|
-
}
|
|
4472
|
-
};
|
|
4473
|
-
}
|
|
4474
|
-
|
|
4475
|
-
// Composables
|
|
4476
|
-
function createIcons(options) {
|
|
4477
|
-
const sets = genDefaults$1();
|
|
4478
|
-
const defaultSet = options?.defaultSet ?? 'mdi';
|
|
4479
|
-
if (defaultSet === 'mdi' && !sets.mdi) {
|
|
4480
|
-
sets.mdi = mdi;
|
|
4481
|
-
}
|
|
4482
|
-
return mergeDeep({
|
|
4483
|
-
defaultSet,
|
|
4484
|
-
sets,
|
|
4485
|
-
aliases: {
|
|
4486
|
-
...aliases,
|
|
4487
|
-
/* eslint-disable max-len */
|
|
4488
|
-
vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],
|
|
4489
|
-
'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z'
|
|
4490
|
-
/* eslint-enable max-len */
|
|
4704
|
+
modelValue.forEach(value => {
|
|
4705
|
+
const item = items.find(item => deepEqual(value, item.value));
|
|
4706
|
+
const itemByIndex = items[value];
|
|
4707
|
+
if (item?.value != null) {
|
|
4708
|
+
ids.push(item.id);
|
|
4709
|
+
} else if (itemByIndex != null) {
|
|
4710
|
+
ids.push(itemByIndex.id);
|
|
4491
4711
|
}
|
|
4492
|
-
}
|
|
4712
|
+
});
|
|
4713
|
+
return ids;
|
|
4493
4714
|
}
|
|
4494
|
-
|
|
4495
|
-
const
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
};
|
|
4502
|
-
let icon = iconAlias;
|
|
4503
|
-
if (typeof icon === 'string') {
|
|
4504
|
-
icon = icon.trim();
|
|
4505
|
-
if (icon.startsWith('$')) {
|
|
4506
|
-
icon = icons.aliases?.[icon.slice(1)];
|
|
4507
|
-
}
|
|
4508
|
-
}
|
|
4509
|
-
if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
|
|
4510
|
-
if (Array.isArray(icon)) {
|
|
4511
|
-
return {
|
|
4512
|
-
component: VSvgIcon,
|
|
4513
|
-
icon
|
|
4514
|
-
};
|
|
4515
|
-
} else if (typeof icon !== 'string') {
|
|
4516
|
-
return {
|
|
4517
|
-
component: VComponentIcon,
|
|
4518
|
-
icon
|
|
4519
|
-
};
|
|
4715
|
+
function getValues(items, ids) {
|
|
4716
|
+
const values = [];
|
|
4717
|
+
ids.forEach(id => {
|
|
4718
|
+
const itemIndex = items.findIndex(item => item.id === id);
|
|
4719
|
+
if (~itemIndex) {
|
|
4720
|
+
const item = items[itemIndex];
|
|
4721
|
+
values.push(item.value != null ? item.value : itemIndex);
|
|
4520
4722
|
}
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4723
|
+
});
|
|
4724
|
+
return values;
|
|
4725
|
+
}
|
|
4726
|
+
|
|
4727
|
+
// Types
|
|
4728
|
+
|
|
4729
|
+
const VBtnToggleSymbol = Symbol.for('vuetify:v-btn-toggle');
|
|
4730
|
+
const makeVBtnToggleProps = propsFactory({
|
|
4731
|
+
...makeVBtnGroupProps(),
|
|
4732
|
+
...makeGroupProps()
|
|
4733
|
+
}, 'VBtnToggle');
|
|
4734
|
+
const VBtnToggle = genericComponent()({
|
|
4735
|
+
name: 'VBtnToggle',
|
|
4736
|
+
props: makeVBtnToggleProps(),
|
|
4737
|
+
emits: {
|
|
4738
|
+
'update:modelValue': value => true
|
|
4739
|
+
},
|
|
4740
|
+
setup(props, _ref) {
|
|
4741
|
+
let {
|
|
4742
|
+
slots
|
|
4743
|
+
} = _ref;
|
|
4744
|
+
const {
|
|
4745
|
+
isSelected,
|
|
4746
|
+
next,
|
|
4747
|
+
prev,
|
|
4748
|
+
select,
|
|
4749
|
+
selected
|
|
4750
|
+
} = useGroup(props, VBtnToggleSymbol);
|
|
4751
|
+
useRender(() => {
|
|
4752
|
+
const btnGroupProps = VBtnGroup.filterProps(props);
|
|
4753
|
+
return vue.createVNode(VBtnGroup, vue.mergeProps({
|
|
4754
|
+
"class": ['v-btn-toggle', props.class]
|
|
4755
|
+
}, btnGroupProps, {
|
|
4756
|
+
"style": props.style
|
|
4757
|
+
}), {
|
|
4758
|
+
default: () => [slots.default?.({
|
|
4759
|
+
isSelected,
|
|
4760
|
+
next,
|
|
4761
|
+
prev,
|
|
4762
|
+
select,
|
|
4763
|
+
selected
|
|
4764
|
+
})]
|
|
4765
|
+
});
|
|
4766
|
+
});
|
|
4524
4767
|
return {
|
|
4525
|
-
|
|
4526
|
-
|
|
4768
|
+
next,
|
|
4769
|
+
prev,
|
|
4770
|
+
select
|
|
4527
4771
|
};
|
|
4528
|
-
}
|
|
4529
|
-
|
|
4530
|
-
iconData
|
|
4531
|
-
};
|
|
4532
|
-
};
|
|
4772
|
+
}
|
|
4773
|
+
});
|
|
4533
4774
|
|
|
4534
4775
|
// Utilities
|
|
4535
4776
|
|
|
@@ -4564,6 +4805,7 @@
|
|
|
4564
4805
|
|
|
4565
4806
|
const makeVIconProps = propsFactory({
|
|
4566
4807
|
color: String,
|
|
4808
|
+
disabled: Boolean,
|
|
4567
4809
|
start: Boolean,
|
|
4568
4810
|
end: Boolean,
|
|
4569
4811
|
icon: IconValue,
|
|
@@ -4601,11 +4843,13 @@
|
|
|
4601
4843
|
if (slotValue) {
|
|
4602
4844
|
slotIcon.value = flattenFragments(slotValue).filter(node => node.type === vue.Text && node.children && typeof node.children === 'string')[0]?.children;
|
|
4603
4845
|
}
|
|
4846
|
+
const hasClick = !!(attrs.onClick || attrs.onClickOnce);
|
|
4604
4847
|
return vue.createVNode(iconData.value.component, {
|
|
4605
4848
|
"tag": props.tag,
|
|
4606
4849
|
"icon": iconData.value.icon,
|
|
4607
4850
|
"class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
|
|
4608
|
-
'v-icon--clickable':
|
|
4851
|
+
'v-icon--clickable': hasClick,
|
|
4852
|
+
'v-icon--disabled': props.disabled,
|
|
4609
4853
|
'v-icon--start': props.start,
|
|
4610
4854
|
'v-icon--end': props.end
|
|
4611
4855
|
}, props.class],
|
|
@@ -4614,8 +4858,9 @@
|
|
|
4614
4858
|
height: convertToUnit(props.size),
|
|
4615
4859
|
width: convertToUnit(props.size)
|
|
4616
4860
|
} : undefined, textColorStyles.value, props.style],
|
|
4617
|
-
"role":
|
|
4618
|
-
"aria-hidden": !
|
|
4861
|
+
"role": hasClick ? 'button' : undefined,
|
|
4862
|
+
"aria-hidden": !hasClick,
|
|
4863
|
+
"tabindex": hasClick ? props.disabled ? -1 : 0 : undefined
|
|
4619
4864
|
}, {
|
|
4620
4865
|
default: () => [slotValue]
|
|
4621
4866
|
});
|
|
@@ -7756,6 +8001,126 @@
|
|
|
7756
8001
|
return vue.inject(ListKey, null);
|
|
7757
8002
|
}
|
|
7758
8003
|
|
|
8004
|
+
/* eslint-disable sonarjs/no-identical-functions */
|
|
8005
|
+
// Utilities
|
|
8006
|
+
const independentActiveStrategy = mandatory => {
|
|
8007
|
+
const strategy = {
|
|
8008
|
+
activate: _ref => {
|
|
8009
|
+
let {
|
|
8010
|
+
id,
|
|
8011
|
+
value,
|
|
8012
|
+
activated
|
|
8013
|
+
} = _ref;
|
|
8014
|
+
id = vue.toRaw(id);
|
|
8015
|
+
|
|
8016
|
+
// When mandatory and we're trying to deselect when id
|
|
8017
|
+
// is the only currently selected item then do nothing
|
|
8018
|
+
if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated;
|
|
8019
|
+
if (value) {
|
|
8020
|
+
activated.add(id);
|
|
8021
|
+
} else {
|
|
8022
|
+
activated.delete(id);
|
|
8023
|
+
}
|
|
8024
|
+
return activated;
|
|
8025
|
+
},
|
|
8026
|
+
in: (v, children, parents) => {
|
|
8027
|
+
let set = new Set();
|
|
8028
|
+
for (const id of v || []) {
|
|
8029
|
+
set = strategy.activate({
|
|
8030
|
+
id,
|
|
8031
|
+
value: true,
|
|
8032
|
+
activated: new Set(set),
|
|
8033
|
+
children,
|
|
8034
|
+
parents
|
|
8035
|
+
});
|
|
8036
|
+
}
|
|
8037
|
+
return set;
|
|
8038
|
+
},
|
|
8039
|
+
out: v => {
|
|
8040
|
+
return Array.from(v);
|
|
8041
|
+
}
|
|
8042
|
+
};
|
|
8043
|
+
return strategy;
|
|
8044
|
+
};
|
|
8045
|
+
const independentSingleActiveStrategy = mandatory => {
|
|
8046
|
+
const parentStrategy = independentActiveStrategy(mandatory);
|
|
8047
|
+
const strategy = {
|
|
8048
|
+
activate: _ref2 => {
|
|
8049
|
+
let {
|
|
8050
|
+
activated,
|
|
8051
|
+
id,
|
|
8052
|
+
...rest
|
|
8053
|
+
} = _ref2;
|
|
8054
|
+
id = vue.toRaw(id);
|
|
8055
|
+
const singleSelected = activated.has(id) ? new Set([id]) : new Set();
|
|
8056
|
+
return parentStrategy.activate({
|
|
8057
|
+
...rest,
|
|
8058
|
+
id,
|
|
8059
|
+
activated: singleSelected
|
|
8060
|
+
});
|
|
8061
|
+
},
|
|
8062
|
+
in: (v, children, parents) => {
|
|
8063
|
+
let set = new Set();
|
|
8064
|
+
if (v?.length) {
|
|
8065
|
+
set = parentStrategy.in(v.slice(0, 1), children, parents);
|
|
8066
|
+
}
|
|
8067
|
+
return set;
|
|
8068
|
+
},
|
|
8069
|
+
out: (v, children, parents) => {
|
|
8070
|
+
return parentStrategy.out(v, children, parents);
|
|
8071
|
+
}
|
|
8072
|
+
};
|
|
8073
|
+
return strategy;
|
|
8074
|
+
};
|
|
8075
|
+
const leafActiveStrategy = mandatory => {
|
|
8076
|
+
const parentStrategy = independentActiveStrategy(mandatory);
|
|
8077
|
+
const strategy = {
|
|
8078
|
+
activate: _ref3 => {
|
|
8079
|
+
let {
|
|
8080
|
+
id,
|
|
8081
|
+
activated,
|
|
8082
|
+
children,
|
|
8083
|
+
...rest
|
|
8084
|
+
} = _ref3;
|
|
8085
|
+
id = vue.toRaw(id);
|
|
8086
|
+
if (children.has(id)) return activated;
|
|
8087
|
+
return parentStrategy.activate({
|
|
8088
|
+
id,
|
|
8089
|
+
activated,
|
|
8090
|
+
children,
|
|
8091
|
+
...rest
|
|
8092
|
+
});
|
|
8093
|
+
},
|
|
8094
|
+
in: parentStrategy.in,
|
|
8095
|
+
out: parentStrategy.out
|
|
8096
|
+
};
|
|
8097
|
+
return strategy;
|
|
8098
|
+
};
|
|
8099
|
+
const leafSingleActiveStrategy = mandatory => {
|
|
8100
|
+
const parentStrategy = independentSingleActiveStrategy(mandatory);
|
|
8101
|
+
const strategy = {
|
|
8102
|
+
activate: _ref4 => {
|
|
8103
|
+
let {
|
|
8104
|
+
id,
|
|
8105
|
+
activated,
|
|
8106
|
+
children,
|
|
8107
|
+
...rest
|
|
8108
|
+
} = _ref4;
|
|
8109
|
+
id = vue.toRaw(id);
|
|
8110
|
+
if (children.has(id)) return activated;
|
|
8111
|
+
return parentStrategy.activate({
|
|
8112
|
+
id,
|
|
8113
|
+
activated,
|
|
8114
|
+
children,
|
|
8115
|
+
...rest
|
|
8116
|
+
});
|
|
8117
|
+
},
|
|
8118
|
+
in: parentStrategy.in,
|
|
8119
|
+
out: parentStrategy.out
|
|
8120
|
+
};
|
|
8121
|
+
return strategy;
|
|
8122
|
+
};
|
|
8123
|
+
|
|
7759
8124
|
const singleOpenStrategy = {
|
|
7760
8125
|
open: _ref => {
|
|
7761
8126
|
let {
|
|
@@ -7840,7 +8205,8 @@
|
|
|
7840
8205
|
if (mandatory && !value) {
|
|
7841
8206
|
const on = Array.from(selected.entries()).reduce((arr, _ref2) => {
|
|
7842
8207
|
let [key, value] = _ref2;
|
|
7843
|
-
|
|
8208
|
+
if (value === 'on') arr.push(key);
|
|
8209
|
+
return arr;
|
|
7844
8210
|
}, []);
|
|
7845
8211
|
if (on.length === 1 && on[0] === id) return selected;
|
|
7846
8212
|
}
|
|
@@ -7982,7 +8348,8 @@
|
|
|
7982
8348
|
if (mandatory && !value) {
|
|
7983
8349
|
const on = Array.from(selected.entries()).reduce((arr, _ref7) => {
|
|
7984
8350
|
let [key, value] = _ref7;
|
|
7985
|
-
|
|
8351
|
+
if (value === 'on') arr.push(key);
|
|
8352
|
+
return arr;
|
|
7986
8353
|
}, []);
|
|
7987
8354
|
if (on.length === 0) return original;
|
|
7988
8355
|
}
|
|
@@ -8026,16 +8393,24 @@
|
|
|
8026
8393
|
children: vue.ref(new Map()),
|
|
8027
8394
|
open: () => null,
|
|
8028
8395
|
openOnSelect: () => null,
|
|
8396
|
+
activate: () => null,
|
|
8029
8397
|
select: () => null,
|
|
8398
|
+
activatable: vue.ref(false),
|
|
8399
|
+
selectable: vue.ref(false),
|
|
8030
8400
|
opened: vue.ref(new Set()),
|
|
8401
|
+
activated: vue.ref(new Set()),
|
|
8031
8402
|
selected: vue.ref(new Map()),
|
|
8032
8403
|
selectedValues: vue.ref([])
|
|
8033
8404
|
}
|
|
8034
8405
|
};
|
|
8035
8406
|
const makeNestedProps = propsFactory({
|
|
8407
|
+
activatable: Boolean,
|
|
8408
|
+
selectable: Boolean,
|
|
8409
|
+
activeStrategy: [String, Function],
|
|
8036
8410
|
selectStrategy: [String, Function],
|
|
8037
8411
|
openStrategy: [String, Object],
|
|
8038
8412
|
opened: Array,
|
|
8413
|
+
activated: Array,
|
|
8039
8414
|
selected: Array,
|
|
8040
8415
|
mandatory: Boolean
|
|
8041
8416
|
}, 'nested');
|
|
@@ -8044,6 +8419,20 @@
|
|
|
8044
8419
|
const children = vue.ref(new Map());
|
|
8045
8420
|
const parents = vue.ref(new Map());
|
|
8046
8421
|
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
|
|
8422
|
+
const activeStrategy = vue.computed(() => {
|
|
8423
|
+
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
|
8424
|
+
switch (props.activeStrategy) {
|
|
8425
|
+
case 'leaf':
|
|
8426
|
+
return leafActiveStrategy(props.mandatory);
|
|
8427
|
+
case 'single-leaf':
|
|
8428
|
+
return leafSingleActiveStrategy(props.mandatory);
|
|
8429
|
+
case 'independent':
|
|
8430
|
+
return independentActiveStrategy(props.mandatory);
|
|
8431
|
+
case 'single-independent':
|
|
8432
|
+
default:
|
|
8433
|
+
return independentSingleActiveStrategy(props.mandatory);
|
|
8434
|
+
}
|
|
8435
|
+
});
|
|
8047
8436
|
const selectStrategy = vue.computed(() => {
|
|
8048
8437
|
if (typeof props.selectStrategy === 'object') return props.selectStrategy;
|
|
8049
8438
|
switch (props.selectStrategy) {
|
|
@@ -8072,6 +8461,7 @@
|
|
|
8072
8461
|
return multipleOpenStrategy;
|
|
8073
8462
|
}
|
|
8074
8463
|
});
|
|
8464
|
+
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));
|
|
8075
8465
|
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));
|
|
8076
8466
|
vue.onBeforeUnmount(() => {
|
|
8077
8467
|
isUnmounted = true;
|
|
@@ -8090,6 +8480,9 @@
|
|
|
8090
8480
|
id: vue.shallowRef(),
|
|
8091
8481
|
root: {
|
|
8092
8482
|
opened,
|
|
8483
|
+
activatable: vue.toRef(props, 'activatable'),
|
|
8484
|
+
selectable: vue.toRef(props, 'selectable'),
|
|
8485
|
+
activated,
|
|
8093
8486
|
selected,
|
|
8094
8487
|
selectedValues: vue.computed(() => {
|
|
8095
8488
|
const arr = [];
|
|
@@ -8163,6 +8556,26 @@
|
|
|
8163
8556
|
newSelected && (selected.value = newSelected);
|
|
8164
8557
|
nested.root.openOnSelect(id, value, event);
|
|
8165
8558
|
},
|
|
8559
|
+
activate: (id, value, event) => {
|
|
8560
|
+
if (!props.activatable) {
|
|
8561
|
+
return nested.root.select(id, true, event);
|
|
8562
|
+
}
|
|
8563
|
+
vm.emit('click:activate', {
|
|
8564
|
+
id,
|
|
8565
|
+
value,
|
|
8566
|
+
path: getPath(id),
|
|
8567
|
+
event
|
|
8568
|
+
});
|
|
8569
|
+
const newActivated = activeStrategy.value.activate({
|
|
8570
|
+
id,
|
|
8571
|
+
value,
|
|
8572
|
+
activated: new Set(activated.value),
|
|
8573
|
+
children: children.value,
|
|
8574
|
+
parents: parents.value,
|
|
8575
|
+
event
|
|
8576
|
+
});
|
|
8577
|
+
newActivated && (activated.value = newActivated);
|
|
8578
|
+
},
|
|
8166
8579
|
children,
|
|
8167
8580
|
parents
|
|
8168
8581
|
}
|
|
@@ -8181,6 +8594,8 @@
|
|
|
8181
8594
|
openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e),
|
|
8182
8595
|
isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
|
|
8183
8596
|
parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
|
|
8597
|
+
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
|
8598
|
+
isActivated: vue.computed(() => parent.root.activated.value.has(vue.toRaw(computedId.value))),
|
|
8184
8599
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
|
8185
8600
|
isSelected: vue.computed(() => parent.root.selected.value.get(vue.toRaw(computedId.value)) === 'on'),
|
|
8186
8601
|
isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
|
@@ -8303,7 +8718,9 @@
|
|
|
8303
8718
|
}, [slots.default?.()]), [[vue.vShow, isOpen.value]])]
|
|
8304
8719
|
})]
|
|
8305
8720
|
}));
|
|
8306
|
-
return {
|
|
8721
|
+
return {
|
|
8722
|
+
isOpen
|
|
8723
|
+
};
|
|
8307
8724
|
}
|
|
8308
8725
|
});
|
|
8309
8726
|
|
|
@@ -8376,6 +8793,8 @@
|
|
|
8376
8793
|
const link = useLink(props, attrs);
|
|
8377
8794
|
const id = vue.computed(() => props.value === undefined ? link.href.value : props.value);
|
|
8378
8795
|
const {
|
|
8796
|
+
activate,
|
|
8797
|
+
isActivated,
|
|
8379
8798
|
select,
|
|
8380
8799
|
isSelected,
|
|
8381
8800
|
isIndeterminate,
|
|
@@ -8385,9 +8804,9 @@
|
|
|
8385
8804
|
openOnSelect
|
|
8386
8805
|
} = useNestedItem(id, false);
|
|
8387
8806
|
const list = useList();
|
|
8388
|
-
const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || isSelected.value));
|
|
8807
|
+
const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
|
|
8389
8808
|
const isLink = vue.computed(() => props.link !== false && link.isLink.value);
|
|
8390
|
-
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null
|
|
8809
|
+
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || !!list && (root.selectable.value || root.activatable.value || props.value != null)));
|
|
8391
8810
|
const roundedProps = vue.computed(() => props.rounded || props.nav);
|
|
8392
8811
|
const color = vue.computed(() => props.color ?? props.activeColor);
|
|
8393
8812
|
const variantProps = vue.computed(() => ({
|
|
@@ -8438,7 +8857,13 @@
|
|
|
8438
8857
|
emit('click', e);
|
|
8439
8858
|
if (isGroupActivator || !isClickable.value) return;
|
|
8440
8859
|
link.navigate?.(e);
|
|
8441
|
-
|
|
8860
|
+
if (root.activatable.value) {
|
|
8861
|
+
activate(!isActivated.value, e);
|
|
8862
|
+
} else if (root.selectable.value) {
|
|
8863
|
+
select(!isSelected.value, e);
|
|
8864
|
+
} else if (props.value != null) {
|
|
8865
|
+
select(!isSelected.value, e);
|
|
8866
|
+
}
|
|
8442
8867
|
}
|
|
8443
8868
|
function onKeyDown(e) {
|
|
8444
8869
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
@@ -8554,7 +8979,12 @@
|
|
|
8554
8979
|
}, null)])]
|
|
8555
8980
|
}), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
|
|
8556
8981
|
});
|
|
8557
|
-
return {
|
|
8982
|
+
return {
|
|
8983
|
+
isGroupActivator,
|
|
8984
|
+
isSelected,
|
|
8985
|
+
list,
|
|
8986
|
+
select
|
|
8987
|
+
};
|
|
8558
8988
|
}
|
|
8559
8989
|
});
|
|
8560
8990
|
|
|
@@ -8896,8 +9326,10 @@
|
|
|
8896
9326
|
props: makeVListProps(),
|
|
8897
9327
|
emits: {
|
|
8898
9328
|
'update:selected': value => true,
|
|
9329
|
+
'update:activated': value => true,
|
|
8899
9330
|
'update:opened': value => true,
|
|
8900
9331
|
'click:open': value => true,
|
|
9332
|
+
'click:activate': value => true,
|
|
8901
9333
|
'click:select': value => true
|
|
8902
9334
|
},
|
|
8903
9335
|
setup(props, _ref) {
|
|
@@ -8930,7 +9362,9 @@
|
|
|
8930
9362
|
roundedClasses
|
|
8931
9363
|
} = useRounded(props);
|
|
8932
9364
|
const {
|
|
9365
|
+
children,
|
|
8933
9366
|
open,
|
|
9367
|
+
parents,
|
|
8934
9368
|
select
|
|
8935
9369
|
} = useNested(props);
|
|
8936
9370
|
const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
|
|
@@ -9020,7 +9454,9 @@
|
|
|
9020
9454
|
return {
|
|
9021
9455
|
open,
|
|
9022
9456
|
select,
|
|
9023
|
-
focus
|
|
9457
|
+
focus,
|
|
9458
|
+
children,
|
|
9459
|
+
parents
|
|
9024
9460
|
};
|
|
9025
9461
|
}
|
|
9026
9462
|
});
|
|
@@ -9562,7 +9998,7 @@
|
|
|
9562
9998
|
scope?.stop();
|
|
9563
9999
|
if (!(data.isActive.value && props.scrollStrategy)) return;
|
|
9564
10000
|
scope = vue.effectScope();
|
|
9565
|
-
await
|
|
10001
|
+
await new Promise(resolve => setTimeout(resolve));
|
|
9566
10002
|
scope.active && scope.run(() => {
|
|
9567
10003
|
if (typeof props.scrollStrategy === 'function') {
|
|
9568
10004
|
props.scrollStrategy(data, props, scope);
|
|
@@ -10311,6 +10747,7 @@
|
|
|
10311
10747
|
if (v) isActive.value = false;
|
|
10312
10748
|
});
|
|
10313
10749
|
const root = vue.ref();
|
|
10750
|
+
const scrimEl = vue.ref();
|
|
10314
10751
|
const contentEl = vue.ref();
|
|
10315
10752
|
const {
|
|
10316
10753
|
contentStyles,
|
|
@@ -10332,8 +10769,10 @@
|
|
|
10332
10769
|
emit('click:outside', e);
|
|
10333
10770
|
if (!props.persistent) isActive.value = false;else animateClick();
|
|
10334
10771
|
}
|
|
10335
|
-
function closeConditional() {
|
|
10336
|
-
return isActive.value && globalTop.value
|
|
10772
|
+
function closeConditional(e) {
|
|
10773
|
+
return isActive.value && globalTop.value && (
|
|
10774
|
+
// If using scrim, only close if clicking on it rather than anything opened on top
|
|
10775
|
+
!props.scrim || e.target === scrimEl.value);
|
|
10337
10776
|
}
|
|
10338
10777
|
IN_BROWSER && vue.watch(isActive, val => {
|
|
10339
10778
|
if (val) {
|
|
@@ -10420,7 +10859,8 @@
|
|
|
10420
10859
|
"ref": root
|
|
10421
10860
|
}, scopeId, attrs), [vue.createVNode(Scrim, vue.mergeProps({
|
|
10422
10861
|
"color": scrimColor,
|
|
10423
|
-
"modelValue": isActive.value && !!props.scrim
|
|
10862
|
+
"modelValue": isActive.value && !!props.scrim,
|
|
10863
|
+
"ref": scrimEl
|
|
10424
10864
|
}, scrimEvents.value), null), vue.createVNode(MaybeTransition, {
|
|
10425
10865
|
"appear": true,
|
|
10426
10866
|
"persisted": true,
|
|
@@ -10443,6 +10883,7 @@
|
|
|
10443
10883
|
})]));
|
|
10444
10884
|
return {
|
|
10445
10885
|
activatorEl,
|
|
10886
|
+
scrimEl,
|
|
10446
10887
|
target,
|
|
10447
10888
|
animateClick,
|
|
10448
10889
|
contentEl,
|
|
@@ -10638,6 +11079,9 @@
|
|
|
10638
11079
|
isActive.value = false;
|
|
10639
11080
|
overlay.value?.activatorEl?.focus();
|
|
10640
11081
|
}
|
|
11082
|
+
} else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {
|
|
11083
|
+
isActive.value = false;
|
|
11084
|
+
parent?.closeParents();
|
|
10641
11085
|
}
|
|
10642
11086
|
}
|
|
10643
11087
|
function onActivatorKeydown(e) {
|
|
@@ -10915,7 +11359,7 @@
|
|
|
10915
11359
|
}
|
|
10916
11360
|
useRender(() => {
|
|
10917
11361
|
const isOutlined = props.variant === 'outlined';
|
|
10918
|
-
const hasPrepend = slots['prepend-inner'] || props.prependInnerIcon;
|
|
11362
|
+
const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);
|
|
10919
11363
|
const hasClear = !!(props.clearable || slots.clear);
|
|
10920
11364
|
const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);
|
|
10921
11365
|
const label = () => slots.label ? slots.label({
|
|
@@ -11900,9 +12344,11 @@
|
|
|
11900
12344
|
});
|
|
11901
12345
|
}
|
|
11902
12346
|
});
|
|
11903
|
-
vue.watch(() => props.items,
|
|
11904
|
-
if (
|
|
11905
|
-
|
|
12347
|
+
vue.watch(() => props.items, (newVal, oldVal) => {
|
|
12348
|
+
if (menu.value) return;
|
|
12349
|
+
if (isFocused.value && !oldVal.length && newVal.length) {
|
|
12350
|
+
menu.value = true;
|
|
12351
|
+
}
|
|
11906
12352
|
});
|
|
11907
12353
|
useRender(() => {
|
|
11908
12354
|
const hasChips = !!(props.chips || slots.chip);
|
|
@@ -12337,8 +12783,8 @@
|
|
|
12337
12783
|
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
12338
12784
|
listRef.value?.focus('next');
|
|
12339
12785
|
}
|
|
12340
|
-
if (!props.multiple) return;
|
|
12341
12786
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
12787
|
+
if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
|
|
12342
12788
|
if (selectionIndex.value < 0) {
|
|
12343
12789
|
if (e.key === 'Backspace' && !search.value) {
|
|
12344
12790
|
selectionIndex.value = length - 1;
|
|
@@ -12346,10 +12792,10 @@
|
|
|
12346
12792
|
return;
|
|
12347
12793
|
}
|
|
12348
12794
|
const originalSelectionIndex = selectionIndex.value;
|
|
12349
|
-
|
|
12350
|
-
if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
|
|
12795
|
+
select(model.value[selectionIndex.value], false);
|
|
12351
12796
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
12352
12797
|
}
|
|
12798
|
+
if (!props.multiple) return;
|
|
12353
12799
|
if (e.key === 'ArrowLeft') {
|
|
12354
12800
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
12355
12801
|
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
@@ -12402,7 +12848,7 @@
|
|
|
12402
12848
|
/** @param set - null means toggle */
|
|
12403
12849
|
function select(item) {
|
|
12404
12850
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
12405
|
-
if (item.props.disabled) return;
|
|
12851
|
+
if (!item || item.props.disabled) return;
|
|
12406
12852
|
if (props.multiple) {
|
|
12407
12853
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
12408
12854
|
const add = set == null ? !~index : set;
|
|
@@ -12462,9 +12908,11 @@
|
|
|
12462
12908
|
});
|
|
12463
12909
|
}
|
|
12464
12910
|
});
|
|
12465
|
-
vue.watch(() => props.items,
|
|
12466
|
-
if (
|
|
12467
|
-
|
|
12911
|
+
vue.watch(() => props.items, (newVal, oldVal) => {
|
|
12912
|
+
if (menu.value) return;
|
|
12913
|
+
if (isFocused.value && !oldVal.length && newVal.length) {
|
|
12914
|
+
menu.value = true;
|
|
12915
|
+
}
|
|
12468
12916
|
});
|
|
12469
12917
|
useRender(() => {
|
|
12470
12918
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
@@ -16121,6 +16569,7 @@
|
|
|
16121
16569
|
}
|
|
16122
16570
|
menu.value = !menu.value;
|
|
16123
16571
|
}
|
|
16572
|
+
// eslint-disable-next-line complexity
|
|
16124
16573
|
function onKeydown(e) {
|
|
16125
16574
|
if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return;
|
|
16126
16575
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
@@ -16147,8 +16596,8 @@
|
|
|
16147
16596
|
select(transformItem$3(props, search.value));
|
|
16148
16597
|
if (hasSelectionSlot.value) _search.value = '';
|
|
16149
16598
|
}
|
|
16150
|
-
if (!props.multiple) return;
|
|
16151
16599
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
16600
|
+
if (!props.multiple && hasSelectionSlot.value && model.value.length > 0) return select(model.value[0], false);
|
|
16152
16601
|
if (selectionIndex.value < 0) {
|
|
16153
16602
|
if (e.key === 'Backspace' && !search.value) {
|
|
16154
16603
|
selectionIndex.value = length - 1;
|
|
@@ -16156,10 +16605,10 @@
|
|
|
16156
16605
|
return;
|
|
16157
16606
|
}
|
|
16158
16607
|
const originalSelectionIndex = selectionIndex.value;
|
|
16159
|
-
|
|
16160
|
-
if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
|
|
16608
|
+
select(model.value[selectionIndex.value], false);
|
|
16161
16609
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
16162
16610
|
}
|
|
16611
|
+
if (!props.multiple) return;
|
|
16163
16612
|
if (e.key === 'ArrowLeft') {
|
|
16164
16613
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
16165
16614
|
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
@@ -16190,7 +16639,7 @@
|
|
|
16190
16639
|
/** @param set - null means toggle */
|
|
16191
16640
|
function select(item) {
|
|
16192
16641
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
16193
|
-
if (item.props.disabled) return;
|
|
16642
|
+
if (!item || item.props.disabled) return;
|
|
16194
16643
|
if (props.multiple) {
|
|
16195
16644
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
16196
16645
|
const add = set == null ? !~index : set;
|
|
@@ -16267,9 +16716,11 @@
|
|
|
16267
16716
|
});
|
|
16268
16717
|
}
|
|
16269
16718
|
});
|
|
16270
|
-
vue.watch(() => props.items,
|
|
16271
|
-
if (
|
|
16272
|
-
|
|
16719
|
+
vue.watch(() => props.items, (newVal, oldVal) => {
|
|
16720
|
+
if (menu.value) return;
|
|
16721
|
+
if (isFocused.value && !oldVal.length && newVal.length) {
|
|
16722
|
+
menu.value = true;
|
|
16723
|
+
}
|
|
16273
16724
|
});
|
|
16274
16725
|
useRender(() => {
|
|
16275
16726
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
@@ -17416,7 +17867,7 @@
|
|
|
17416
17867
|
return d;
|
|
17417
17868
|
}
|
|
17418
17869
|
function startOfDay(date) {
|
|
17419
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
17870
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);
|
|
17420
17871
|
}
|
|
17421
17872
|
function endOfDay(date) {
|
|
17422
17873
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
|
|
@@ -20290,6 +20741,7 @@
|
|
|
20290
20741
|
emit('click:month');
|
|
20291
20742
|
}
|
|
20292
20743
|
useRender(() => {
|
|
20744
|
+
// TODO: add slot support and scope defaults
|
|
20293
20745
|
return vue.createVNode("div", {
|
|
20294
20746
|
"class": ['v-date-picker-controls']
|
|
20295
20747
|
}, [vue.createVNode(VBtn, {
|
|
@@ -20568,6 +21020,12 @@
|
|
|
20568
21020
|
const adapter = useDate();
|
|
20569
21021
|
const rangeStart = vue.shallowRef();
|
|
20570
21022
|
const rangeStop = vue.shallowRef();
|
|
21023
|
+
if (props.multiple === 'range' && model.value.length > 0) {
|
|
21024
|
+
rangeStart.value = model.value[0];
|
|
21025
|
+
if (model.value.length > 1) {
|
|
21026
|
+
rangeStop.value = model.value[model.value.length - 1];
|
|
21027
|
+
}
|
|
21028
|
+
}
|
|
20571
21029
|
const atMax = vue.computed(() => {
|
|
20572
21030
|
const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;
|
|
20573
21031
|
return model.value.length >= max;
|
|
@@ -20578,15 +21036,15 @@
|
|
|
20578
21036
|
rangeStart.value = _value;
|
|
20579
21037
|
model.value = [rangeStart.value];
|
|
20580
21038
|
} else if (!rangeStop.value) {
|
|
20581
|
-
if (adapter.isSameDay(
|
|
21039
|
+
if (adapter.isSameDay(_value, rangeStart.value)) {
|
|
20582
21040
|
rangeStart.value = undefined;
|
|
20583
21041
|
model.value = [];
|
|
20584
21042
|
return;
|
|
20585
|
-
} else if (adapter.isBefore(
|
|
20586
|
-
rangeStop.value = rangeStart.value;
|
|
21043
|
+
} else if (adapter.isBefore(_value, rangeStart.value)) {
|
|
21044
|
+
rangeStop.value = adapter.endOfDay(rangeStart.value);
|
|
20587
21045
|
rangeStart.value = _value;
|
|
20588
21046
|
} else {
|
|
20589
|
-
rangeStop.value = _value;
|
|
21047
|
+
rangeStop.value = adapter.endOfDay(_value);
|
|
20590
21048
|
}
|
|
20591
21049
|
const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
|
|
20592
21050
|
const datesInRange = [rangeStart.value];
|
|
@@ -22753,12 +23211,24 @@
|
|
|
22753
23211
|
default: () => [hasImage && vue.createVNode("div", {
|
|
22754
23212
|
"key": "image",
|
|
22755
23213
|
"class": "v-navigation-drawer__img"
|
|
22756
|
-
}, [slots.image ?
|
|
22757
|
-
|
|
22758
|
-
|
|
22759
|
-
"
|
|
22760
|
-
"
|
|
22761
|
-
|
|
23214
|
+
}, [!slots.image ? vue.createVNode(VImg, {
|
|
23215
|
+
"key": "image-img",
|
|
23216
|
+
"alt": "",
|
|
23217
|
+
"cover": true,
|
|
23218
|
+
"height": "inherit",
|
|
23219
|
+
"src": props.image
|
|
23220
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
23221
|
+
"key": "image-defaults",
|
|
23222
|
+
"disabled": !props.image,
|
|
23223
|
+
"defaults": {
|
|
23224
|
+
VImg: {
|
|
23225
|
+
alt: '',
|
|
23226
|
+
cover: true,
|
|
23227
|
+
height: 'inherit',
|
|
23228
|
+
src: props.image
|
|
23229
|
+
}
|
|
23230
|
+
}
|
|
23231
|
+
}, slots.image)]), slots.prepend && vue.createVNode("div", {
|
|
22762
23232
|
"class": "v-navigation-drawer__prepend"
|
|
22763
23233
|
}, [slots.prepend?.()]), vue.createVNode("div", {
|
|
22764
23234
|
"class": "v-navigation-drawer__content"
|
|
@@ -22859,7 +23329,7 @@
|
|
|
22859
23329
|
function onInput() {
|
|
22860
23330
|
// The maxlength attribute doesn't work for the number type input, so the text type is used.
|
|
22861
23331
|
// The following logic simulates the behavior of a number input.
|
|
22862
|
-
if (
|
|
23332
|
+
if (isValidNumber(current.value.value)) {
|
|
22863
23333
|
current.value.value = '';
|
|
22864
23334
|
return;
|
|
22865
23335
|
}
|
|
@@ -22905,7 +23375,9 @@
|
|
|
22905
23375
|
function onPaste(index, e) {
|
|
22906
23376
|
e.preventDefault();
|
|
22907
23377
|
e.stopPropagation();
|
|
22908
|
-
|
|
23378
|
+
const clipboardText = e?.clipboardData?.getData('Text') ?? '';
|
|
23379
|
+
if (!isValidNumber(clipboardText)) return;
|
|
23380
|
+
model.value = clipboardText.split('');
|
|
22909
23381
|
inputRef.value?.[index].blur();
|
|
22910
23382
|
}
|
|
22911
23383
|
function reset() {
|
|
@@ -22919,6 +23391,9 @@
|
|
|
22919
23391
|
blur();
|
|
22920
23392
|
focusIndex.value = -1;
|
|
22921
23393
|
}
|
|
23394
|
+
function isValidNumber(value) {
|
|
23395
|
+
return props.type === 'number' && !isNaN(Number(value));
|
|
23396
|
+
}
|
|
22922
23397
|
provideDefaults({
|
|
22923
23398
|
VField: {
|
|
22924
23399
|
color: vue.computed(() => props.color),
|
|
@@ -25777,7 +26252,7 @@
|
|
|
25777
26252
|
goTo
|
|
25778
26253
|
};
|
|
25779
26254
|
}
|
|
25780
|
-
const version$1 = "3.5.
|
|
26255
|
+
const version$1 = "3.5.10";
|
|
25781
26256
|
createVuetify$1.version = version$1;
|
|
25782
26257
|
|
|
25783
26258
|
// Vue's inject() can only be used in setup
|
|
@@ -25802,9 +26277,10 @@
|
|
|
25802
26277
|
...options
|
|
25803
26278
|
});
|
|
25804
26279
|
};
|
|
25805
|
-
const version = "3.5.
|
|
26280
|
+
const version = "3.5.10";
|
|
25806
26281
|
createVuetify.version = version;
|
|
25807
26282
|
|
|
26283
|
+
exports.blueprints = index;
|
|
25808
26284
|
exports.components = components;
|
|
25809
26285
|
exports.createVuetify = createVuetify;
|
|
25810
26286
|
exports.directives = directives;
|