vuetify 3.5.5 → 3.5.7
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 +2 -0
- package/dist/json/attributes.json +352 -40
- package/dist/json/importMap-labs.json +16 -8
- package/dist/json/importMap.json +122 -118
- package/dist/json/tags.json +93 -0
- package/dist/json/web-types.json +1084 -52
- package/dist/vuetify-labs.css +2121 -1996
- package/dist/vuetify-labs.d.ts +1336 -128
- package/dist/vuetify-labs.esm.js +332 -81
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +332 -81
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +838 -839
- package/dist/vuetify.d.ts +320 -145
- package/dist/vuetify.esm.js +87 -75
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +87 -75
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +60 -58
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VApp/index.d.mts +8 -6
- package/lib/components/VAutocomplete/VAutocomplete.css +4 -4
- package/lib/components/VAutocomplete/VAutocomplete.mjs +33 -29
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +3 -1
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +4 -4
- package/lib/components/VCombobox/VCombobox.mjs +22 -23
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +1 -1
- package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
- package/lib/components/VDataIterator/index.d.mts +50 -94
- package/lib/components/VDataTable/index.d.mts +214 -1
- package/lib/components/VDataTable/index.mjs +1 -0
- package/lib/components/VDataTable/index.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +4 -7
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +4 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -0
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +2 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +27 -0
- package/lib/components/VLayout/index.d.mts +8 -6
- package/lib/components/VSelect/VSelect.mjs +20 -18
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.css +3 -1
- package/lib/components/VToolbar/VToolbar.sass +2 -1
- package/lib/components/index.d.mts +279 -106
- package/lib/composables/filter.mjs +1 -1
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/goto.mjs +2 -2
- package/lib/composables/goto.mjs.map +1 -1
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +42 -39
- package/lib/labs/VEmptyState/VEmptyState.css +59 -0
- package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
- package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
- package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
- package/lib/labs/VEmptyState/_variables.scss +22 -0
- package/lib/labs/VEmptyState/index.d.mts +415 -0
- package/lib/labs/VEmptyState/index.mjs +2 -0
- package/lib/labs/VEmptyState/index.mjs.map +1 -0
- package/lib/labs/VFab/VFab.css +69 -0
- package/lib/labs/VFab/VFab.mjs +114 -0
- package/lib/labs/VFab/VFab.mjs.map +1 -0
- package/lib/labs/VFab/VFab.sass +82 -0
- package/lib/labs/VFab/_mixins.scss +22 -0
- package/lib/labs/VFab/_variables.scss +33 -0
- package/lib/labs/VFab/index.d.mts +656 -0
- package/lib/labs/VFab/index.mjs +2 -0
- package/lib/labs/VFab/index.mjs.map +1 -0
- package/lib/labs/VSparkline/VBarline.mjs +4 -4
- package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
- package/lib/labs/VSparkline/VTrendline.mjs +6 -2
- package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
- package/lib/labs/VSparkline/index.d.mts +12 -0
- package/lib/labs/VSparkline/util/line.mjs +2 -0
- package/lib/labs/VSparkline/util/line.mjs.map +1 -1
- package/lib/labs/components.d.mts +1066 -2
- package/lib/labs/components.mjs +2 -0
- package/lib/labs/components.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.7
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -6891,7 +6891,8 @@
|
|
|
6891
6891
|
id,
|
|
6892
6892
|
messagesId,
|
|
6893
6893
|
isDisabled,
|
|
6894
|
-
isReadonly
|
|
6894
|
+
isReadonly,
|
|
6895
|
+
isValid
|
|
6895
6896
|
} = _ref2;
|
|
6896
6897
|
return vue.createVNode(VCheckboxBtn, vue.mergeProps(checkboxProps, {
|
|
6897
6898
|
"id": id.value,
|
|
@@ -6899,6 +6900,7 @@
|
|
|
6899
6900
|
"disabled": isDisabled.value,
|
|
6900
6901
|
"readonly": isReadonly.value
|
|
6901
6902
|
}, controlAttrs, {
|
|
6903
|
+
"error": isValid.value === false,
|
|
6902
6904
|
"modelValue": model.value,
|
|
6903
6905
|
"onUpdate:modelValue": $event => model.value = $event,
|
|
6904
6906
|
"onFocus": focus,
|
|
@@ -11848,20 +11850,27 @@
|
|
|
11848
11850
|
model.value = [item];
|
|
11849
11851
|
}
|
|
11850
11852
|
}
|
|
11853
|
+
|
|
11854
|
+
/** @param set - null means toggle */
|
|
11851
11855
|
function select(item) {
|
|
11852
|
-
|
|
11853
|
-
|
|
11856
|
+
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
11857
|
+
if (item.props.disabled) return;
|
|
11854
11858
|
if (props.multiple) {
|
|
11855
|
-
|
|
11856
|
-
|
|
11857
|
-
|
|
11858
|
-
const value = [...model.value];
|
|
11859
|
+
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
11860
|
+
const add = set == null ? !~index : set;
|
|
11861
|
+
if (~index) {
|
|
11862
|
+
const value = add ? [...model.value, item] : [...model.value];
|
|
11859
11863
|
value.splice(index, 1);
|
|
11860
11864
|
model.value = value;
|
|
11865
|
+
} else if (add) {
|
|
11866
|
+
model.value = [...model.value, item];
|
|
11861
11867
|
}
|
|
11862
11868
|
} else {
|
|
11869
|
+
const add = set !== false;
|
|
11863
11870
|
model.value = add ? [item] : [];
|
|
11864
|
-
|
|
11871
|
+
vue.nextTick(() => {
|
|
11872
|
+
menu.value = false;
|
|
11873
|
+
});
|
|
11865
11874
|
}
|
|
11866
11875
|
}
|
|
11867
11876
|
function onBlur(e) {
|
|
@@ -11895,14 +11904,9 @@
|
|
|
11895
11904
|
});
|
|
11896
11905
|
}
|
|
11897
11906
|
});
|
|
11898
|
-
vue.watch(
|
|
11899
|
-
if (!isFocused.value) return;
|
|
11900
|
-
|
|
11901
|
-
menu.value = false;
|
|
11902
|
-
}
|
|
11903
|
-
if (!oldVal.length && val.length) {
|
|
11904
|
-
menu.value = true;
|
|
11905
|
-
}
|
|
11907
|
+
vue.watch(() => props.items, val => {
|
|
11908
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
11909
|
+
menu.value = true;
|
|
11906
11910
|
});
|
|
11907
11911
|
useRender(() => {
|
|
11908
11912
|
const hasChips = !!(props.chips || slots.chip);
|
|
@@ -11980,7 +11984,7 @@
|
|
|
11980
11984
|
const itemProps = vue.mergeProps(item.props, {
|
|
11981
11985
|
ref: itemRef,
|
|
11982
11986
|
key: index,
|
|
11983
|
-
onClick: () => select(item)
|
|
11987
|
+
onClick: () => select(item, null)
|
|
11984
11988
|
});
|
|
11985
11989
|
return slots.item?.({
|
|
11986
11990
|
item,
|
|
@@ -12012,7 +12016,7 @@
|
|
|
12012
12016
|
function onChipClose(e) {
|
|
12013
12017
|
e.stopPropagation();
|
|
12014
12018
|
e.preventDefault();
|
|
12015
|
-
select(item);
|
|
12019
|
+
select(item, false);
|
|
12016
12020
|
}
|
|
12017
12021
|
const slotProps = {
|
|
12018
12022
|
'onClick:close': onChipClose,
|
|
@@ -12122,7 +12126,7 @@
|
|
|
12122
12126
|
if (typeof item === 'object') {
|
|
12123
12127
|
const filterKeys = keys || Object.keys(transformed);
|
|
12124
12128
|
for (const key of filterKeys) {
|
|
12125
|
-
const value = getPropertyFromItem(transformed, key
|
|
12129
|
+
const value = getPropertyFromItem(transformed, key);
|
|
12126
12130
|
const keyFilter = options?.customKeyFilter?.[key];
|
|
12127
12131
|
match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);
|
|
12128
12132
|
if (match !== -1 && match !== false) {
|
|
@@ -12287,6 +12291,8 @@
|
|
|
12287
12291
|
}
|
|
12288
12292
|
return filteredItems.value;
|
|
12289
12293
|
});
|
|
12294
|
+
const hasChips = vue.computed(() => !!(props.chips || slots.chip));
|
|
12295
|
+
const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
|
|
12290
12296
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.props.value));
|
|
12291
12297
|
const highlightFirst = vue.computed(() => {
|
|
12292
12298
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
@@ -12345,7 +12351,7 @@
|
|
|
12345
12351
|
}
|
|
12346
12352
|
const originalSelectionIndex = selectionIndex.value;
|
|
12347
12353
|
const selectedItem = model.value[selectionIndex.value];
|
|
12348
|
-
if (selectedItem && !selectedItem.props.disabled) select(selectedItem);
|
|
12354
|
+
if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
|
|
12349
12355
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
12350
12356
|
}
|
|
12351
12357
|
if (e.key === 'ArrowLeft') {
|
|
@@ -12396,35 +12402,41 @@
|
|
|
12396
12402
|
if (v == null || v === '' && !props.multiple) model.value = [];
|
|
12397
12403
|
}
|
|
12398
12404
|
const isSelecting = vue.shallowRef(false);
|
|
12405
|
+
|
|
12406
|
+
/** @param set - null means toggle */
|
|
12399
12407
|
function select(item) {
|
|
12408
|
+
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
12400
12409
|
if (item.props.disabled) return;
|
|
12401
|
-
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
12402
|
-
const add = index === -1;
|
|
12403
12410
|
if (props.multiple) {
|
|
12404
|
-
|
|
12405
|
-
|
|
12406
|
-
|
|
12407
|
-
const value = [...model.value];
|
|
12411
|
+
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
12412
|
+
const add = set == null ? !~index : set;
|
|
12413
|
+
if (~index) {
|
|
12414
|
+
const value = add ? [...model.value, item] : [...model.value];
|
|
12408
12415
|
value.splice(index, 1);
|
|
12409
12416
|
model.value = value;
|
|
12417
|
+
} else if (add) {
|
|
12418
|
+
model.value = [...model.value, item];
|
|
12410
12419
|
}
|
|
12411
12420
|
if (props.clearOnSelect) {
|
|
12412
12421
|
search.value = '';
|
|
12413
12422
|
}
|
|
12414
12423
|
} else {
|
|
12424
|
+
const add = set !== false;
|
|
12415
12425
|
model.value = add ? [item] : [];
|
|
12416
|
-
|
|
12417
|
-
|
|
12418
|
-
|
|
12419
|
-
|
|
12420
|
-
|
|
12426
|
+
search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
12427
|
+
|
|
12428
|
+
// watch for search watcher to trigger
|
|
12429
|
+
vue.nextTick(() => {
|
|
12430
|
+
menu.value = false;
|
|
12431
|
+
isPristine.value = true;
|
|
12432
|
+
});
|
|
12421
12433
|
}
|
|
12422
12434
|
}
|
|
12423
12435
|
vue.watch(isFocused, (val, oldVal) => {
|
|
12424
12436
|
if (val === oldVal) return;
|
|
12425
12437
|
if (val) {
|
|
12426
12438
|
isSelecting.value = true;
|
|
12427
|
-
search.value = props.multiple ? '' : String(model.value.at(-1)?.props.title ?? '');
|
|
12439
|
+
search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');
|
|
12428
12440
|
isPristine.value = true;
|
|
12429
12441
|
vue.nextTick(() => isSelecting.value = false);
|
|
12430
12442
|
} else {
|
|
@@ -12454,17 +12466,11 @@
|
|
|
12454
12466
|
});
|
|
12455
12467
|
}
|
|
12456
12468
|
});
|
|
12457
|
-
vue.watch(
|
|
12458
|
-
if (!isFocused.value) return;
|
|
12459
|
-
|
|
12460
|
-
menu.value = false;
|
|
12461
|
-
}
|
|
12462
|
-
if (!oldVal.length && val.length) {
|
|
12463
|
-
menu.value = true;
|
|
12464
|
-
}
|
|
12469
|
+
vue.watch(() => props.items, val => {
|
|
12470
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
12471
|
+
menu.value = true;
|
|
12465
12472
|
});
|
|
12466
12473
|
useRender(() => {
|
|
12467
|
-
const hasChips = !!(props.chips || slots.chip);
|
|
12468
12474
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
12469
12475
|
const isDirty = model.value.length > 0;
|
|
12470
12476
|
const textFieldProps = VTextField.filterProps(props);
|
|
@@ -12482,7 +12488,7 @@
|
|
|
12482
12488
|
"class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
|
|
12483
12489
|
'v-autocomplete--active-menu': menu.value,
|
|
12484
12490
|
'v-autocomplete--chips': !!props.chips,
|
|
12485
|
-
'v-autocomplete--selection-slot': !!
|
|
12491
|
+
'v-autocomplete--selection-slot': !!hasSelectionSlot.value,
|
|
12486
12492
|
'v-autocomplete--selecting-index': selectionIndex.value > -1
|
|
12487
12493
|
}, props.class],
|
|
12488
12494
|
"style": props.style,
|
|
@@ -12537,13 +12543,15 @@
|
|
|
12537
12543
|
ref: itemRef,
|
|
12538
12544
|
key: index,
|
|
12539
12545
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
12540
|
-
onClick: () => select(item)
|
|
12546
|
+
onClick: () => select(item, null)
|
|
12541
12547
|
});
|
|
12542
12548
|
return slots.item?.({
|
|
12543
12549
|
item,
|
|
12544
12550
|
index,
|
|
12545
12551
|
props: itemProps
|
|
12546
|
-
}) ?? vue.createVNode(VListItem, itemProps, {
|
|
12552
|
+
}) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
|
|
12553
|
+
"role": "option"
|
|
12554
|
+
}), {
|
|
12547
12555
|
prepend: _ref4 => {
|
|
12548
12556
|
let {
|
|
12549
12557
|
isSelected
|
|
@@ -12570,7 +12578,7 @@
|
|
|
12570
12578
|
function onChipClose(e) {
|
|
12571
12579
|
e.stopPropagation();
|
|
12572
12580
|
e.preventDefault();
|
|
12573
|
-
select(item);
|
|
12581
|
+
select(item, false);
|
|
12574
12582
|
}
|
|
12575
12583
|
const slotProps = {
|
|
12576
12584
|
'onClick:close': onChipClose,
|
|
@@ -12581,8 +12589,8 @@
|
|
|
12581
12589
|
modelValue: true,
|
|
12582
12590
|
'onUpdate:modelValue': undefined
|
|
12583
12591
|
};
|
|
12584
|
-
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
12585
|
-
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
12592
|
+
const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
|
|
12593
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
|
|
12586
12594
|
item,
|
|
12587
12595
|
index,
|
|
12588
12596
|
props: slotProps
|
|
@@ -12595,7 +12603,7 @@
|
|
|
12595
12603
|
"key": item.value,
|
|
12596
12604
|
"class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
|
|
12597
12605
|
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
12598
|
-
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
12606
|
+
}, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
12599
12607
|
"key": "chip",
|
|
12600
12608
|
"closable": props.closableChips,
|
|
12601
12609
|
"size": "small",
|
|
@@ -16034,14 +16042,16 @@
|
|
|
16034
16042
|
return props.multiple ? transformed : transformed[0] ?? null;
|
|
16035
16043
|
});
|
|
16036
16044
|
const form = useForm();
|
|
16037
|
-
const
|
|
16045
|
+
const hasChips = vue.computed(() => !!(props.chips || slots.chip));
|
|
16046
|
+
const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
|
|
16047
|
+
const _search = vue.shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
|
|
16038
16048
|
const search = vue.computed({
|
|
16039
16049
|
get: () => {
|
|
16040
16050
|
return _search.value;
|
|
16041
16051
|
},
|
|
16042
16052
|
set: val => {
|
|
16043
16053
|
_search.value = val ?? '';
|
|
16044
|
-
if (!props.multiple) {
|
|
16054
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
16045
16055
|
model.value = [transformItem$3(props, val)];
|
|
16046
16056
|
}
|
|
16047
16057
|
if (val && props.multiple && props.delimiters?.length) {
|
|
@@ -16072,7 +16082,7 @@
|
|
|
16072
16082
|
emit('update:search', value);
|
|
16073
16083
|
});
|
|
16074
16084
|
vue.watch(model, value => {
|
|
16075
|
-
if (!props.multiple) {
|
|
16085
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
16076
16086
|
_search.value = value[0]?.title ?? '';
|
|
16077
16087
|
}
|
|
16078
16088
|
});
|
|
@@ -16137,6 +16147,10 @@
|
|
|
16137
16147
|
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
16138
16148
|
listRef.value?.focus('next');
|
|
16139
16149
|
}
|
|
16150
|
+
if (e.key === 'Enter' && search.value) {
|
|
16151
|
+
select(transformItem$3(props, search.value));
|
|
16152
|
+
if (hasSelectionSlot.value) search.value = '';
|
|
16153
|
+
}
|
|
16140
16154
|
if (!props.multiple) return;
|
|
16141
16155
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
16142
16156
|
if (selectionIndex.value < 0) {
|
|
@@ -16170,10 +16184,6 @@
|
|
|
16170
16184
|
vTextFieldRef.value.setSelectionRange(0, 0);
|
|
16171
16185
|
}
|
|
16172
16186
|
}
|
|
16173
|
-
if (e.key === 'Enter' && search.value) {
|
|
16174
|
-
select(transformItem$3(props, search.value));
|
|
16175
|
-
search.value = '';
|
|
16176
|
-
}
|
|
16177
16187
|
}
|
|
16178
16188
|
function onAfterLeave() {
|
|
16179
16189
|
if (isFocused.value) {
|
|
@@ -16184,6 +16194,7 @@
|
|
|
16184
16194
|
/** @param set - null means toggle */
|
|
16185
16195
|
function select(item) {
|
|
16186
16196
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
16197
|
+
if (item.props.disabled) return;
|
|
16187
16198
|
if (props.multiple) {
|
|
16188
16199
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
16189
16200
|
const add = set == null ? !~index : set;
|
|
@@ -16200,7 +16211,7 @@
|
|
|
16200
16211
|
} else {
|
|
16201
16212
|
const add = set !== false;
|
|
16202
16213
|
model.value = add ? [item] : [];
|
|
16203
|
-
_search.value = add ? item.title : '';
|
|
16214
|
+
_search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
16204
16215
|
|
|
16205
16216
|
// watch for search watcher to trigger
|
|
16206
16217
|
vue.nextTick(() => {
|
|
@@ -16232,7 +16243,7 @@
|
|
|
16232
16243
|
return value === displayItems.value[0].value;
|
|
16233
16244
|
})) {
|
|
16234
16245
|
select(displayItems.value[0]);
|
|
16235
|
-
} else if (
|
|
16246
|
+
} else if (search.value) {
|
|
16236
16247
|
select(transformItem$3(props, search.value));
|
|
16237
16248
|
}
|
|
16238
16249
|
});
|
|
@@ -16244,17 +16255,11 @@
|
|
|
16244
16255
|
});
|
|
16245
16256
|
}
|
|
16246
16257
|
});
|
|
16247
|
-
vue.watch(
|
|
16248
|
-
if (!isFocused.value) return;
|
|
16249
|
-
|
|
16250
|
-
menu.value = false;
|
|
16251
|
-
}
|
|
16252
|
-
if (!oldVal.length && val.length) {
|
|
16253
|
-
menu.value = true;
|
|
16254
|
-
}
|
|
16258
|
+
vue.watch(() => props.items, val => {
|
|
16259
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
16260
|
+
menu.value = true;
|
|
16255
16261
|
});
|
|
16256
16262
|
useRender(() => {
|
|
16257
|
-
const hasChips = !!(props.chips || slots.chip);
|
|
16258
16263
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
16259
16264
|
const isDirty = model.value.length > 0;
|
|
16260
16265
|
const textFieldProps = VTextField.filterProps(props);
|
|
@@ -16271,7 +16276,7 @@
|
|
|
16271
16276
|
"class": ['v-combobox', {
|
|
16272
16277
|
'v-combobox--active-menu': menu.value,
|
|
16273
16278
|
'v-combobox--chips': !!props.chips,
|
|
16274
|
-
'v-combobox--selection-slot': !!
|
|
16279
|
+
'v-combobox--selection-slot': !!hasSelectionSlot.value,
|
|
16275
16280
|
'v-combobox--selecting-index': selectionIndex.value > -1,
|
|
16276
16281
|
[`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
|
|
16277
16282
|
}, props.class],
|
|
@@ -16333,7 +16338,9 @@
|
|
|
16333
16338
|
item,
|
|
16334
16339
|
index,
|
|
16335
16340
|
props: itemProps
|
|
16336
|
-
}) ?? vue.createVNode(VListItem, itemProps, {
|
|
16341
|
+
}) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
|
|
16342
|
+
"role": "option"
|
|
16343
|
+
}), {
|
|
16337
16344
|
prepend: _ref4 => {
|
|
16338
16345
|
let {
|
|
16339
16346
|
isSelected
|
|
@@ -16371,8 +16378,8 @@
|
|
|
16371
16378
|
modelValue: true,
|
|
16372
16379
|
'onUpdate:modelValue': undefined
|
|
16373
16380
|
};
|
|
16374
|
-
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
16375
|
-
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
16381
|
+
const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
|
|
16382
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
|
|
16376
16383
|
item,
|
|
16377
16384
|
index,
|
|
16378
16385
|
props: slotProps
|
|
@@ -16385,7 +16392,7 @@
|
|
|
16385
16392
|
"key": item.value,
|
|
16386
16393
|
"class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
|
|
16387
16394
|
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
16388
|
-
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
16395
|
+
}, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
16389
16396
|
"key": "chip",
|
|
16390
16397
|
"closable": props.closableChips,
|
|
16391
16398
|
"size": "small",
|
|
@@ -17676,7 +17683,7 @@
|
|
|
17676
17683
|
return new Promise(resolve => requestAnimationFrame(function step(currentTime) {
|
|
17677
17684
|
const timeElapsed = currentTime - startTime;
|
|
17678
17685
|
const progress = timeElapsed / options.duration;
|
|
17679
|
-
const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(
|
|
17686
|
+
const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(clamp(progress, 0, 1)));
|
|
17680
17687
|
container[property] = location;
|
|
17681
17688
|
|
|
17682
17689
|
// Allow for some jitter if target time has elapsed
|
|
@@ -21100,6 +21107,7 @@
|
|
|
21100
21107
|
const makeVExpansionPanelsProps = propsFactory({
|
|
21101
21108
|
color: String,
|
|
21102
21109
|
flat: Boolean,
|
|
21110
|
+
focusable: Boolean,
|
|
21103
21111
|
static: Boolean,
|
|
21104
21112
|
tile: Boolean,
|
|
21105
21113
|
variant: {
|
|
@@ -21134,6 +21142,7 @@
|
|
|
21134
21142
|
readonly: vue.toRef(props, 'readonly')
|
|
21135
21143
|
},
|
|
21136
21144
|
VExpansionPanelTitle: {
|
|
21145
|
+
focusable: vue.toRef(props, 'focusable'),
|
|
21137
21146
|
static: vue.toRef(props, 'static')
|
|
21138
21147
|
}
|
|
21139
21148
|
});
|
|
@@ -21192,6 +21201,7 @@
|
|
|
21192
21201
|
default: '$collapse'
|
|
21193
21202
|
},
|
|
21194
21203
|
hideActions: Boolean,
|
|
21204
|
+
focusable: Boolean,
|
|
21195
21205
|
static: Boolean,
|
|
21196
21206
|
ripple: {
|
|
21197
21207
|
type: [Boolean, Object],
|
|
@@ -21226,6 +21236,7 @@
|
|
|
21226
21236
|
useRender(() => vue.withDirectives(vue.createVNode("button", {
|
|
21227
21237
|
"class": ['v-expansion-panel-title', {
|
|
21228
21238
|
'v-expansion-panel-title--active': expansionPanel.isSelected.value,
|
|
21239
|
+
'v-expansion-panel-title--focusable': props.focusable,
|
|
21229
21240
|
'v-expansion-panel-title--static': props.static
|
|
21230
21241
|
}, backgroundColorClasses.value, props.class],
|
|
21231
21242
|
"style": [backgroundColorStyles.value, props.style],
|
|
@@ -25896,6 +25907,106 @@
|
|
|
25896
25907
|
}
|
|
25897
25908
|
});
|
|
25898
25909
|
|
|
25910
|
+
const makeVFabProps = propsFactory({
|
|
25911
|
+
app: Boolean,
|
|
25912
|
+
appear: Boolean,
|
|
25913
|
+
extended: Boolean,
|
|
25914
|
+
location: {
|
|
25915
|
+
type: String,
|
|
25916
|
+
default: 'bottom end'
|
|
25917
|
+
},
|
|
25918
|
+
offset: Boolean,
|
|
25919
|
+
modelValue: {
|
|
25920
|
+
type: Boolean,
|
|
25921
|
+
default: true
|
|
25922
|
+
},
|
|
25923
|
+
...omit(makeVBtnProps({
|
|
25924
|
+
active: true
|
|
25925
|
+
}), ['location']),
|
|
25926
|
+
...makeLayoutItemProps(),
|
|
25927
|
+
...makeTransitionProps({
|
|
25928
|
+
transition: 'fab-transition'
|
|
25929
|
+
})
|
|
25930
|
+
}, 'VFab');
|
|
25931
|
+
const VFab = genericComponent()({
|
|
25932
|
+
name: 'VFab',
|
|
25933
|
+
props: makeVFabProps(),
|
|
25934
|
+
emits: {
|
|
25935
|
+
'update:modelValue': value => true
|
|
25936
|
+
},
|
|
25937
|
+
setup(props, _ref) {
|
|
25938
|
+
let {
|
|
25939
|
+
slots
|
|
25940
|
+
} = _ref;
|
|
25941
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
25942
|
+
const height = vue.shallowRef(56);
|
|
25943
|
+
const layoutItemStyles = vue.ref();
|
|
25944
|
+
const {
|
|
25945
|
+
resizeRef
|
|
25946
|
+
} = useResizeObserver(entries => {
|
|
25947
|
+
if (!entries.length) return;
|
|
25948
|
+
height.value = entries[0].target.clientHeight;
|
|
25949
|
+
});
|
|
25950
|
+
const hasPosition = vue.computed(() => props.app || props.absolute);
|
|
25951
|
+
const position = vue.computed(() => {
|
|
25952
|
+
if (!hasPosition.value) return false;
|
|
25953
|
+
return props.location.split(' ').shift();
|
|
25954
|
+
});
|
|
25955
|
+
const orientation = vue.computed(() => {
|
|
25956
|
+
if (!hasPosition.value) return false;
|
|
25957
|
+
return props.location.split(' ')[1] ?? 'end';
|
|
25958
|
+
});
|
|
25959
|
+
useToggleScope(() => props.app, () => {
|
|
25960
|
+
const layout = useLayoutItem({
|
|
25961
|
+
id: props.name,
|
|
25962
|
+
order: vue.computed(() => parseInt(props.order, 10)),
|
|
25963
|
+
position,
|
|
25964
|
+
layoutSize: height,
|
|
25965
|
+
elementSize: vue.computed(() => height.value + 32),
|
|
25966
|
+
active: vue.computed(() => props.app && model.value),
|
|
25967
|
+
absolute: vue.toRef(props, 'absolute')
|
|
25968
|
+
});
|
|
25969
|
+
vue.watchEffect(() => {
|
|
25970
|
+
layoutItemStyles.value = layout.layoutItemStyles.value;
|
|
25971
|
+
});
|
|
25972
|
+
});
|
|
25973
|
+
const vFabRef = vue.ref();
|
|
25974
|
+
useRender(() => {
|
|
25975
|
+
const btnProps = VBtn.filterProps(props);
|
|
25976
|
+
return vue.createVNode("div", {
|
|
25977
|
+
"ref": vFabRef,
|
|
25978
|
+
"class": ['v-fab', {
|
|
25979
|
+
'v-fab--absolute': props.absolute,
|
|
25980
|
+
'v-fab--app': !!props.app,
|
|
25981
|
+
'v-fab--extended': props.extended,
|
|
25982
|
+
'v-fab--offset': props.offset,
|
|
25983
|
+
[`v-fab--${position.value}`]: hasPosition.value,
|
|
25984
|
+
[`v-fab--${orientation.value}`]: hasPosition.value
|
|
25985
|
+
}, props.class],
|
|
25986
|
+
"style": [props.app ? {
|
|
25987
|
+
...layoutItemStyles.value
|
|
25988
|
+
} : {
|
|
25989
|
+
height: 'inherit',
|
|
25990
|
+
width: undefined
|
|
25991
|
+
}, props.style]
|
|
25992
|
+
}, [vue.createVNode("div", {
|
|
25993
|
+
"class": "v-fab__container"
|
|
25994
|
+
}, [vue.createVNode(MaybeTransition, {
|
|
25995
|
+
"appear": props.appear,
|
|
25996
|
+
"transition": props.transition
|
|
25997
|
+
}, {
|
|
25998
|
+
default: () => [vue.withDirectives(vue.createVNode(VBtn, vue.mergeProps({
|
|
25999
|
+
"ref": resizeRef
|
|
26000
|
+
}, btnProps, {
|
|
26001
|
+
"active": undefined,
|
|
26002
|
+
"location": undefined
|
|
26003
|
+
}), slots), [[vue.vShow, props.active]])]
|
|
26004
|
+
})])]);
|
|
26005
|
+
});
|
|
26006
|
+
return {};
|
|
26007
|
+
}
|
|
26008
|
+
});
|
|
26009
|
+
|
|
25899
26010
|
// Utilities
|
|
25900
26011
|
|
|
25901
26012
|
// Types
|
|
@@ -25938,6 +26049,8 @@
|
|
|
25938
26049
|
type: Array,
|
|
25939
26050
|
default: () => []
|
|
25940
26051
|
},
|
|
26052
|
+
min: [String, Number],
|
|
26053
|
+
max: [String, Number],
|
|
25941
26054
|
padding: {
|
|
25942
26055
|
type: [String, Number],
|
|
25943
26056
|
default: 8
|
|
@@ -25987,10 +26100,10 @@
|
|
|
25987
26100
|
maxY
|
|
25988
26101
|
} = boundary;
|
|
25989
26102
|
const totalValues = values.length;
|
|
25990
|
-
let maxValue = Math.max(...values);
|
|
25991
|
-
let minValue = Math.min(...values);
|
|
25992
|
-
if (minValue > 0) minValue = 0;
|
|
25993
|
-
if (maxValue < 0) maxValue = 0;
|
|
26103
|
+
let maxValue = props.max != null ? Number(props.max) : Math.max(...values);
|
|
26104
|
+
let minValue = props.min != null ? Number(props.min) : Math.min(...values);
|
|
26105
|
+
if (minValue > 0 && props.min == null) minValue = 0;
|
|
26106
|
+
if (maxValue < 0 && props.max == null) maxValue = 0;
|
|
25994
26107
|
const gridX = maxX / totalValues;
|
|
25995
26108
|
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
25996
26109
|
const horizonY = maxY - Math.abs(minValue * gridY);
|
|
@@ -26171,8 +26284,8 @@
|
|
|
26171
26284
|
maxY
|
|
26172
26285
|
} = boundary;
|
|
26173
26286
|
const totalValues = values.length;
|
|
26174
|
-
const maxValue = Math.max(...values);
|
|
26175
|
-
const minValue = Math.min(...values);
|
|
26287
|
+
const maxValue = props.max != null ? Number(props.max) : Math.max(...values);
|
|
26288
|
+
const minValue = props.min != null ? Number(props.min) : Math.min(...values);
|
|
26176
26289
|
const gridX = (maxX - minX) / (totalValues - 1);
|
|
26177
26290
|
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
26178
26291
|
return values.map((value, index) => {
|
|
@@ -26279,6 +26392,10 @@
|
|
|
26279
26392
|
"d": genPath(genPoints(props.modelValue.map(item => typeof item === 'number' ? item : item.value), boundary.value), props.smooth ? 8 : Number(props.smooth), props.fill, parseInt(props.height, 10)),
|
|
26280
26393
|
"fill": props.fill ? `url(#${id.value})` : 'none',
|
|
26281
26394
|
"stroke": props.fill ? 'none' : `url(#${id.value})`
|
|
26395
|
+
}, null), props.fill && vue.createVNode("path", {
|
|
26396
|
+
"d": genPath(genPoints(props.modelValue.map(item => typeof item === 'number' ? item : item.value), boundary.value), props.smooth ? 8 : Number(props.smooth), false, parseInt(props.height, 10)),
|
|
26397
|
+
"fill": "none",
|
|
26398
|
+
"stroke": props.color ?? props.gradient?.[0]
|
|
26282
26399
|
}, null)]);
|
|
26283
26400
|
});
|
|
26284
26401
|
}
|
|
@@ -26328,6 +26445,137 @@
|
|
|
26328
26445
|
}
|
|
26329
26446
|
});
|
|
26330
26447
|
|
|
26448
|
+
// Types
|
|
26449
|
+
|
|
26450
|
+
// Types
|
|
26451
|
+
|
|
26452
|
+
const makeVEmptyStateProps = propsFactory({
|
|
26453
|
+
actionText: String,
|
|
26454
|
+
bgColor: String,
|
|
26455
|
+
color: String,
|
|
26456
|
+
icon: IconValue,
|
|
26457
|
+
image: String,
|
|
26458
|
+
justify: {
|
|
26459
|
+
type: String,
|
|
26460
|
+
default: 'center'
|
|
26461
|
+
},
|
|
26462
|
+
headline: String,
|
|
26463
|
+
title: String,
|
|
26464
|
+
text: String,
|
|
26465
|
+
textWidth: {
|
|
26466
|
+
type: [Number, String],
|
|
26467
|
+
default: 500
|
|
26468
|
+
},
|
|
26469
|
+
href: String,
|
|
26470
|
+
to: String,
|
|
26471
|
+
...makeComponentProps(),
|
|
26472
|
+
...makeDimensionProps(),
|
|
26473
|
+
...makeSizeProps({
|
|
26474
|
+
size: undefined
|
|
26475
|
+
}),
|
|
26476
|
+
...makeThemeProps()
|
|
26477
|
+
}, 'VEmptyState');
|
|
26478
|
+
const VEmptyState = genericComponent()({
|
|
26479
|
+
name: 'VEmptyState',
|
|
26480
|
+
props: makeVEmptyStateProps(),
|
|
26481
|
+
emits: {
|
|
26482
|
+
'click:action': e => true
|
|
26483
|
+
},
|
|
26484
|
+
setup(props, _ref) {
|
|
26485
|
+
let {
|
|
26486
|
+
emit,
|
|
26487
|
+
slots
|
|
26488
|
+
} = _ref;
|
|
26489
|
+
const {
|
|
26490
|
+
themeClasses
|
|
26491
|
+
} = provideTheme(props);
|
|
26492
|
+
const {
|
|
26493
|
+
backgroundColorClasses,
|
|
26494
|
+
backgroundColorStyles
|
|
26495
|
+
} = useBackgroundColor(vue.toRef(props, 'bgColor'));
|
|
26496
|
+
const {
|
|
26497
|
+
dimensionStyles
|
|
26498
|
+
} = useDimension(props);
|
|
26499
|
+
function onClickAction(e) {
|
|
26500
|
+
emit('click:action', e);
|
|
26501
|
+
}
|
|
26502
|
+
useRender(() => {
|
|
26503
|
+
const hasActions = !!(slots.actions || props.actionText);
|
|
26504
|
+
const hasHeadline = !!(slots.headline || props.headline);
|
|
26505
|
+
const hasTitle = !!(slots.title || props.title);
|
|
26506
|
+
const hasText = !!(slots.text || props.text);
|
|
26507
|
+
const hasMedia = !!(slots.media || props.image || props.icon);
|
|
26508
|
+
const size = props.size || (props.image ? 200 : 96);
|
|
26509
|
+
return vue.createVNode("div", {
|
|
26510
|
+
"class": ['v-empty-state', {
|
|
26511
|
+
[`v-empty-state--${props.justify}`]: true
|
|
26512
|
+
}, themeClasses.value, backgroundColorClasses.value, props.class],
|
|
26513
|
+
"style": [backgroundColorStyles.value, dimensionStyles.value, props.style]
|
|
26514
|
+
}, [hasMedia && vue.createVNode("div", {
|
|
26515
|
+
"key": "media",
|
|
26516
|
+
"class": "v-empty-state__media"
|
|
26517
|
+
}, [!slots.media ? vue.createVNode(vue.Fragment, null, [props.image ? vue.createVNode(VImg, {
|
|
26518
|
+
"key": "image",
|
|
26519
|
+
"src": props.image,
|
|
26520
|
+
"height": size
|
|
26521
|
+
}, null) : props.icon ? vue.createVNode(VIcon, {
|
|
26522
|
+
"key": "icon",
|
|
26523
|
+
"size": size,
|
|
26524
|
+
"icon": props.icon
|
|
26525
|
+
}, null) : undefined]) : vue.createVNode(VDefaultsProvider, {
|
|
26526
|
+
"key": "media-defaults",
|
|
26527
|
+
"defaults": {
|
|
26528
|
+
VImg: {
|
|
26529
|
+
src: props.image,
|
|
26530
|
+
height: size
|
|
26531
|
+
},
|
|
26532
|
+
VIcon: {
|
|
26533
|
+
size,
|
|
26534
|
+
icon: props.icon
|
|
26535
|
+
}
|
|
26536
|
+
}
|
|
26537
|
+
}, {
|
|
26538
|
+
default: () => [slots.media()]
|
|
26539
|
+
})]), hasHeadline && vue.createVNode("div", {
|
|
26540
|
+
"key": "headline",
|
|
26541
|
+
"class": "v-empty-state__headline"
|
|
26542
|
+
}, [slots.headline?.() ?? props.headline]), hasTitle && vue.createVNode("div", {
|
|
26543
|
+
"key": "title",
|
|
26544
|
+
"class": "v-empty-state__title"
|
|
26545
|
+
}, [slots.title?.() ?? props.title]), hasText && vue.createVNode("div", {
|
|
26546
|
+
"key": "text",
|
|
26547
|
+
"class": "v-empty-state__text",
|
|
26548
|
+
"style": {
|
|
26549
|
+
maxWidth: convertToUnit(props.textWidth)
|
|
26550
|
+
}
|
|
26551
|
+
}, [slots.text?.() ?? props.text]), slots.default && vue.createVNode("div", {
|
|
26552
|
+
"key": "content",
|
|
26553
|
+
"class": "v-empty-state__content"
|
|
26554
|
+
}, [slots.default()]), hasActions && vue.createVNode("div", {
|
|
26555
|
+
"key": "actions",
|
|
26556
|
+
"class": "v-empty-state__actions"
|
|
26557
|
+
}, [vue.createVNode(VDefaultsProvider, {
|
|
26558
|
+
"defaults": {
|
|
26559
|
+
VBtn: {
|
|
26560
|
+
class: 'v-empty-state__action-btn',
|
|
26561
|
+
color: props.color,
|
|
26562
|
+
text: props.actionText
|
|
26563
|
+
}
|
|
26564
|
+
}
|
|
26565
|
+
}, {
|
|
26566
|
+
default: () => [slots.actions?.({
|
|
26567
|
+
props: {
|
|
26568
|
+
onClick: onClickAction
|
|
26569
|
+
}
|
|
26570
|
+
}) ?? vue.createVNode(VBtn, {
|
|
26571
|
+
"onClick": onClickAction
|
|
26572
|
+
}, null)]
|
|
26573
|
+
})])]);
|
|
26574
|
+
});
|
|
26575
|
+
return {};
|
|
26576
|
+
}
|
|
26577
|
+
});
|
|
26578
|
+
|
|
26331
26579
|
var components = /*#__PURE__*/Object.freeze({
|
|
26332
26580
|
__proto__: null,
|
|
26333
26581
|
VAlert: VAlert,
|
|
@@ -26380,6 +26628,7 @@
|
|
|
26380
26628
|
VDataIterator: VDataIterator,
|
|
26381
26629
|
VDataTable: VDataTable,
|
|
26382
26630
|
VDataTableFooter: VDataTableFooter,
|
|
26631
|
+
VDataTableHeaders: VDataTableHeaders,
|
|
26383
26632
|
VDataTableRow: VDataTableRow,
|
|
26384
26633
|
VDataTableRows: VDataTableRows,
|
|
26385
26634
|
VDataTableServer: VDataTableServer,
|
|
@@ -26396,12 +26645,14 @@
|
|
|
26396
26645
|
VDialogTopTransition: VDialogTopTransition,
|
|
26397
26646
|
VDialogTransition: VDialogTransition,
|
|
26398
26647
|
VDivider: VDivider,
|
|
26648
|
+
VEmptyState: VEmptyState,
|
|
26399
26649
|
VExpandTransition: VExpandTransition,
|
|
26400
26650
|
VExpandXTransition: VExpandXTransition,
|
|
26401
26651
|
VExpansionPanel: VExpansionPanel,
|
|
26402
26652
|
VExpansionPanelText: VExpansionPanelText,
|
|
26403
26653
|
VExpansionPanelTitle: VExpansionPanelTitle,
|
|
26404
26654
|
VExpansionPanels: VExpansionPanels,
|
|
26655
|
+
VFab: VFab,
|
|
26405
26656
|
VFabTransition: VFabTransition,
|
|
26406
26657
|
VFadeTransition: VFadeTransition,
|
|
26407
26658
|
VField: VField,
|
|
@@ -26718,7 +26969,7 @@
|
|
|
26718
26969
|
goTo
|
|
26719
26970
|
};
|
|
26720
26971
|
}
|
|
26721
|
-
const version$1 = "3.5.
|
|
26972
|
+
const version$1 = "3.5.7";
|
|
26722
26973
|
createVuetify$1.version = version$1;
|
|
26723
26974
|
|
|
26724
26975
|
// Vue's inject() can only be used in setup
|
|
@@ -26732,7 +26983,7 @@
|
|
|
26732
26983
|
|
|
26733
26984
|
/* eslint-disable local-rules/sort-imports */
|
|
26734
26985
|
|
|
26735
|
-
const version = "3.5.
|
|
26986
|
+
const version = "3.5.7";
|
|
26736
26987
|
|
|
26737
26988
|
/* eslint-disable local-rules/sort-imports */
|
|
26738
26989
|
|