vuetify 3.5.6 → 3.5.8
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 +461 -41
- package/dist/json/importMap-labs.json +16 -4
- package/dist/json/importMap.json +120 -120
- package/dist/json/tags.json +120 -0
- package/dist/json/web-types.json +1173 -53
- package/dist/vuetify-labs.css +1547 -1407
- package/dist/vuetify-labs.d.ts +1672 -127
- package/dist/vuetify-labs.esm.js +428 -94
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +428 -94
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +438 -432
- package/dist/vuetify.d.ts +78 -142
- package/dist/vuetify.esm.js +121 -82
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +121 -82
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +147 -135
- 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 +2 -2
- 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 +40 -27
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +2 -2
- package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
- package/lib/components/VDataIterator/index.d.mts +50 -94
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- 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/VSwitch/VSwitch.css +9 -5
- package/lib/components/VSwitch/VSwitch.mjs +2 -0
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.sass +10 -7
- package/lib/components/VSwitch/_variables.scss +2 -0
- 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/date/adapters/vuetify.mjs +21 -3
- package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/transition.mjs +7 -5
- package/lib/composables/transition.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +42 -37
- package/lib/labs/VCalendar/VCalendarInterval.css +1 -0
- package/lib/labs/VCalendar/VCalendarInterval.sass +1 -0
- package/lib/labs/VCalendar/VCalendarIntervalEvent.css +6 -0
- package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs +5 -2
- package/lib/labs/VCalendar/VCalendarIntervalEvent.mjs.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.sass +6 -0
- 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 +8 -7
- package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
- package/lib/labs/VSparkline/VTrendline.mjs +14 -6
- package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
- package/lib/labs/VSparkline/index.d.mts +27 -0
- package/lib/labs/VSparkline/util/line.mjs +6 -0
- package/lib/labs/VSparkline/util/line.mjs.map +1 -1
- package/lib/labs/VSpeedDial/VSpeedDial.css +3 -0
- package/lib/labs/VSpeedDial/VSpeedDial.mjs +56 -0
- package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +1 -0
- package/lib/labs/VSpeedDial/VSpeedDial.sass +2 -0
- package/lib/labs/VSpeedDial/index.d.mts +649 -0
- package/lib/labs/VSpeedDial/index.mjs +2 -0
- package/lib/labs/VSpeedDial/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +1907 -193
- package/lib/labs/components.mjs +3 -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.8
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -3164,17 +3164,19 @@
|
|
|
3164
3164
|
const {
|
|
3165
3165
|
transition,
|
|
3166
3166
|
disabled,
|
|
3167
|
+
group,
|
|
3167
3168
|
...rest
|
|
3168
3169
|
} = props;
|
|
3169
3170
|
const {
|
|
3170
|
-
component = vue.Transition,
|
|
3171
|
+
component = group ? vue.TransitionGroup : vue.Transition,
|
|
3171
3172
|
...customProps
|
|
3172
3173
|
} = typeof transition === 'object' ? transition : {};
|
|
3173
3174
|
return vue.h(component, vue.mergeProps(typeof transition === 'string' ? {
|
|
3174
3175
|
name: disabled ? '' : transition
|
|
3175
|
-
} : customProps,
|
|
3176
|
-
disabled
|
|
3177
|
-
|
|
3176
|
+
} : customProps, typeof transition === 'string' ? {} : {
|
|
3177
|
+
disabled,
|
|
3178
|
+
group
|
|
3179
|
+
}, rest), slots);
|
|
3178
3180
|
};
|
|
3179
3181
|
|
|
3180
3182
|
// Utilities
|
|
@@ -6891,7 +6893,8 @@
|
|
|
6891
6893
|
id,
|
|
6892
6894
|
messagesId,
|
|
6893
6895
|
isDisabled,
|
|
6894
|
-
isReadonly
|
|
6896
|
+
isReadonly,
|
|
6897
|
+
isValid
|
|
6895
6898
|
} = _ref2;
|
|
6896
6899
|
return vue.createVNode(VCheckboxBtn, vue.mergeProps(checkboxProps, {
|
|
6897
6900
|
"id": id.value,
|
|
@@ -6899,6 +6902,7 @@
|
|
|
6899
6902
|
"disabled": isDisabled.value,
|
|
6900
6903
|
"readonly": isReadonly.value
|
|
6901
6904
|
}, controlAttrs, {
|
|
6905
|
+
"error": isValid.value === false,
|
|
6902
6906
|
"modelValue": model.value,
|
|
6903
6907
|
"onUpdate:modelValue": $event => model.value = $event,
|
|
6904
6908
|
"onFocus": focus,
|
|
@@ -11848,21 +11852,27 @@
|
|
|
11848
11852
|
model.value = [item];
|
|
11849
11853
|
}
|
|
11850
11854
|
}
|
|
11855
|
+
|
|
11856
|
+
/** @param set - null means toggle */
|
|
11851
11857
|
function select(item) {
|
|
11852
|
-
let
|
|
11858
|
+
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
11859
|
+
if (item.props.disabled) return;
|
|
11853
11860
|
if (props.multiple) {
|
|
11854
11861
|
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];
|
|
11862
|
+
const add = set == null ? !~index : set;
|
|
11863
|
+
if (~index) {
|
|
11864
|
+
const value = add ? [...model.value, item] : [...model.value];
|
|
11860
11865
|
value.splice(index, 1);
|
|
11861
11866
|
model.value = value;
|
|
11867
|
+
} else if (add) {
|
|
11868
|
+
model.value = [...model.value, item];
|
|
11862
11869
|
}
|
|
11863
11870
|
} else {
|
|
11871
|
+
const add = set !== false;
|
|
11864
11872
|
model.value = add ? [item] : [];
|
|
11865
|
-
|
|
11873
|
+
vue.nextTick(() => {
|
|
11874
|
+
menu.value = false;
|
|
11875
|
+
});
|
|
11866
11876
|
}
|
|
11867
11877
|
}
|
|
11868
11878
|
function onBlur(e) {
|
|
@@ -11896,14 +11906,9 @@
|
|
|
11896
11906
|
});
|
|
11897
11907
|
}
|
|
11898
11908
|
});
|
|
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
|
-
}
|
|
11909
|
+
vue.watch(() => props.items, val => {
|
|
11910
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
11911
|
+
menu.value = true;
|
|
11907
11912
|
});
|
|
11908
11913
|
useRender(() => {
|
|
11909
11914
|
const hasChips = !!(props.chips || slots.chip);
|
|
@@ -11981,7 +11986,7 @@
|
|
|
11981
11986
|
const itemProps = vue.mergeProps(item.props, {
|
|
11982
11987
|
ref: itemRef,
|
|
11983
11988
|
key: index,
|
|
11984
|
-
onClick: () => select(item)
|
|
11989
|
+
onClick: () => select(item, null)
|
|
11985
11990
|
});
|
|
11986
11991
|
return slots.item?.({
|
|
11987
11992
|
item,
|
|
@@ -12288,6 +12293,8 @@
|
|
|
12288
12293
|
}
|
|
12289
12294
|
return filteredItems.value;
|
|
12290
12295
|
});
|
|
12296
|
+
const hasChips = vue.computed(() => !!(props.chips || slots.chip));
|
|
12297
|
+
const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
|
|
12291
12298
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.props.value));
|
|
12292
12299
|
const highlightFirst = vue.computed(() => {
|
|
12293
12300
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
@@ -12346,7 +12353,7 @@
|
|
|
12346
12353
|
}
|
|
12347
12354
|
const originalSelectionIndex = selectionIndex.value;
|
|
12348
12355
|
const selectedItem = model.value[selectionIndex.value];
|
|
12349
|
-
if (selectedItem && !selectedItem.props.disabled) select(selectedItem);
|
|
12356
|
+
if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
|
|
12350
12357
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
12351
12358
|
}
|
|
12352
12359
|
if (e.key === 'ArrowLeft') {
|
|
@@ -12397,36 +12404,41 @@
|
|
|
12397
12404
|
if (v == null || v === '' && !props.multiple) model.value = [];
|
|
12398
12405
|
}
|
|
12399
12406
|
const isSelecting = vue.shallowRef(false);
|
|
12407
|
+
|
|
12408
|
+
/** @param set - null means toggle */
|
|
12400
12409
|
function select(item) {
|
|
12401
|
-
let
|
|
12410
|
+
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
12402
12411
|
if (item.props.disabled) return;
|
|
12403
12412
|
if (props.multiple) {
|
|
12404
12413
|
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];
|
|
12414
|
+
const add = set == null ? !~index : set;
|
|
12415
|
+
if (~index) {
|
|
12416
|
+
const value = add ? [...model.value, item] : [...model.value];
|
|
12410
12417
|
value.splice(index, 1);
|
|
12411
12418
|
model.value = value;
|
|
12419
|
+
} else if (add) {
|
|
12420
|
+
model.value = [...model.value, item];
|
|
12412
12421
|
}
|
|
12413
12422
|
if (props.clearOnSelect) {
|
|
12414
12423
|
search.value = '';
|
|
12415
12424
|
}
|
|
12416
12425
|
} else {
|
|
12426
|
+
const add = set !== false;
|
|
12417
12427
|
model.value = add ? [item] : [];
|
|
12418
|
-
|
|
12419
|
-
|
|
12420
|
-
|
|
12421
|
-
|
|
12422
|
-
|
|
12428
|
+
search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
12429
|
+
|
|
12430
|
+
// watch for search watcher to trigger
|
|
12431
|
+
vue.nextTick(() => {
|
|
12432
|
+
menu.value = false;
|
|
12433
|
+
isPristine.value = true;
|
|
12434
|
+
});
|
|
12423
12435
|
}
|
|
12424
12436
|
}
|
|
12425
12437
|
vue.watch(isFocused, (val, oldVal) => {
|
|
12426
12438
|
if (val === oldVal) return;
|
|
12427
12439
|
if (val) {
|
|
12428
12440
|
isSelecting.value = true;
|
|
12429
|
-
search.value = props.multiple ? '' : String(model.value.at(-1)?.props.title ?? '');
|
|
12441
|
+
search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');
|
|
12430
12442
|
isPristine.value = true;
|
|
12431
12443
|
vue.nextTick(() => isSelecting.value = false);
|
|
12432
12444
|
} else {
|
|
@@ -12456,17 +12468,11 @@
|
|
|
12456
12468
|
});
|
|
12457
12469
|
}
|
|
12458
12470
|
});
|
|
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
|
-
}
|
|
12471
|
+
vue.watch(() => props.items, val => {
|
|
12472
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
12473
|
+
menu.value = true;
|
|
12467
12474
|
});
|
|
12468
12475
|
useRender(() => {
|
|
12469
|
-
const hasChips = !!(props.chips || slots.chip);
|
|
12470
12476
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
12471
12477
|
const isDirty = model.value.length > 0;
|
|
12472
12478
|
const textFieldProps = VTextField.filterProps(props);
|
|
@@ -12484,7 +12490,7 @@
|
|
|
12484
12490
|
"class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
|
|
12485
12491
|
'v-autocomplete--active-menu': menu.value,
|
|
12486
12492
|
'v-autocomplete--chips': !!props.chips,
|
|
12487
|
-
'v-autocomplete--selection-slot': !!
|
|
12493
|
+
'v-autocomplete--selection-slot': !!hasSelectionSlot.value,
|
|
12488
12494
|
'v-autocomplete--selecting-index': selectionIndex.value > -1
|
|
12489
12495
|
}, props.class],
|
|
12490
12496
|
"style": props.style,
|
|
@@ -12539,7 +12545,7 @@
|
|
|
12539
12545
|
ref: itemRef,
|
|
12540
12546
|
key: index,
|
|
12541
12547
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
12542
|
-
onClick: () => select(item)
|
|
12548
|
+
onClick: () => select(item, null)
|
|
12543
12549
|
});
|
|
12544
12550
|
return slots.item?.({
|
|
12545
12551
|
item,
|
|
@@ -12585,8 +12591,8 @@
|
|
|
12585
12591
|
modelValue: true,
|
|
12586
12592
|
'onUpdate:modelValue': undefined
|
|
12587
12593
|
};
|
|
12588
|
-
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
12589
|
-
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
12594
|
+
const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
|
|
12595
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
|
|
12590
12596
|
item,
|
|
12591
12597
|
index,
|
|
12592
12598
|
props: slotProps
|
|
@@ -12599,7 +12605,7 @@
|
|
|
12599
12605
|
"key": item.value,
|
|
12600
12606
|
"class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
|
|
12601
12607
|
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
12602
|
-
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
12608
|
+
}, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
12603
12609
|
"key": "chip",
|
|
12604
12610
|
"closable": props.closableChips,
|
|
12605
12611
|
"size": "small",
|
|
@@ -16038,14 +16044,16 @@
|
|
|
16038
16044
|
return props.multiple ? transformed : transformed[0] ?? null;
|
|
16039
16045
|
});
|
|
16040
16046
|
const form = useForm();
|
|
16041
|
-
const
|
|
16047
|
+
const hasChips = vue.computed(() => !!(props.chips || slots.chip));
|
|
16048
|
+
const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
|
|
16049
|
+
const _search = vue.shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
|
|
16042
16050
|
const search = vue.computed({
|
|
16043
16051
|
get: () => {
|
|
16044
16052
|
return _search.value;
|
|
16045
16053
|
},
|
|
16046
16054
|
set: val => {
|
|
16047
16055
|
_search.value = val ?? '';
|
|
16048
|
-
if (!props.multiple) {
|
|
16056
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
16049
16057
|
model.value = [transformItem$3(props, val)];
|
|
16050
16058
|
}
|
|
16051
16059
|
if (val && props.multiple && props.delimiters?.length) {
|
|
@@ -16076,7 +16084,7 @@
|
|
|
16076
16084
|
emit('update:search', value);
|
|
16077
16085
|
});
|
|
16078
16086
|
vue.watch(model, value => {
|
|
16079
|
-
if (!props.multiple) {
|
|
16087
|
+
if (!props.multiple && !hasSelectionSlot.value) {
|
|
16080
16088
|
_search.value = value[0]?.title ?? '';
|
|
16081
16089
|
}
|
|
16082
16090
|
});
|
|
@@ -16141,6 +16149,10 @@
|
|
|
16141
16149
|
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
16142
16150
|
listRef.value?.focus('next');
|
|
16143
16151
|
}
|
|
16152
|
+
if (e.key === 'Enter' && search.value) {
|
|
16153
|
+
select(transformItem$3(props, search.value));
|
|
16154
|
+
if (hasSelectionSlot.value) _search.value = '';
|
|
16155
|
+
}
|
|
16144
16156
|
if (!props.multiple) return;
|
|
16145
16157
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
16146
16158
|
if (selectionIndex.value < 0) {
|
|
@@ -16174,10 +16186,6 @@
|
|
|
16174
16186
|
vTextFieldRef.value.setSelectionRange(0, 0);
|
|
16175
16187
|
}
|
|
16176
16188
|
}
|
|
16177
|
-
if (e.key === 'Enter' && search.value) {
|
|
16178
|
-
select(transformItem$3(props, search.value));
|
|
16179
|
-
search.value = '';
|
|
16180
|
-
}
|
|
16181
16189
|
}
|
|
16182
16190
|
function onAfterLeave() {
|
|
16183
16191
|
if (isFocused.value) {
|
|
@@ -16188,6 +16196,7 @@
|
|
|
16188
16196
|
/** @param set - null means toggle */
|
|
16189
16197
|
function select(item) {
|
|
16190
16198
|
let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
16199
|
+
if (item.props.disabled) return;
|
|
16191
16200
|
if (props.multiple) {
|
|
16192
16201
|
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
16193
16202
|
const add = set == null ? !~index : set;
|
|
@@ -16204,7 +16213,7 @@
|
|
|
16204
16213
|
} else {
|
|
16205
16214
|
const add = set !== false;
|
|
16206
16215
|
model.value = add ? [item] : [];
|
|
16207
|
-
_search.value = add ? item.title : '';
|
|
16216
|
+
_search.value = add && !hasSelectionSlot.value ? item.title : '';
|
|
16208
16217
|
|
|
16209
16218
|
// watch for search watcher to trigger
|
|
16210
16219
|
vue.nextTick(() => {
|
|
@@ -16236,8 +16245,24 @@
|
|
|
16236
16245
|
return value === displayItems.value[0].value;
|
|
16237
16246
|
})) {
|
|
16238
16247
|
select(displayItems.value[0]);
|
|
16239
|
-
|
|
16240
|
-
|
|
16248
|
+
return;
|
|
16249
|
+
}
|
|
16250
|
+
if (search.value) {
|
|
16251
|
+
if (props.multiple) {
|
|
16252
|
+
select(transformItem$3(props, search.value));
|
|
16253
|
+
return;
|
|
16254
|
+
}
|
|
16255
|
+
if (!hasSelectionSlot.value) return;
|
|
16256
|
+
if (model.value.some(_ref3 => {
|
|
16257
|
+
let {
|
|
16258
|
+
title
|
|
16259
|
+
} = _ref3;
|
|
16260
|
+
return title === search.value;
|
|
16261
|
+
})) {
|
|
16262
|
+
_search.value = '';
|
|
16263
|
+
} else {
|
|
16264
|
+
select(transformItem$3(props, search.value));
|
|
16265
|
+
}
|
|
16241
16266
|
}
|
|
16242
16267
|
});
|
|
16243
16268
|
vue.watch(menu, () => {
|
|
@@ -16248,17 +16273,11 @@
|
|
|
16248
16273
|
});
|
|
16249
16274
|
}
|
|
16250
16275
|
});
|
|
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
|
-
}
|
|
16276
|
+
vue.watch(() => props.items, val => {
|
|
16277
|
+
if (!isFocused.value || !val.length || menu.value) return;
|
|
16278
|
+
menu.value = true;
|
|
16259
16279
|
});
|
|
16260
16280
|
useRender(() => {
|
|
16261
|
-
const hasChips = !!(props.chips || slots.chip);
|
|
16262
16281
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
16263
16282
|
const isDirty = model.value.length > 0;
|
|
16264
16283
|
const textFieldProps = VTextField.filterProps(props);
|
|
@@ -16275,7 +16294,7 @@
|
|
|
16275
16294
|
"class": ['v-combobox', {
|
|
16276
16295
|
'v-combobox--active-menu': menu.value,
|
|
16277
16296
|
'v-combobox--chips': !!props.chips,
|
|
16278
|
-
'v-combobox--selection-slot': !!
|
|
16297
|
+
'v-combobox--selection-slot': !!hasSelectionSlot.value,
|
|
16279
16298
|
'v-combobox--selecting-index': selectionIndex.value > -1,
|
|
16280
16299
|
[`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
|
|
16281
16300
|
}, props.class],
|
|
@@ -16321,12 +16340,12 @@
|
|
|
16321
16340
|
"renderless": true,
|
|
16322
16341
|
"items": displayItems.value
|
|
16323
16342
|
}, {
|
|
16324
|
-
default:
|
|
16343
|
+
default: _ref4 => {
|
|
16325
16344
|
let {
|
|
16326
16345
|
item,
|
|
16327
16346
|
index,
|
|
16328
16347
|
itemRef
|
|
16329
|
-
} =
|
|
16348
|
+
} = _ref4;
|
|
16330
16349
|
const itemProps = vue.mergeProps(item.props, {
|
|
16331
16350
|
ref: itemRef,
|
|
16332
16351
|
key: index,
|
|
@@ -16340,10 +16359,10 @@
|
|
|
16340
16359
|
}) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
|
|
16341
16360
|
"role": "option"
|
|
16342
16361
|
}), {
|
|
16343
|
-
prepend:
|
|
16362
|
+
prepend: _ref5 => {
|
|
16344
16363
|
let {
|
|
16345
16364
|
isSelected
|
|
16346
|
-
} =
|
|
16365
|
+
} = _ref5;
|
|
16347
16366
|
return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
|
|
16348
16367
|
"key": item.value,
|
|
16349
16368
|
"modelValue": isSelected,
|
|
@@ -16377,8 +16396,8 @@
|
|
|
16377
16396
|
modelValue: true,
|
|
16378
16397
|
'onUpdate:modelValue': undefined
|
|
16379
16398
|
};
|
|
16380
|
-
const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
|
|
16381
|
-
const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
|
|
16399
|
+
const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
|
|
16400
|
+
const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
|
|
16382
16401
|
item,
|
|
16383
16402
|
index,
|
|
16384
16403
|
props: slotProps
|
|
@@ -16391,7 +16410,7 @@
|
|
|
16391
16410
|
"key": item.value,
|
|
16392
16411
|
"class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
|
|
16393
16412
|
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
16394
|
-
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
16413
|
+
}, [hasChips.value ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
16395
16414
|
"key": "chip",
|
|
16396
16415
|
"closable": props.closableChips,
|
|
16397
16416
|
"size": "small",
|
|
@@ -17359,10 +17378,28 @@
|
|
|
17359
17378
|
function getDiff(date, comparing, unit) {
|
|
17360
17379
|
const d = new Date(date);
|
|
17361
17380
|
const c = new Date(comparing);
|
|
17362
|
-
|
|
17363
|
-
|
|
17381
|
+
switch (unit) {
|
|
17382
|
+
case 'years':
|
|
17383
|
+
return d.getFullYear() - c.getFullYear();
|
|
17384
|
+
case 'quarters':
|
|
17385
|
+
return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4);
|
|
17386
|
+
case 'months':
|
|
17387
|
+
return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
|
|
17388
|
+
case 'weeks':
|
|
17389
|
+
return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7));
|
|
17390
|
+
case 'days':
|
|
17391
|
+
return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
|
|
17392
|
+
case 'hours':
|
|
17393
|
+
return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60));
|
|
17394
|
+
case 'minutes':
|
|
17395
|
+
return Math.floor((d.getTime() - c.getTime()) / (1000 * 60));
|
|
17396
|
+
case 'seconds':
|
|
17397
|
+
return Math.floor((d.getTime() - c.getTime()) / 1000);
|
|
17398
|
+
default:
|
|
17399
|
+
{
|
|
17400
|
+
return d.getTime() - c.getTime();
|
|
17401
|
+
}
|
|
17364
17402
|
}
|
|
17365
|
-
return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
|
|
17366
17403
|
}
|
|
17367
17404
|
function setHours(date, count) {
|
|
17368
17405
|
const d = new Date(date);
|
|
@@ -20557,7 +20594,7 @@
|
|
|
20557
20594
|
} else {
|
|
20558
20595
|
rangeStop.value = _value;
|
|
20559
20596
|
}
|
|
20560
|
-
const diff = adapter.getDiff(rangeStop.value, rangeStart.value);
|
|
20597
|
+
const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days');
|
|
20561
20598
|
const datesInRange = [rangeStart.value];
|
|
20562
20599
|
for (let i = 1; i < diff; i++) {
|
|
20563
20600
|
const nextDate = adapter.addDays(rangeStart.value, i);
|
|
@@ -24371,6 +24408,8 @@
|
|
|
24371
24408
|
const controlProps = VSelectionControl.filterProps(props);
|
|
24372
24409
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
24373
24410
|
"class": ['v-switch', {
|
|
24411
|
+
'v-switch--flat': props.flat
|
|
24412
|
+
}, {
|
|
24374
24413
|
'v-switch--inset': props.inset
|
|
24375
24414
|
}, {
|
|
24376
24415
|
'v-switch--indeterminate': indeterminate.value
|
|
@@ -25494,8 +25533,8 @@
|
|
|
25494
25533
|
return vue.createVNode(VSheet, {
|
|
25495
25534
|
"height": calcHeight().height,
|
|
25496
25535
|
"density": "comfortable",
|
|
25497
|
-
"style": `
|
|
25498
|
-
"class": "
|
|
25536
|
+
"style": `margin-top: ${calcHeight().margin}`,
|
|
25537
|
+
"class": "v-calendar-internal-event",
|
|
25499
25538
|
"color": props.event?.color ?? undefined,
|
|
25500
25539
|
"rounded": props.event?.first && props.event?.last ? true : props.event?.first ? 't' : props.event?.last ? 'b' : false
|
|
25501
25540
|
}, {
|
|
@@ -25906,6 +25945,106 @@
|
|
|
25906
25945
|
}
|
|
25907
25946
|
});
|
|
25908
25947
|
|
|
25948
|
+
const makeVFabProps = propsFactory({
|
|
25949
|
+
app: Boolean,
|
|
25950
|
+
appear: Boolean,
|
|
25951
|
+
extended: Boolean,
|
|
25952
|
+
location: {
|
|
25953
|
+
type: String,
|
|
25954
|
+
default: 'bottom end'
|
|
25955
|
+
},
|
|
25956
|
+
offset: Boolean,
|
|
25957
|
+
modelValue: {
|
|
25958
|
+
type: Boolean,
|
|
25959
|
+
default: true
|
|
25960
|
+
},
|
|
25961
|
+
...omit(makeVBtnProps({
|
|
25962
|
+
active: true
|
|
25963
|
+
}), ['location']),
|
|
25964
|
+
...makeLayoutItemProps(),
|
|
25965
|
+
...makeTransitionProps({
|
|
25966
|
+
transition: 'fab-transition'
|
|
25967
|
+
})
|
|
25968
|
+
}, 'VFab');
|
|
25969
|
+
const VFab = genericComponent()({
|
|
25970
|
+
name: 'VFab',
|
|
25971
|
+
props: makeVFabProps(),
|
|
25972
|
+
emits: {
|
|
25973
|
+
'update:modelValue': value => true
|
|
25974
|
+
},
|
|
25975
|
+
setup(props, _ref) {
|
|
25976
|
+
let {
|
|
25977
|
+
slots
|
|
25978
|
+
} = _ref;
|
|
25979
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
25980
|
+
const height = vue.shallowRef(56);
|
|
25981
|
+
const layoutItemStyles = vue.ref();
|
|
25982
|
+
const {
|
|
25983
|
+
resizeRef
|
|
25984
|
+
} = useResizeObserver(entries => {
|
|
25985
|
+
if (!entries.length) return;
|
|
25986
|
+
height.value = entries[0].target.clientHeight;
|
|
25987
|
+
});
|
|
25988
|
+
const hasPosition = vue.computed(() => props.app || props.absolute);
|
|
25989
|
+
const position = vue.computed(() => {
|
|
25990
|
+
if (!hasPosition.value) return false;
|
|
25991
|
+
return props.location.split(' ').shift();
|
|
25992
|
+
});
|
|
25993
|
+
const orientation = vue.computed(() => {
|
|
25994
|
+
if (!hasPosition.value) return false;
|
|
25995
|
+
return props.location.split(' ')[1] ?? 'end';
|
|
25996
|
+
});
|
|
25997
|
+
useToggleScope(() => props.app, () => {
|
|
25998
|
+
const layout = useLayoutItem({
|
|
25999
|
+
id: props.name,
|
|
26000
|
+
order: vue.computed(() => parseInt(props.order, 10)),
|
|
26001
|
+
position,
|
|
26002
|
+
layoutSize: height,
|
|
26003
|
+
elementSize: vue.computed(() => height.value + 32),
|
|
26004
|
+
active: vue.computed(() => props.app && model.value),
|
|
26005
|
+
absolute: vue.toRef(props, 'absolute')
|
|
26006
|
+
});
|
|
26007
|
+
vue.watchEffect(() => {
|
|
26008
|
+
layoutItemStyles.value = layout.layoutItemStyles.value;
|
|
26009
|
+
});
|
|
26010
|
+
});
|
|
26011
|
+
const vFabRef = vue.ref();
|
|
26012
|
+
useRender(() => {
|
|
26013
|
+
const btnProps = VBtn.filterProps(props);
|
|
26014
|
+
return vue.createVNode("div", {
|
|
26015
|
+
"ref": vFabRef,
|
|
26016
|
+
"class": ['v-fab', {
|
|
26017
|
+
'v-fab--absolute': props.absolute,
|
|
26018
|
+
'v-fab--app': !!props.app,
|
|
26019
|
+
'v-fab--extended': props.extended,
|
|
26020
|
+
'v-fab--offset': props.offset,
|
|
26021
|
+
[`v-fab--${position.value}`]: hasPosition.value,
|
|
26022
|
+
[`v-fab--${orientation.value}`]: hasPosition.value
|
|
26023
|
+
}, props.class],
|
|
26024
|
+
"style": [props.app ? {
|
|
26025
|
+
...layoutItemStyles.value
|
|
26026
|
+
} : {
|
|
26027
|
+
height: 'inherit',
|
|
26028
|
+
width: undefined
|
|
26029
|
+
}, props.style]
|
|
26030
|
+
}, [vue.createVNode("div", {
|
|
26031
|
+
"class": "v-fab__container"
|
|
26032
|
+
}, [vue.createVNode(MaybeTransition, {
|
|
26033
|
+
"appear": props.appear,
|
|
26034
|
+
"transition": props.transition
|
|
26035
|
+
}, {
|
|
26036
|
+
default: () => [vue.withDirectives(vue.createVNode(VBtn, vue.mergeProps({
|
|
26037
|
+
"ref": resizeRef
|
|
26038
|
+
}, btnProps, {
|
|
26039
|
+
"active": undefined,
|
|
26040
|
+
"location": undefined
|
|
26041
|
+
}), slots), [[vue.vShow, props.active]])]
|
|
26042
|
+
})])]);
|
|
26043
|
+
});
|
|
26044
|
+
return {};
|
|
26045
|
+
}
|
|
26046
|
+
});
|
|
26047
|
+
|
|
25909
26048
|
// Utilities
|
|
25910
26049
|
|
|
25911
26050
|
// Types
|
|
@@ -25944,10 +26083,16 @@
|
|
|
25944
26083
|
default: 4
|
|
25945
26084
|
},
|
|
25946
26085
|
id: String,
|
|
26086
|
+
itemValue: {
|
|
26087
|
+
type: String,
|
|
26088
|
+
default: 'value'
|
|
26089
|
+
},
|
|
25947
26090
|
modelValue: {
|
|
25948
26091
|
type: Array,
|
|
25949
26092
|
default: () => []
|
|
25950
26093
|
},
|
|
26094
|
+
min: [String, Number],
|
|
26095
|
+
max: [String, Number],
|
|
25951
26096
|
padding: {
|
|
25952
26097
|
type: [String, Number],
|
|
25953
26098
|
default: 8
|
|
@@ -25989,6 +26134,7 @@
|
|
|
25989
26134
|
maxY: parseInt(props.height, 10)
|
|
25990
26135
|
};
|
|
25991
26136
|
});
|
|
26137
|
+
const items = vue.computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));
|
|
25992
26138
|
function genBars(values, boundary) {
|
|
25993
26139
|
const {
|
|
25994
26140
|
minX,
|
|
@@ -25997,10 +26143,10 @@
|
|
|
25997
26143
|
maxY
|
|
25998
26144
|
} = boundary;
|
|
25999
26145
|
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;
|
|
26146
|
+
let maxValue = props.max != null ? Number(props.max) : Math.max(...values);
|
|
26147
|
+
let minValue = props.min != null ? Number(props.min) : Math.min(...values);
|
|
26148
|
+
if (minValue > 0 && props.min == null) minValue = 0;
|
|
26149
|
+
if (maxValue < 0 && props.max == null) maxValue = 0;
|
|
26004
26150
|
const gridX = maxX / totalValues;
|
|
26005
26151
|
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
26006
26152
|
const horizonY = maxY - Math.abs(minValue * gridY);
|
|
@@ -26016,7 +26162,7 @@
|
|
|
26016
26162
|
}
|
|
26017
26163
|
const parsedLabels = vue.computed(() => {
|
|
26018
26164
|
const labels = [];
|
|
26019
|
-
const points = genBars(
|
|
26165
|
+
const points = genBars(items.value, boundary.value);
|
|
26020
26166
|
const len = points.length;
|
|
26021
26167
|
for (let i = 0; labels.length < len; i++) {
|
|
26022
26168
|
const item = points[i];
|
|
@@ -26031,7 +26177,7 @@
|
|
|
26031
26177
|
}
|
|
26032
26178
|
return labels;
|
|
26033
26179
|
});
|
|
26034
|
-
const bars = vue.computed(() => genBars(
|
|
26180
|
+
const bars = vue.computed(() => genBars(items.value, boundary.value));
|
|
26035
26181
|
const offsetX = vue.computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);
|
|
26036
26182
|
useRender(() => {
|
|
26037
26183
|
const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
|
|
@@ -26181,8 +26327,8 @@
|
|
|
26181
26327
|
maxY
|
|
26182
26328
|
} = boundary;
|
|
26183
26329
|
const totalValues = values.length;
|
|
26184
|
-
const maxValue = Math.max(...values);
|
|
26185
|
-
const minValue = Math.min(...values);
|
|
26330
|
+
const maxValue = props.max != null ? Number(props.max) : Math.max(...values);
|
|
26331
|
+
const minValue = props.min != null ? Number(props.min) : Math.min(...values);
|
|
26186
26332
|
const gridX = (maxX - minX) / (totalValues - 1);
|
|
26187
26333
|
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
26188
26334
|
return values.map((value, index) => {
|
|
@@ -26209,9 +26355,10 @@
|
|
|
26209
26355
|
maxY: parseInt(props.height, 10) - padding
|
|
26210
26356
|
};
|
|
26211
26357
|
});
|
|
26358
|
+
const items = vue.computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));
|
|
26212
26359
|
const parsedLabels = vue.computed(() => {
|
|
26213
26360
|
const labels = [];
|
|
26214
|
-
const points = genPoints(
|
|
26361
|
+
const points = genPoints(items.value, boundary.value);
|
|
26215
26362
|
const len = points.length;
|
|
26216
26363
|
for (let i = 0; labels.length < len; i++) {
|
|
26217
26364
|
const item = points[i];
|
|
@@ -26255,6 +26402,9 @@
|
|
|
26255
26402
|
}, {
|
|
26256
26403
|
immediate: true
|
|
26257
26404
|
});
|
|
26405
|
+
function genPath$1(fill) {
|
|
26406
|
+
return genPath(genPoints(items.value, boundary.value), props.smooth ? 8 : Number(props.smooth), fill, parseInt(props.height, 10));
|
|
26407
|
+
}
|
|
26258
26408
|
useRender(() => {
|
|
26259
26409
|
const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
|
|
26260
26410
|
return vue.createVNode("svg", {
|
|
@@ -26286,9 +26436,13 @@
|
|
|
26286
26436
|
value: item.value
|
|
26287
26437
|
}) ?? item.value]))]), vue.createVNode("path", {
|
|
26288
26438
|
"ref": path,
|
|
26289
|
-
"d": genPath(
|
|
26439
|
+
"d": genPath$1(props.fill),
|
|
26290
26440
|
"fill": props.fill ? `url(#${id.value})` : 'none',
|
|
26291
26441
|
"stroke": props.fill ? 'none' : `url(#${id.value})`
|
|
26442
|
+
}, null), props.fill && vue.createVNode("path", {
|
|
26443
|
+
"d": genPath$1(false),
|
|
26444
|
+
"fill": "none",
|
|
26445
|
+
"stroke": props.color ?? props.gradient?.[0]
|
|
26292
26446
|
}, null)]);
|
|
26293
26447
|
});
|
|
26294
26448
|
}
|
|
@@ -26338,6 +26492,183 @@
|
|
|
26338
26492
|
}
|
|
26339
26493
|
});
|
|
26340
26494
|
|
|
26495
|
+
const makeVSpeedDialProps = propsFactory({
|
|
26496
|
+
...makeComponentProps(),
|
|
26497
|
+
...makeVMenuProps({
|
|
26498
|
+
offset: 8,
|
|
26499
|
+
minWidth: 0,
|
|
26500
|
+
location: 'top center'
|
|
26501
|
+
}),
|
|
26502
|
+
...makeTransitionProps({
|
|
26503
|
+
transition: 'fade-transition'
|
|
26504
|
+
})
|
|
26505
|
+
}, 'VSpeedDial');
|
|
26506
|
+
const VSpeedDial = genericComponent()({
|
|
26507
|
+
name: 'VSpeedDial',
|
|
26508
|
+
props: makeVSpeedDialProps(),
|
|
26509
|
+
setup(props, _ref) {
|
|
26510
|
+
let {
|
|
26511
|
+
slots
|
|
26512
|
+
} = _ref;
|
|
26513
|
+
useRender(() => {
|
|
26514
|
+
const menuProps = VMenu.filterProps(props);
|
|
26515
|
+
return vue.createVNode(VMenu, vue.mergeProps(menuProps, {
|
|
26516
|
+
"class": props.class,
|
|
26517
|
+
"style": props.style,
|
|
26518
|
+
"contentClass": "v-speed-dial__content"
|
|
26519
|
+
}), {
|
|
26520
|
+
default: () => [vue.createVNode(VDefaultsProvider, {
|
|
26521
|
+
"defaults": {
|
|
26522
|
+
VBtn: {
|
|
26523
|
+
size: 'small'
|
|
26524
|
+
}
|
|
26525
|
+
}
|
|
26526
|
+
}, {
|
|
26527
|
+
default: () => [vue.createVNode(MaybeTransition, {
|
|
26528
|
+
"appear": true,
|
|
26529
|
+
"group": true,
|
|
26530
|
+
"transition": props.transition
|
|
26531
|
+
}, {
|
|
26532
|
+
default: () => [slots.default?.()]
|
|
26533
|
+
})]
|
|
26534
|
+
})]
|
|
26535
|
+
});
|
|
26536
|
+
});
|
|
26537
|
+
return {};
|
|
26538
|
+
}
|
|
26539
|
+
});
|
|
26540
|
+
|
|
26541
|
+
// Types
|
|
26542
|
+
|
|
26543
|
+
// Types
|
|
26544
|
+
|
|
26545
|
+
const makeVEmptyStateProps = propsFactory({
|
|
26546
|
+
actionText: String,
|
|
26547
|
+
bgColor: String,
|
|
26548
|
+
color: String,
|
|
26549
|
+
icon: IconValue,
|
|
26550
|
+
image: String,
|
|
26551
|
+
justify: {
|
|
26552
|
+
type: String,
|
|
26553
|
+
default: 'center'
|
|
26554
|
+
},
|
|
26555
|
+
headline: String,
|
|
26556
|
+
title: String,
|
|
26557
|
+
text: String,
|
|
26558
|
+
textWidth: {
|
|
26559
|
+
type: [Number, String],
|
|
26560
|
+
default: 500
|
|
26561
|
+
},
|
|
26562
|
+
href: String,
|
|
26563
|
+
to: String,
|
|
26564
|
+
...makeComponentProps(),
|
|
26565
|
+
...makeDimensionProps(),
|
|
26566
|
+
...makeSizeProps({
|
|
26567
|
+
size: undefined
|
|
26568
|
+
}),
|
|
26569
|
+
...makeThemeProps()
|
|
26570
|
+
}, 'VEmptyState');
|
|
26571
|
+
const VEmptyState = genericComponent()({
|
|
26572
|
+
name: 'VEmptyState',
|
|
26573
|
+
props: makeVEmptyStateProps(),
|
|
26574
|
+
emits: {
|
|
26575
|
+
'click:action': e => true
|
|
26576
|
+
},
|
|
26577
|
+
setup(props, _ref) {
|
|
26578
|
+
let {
|
|
26579
|
+
emit,
|
|
26580
|
+
slots
|
|
26581
|
+
} = _ref;
|
|
26582
|
+
const {
|
|
26583
|
+
themeClasses
|
|
26584
|
+
} = provideTheme(props);
|
|
26585
|
+
const {
|
|
26586
|
+
backgroundColorClasses,
|
|
26587
|
+
backgroundColorStyles
|
|
26588
|
+
} = useBackgroundColor(vue.toRef(props, 'bgColor'));
|
|
26589
|
+
const {
|
|
26590
|
+
dimensionStyles
|
|
26591
|
+
} = useDimension(props);
|
|
26592
|
+
function onClickAction(e) {
|
|
26593
|
+
emit('click:action', e);
|
|
26594
|
+
}
|
|
26595
|
+
useRender(() => {
|
|
26596
|
+
const hasActions = !!(slots.actions || props.actionText);
|
|
26597
|
+
const hasHeadline = !!(slots.headline || props.headline);
|
|
26598
|
+
const hasTitle = !!(slots.title || props.title);
|
|
26599
|
+
const hasText = !!(slots.text || props.text);
|
|
26600
|
+
const hasMedia = !!(slots.media || props.image || props.icon);
|
|
26601
|
+
const size = props.size || (props.image ? 200 : 96);
|
|
26602
|
+
return vue.createVNode("div", {
|
|
26603
|
+
"class": ['v-empty-state', {
|
|
26604
|
+
[`v-empty-state--${props.justify}`]: true
|
|
26605
|
+
}, themeClasses.value, backgroundColorClasses.value, props.class],
|
|
26606
|
+
"style": [backgroundColorStyles.value, dimensionStyles.value, props.style]
|
|
26607
|
+
}, [hasMedia && vue.createVNode("div", {
|
|
26608
|
+
"key": "media",
|
|
26609
|
+
"class": "v-empty-state__media"
|
|
26610
|
+
}, [!slots.media ? vue.createVNode(vue.Fragment, null, [props.image ? vue.createVNode(VImg, {
|
|
26611
|
+
"key": "image",
|
|
26612
|
+
"src": props.image,
|
|
26613
|
+
"height": size
|
|
26614
|
+
}, null) : props.icon ? vue.createVNode(VIcon, {
|
|
26615
|
+
"key": "icon",
|
|
26616
|
+
"size": size,
|
|
26617
|
+
"icon": props.icon
|
|
26618
|
+
}, null) : undefined]) : vue.createVNode(VDefaultsProvider, {
|
|
26619
|
+
"key": "media-defaults",
|
|
26620
|
+
"defaults": {
|
|
26621
|
+
VImg: {
|
|
26622
|
+
src: props.image,
|
|
26623
|
+
height: size
|
|
26624
|
+
},
|
|
26625
|
+
VIcon: {
|
|
26626
|
+
size,
|
|
26627
|
+
icon: props.icon
|
|
26628
|
+
}
|
|
26629
|
+
}
|
|
26630
|
+
}, {
|
|
26631
|
+
default: () => [slots.media()]
|
|
26632
|
+
})]), hasHeadline && vue.createVNode("div", {
|
|
26633
|
+
"key": "headline",
|
|
26634
|
+
"class": "v-empty-state__headline"
|
|
26635
|
+
}, [slots.headline?.() ?? props.headline]), hasTitle && vue.createVNode("div", {
|
|
26636
|
+
"key": "title",
|
|
26637
|
+
"class": "v-empty-state__title"
|
|
26638
|
+
}, [slots.title?.() ?? props.title]), hasText && vue.createVNode("div", {
|
|
26639
|
+
"key": "text",
|
|
26640
|
+
"class": "v-empty-state__text",
|
|
26641
|
+
"style": {
|
|
26642
|
+
maxWidth: convertToUnit(props.textWidth)
|
|
26643
|
+
}
|
|
26644
|
+
}, [slots.text?.() ?? props.text]), slots.default && vue.createVNode("div", {
|
|
26645
|
+
"key": "content",
|
|
26646
|
+
"class": "v-empty-state__content"
|
|
26647
|
+
}, [slots.default()]), hasActions && vue.createVNode("div", {
|
|
26648
|
+
"key": "actions",
|
|
26649
|
+
"class": "v-empty-state__actions"
|
|
26650
|
+
}, [vue.createVNode(VDefaultsProvider, {
|
|
26651
|
+
"defaults": {
|
|
26652
|
+
VBtn: {
|
|
26653
|
+
class: 'v-empty-state__action-btn',
|
|
26654
|
+
color: props.color,
|
|
26655
|
+
text: props.actionText
|
|
26656
|
+
}
|
|
26657
|
+
}
|
|
26658
|
+
}, {
|
|
26659
|
+
default: () => [slots.actions?.({
|
|
26660
|
+
props: {
|
|
26661
|
+
onClick: onClickAction
|
|
26662
|
+
}
|
|
26663
|
+
}) ?? vue.createVNode(VBtn, {
|
|
26664
|
+
"onClick": onClickAction
|
|
26665
|
+
}, null)]
|
|
26666
|
+
})])]);
|
|
26667
|
+
});
|
|
26668
|
+
return {};
|
|
26669
|
+
}
|
|
26670
|
+
});
|
|
26671
|
+
|
|
26341
26672
|
var components = /*#__PURE__*/Object.freeze({
|
|
26342
26673
|
__proto__: null,
|
|
26343
26674
|
VAlert: VAlert,
|
|
@@ -26407,12 +26738,14 @@
|
|
|
26407
26738
|
VDialogTopTransition: VDialogTopTransition,
|
|
26408
26739
|
VDialogTransition: VDialogTransition,
|
|
26409
26740
|
VDivider: VDivider,
|
|
26741
|
+
VEmptyState: VEmptyState,
|
|
26410
26742
|
VExpandTransition: VExpandTransition,
|
|
26411
26743
|
VExpandXTransition: VExpandXTransition,
|
|
26412
26744
|
VExpansionPanel: VExpansionPanel,
|
|
26413
26745
|
VExpansionPanelText: VExpansionPanelText,
|
|
26414
26746
|
VExpansionPanelTitle: VExpansionPanelTitle,
|
|
26415
26747
|
VExpansionPanels: VExpansionPanels,
|
|
26748
|
+
VFab: VFab,
|
|
26416
26749
|
VFabTransition: VFabTransition,
|
|
26417
26750
|
VFadeTransition: VFadeTransition,
|
|
26418
26751
|
VField: VField,
|
|
@@ -26482,6 +26815,7 @@
|
|
|
26482
26815
|
VSnackbar: VSnackbar,
|
|
26483
26816
|
VSpacer: VSpacer,
|
|
26484
26817
|
VSparkline: VSparkline,
|
|
26818
|
+
VSpeedDial: VSpeedDial,
|
|
26485
26819
|
VStepper: VStepper,
|
|
26486
26820
|
VStepperActions: VStepperActions,
|
|
26487
26821
|
VStepperHeader: VStepperHeader,
|
|
@@ -26729,7 +27063,7 @@
|
|
|
26729
27063
|
goTo
|
|
26730
27064
|
};
|
|
26731
27065
|
}
|
|
26732
|
-
const version$1 = "3.5.
|
|
27066
|
+
const version$1 = "3.5.8";
|
|
26733
27067
|
createVuetify$1.version = version$1;
|
|
26734
27068
|
|
|
26735
27069
|
// Vue's inject() can only be used in setup
|
|
@@ -26743,7 +27077,7 @@
|
|
|
26743
27077
|
|
|
26744
27078
|
/* eslint-disable local-rules/sort-imports */
|
|
26745
27079
|
|
|
26746
|
-
const version = "3.5.
|
|
27080
|
+
const version = "3.5.8";
|
|
26747
27081
|
|
|
26748
27082
|
/* eslint-disable local-rules/sort-imports */
|
|
26749
27083
|
|