@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.cjs
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
|
*/
|
@@ -9104,7 +9104,7 @@
|
|
9104
9104
|
selected.set(id, value ? 'on' : 'off');
|
9105
9105
|
return selected;
|
9106
9106
|
},
|
9107
|
-
in: (v, children, parents) => {
|
9107
|
+
in: (v, children, parents, disabled) => {
|
9108
9108
|
const map = new Map();
|
9109
9109
|
for (const id of v || []) {
|
9110
9110
|
strategy.select({
|
@@ -9112,7 +9112,8 @@
|
|
9112
9112
|
value: true,
|
9113
9113
|
selected: map,
|
9114
9114
|
children,
|
9115
|
-
parents
|
9115
|
+
parents,
|
9116
|
+
disabled
|
9116
9117
|
});
|
9117
9118
|
}
|
9118
9119
|
return map;
|
@@ -9144,9 +9145,9 @@
|
|
9144
9145
|
selected: singleSelected
|
9145
9146
|
});
|
9146
9147
|
},
|
9147
|
-
in: (v, children, parents) => {
|
9148
|
+
in: (v, children, parents, disabled) => {
|
9148
9149
|
if (v?.length) {
|
9149
|
-
return parentStrategy.in(v.slice(0, 1), children, parents);
|
9150
|
+
return parentStrategy.in(v.slice(0, 1), children, parents, disabled);
|
9150
9151
|
}
|
9151
9152
|
return new Map();
|
9152
9153
|
},
|
@@ -9212,23 +9213,32 @@
|
|
9212
9213
|
value,
|
9213
9214
|
selected,
|
9214
9215
|
children,
|
9215
|
-
parents
|
9216
|
+
parents,
|
9217
|
+
disabled
|
9216
9218
|
} = _ref6;
|
9217
9219
|
id = vue.toRaw(id);
|
9218
9220
|
const original = new Map(selected);
|
9219
9221
|
const items = [id];
|
9220
9222
|
while (items.length) {
|
9221
9223
|
const item = items.shift();
|
9222
|
-
|
9224
|
+
if (!disabled.has(item)) {
|
9225
|
+
selected.set(vue.toRaw(item), value ? 'on' : 'off');
|
9226
|
+
}
|
9223
9227
|
if (children.has(item)) {
|
9224
9228
|
items.push(...children.get(item));
|
9225
9229
|
}
|
9226
9230
|
}
|
9227
9231
|
let parent = vue.toRaw(parents.get(id));
|
9228
9232
|
while (parent) {
|
9229
|
-
|
9230
|
-
|
9231
|
-
|
9233
|
+
let everySelected = true;
|
9234
|
+
let noneSelected = true;
|
9235
|
+
for (const child of children.get(parent)) {
|
9236
|
+
const cid = vue.toRaw(child);
|
9237
|
+
if (disabled.has(cid)) continue;
|
9238
|
+
if (selected.get(cid) !== 'on') everySelected = false;
|
9239
|
+
if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false;
|
9240
|
+
if (!everySelected && !noneSelected) break;
|
9241
|
+
}
|
9232
9242
|
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
9233
9243
|
parent = vue.toRaw(parents.get(parent));
|
9234
9244
|
}
|
@@ -9245,7 +9255,7 @@
|
|
9245
9255
|
}
|
9246
9256
|
return selected;
|
9247
9257
|
},
|
9248
|
-
in: (v, children, parents) => {
|
9258
|
+
in: (v, children, parents, disabled) => {
|
9249
9259
|
let map = new Map();
|
9250
9260
|
for (const id of v || []) {
|
9251
9261
|
map = strategy.select({
|
@@ -9253,7 +9263,8 @@
|
|
9253
9263
|
value: true,
|
9254
9264
|
selected: map,
|
9255
9265
|
children,
|
9256
|
-
parents
|
9266
|
+
parents,
|
9267
|
+
disabled
|
9257
9268
|
});
|
9258
9269
|
}
|
9259
9270
|
return map;
|
@@ -9300,8 +9311,9 @@
|
|
9300
9311
|
root: {
|
9301
9312
|
register: () => null,
|
9302
9313
|
unregister: () => null,
|
9303
|
-
parents: vue.ref(new Map()),
|
9304
9314
|
children: vue.ref(new Map()),
|
9315
|
+
parents: vue.ref(new Map()),
|
9316
|
+
disabled: vue.ref(new Set()),
|
9305
9317
|
open: () => null,
|
9306
9318
|
openOnSelect: () => null,
|
9307
9319
|
activate: () => null,
|
@@ -9330,6 +9342,7 @@
|
|
9330
9342
|
let isUnmounted = false;
|
9331
9343
|
const children = vue.shallowRef(new Map());
|
9332
9344
|
const parents = vue.shallowRef(new Map());
|
9345
|
+
const disabled = vue.shallowRef(new Set());
|
9333
9346
|
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => vue.toRaw(i)) : v), v => [...v.values()]);
|
9334
9347
|
const activeStrategy = vue.computed(() => {
|
9335
9348
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
@@ -9378,7 +9391,7 @@
|
|
9378
9391
|
}
|
9379
9392
|
});
|
9380
9393
|
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));
|
9381
|
-
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));
|
9394
|
+
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));
|
9382
9395
|
vue.onBeforeUnmount(() => {
|
9383
9396
|
isUnmounted = true;
|
9384
9397
|
});
|
@@ -9408,7 +9421,7 @@
|
|
9408
9421
|
}
|
9409
9422
|
return arr;
|
9410
9423
|
}),
|
9411
|
-
register: (id, parentId, isGroup) => {
|
9424
|
+
register: (id, parentId, isDisabled, isGroup) => {
|
9412
9425
|
if (nodeIds.has(id)) {
|
9413
9426
|
const path = getPath(id).map(String).join(' -> ');
|
9414
9427
|
const newPath = getPath(parentId).concat(id).map(String).join(' -> ');
|
@@ -9418,6 +9431,7 @@
|
|
9418
9431
|
nodeIds.add(id);
|
9419
9432
|
}
|
9420
9433
|
parentId && id !== parentId && parents.value.set(id, parentId);
|
9434
|
+
isDisabled && disabled.value.add(id);
|
9421
9435
|
isGroup && children.value.set(id, []);
|
9422
9436
|
if (parentId != null) {
|
9423
9437
|
children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
|
@@ -9427,6 +9441,7 @@
|
|
9427
9441
|
if (isUnmounted) return;
|
9428
9442
|
nodeIds.delete(id);
|
9429
9443
|
children.value.delete(id);
|
9444
|
+
disabled.value.delete(id);
|
9430
9445
|
const parent = parents.value.get(id);
|
9431
9446
|
if (parent) {
|
9432
9447
|
const list = children.value.get(parent) ?? [];
|
@@ -9476,6 +9491,7 @@
|
|
9476
9491
|
selected: new Map(selected.value),
|
9477
9492
|
children: children.value,
|
9478
9493
|
parents: parents.value,
|
9494
|
+
disabled: disabled.value,
|
9479
9495
|
event
|
9480
9496
|
});
|
9481
9497
|
newSelected && (selected.value = newSelected);
|
@@ -9518,13 +9534,14 @@
|
|
9518
9534
|
},
|
9519
9535
|
children,
|
9520
9536
|
parents,
|
9537
|
+
disabled,
|
9521
9538
|
getPath
|
9522
9539
|
}
|
9523
9540
|
};
|
9524
9541
|
vue.provide(VNestedSymbol, nested);
|
9525
9542
|
return nested.root;
|
9526
9543
|
};
|
9527
|
-
const useNestedItem = (id, isGroup) => {
|
9544
|
+
const useNestedItem = (id, isDisabled, isGroup) => {
|
9528
9545
|
const parent = vue.inject(VNestedSymbol, emptyNested);
|
9529
9546
|
const uidSymbol = Symbol('nested item');
|
9530
9547
|
const computedId = vue.computed(() => vue.toRaw(vue.toValue(id)) ?? uidSymbol);
|
@@ -9544,10 +9561,14 @@
|
|
9544
9561
|
isGroupActivator: parent.isGroupActivator
|
9545
9562
|
};
|
9546
9563
|
vue.onBeforeMount(() => {
|
9547
|
-
!parent.isGroupActivator
|
9564
|
+
if (!parent.isGroupActivator) {
|
9565
|
+
parent.root.register(computedId.value, parent.id.value, vue.toValue(isDisabled), isGroup);
|
9566
|
+
}
|
9548
9567
|
});
|
9549
9568
|
vue.onBeforeUnmount(() => {
|
9550
|
-
!parent.isGroupActivator
|
9569
|
+
if (!parent.isGroupActivator) {
|
9570
|
+
parent.root.unregister(computedId.value);
|
9571
|
+
}
|
9551
9572
|
});
|
9552
9573
|
isGroup && vue.provide(VNestedSymbol, item);
|
9553
9574
|
return item;
|
@@ -9579,6 +9600,7 @@
|
|
9579
9600
|
type: IconValue,
|
9580
9601
|
default: '$collapse'
|
9581
9602
|
},
|
9603
|
+
disabled: Boolean,
|
9582
9604
|
expandIcon: {
|
9583
9605
|
type: IconValue,
|
9584
9606
|
default: '$expand'
|
@@ -9604,7 +9626,7 @@
|
|
9604
9626
|
isOpen,
|
9605
9627
|
open,
|
9606
9628
|
id: _id
|
9607
|
-
} = useNestedItem(() => props.value, true);
|
9629
|
+
} = useNestedItem(() => props.value, () => props.disabled, true);
|
9608
9630
|
const id = vue.computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
|
9609
9631
|
const list = useList();
|
9610
9632
|
const {
|
@@ -9774,7 +9796,7 @@
|
|
9774
9796
|
parent,
|
9775
9797
|
openOnSelect,
|
9776
9798
|
id: uid
|
9777
|
-
} = useNestedItem(id, false);
|
9799
|
+
} = useNestedItem(id, () => props.disabled, false);
|
9778
9800
|
const list = useList();
|
9779
9801
|
const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
|
9780
9802
|
const isLink = vue.toRef(() => props.link !== false && link.isLink.value);
|
@@ -10734,7 +10756,7 @@
|
|
10734
10756
|
});
|
10735
10757
|
if (flipped.isFull) {
|
10736
10758
|
const values = flipped.values();
|
10737
|
-
if (deepEqual(values.at(-1), values.at(-3))) {
|
10759
|
+
if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {
|
10738
10760
|
// Flipping is causing a container resize loop
|
10739
10761
|
return;
|
10740
10762
|
}
|
@@ -12584,7 +12606,7 @@
|
|
12584
12606
|
if (!isFocused.value) focus();
|
12585
12607
|
vue.nextTick(() => {
|
12586
12608
|
if (inputRef.value !== document.activeElement) {
|
12587
|
-
inputRef.value?.focus();
|
12609
|
+
vue.nextTick(() => inputRef.value?.focus());
|
12588
12610
|
}
|
12589
12611
|
});
|
12590
12612
|
}
|
@@ -12923,7 +12945,7 @@
|
|
12923
12945
|
raf = requestAnimationFrame(_calculateVisibleItems);
|
12924
12946
|
}
|
12925
12947
|
function _calculateVisibleItems() {
|
12926
|
-
if (!containerRef.value || !viewportHeight.value) return;
|
12948
|
+
if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;
|
12927
12949
|
const scrollTop = lastScrollTop - markerOffset;
|
12928
12950
|
const direction = Math.sign(scrollVelocity);
|
12929
12951
|
const startPx = Math.max(0, scrollTop - BUFFER_PX);
|
@@ -17806,7 +17828,7 @@
|
|
17806
17828
|
case 'fullDate':
|
17807
17829
|
options = {
|
17808
17830
|
year: 'numeric',
|
17809
|
-
month: '
|
17831
|
+
month: 'short',
|
17810
17832
|
day: 'numeric'
|
17811
17833
|
};
|
17812
17834
|
break;
|
@@ -20123,7 +20145,8 @@
|
|
20123
20145
|
|
20124
20146
|
// Dates should be compared numerically
|
20125
20147
|
if (sortA instanceof Date && sortB instanceof Date) {
|
20126
|
-
|
20148
|
+
sortA = sortA.getTime();
|
20149
|
+
sortB = sortB.getTime();
|
20127
20150
|
}
|
20128
20151
|
[sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
|
20129
20152
|
if (sortA !== sortB) {
|
@@ -20832,10 +20855,15 @@
|
|
20832
20855
|
type: String,
|
20833
20856
|
default: 'start'
|
20834
20857
|
},
|
20835
|
-
fixed:
|
20858
|
+
fixed: {
|
20859
|
+
type: [Boolean, String],
|
20860
|
+
default: false
|
20861
|
+
},
|
20836
20862
|
fixedOffset: [Number, String],
|
20863
|
+
fixedEndOffset: [Number, String],
|
20837
20864
|
height: [Number, String],
|
20838
20865
|
lastFixed: Boolean,
|
20866
|
+
firstFixedEnd: Boolean,
|
20839
20867
|
noPadding: Boolean,
|
20840
20868
|
tag: String,
|
20841
20869
|
width: [Number, String],
|
@@ -20846,11 +20874,13 @@
|
|
20846
20874
|
slots
|
20847
20875
|
} = _ref;
|
20848
20876
|
const Tag = props.tag ?? 'td';
|
20877
|
+
const fixedSide = typeof props.fixed === 'string' ? props.fixed : props.fixed ? 'start' : 'none';
|
20849
20878
|
return vue.createVNode(Tag, {
|
20850
|
-
"tabindex": "0",
|
20851
20879
|
"class": vue.normalizeClass(['v-data-table__td', {
|
20852
|
-
'v-data-table-column--fixed':
|
20880
|
+
'v-data-table-column--fixed': fixedSide === 'start',
|
20881
|
+
'v-data-table-column--fixed-end': fixedSide === 'end',
|
20853
20882
|
'v-data-table-column--last-fixed': props.lastFixed,
|
20883
|
+
'v-data-table-column--first-fixed-end': props.firstFixedEnd,
|
20854
20884
|
'v-data-table-column--no-padding': props.noPadding,
|
20855
20885
|
'v-data-table-column--nowrap': props.nowrap
|
20856
20886
|
}, `v-data-table-column--align-${props.align}`]),
|
@@ -20858,7 +20888,8 @@
|
|
20858
20888
|
height: convertToUnit(props.height),
|
20859
20889
|
width: convertToUnit(props.width),
|
20860
20890
|
maxWidth: convertToUnit(props.maxWidth),
|
20861
|
-
left: convertToUnit(props.fixedOffset || null)
|
20891
|
+
left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
|
20892
|
+
right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
|
20862
20893
|
}
|
20863
20894
|
}, {
|
20864
20895
|
default: () => [slots.default?.()]
|
@@ -20955,20 +20986,28 @@
|
|
20955
20986
|
}
|
20956
20987
|
function parseFixedColumns(items) {
|
20957
20988
|
let seenFixed = false;
|
20958
|
-
function setFixed(item) {
|
20959
|
-
let
|
20989
|
+
function setFixed(item, side) {
|
20990
|
+
let parentFixedSide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
|
20960
20991
|
if (!item) return;
|
20961
|
-
if (
|
20962
|
-
item.fixed =
|
20992
|
+
if (parentFixedSide !== 'none') {
|
20993
|
+
item.fixed = parentFixedSide;
|
20963
20994
|
}
|
20964
|
-
|
20965
|
-
|
20966
|
-
|
20967
|
-
|
20995
|
+
|
20996
|
+
// normalize to simplify logic below
|
20997
|
+
if (item.fixed === true) {
|
20998
|
+
item.fixed = 'start';
|
20999
|
+
}
|
21000
|
+
const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
|
21001
|
+
if (item.fixed === side) {
|
21002
|
+
if (orderedChildren) {
|
21003
|
+
for (const child of orderedChildren) {
|
21004
|
+
setFixed(child, side, side);
|
20968
21005
|
}
|
20969
21006
|
} else {
|
20970
|
-
if (!seenFixed) {
|
21007
|
+
if (!seenFixed && side === 'start') {
|
20971
21008
|
item.lastFixed = true;
|
21009
|
+
} else if (!seenFixed && side === 'end') {
|
21010
|
+
item.firstFixedEnd = true;
|
20972
21011
|
} else if (isNaN(Number(item.width))) {
|
20973
21012
|
consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
|
20974
21013
|
} else {
|
@@ -20977,36 +21016,57 @@
|
|
20977
21016
|
seenFixed = true;
|
20978
21017
|
}
|
20979
21018
|
} else {
|
20980
|
-
if (
|
20981
|
-
for (
|
20982
|
-
setFixed(
|
21019
|
+
if (orderedChildren) {
|
21020
|
+
for (const child of orderedChildren) {
|
21021
|
+
setFixed(child, side);
|
20983
21022
|
}
|
20984
21023
|
} else {
|
20985
21024
|
seenFixed = false;
|
20986
21025
|
}
|
20987
21026
|
}
|
20988
21027
|
}
|
20989
|
-
for (
|
20990
|
-
setFixed(
|
21028
|
+
for (const item of items.toReversed()) {
|
21029
|
+
setFixed(item, 'start');
|
21030
|
+
}
|
21031
|
+
for (const item of items) {
|
21032
|
+
setFixed(item, 'end');
|
20991
21033
|
}
|
20992
21034
|
function setFixedOffset(item) {
|
20993
|
-
let
|
20994
|
-
if (!item) return
|
21035
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
21036
|
+
if (!item) return offset;
|
20995
21037
|
if (item.children) {
|
20996
|
-
item.fixedOffset =
|
21038
|
+
item.fixedOffset = offset;
|
20997
21039
|
for (const child of item.children) {
|
20998
|
-
|
21040
|
+
offset = setFixedOffset(child, offset);
|
20999
21041
|
}
|
21000
|
-
} else if (item.fixed) {
|
21001
|
-
item.fixedOffset =
|
21002
|
-
|
21042
|
+
} else if (item.fixed && item.fixed !== 'end') {
|
21043
|
+
item.fixedOffset = offset;
|
21044
|
+
offset += parseFloat(item.width || '0') || 0;
|
21003
21045
|
}
|
21004
|
-
return
|
21046
|
+
return offset;
|
21005
21047
|
}
|
21006
21048
|
let fixedOffset = 0;
|
21007
21049
|
for (const item of items) {
|
21008
21050
|
fixedOffset = setFixedOffset(item, fixedOffset);
|
21009
21051
|
}
|
21052
|
+
function setFixedEndOffset(item) {
|
21053
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
21054
|
+
if (!item) return offset;
|
21055
|
+
if (item.children) {
|
21056
|
+
item.fixedEndOffset = offset;
|
21057
|
+
for (const child of item.children) {
|
21058
|
+
offset = setFixedEndOffset(child, offset);
|
21059
|
+
}
|
21060
|
+
} else if (item.fixed === 'end') {
|
21061
|
+
item.fixedEndOffset = offset;
|
21062
|
+
offset += parseFloat(item.width || '0') || 0;
|
21063
|
+
}
|
21064
|
+
return offset;
|
21065
|
+
}
|
21066
|
+
let fixedEndOffset = 0;
|
21067
|
+
for (const item of items.toReversed()) {
|
21068
|
+
fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
|
21069
|
+
}
|
21010
21070
|
}
|
21011
21071
|
function parse(items, maxDepth) {
|
21012
21072
|
const headers = [];
|
@@ -21139,7 +21199,6 @@
|
|
21139
21199
|
color: String,
|
21140
21200
|
disableSort: Boolean,
|
21141
21201
|
fixedHeader: Boolean,
|
21142
|
-
lastFixed: Boolean,
|
21143
21202
|
multiSort: Boolean,
|
21144
21203
|
sortAscIcon: {
|
21145
21204
|
type: IconValue,
|
@@ -21186,11 +21245,12 @@
|
|
21186
21245
|
loaderClasses
|
21187
21246
|
} = useLoader(props);
|
21188
21247
|
function getFixedStyles(column, y) {
|
21189
|
-
if (!(props.sticky || props.fixedHeader) && !
|
21248
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
21249
|
+
const fixedSide = typeof column.fixed === 'string' ? column.fixed : column.fixed ? 'start' : 'none';
|
21190
21250
|
return {
|
21191
21251
|
position: 'sticky',
|
21192
|
-
left:
|
21193
|
-
right:
|
21252
|
+
left: fixedSide === 'start' ? convertToUnit(column.fixedOffset) : undefined,
|
21253
|
+
right: fixedSide === 'end' ? convertToUnit(column.fixedEndOffset) : undefined,
|
21194
21254
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
21195
21255
|
};
|
21196
21256
|
}
|
@@ -21250,14 +21310,15 @@
|
|
21250
21310
|
},
|
21251
21311
|
"colspan": column.colspan,
|
21252
21312
|
"rowspan": column.rowspan,
|
21253
|
-
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
21254
21313
|
"fixed": column.fixed,
|
21255
21314
|
"nowrap": column.nowrap,
|
21256
21315
|
"lastFixed": column.lastFixed,
|
21257
|
-
"
|
21258
|
-
|
21259
|
-
"
|
21260
|
-
|
21316
|
+
"firstFixedEnd": column.firstFixedEnd,
|
21317
|
+
"noPadding": noPadding,
|
21318
|
+
"tabindex": column.sortable ? 0 : undefined,
|
21319
|
+
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
21320
|
+
"onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
|
21321
|
+
}, headerProps), {
|
21261
21322
|
default: () => {
|
21262
21323
|
const columnSlotName = `header.${column.key}`;
|
21263
21324
|
const columnSlotProps = {
|
@@ -21533,7 +21594,9 @@
|
|
21533
21594
|
},
|
21534
21595
|
"fixed": column.fixed,
|
21535
21596
|
"fixedOffset": column.fixedOffset,
|
21597
|
+
"fixedEndOffset": column.fixedEndOffset,
|
21536
21598
|
"lastFixed": column.lastFixed,
|
21599
|
+
"firstFixedEnd": column.firstFixedEnd,
|
21537
21600
|
"maxWidth": !mobile.value ? column.maxWidth : undefined,
|
21538
21601
|
"noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
|
21539
21602
|
"nowrap": column.nowrap,
|
@@ -22943,13 +23006,9 @@
|
|
22943
23006
|
const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));
|
22944
23007
|
return adapter.setMonth(date, value);
|
22945
23008
|
}, v => adapter.getMonth(v));
|
22946
|
-
const weekDays = vue.computed(() => {
|
22947
|
-
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
22948
|
-
return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
|
22949
|
-
});
|
22950
23009
|
const weekdayLabels = vue.computed(() => {
|
22951
|
-
const
|
22952
|
-
return
|
23010
|
+
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
23011
|
+
return adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).filter((_, i) => props.weekdays.includes((i + firstDayOfWeek) % 7));
|
22953
23012
|
});
|
22954
23013
|
const weeksInMonth = vue.computed(() => {
|
22955
23014
|
const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
|
@@ -22973,13 +23032,14 @@
|
|
22973
23032
|
});
|
22974
23033
|
function genDays(days, today) {
|
22975
23034
|
return days.filter(date => {
|
22976
|
-
return
|
23035
|
+
return props.weekdays.includes(adapter.toJsDate(date).getDay());
|
22977
23036
|
}).map((date, index) => {
|
22978
23037
|
const isoDate = adapter.toISO(date);
|
22979
23038
|
const isAdjacent = !adapter.isSameMonth(date, month.value);
|
22980
23039
|
const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
|
22981
23040
|
const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));
|
22982
23041
|
const isSame = adapter.isSameDay(date, month.value);
|
23042
|
+
const weekdaysCount = props.weekdays.length;
|
22983
23043
|
return {
|
22984
23044
|
date,
|
22985
23045
|
formatted: adapter.format(date, 'keyboardDate'),
|
@@ -22991,8 +23051,8 @@
|
|
22991
23051
|
isSelected: model.value.some(value => adapter.isSameDay(date, value)),
|
22992
23052
|
isStart,
|
22993
23053
|
isToday: adapter.isSameDay(date, today),
|
22994
|
-
isWeekEnd: index %
|
22995
|
-
isWeekStart: index %
|
23054
|
+
isWeekEnd: index % weekdaysCount === weekdaysCount - 1,
|
23055
|
+
isWeekStart: index % weekdaysCount === 0,
|
22996
23056
|
isoDate,
|
22997
23057
|
localized: adapter.format(date, 'dayOfMonth'),
|
22998
23058
|
month: adapter.getMonth(date),
|
@@ -23039,7 +23099,6 @@
|
|
23039
23099
|
genDays,
|
23040
23100
|
model,
|
23041
23101
|
weeksInMonth,
|
23042
|
-
weekDays,
|
23043
23102
|
weekdayLabels,
|
23044
23103
|
weekNumbers
|
23045
23104
|
};
|
@@ -23080,7 +23139,6 @@
|
|
23080
23139
|
daysInMonth,
|
23081
23140
|
model,
|
23082
23141
|
weekNumbers,
|
23083
|
-
weekDays,
|
23084
23142
|
weekdayLabels
|
23085
23143
|
} = useCalendar(props);
|
23086
23144
|
const adapter = useDate();
|
@@ -23155,7 +23213,7 @@
|
|
23155
23213
|
useRender(() => vue.createElementVNode("div", {
|
23156
23214
|
"class": "v-date-picker-month",
|
23157
23215
|
"style": {
|
23158
|
-
'--v-date-picker-days-in-week':
|
23216
|
+
'--v-date-picker-days-in-week': props.weekdays.length
|
23159
23217
|
}
|
23160
23218
|
}, [props.showWeek && vue.createElementVNode("div", {
|
23161
23219
|
"key": "weeks",
|
@@ -26326,19 +26384,21 @@
|
|
26326
26384
|
const contentRef = vue.ref();
|
26327
26385
|
const inputRef = vue.ref([]);
|
26328
26386
|
const current = vue.computed(() => inputRef.value[focusIndex.value]);
|
26329
|
-
|
26330
|
-
|
26331
|
-
|
26332
|
-
|
26333
|
-
|
26334
|
-
|
26335
|
-
|
26336
|
-
|
26337
|
-
|
26338
|
-
|
26339
|
-
|
26340
|
-
|
26341
|
-
|
26387
|
+
useToggleScope(() => props.autofocus, () => {
|
26388
|
+
const intersectScope = vue.effectScope();
|
26389
|
+
intersectScope.run(() => {
|
26390
|
+
const {
|
26391
|
+
intersectionRef,
|
26392
|
+
isIntersecting
|
26393
|
+
} = useIntersectionObserver();
|
26394
|
+
vue.watchEffect(() => {
|
26395
|
+
intersectionRef.value = inputRef.value[0];
|
26396
|
+
});
|
26397
|
+
vue.watch(isIntersecting, v => {
|
26398
|
+
if (!v) return;
|
26399
|
+
intersectionRef.value?.focus();
|
26400
|
+
intersectScope.stop();
|
26401
|
+
});
|
26342
26402
|
});
|
26343
26403
|
});
|
26344
26404
|
function onInput() {
|
@@ -30389,7 +30449,7 @@
|
|
30389
30449
|
return vue.createVNode(VListItem, vue.mergeProps({
|
30390
30450
|
"ref": vListItemRef
|
30391
30451
|
}, listItemProps, {
|
30392
|
-
"active": vListItemRef.value?.isActivated,
|
30452
|
+
"active": vListItemRef.value?.isActivated || undefined,
|
30393
30453
|
"class": ['v-treeview-item', {
|
30394
30454
|
'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
|
30395
30455
|
'v-treeview-item--filtered': isFiltered.value
|
@@ -30601,10 +30661,7 @@
|
|
30601
30661
|
expandIcon: '$treeviewExpand',
|
30602
30662
|
slim: true
|
30603
30663
|
}), ['itemType', 'nav', 'openStrategy']),
|
30604
|
-
modelValue:
|
30605
|
-
type: Array,
|
30606
|
-
default: () => []
|
30607
|
-
}
|
30664
|
+
modelValue: Array
|
30608
30665
|
}, 'VTreeview');
|
30609
30666
|
const VTreeview = genericComponent()({
|
30610
30667
|
name: 'VTreeview',
|
@@ -30619,7 +30676,8 @@
|
|
30619
30676
|
},
|
30620
30677
|
setup(props, _ref) {
|
30621
30678
|
let {
|
30622
|
-
slots
|
30679
|
+
slots,
|
30680
|
+
emit
|
30623
30681
|
} = _ref;
|
30624
30682
|
const {
|
30625
30683
|
items
|
@@ -30628,13 +30686,12 @@
|
|
30628
30686
|
const baseColor = vue.toRef(() => props.baseColor);
|
30629
30687
|
const color = vue.toRef(() => props.color);
|
30630
30688
|
const activated = useProxiedModel(props, 'activated');
|
30631
|
-
const
|
30632
|
-
const _selected = useProxiedModel(props, 'selected', props.modelValue);
|
30689
|
+
const _selected = useProxiedModel(props, 'selected');
|
30633
30690
|
const selected = vue.computed({
|
30634
|
-
get: () => _selected.value,
|
30691
|
+
get: () => props.modelValue ?? _selected.value,
|
30635
30692
|
set(val) {
|
30636
30693
|
_selected.value = val;
|
30637
|
-
|
30694
|
+
emit('update:modelValue', val);
|
30638
30695
|
}
|
30639
30696
|
});
|
30640
30697
|
const vListRef = vue.ref();
|
@@ -31237,7 +31294,7 @@
|
|
31237
31294
|
};
|
31238
31295
|
});
|
31239
31296
|
}
|
31240
|
-
const version$1 = "3.9.0-beta.1-dev.2025-
|
31297
|
+
const version$1 = "3.9.0-beta.1-dev.2025-07-04";
|
31241
31298
|
createVuetify$1.version = version$1;
|
31242
31299
|
|
31243
31300
|
// Vue's inject() can only be used in setup
|
@@ -31262,7 +31319,7 @@
|
|
31262
31319
|
...options
|
31263
31320
|
});
|
31264
31321
|
};
|
31265
|
-
const version = "3.9.0-beta.1-dev.2025-
|
31322
|
+
const version = "3.9.0-beta.1-dev.2025-07-04";
|
31266
31323
|
createVuetify.version = version;
|
31267
31324
|
|
31268
31325
|
exports.blueprints = index;
|