@vuetify/nightly 3.8.8-master.2025-06-06 → 3.8.8-master.2025-06-08
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/CHANGELOG.md +14 -3
- package/dist/json/attributes.json +2080 -2080
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +160 -160
- package/dist/json/web-types.json +3925 -3925
- package/dist/vuetify-labs.cjs +117 -59
- package/dist/vuetify-labs.css +3446 -3446
- package/dist/vuetify-labs.d.ts +65 -59
- package/dist/vuetify-labs.esm.js +117 -59
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +117 -59
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +104 -40
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3061 -3061
- package/dist/vuetify.d.ts +60 -59
- package/dist/vuetify.esm.js +104 -40
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +104 -40
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +147 -140
- package/dist/vuetify.min.js.map +1 -1
- 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/VDatePickerMonth.js +2 -2
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.js +8 -3
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- 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 +5 -2
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.js +1 -1
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +5 -4
- package/lib/components/VTextField/VTextField.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/entry-bundler.d.ts +0 -3
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +55 -59
- package/lib/framework.js +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/entry-bundler.d.ts +0 -3
- package/package.json +1 -1
package/dist/vuetify-labs.esm.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.8.8-master.2025-06-
|
2
|
+
* Vuetify v3.8.8-master.2025-06-08
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -12114,10 +12114,12 @@ const VTextField = genericComponent()({
|
|
12114
12114
|
const inputRef = ref();
|
12115
12115
|
const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
|
12116
12116
|
function onFocus() {
|
12117
|
-
if (inputRef.value !== document.activeElement) {
|
12118
|
-
inputRef.value?.focus();
|
12119
|
-
}
|
12120
12117
|
if (!isFocused.value) focus();
|
12118
|
+
nextTick(() => {
|
12119
|
+
if (inputRef.value !== document.activeElement) {
|
12120
|
+
inputRef.value?.focus();
|
12121
|
+
}
|
12122
|
+
});
|
12121
12123
|
}
|
12122
12124
|
function onControlMousedown(e) {
|
12123
12125
|
emit('mousedown:control', e);
|
@@ -12126,7 +12128,6 @@ const VTextField = genericComponent()({
|
|
12126
12128
|
e.preventDefault();
|
12127
12129
|
}
|
12128
12130
|
function onControlClick(e) {
|
12129
|
-
onFocus();
|
12130
12131
|
emit('click:control', e);
|
12131
12132
|
}
|
12132
12133
|
function onClear(e, reset) {
|
@@ -16255,7 +16256,7 @@ const VSliderThumb = genericComponent()({
|
|
16255
16256
|
default: () => [withDirectives(createElementVNode("div", {
|
16256
16257
|
"class": "v-slider-thumb__label-container"
|
16257
16258
|
}, [createElementVNode("div", {
|
16258
|
-
"class": normalizeClass(['v-slider-thumb__label'])
|
16259
|
+
"class": normalizeClass(['v-slider-thumb__label', textColorClasses.value])
|
16259
16260
|
}, [createElementVNode("div", null, [slots['thumb-label']?.({
|
16260
16261
|
modelValue: props.modelValue
|
16261
16262
|
}) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
|
@@ -17827,6 +17828,18 @@ function createDate(options, locale) {
|
|
17827
17828
|
instance: createInstance(_options, locale)
|
17828
17829
|
};
|
17829
17830
|
}
|
17831
|
+
function createDateRange(adapter, start, stop) {
|
17832
|
+
const diff = adapter.getDiff(stop ?? start, start, 'days');
|
17833
|
+
const datesInRange = [start];
|
17834
|
+
for (let i = 1; i < diff; i++) {
|
17835
|
+
const nextDate = adapter.addDays(start, i);
|
17836
|
+
datesInRange.push(nextDate);
|
17837
|
+
}
|
17838
|
+
if (stop) {
|
17839
|
+
datesInRange.push(adapter.endOfDay(stop));
|
17840
|
+
}
|
17841
|
+
return datesInRange;
|
17842
|
+
}
|
17830
17843
|
function createInstance(options, locale) {
|
17831
17844
|
const instance = reactive(typeof options.adapter === 'function'
|
17832
17845
|
// eslint-disable-next-line new-cap
|
@@ -17837,20 +17850,7 @@ function createInstance(options, locale) {
|
|
17837
17850
|
watch(locale.current, value => {
|
17838
17851
|
instance.locale = options.locale[value] ?? value ?? instance.locale;
|
17839
17852
|
});
|
17840
|
-
return
|
17841
|
-
createDateRange(start, stop) {
|
17842
|
-
const diff = instance.getDiff(stop ?? start, start, 'days');
|
17843
|
-
const datesInRange = [start];
|
17844
|
-
for (let i = 1; i < diff; i++) {
|
17845
|
-
const nextDate = instance.addDays(start, i);
|
17846
|
-
datesInRange.push(nextDate);
|
17847
|
-
}
|
17848
|
-
if (stop) {
|
17849
|
-
datesInRange.push(instance.endOfDay(stop));
|
17850
|
-
}
|
17851
|
-
return datesInRange;
|
17852
|
-
}
|
17853
|
-
});
|
17853
|
+
return instance;
|
17854
17854
|
}
|
17855
17855
|
function useDate() {
|
17856
17856
|
const options = inject$1(DateOptionsSymbol);
|
@@ -19939,7 +19939,9 @@ const VDataTableFooter = genericComponent()({
|
|
19939
19939
|
"class": "v-data-table-footer"
|
19940
19940
|
}, [slots.prepend?.(), createElementVNode("div", {
|
19941
19941
|
"class": "v-data-table-footer__items-per-page"
|
19942
|
-
}, [createElementVNode("span",
|
19942
|
+
}, [createElementVNode("span", {
|
19943
|
+
"aria-label": t(props.itemsPerPageText)
|
19944
|
+
}, [t(props.itemsPerPageText)]), createVNode(VSelect, {
|
19943
19945
|
"items": itemsPerPageOptions.value,
|
19944
19946
|
"modelValue": itemsPerPage.value,
|
19945
19947
|
"onUpdate:modelValue": v => setItemsPerPage(Number(v)),
|
@@ -19991,6 +19993,7 @@ const VDataTableColumn = defineFunctionalComponent({
|
|
19991
19993
|
} = _ref;
|
19992
19994
|
const Tag = props.tag ?? 'td';
|
19993
19995
|
return createVNode(Tag, {
|
19996
|
+
"tabindex": "0",
|
19994
19997
|
"class": normalizeClass(['v-data-table__td', {
|
19995
19998
|
'v-data-table-column--fixed': props.fixed,
|
19996
19999
|
'v-data-table-column--last-fixed': props.lastFixed,
|
@@ -20335,6 +20338,11 @@ const VDataTableHeaders = genericComponent()({
|
|
20335
20338
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20336
20339
|
};
|
20337
20340
|
}
|
20341
|
+
function handleEnterKeyPress(event, column) {
|
20342
|
+
if (event.key === 'Enter' && !props.disableSort) {
|
20343
|
+
toggleSort(column);
|
20344
|
+
}
|
20345
|
+
}
|
20338
20346
|
function getSortIcon(column) {
|
20339
20347
|
const item = sortBy.value.find(item => item.key === column.key);
|
20340
20348
|
if (!item) return props.sortAscIcon;
|
@@ -20391,7 +20399,9 @@ const VDataTableHeaders = genericComponent()({
|
|
20391
20399
|
"nowrap": column.nowrap,
|
20392
20400
|
"lastFixed": column.lastFixed,
|
20393
20401
|
"noPadding": noPadding
|
20394
|
-
}, headerProps
|
20402
|
+
}, headerProps, {
|
20403
|
+
"onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
|
20404
|
+
}), {
|
20395
20405
|
default: () => {
|
20396
20406
|
const columnSlotName = `header.${column.key}`;
|
20397
20407
|
const columnSlotProps = {
|
@@ -22244,7 +22254,7 @@ const VDatePickerMonth = genericComponent()({
|
|
22244
22254
|
} else {
|
22245
22255
|
rangeStop.value = adapter.endOfDay(_value);
|
22246
22256
|
}
|
22247
|
-
model.value =
|
22257
|
+
model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
|
22248
22258
|
} else {
|
22249
22259
|
rangeStart.value = value;
|
22250
22260
|
rangeStop.value = undefined;
|
@@ -23331,6 +23341,56 @@ const VFab = genericComponent()({
|
|
23331
23341
|
|
23332
23342
|
// Types
|
23333
23343
|
|
23344
|
+
function useFileDrop() {
|
23345
|
+
function hasFilesOrFolders(e) {
|
23346
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
23347
|
+
return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
|
23348
|
+
}
|
23349
|
+
async function handleDrop(e) {
|
23350
|
+
const result = [];
|
23351
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
23352
|
+
if (entries.length) {
|
23353
|
+
for (const entry of entries) {
|
23354
|
+
const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
|
23355
|
+
result.push(...files.map(x => x.file));
|
23356
|
+
}
|
23357
|
+
} else {
|
23358
|
+
result.push(...[...(e.dataTransfer?.files ?? [])]);
|
23359
|
+
}
|
23360
|
+
return result;
|
23361
|
+
}
|
23362
|
+
return {
|
23363
|
+
handleDrop,
|
23364
|
+
hasFilesOrFolders
|
23365
|
+
};
|
23366
|
+
}
|
23367
|
+
function traverseFileTree(item) {
|
23368
|
+
let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
23369
|
+
return new Promise((resolve, reject) => {
|
23370
|
+
if (item.isFile) {
|
23371
|
+
const fileEntry = item;
|
23372
|
+
fileEntry.file(file => resolve([{
|
23373
|
+
file,
|
23374
|
+
path
|
23375
|
+
}]), reject);
|
23376
|
+
} else if (item.isDirectory) {
|
23377
|
+
const directoryReader = item.createReader();
|
23378
|
+
directoryReader.readEntries(async entries => {
|
23379
|
+
const files = [];
|
23380
|
+
for (const entry of entries) {
|
23381
|
+
files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
|
23382
|
+
}
|
23383
|
+
resolve(files);
|
23384
|
+
});
|
23385
|
+
}
|
23386
|
+
});
|
23387
|
+
}
|
23388
|
+
function appendIfDirectory(path, item) {
|
23389
|
+
return item.isDirectory ? `${path}/${item.name}` : path;
|
23390
|
+
}
|
23391
|
+
|
23392
|
+
// Types
|
23393
|
+
|
23334
23394
|
const makeVFileInputProps = propsFactory({
|
23335
23395
|
chips: Boolean,
|
23336
23396
|
counter: Boolean,
|
@@ -23415,6 +23475,10 @@ const VFileInput = genericComponent()({
|
|
23415
23475
|
const isActive = toRef(() => isFocused.value || props.active);
|
23416
23476
|
const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
|
23417
23477
|
const isDragging = shallowRef(false);
|
23478
|
+
const {
|
23479
|
+
handleDrop,
|
23480
|
+
hasFilesOrFolders
|
23481
|
+
} = useFileDrop();
|
23418
23482
|
function onFocus() {
|
23419
23483
|
if (inputRef.value !== document.activeElement) {
|
23420
23484
|
inputRef.value?.focus();
|
@@ -23448,13 +23512,13 @@ const VFileInput = genericComponent()({
|
|
23448
23512
|
e.preventDefault();
|
23449
23513
|
isDragging.value = false;
|
23450
23514
|
}
|
23451
|
-
function onDrop(e) {
|
23515
|
+
async function onDrop(e) {
|
23452
23516
|
e.preventDefault();
|
23453
23517
|
e.stopImmediatePropagation();
|
23454
23518
|
isDragging.value = false;
|
23455
|
-
if (!
|
23519
|
+
if (!inputRef.value || !hasFilesOrFolders(e)) return;
|
23456
23520
|
const dataTransfer = new DataTransfer();
|
23457
|
-
for (const file of e
|
23521
|
+
for (const file of await handleDrop(e)) {
|
23458
23522
|
dataTransfer.items.add(file);
|
23459
23523
|
}
|
23460
23524
|
inputRef.value.files = dataTransfer.files;
|
@@ -24885,6 +24949,7 @@ const VNumberInput = genericComponent()({
|
|
24885
24949
|
...makeVNumberInputProps()
|
24886
24950
|
},
|
24887
24951
|
emits: {
|
24952
|
+
'update:focused': val => true,
|
24888
24953
|
'update:modelValue': val => true
|
24889
24954
|
},
|
24890
24955
|
setup(props, _ref) {
|
@@ -24900,11 +24965,7 @@ const VNumberInput = genericComponent()({
|
|
24900
24965
|
});
|
24901
24966
|
const form = useForm(props);
|
24902
24967
|
const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
|
24903
|
-
const
|
24904
|
-
isFocused,
|
24905
|
-
focus,
|
24906
|
-
blur
|
24907
|
-
} = useFocus(props);
|
24968
|
+
const isFocused = shallowRef(props.focused);
|
24908
24969
|
function correctPrecision(val) {
|
24909
24970
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
24910
24971
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
@@ -25089,11 +25150,9 @@ const VNumberInput = genericComponent()({
|
|
25089
25150
|
inputText.value = model.value.toString();
|
25090
25151
|
}
|
25091
25152
|
function onFocus() {
|
25092
|
-
focus();
|
25093
25153
|
trimDecimalZeros();
|
25094
25154
|
}
|
25095
25155
|
function onBlur() {
|
25096
|
-
blur();
|
25097
25156
|
clampModel();
|
25098
25157
|
}
|
25099
25158
|
useRender(() => {
|
@@ -25186,9 +25245,12 @@ const VNumberInput = genericComponent()({
|
|
25186
25245
|
}, null)]) : props.reverse && controlVariant.value !== 'hidden' ? createElementVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
|
25187
25246
|
const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
|
25188
25247
|
return createVNode(VTextField, mergeProps({
|
25189
|
-
"ref": vTextFieldRef
|
25248
|
+
"ref": vTextFieldRef
|
25249
|
+
}, textFieldProps, {
|
25190
25250
|
"modelValue": inputText.value,
|
25191
25251
|
"onUpdate:modelValue": $event => inputText.value = $event,
|
25252
|
+
"focused": isFocused.value,
|
25253
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
25192
25254
|
"validationValue": model.value,
|
25193
25255
|
"onBeforeinput": onBeforeinput,
|
25194
25256
|
"onFocus": onFocus,
|
@@ -25201,8 +25263,7 @@ const VNumberInput = genericComponent()({
|
|
25201
25263
|
'v-number-input--reverse': props.reverse,
|
25202
25264
|
'v-number-input--split': controlVariant.value === 'split',
|
25203
25265
|
'v-number-input--stacked': controlVariant.value === 'stacked'
|
25204
|
-
}, props.class]
|
25205
|
-
}, textFieldProps, {
|
25266
|
+
}, props.class],
|
25206
25267
|
"style": props.style,
|
25207
25268
|
"inputmode": "decimal"
|
25208
25269
|
}), {
|
@@ -25337,7 +25398,7 @@ const VOtpInput = genericComponent()({
|
|
25337
25398
|
function onPaste(index, e) {
|
25338
25399
|
e.preventDefault();
|
25339
25400
|
e.stopPropagation();
|
25340
|
-
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
25401
|
+
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25341
25402
|
if (isValidNumber(clipboardText)) return;
|
25342
25403
|
model.value = clipboardText.split('');
|
25343
25404
|
inputRef.value?.[index].blur();
|
@@ -25369,7 +25430,10 @@ const VOtpInput = genericComponent()({
|
|
25369
25430
|
scoped: true
|
25370
25431
|
});
|
25371
25432
|
watch(model, val => {
|
25372
|
-
if (val.length === length.value)
|
25433
|
+
if (val.length === length.value) {
|
25434
|
+
focusIndex.value = length.value - 1;
|
25435
|
+
emit('finish', val.join(''));
|
25436
|
+
}
|
25373
25437
|
}, {
|
25374
25438
|
deep: true
|
25375
25439
|
});
|
@@ -29260,13 +29324,9 @@ const VColorInput = genericComponent()({
|
|
29260
29324
|
let {
|
29261
29325
|
slots
|
29262
29326
|
} = _ref;
|
29263
|
-
const {
|
29264
|
-
isFocused,
|
29265
|
-
focus,
|
29266
|
-
blur
|
29267
|
-
} = useFocus(props);
|
29268
29327
|
const model = useProxiedModel(props, 'modelValue');
|
29269
29328
|
const menu = shallowRef(false);
|
29329
|
+
const isFocused = shallowRef(props.focused);
|
29270
29330
|
const isInteractive = computed(() => !props.disabled && !props.readonly);
|
29271
29331
|
const display = computed(() => model.value || null);
|
29272
29332
|
function onKeydown(e) {
|
@@ -29297,10 +29357,9 @@ const VColorInput = genericComponent()({
|
|
29297
29357
|
"modelValue": display.value,
|
29298
29358
|
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
29299
29359
|
"focused": menu.value || isFocused.value,
|
29300
|
-
"onFocus": focus,
|
29301
|
-
"onBlur": blur,
|
29302
29360
|
"onClick:control": isInteractive.value ? onClick : undefined,
|
29303
29361
|
"onClick:prependInner": isInteractive.value ? onClick : undefined,
|
29362
|
+
"onUpdate:focused": event => isFocused.value = event,
|
29304
29363
|
"onClick:appendInner": isInteractive.value ? onClick : undefined,
|
29305
29364
|
"onUpdate:modelValue": val => {
|
29306
29365
|
model.value = val;
|
@@ -29504,6 +29563,7 @@ const VDateInput = genericComponent()({
|
|
29504
29563
|
emits: {
|
29505
29564
|
save: value => true,
|
29506
29565
|
cancel: () => true,
|
29566
|
+
'update:focused': val => true,
|
29507
29567
|
'update:modelValue': val => true,
|
29508
29568
|
'update:menu': val => true
|
29509
29569
|
},
|
@@ -29526,15 +29586,11 @@ const VDateInput = genericComponent()({
|
|
29526
29586
|
const {
|
29527
29587
|
mobile
|
29528
29588
|
} = useDisplay(props);
|
29529
|
-
const {
|
29530
|
-
isFocused,
|
29531
|
-
focus,
|
29532
|
-
blur
|
29533
|
-
} = useFocus(props);
|
29534
29589
|
const emptyModelValue = () => props.multiple ? [] : null;
|
29535
29590
|
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);
|
29536
29591
|
const menu = useProxiedModel(props, 'menu');
|
29537
29592
|
const isEditingInput = shallowRef(false);
|
29593
|
+
const isFocused = shallowRef(props.focused);
|
29538
29594
|
const vTextFieldRef = ref();
|
29539
29595
|
const disabledActions = ref(['save']);
|
29540
29596
|
function format(date) {
|
@@ -29610,7 +29666,6 @@ const VDateInput = genericComponent()({
|
|
29610
29666
|
if (props.updateOn.includes('blur')) {
|
29611
29667
|
onUserInput(e.target);
|
29612
29668
|
}
|
29613
|
-
blur();
|
29614
29669
|
|
29615
29670
|
// When in mobile mode and editing is done (due to keyboard dismissal), close the menu
|
29616
29671
|
if (mobile.value && isEditingInput.value && !isFocused.value) {
|
@@ -29633,7 +29688,7 @@ const VDateInput = genericComponent()({
|
|
29633
29688
|
if (parts.every(isValid)) {
|
29634
29689
|
if (props.multiple === 'range') {
|
29635
29690
|
const [start, stop] = parts.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
|
29636
|
-
model.value =
|
29691
|
+
model.value = createDateRange(adapter, start, stop);
|
29637
29692
|
} else {
|
29638
29693
|
model.value = parts.map(parseDate);
|
29639
29694
|
}
|
@@ -29655,12 +29710,12 @@ const VDateInput = genericComponent()({
|
|
29655
29710
|
"readonly": isReadonly.value,
|
29656
29711
|
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
29657
29712
|
"focused": menu.value || isFocused.value,
|
29658
|
-
"onFocus": focus,
|
29659
29713
|
"onBlur": onBlur,
|
29660
29714
|
"validationValue": model.value,
|
29661
29715
|
"onClick:control": isInteractive.value ? onClick : undefined,
|
29662
29716
|
"onClick:prepend": isInteractive.value ? onClick : undefined,
|
29663
|
-
"onUpdate:modelValue": onUpdateDisplayModel
|
29717
|
+
"onUpdate:modelValue": onUpdateDisplayModel,
|
29718
|
+
"onUpdate:focused": event => isFocused.value = event
|
29664
29719
|
}), {
|
29665
29720
|
...slots,
|
29666
29721
|
default: () => createElementVNode(Fragment, null, [createVNode(VMenu, {
|
@@ -29875,6 +29930,9 @@ const VFileUpload = genericComponent()({
|
|
29875
29930
|
const isDragging = shallowRef(false);
|
29876
29931
|
const vSheetRef = ref(null);
|
29877
29932
|
const inputRef = ref(null);
|
29933
|
+
const {
|
29934
|
+
handleDrop
|
29935
|
+
} = useFileDrop();
|
29878
29936
|
function onDragover(e) {
|
29879
29937
|
e.preventDefault();
|
29880
29938
|
e.stopImmediatePropagation();
|
@@ -29884,13 +29942,13 @@ const VFileUpload = genericComponent()({
|
|
29884
29942
|
e.preventDefault();
|
29885
29943
|
isDragging.value = false;
|
29886
29944
|
}
|
29887
|
-
function onDrop(e) {
|
29945
|
+
async function onDrop(e) {
|
29888
29946
|
e.preventDefault();
|
29889
29947
|
e.stopImmediatePropagation();
|
29890
29948
|
isDragging.value = false;
|
29891
|
-
if (!
|
29949
|
+
if (!inputRef.value) return;
|
29892
29950
|
const dataTransfer = new DataTransfer();
|
29893
|
-
for (const file of e
|
29951
|
+
for (const file of await handleDrop(e)) {
|
29894
29952
|
dataTransfer.items.add(file);
|
29895
29953
|
}
|
29896
29954
|
inputRef.value.files = dataTransfer.files;
|
@@ -32091,7 +32149,7 @@ function createVuetify$1() {
|
|
32091
32149
|
};
|
32092
32150
|
});
|
32093
32151
|
}
|
32094
|
-
const version$1 = "3.8.8-master.2025-06-
|
32152
|
+
const version$1 = "3.8.8-master.2025-06-08";
|
32095
32153
|
createVuetify$1.version = version$1;
|
32096
32154
|
|
32097
32155
|
// Vue's inject() can only be used in setup
|
@@ -32389,7 +32447,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
32389
32447
|
|
32390
32448
|
/* eslint-disable local-rules/sort-imports */
|
32391
32449
|
|
32392
|
-
const version = "3.8.8-master.2025-06-
|
32450
|
+
const version = "3.8.8-master.2025-06-08";
|
32393
32451
|
|
32394
32452
|
/* eslint-disable local-rules/sort-imports */
|
32395
32453
|
|