@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.cjs
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
|
*/
|
@@ -12396,10 +12396,12 @@
|
|
12396
12396
|
const inputRef = vue.ref();
|
12397
12397
|
const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
|
12398
12398
|
function onFocus() {
|
12399
|
-
if (inputRef.value !== document.activeElement) {
|
12400
|
-
inputRef.value?.focus();
|
12401
|
-
}
|
12402
12399
|
if (!isFocused.value) focus();
|
12400
|
+
vue.nextTick(() => {
|
12401
|
+
if (inputRef.value !== document.activeElement) {
|
12402
|
+
inputRef.value?.focus();
|
12403
|
+
}
|
12404
|
+
});
|
12403
12405
|
}
|
12404
12406
|
function onControlMousedown(e) {
|
12405
12407
|
emit('mousedown:control', e);
|
@@ -12408,7 +12410,6 @@
|
|
12408
12410
|
e.preventDefault();
|
12409
12411
|
}
|
12410
12412
|
function onControlClick(e) {
|
12411
|
-
onFocus();
|
12412
12413
|
emit('click:control', e);
|
12413
12414
|
}
|
12414
12415
|
function onClear(e, reset) {
|
@@ -16537,7 +16538,7 @@
|
|
16537
16538
|
default: () => [vue.withDirectives(vue.createElementVNode("div", {
|
16538
16539
|
"class": "v-slider-thumb__label-container"
|
16539
16540
|
}, [vue.createElementVNode("div", {
|
16540
|
-
"class": vue.normalizeClass(['v-slider-thumb__label'])
|
16541
|
+
"class": vue.normalizeClass(['v-slider-thumb__label', textColorClasses.value])
|
16541
16542
|
}, [vue.createElementVNode("div", null, [slots['thumb-label']?.({
|
16542
16543
|
modelValue: props.modelValue
|
16543
16544
|
}) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
|
@@ -18109,6 +18110,18 @@
|
|
18109
18110
|
instance: createInstance(_options, locale)
|
18110
18111
|
};
|
18111
18112
|
}
|
18113
|
+
function createDateRange(adapter, start, stop) {
|
18114
|
+
const diff = adapter.getDiff(stop ?? start, start, 'days');
|
18115
|
+
const datesInRange = [start];
|
18116
|
+
for (let i = 1; i < diff; i++) {
|
18117
|
+
const nextDate = adapter.addDays(start, i);
|
18118
|
+
datesInRange.push(nextDate);
|
18119
|
+
}
|
18120
|
+
if (stop) {
|
18121
|
+
datesInRange.push(adapter.endOfDay(stop));
|
18122
|
+
}
|
18123
|
+
return datesInRange;
|
18124
|
+
}
|
18112
18125
|
function createInstance(options, locale) {
|
18113
18126
|
const instance = vue.reactive(typeof options.adapter === 'function'
|
18114
18127
|
// eslint-disable-next-line new-cap
|
@@ -18119,20 +18132,7 @@
|
|
18119
18132
|
vue.watch(locale.current, value => {
|
18120
18133
|
instance.locale = options.locale[value] ?? value ?? instance.locale;
|
18121
18134
|
});
|
18122
|
-
return
|
18123
|
-
createDateRange(start, stop) {
|
18124
|
-
const diff = instance.getDiff(stop ?? start, start, 'days');
|
18125
|
-
const datesInRange = [start];
|
18126
|
-
for (let i = 1; i < diff; i++) {
|
18127
|
-
const nextDate = instance.addDays(start, i);
|
18128
|
-
datesInRange.push(nextDate);
|
18129
|
-
}
|
18130
|
-
if (stop) {
|
18131
|
-
datesInRange.push(instance.endOfDay(stop));
|
18132
|
-
}
|
18133
|
-
return datesInRange;
|
18134
|
-
}
|
18135
|
-
});
|
18135
|
+
return instance;
|
18136
18136
|
}
|
18137
18137
|
function useDate() {
|
18138
18138
|
const options = vue.inject(DateOptionsSymbol);
|
@@ -20221,7 +20221,9 @@
|
|
20221
20221
|
"class": "v-data-table-footer"
|
20222
20222
|
}, [slots.prepend?.(), vue.createElementVNode("div", {
|
20223
20223
|
"class": "v-data-table-footer__items-per-page"
|
20224
|
-
}, [vue.createElementVNode("span",
|
20224
|
+
}, [vue.createElementVNode("span", {
|
20225
|
+
"aria-label": t(props.itemsPerPageText)
|
20226
|
+
}, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
|
20225
20227
|
"items": itemsPerPageOptions.value,
|
20226
20228
|
"modelValue": itemsPerPage.value,
|
20227
20229
|
"onUpdate:modelValue": v => setItemsPerPage(Number(v)),
|
@@ -20273,6 +20275,7 @@
|
|
20273
20275
|
} = _ref;
|
20274
20276
|
const Tag = props.tag ?? 'td';
|
20275
20277
|
return vue.createVNode(Tag, {
|
20278
|
+
"tabindex": "0",
|
20276
20279
|
"class": vue.normalizeClass(['v-data-table__td', {
|
20277
20280
|
'v-data-table-column--fixed': props.fixed,
|
20278
20281
|
'v-data-table-column--last-fixed': props.lastFixed,
|
@@ -20617,6 +20620,11 @@
|
|
20617
20620
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
20618
20621
|
};
|
20619
20622
|
}
|
20623
|
+
function handleEnterKeyPress(event, column) {
|
20624
|
+
if (event.key === 'Enter' && !props.disableSort) {
|
20625
|
+
toggleSort(column);
|
20626
|
+
}
|
20627
|
+
}
|
20620
20628
|
function getSortIcon(column) {
|
20621
20629
|
const item = sortBy.value.find(item => item.key === column.key);
|
20622
20630
|
if (!item) return props.sortAscIcon;
|
@@ -20673,7 +20681,9 @@
|
|
20673
20681
|
"nowrap": column.nowrap,
|
20674
20682
|
"lastFixed": column.lastFixed,
|
20675
20683
|
"noPadding": noPadding
|
20676
|
-
}, headerProps
|
20684
|
+
}, headerProps, {
|
20685
|
+
"onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
|
20686
|
+
}), {
|
20677
20687
|
default: () => {
|
20678
20688
|
const columnSlotName = `header.${column.key}`;
|
20679
20689
|
const columnSlotProps = {
|
@@ -22526,7 +22536,7 @@
|
|
22526
22536
|
} else {
|
22527
22537
|
rangeStop.value = adapter.endOfDay(_value);
|
22528
22538
|
}
|
22529
|
-
model.value =
|
22539
|
+
model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
|
22530
22540
|
} else {
|
22531
22541
|
rangeStart.value = value;
|
22532
22542
|
rangeStop.value = undefined;
|
@@ -23613,6 +23623,56 @@
|
|
23613
23623
|
|
23614
23624
|
// Types
|
23615
23625
|
|
23626
|
+
function useFileDrop() {
|
23627
|
+
function hasFilesOrFolders(e) {
|
23628
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
23629
|
+
return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
|
23630
|
+
}
|
23631
|
+
async function handleDrop(e) {
|
23632
|
+
const result = [];
|
23633
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
23634
|
+
if (entries.length) {
|
23635
|
+
for (const entry of entries) {
|
23636
|
+
const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
|
23637
|
+
result.push(...files.map(x => x.file));
|
23638
|
+
}
|
23639
|
+
} else {
|
23640
|
+
result.push(...[...(e.dataTransfer?.files ?? [])]);
|
23641
|
+
}
|
23642
|
+
return result;
|
23643
|
+
}
|
23644
|
+
return {
|
23645
|
+
handleDrop,
|
23646
|
+
hasFilesOrFolders
|
23647
|
+
};
|
23648
|
+
}
|
23649
|
+
function traverseFileTree(item) {
|
23650
|
+
let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
23651
|
+
return new Promise((resolve, reject) => {
|
23652
|
+
if (item.isFile) {
|
23653
|
+
const fileEntry = item;
|
23654
|
+
fileEntry.file(file => resolve([{
|
23655
|
+
file,
|
23656
|
+
path
|
23657
|
+
}]), reject);
|
23658
|
+
} else if (item.isDirectory) {
|
23659
|
+
const directoryReader = item.createReader();
|
23660
|
+
directoryReader.readEntries(async entries => {
|
23661
|
+
const files = [];
|
23662
|
+
for (const entry of entries) {
|
23663
|
+
files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
|
23664
|
+
}
|
23665
|
+
resolve(files);
|
23666
|
+
});
|
23667
|
+
}
|
23668
|
+
});
|
23669
|
+
}
|
23670
|
+
function appendIfDirectory(path, item) {
|
23671
|
+
return item.isDirectory ? `${path}/${item.name}` : path;
|
23672
|
+
}
|
23673
|
+
|
23674
|
+
// Types
|
23675
|
+
|
23616
23676
|
const makeVFileInputProps = propsFactory({
|
23617
23677
|
chips: Boolean,
|
23618
23678
|
counter: Boolean,
|
@@ -23697,6 +23757,10 @@
|
|
23697
23757
|
const isActive = vue.toRef(() => isFocused.value || props.active);
|
23698
23758
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
23699
23759
|
const isDragging = vue.shallowRef(false);
|
23760
|
+
const {
|
23761
|
+
handleDrop,
|
23762
|
+
hasFilesOrFolders
|
23763
|
+
} = useFileDrop();
|
23700
23764
|
function onFocus() {
|
23701
23765
|
if (inputRef.value !== document.activeElement) {
|
23702
23766
|
inputRef.value?.focus();
|
@@ -23730,13 +23794,13 @@
|
|
23730
23794
|
e.preventDefault();
|
23731
23795
|
isDragging.value = false;
|
23732
23796
|
}
|
23733
|
-
function onDrop(e) {
|
23797
|
+
async function onDrop(e) {
|
23734
23798
|
e.preventDefault();
|
23735
23799
|
e.stopImmediatePropagation();
|
23736
23800
|
isDragging.value = false;
|
23737
|
-
if (!
|
23801
|
+
if (!inputRef.value || !hasFilesOrFolders(e)) return;
|
23738
23802
|
const dataTransfer = new DataTransfer();
|
23739
|
-
for (const file of e
|
23803
|
+
for (const file of await handleDrop(e)) {
|
23740
23804
|
dataTransfer.items.add(file);
|
23741
23805
|
}
|
23742
23806
|
inputRef.value.files = dataTransfer.files;
|
@@ -25167,6 +25231,7 @@
|
|
25167
25231
|
...makeVNumberInputProps()
|
25168
25232
|
},
|
25169
25233
|
emits: {
|
25234
|
+
'update:focused': val => true,
|
25170
25235
|
'update:modelValue': val => true
|
25171
25236
|
},
|
25172
25237
|
setup(props, _ref) {
|
@@ -25182,11 +25247,7 @@
|
|
25182
25247
|
});
|
25183
25248
|
const form = useForm(props);
|
25184
25249
|
const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
|
25185
|
-
const
|
25186
|
-
isFocused,
|
25187
|
-
focus,
|
25188
|
-
blur
|
25189
|
-
} = useFocus(props);
|
25250
|
+
const isFocused = vue.shallowRef(props.focused);
|
25190
25251
|
function correctPrecision(val) {
|
25191
25252
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
25192
25253
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
@@ -25371,11 +25432,9 @@
|
|
25371
25432
|
inputText.value = model.value.toString();
|
25372
25433
|
}
|
25373
25434
|
function onFocus() {
|
25374
|
-
focus();
|
25375
25435
|
trimDecimalZeros();
|
25376
25436
|
}
|
25377
25437
|
function onBlur() {
|
25378
|
-
blur();
|
25379
25438
|
clampModel();
|
25380
25439
|
}
|
25381
25440
|
useRender(() => {
|
@@ -25468,9 +25527,12 @@
|
|
25468
25527
|
}, null)]) : props.reverse && controlVariant.value !== 'hidden' ? vue.createElementVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
|
25469
25528
|
const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
|
25470
25529
|
return vue.createVNode(VTextField, vue.mergeProps({
|
25471
|
-
"ref": vTextFieldRef
|
25530
|
+
"ref": vTextFieldRef
|
25531
|
+
}, textFieldProps, {
|
25472
25532
|
"modelValue": inputText.value,
|
25473
25533
|
"onUpdate:modelValue": $event => inputText.value = $event,
|
25534
|
+
"focused": isFocused.value,
|
25535
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
25474
25536
|
"validationValue": model.value,
|
25475
25537
|
"onBeforeinput": onBeforeinput,
|
25476
25538
|
"onFocus": onFocus,
|
@@ -25483,8 +25545,7 @@
|
|
25483
25545
|
'v-number-input--reverse': props.reverse,
|
25484
25546
|
'v-number-input--split': controlVariant.value === 'split',
|
25485
25547
|
'v-number-input--stacked': controlVariant.value === 'stacked'
|
25486
|
-
}, props.class]
|
25487
|
-
}, textFieldProps, {
|
25548
|
+
}, props.class],
|
25488
25549
|
"style": props.style,
|
25489
25550
|
"inputmode": "decimal"
|
25490
25551
|
}), {
|
@@ -25619,7 +25680,7 @@
|
|
25619
25680
|
function onPaste(index, e) {
|
25620
25681
|
e.preventDefault();
|
25621
25682
|
e.stopPropagation();
|
25622
|
-
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
25683
|
+
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
25623
25684
|
if (isValidNumber(clipboardText)) return;
|
25624
25685
|
model.value = clipboardText.split('');
|
25625
25686
|
inputRef.value?.[index].blur();
|
@@ -25651,7 +25712,10 @@
|
|
25651
25712
|
scoped: true
|
25652
25713
|
});
|
25653
25714
|
vue.watch(model, val => {
|
25654
|
-
if (val.length === length.value)
|
25715
|
+
if (val.length === length.value) {
|
25716
|
+
focusIndex.value = length.value - 1;
|
25717
|
+
emit('finish', val.join(''));
|
25718
|
+
}
|
25655
25719
|
}, {
|
25656
25720
|
deep: true
|
25657
25721
|
});
|
@@ -29404,7 +29468,7 @@
|
|
29404
29468
|
};
|
29405
29469
|
});
|
29406
29470
|
}
|
29407
|
-
const version$1 = "3.8.8-master.2025-06-
|
29471
|
+
const version$1 = "3.8.8-master.2025-06-08";
|
29408
29472
|
createVuetify$1.version = version$1;
|
29409
29473
|
|
29410
29474
|
// Vue's inject() can only be used in setup
|
@@ -29429,7 +29493,7 @@
|
|
29429
29493
|
...options
|
29430
29494
|
});
|
29431
29495
|
};
|
29432
|
-
const version = "3.8.8-master.2025-06-
|
29496
|
+
const version = "3.8.8-master.2025-06-08";
|
29433
29497
|
createVuetify.version = version;
|
29434
29498
|
|
29435
29499
|
exports.blueprints = index;
|