vuetify 3.8.8 → 3.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/dist/json/attributes.json +3413 -3405
- package/dist/json/importMap-labs.json +38 -38
- package/dist/json/importMap.json +146 -146
- package/dist/json/tags.json +2 -0
- package/dist/json/web-types.json +6357 -6339
- package/dist/vuetify-labs.cjs +210 -103
- package/dist/vuetify-labs.css +3832 -3823
- package/dist/vuetify-labs.d.ts +80 -58
- package/dist/vuetify-labs.esm.js +211 -104
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +210 -103
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +191 -83
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3244 -3235
- package/dist/vuetify.d.ts +70 -58
- package/dist/vuetify.esm.js +192 -84
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +191 -83
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1002 -993
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBtn/VBtn.css +3 -0
- package/lib/components/VBtn/VBtn.sass +3 -0
- package/lib/components/VBtnGroup/VBtnGroup.css +2 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +2 -1
- package/lib/components/VDataTable/VDataTable.css +6 -3
- package/lib/components/VDataTable/VDataTable.sass +4 -2
- package/lib/components/VDataTable/VDataTableColumn.js +1 -0
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableFooter.js +3 -1
- package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +8 -1
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +19 -13
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.js +1 -3
- package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
- package/lib/components/VField/VField.js +10 -2
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.js +8 -3
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VList/VListChildren.js +4 -3
- package/lib/components/VList/VListChildren.js.map +1 -1
- package/lib/components/VList/VListGroup.d.ts +10 -0
- package/lib/components/VList/VListGroup.js +2 -2
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VList/VListItem.css +2 -0
- package/lib/components/VList/VListItem.sass +2 -0
- package/lib/components/VList/_variables.scss +1 -0
- package/lib/components/VNumberInput/VNumberInput.d.ts +5 -0
- package/lib/components/VNumberInput/VNumberInput.js +7 -11
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +22 -3
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +6 -5
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.js +1 -1
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.css +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.sass +3 -1
- package/lib/components/VTextField/VTextField.js +9 -8
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.js +4 -4
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/composables/autofocus.d.ts +7 -0
- package/lib/composables/autofocus.js +10 -0
- package/lib/composables/autofocus.js.map +1 -0
- package/lib/composables/date/adapters/vuetify.js +1 -1
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/date/date.d.ts +1 -4
- package/lib/composables/date/date.js +13 -14
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/fileDrop.d.ts +4 -0
- package/lib/composables/fileDrop.js +50 -0
- package/lib/composables/fileDrop.js.map +1 -0
- package/lib/composables/group.js +1 -0
- package/lib/composables/group.js.map +1 -1
- package/lib/composables/hotkey.d.ts +9 -0
- package/lib/composables/hotkey.js +131 -0
- package/lib/composables/hotkey.js.map +1 -0
- package/lib/composables/icons.d.ts +6 -0
- package/lib/composables/icons.js.map +1 -1
- package/lib/composables/intersectionObserver.js +2 -2
- package/lib/composables/intersectionObserver.js.map +1 -1
- package/lib/composables/list-items.js +2 -2
- package/lib/composables/list-items.js.map +1 -1
- package/lib/composables/selectLink.js +2 -2
- package/lib/composables/selectLink.js.map +1 -1
- package/lib/composables/transition.js +3 -3
- package/lib/composables/transition.js.map +1 -1
- package/lib/entry-bundler.d.ts +0 -3
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +60 -58
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/iconsets/fa.js +3 -1
- package/lib/iconsets/fa.js.map +1 -1
- package/lib/iconsets/fa4.js +3 -1
- package/lib/iconsets/fa4.js.map +1 -1
- package/lib/iconsets/md.js +3 -1
- package/lib/iconsets/md.js.map +1 -1
- package/lib/iconsets/mdi-svg.js +3 -1
- package/lib/iconsets/mdi-svg.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.js +3 -8
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +5 -0
- package/lib/labs/VDateInput/VDateInput.js +7 -10
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.js +7 -3
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUploadItem.js +1 -0
- package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
- package/lib/labs/VTimePicker/VTimePickerClock.js +3 -1
- package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
- package/lib/labs/VTreeview/VTreeviewChildren.js +2 -1
- package/lib/labs/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/labs/VTreeview/VTreeviewGroup.d.ts +10 -0
- package/lib/labs/VTreeview/VTreeviewItem.js +1 -0
- package/lib/labs/VTreeview/VTreeviewItem.js.map +1 -1
- package/lib/labs/entry-bundler.d.ts +0 -3
- package/lib/util/helpers.d.ts +4 -1
- package/lib/util/helpers.js +7 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +8 -8
package/dist/vuetify-labs.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.8.
|
|
2
|
+
* Vuetify v3.8.10
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -607,13 +607,19 @@
|
|
|
607
607
|
return cleanText;
|
|
608
608
|
}
|
|
609
609
|
function camelizeProps(props) {
|
|
610
|
-
if (!props) return;
|
|
611
610
|
const out = {};
|
|
612
611
|
for (const prop in props) {
|
|
613
612
|
out[vue.camelize(prop)] = props[prop];
|
|
614
613
|
}
|
|
615
614
|
return out;
|
|
616
615
|
}
|
|
616
|
+
function onlyDefinedProps(props) {
|
|
617
|
+
const booleanAttributes = ['checked', 'disabled'];
|
|
618
|
+
return Object.fromEntries(Object.entries(props).filter(_ref => {
|
|
619
|
+
let [key, v] = _ref;
|
|
620
|
+
return booleanAttributes.includes(key) ? !!v : v !== undefined;
|
|
621
|
+
}));
|
|
622
|
+
}
|
|
617
623
|
|
|
618
624
|
// Utilities
|
|
619
625
|
const block = ['top', 'bottom'];
|
|
@@ -938,7 +944,7 @@
|
|
|
938
944
|
// WoB should always return negative value.
|
|
939
945
|
|
|
940
946
|
const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
|
|
941
|
-
outputContrast = SAPC > -
|
|
947
|
+
outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
|
|
942
948
|
}
|
|
943
949
|
return outputContrast * 100;
|
|
944
950
|
}
|
|
@@ -3326,10 +3332,10 @@
|
|
|
3326
3332
|
} = isObject(transition) ? transition : {};
|
|
3327
3333
|
let transitionProps;
|
|
3328
3334
|
if (isObject(transition)) {
|
|
3329
|
-
transitionProps = vue.mergeProps(customProps,
|
|
3335
|
+
transitionProps = vue.mergeProps(customProps, onlyDefinedProps({
|
|
3330
3336
|
disabled,
|
|
3331
3337
|
group
|
|
3332
|
-
})
|
|
3338
|
+
}), rest);
|
|
3333
3339
|
} else {
|
|
3334
3340
|
transitionProps = vue.mergeProps({
|
|
3335
3341
|
name: disabled || !transition ? '' : transition
|
|
@@ -4398,6 +4404,7 @@
|
|
|
4398
4404
|
} else {
|
|
4399
4405
|
const isSelected = selected.value.includes(id);
|
|
4400
4406
|
if (props.mandatory && isSelected) return;
|
|
4407
|
+
if (!isSelected && !value) return;
|
|
4401
4408
|
selected.value = value ?? !isSelected ? [id] : [];
|
|
4402
4409
|
}
|
|
4403
4410
|
}
|
|
@@ -4832,7 +4839,7 @@
|
|
|
4832
4839
|
const observer = new IntersectionObserver(entries => {
|
|
4833
4840
|
isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
|
|
4834
4841
|
}, options);
|
|
4835
|
-
vue.
|
|
4842
|
+
vue.onScopeDispose(() => {
|
|
4836
4843
|
observer.disconnect();
|
|
4837
4844
|
});
|
|
4838
4845
|
vue.watch(intersectionRef, (newValue, oldValue) => {
|
|
@@ -5363,9 +5370,9 @@
|
|
|
5363
5370
|
|
|
5364
5371
|
function useSelectLink(link, select) {
|
|
5365
5372
|
vue.watch(() => link.isActive?.value, isActive => {
|
|
5366
|
-
if (link.isLink.value && isActive && select) {
|
|
5373
|
+
if (link.isLink.value && isActive != null && select) {
|
|
5367
5374
|
vue.nextTick(() => {
|
|
5368
|
-
select(
|
|
5375
|
+
select(isActive);
|
|
5369
5376
|
});
|
|
5370
5377
|
}
|
|
5371
5378
|
}, {
|
|
@@ -8979,6 +8986,7 @@
|
|
|
8979
8986
|
type: IconValue,
|
|
8980
8987
|
default: '$expand'
|
|
8981
8988
|
},
|
|
8989
|
+
rawId: [String, Number],
|
|
8982
8990
|
prependIcon: IconValue,
|
|
8983
8991
|
appendIcon: IconValue,
|
|
8984
8992
|
fluid: Boolean,
|
|
@@ -9000,13 +9008,12 @@
|
|
|
9000
9008
|
open,
|
|
9001
9009
|
id: _id
|
|
9002
9010
|
} = useNestedItem(() => props.value, true);
|
|
9003
|
-
const id = vue.computed(() => `v-list-group--id-${String(_id.value)}`);
|
|
9011
|
+
const id = vue.computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
|
|
9004
9012
|
const list = useList();
|
|
9005
9013
|
const {
|
|
9006
9014
|
isBooted
|
|
9007
9015
|
} = useSsrBoot();
|
|
9008
9016
|
function onClick(e) {
|
|
9009
|
-
e.stopPropagation();
|
|
9010
9017
|
if (['INPUT', 'TEXTAREA'].includes(e.target?.tagName)) return;
|
|
9011
9018
|
open(!isOpen.value, e);
|
|
9012
9019
|
}
|
|
@@ -9524,9 +9531,10 @@
|
|
|
9524
9531
|
}) : undefined
|
|
9525
9532
|
};
|
|
9526
9533
|
const listGroupProps = VListGroup.filterProps(itemProps);
|
|
9527
|
-
return children ? vue.createVNode(VListGroup, vue.mergeProps({
|
|
9528
|
-
"value": itemProps?.value
|
|
9529
|
-
|
|
9534
|
+
return children ? vue.createVNode(VListGroup, vue.mergeProps(listGroupProps, {
|
|
9535
|
+
"value": props.returnObject ? item : itemProps?.value,
|
|
9536
|
+
"rawId": itemProps?.value
|
|
9537
|
+
}), {
|
|
9530
9538
|
activator: _ref3 => {
|
|
9531
9539
|
let {
|
|
9532
9540
|
props: activatorProps
|
|
@@ -9590,7 +9598,7 @@
|
|
|
9590
9598
|
const _props = {
|
|
9591
9599
|
title,
|
|
9592
9600
|
value,
|
|
9593
|
-
...
|
|
9601
|
+
...itemProps
|
|
9594
9602
|
};
|
|
9595
9603
|
return {
|
|
9596
9604
|
title: String(_props.title ?? ''),
|
|
@@ -11950,7 +11958,11 @@
|
|
|
11950
11958
|
default: slots.loader
|
|
11951
11959
|
}), hasPrepend && vue.createElementVNode("div", {
|
|
11952
11960
|
"key": "prepend",
|
|
11953
|
-
"class": "v-field__prepend-inner"
|
|
11961
|
+
"class": "v-field__prepend-inner",
|
|
11962
|
+
"onMousedown": e => {
|
|
11963
|
+
e.preventDefault();
|
|
11964
|
+
e.stopPropagation();
|
|
11965
|
+
}
|
|
11954
11966
|
}, [props.prependInnerIcon && vue.createVNode(InputIcon, {
|
|
11955
11967
|
"key": "prepend-icon",
|
|
11956
11968
|
"name": "prependInner",
|
|
@@ -12019,7 +12031,11 @@
|
|
|
12019
12031
|
})]), [[vue.vShow, props.dirty]])]
|
|
12020
12032
|
}), hasAppend && vue.createElementVNode("div", {
|
|
12021
12033
|
"key": "append",
|
|
12022
|
-
"class": "v-field__append-inner"
|
|
12034
|
+
"class": "v-field__append-inner",
|
|
12035
|
+
"onMousedown": e => {
|
|
12036
|
+
e.preventDefault();
|
|
12037
|
+
e.stopPropagation();
|
|
12038
|
+
}
|
|
12023
12039
|
}, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
|
|
12024
12040
|
"key": "append-icon",
|
|
12025
12041
|
"name": "appendInner",
|
|
@@ -12054,6 +12070,16 @@
|
|
|
12054
12070
|
}
|
|
12055
12071
|
});
|
|
12056
12072
|
|
|
12073
|
+
function useAutofocus(props) {
|
|
12074
|
+
function onIntersect(isIntersecting, entries) {
|
|
12075
|
+
if (!props.autofocus || !isIntersecting) return;
|
|
12076
|
+
entries[0].target?.focus?.();
|
|
12077
|
+
}
|
|
12078
|
+
return {
|
|
12079
|
+
onIntersect
|
|
12080
|
+
};
|
|
12081
|
+
}
|
|
12082
|
+
|
|
12057
12083
|
// Types
|
|
12058
12084
|
|
|
12059
12085
|
const activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
|
|
@@ -12100,6 +12126,9 @@
|
|
|
12100
12126
|
focus,
|
|
12101
12127
|
blur
|
|
12102
12128
|
} = useFocus(props);
|
|
12129
|
+
const {
|
|
12130
|
+
onIntersect
|
|
12131
|
+
} = useAutofocus(props);
|
|
12103
12132
|
const counterValue = vue.computed(() => {
|
|
12104
12133
|
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;
|
|
12105
12134
|
});
|
|
@@ -12109,19 +12138,17 @@
|
|
|
12109
12138
|
return props.counter;
|
|
12110
12139
|
});
|
|
12111
12140
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
12112
|
-
function onIntersect(isIntersecting, entries) {
|
|
12113
|
-
if (!props.autofocus || !isIntersecting) return;
|
|
12114
|
-
entries[0].target?.focus?.();
|
|
12115
|
-
}
|
|
12116
12141
|
const vInputRef = vue.ref();
|
|
12117
12142
|
const vFieldRef = vue.ref();
|
|
12118
12143
|
const inputRef = vue.ref();
|
|
12119
12144
|
const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
|
|
12120
12145
|
function onFocus() {
|
|
12121
|
-
if (inputRef.value !== document.activeElement) {
|
|
12122
|
-
inputRef.value?.focus();
|
|
12123
|
-
}
|
|
12124
12146
|
if (!isFocused.value) focus();
|
|
12147
|
+
vue.nextTick(() => {
|
|
12148
|
+
if (inputRef.value !== document.activeElement) {
|
|
12149
|
+
inputRef.value?.focus();
|
|
12150
|
+
}
|
|
12151
|
+
});
|
|
12125
12152
|
}
|
|
12126
12153
|
function onControlMousedown(e) {
|
|
12127
12154
|
emit('mousedown:control', e);
|
|
@@ -12130,7 +12157,6 @@
|
|
|
12130
12157
|
e.preventDefault();
|
|
12131
12158
|
}
|
|
12132
12159
|
function onControlClick(e) {
|
|
12133
|
-
onFocus();
|
|
12134
12160
|
emit('click:control', e);
|
|
12135
12161
|
}
|
|
12136
12162
|
function onClear(e, reset) {
|
|
@@ -13056,6 +13082,7 @@
|
|
|
13056
13082
|
index,
|
|
13057
13083
|
itemRef
|
|
13058
13084
|
} = _ref2;
|
|
13085
|
+
const camelizedProps = camelizeProps(item.props);
|
|
13059
13086
|
const itemProps = vue.mergeProps(item.props, {
|
|
13060
13087
|
ref: itemRef,
|
|
13061
13088
|
key: item.value,
|
|
@@ -13077,10 +13104,10 @@
|
|
|
13077
13104
|
"modelValue": isSelected,
|
|
13078
13105
|
"ripple": false,
|
|
13079
13106
|
"tabindex": "-1"
|
|
13080
|
-
}, null) : undefined,
|
|
13081
|
-
"image":
|
|
13082
|
-
}, null),
|
|
13083
|
-
"icon":
|
|
13107
|
+
}, null) : undefined, camelizedProps.prependAvatar && vue.createVNode(VAvatar, {
|
|
13108
|
+
"image": camelizedProps.prependAvatar
|
|
13109
|
+
}, null), camelizedProps.prependIcon && vue.createVNode(VIcon, {
|
|
13110
|
+
"icon": camelizedProps.prependIcon
|
|
13084
13111
|
}, null)]);
|
|
13085
13112
|
}
|
|
13086
13113
|
});
|
|
@@ -16259,7 +16286,7 @@
|
|
|
16259
16286
|
default: () => [vue.withDirectives(vue.createElementVNode("div", {
|
|
16260
16287
|
"class": "v-slider-thumb__label-container"
|
|
16261
16288
|
}, [vue.createElementVNode("div", {
|
|
16262
|
-
"class": vue.normalizeClass(['v-slider-thumb__label'])
|
|
16289
|
+
"class": vue.normalizeClass(['v-slider-thumb__label', textColorClasses.value])
|
|
16263
16290
|
}, [vue.createElementVNode("div", null, [slots['thumb-label']?.({
|
|
16264
16291
|
modelValue: props.modelValue
|
|
16265
16292
|
}) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
|
|
@@ -17528,7 +17555,7 @@
|
|
|
17528
17555
|
const yearStart = new Date(year, 0, 1);
|
|
17529
17556
|
const size = firstWeekSize(year);
|
|
17530
17557
|
const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
|
|
17531
|
-
return 1 + getDiff(date, d1w1, 'weeks');
|
|
17558
|
+
return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
|
|
17532
17559
|
}
|
|
17533
17560
|
function getDate(date) {
|
|
17534
17561
|
return date.getDate();
|
|
@@ -17831,6 +17858,18 @@
|
|
|
17831
17858
|
instance: createInstance(_options, locale)
|
|
17832
17859
|
};
|
|
17833
17860
|
}
|
|
17861
|
+
function createDateRange(adapter, start, stop) {
|
|
17862
|
+
const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
|
|
17863
|
+
const datesInRange = [start];
|
|
17864
|
+
for (let i = 1; i < diff; i++) {
|
|
17865
|
+
const nextDate = adapter.addDays(start, i);
|
|
17866
|
+
datesInRange.push(nextDate);
|
|
17867
|
+
}
|
|
17868
|
+
if (stop) {
|
|
17869
|
+
datesInRange.push(adapter.endOfDay(stop));
|
|
17870
|
+
}
|
|
17871
|
+
return datesInRange;
|
|
17872
|
+
}
|
|
17834
17873
|
function createInstance(options, locale) {
|
|
17835
17874
|
const instance = vue.reactive(typeof options.adapter === 'function'
|
|
17836
17875
|
// eslint-disable-next-line new-cap
|
|
@@ -17841,20 +17880,7 @@
|
|
|
17841
17880
|
vue.watch(locale.current, value => {
|
|
17842
17881
|
instance.locale = options.locale[value] ?? value ?? instance.locale;
|
|
17843
17882
|
});
|
|
17844
|
-
return
|
|
17845
|
-
createDateRange(start, stop) {
|
|
17846
|
-
const diff = instance.getDiff(stop ?? start, start, 'days');
|
|
17847
|
-
const datesInRange = [start];
|
|
17848
|
-
for (let i = 1; i < diff; i++) {
|
|
17849
|
-
const nextDate = instance.addDays(start, i);
|
|
17850
|
-
datesInRange.push(nextDate);
|
|
17851
|
-
}
|
|
17852
|
-
if (stop) {
|
|
17853
|
-
datesInRange.push(instance.endOfDay(stop));
|
|
17854
|
-
}
|
|
17855
|
-
return datesInRange;
|
|
17856
|
-
}
|
|
17857
|
-
});
|
|
17883
|
+
return instance;
|
|
17858
17884
|
}
|
|
17859
17885
|
function useDate() {
|
|
17860
17886
|
const options = vue.inject(DateOptionsSymbol);
|
|
@@ -19943,7 +19969,9 @@
|
|
|
19943
19969
|
"class": "v-data-table-footer"
|
|
19944
19970
|
}, [slots.prepend?.(), vue.createElementVNode("div", {
|
|
19945
19971
|
"class": "v-data-table-footer__items-per-page"
|
|
19946
|
-
}, [vue.createElementVNode("span",
|
|
19972
|
+
}, [vue.createElementVNode("span", {
|
|
19973
|
+
"aria-label": t(props.itemsPerPageText)
|
|
19974
|
+
}, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
|
|
19947
19975
|
"items": itemsPerPageOptions.value,
|
|
19948
19976
|
"modelValue": itemsPerPage.value,
|
|
19949
19977
|
"onUpdate:modelValue": v => setItemsPerPage(Number(v)),
|
|
@@ -19995,6 +20023,7 @@
|
|
|
19995
20023
|
} = _ref;
|
|
19996
20024
|
const Tag = props.tag ?? 'td';
|
|
19997
20025
|
return vue.createVNode(Tag, {
|
|
20026
|
+
"tabindex": "0",
|
|
19998
20027
|
"class": vue.normalizeClass(['v-data-table__td', {
|
|
19999
20028
|
'v-data-table-column--fixed': props.fixed,
|
|
20000
20029
|
'v-data-table-column--last-fixed': props.lastFixed,
|
|
@@ -20339,6 +20368,11 @@
|
|
|
20339
20368
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
|
20340
20369
|
};
|
|
20341
20370
|
}
|
|
20371
|
+
function handleEnterKeyPress(event, column) {
|
|
20372
|
+
if (event.key === 'Enter' && !props.disableSort) {
|
|
20373
|
+
toggleSort(column);
|
|
20374
|
+
}
|
|
20375
|
+
}
|
|
20342
20376
|
function getSortIcon(column) {
|
|
20343
20377
|
const item = sortBy.value.find(item => item.key === column.key);
|
|
20344
20378
|
if (!item) return props.sortAscIcon;
|
|
@@ -20395,7 +20429,9 @@
|
|
|
20395
20429
|
"nowrap": column.nowrap,
|
|
20396
20430
|
"lastFixed": column.lastFixed,
|
|
20397
20431
|
"noPadding": noPadding
|
|
20398
|
-
}, headerProps
|
|
20432
|
+
}, headerProps, {
|
|
20433
|
+
"onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
|
|
20434
|
+
}), {
|
|
20399
20435
|
default: () => {
|
|
20400
20436
|
const columnSlotName = `header.${column.key}`;
|
|
20401
20437
|
const columnSlotProps = {
|
|
@@ -22248,7 +22284,7 @@
|
|
|
22248
22284
|
} else {
|
|
22249
22285
|
rangeStop.value = adapter.endOfDay(_value);
|
|
22250
22286
|
}
|
|
22251
|
-
model.value =
|
|
22287
|
+
model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
|
|
22252
22288
|
} else {
|
|
22253
22289
|
rangeStart.value = value;
|
|
22254
22290
|
rangeStop.value = undefined;
|
|
@@ -22467,9 +22503,7 @@
|
|
|
22467
22503
|
const yearRef = templateRef();
|
|
22468
22504
|
vue.onMounted(async () => {
|
|
22469
22505
|
await vue.nextTick();
|
|
22470
|
-
yearRef.el?.
|
|
22471
|
-
block: 'center'
|
|
22472
|
-
});
|
|
22506
|
+
yearRef.el?.focus();
|
|
22473
22507
|
});
|
|
22474
22508
|
function isYearAllowed(year) {
|
|
22475
22509
|
if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
|
|
@@ -22605,8 +22639,16 @@
|
|
|
22605
22639
|
return value && adapter.isValid(value) ? value : today;
|
|
22606
22640
|
});
|
|
22607
22641
|
const headerColor = vue.toRef(() => props.headerColor ?? props.color);
|
|
22608
|
-
const
|
|
22609
|
-
const
|
|
22642
|
+
const _month = useProxiedModel(props, 'month');
|
|
22643
|
+
const month = vue.computed({
|
|
22644
|
+
get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),
|
|
22645
|
+
set: v => _month.value = v
|
|
22646
|
+
});
|
|
22647
|
+
const _year = useProxiedModel(props, 'year');
|
|
22648
|
+
const year = vue.computed({
|
|
22649
|
+
get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),
|
|
22650
|
+
set: v => _year.value = v
|
|
22651
|
+
});
|
|
22610
22652
|
const isReversing = vue.shallowRef(false);
|
|
22611
22653
|
const header = vue.computed(() => {
|
|
22612
22654
|
if (props.multiple && model.value.length > 1) {
|
|
@@ -22690,9 +22732,9 @@
|
|
|
22690
22732
|
} else {
|
|
22691
22733
|
year.value++;
|
|
22692
22734
|
month.value = 0;
|
|
22693
|
-
onUpdateYear(
|
|
22735
|
+
onUpdateYear();
|
|
22694
22736
|
}
|
|
22695
|
-
onUpdateMonth(
|
|
22737
|
+
onUpdateMonth();
|
|
22696
22738
|
}
|
|
22697
22739
|
function onClickPrev() {
|
|
22698
22740
|
if (month.value > 0) {
|
|
@@ -22700,9 +22742,9 @@
|
|
|
22700
22742
|
} else {
|
|
22701
22743
|
year.value--;
|
|
22702
22744
|
month.value = 11;
|
|
22703
|
-
onUpdateYear(
|
|
22745
|
+
onUpdateYear();
|
|
22704
22746
|
}
|
|
22705
|
-
onUpdateMonth(
|
|
22747
|
+
onUpdateMonth();
|
|
22706
22748
|
}
|
|
22707
22749
|
function onClickDate() {
|
|
22708
22750
|
viewMode.value = 'month';
|
|
@@ -22713,13 +22755,11 @@
|
|
|
22713
22755
|
function onClickYear() {
|
|
22714
22756
|
viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
|
|
22715
22757
|
}
|
|
22716
|
-
function onUpdateMonth(
|
|
22758
|
+
function onUpdateMonth() {
|
|
22717
22759
|
if (viewMode.value === 'months') onClickMonth();
|
|
22718
|
-
emit('update:month', value);
|
|
22719
22760
|
}
|
|
22720
|
-
function onUpdateYear(
|
|
22761
|
+
function onUpdateYear() {
|
|
22721
22762
|
if (viewMode.value === 'year') onClickYear();
|
|
22722
|
-
emit('update:year', value);
|
|
22723
22763
|
}
|
|
22724
22764
|
vue.watch(model, (val, oldVal) => {
|
|
22725
22765
|
const arrBefore = wrapInArray(oldVal);
|
|
@@ -22731,11 +22771,11 @@
|
|
|
22731
22771
|
const newYear = adapter.getYear(after);
|
|
22732
22772
|
if (newMonth !== month.value) {
|
|
22733
22773
|
month.value = newMonth;
|
|
22734
|
-
onUpdateMonth(
|
|
22774
|
+
onUpdateMonth();
|
|
22735
22775
|
}
|
|
22736
22776
|
if (newYear !== year.value) {
|
|
22737
22777
|
year.value = newYear;
|
|
22738
|
-
onUpdateYear(
|
|
22778
|
+
onUpdateYear();
|
|
22739
22779
|
}
|
|
22740
22780
|
isReversing.value = adapter.isBefore(before, after);
|
|
22741
22781
|
});
|
|
@@ -23335,6 +23375,56 @@
|
|
|
23335
23375
|
|
|
23336
23376
|
// Types
|
|
23337
23377
|
|
|
23378
|
+
function useFileDrop() {
|
|
23379
|
+
function hasFilesOrFolders(e) {
|
|
23380
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
|
23381
|
+
return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
|
|
23382
|
+
}
|
|
23383
|
+
async function handleDrop(e) {
|
|
23384
|
+
const result = [];
|
|
23385
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
|
23386
|
+
if (entries.length) {
|
|
23387
|
+
for (const entry of entries) {
|
|
23388
|
+
const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
|
|
23389
|
+
result.push(...files.map(x => x.file));
|
|
23390
|
+
}
|
|
23391
|
+
} else {
|
|
23392
|
+
result.push(...[...(e.dataTransfer?.files ?? [])]);
|
|
23393
|
+
}
|
|
23394
|
+
return result;
|
|
23395
|
+
}
|
|
23396
|
+
return {
|
|
23397
|
+
handleDrop,
|
|
23398
|
+
hasFilesOrFolders
|
|
23399
|
+
};
|
|
23400
|
+
}
|
|
23401
|
+
function traverseFileTree(item) {
|
|
23402
|
+
let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
23403
|
+
return new Promise((resolve, reject) => {
|
|
23404
|
+
if (item.isFile) {
|
|
23405
|
+
const fileEntry = item;
|
|
23406
|
+
fileEntry.file(file => resolve([{
|
|
23407
|
+
file,
|
|
23408
|
+
path
|
|
23409
|
+
}]), reject);
|
|
23410
|
+
} else if (item.isDirectory) {
|
|
23411
|
+
const directoryReader = item.createReader();
|
|
23412
|
+
directoryReader.readEntries(async entries => {
|
|
23413
|
+
const files = [];
|
|
23414
|
+
for (const entry of entries) {
|
|
23415
|
+
files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
|
|
23416
|
+
}
|
|
23417
|
+
resolve(files);
|
|
23418
|
+
});
|
|
23419
|
+
}
|
|
23420
|
+
});
|
|
23421
|
+
}
|
|
23422
|
+
function appendIfDirectory(path, item) {
|
|
23423
|
+
return item.isDirectory ? `${path}/${item.name}` : path;
|
|
23424
|
+
}
|
|
23425
|
+
|
|
23426
|
+
// Types
|
|
23427
|
+
|
|
23338
23428
|
const makeVFileInputProps = propsFactory({
|
|
23339
23429
|
chips: Boolean,
|
|
23340
23430
|
counter: Boolean,
|
|
@@ -23419,6 +23509,10 @@
|
|
|
23419
23509
|
const isActive = vue.toRef(() => isFocused.value || props.active);
|
|
23420
23510
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
23421
23511
|
const isDragging = vue.shallowRef(false);
|
|
23512
|
+
const {
|
|
23513
|
+
handleDrop,
|
|
23514
|
+
hasFilesOrFolders
|
|
23515
|
+
} = useFileDrop();
|
|
23422
23516
|
function onFocus() {
|
|
23423
23517
|
if (inputRef.value !== document.activeElement) {
|
|
23424
23518
|
inputRef.value?.focus();
|
|
@@ -23452,13 +23546,13 @@
|
|
|
23452
23546
|
e.preventDefault();
|
|
23453
23547
|
isDragging.value = false;
|
|
23454
23548
|
}
|
|
23455
|
-
function onDrop(e) {
|
|
23549
|
+
async function onDrop(e) {
|
|
23456
23550
|
e.preventDefault();
|
|
23457
23551
|
e.stopImmediatePropagation();
|
|
23458
23552
|
isDragging.value = false;
|
|
23459
|
-
if (!
|
|
23553
|
+
if (!inputRef.value || !hasFilesOrFolders(e)) return;
|
|
23460
23554
|
const dataTransfer = new DataTransfer();
|
|
23461
|
-
for (const file of e
|
|
23555
|
+
for (const file of await handleDrop(e)) {
|
|
23462
23556
|
dataTransfer.items.add(file);
|
|
23463
23557
|
}
|
|
23464
23558
|
inputRef.value.files = dataTransfer.files;
|
|
@@ -24889,6 +24983,7 @@
|
|
|
24889
24983
|
...makeVNumberInputProps()
|
|
24890
24984
|
},
|
|
24891
24985
|
emits: {
|
|
24986
|
+
'update:focused': val => true,
|
|
24892
24987
|
'update:modelValue': val => true
|
|
24893
24988
|
},
|
|
24894
24989
|
setup(props, _ref) {
|
|
@@ -24904,11 +24999,7 @@
|
|
|
24904
24999
|
});
|
|
24905
25000
|
const form = useForm(props);
|
|
24906
25001
|
const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
|
|
24907
|
-
const
|
|
24908
|
-
isFocused,
|
|
24909
|
-
focus,
|
|
24910
|
-
blur
|
|
24911
|
-
} = useFocus(props);
|
|
25002
|
+
const isFocused = vue.shallowRef(props.focused);
|
|
24912
25003
|
function correctPrecision(val) {
|
|
24913
25004
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
|
24914
25005
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
|
@@ -25093,11 +25184,9 @@
|
|
|
25093
25184
|
inputText.value = model.value.toString();
|
|
25094
25185
|
}
|
|
25095
25186
|
function onFocus() {
|
|
25096
|
-
focus();
|
|
25097
25187
|
trimDecimalZeros();
|
|
25098
25188
|
}
|
|
25099
25189
|
function onBlur() {
|
|
25100
|
-
blur();
|
|
25101
25190
|
clampModel();
|
|
25102
25191
|
}
|
|
25103
25192
|
useRender(() => {
|
|
@@ -25190,9 +25279,12 @@
|
|
|
25190
25279
|
}, null)]) : props.reverse && controlVariant.value !== 'hidden' ? vue.createElementVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
|
|
25191
25280
|
const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
|
|
25192
25281
|
return vue.createVNode(VTextField, vue.mergeProps({
|
|
25193
|
-
"ref": vTextFieldRef
|
|
25282
|
+
"ref": vTextFieldRef
|
|
25283
|
+
}, textFieldProps, {
|
|
25194
25284
|
"modelValue": inputText.value,
|
|
25195
25285
|
"onUpdate:modelValue": $event => inputText.value = $event,
|
|
25286
|
+
"focused": isFocused.value,
|
|
25287
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
|
25196
25288
|
"validationValue": model.value,
|
|
25197
25289
|
"onBeforeinput": onBeforeinput,
|
|
25198
25290
|
"onFocus": onFocus,
|
|
@@ -25205,8 +25297,7 @@
|
|
|
25205
25297
|
'v-number-input--reverse': props.reverse,
|
|
25206
25298
|
'v-number-input--split': controlVariant.value === 'split',
|
|
25207
25299
|
'v-number-input--stacked': controlVariant.value === 'stacked'
|
|
25208
|
-
}, props.class]
|
|
25209
|
-
}, textFieldProps, {
|
|
25300
|
+
}, props.class],
|
|
25210
25301
|
"style": props.style,
|
|
25211
25302
|
"inputmode": "decimal"
|
|
25212
25303
|
}), {
|
|
@@ -25292,6 +25383,21 @@
|
|
|
25292
25383
|
const contentRef = vue.ref();
|
|
25293
25384
|
const inputRef = vue.ref([]);
|
|
25294
25385
|
const current = vue.computed(() => inputRef.value[focusIndex.value]);
|
|
25386
|
+
const intersectScope = vue.effectScope();
|
|
25387
|
+
intersectScope.run(() => {
|
|
25388
|
+
const {
|
|
25389
|
+
intersectionRef,
|
|
25390
|
+
isIntersecting
|
|
25391
|
+
} = useIntersectionObserver();
|
|
25392
|
+
vue.watch(isIntersecting, v => {
|
|
25393
|
+
if (!v) return;
|
|
25394
|
+
intersectionRef.value?.focus();
|
|
25395
|
+
intersectScope.stop();
|
|
25396
|
+
});
|
|
25397
|
+
vue.watchEffect(() => {
|
|
25398
|
+
intersectionRef.value = inputRef.value[0];
|
|
25399
|
+
});
|
|
25400
|
+
});
|
|
25295
25401
|
function onInput() {
|
|
25296
25402
|
// The maxlength attribute doesn't work for the number type input, so the text type is used.
|
|
25297
25403
|
// The following logic simulates the behavior of a number input.
|
|
@@ -25341,7 +25447,7 @@
|
|
|
25341
25447
|
function onPaste(index, e) {
|
|
25342
25448
|
e.preventDefault();
|
|
25343
25449
|
e.stopPropagation();
|
|
25344
|
-
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
|
25450
|
+
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
|
25345
25451
|
if (isValidNumber(clipboardText)) return;
|
|
25346
25452
|
model.value = clipboardText.split('');
|
|
25347
25453
|
inputRef.value?.[index].blur();
|
|
@@ -25373,7 +25479,10 @@
|
|
|
25373
25479
|
scoped: true
|
|
25374
25480
|
});
|
|
25375
25481
|
vue.watch(model, val => {
|
|
25376
|
-
if (val.length === length.value)
|
|
25482
|
+
if (val.length === length.value) {
|
|
25483
|
+
focusIndex.value = length.value - 1;
|
|
25484
|
+
emit('finish', val.join(''));
|
|
25485
|
+
}
|
|
25377
25486
|
}, {
|
|
25378
25487
|
deep: true
|
|
25379
25488
|
});
|
|
@@ -28035,6 +28144,9 @@
|
|
|
28035
28144
|
focus,
|
|
28036
28145
|
blur
|
|
28037
28146
|
} = useFocus(props);
|
|
28147
|
+
const {
|
|
28148
|
+
onIntersect
|
|
28149
|
+
} = useAutofocus(props);
|
|
28038
28150
|
const counterValue = vue.computed(() => {
|
|
28039
28151
|
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;
|
|
28040
28152
|
});
|
|
@@ -28043,10 +28155,6 @@
|
|
|
28043
28155
|
if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
|
|
28044
28156
|
return props.counter;
|
|
28045
28157
|
});
|
|
28046
|
-
function onIntersect(isIntersecting, entries) {
|
|
28047
|
-
if (!props.autofocus || !isIntersecting) return;
|
|
28048
|
-
entries[0].target?.focus?.();
|
|
28049
|
-
}
|
|
28050
28158
|
const vInputRef = vue.ref();
|
|
28051
28159
|
const vFieldRef = vue.ref();
|
|
28052
28160
|
const controlHeight = vue.shallowRef('');
|
|
@@ -29264,13 +29372,9 @@
|
|
|
29264
29372
|
let {
|
|
29265
29373
|
slots
|
|
29266
29374
|
} = _ref;
|
|
29267
|
-
const {
|
|
29268
|
-
isFocused,
|
|
29269
|
-
focus,
|
|
29270
|
-
blur
|
|
29271
|
-
} = useFocus(props);
|
|
29272
29375
|
const model = useProxiedModel(props, 'modelValue');
|
|
29273
29376
|
const menu = vue.shallowRef(false);
|
|
29377
|
+
const isFocused = vue.shallowRef(props.focused);
|
|
29274
29378
|
const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
|
|
29275
29379
|
const display = vue.computed(() => model.value || null);
|
|
29276
29380
|
function onKeydown(e) {
|
|
@@ -29301,10 +29405,9 @@
|
|
|
29301
29405
|
"modelValue": display.value,
|
|
29302
29406
|
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
|
29303
29407
|
"focused": menu.value || isFocused.value,
|
|
29304
|
-
"onFocus": focus,
|
|
29305
|
-
"onBlur": blur,
|
|
29306
29408
|
"onClick:control": isInteractive.value ? onClick : undefined,
|
|
29307
29409
|
"onClick:prependInner": isInteractive.value ? onClick : undefined,
|
|
29410
|
+
"onUpdate:focused": event => isFocused.value = event,
|
|
29308
29411
|
"onClick:appendInner": isInteractive.value ? onClick : undefined,
|
|
29309
29412
|
"onUpdate:modelValue": val => {
|
|
29310
29413
|
model.value = val;
|
|
@@ -29508,6 +29611,7 @@
|
|
|
29508
29611
|
emits: {
|
|
29509
29612
|
save: value => true,
|
|
29510
29613
|
cancel: () => true,
|
|
29614
|
+
'update:focused': val => true,
|
|
29511
29615
|
'update:modelValue': val => true,
|
|
29512
29616
|
'update:menu': val => true
|
|
29513
29617
|
},
|
|
@@ -29530,15 +29634,11 @@
|
|
|
29530
29634
|
const {
|
|
29531
29635
|
mobile
|
|
29532
29636
|
} = useDisplay(props);
|
|
29533
|
-
const {
|
|
29534
|
-
isFocused,
|
|
29535
|
-
focus,
|
|
29536
|
-
blur
|
|
29537
|
-
} = useFocus(props);
|
|
29538
29637
|
const emptyModelValue = () => props.multiple ? [] : null;
|
|
29539
29638
|
const model = useProxiedModel(props, 'modelValue', emptyModelValue(), val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
|
|
29540
29639
|
const menu = useProxiedModel(props, 'menu');
|
|
29541
29640
|
const isEditingInput = vue.shallowRef(false);
|
|
29641
|
+
const isFocused = vue.shallowRef(props.focused);
|
|
29542
29642
|
const vTextFieldRef = vue.ref();
|
|
29543
29643
|
const disabledActions = vue.ref(['save']);
|
|
29544
29644
|
function format(date) {
|
|
@@ -29614,7 +29714,6 @@
|
|
|
29614
29714
|
if (props.updateOn.includes('blur')) {
|
|
29615
29715
|
onUserInput(e.target);
|
|
29616
29716
|
}
|
|
29617
|
-
blur();
|
|
29618
29717
|
|
|
29619
29718
|
// When in mobile mode and editing is done (due to keyboard dismissal), close the menu
|
|
29620
29719
|
if (mobile.value && isEditingInput.value && !isFocused.value) {
|
|
@@ -29637,7 +29736,7 @@
|
|
|
29637
29736
|
if (parts.every(isValid)) {
|
|
29638
29737
|
if (props.multiple === 'range') {
|
|
29639
29738
|
const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
|
|
29640
|
-
model.value =
|
|
29739
|
+
model.value = createDateRange(adapter, start, stop);
|
|
29641
29740
|
} else {
|
|
29642
29741
|
model.value = parts.map(parseDate);
|
|
29643
29742
|
}
|
|
@@ -29659,12 +29758,12 @@
|
|
|
29659
29758
|
"readonly": isReadonly.value,
|
|
29660
29759
|
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
|
29661
29760
|
"focused": menu.value || isFocused.value,
|
|
29662
|
-
"onFocus": focus,
|
|
29663
29761
|
"onBlur": onBlur,
|
|
29664
29762
|
"validationValue": model.value,
|
|
29665
29763
|
"onClick:control": isInteractive.value ? onClick : undefined,
|
|
29666
29764
|
"onClick:prepend": isInteractive.value ? onClick : undefined,
|
|
29667
|
-
"onUpdate:modelValue": onUpdateDisplayModel
|
|
29765
|
+
"onUpdate:modelValue": onUpdateDisplayModel,
|
|
29766
|
+
"onUpdate:focused": event => isFocused.value = event
|
|
29668
29767
|
}), {
|
|
29669
29768
|
...slots,
|
|
29670
29769
|
default: () => vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VMenu, {
|
|
@@ -29772,6 +29871,7 @@
|
|
|
29772
29871
|
"class": "v-file-upload-item"
|
|
29773
29872
|
}), {
|
|
29774
29873
|
...slots,
|
|
29874
|
+
title: () => props?.title ?? props.file?.name,
|
|
29775
29875
|
prepend: slotProps => vue.createElementVNode(vue.Fragment, null, [!slots.prepend ? vue.createVNode(VAvatar, {
|
|
29776
29876
|
"icon": props.fileIcon,
|
|
29777
29877
|
"image": preview.value,
|
|
@@ -29879,6 +29979,9 @@
|
|
|
29879
29979
|
const isDragging = vue.shallowRef(false);
|
|
29880
29980
|
const vSheetRef = vue.ref(null);
|
|
29881
29981
|
const inputRef = vue.ref(null);
|
|
29982
|
+
const {
|
|
29983
|
+
handleDrop
|
|
29984
|
+
} = useFileDrop();
|
|
29882
29985
|
function onDragover(e) {
|
|
29883
29986
|
e.preventDefault();
|
|
29884
29987
|
e.stopImmediatePropagation();
|
|
@@ -29888,13 +29991,13 @@
|
|
|
29888
29991
|
e.preventDefault();
|
|
29889
29992
|
isDragging.value = false;
|
|
29890
29993
|
}
|
|
29891
|
-
function onDrop(e) {
|
|
29994
|
+
async function onDrop(e) {
|
|
29892
29995
|
e.preventDefault();
|
|
29893
29996
|
e.stopImmediatePropagation();
|
|
29894
29997
|
isDragging.value = false;
|
|
29895
|
-
if (!
|
|
29998
|
+
if (!inputRef.value) return;
|
|
29896
29999
|
const dataTransfer = new DataTransfer();
|
|
29897
|
-
for (const file of e
|
|
30000
|
+
for (const file of await handleDrop(e)) {
|
|
29898
30001
|
dataTransfer.items.add(file);
|
|
29899
30002
|
}
|
|
29900
30003
|
inputRef.value.files = dataTransfer.files;
|
|
@@ -30617,6 +30720,7 @@
|
|
|
30617
30720
|
const isDragging = vue.ref(false);
|
|
30618
30721
|
const valueOnMouseDown = vue.ref(null);
|
|
30619
30722
|
const valueOnMouseUp = vue.ref(null);
|
|
30723
|
+
const emitChangeDebounced = debounce(value => emit('change', value), 750);
|
|
30620
30724
|
const {
|
|
30621
30725
|
textColorClasses,
|
|
30622
30726
|
textColorStyles
|
|
@@ -30662,6 +30766,7 @@
|
|
|
30662
30766
|
if (value !== props.displayedValue) {
|
|
30663
30767
|
update(value);
|
|
30664
30768
|
}
|
|
30769
|
+
emitChangeDebounced(value);
|
|
30665
30770
|
}
|
|
30666
30771
|
function isInner(value) {
|
|
30667
30772
|
return props.double && value - props.min >= roundCount.value;
|
|
@@ -31262,6 +31367,7 @@
|
|
|
31262
31367
|
}
|
|
31263
31368
|
function onClickAction(e) {
|
|
31264
31369
|
e.preventDefault();
|
|
31370
|
+
e.stopPropagation();
|
|
31265
31371
|
emit('toggleExpand', e);
|
|
31266
31372
|
}
|
|
31267
31373
|
useRender(() => {
|
|
@@ -31407,7 +31513,8 @@
|
|
|
31407
31513
|
const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps);
|
|
31408
31514
|
const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
|
|
31409
31515
|
return children ? vue.createVNode(VTreeviewGroup, vue.mergeProps(treeviewGroupProps, {
|
|
31410
|
-
"value": props.returnObject ? item.raw : treeviewGroupProps?.value
|
|
31516
|
+
"value": props.returnObject ? item.raw : treeviewGroupProps?.value,
|
|
31517
|
+
"rawId": treeviewGroupProps?.value
|
|
31411
31518
|
}), {
|
|
31412
31519
|
activator: _ref2 => {
|
|
31413
31520
|
let {
|
|
@@ -32095,7 +32202,7 @@
|
|
|
32095
32202
|
};
|
|
32096
32203
|
});
|
|
32097
32204
|
}
|
|
32098
|
-
const version$1 = "3.8.
|
|
32205
|
+
const version$1 = "3.8.10";
|
|
32099
32206
|
createVuetify$1.version = version$1;
|
|
32100
32207
|
|
|
32101
32208
|
// Vue's inject() can only be used in setup
|
|
@@ -32393,7 +32500,7 @@
|
|
|
32393
32500
|
|
|
32394
32501
|
/* eslint-disable local-rules/sort-imports */
|
|
32395
32502
|
|
|
32396
|
-
const version = "3.8.
|
|
32503
|
+
const version = "3.8.10";
|
|
32397
32504
|
|
|
32398
32505
|
/* eslint-disable local-rules/sort-imports */
|
|
32399
32506
|
|