@vuetify/nightly 3.9.0-beta.1-dev.2025-06-28 → 3.9.0-beta.1-dev.2025-07-04
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 +112 -3
- package/dist/json/attributes.json +3349 -3357
- package/dist/json/importMap-labs.json +26 -26
- package/dist/json/importMap.json +160 -160
- package/dist/json/tags.json +2 -4
- package/dist/json/web-types.json +6608 -6629
- package/dist/vuetify-labs.cjs +179 -121
- package/dist/vuetify-labs.css +3814 -3803
- package/dist/vuetify-labs.d.ts +248 -258
- package/dist/vuetify-labs.esm.js +179 -121
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +179 -121
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +154 -97
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3909 -3898
- package/dist/vuetify.d.ts +105 -115
- package/dist/vuetify.esm.js +154 -97
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +154 -97
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +102 -89
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.css +12 -1
- package/lib/components/VDataTable/VDataTable.d.ts +20 -38
- package/lib/components/VDataTable/VDataTable.sass +12 -2
- package/lib/components/VDataTable/VDataTableColumn.d.ts +9 -3
- package/lib/components/VDataTable/VDataTableColumn.js +12 -4
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
- package/lib/components/VDataTable/VDataTableHeaders.js +10 -9
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.js +2 -0
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +10 -23
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +10 -23
- package/lib/components/VDataTable/composables/headers.d.ts +22 -14
- package/lib/components/VDataTable/composables/headers.js +51 -22
- package/lib/components/VDataTable/composables/headers.js.map +1 -1
- package/lib/components/VDataTable/composables/sort.js +2 -1
- package/lib/components/VDataTable/composables/sort.js.map +1 -1
- package/lib/components/VDataTable/types.d.ts +3 -1
- package/lib/components/VDataTable/types.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js +1 -2
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VList/VListGroup.d.ts +13 -0
- package/lib/components/VList/VListGroup.js +2 -1
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VList/VListItem.d.ts +6 -3
- package/lib/components/VList/VListItem.js +1 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +17 -14
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.js +1 -1
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +1 -1
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTreeview/VTreeview.d.ts +6 -21
- package/lib/components/VTreeview/VTreeview.js +6 -9
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewGroup.d.ts +13 -0
- package/lib/components/VTreeview/VTreeviewItem.d.ts +18 -9
- package/lib/components/VTreeview/VTreeviewItem.js +1 -1
- package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
- package/lib/composables/calendar.d.ts +0 -1
- package/lib/composables/calendar.js +6 -10
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/adapters/vuetify.js +1 -1
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/nested/nested.d.ts +7 -4
- package/lib/composables/nested/nested.js +16 -6
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/composables/nested/selectStrategies.d.ts +2 -1
- package/lib/composables/nested/selectStrategies.js +22 -11
- package/lib/composables/nested/selectStrategies.js.map +1 -1
- package/lib/composables/virtual.js +1 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +60 -57
- package/lib/framework.js +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendar.js +9 -9
- package/lib/labs/VCalendar/VCalendar.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendarDay.js +1 -1
- package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
- package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
- package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.js +1 -0
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify.esm.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.9.0-beta.1-dev.2025-
|
2
|
+
* Vuetify v3.9.0-beta.1-dev.2025-07-04
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -9100,7 +9100,7 @@ const independentSelectStrategy = mandatory => {
|
|
9100
9100
|
selected.set(id, value ? 'on' : 'off');
|
9101
9101
|
return selected;
|
9102
9102
|
},
|
9103
|
-
in: (v, children, parents) => {
|
9103
|
+
in: (v, children, parents, disabled) => {
|
9104
9104
|
const map = new Map();
|
9105
9105
|
for (const id of v || []) {
|
9106
9106
|
strategy.select({
|
@@ -9108,7 +9108,8 @@ const independentSelectStrategy = mandatory => {
|
|
9108
9108
|
value: true,
|
9109
9109
|
selected: map,
|
9110
9110
|
children,
|
9111
|
-
parents
|
9111
|
+
parents,
|
9112
|
+
disabled
|
9112
9113
|
});
|
9113
9114
|
}
|
9114
9115
|
return map;
|
@@ -9140,9 +9141,9 @@ const independentSingleSelectStrategy = mandatory => {
|
|
9140
9141
|
selected: singleSelected
|
9141
9142
|
});
|
9142
9143
|
},
|
9143
|
-
in: (v, children, parents) => {
|
9144
|
+
in: (v, children, parents, disabled) => {
|
9144
9145
|
if (v?.length) {
|
9145
|
-
return parentStrategy.in(v.slice(0, 1), children, parents);
|
9146
|
+
return parentStrategy.in(v.slice(0, 1), children, parents, disabled);
|
9146
9147
|
}
|
9147
9148
|
return new Map();
|
9148
9149
|
},
|
@@ -9208,23 +9209,32 @@ const classicSelectStrategy = mandatory => {
|
|
9208
9209
|
value,
|
9209
9210
|
selected,
|
9210
9211
|
children,
|
9211
|
-
parents
|
9212
|
+
parents,
|
9213
|
+
disabled
|
9212
9214
|
} = _ref6;
|
9213
9215
|
id = toRaw(id);
|
9214
9216
|
const original = new Map(selected);
|
9215
9217
|
const items = [id];
|
9216
9218
|
while (items.length) {
|
9217
9219
|
const item = items.shift();
|
9218
|
-
|
9220
|
+
if (!disabled.has(item)) {
|
9221
|
+
selected.set(toRaw(item), value ? 'on' : 'off');
|
9222
|
+
}
|
9219
9223
|
if (children.has(item)) {
|
9220
9224
|
items.push(...children.get(item));
|
9221
9225
|
}
|
9222
9226
|
}
|
9223
9227
|
let parent = toRaw(parents.get(id));
|
9224
9228
|
while (parent) {
|
9225
|
-
|
9226
|
-
|
9227
|
-
|
9229
|
+
let everySelected = true;
|
9230
|
+
let noneSelected = true;
|
9231
|
+
for (const child of children.get(parent)) {
|
9232
|
+
const cid = toRaw(child);
|
9233
|
+
if (disabled.has(cid)) continue;
|
9234
|
+
if (selected.get(cid) !== 'on') everySelected = false;
|
9235
|
+
if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false;
|
9236
|
+
if (!everySelected && !noneSelected) break;
|
9237
|
+
}
|
9228
9238
|
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
9229
9239
|
parent = toRaw(parents.get(parent));
|
9230
9240
|
}
|
@@ -9241,7 +9251,7 @@ const classicSelectStrategy = mandatory => {
|
|
9241
9251
|
}
|
9242
9252
|
return selected;
|
9243
9253
|
},
|
9244
|
-
in: (v, children, parents) => {
|
9254
|
+
in: (v, children, parents, disabled) => {
|
9245
9255
|
let map = new Map();
|
9246
9256
|
for (const id of v || []) {
|
9247
9257
|
map = strategy.select({
|
@@ -9249,7 +9259,8 @@ const classicSelectStrategy = mandatory => {
|
|
9249
9259
|
value: true,
|
9250
9260
|
selected: map,
|
9251
9261
|
children,
|
9252
|
-
parents
|
9262
|
+
parents,
|
9263
|
+
disabled
|
9253
9264
|
});
|
9254
9265
|
}
|
9255
9266
|
return map;
|
@@ -9296,8 +9307,9 @@ const emptyNested = {
|
|
9296
9307
|
root: {
|
9297
9308
|
register: () => null,
|
9298
9309
|
unregister: () => null,
|
9299
|
-
parents: ref(new Map()),
|
9300
9310
|
children: ref(new Map()),
|
9311
|
+
parents: ref(new Map()),
|
9312
|
+
disabled: ref(new Set()),
|
9301
9313
|
open: () => null,
|
9302
9314
|
openOnSelect: () => null,
|
9303
9315
|
activate: () => null,
|
@@ -9326,6 +9338,7 @@ const useNested = props => {
|
|
9326
9338
|
let isUnmounted = false;
|
9327
9339
|
const children = shallowRef(new Map());
|
9328
9340
|
const parents = shallowRef(new Map());
|
9341
|
+
const disabled = shallowRef(new Set());
|
9329
9342
|
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v), v => [...v.values()]);
|
9330
9343
|
const activeStrategy = computed(() => {
|
9331
9344
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
@@ -9374,7 +9387,7 @@ const useNested = props => {
|
|
9374
9387
|
}
|
9375
9388
|
});
|
9376
9389
|
const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
|
9377
|
-
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));
|
9390
|
+
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
|
9378
9391
|
onBeforeUnmount(() => {
|
9379
9392
|
isUnmounted = true;
|
9380
9393
|
});
|
@@ -9404,7 +9417,7 @@ const useNested = props => {
|
|
9404
9417
|
}
|
9405
9418
|
return arr;
|
9406
9419
|
}),
|
9407
|
-
register: (id, parentId, isGroup) => {
|
9420
|
+
register: (id, parentId, isDisabled, isGroup) => {
|
9408
9421
|
if (nodeIds.has(id)) {
|
9409
9422
|
const path = getPath(id).map(String).join(' -> ');
|
9410
9423
|
const newPath = getPath(parentId).concat(id).map(String).join(' -> ');
|
@@ -9414,6 +9427,7 @@ const useNested = props => {
|
|
9414
9427
|
nodeIds.add(id);
|
9415
9428
|
}
|
9416
9429
|
parentId && id !== parentId && parents.value.set(id, parentId);
|
9430
|
+
isDisabled && disabled.value.add(id);
|
9417
9431
|
isGroup && children.value.set(id, []);
|
9418
9432
|
if (parentId != null) {
|
9419
9433
|
children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
|
@@ -9423,6 +9437,7 @@ const useNested = props => {
|
|
9423
9437
|
if (isUnmounted) return;
|
9424
9438
|
nodeIds.delete(id);
|
9425
9439
|
children.value.delete(id);
|
9440
|
+
disabled.value.delete(id);
|
9426
9441
|
const parent = parents.value.get(id);
|
9427
9442
|
if (parent) {
|
9428
9443
|
const list = children.value.get(parent) ?? [];
|
@@ -9472,6 +9487,7 @@ const useNested = props => {
|
|
9472
9487
|
selected: new Map(selected.value),
|
9473
9488
|
children: children.value,
|
9474
9489
|
parents: parents.value,
|
9490
|
+
disabled: disabled.value,
|
9475
9491
|
event
|
9476
9492
|
});
|
9477
9493
|
newSelected && (selected.value = newSelected);
|
@@ -9514,13 +9530,14 @@ const useNested = props => {
|
|
9514
9530
|
},
|
9515
9531
|
children,
|
9516
9532
|
parents,
|
9533
|
+
disabled,
|
9517
9534
|
getPath
|
9518
9535
|
}
|
9519
9536
|
};
|
9520
9537
|
provide(VNestedSymbol, nested);
|
9521
9538
|
return nested.root;
|
9522
9539
|
};
|
9523
|
-
const useNestedItem = (id, isGroup) => {
|
9540
|
+
const useNestedItem = (id, isDisabled, isGroup) => {
|
9524
9541
|
const parent = inject$1(VNestedSymbol, emptyNested);
|
9525
9542
|
const uidSymbol = Symbol('nested item');
|
9526
9543
|
const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol);
|
@@ -9540,10 +9557,14 @@ const useNestedItem = (id, isGroup) => {
|
|
9540
9557
|
isGroupActivator: parent.isGroupActivator
|
9541
9558
|
};
|
9542
9559
|
onBeforeMount(() => {
|
9543
|
-
!parent.isGroupActivator
|
9560
|
+
if (!parent.isGroupActivator) {
|
9561
|
+
parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup);
|
9562
|
+
}
|
9544
9563
|
});
|
9545
9564
|
onBeforeUnmount(() => {
|
9546
|
-
!parent.isGroupActivator
|
9565
|
+
if (!parent.isGroupActivator) {
|
9566
|
+
parent.root.unregister(computedId.value);
|
9567
|
+
}
|
9547
9568
|
});
|
9548
9569
|
isGroup && provide(VNestedSymbol, item);
|
9549
9570
|
return item;
|
@@ -9575,6 +9596,7 @@ const makeVListGroupProps = propsFactory({
|
|
9575
9596
|
type: IconValue,
|
9576
9597
|
default: '$collapse'
|
9577
9598
|
},
|
9599
|
+
disabled: Boolean,
|
9578
9600
|
expandIcon: {
|
9579
9601
|
type: IconValue,
|
9580
9602
|
default: '$expand'
|
@@ -9600,7 +9622,7 @@ const VListGroup = genericComponent()({
|
|
9600
9622
|
isOpen,
|
9601
9623
|
open,
|
9602
9624
|
id: _id
|
9603
|
-
} = useNestedItem(() => props.value, true);
|
9625
|
+
} = useNestedItem(() => props.value, () => props.disabled, true);
|
9604
9626
|
const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
|
9605
9627
|
const list = useList();
|
9606
9628
|
const {
|
@@ -9770,7 +9792,7 @@ const VListItem = genericComponent()({
|
|
9770
9792
|
parent,
|
9771
9793
|
openOnSelect,
|
9772
9794
|
id: uid
|
9773
|
-
} = useNestedItem(id, false);
|
9795
|
+
} = useNestedItem(id, () => props.disabled, false);
|
9774
9796
|
const list = useList();
|
9775
9797
|
const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
|
9776
9798
|
const isLink = toRef(() => props.link !== false && link.isLink.value);
|
@@ -10730,7 +10752,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
10730
10752
|
});
|
10731
10753
|
if (flipped.isFull) {
|
10732
10754
|
const values = flipped.values();
|
10733
|
-
if (deepEqual(values.at(-1), values.at(-3))) {
|
10755
|
+
if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {
|
10734
10756
|
// Flipping is causing a container resize loop
|
10735
10757
|
return;
|
10736
10758
|
}
|
@@ -12580,7 +12602,7 @@ const VTextField = genericComponent()({
|
|
12580
12602
|
if (!isFocused.value) focus();
|
12581
12603
|
nextTick(() => {
|
12582
12604
|
if (inputRef.value !== document.activeElement) {
|
12583
|
-
inputRef.value?.focus();
|
12605
|
+
nextTick(() => inputRef.value?.focus());
|
12584
12606
|
}
|
12585
12607
|
});
|
12586
12608
|
}
|
@@ -12919,7 +12941,7 @@ function useVirtual(props, items) {
|
|
12919
12941
|
raf = requestAnimationFrame(_calculateVisibleItems);
|
12920
12942
|
}
|
12921
12943
|
function _calculateVisibleItems() {
|
12922
|
-
if (!containerRef.value || !viewportHeight.value) return;
|
12944
|
+
if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;
|
12923
12945
|
const scrollTop = lastScrollTop - markerOffset;
|
12924
12946
|
const direction = Math.sign(scrollVelocity);
|
12925
12947
|
const startPx = Math.max(0, scrollTop - BUFFER_PX);
|
@@ -17802,7 +17824,7 @@ function format(value, formatString, locale, formats) {
|
|
17802
17824
|
case 'fullDate':
|
17803
17825
|
options = {
|
17804
17826
|
year: 'numeric',
|
17805
|
-
month: '
|
17827
|
+
month: 'short',
|
17806
17828
|
day: 'numeric'
|
17807
17829
|
};
|
17808
17830
|
break;
|
@@ -20119,7 +20141,8 @@ function sortItems(items, sortByItems, locale, options) {
|
|
20119
20141
|
|
20120
20142
|
// Dates should be compared numerically
|
20121
20143
|
if (sortA instanceof Date && sortB instanceof Date) {
|
20122
|
-
|
20144
|
+
sortA = sortA.getTime();
|
20145
|
+
sortB = sortB.getTime();
|
20123
20146
|
}
|
20124
20147
|
[sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
|
20125
20148
|
if (sortA !== sortB) {
|
@@ -20828,10 +20851,15 @@ const VDataTableColumn = defineFunctionalComponent({
|
|
20828
20851
|
type: String,
|
20829
20852
|
default: 'start'
|
20830
20853
|
},
|
20831
|
-
fixed:
|
20854
|
+
fixed: {
|
20855
|
+
type: [Boolean, String],
|
20856
|
+
default: false
|
20857
|
+
},
|
20832
20858
|
fixedOffset: [Number, String],
|
20859
|
+
fixedEndOffset: [Number, String],
|
20833
20860
|
height: [Number, String],
|
20834
20861
|
lastFixed: Boolean,
|
20862
|
+
firstFixedEnd: Boolean,
|
20835
20863
|
noPadding: Boolean,
|
20836
20864
|
tag: String,
|
20837
20865
|
width: [Number, String],
|
@@ -20842,11 +20870,13 @@ const VDataTableColumn = defineFunctionalComponent({
|
|
20842
20870
|
slots
|
20843
20871
|
} = _ref;
|
20844
20872
|
const Tag = props.tag ?? 'td';
|
20873
|
+
const fixedSide = typeof props.fixed === 'string' ? props.fixed : props.fixed ? 'start' : 'none';
|
20845
20874
|
return createVNode(Tag, {
|
20846
|
-
"tabindex": "0",
|
20847
20875
|
"class": normalizeClass(['v-data-table__td', {
|
20848
|
-
'v-data-table-column--fixed':
|
20876
|
+
'v-data-table-column--fixed': fixedSide === 'start',
|
20877
|
+
'v-data-table-column--fixed-end': fixedSide === 'end',
|
20849
20878
|
'v-data-table-column--last-fixed': props.lastFixed,
|
20879
|
+
'v-data-table-column--first-fixed-end': props.firstFixedEnd,
|
20850
20880
|
'v-data-table-column--no-padding': props.noPadding,
|
20851
20881
|
'v-data-table-column--nowrap': props.nowrap
|
20852
20882
|
}, `v-data-table-column--align-${props.align}`]),
|
@@ -20854,7 +20884,8 @@ const VDataTableColumn = defineFunctionalComponent({
|
|
20854
20884
|
height: convertToUnit(props.height),
|
20855
20885
|
width: convertToUnit(props.width),
|
20856
20886
|
maxWidth: convertToUnit(props.maxWidth),
|
20857
|
-
left: convertToUnit(props.fixedOffset || null)
|
20887
|
+
left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
|
20888
|
+
right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
|
20858
20889
|
}
|
20859
20890
|
}, {
|
20860
20891
|
default: () => [slots.default?.()]
|
@@ -20951,20 +20982,28 @@ function getDepth(item) {
|
|
20951
20982
|
}
|
20952
20983
|
function parseFixedColumns(items) {
|
20953
20984
|
let seenFixed = false;
|
20954
|
-
function setFixed(item) {
|
20955
|
-
let
|
20985
|
+
function setFixed(item, side) {
|
20986
|
+
let parentFixedSide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
|
20956
20987
|
if (!item) return;
|
20957
|
-
if (
|
20958
|
-
item.fixed =
|
20988
|
+
if (parentFixedSide !== 'none') {
|
20989
|
+
item.fixed = parentFixedSide;
|
20959
20990
|
}
|
20960
|
-
|
20961
|
-
|
20962
|
-
|
20963
|
-
|
20991
|
+
|
20992
|
+
// normalize to simplify logic below
|
20993
|
+
if (item.fixed === true) {
|
20994
|
+
item.fixed = 'start';
|
20995
|
+
}
|
20996
|
+
const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
|
20997
|
+
if (item.fixed === side) {
|
20998
|
+
if (orderedChildren) {
|
20999
|
+
for (const child of orderedChildren) {
|
21000
|
+
setFixed(child, side, side);
|
20964
21001
|
}
|
20965
21002
|
} else {
|
20966
|
-
if (!seenFixed) {
|
21003
|
+
if (!seenFixed && side === 'start') {
|
20967
21004
|
item.lastFixed = true;
|
21005
|
+
} else if (!seenFixed && side === 'end') {
|
21006
|
+
item.firstFixedEnd = true;
|
20968
21007
|
} else if (isNaN(Number(item.width))) {
|
20969
21008
|
consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
|
20970
21009
|
} else {
|
@@ -20973,36 +21012,57 @@ function parseFixedColumns(items) {
|
|
20973
21012
|
seenFixed = true;
|
20974
21013
|
}
|
20975
21014
|
} else {
|
20976
|
-
if (
|
20977
|
-
for (
|
20978
|
-
setFixed(
|
21015
|
+
if (orderedChildren) {
|
21016
|
+
for (const child of orderedChildren) {
|
21017
|
+
setFixed(child, side);
|
20979
21018
|
}
|
20980
21019
|
} else {
|
20981
21020
|
seenFixed = false;
|
20982
21021
|
}
|
20983
21022
|
}
|
20984
21023
|
}
|
20985
|
-
for (
|
20986
|
-
setFixed(
|
21024
|
+
for (const item of items.toReversed()) {
|
21025
|
+
setFixed(item, 'start');
|
21026
|
+
}
|
21027
|
+
for (const item of items) {
|
21028
|
+
setFixed(item, 'end');
|
20987
21029
|
}
|
20988
21030
|
function setFixedOffset(item) {
|
20989
|
-
let
|
20990
|
-
if (!item) return
|
21031
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
21032
|
+
if (!item) return offset;
|
20991
21033
|
if (item.children) {
|
20992
|
-
item.fixedOffset =
|
21034
|
+
item.fixedOffset = offset;
|
20993
21035
|
for (const child of item.children) {
|
20994
|
-
|
21036
|
+
offset = setFixedOffset(child, offset);
|
20995
21037
|
}
|
20996
|
-
} else if (item.fixed) {
|
20997
|
-
item.fixedOffset =
|
20998
|
-
|
21038
|
+
} else if (item.fixed && item.fixed !== 'end') {
|
21039
|
+
item.fixedOffset = offset;
|
21040
|
+
offset += parseFloat(item.width || '0') || 0;
|
20999
21041
|
}
|
21000
|
-
return
|
21042
|
+
return offset;
|
21001
21043
|
}
|
21002
21044
|
let fixedOffset = 0;
|
21003
21045
|
for (const item of items) {
|
21004
21046
|
fixedOffset = setFixedOffset(item, fixedOffset);
|
21005
21047
|
}
|
21048
|
+
function setFixedEndOffset(item) {
|
21049
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
21050
|
+
if (!item) return offset;
|
21051
|
+
if (item.children) {
|
21052
|
+
item.fixedEndOffset = offset;
|
21053
|
+
for (const child of item.children) {
|
21054
|
+
offset = setFixedEndOffset(child, offset);
|
21055
|
+
}
|
21056
|
+
} else if (item.fixed === 'end') {
|
21057
|
+
item.fixedEndOffset = offset;
|
21058
|
+
offset += parseFloat(item.width || '0') || 0;
|
21059
|
+
}
|
21060
|
+
return offset;
|
21061
|
+
}
|
21062
|
+
let fixedEndOffset = 0;
|
21063
|
+
for (const item of items.toReversed()) {
|
21064
|
+
fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
|
21065
|
+
}
|
21006
21066
|
}
|
21007
21067
|
function parse(items, maxDepth) {
|
21008
21068
|
const headers = [];
|
@@ -21135,7 +21195,6 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
21135
21195
|
color: String,
|
21136
21196
|
disableSort: Boolean,
|
21137
21197
|
fixedHeader: Boolean,
|
21138
|
-
lastFixed: Boolean,
|
21139
21198
|
multiSort: Boolean,
|
21140
21199
|
sortAscIcon: {
|
21141
21200
|
type: IconValue,
|
@@ -21182,11 +21241,12 @@ const VDataTableHeaders = genericComponent()({
|
|
21182
21241
|
loaderClasses
|
21183
21242
|
} = useLoader(props);
|
21184
21243
|
function getFixedStyles(column, y) {
|
21185
|
-
if (!(props.sticky || props.fixedHeader) && !
|
21244
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
21245
|
+
const fixedSide = typeof column.fixed === 'string' ? column.fixed : column.fixed ? 'start' : 'none';
|
21186
21246
|
return {
|
21187
21247
|
position: 'sticky',
|
21188
|
-
left:
|
21189
|
-
right:
|
21248
|
+
left: fixedSide === 'start' ? convertToUnit(column.fixedOffset) : undefined,
|
21249
|
+
right: fixedSide === 'end' ? convertToUnit(column.fixedEndOffset) : undefined,
|
21190
21250
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
21191
21251
|
};
|
21192
21252
|
}
|
@@ -21246,14 +21306,15 @@ const VDataTableHeaders = genericComponent()({
|
|
21246
21306
|
},
|
21247
21307
|
"colspan": column.colspan,
|
21248
21308
|
"rowspan": column.rowspan,
|
21249
|
-
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
21250
21309
|
"fixed": column.fixed,
|
21251
21310
|
"nowrap": column.nowrap,
|
21252
21311
|
"lastFixed": column.lastFixed,
|
21253
|
-
"
|
21254
|
-
|
21255
|
-
"
|
21256
|
-
|
21312
|
+
"firstFixedEnd": column.firstFixedEnd,
|
21313
|
+
"noPadding": noPadding,
|
21314
|
+
"tabindex": column.sortable ? 0 : undefined,
|
21315
|
+
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
21316
|
+
"onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
|
21317
|
+
}, headerProps), {
|
21257
21318
|
default: () => {
|
21258
21319
|
const columnSlotName = `header.${column.key}`;
|
21259
21320
|
const columnSlotProps = {
|
@@ -21529,7 +21590,9 @@ const VDataTableRow = genericComponent()({
|
|
21529
21590
|
},
|
21530
21591
|
"fixed": column.fixed,
|
21531
21592
|
"fixedOffset": column.fixedOffset,
|
21593
|
+
"fixedEndOffset": column.fixedEndOffset,
|
21532
21594
|
"lastFixed": column.lastFixed,
|
21595
|
+
"firstFixedEnd": column.firstFixedEnd,
|
21533
21596
|
"maxWidth": !mobile.value ? column.maxWidth : undefined,
|
21534
21597
|
"noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
|
21535
21598
|
"nowrap": column.nowrap,
|
@@ -22939,13 +23002,9 @@ function useCalendar(props) {
|
|
22939
23002
|
const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));
|
22940
23003
|
return adapter.setMonth(date, value);
|
22941
23004
|
}, v => adapter.getMonth(v));
|
22942
|
-
const weekDays = computed(() => {
|
22943
|
-
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
22944
|
-
return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
|
22945
|
-
});
|
22946
23005
|
const weekdayLabels = computed(() => {
|
22947
|
-
const
|
22948
|
-
return
|
23006
|
+
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
23007
|
+
return adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).filter((_, i) => props.weekdays.includes((i + firstDayOfWeek) % 7));
|
22949
23008
|
});
|
22950
23009
|
const weeksInMonth = computed(() => {
|
22951
23010
|
const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
|
@@ -22969,13 +23028,14 @@ function useCalendar(props) {
|
|
22969
23028
|
});
|
22970
23029
|
function genDays(days, today) {
|
22971
23030
|
return days.filter(date => {
|
22972
|
-
return
|
23031
|
+
return props.weekdays.includes(adapter.toJsDate(date).getDay());
|
22973
23032
|
}).map((date, index) => {
|
22974
23033
|
const isoDate = adapter.toISO(date);
|
22975
23034
|
const isAdjacent = !adapter.isSameMonth(date, month.value);
|
22976
23035
|
const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
|
22977
23036
|
const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));
|
22978
23037
|
const isSame = adapter.isSameDay(date, month.value);
|
23038
|
+
const weekdaysCount = props.weekdays.length;
|
22979
23039
|
return {
|
22980
23040
|
date,
|
22981
23041
|
formatted: adapter.format(date, 'keyboardDate'),
|
@@ -22987,8 +23047,8 @@ function useCalendar(props) {
|
|
22987
23047
|
isSelected: model.value.some(value => adapter.isSameDay(date, value)),
|
22988
23048
|
isStart,
|
22989
23049
|
isToday: adapter.isSameDay(date, today),
|
22990
|
-
isWeekEnd: index %
|
22991
|
-
isWeekStart: index %
|
23050
|
+
isWeekEnd: index % weekdaysCount === weekdaysCount - 1,
|
23051
|
+
isWeekStart: index % weekdaysCount === 0,
|
22992
23052
|
isoDate,
|
22993
23053
|
localized: adapter.format(date, 'dayOfMonth'),
|
22994
23054
|
month: adapter.getMonth(date),
|
@@ -23035,7 +23095,6 @@ function useCalendar(props) {
|
|
23035
23095
|
genDays,
|
23036
23096
|
model,
|
23037
23097
|
weeksInMonth,
|
23038
|
-
weekDays,
|
23039
23098
|
weekdayLabels,
|
23040
23099
|
weekNumbers
|
23041
23100
|
};
|
@@ -23076,7 +23135,6 @@ const VDatePickerMonth = genericComponent()({
|
|
23076
23135
|
daysInMonth,
|
23077
23136
|
model,
|
23078
23137
|
weekNumbers,
|
23079
|
-
weekDays,
|
23080
23138
|
weekdayLabels
|
23081
23139
|
} = useCalendar(props);
|
23082
23140
|
const adapter = useDate();
|
@@ -23151,7 +23209,7 @@ const VDatePickerMonth = genericComponent()({
|
|
23151
23209
|
useRender(() => createElementVNode("div", {
|
23152
23210
|
"class": "v-date-picker-month",
|
23153
23211
|
"style": {
|
23154
|
-
'--v-date-picker-days-in-week':
|
23212
|
+
'--v-date-picker-days-in-week': props.weekdays.length
|
23155
23213
|
}
|
23156
23214
|
}, [props.showWeek && createElementVNode("div", {
|
23157
23215
|
"key": "weeks",
|
@@ -26322,19 +26380,21 @@ const VOtpInput = genericComponent()({
|
|
26322
26380
|
const contentRef = ref();
|
26323
26381
|
const inputRef = ref([]);
|
26324
26382
|
const current = computed(() => inputRef.value[focusIndex.value]);
|
26325
|
-
|
26326
|
-
|
26327
|
-
|
26328
|
-
|
26329
|
-
|
26330
|
-
|
26331
|
-
|
26332
|
-
|
26333
|
-
|
26334
|
-
|
26335
|
-
|
26336
|
-
|
26337
|
-
|
26383
|
+
useToggleScope(() => props.autofocus, () => {
|
26384
|
+
const intersectScope = effectScope();
|
26385
|
+
intersectScope.run(() => {
|
26386
|
+
const {
|
26387
|
+
intersectionRef,
|
26388
|
+
isIntersecting
|
26389
|
+
} = useIntersectionObserver();
|
26390
|
+
watchEffect(() => {
|
26391
|
+
intersectionRef.value = inputRef.value[0];
|
26392
|
+
});
|
26393
|
+
watch(isIntersecting, v => {
|
26394
|
+
if (!v) return;
|
26395
|
+
intersectionRef.value?.focus();
|
26396
|
+
intersectScope.stop();
|
26397
|
+
});
|
26338
26398
|
});
|
26339
26399
|
});
|
26340
26400
|
function onInput() {
|
@@ -30385,7 +30445,7 @@ const VTreeviewItem = genericComponent()({
|
|
30385
30445
|
return createVNode(VListItem, mergeProps({
|
30386
30446
|
"ref": vListItemRef
|
30387
30447
|
}, listItemProps, {
|
30388
|
-
"active": vListItemRef.value?.isActivated,
|
30448
|
+
"active": vListItemRef.value?.isActivated || undefined,
|
30389
30449
|
"class": ['v-treeview-item', {
|
30390
30450
|
'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
|
30391
30451
|
'v-treeview-item--filtered': isFiltered.value
|
@@ -30597,10 +30657,7 @@ const makeVTreeviewProps = propsFactory({
|
|
30597
30657
|
expandIcon: '$treeviewExpand',
|
30598
30658
|
slim: true
|
30599
30659
|
}), ['itemType', 'nav', 'openStrategy']),
|
30600
|
-
modelValue:
|
30601
|
-
type: Array,
|
30602
|
-
default: () => []
|
30603
|
-
}
|
30660
|
+
modelValue: Array
|
30604
30661
|
}, 'VTreeview');
|
30605
30662
|
const VTreeview = genericComponent()({
|
30606
30663
|
name: 'VTreeview',
|
@@ -30615,7 +30672,8 @@ const VTreeview = genericComponent()({
|
|
30615
30672
|
},
|
30616
30673
|
setup(props, _ref) {
|
30617
30674
|
let {
|
30618
|
-
slots
|
30675
|
+
slots,
|
30676
|
+
emit
|
30619
30677
|
} = _ref;
|
30620
30678
|
const {
|
30621
30679
|
items
|
@@ -30624,13 +30682,12 @@ const VTreeview = genericComponent()({
|
|
30624
30682
|
const baseColor = toRef(() => props.baseColor);
|
30625
30683
|
const color = toRef(() => props.color);
|
30626
30684
|
const activated = useProxiedModel(props, 'activated');
|
30627
|
-
const
|
30628
|
-
const _selected = useProxiedModel(props, 'selected', props.modelValue);
|
30685
|
+
const _selected = useProxiedModel(props, 'selected');
|
30629
30686
|
const selected = computed({
|
30630
|
-
get: () => _selected.value,
|
30687
|
+
get: () => props.modelValue ?? _selected.value,
|
30631
30688
|
set(val) {
|
30632
30689
|
_selected.value = val;
|
30633
|
-
|
30690
|
+
emit('update:modelValue', val);
|
30634
30691
|
}
|
30635
30692
|
});
|
30636
30693
|
const vListRef = ref();
|
@@ -31233,7 +31290,7 @@ function createVuetify$1() {
|
|
31233
31290
|
};
|
31234
31291
|
});
|
31235
31292
|
}
|
31236
|
-
const version$1 = "3.9.0-beta.1-dev.2025-
|
31293
|
+
const version$1 = "3.9.0-beta.1-dev.2025-07-04";
|
31237
31294
|
createVuetify$1.version = version$1;
|
31238
31295
|
|
31239
31296
|
// Vue's inject() can only be used in setup
|
@@ -31258,7 +31315,7 @@ const createVuetify = function () {
|
|
31258
31315
|
...options
|
31259
31316
|
});
|
31260
31317
|
};
|
31261
|
-
const version = "3.9.0-beta.1-dev.2025-
|
31318
|
+
const version = "3.9.0-beta.1-dev.2025-07-04";
|
31262
31319
|
createVuetify.version = version;
|
31263
31320
|
|
31264
31321
|
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };
|