@vuetify/nightly 3.9.0-beta.0-dev.2025-06-20 → 3.9.0-beta.1-dev.2025-06-26
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 +3 -3
- package/dist/json/attributes.json +2060 -2060
- package/dist/json/importMap-labs.json +12 -12
- package/dist/json/importMap.json +158 -158
- package/dist/json/web-types.json +3859 -3859
- package/dist/vuetify-labs.cjs +57 -54
- package/dist/vuetify-labs.css +4725 -4729
- package/dist/vuetify-labs.d.ts +1300 -97
- package/dist/vuetify-labs.esm.js +57 -54
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +57 -54
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +57 -54
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3311 -3315
- package/dist/vuetify.d.ts +1300 -97
- package/dist/vuetify.esm.js +57 -54
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +57 -54
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +45 -45
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBtn/VBtn.sass +3 -1
- package/lib/components/VCarousel/VCarousel.css +0 -1
- package/lib/components/VCarousel/VCarousel.js +1 -0
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VCarousel/VCarousel.sass +0 -1
- package/lib/components/VDatePicker/VDatePickerControls.css +1 -0
- package/lib/components/VDatePicker/VDatePickerControls.sass +1 -0
- package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
- package/lib/components/VDatePicker/VDatePickerMonth.js +8 -3
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
- package/lib/components/VField/VField.js +2 -10
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/components/VList/VList.js +1 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.js +4 -10
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VNumberInput/hold.js +4 -0
- package/lib/components/VNumberInput/hold.js.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.css +1 -6
- package/lib/components/VTimePicker/VTimePicker.sass +1 -6
- package/lib/components/VTimePicker/VTimePickerClock.css +5 -4
- package/lib/components/VTimePicker/VTimePickerClock.sass +5 -4
- package/lib/components/VTimePicker/VTimePickerControls.css +2 -1
- package/lib/components/VTimePicker/VTimePickerControls.sass +2 -3
- package/lib/components/VTreeview/VTreeviewChildren.d.ts +13 -0
- package/lib/components/VTreeview/VTreeviewChildren.js +11 -6
- package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewItem.d.ts +1206 -3
- package/lib/components/VTreeview/VTreeviewItem.js +11 -12
- package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
- package/lib/composables/calendar.d.ts +2 -0
- package/lib/composables/calendar.js +7 -3
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/nested/nested.js +8 -8
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +54 -54
- package/lib/framework.js +1 -1
- package/lib/labs/VPicker/VPicker.css +4 -0
- package/lib/labs/VPicker/VPicker.sass +4 -0
- package/package.json +1 -1
package/dist/vuetify-labs.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.9.0-beta.
|
2
|
+
* Vuetify v3.9.0-beta.1-dev.2025-06-26
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -9021,9 +9021,9 @@
|
|
9021
9021
|
}, 'nested');
|
9022
9022
|
const useNested = props => {
|
9023
9023
|
let isUnmounted = false;
|
9024
|
-
const children = vue.
|
9025
|
-
const parents = vue.
|
9026
|
-
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
|
9024
|
+
const children = vue.shallowRef(new Map());
|
9025
|
+
const parents = vue.shallowRef(new Map());
|
9026
|
+
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => vue.toRaw(i)) : v), v => [...v.values()]);
|
9027
9027
|
const activeStrategy = vue.computed(() => {
|
9028
9028
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
9029
9029
|
if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
|
@@ -9077,7 +9077,7 @@
|
|
9077
9077
|
});
|
9078
9078
|
function getPath(id) {
|
9079
9079
|
const path = [];
|
9080
|
-
let parent = id;
|
9080
|
+
let parent = vue.toRaw(id);
|
9081
9081
|
while (parent != null) {
|
9082
9082
|
path.unshift(parent);
|
9083
9083
|
parent = parents.value.get(parent);
|
@@ -9220,7 +9220,7 @@
|
|
9220
9220
|
const useNestedItem = (id, isGroup) => {
|
9221
9221
|
const parent = vue.inject(VNestedSymbol, emptyNested);
|
9222
9222
|
const uidSymbol = Symbol('nested item');
|
9223
|
-
const computedId = vue.computed(() => vue.toValue(id) ?? uidSymbol);
|
9223
|
+
const computedId = vue.computed(() => vue.toRaw(vue.toValue(id)) ?? uidSymbol);
|
9224
9224
|
const item = {
|
9225
9225
|
...parent,
|
9226
9226
|
id: computedId,
|
@@ -9229,10 +9229,10 @@
|
|
9229
9229
|
isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
|
9230
9230
|
parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
|
9231
9231
|
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
9232
|
-
isActivated: vue.computed(() => parent.root.activated.value.has(
|
9232
|
+
isActivated: vue.computed(() => parent.root.activated.value.has(computedId.value)),
|
9233
9233
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
9234
|
-
isSelected: vue.computed(() => parent.root.selected.value.get(
|
9235
|
-
isIndeterminate: vue.computed(() => parent.root.selected.value.get(
|
9234
|
+
isSelected: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
|
9235
|
+
isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
9236
9236
|
isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value)),
|
9237
9237
|
isGroupActivator: parent.isGroupActivator
|
9238
9238
|
};
|
@@ -9945,7 +9945,7 @@
|
|
9945
9945
|
function transformItem$2(props, item) {
|
9946
9946
|
const type = getPropertyFromItem(item, props.itemType, 'item');
|
9947
9947
|
const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
|
9948
|
-
const value = getPropertyFromItem(item, props.itemValue, undefined);
|
9948
|
+
const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
|
9949
9949
|
const children = getPropertyFromItem(item, props.itemChildren);
|
9950
9950
|
const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
|
9951
9951
|
const _props = {
|
@@ -12097,11 +12097,7 @@
|
|
12097
12097
|
default: slots.loader
|
12098
12098
|
}), hasPrepend && vue.createElementVNode("div", {
|
12099
12099
|
"key": "prepend",
|
12100
|
-
"class": "v-field__prepend-inner"
|
12101
|
-
"onMousedown": e => {
|
12102
|
-
e.preventDefault();
|
12103
|
-
e.stopPropagation();
|
12104
|
-
}
|
12100
|
+
"class": "v-field__prepend-inner"
|
12105
12101
|
}, [props.prependInnerIcon && vue.createVNode(InputIcon, {
|
12106
12102
|
"key": "prepend-icon",
|
12107
12103
|
"name": "prependInner",
|
@@ -12170,11 +12166,7 @@
|
|
12170
12166
|
})]), [[vue.vShow, props.dirty]])]
|
12171
12167
|
}), hasAppend && vue.createElementVNode("div", {
|
12172
12168
|
"key": "append",
|
12173
|
-
"class": "v-field__append-inner"
|
12174
|
-
"onMousedown": e => {
|
12175
|
-
e.preventDefault();
|
12176
|
-
e.stopPropagation();
|
12177
|
-
}
|
12169
|
+
"class": "v-field__append-inner"
|
12178
12170
|
}, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
|
12179
12171
|
"key": "append-icon",
|
12180
12172
|
"name": "appendInner",
|
@@ -15420,6 +15412,7 @@
|
|
15420
15412
|
}) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
|
15421
15413
|
})]
|
15422
15414
|
})]), props.progress && vue.createVNode(VProgressLinear, {
|
15415
|
+
"absolute": true,
|
15423
15416
|
"class": "v-carousel__progress",
|
15424
15417
|
"color": typeof props.progress === 'string' ? props.progress : undefined,
|
15425
15418
|
"modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
|
@@ -22334,8 +22327,11 @@
|
|
22334
22327
|
}, v => adapter.getMonth(v));
|
22335
22328
|
const weekDays = vue.computed(() => {
|
22336
22329
|
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
22337
|
-
|
22338
|
-
|
22330
|
+
return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
|
22331
|
+
});
|
22332
|
+
const weekdayLabels = vue.computed(() => {
|
22333
|
+
const labels = adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat);
|
22334
|
+
return weekDays.value.map(day => labels[day]);
|
22339
22335
|
});
|
22340
22336
|
const weeksInMonth = vue.computed(() => {
|
22341
22337
|
const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
|
@@ -22416,7 +22412,7 @@
|
|
22416
22412
|
if (typeof props.allowedDates === 'function') {
|
22417
22413
|
return !props.allowedDates(date);
|
22418
22414
|
}
|
22419
|
-
return
|
22415
|
+
return false;
|
22420
22416
|
}
|
22421
22417
|
return {
|
22422
22418
|
displayValue,
|
@@ -22426,6 +22422,7 @@
|
|
22426
22422
|
model,
|
22427
22423
|
weeksInMonth,
|
22428
22424
|
weekDays,
|
22425
|
+
weekdayLabels,
|
22429
22426
|
weekNumbers
|
22430
22427
|
};
|
22431
22428
|
}
|
@@ -22464,7 +22461,9 @@
|
|
22464
22461
|
const {
|
22465
22462
|
daysInMonth,
|
22466
22463
|
model,
|
22467
|
-
weekNumbers
|
22464
|
+
weekNumbers,
|
22465
|
+
weekDays,
|
22466
|
+
weekdayLabels
|
22468
22467
|
} = useCalendar(props);
|
22469
22468
|
const adapter = useDate();
|
22470
22469
|
const rangeStart = vue.shallowRef();
|
@@ -22536,7 +22535,10 @@
|
|
22536
22535
|
}
|
22537
22536
|
}
|
22538
22537
|
useRender(() => vue.createElementVNode("div", {
|
22539
|
-
"class": "v-date-picker-month"
|
22538
|
+
"class": "v-date-picker-month",
|
22539
|
+
"style": {
|
22540
|
+
'--v-date-picker-days-in-week': weekDays.value.length
|
22541
|
+
}
|
22540
22542
|
}, [props.showWeek && vue.createElementVNode("div", {
|
22541
22543
|
"key": "weeks",
|
22542
22544
|
"class": "v-date-picker-month__weeks"
|
@@ -22552,7 +22554,7 @@
|
|
22552
22554
|
"ref": daysRef,
|
22553
22555
|
"key": daysInMonth.value[0].date?.toString(),
|
22554
22556
|
"class": "v-date-picker-month__days"
|
22555
|
-
}, [!props.hideWeekdays &&
|
22557
|
+
}, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
|
22556
22558
|
"class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22557
22559
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22558
22560
|
const slotProps = {
|
@@ -25232,6 +25234,8 @@
|
|
25232
25234
|
function holdStart(value) {
|
25233
25235
|
holdStop();
|
25234
25236
|
tick(value);
|
25237
|
+
window.addEventListener('pointerup', holdStop);
|
25238
|
+
document.addEventListener('blur', holdStop);
|
25235
25239
|
timeout = window.setTimeout(() => {
|
25236
25240
|
interval = window.setInterval(() => tick(value), HOLD_REPEAT);
|
25237
25241
|
}, HOLD_DELAY);
|
@@ -25239,6 +25243,8 @@
|
|
25239
25243
|
function holdStop() {
|
25240
25244
|
window.clearTimeout(timeout);
|
25241
25245
|
window.clearInterval(interval);
|
25246
|
+
window.removeEventListener('pointerup', holdStop);
|
25247
|
+
document.removeEventListener('blur', holdStop);
|
25242
25248
|
}
|
25243
25249
|
function tick(value) {
|
25244
25250
|
toggleUpDown(value === 'up');
|
@@ -25374,7 +25380,7 @@
|
|
25374
25380
|
onClick: onControlClick,
|
25375
25381
|
onPointerup: onControlMouseup,
|
25376
25382
|
onPointerdown: onUpControlMousedown,
|
25377
|
-
onPointercancel:
|
25383
|
+
onPointercancel: onControlMouseup
|
25378
25384
|
}
|
25379
25385
|
};
|
25380
25386
|
const decrementSlotProps = {
|
@@ -25382,7 +25388,7 @@
|
|
25382
25388
|
onClick: onControlClick,
|
25383
25389
|
onPointerup: onControlMouseup,
|
25384
25390
|
onPointerdown: onDownControlMousedown,
|
25385
|
-
onPointercancel:
|
25391
|
+
onPointercancel: onControlMouseup
|
25386
25392
|
}
|
25387
25393
|
};
|
25388
25394
|
vue.watch(() => props.precision, () => formatInputValue());
|
@@ -25463,7 +25469,6 @@
|
|
25463
25469
|
const el = e.currentTarget;
|
25464
25470
|
el?.releasePointerCapture(e.pointerId);
|
25465
25471
|
e.preventDefault();
|
25466
|
-
e.stopPropagation();
|
25467
25472
|
holdStop();
|
25468
25473
|
}
|
25469
25474
|
function onUpControlMousedown(e) {
|
@@ -25480,11 +25485,6 @@
|
|
25480
25485
|
e.stopPropagation();
|
25481
25486
|
holdStart('down');
|
25482
25487
|
}
|
25483
|
-
function onControlPointerCancel(e) {
|
25484
|
-
const el = e.currentTarget;
|
25485
|
-
el?.releasePointerCapture(e.pointerId);
|
25486
|
-
holdStop();
|
25487
|
-
}
|
25488
25488
|
function clampModel() {
|
25489
25489
|
if (controlsDisabled.value) return;
|
25490
25490
|
if (!vTextFieldRef.value) return;
|
@@ -25531,7 +25531,7 @@
|
|
25531
25531
|
"onClick": onControlClick,
|
25532
25532
|
"onPointerdown": onUpControlMousedown,
|
25533
25533
|
"onPointerup": onControlMouseup,
|
25534
|
-
"onPointercancel":
|
25534
|
+
"onPointercancel": onControlMouseup,
|
25535
25535
|
"size": controlNodeSize.value,
|
25536
25536
|
"tabindex": "-1"
|
25537
25537
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
@@ -25561,7 +25561,7 @@
|
|
25561
25561
|
"onClick": onControlClick,
|
25562
25562
|
"onPointerdown": onDownControlMousedown,
|
25563
25563
|
"onPointerup": onControlMouseup,
|
25564
|
-
"onPointercancel":
|
25564
|
+
"onPointercancel": onControlMouseup,
|
25565
25565
|
"size": controlNodeSize.value,
|
25566
25566
|
"tabindex": "-1"
|
25567
25567
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
@@ -29766,7 +29766,7 @@
|
|
29766
29766
|
emit('toggleExpand', e);
|
29767
29767
|
}
|
29768
29768
|
useRender(() => {
|
29769
|
-
const listItemProps =
|
29769
|
+
const listItemProps = VListItem.filterProps(props);
|
29770
29770
|
const hasPrepend = slots.prepend || props.toggleIcon;
|
29771
29771
|
return vue.createVNode(VListItem, vue.mergeProps({
|
29772
29772
|
"ref": vListItemRef
|
@@ -29777,12 +29777,12 @@
|
|
29777
29777
|
'v-treeview-item--filtered': isFiltered.value
|
29778
29778
|
}, props.class],
|
29779
29779
|
"ripple": false,
|
29780
|
-
"onClick":
|
29780
|
+
"onClick": activateGroupActivator
|
29781
29781
|
}), {
|
29782
29782
|
...slots,
|
29783
29783
|
prepend: hasPrepend ? slotProps => {
|
29784
29784
|
return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VListItemAction, {
|
29785
|
-
"start":
|
29785
|
+
"start": true
|
29786
29786
|
}, {
|
29787
29787
|
default: () => [props.toggleIcon ? vue.createVNode(VBtn, {
|
29788
29788
|
"density": "compact",
|
@@ -29791,13 +29791,11 @@
|
|
29791
29791
|
"variant": "text",
|
29792
29792
|
"onClick": onClickAction
|
29793
29793
|
}, {
|
29794
|
-
loader() {
|
29795
|
-
|
29796
|
-
|
29797
|
-
|
29798
|
-
|
29799
|
-
}, null);
|
29800
|
-
}
|
29794
|
+
loader: () => vue.createVNode(VProgressCircular, {
|
29795
|
+
"indeterminate": "disable-shrink",
|
29796
|
+
"size": "20",
|
29797
|
+
"width": "2"
|
29798
|
+
}, null)
|
29801
29799
|
}) : vue.createElementVNode("div", {
|
29802
29800
|
"class": "v-treeview-item__level"
|
29803
29801
|
}, null)]
|
@@ -29805,7 +29803,7 @@
|
|
29805
29803
|
} : undefined
|
29806
29804
|
});
|
29807
29805
|
});
|
29808
|
-
return {};
|
29806
|
+
return forwardRefs({}, vListItemRef);
|
29809
29807
|
}
|
29810
29808
|
});
|
29811
29809
|
|
@@ -29830,6 +29828,7 @@
|
|
29830
29828
|
falseIcon: IconValue,
|
29831
29829
|
trueIcon: IconValue,
|
29832
29830
|
returnObject: Boolean,
|
29831
|
+
activatable: Boolean,
|
29833
29832
|
selectable: Boolean,
|
29834
29833
|
selectedColor: String,
|
29835
29834
|
selectStrategy: [String, Function, Object],
|
@@ -29848,7 +29847,8 @@
|
|
29848
29847
|
slots
|
29849
29848
|
} = _ref;
|
29850
29849
|
const isLoading = vue.reactive(new Set());
|
29851
|
-
const
|
29850
|
+
const activatorItems = vue.ref([]);
|
29851
|
+
const isClickOnOpen = vue.computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable && !props.activatable));
|
29852
29852
|
async function checkChildren(item) {
|
29853
29853
|
try {
|
29854
29854
|
if (!props.items?.length || !props.loadChildren) return;
|
@@ -29862,7 +29862,7 @@
|
|
29862
29862
|
}
|
29863
29863
|
function selectItem(select, isSelected) {
|
29864
29864
|
if (props.selectable) {
|
29865
|
-
select(
|
29865
|
+
select(isSelected);
|
29866
29866
|
}
|
29867
29867
|
}
|
29868
29868
|
return () => slots.default?.() ?? props.items?.map((item, index) => {
|
@@ -29890,7 +29890,8 @@
|
|
29890
29890
|
"indeterminateIcon": props.indeterminateIcon,
|
29891
29891
|
"falseIcon": props.falseIcon,
|
29892
29892
|
"trueIcon": props.trueIcon,
|
29893
|
-
"
|
29893
|
+
"onUpdate:modelValue": v => selectItem(slotProps.select, v),
|
29894
|
+
"onClick": e => e.stopPropagation(),
|
29894
29895
|
"onKeydown": e => {
|
29895
29896
|
if (!['Enter', 'Space'].includes(e.key)) return;
|
29896
29897
|
e.stopPropagation();
|
@@ -29937,9 +29938,11 @@
|
|
29937
29938
|
...activatorProps,
|
29938
29939
|
value: itemProps?.value,
|
29939
29940
|
onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
|
29940
|
-
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] :
|
29941
|
+
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
|
29941
29942
|
};
|
29942
|
-
return vue.createVNode(VTreeviewItem, vue.mergeProps(
|
29943
|
+
return vue.createVNode(VTreeviewItem, vue.mergeProps({
|
29944
|
+
"ref": el => activatorItems.value[index] = el
|
29945
|
+
}, listItemProps, {
|
29943
29946
|
"value": props.returnObject ? item.raw : itemProps.value,
|
29944
29947
|
"loading": loading
|
29945
29948
|
}), slotsWithItem);
|
@@ -32790,7 +32793,7 @@
|
|
32790
32793
|
};
|
32791
32794
|
});
|
32792
32795
|
}
|
32793
|
-
const version$1 = "3.9.0-beta.
|
32796
|
+
const version$1 = "3.9.0-beta.1-dev.2025-06-26";
|
32794
32797
|
createVuetify$1.version = version$1;
|
32795
32798
|
|
32796
32799
|
// Vue's inject() can only be used in setup
|
@@ -33088,7 +33091,7 @@
|
|
33088
33091
|
|
33089
33092
|
/* eslint-disable local-rules/sort-imports */
|
33090
33093
|
|
33091
|
-
const version = "3.9.0-beta.
|
33094
|
+
const version = "3.9.0-beta.1-dev.2025-06-26";
|
33092
33095
|
|
33093
33096
|
/* eslint-disable local-rules/sort-imports */
|
33094
33097
|
|