@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.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
|
*/
|
@@ -9299,9 +9299,9 @@
|
|
9299
9299
|
}, 'nested');
|
9300
9300
|
const useNested = props => {
|
9301
9301
|
let isUnmounted = false;
|
9302
|
-
const children = vue.
|
9303
|
-
const parents = vue.
|
9304
|
-
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()]);
|
9302
|
+
const children = vue.shallowRef(new Map());
|
9303
|
+
const parents = vue.shallowRef(new Map());
|
9304
|
+
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => vue.toRaw(i)) : v), v => [...v.values()]);
|
9305
9305
|
const activeStrategy = vue.computed(() => {
|
9306
9306
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
9307
9307
|
if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
|
@@ -9355,7 +9355,7 @@
|
|
9355
9355
|
});
|
9356
9356
|
function getPath(id) {
|
9357
9357
|
const path = [];
|
9358
|
-
let parent = id;
|
9358
|
+
let parent = vue.toRaw(id);
|
9359
9359
|
while (parent != null) {
|
9360
9360
|
path.unshift(parent);
|
9361
9361
|
parent = parents.value.get(parent);
|
@@ -9498,7 +9498,7 @@
|
|
9498
9498
|
const useNestedItem = (id, isGroup) => {
|
9499
9499
|
const parent = vue.inject(VNestedSymbol, emptyNested);
|
9500
9500
|
const uidSymbol = Symbol('nested item');
|
9501
|
-
const computedId = vue.computed(() => vue.toValue(id) ?? uidSymbol);
|
9501
|
+
const computedId = vue.computed(() => vue.toRaw(vue.toValue(id)) ?? uidSymbol);
|
9502
9502
|
const item = {
|
9503
9503
|
...parent,
|
9504
9504
|
id: computedId,
|
@@ -9507,10 +9507,10 @@
|
|
9507
9507
|
isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
|
9508
9508
|
parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
|
9509
9509
|
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
9510
|
-
isActivated: vue.computed(() => parent.root.activated.value.has(
|
9510
|
+
isActivated: vue.computed(() => parent.root.activated.value.has(computedId.value)),
|
9511
9511
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
9512
|
-
isSelected: vue.computed(() => parent.root.selected.value.get(
|
9513
|
-
isIndeterminate: vue.computed(() => parent.root.selected.value.get(
|
9512
|
+
isSelected: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
|
9513
|
+
isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
9514
9514
|
isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value)),
|
9515
9515
|
isGroupActivator: parent.isGroupActivator
|
9516
9516
|
};
|
@@ -10223,7 +10223,7 @@
|
|
10223
10223
|
function transformItem$2(props, item) {
|
10224
10224
|
const type = getPropertyFromItem(item, props.itemType, 'item');
|
10225
10225
|
const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
|
10226
|
-
const value = getPropertyFromItem(item, props.itemValue, undefined);
|
10226
|
+
const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
|
10227
10227
|
const children = getPropertyFromItem(item, props.itemChildren);
|
10228
10228
|
const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
|
10229
10229
|
const _props = {
|
@@ -12375,11 +12375,7 @@
|
|
12375
12375
|
default: slots.loader
|
12376
12376
|
}), hasPrepend && vue.createElementVNode("div", {
|
12377
12377
|
"key": "prepend",
|
12378
|
-
"class": "v-field__prepend-inner"
|
12379
|
-
"onMousedown": e => {
|
12380
|
-
e.preventDefault();
|
12381
|
-
e.stopPropagation();
|
12382
|
-
}
|
12378
|
+
"class": "v-field__prepend-inner"
|
12383
12379
|
}, [props.prependInnerIcon && vue.createVNode(InputIcon, {
|
12384
12380
|
"key": "prepend-icon",
|
12385
12381
|
"name": "prependInner",
|
@@ -12448,11 +12444,7 @@
|
|
12448
12444
|
})]), [[vue.vShow, props.dirty]])]
|
12449
12445
|
}), hasAppend && vue.createElementVNode("div", {
|
12450
12446
|
"key": "append",
|
12451
|
-
"class": "v-field__append-inner"
|
12452
|
-
"onMousedown": e => {
|
12453
|
-
e.preventDefault();
|
12454
|
-
e.stopPropagation();
|
12455
|
-
}
|
12447
|
+
"class": "v-field__append-inner"
|
12456
12448
|
}, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && vue.createVNode(InputIcon, {
|
12457
12449
|
"key": "append-icon",
|
12458
12450
|
"name": "appendInner",
|
@@ -15698,6 +15690,7 @@
|
|
15698
15690
|
}) : vue.createVNode(VBtn, vue.mergeProps(item, props), null);
|
15699
15691
|
})]
|
15700
15692
|
})]), props.progress && vue.createVNode(VProgressLinear, {
|
15693
|
+
"absolute": true,
|
15701
15694
|
"class": "v-carousel__progress",
|
15702
15695
|
"color": typeof props.progress === 'string' ? props.progress : undefined,
|
15703
15696
|
"modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
|
@@ -22612,8 +22605,11 @@
|
|
22612
22605
|
}, v => adapter.getMonth(v));
|
22613
22606
|
const weekDays = vue.computed(() => {
|
22614
22607
|
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
22615
|
-
|
22616
|
-
|
22608
|
+
return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
|
22609
|
+
});
|
22610
|
+
const weekdayLabels = vue.computed(() => {
|
22611
|
+
const labels = adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat);
|
22612
|
+
return weekDays.value.map(day => labels[day]);
|
22617
22613
|
});
|
22618
22614
|
const weeksInMonth = vue.computed(() => {
|
22619
22615
|
const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
|
@@ -22694,7 +22690,7 @@
|
|
22694
22690
|
if (typeof props.allowedDates === 'function') {
|
22695
22691
|
return !props.allowedDates(date);
|
22696
22692
|
}
|
22697
|
-
return
|
22693
|
+
return false;
|
22698
22694
|
}
|
22699
22695
|
return {
|
22700
22696
|
displayValue,
|
@@ -22704,6 +22700,7 @@
|
|
22704
22700
|
model,
|
22705
22701
|
weeksInMonth,
|
22706
22702
|
weekDays,
|
22703
|
+
weekdayLabels,
|
22707
22704
|
weekNumbers
|
22708
22705
|
};
|
22709
22706
|
}
|
@@ -22742,7 +22739,9 @@
|
|
22742
22739
|
const {
|
22743
22740
|
daysInMonth,
|
22744
22741
|
model,
|
22745
|
-
weekNumbers
|
22742
|
+
weekNumbers,
|
22743
|
+
weekDays,
|
22744
|
+
weekdayLabels
|
22746
22745
|
} = useCalendar(props);
|
22747
22746
|
const adapter = useDate();
|
22748
22747
|
const rangeStart = vue.shallowRef();
|
@@ -22814,7 +22813,10 @@
|
|
22814
22813
|
}
|
22815
22814
|
}
|
22816
22815
|
useRender(() => vue.createElementVNode("div", {
|
22817
|
-
"class": "v-date-picker-month"
|
22816
|
+
"class": "v-date-picker-month",
|
22817
|
+
"style": {
|
22818
|
+
'--v-date-picker-days-in-week': weekDays.value.length
|
22819
|
+
}
|
22818
22820
|
}, [props.showWeek && vue.createElementVNode("div", {
|
22819
22821
|
"key": "weeks",
|
22820
22822
|
"class": "v-date-picker-month__weeks"
|
@@ -22830,7 +22832,7 @@
|
|
22830
22832
|
"ref": daysRef,
|
22831
22833
|
"key": daysInMonth.value[0].date?.toString(),
|
22832
22834
|
"class": "v-date-picker-month__days"
|
22833
|
-
}, [!props.hideWeekdays &&
|
22835
|
+
}, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => vue.createElementVNode("div", {
|
22834
22836
|
"class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
22835
22837
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
22836
22838
|
const slotProps = {
|
@@ -25510,6 +25512,8 @@
|
|
25510
25512
|
function holdStart(value) {
|
25511
25513
|
holdStop();
|
25512
25514
|
tick(value);
|
25515
|
+
window.addEventListener('pointerup', holdStop);
|
25516
|
+
document.addEventListener('blur', holdStop);
|
25513
25517
|
timeout = window.setTimeout(() => {
|
25514
25518
|
interval = window.setInterval(() => tick(value), HOLD_REPEAT);
|
25515
25519
|
}, HOLD_DELAY);
|
@@ -25517,6 +25521,8 @@
|
|
25517
25521
|
function holdStop() {
|
25518
25522
|
window.clearTimeout(timeout);
|
25519
25523
|
window.clearInterval(interval);
|
25524
|
+
window.removeEventListener('pointerup', holdStop);
|
25525
|
+
document.removeEventListener('blur', holdStop);
|
25520
25526
|
}
|
25521
25527
|
function tick(value) {
|
25522
25528
|
toggleUpDown(value === 'up');
|
@@ -25652,7 +25658,7 @@
|
|
25652
25658
|
onClick: onControlClick,
|
25653
25659
|
onPointerup: onControlMouseup,
|
25654
25660
|
onPointerdown: onUpControlMousedown,
|
25655
|
-
onPointercancel:
|
25661
|
+
onPointercancel: onControlMouseup
|
25656
25662
|
}
|
25657
25663
|
};
|
25658
25664
|
const decrementSlotProps = {
|
@@ -25660,7 +25666,7 @@
|
|
25660
25666
|
onClick: onControlClick,
|
25661
25667
|
onPointerup: onControlMouseup,
|
25662
25668
|
onPointerdown: onDownControlMousedown,
|
25663
|
-
onPointercancel:
|
25669
|
+
onPointercancel: onControlMouseup
|
25664
25670
|
}
|
25665
25671
|
};
|
25666
25672
|
vue.watch(() => props.precision, () => formatInputValue());
|
@@ -25741,7 +25747,6 @@
|
|
25741
25747
|
const el = e.currentTarget;
|
25742
25748
|
el?.releasePointerCapture(e.pointerId);
|
25743
25749
|
e.preventDefault();
|
25744
|
-
e.stopPropagation();
|
25745
25750
|
holdStop();
|
25746
25751
|
}
|
25747
25752
|
function onUpControlMousedown(e) {
|
@@ -25758,11 +25763,6 @@
|
|
25758
25763
|
e.stopPropagation();
|
25759
25764
|
holdStart('down');
|
25760
25765
|
}
|
25761
|
-
function onControlPointerCancel(e) {
|
25762
|
-
const el = e.currentTarget;
|
25763
|
-
el?.releasePointerCapture(e.pointerId);
|
25764
|
-
holdStop();
|
25765
|
-
}
|
25766
25766
|
function clampModel() {
|
25767
25767
|
if (controlsDisabled.value) return;
|
25768
25768
|
if (!vTextFieldRef.value) return;
|
@@ -25809,7 +25809,7 @@
|
|
25809
25809
|
"onClick": onControlClick,
|
25810
25810
|
"onPointerdown": onUpControlMousedown,
|
25811
25811
|
"onPointerup": onControlMouseup,
|
25812
|
-
"onPointercancel":
|
25812
|
+
"onPointercancel": onControlMouseup,
|
25813
25813
|
"size": controlNodeSize.value,
|
25814
25814
|
"tabindex": "-1"
|
25815
25815
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
@@ -25839,7 +25839,7 @@
|
|
25839
25839
|
"onClick": onControlClick,
|
25840
25840
|
"onPointerdown": onDownControlMousedown,
|
25841
25841
|
"onPointerup": onControlMouseup,
|
25842
|
-
"onPointercancel":
|
25842
|
+
"onPointercancel": onControlMouseup,
|
25843
25843
|
"size": controlNodeSize.value,
|
25844
25844
|
"tabindex": "-1"
|
25845
25845
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
@@ -30044,7 +30044,7 @@
|
|
30044
30044
|
emit('toggleExpand', e);
|
30045
30045
|
}
|
30046
30046
|
useRender(() => {
|
30047
|
-
const listItemProps =
|
30047
|
+
const listItemProps = VListItem.filterProps(props);
|
30048
30048
|
const hasPrepend = slots.prepend || props.toggleIcon;
|
30049
30049
|
return vue.createVNode(VListItem, vue.mergeProps({
|
30050
30050
|
"ref": vListItemRef
|
@@ -30055,12 +30055,12 @@
|
|
30055
30055
|
'v-treeview-item--filtered': isFiltered.value
|
30056
30056
|
}, props.class],
|
30057
30057
|
"ripple": false,
|
30058
|
-
"onClick":
|
30058
|
+
"onClick": activateGroupActivator
|
30059
30059
|
}), {
|
30060
30060
|
...slots,
|
30061
30061
|
prepend: hasPrepend ? slotProps => {
|
30062
30062
|
return vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VListItemAction, {
|
30063
|
-
"start":
|
30063
|
+
"start": true
|
30064
30064
|
}, {
|
30065
30065
|
default: () => [props.toggleIcon ? vue.createVNode(VBtn, {
|
30066
30066
|
"density": "compact",
|
@@ -30069,13 +30069,11 @@
|
|
30069
30069
|
"variant": "text",
|
30070
30070
|
"onClick": onClickAction
|
30071
30071
|
}, {
|
30072
|
-
loader() {
|
30073
|
-
|
30074
|
-
|
30075
|
-
|
30076
|
-
|
30077
|
-
}, null);
|
30078
|
-
}
|
30072
|
+
loader: () => vue.createVNode(VProgressCircular, {
|
30073
|
+
"indeterminate": "disable-shrink",
|
30074
|
+
"size": "20",
|
30075
|
+
"width": "2"
|
30076
|
+
}, null)
|
30079
30077
|
}) : vue.createElementVNode("div", {
|
30080
30078
|
"class": "v-treeview-item__level"
|
30081
30079
|
}, null)]
|
@@ -30083,7 +30081,7 @@
|
|
30083
30081
|
} : undefined
|
30084
30082
|
});
|
30085
30083
|
});
|
30086
|
-
return {};
|
30084
|
+
return forwardRefs({}, vListItemRef);
|
30087
30085
|
}
|
30088
30086
|
});
|
30089
30087
|
|
@@ -30108,6 +30106,7 @@
|
|
30108
30106
|
falseIcon: IconValue,
|
30109
30107
|
trueIcon: IconValue,
|
30110
30108
|
returnObject: Boolean,
|
30109
|
+
activatable: Boolean,
|
30111
30110
|
selectable: Boolean,
|
30112
30111
|
selectedColor: String,
|
30113
30112
|
selectStrategy: [String, Function, Object],
|
@@ -30126,7 +30125,8 @@
|
|
30126
30125
|
slots
|
30127
30126
|
} = _ref;
|
30128
30127
|
const isLoading = vue.reactive(new Set());
|
30129
|
-
const
|
30128
|
+
const activatorItems = vue.ref([]);
|
30129
|
+
const isClickOnOpen = vue.computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable && !props.activatable));
|
30130
30130
|
async function checkChildren(item) {
|
30131
30131
|
try {
|
30132
30132
|
if (!props.items?.length || !props.loadChildren) return;
|
@@ -30140,7 +30140,7 @@
|
|
30140
30140
|
}
|
30141
30141
|
function selectItem(select, isSelected) {
|
30142
30142
|
if (props.selectable) {
|
30143
|
-
select(
|
30143
|
+
select(isSelected);
|
30144
30144
|
}
|
30145
30145
|
}
|
30146
30146
|
return () => slots.default?.() ?? props.items?.map((item, index) => {
|
@@ -30168,7 +30168,8 @@
|
|
30168
30168
|
"indeterminateIcon": props.indeterminateIcon,
|
30169
30169
|
"falseIcon": props.falseIcon,
|
30170
30170
|
"trueIcon": props.trueIcon,
|
30171
|
-
"
|
30171
|
+
"onUpdate:modelValue": v => selectItem(slotProps.select, v),
|
30172
|
+
"onClick": e => e.stopPropagation(),
|
30172
30173
|
"onKeydown": e => {
|
30173
30174
|
if (!['Enter', 'Space'].includes(e.key)) return;
|
30174
30175
|
e.stopPropagation();
|
@@ -30215,9 +30216,11 @@
|
|
30215
30216
|
...activatorProps,
|
30216
30217
|
value: itemProps?.value,
|
30217
30218
|
onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
|
30218
|
-
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] :
|
30219
|
+
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
|
30219
30220
|
};
|
30220
|
-
return vue.createVNode(VTreeviewItem, vue.mergeProps(
|
30221
|
+
return vue.createVNode(VTreeviewItem, vue.mergeProps({
|
30222
|
+
"ref": el => activatorItems.value[index] = el
|
30223
|
+
}, listItemProps, {
|
30221
30224
|
"value": props.returnObject ? item.raw : itemProps.value,
|
30222
30225
|
"loading": loading
|
30223
30226
|
}), slotsWithItem);
|
@@ -30894,7 +30897,7 @@
|
|
30894
30897
|
};
|
30895
30898
|
});
|
30896
30899
|
}
|
30897
|
-
const version$1 = "3.9.0-beta.
|
30900
|
+
const version$1 = "3.9.0-beta.1-dev.2025-06-26";
|
30898
30901
|
createVuetify$1.version = version$1;
|
30899
30902
|
|
30900
30903
|
// Vue's inject() can only be used in setup
|
@@ -30919,7 +30922,7 @@
|
|
30919
30922
|
...options
|
30920
30923
|
});
|
30921
30924
|
};
|
30922
|
-
const version = "3.9.0-beta.
|
30925
|
+
const version = "3.9.0-beta.1-dev.2025-06-26";
|
30923
30926
|
createVuetify.version = version;
|
30924
30927
|
|
30925
30928
|
exports.blueprints = index;
|