vuetify 3.5.6 → 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 +312 -40
- package/dist/json/importMap-labs.json +8 -0
- package/dist/json/importMap.json +122 -122
- package/dist/json/tags.json +78 -0
- package/dist/json/web-types.json +793 -52
- package/dist/vuetify-labs.css +1931 -1803
- package/dist/vuetify-labs.d.ts +1073 -106
- package/dist/vuetify-labs.esm.js +315 -75
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +315 -75
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +846 -844
- package/dist/vuetify.d.ts +74 -141
- package/dist/vuetify.esm.js +70 -69
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +70 -69
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +50 -49
- 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 +28 -27
- 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 +19 -22
- 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/VLayout/index.d.mts +8 -6
- package/lib/components/VSelect/VSelect.mjs +18 -17
- 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 +38 -105
- 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 +38 -36
- 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,21 +11850,27 @@
|
|
|
11848
11850
|
model.value = [item];
|
|
11849
11851
|
}
|
|
11850
11852
|
}
|
|
11853
|
+
|
|
11854
|
+
/** @param set - null means toggle */
|
|
11851
11855
|
function select(item) {
|
|
11852
|
-
let
|
|
11856
|
+
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
11857
|
+
if (item.props.disabled) return;
|
|
11853
11858
|
if (props.multiple) {
|
|
11854
11859
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
11855
|
-
add = index
|
|
11856
|
-
if (
|
|
11857
|
-
|
|
11858
|
-
} else {
|
|
11859
|
-
const value = [...model.value];
|
|
11860
|
+
const add = set == null ? !~index : set;
|
|
11861
|
+
if (~index) {
|
|
11862
|
+
const value = add ? [...model.value, item] : [...model.value];
|
|
11860
11863
|
value.splice(index, 1);
|
|
11861
11864
|
model.value = value;
|
|
11865
|
+
} else if (add) {
|
|
11866
|
+
model.value = [...model.value, item];
|
|
11862
11867
|
}
|
|
11863
11868
|
} else {
|
|
11869
|
+
const add = set !== false;
|
|
11864
11870
|
model.value = add ? [item] : [];
|
|
11865
|
-
|
|
11871
|
+
vue.nextTick(() => {
|
|
11872
|
+
menu.value = false;
|
|
11873
|
+
});
|
|
11866
11874
|
}
|
|
11867
11875
|
}
|
|
11868
11876
|
function onBlur(e) {
|
|
@@ -11896,14 +11904,9 @@
|
|
|
11896
11904
|
});
|
|
11897
11905
|
}
|
|
11898
11906
|
});
|
|
11899
|
-
vue.watch(
|
|
11900
|
-
if (!isFocused.value) return;
|
|
11901
|
-
|
|
11902
|
-
menu.value = false;
|
|
11903
|
-
}
|
|
11904
|
-
if (!oldVal.length && val.length) {
|
|
11905
|
-
menu.value = true;
|
|
11906
|
-
}
|
|
11907
|
+
vue.watch(() => props.items, val => {
|
|
11908
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
11909
|
+
menu.value = true;
|
|
11907
11910
|
});
|
|
11908
11911
|
useRender(() => {
|
|
11909
11912
|
const hasChips = !!(props.chips || slots.chip);
|
|
@@ -11981,7 +11984,7 @@
|
|
|
11981
11984
|
const itemProps = vue.mergeProps(item.props, {
|
|
11982
11985
|
ref: itemRef,
|
|
11983
11986
|
key: index,
|
|
11984
|
-
onClick: () => select(item)
|
|
11987
|
+
onClick: () => select(item, null)
|
|
11985
11988
|
});
|
|
11986
11989
|
return slots.item?.({
|
|
11987
11990
|
item,
|
|
@@ -12288,6 +12291,8 @@
|
|
|
12288
12291
|
}
|
|
12289
12292
|
return filteredItems.value;
|
|
12290
12293
|
});
|
|
12294
|
+
const hasChips = vue.computed(() => !!(props.chips || slots.chip));
|
|
12295
|
+
const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
|
|
12291
12296
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.props.value));
|
|
12292
12297
|
const highlightFirst = vue.computed(() => {
|
|
12293
12298
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
@@ -12346,7 +12351,7 @@
|
|
|
12346
12351
|
}
|
|
12347
12352
|
const originalSelectionIndex = selectionIndex.value;
|
|
12348
12353
|
const selectedItem = model.value[selectionIndex.value];
|
|
12349
|
-
if (selectedItem && !selectedItem.props.disabled) select(selectedItem);
|
|
12354
|
+
if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
|
|
12350
12355
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
12351
12356
|
}
|
|
12352
12357
|
if (e.key === 'ArrowLeft') {
|
|
@@ -12397,36 +12402,41 @@
|
|
|
12397
12402
|
if (v == null || v === '' && !props.multiple) model.value = [];
|
|
12398
12403
|
}
|
|
12399
12404
|
const isSelecting = vue.shallowRef(false);
|
|
12405
|
+
|
|
12406
|
+
/** @param set - null means toggle */
|
|
12400
12407
|
function select(item) {
|
|
12401
|
-
let
|
|
12408
|
+
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
12402
12409
|
if (item.props.disabled) return;
|
|
12403
12410
|
if (props.multiple) {
|
|
12404
12411
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
12405
|
-
add = index
|
|
12406
|
-
if (
|
|
12407
|
-
|
|
12408
|
-
} else {
|
|
12409
|
-
const value = [...model.value];
|
|
12412
|
+
const add = set == null ? !~index : set;
|
|
12413
|
+
if (~index) {
|
|
12414
|
+
const value = add ? [...model.value, item] : [...model.value];
|
|
12410
12415
|
value.splice(index, 1);
|
|
12411
12416
|
model.value = value;
|
|
12417
|
+
} else if (add) {
|
|
12418
|
+
model.value = [...model.value, item];
|
|
12412
12419
|
}
|
|
12413
12420
|
if (props.clearOnSelect) {
|
|
12414
12421
|
search.value = '';
|
|
12415
12422
|
}
|
|
12416
12423
|
} else {
|
|
12424
|
+
const add = set !== false;
|
|
12417
12425
|
model.value = add ? [item] : [];
|
|
12418
|
-
|
|
12419
|
-
|
|
12420
|
-
|
|
12421
|
-
|
|
12422
|
-
|
|
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
|
+
});
|
|
12423
12433
|
}
|
|
12424
12434
|
}
|
|
12425
12435
|
vue.watch(isFocused, (val, oldVal) => {
|
|
12426
12436
|
if (val === oldVal) return;
|
|
12427
12437
|
if (val) {
|
|
12428
12438
|
isSelecting.value = true;
|
|
12429
|
-
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 ?? '');
|
|
12430
12440
|
isPristine.value = true;
|
|
12431
12441
|
vue.nextTick(() => isSelecting.value = false);
|
|
12432
12442
|
} else {
|
|
@@ -12456,17 +12466,11 @@
|
|
|
12456
12466
|
});
|
|
12457
12467
|
}
|
|
12458
12468
|
});
|
|
12459
|
-
vue.watch(
|
|
12460
|
-
if (!isFocused.value) return;
|
|
12461
|
-
|
|
12462
|
-
menu.value = false;
|
|
12463
|
-
}
|
|
12464
|
-
if (!oldVal.length && val.length) {
|
|
12465
|
-
menu.value = true;
|
|
12466
|
-
}
|
|
12469
|
+
vue.watch(() => props.items, val => {
|
|
12470
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
12471
|
+
menu.value = true;
|
|
12467
12472
|
});
|
|
12468
12473
|
useRender(() => {
|
|
12469
|
-
const hasChips = !!(props.chips || slots.chip);
|
|
12470
12474
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
12471
12475
|
const isDirty = model.value.length > 0;
|
|
12472
12476
|
const textFieldProps = VTextField.filterProps(props);
|
|
@@ -12484,7 +12488,7 @@
|
|
|
12484
12488
|
"class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
|
|
12485
12489
|
'v-autocomplete--active-menu': menu.value,
|
|
12486
12490
|
'v-autocomplete--chips': !!props.chips,
|
|
12487
|
-
'v-autocomplete--selection-slot': !!
|
|
12491
|
+
'v-autocomplete--selection-slot': !!hasSelectionSlot.value,
|
|
12488
12492
|
'v-autocomplete--selecting-index': selectionIndex.value > -1
|
|
12489
12493
|
}, props.class],
|
|
12490
12494
|
"style": props.style,
|
|
@@ -12539,7 +12543,7 @@
|
|
|
12539
12543
|
ref: itemRef,
|
|
12540
12544
|
key: index,
|
|
12541
12545
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
12542
|
-
onClick: () => select(item)
|
|
12546
|
+
onClick: () => select(item, null)
|
|
12543
12547
|
});
|
|
12544
12548
|
return slots.item?.({
|
|
12545
12549
|
item,
|
|
@@ -12585,8 +12589,8 @@
|
|
|
12585
12589
|
modelValue: true,
|
|
12586
12590
|
'onUpdate:modelValue': undefined
|
|
12587
12591
|
};
|
|
12588
|
-
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
12589
|
-
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({
|
|
12590
12594
|
item,
|
|
12591
12595
|
index,
|
|
12592
12596
|
props: slotProps
|
|
@@ -12599,7 +12603,7 @@
|
|
|
12599
12603
|
"key": item.value,
|
|
12600
12604
|
"class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
|
|
12601
12605
|
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
12602
|
-
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
12606
|
+
}, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
12603
12607
|
"key": "chip",
|
|
12604
12608
|
"closable": props.closableChips,
|
|
12605
12609
|
"size": "small",
|
|
@@ -16038,14 +16042,16 @@
|
|
|
16038
16042
|
return props.multiple ? transformed : transformed[0] ?? null;
|
|
16039
16043
|
});
|
|
16040
16044
|
const form = useForm();
|
|
16041
|
-
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 ?? '' : '');
|
|
16042
16048
|
const search = vue.computed({
|
|
16043
16049
|
get: () => {
|
|
16044
16050
|
return _search.value;
|
|
16045
16051
|
},
|
|
16046
16052
|
set: val => {
|
|
16047
16053
|
_search.value = val ?? '';
|
|
16048
|
-
if (!props.multiple) {
|
|
16054
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
16049
16055
|
model.value = [transformItem$3(props, val)];
|
|
16050
16056
|
}
|
|
16051
16057
|
if (val && props.multiple && props.delimiters?.length) {
|
|
@@ -16076,7 +16082,7 @@
|
|
|
16076
16082
|
emit('update:search', value);
|
|
16077
16083
|
});
|
|
16078
16084
|
vue.watch(model, value => {
|
|
16079
|
-
if (!props.multiple) {
|
|
16085
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
16080
16086
|
_search.value = value[0]?.title ?? '';
|
|
16081
16087
|
}
|
|
16082
16088
|
});
|
|
@@ -16141,6 +16147,10 @@
|
|
|
16141
16147
|
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
16142
16148
|
listRef.value?.focus('next');
|
|
16143
16149
|
}
|
|
16150
|
+
if (e.key === 'Enter' && search.value) {
|
|
16151
|
+
select(transformItem$3(props, search.value));
|
|
16152
|
+
if (hasSelectionSlot.value) search.value = '';
|
|
16153
|
+
}
|
|
16144
16154
|
if (!props.multiple) return;
|
|
16145
16155
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
16146
16156
|
if (selectionIndex.value < 0) {
|
|
@@ -16174,10 +16184,6 @@
|
|
|
16174
16184
|
vTextFieldRef.value.setSelectionRange(0, 0);
|
|
16175
16185
|
}
|
|
16176
16186
|
}
|
|
16177
|
-
if (e.key === 'Enter' && search.value) {
|
|
16178
|
-
select(transformItem$3(props, search.value));
|
|
16179
|
-
search.value = '';
|
|
16180
|
-
}
|
|
16181
16187
|
}
|
|
16182
16188
|
function onAfterLeave() {
|
|
16183
16189
|
if (isFocused.value) {
|
|
@@ -16188,6 +16194,7 @@
|
|
|
16188
16194
|
/** @param set - null means toggle */
|
|
16189
16195
|
function select(item) {
|
|
16190
16196
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
16197
|
+
if (item.props.disabled) return;
|
|
16191
16198
|
if (props.multiple) {
|
|
16192
16199
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
16193
16200
|
const add = set == null ? !~index : set;
|
|
@@ -16204,7 +16211,7 @@
|
|
|
16204
16211
|
} else {
|
|
16205
16212
|
const add = set !== false;
|
|
16206
16213
|
model.value = add ? [item] : [];
|
|
16207
|
-
_search.value = add ? item.title : '';
|
|
16214
|
+
_search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
16208
16215
|
|
|
16209
16216
|
// watch for search watcher to trigger
|
|
16210
16217
|
vue.nextTick(() => {
|
|
@@ -16236,7 +16243,7 @@
|
|
|
16236
16243
|
return value === displayItems.value[0].value;
|
|
16237
16244
|
})) {
|
|
16238
16245
|
select(displayItems.value[0]);
|
|
16239
|
-
} else if (
|
|
16246
|
+
} else if (search.value) {
|
|
16240
16247
|
select(transformItem$3(props, search.value));
|
|
16241
16248
|
}
|
|
16242
16249
|
});
|
|
@@ -16248,17 +16255,11 @@
|
|
|
16248
16255
|
});
|
|
16249
16256
|
}
|
|
16250
16257
|
});
|
|
16251
|
-
vue.watch(
|
|
16252
|
-
if (!isFocused.value) return;
|
|
16253
|
-
|
|
16254
|
-
menu.value = false;
|
|
16255
|
-
}
|
|
16256
|
-
if (!oldVal.length && val.length) {
|
|
16257
|
-
menu.value = true;
|
|
16258
|
-
}
|
|
16258
|
+
vue.watch(() => props.items, val => {
|
|
16259
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
16260
|
+
menu.value = true;
|
|
16259
16261
|
});
|
|
16260
16262
|
useRender(() => {
|
|
16261
|
-
const hasChips = !!(props.chips || slots.chip);
|
|
16262
16263
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
16263
16264
|
const isDirty = model.value.length > 0;
|
|
16264
16265
|
const textFieldProps = VTextField.filterProps(props);
|
|
@@ -16275,7 +16276,7 @@
|
|
|
16275
16276
|
"class": ['v-combobox', {
|
|
16276
16277
|
'v-combobox--active-menu': menu.value,
|
|
16277
16278
|
'v-combobox--chips': !!props.chips,
|
|
16278
|
-
'v-combobox--selection-slot': !!
|
|
16279
|
+
'v-combobox--selection-slot': !!hasSelectionSlot.value,
|
|
16279
16280
|
'v-combobox--selecting-index': selectionIndex.value > -1,
|
|
16280
16281
|
[`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
|
|
16281
16282
|
}, props.class],
|
|
@@ -16377,8 +16378,8 @@
|
|
|
16377
16378
|
modelValue: true,
|
|
16378
16379
|
'onUpdate:modelValue': undefined
|
|
16379
16380
|
};
|
|
16380
|
-
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
16381
|
-
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({
|
|
16382
16383
|
item,
|
|
16383
16384
|
index,
|
|
16384
16385
|
props: slotProps
|
|
@@ -16391,7 +16392,7 @@
|
|
|
16391
16392
|
"key": item.value,
|
|
16392
16393
|
"class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
|
|
16393
16394
|
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
16394
|
-
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
16395
|
+
}, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
16395
16396
|
"key": "chip",
|
|
16396
16397
|
"closable": props.closableChips,
|
|
16397
16398
|
"size": "small",
|
|
@@ -25906,6 +25907,106 @@
|
|
|
25906
25907
|
}
|
|
25907
25908
|
});
|
|
25908
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
|
+
|
|
25909
26010
|
// Utilities
|
|
25910
26011
|
|
|
25911
26012
|
// Types
|
|
@@ -25948,6 +26049,8 @@
|
|
|
25948
26049
|
type: Array,
|
|
25949
26050
|
default: () => []
|
|
25950
26051
|
},
|
|
26052
|
+
min: [String, Number],
|
|
26053
|
+
max: [String, Number],
|
|
25951
26054
|
padding: {
|
|
25952
26055
|
type: [String, Number],
|
|
25953
26056
|
default: 8
|
|
@@ -25997,10 +26100,10 @@
|
|
|
25997
26100
|
maxY
|
|
25998
26101
|
} = boundary;
|
|
25999
26102
|
const totalValues = values.length;
|
|
26000
|
-
let maxValue = Math.max(...values);
|
|
26001
|
-
let minValue = Math.min(...values);
|
|
26002
|
-
if (minValue > 0) minValue = 0;
|
|
26003
|
-
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;
|
|
26004
26107
|
const gridX = maxX / totalValues;
|
|
26005
26108
|
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
26006
26109
|
const horizonY = maxY - Math.abs(minValue * gridY);
|
|
@@ -26181,8 +26284,8 @@
|
|
|
26181
26284
|
maxY
|
|
26182
26285
|
} = boundary;
|
|
26183
26286
|
const totalValues = values.length;
|
|
26184
|
-
const maxValue = Math.max(...values);
|
|
26185
|
-
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);
|
|
26186
26289
|
const gridX = (maxX - minX) / (totalValues - 1);
|
|
26187
26290
|
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
26188
26291
|
return values.map((value, index) => {
|
|
@@ -26289,6 +26392,10 @@
|
|
|
26289
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)),
|
|
26290
26393
|
"fill": props.fill ? `url(#${id.value})` : 'none',
|
|
26291
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]
|
|
26292
26399
|
}, null)]);
|
|
26293
26400
|
});
|
|
26294
26401
|
}
|
|
@@ -26338,6 +26445,137 @@
|
|
|
26338
26445
|
}
|
|
26339
26446
|
});
|
|
26340
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
|
+
|
|
26341
26579
|
var components = /*#__PURE__*/Object.freeze({
|
|
26342
26580
|
__proto__: null,
|
|
26343
26581
|
VAlert: VAlert,
|
|
@@ -26407,12 +26645,14 @@
|
|
|
26407
26645
|
VDialogTopTransition: VDialogTopTransition,
|
|
26408
26646
|
VDialogTransition: VDialogTransition,
|
|
26409
26647
|
VDivider: VDivider,
|
|
26648
|
+
VEmptyState: VEmptyState,
|
|
26410
26649
|
VExpandTransition: VExpandTransition,
|
|
26411
26650
|
VExpandXTransition: VExpandXTransition,
|
|
26412
26651
|
VExpansionPanel: VExpansionPanel,
|
|
26413
26652
|
VExpansionPanelText: VExpansionPanelText,
|
|
26414
26653
|
VExpansionPanelTitle: VExpansionPanelTitle,
|
|
26415
26654
|
VExpansionPanels: VExpansionPanels,
|
|
26655
|
+
VFab: VFab,
|
|
26416
26656
|
VFabTransition: VFabTransition,
|
|
26417
26657
|
VFadeTransition: VFadeTransition,
|
|
26418
26658
|
VField: VField,
|
|
@@ -26729,7 +26969,7 @@
|
|
|
26729
26969
|
goTo
|
|
26730
26970
|
};
|
|
26731
26971
|
}
|
|
26732
|
-
const version$1 = "3.5.
|
|
26972
|
+
const version$1 = "3.5.7";
|
|
26733
26973
|
createVuetify$1.version = version$1;
|
|
26734
26974
|
|
|
26735
26975
|
// Vue's inject() can only be used in setup
|
|
@@ -26743,7 +26983,7 @@
|
|
|
26743
26983
|
|
|
26744
26984
|
/* eslint-disable local-rules/sort-imports */
|
|
26745
26985
|
|
|
26746
|
-
const version = "3.5.
|
|
26986
|
+
const version = "3.5.7";
|
|
26747
26987
|
|
|
26748
26988
|
/* eslint-disable local-rules/sort-imports */
|
|
26749
26989
|
|