@vuetify/nightly 3.10.7-dev.2025-10-23 → 3.10.7-dev.2025-10-25
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 +13 -3
- package/dist/json/attributes.json +3162 -3138
- package/dist/json/importMap-labs.json +32 -32
- package/dist/json/importMap.json +162 -162
- package/dist/json/tags.json +6 -0
- package/dist/json/web-types.json +5516 -5456
- package/dist/vuetify-labs.cjs +138 -33
- package/dist/vuetify-labs.css +4436 -4411
- package/dist/vuetify-labs.d.ts +286 -199
- package/dist/vuetify-labs.esm.js +139 -34
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +138 -33
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +138 -33
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4010 -3985
- package/dist/vuetify.d.ts +258 -199
- package/dist/vuetify.esm.js +139 -34
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +138 -33
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +848 -840
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +50 -0
- package/lib/components/VDatePicker/VDatePickerMonth.css +25 -0
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +53 -0
- package/lib/components/VDatePicker/VDatePickerMonth.js +57 -4
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.sass +22 -0
- package/lib/components/VDatePicker/_variables.scss +5 -0
- package/lib/components/VOverlay/locationStrategies.js +19 -11
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VOverlay/useActivator.js +0 -1
- package/lib/components/VOverlay/useActivator.js.map +1 -1
- package/lib/composables/nested/nested.js +7 -1
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +62 -62
- package/lib/framework.js +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +50 -0
- package/lib/util/helpers.d.ts +8 -1
- package/lib/util/helpers.js +40 -9
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
package/dist/vuetify.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.10.7-dev.2025-10-
|
|
2
|
+
* Vuetify v3.10.7-dev.2025-10-25
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -10,6 +10,19 @@
|
|
|
10
10
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Vuetify = {}, global.Vue));
|
|
11
11
|
})(this, (function (exports, vue) { 'use strict';
|
|
12
12
|
|
|
13
|
+
/* eslint-disable no-console */
|
|
14
|
+
|
|
15
|
+
function consoleWarn(message) {
|
|
16
|
+
vue.warn(`Vuetify: ${message}`);
|
|
17
|
+
}
|
|
18
|
+
function consoleError(message) {
|
|
19
|
+
vue.warn(`Vuetify error: ${message}`);
|
|
20
|
+
}
|
|
21
|
+
function deprecate(original, replacement) {
|
|
22
|
+
replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
|
|
23
|
+
vue.warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
|
|
24
|
+
}
|
|
25
|
+
|
|
13
26
|
const IN_BROWSER = typeof window !== 'undefined';
|
|
14
27
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
|
15
28
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
|
@@ -212,6 +225,39 @@
|
|
|
212
225
|
wrap.immediate = fn;
|
|
213
226
|
return wrap;
|
|
214
227
|
}
|
|
228
|
+
function throttle(fn, delay) {
|
|
229
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
230
|
+
leading: true,
|
|
231
|
+
trailing: true
|
|
232
|
+
};
|
|
233
|
+
let timeoutId = 0;
|
|
234
|
+
let lastExec = 0;
|
|
235
|
+
let throttling = false;
|
|
236
|
+
const wrap = function () {
|
|
237
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
238
|
+
args[_key2] = arguments[_key2];
|
|
239
|
+
}
|
|
240
|
+
clearTimeout(timeoutId);
|
|
241
|
+
const now = Date.now();
|
|
242
|
+
const elapsed = now - lastExec;
|
|
243
|
+
if (!throttling || elapsed >= delay) {
|
|
244
|
+
lastExec = now;
|
|
245
|
+
}
|
|
246
|
+
if (!throttling && options.leading || elapsed >= delay) {
|
|
247
|
+
window.setTimeout(() => fn(...args)); // ignore 'fn' executin errors
|
|
248
|
+
}
|
|
249
|
+
throttling = true;
|
|
250
|
+
timeoutId = window.setTimeout(() => {
|
|
251
|
+
throttling = false;
|
|
252
|
+
if (options.trailing) {
|
|
253
|
+
fn(...args);
|
|
254
|
+
}
|
|
255
|
+
}, delay);
|
|
256
|
+
};
|
|
257
|
+
wrap.clear = () => clearTimeout(timeoutId);
|
|
258
|
+
wrap.immediate = fn;
|
|
259
|
+
return wrap;
|
|
260
|
+
}
|
|
215
261
|
function clamp(value) {
|
|
216
262
|
let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
217
263
|
let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
@@ -388,8 +434,8 @@
|
|
|
388
434
|
return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);
|
|
389
435
|
}
|
|
390
436
|
function callEvent(handler) {
|
|
391
|
-
for (var
|
|
392
|
-
args[
|
|
437
|
+
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
438
|
+
args[_key3 - 1] = arguments[_key3];
|
|
393
439
|
}
|
|
394
440
|
if (Array.isArray(handler)) {
|
|
395
441
|
for (const h of handler) {
|
|
@@ -402,7 +448,14 @@
|
|
|
402
448
|
function focusableChildren(el) {
|
|
403
449
|
let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
404
450
|
const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', 'details:not(:has(> summary))', 'details > summary', '[tabindex]', '[contenteditable]:not([contenteditable="false"])', 'audio[controls]', 'video[controls]'].map(s => `${s}${filterByTabIndex ? ':not([tabindex="-1"])' : ''}:not([disabled], [inert])`).join(', ');
|
|
405
|
-
|
|
451
|
+
let elements;
|
|
452
|
+
try {
|
|
453
|
+
elements = [...el.querySelectorAll(targets)];
|
|
454
|
+
} catch (err) {
|
|
455
|
+
consoleError(String(err));
|
|
456
|
+
return [];
|
|
457
|
+
}
|
|
458
|
+
return elements.filter(x => !x.closest('[inert]')) // does not have inert parent
|
|
406
459
|
.filter(x => !!x.offsetParent || x.getClientRects().length > 0) // is rendered
|
|
407
460
|
.filter(x => !x.parentElement?.closest('details:not([open])') || x.tagName === 'SUMMARY' && x.parentElement?.tagName === 'DETAILS');
|
|
408
461
|
}
|
|
@@ -869,19 +922,6 @@
|
|
|
869
922
|
return outputContrast * 100;
|
|
870
923
|
}
|
|
871
924
|
|
|
872
|
-
/* eslint-disable no-console */
|
|
873
|
-
|
|
874
|
-
function consoleWarn(message) {
|
|
875
|
-
vue.warn(`Vuetify: ${message}`);
|
|
876
|
-
}
|
|
877
|
-
function consoleError(message) {
|
|
878
|
-
vue.warn(`Vuetify error: ${message}`);
|
|
879
|
-
}
|
|
880
|
-
function deprecate(original, replacement) {
|
|
881
|
-
replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
|
|
882
|
-
vue.warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
|
|
883
|
-
}
|
|
884
|
-
|
|
885
925
|
// Types
|
|
886
926
|
|
|
887
927
|
const delta = 0.20689655172413793; // 6÷29
|
|
@@ -9659,6 +9699,10 @@
|
|
|
9659
9699
|
}
|
|
9660
9700
|
const vm = getCurrentInstance('nested');
|
|
9661
9701
|
const nodeIds = new Set();
|
|
9702
|
+
const itemsUpdatePropagation = throttle(() => {
|
|
9703
|
+
children.value = new Map(children.value);
|
|
9704
|
+
parents.value = new Map(parents.value);
|
|
9705
|
+
}, 100);
|
|
9662
9706
|
const nested = {
|
|
9663
9707
|
id: vue.shallowRef(),
|
|
9664
9708
|
root: {
|
|
@@ -9689,6 +9733,7 @@
|
|
|
9689
9733
|
if (parentId != null) {
|
|
9690
9734
|
children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
|
|
9691
9735
|
}
|
|
9736
|
+
itemsUpdatePropagation();
|
|
9692
9737
|
},
|
|
9693
9738
|
unregister: id => {
|
|
9694
9739
|
if (isUnmounted) return;
|
|
@@ -9701,6 +9746,7 @@
|
|
|
9701
9746
|
children.value.set(parent, list.filter(child => child !== id));
|
|
9702
9747
|
}
|
|
9703
9748
|
parents.value.delete(id);
|
|
9749
|
+
itemsUpdatePropagation();
|
|
9704
9750
|
},
|
|
9705
9751
|
open: (id, value, event) => {
|
|
9706
9752
|
vm.emit('click:open', {
|
|
@@ -11088,7 +11134,8 @@
|
|
|
11088
11134
|
|
|
11089
11135
|
const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
|
|
11090
11136
|
const scrollParents = getScrollParents(data.contentEl.value);
|
|
11091
|
-
const viewportMargin = 12;
|
|
11137
|
+
const viewportMargin = props.stickToTarget ? 0 : 12; // TOOD: prop.viewportMargin
|
|
11138
|
+
|
|
11092
11139
|
if (!scrollParents.length) {
|
|
11093
11140
|
scrollParents.push(document.documentElement);
|
|
11094
11141
|
if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {
|
|
@@ -11108,10 +11155,17 @@
|
|
|
11108
11155
|
}
|
|
11109
11156
|
return scrollBox;
|
|
11110
11157
|
}, undefined);
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
|
|
11158
|
+
if (props.stickToTarget) {
|
|
11159
|
+
viewport.x += Math.min(0, targetBox.x);
|
|
11160
|
+
viewport.y += Math.min(0, targetBox.y);
|
|
11161
|
+
viewport.width = Math.max(viewport.width, targetBox.x + targetBox.width);
|
|
11162
|
+
viewport.height = Math.max(viewport.height, targetBox.y + targetBox.height);
|
|
11163
|
+
} else {
|
|
11164
|
+
viewport.x += viewportMargin;
|
|
11165
|
+
viewport.y += viewportMargin;
|
|
11166
|
+
viewport.width -= viewportMargin * 2;
|
|
11167
|
+
viewport.height -= viewportMargin * 2;
|
|
11168
|
+
}
|
|
11115
11169
|
let placement = {
|
|
11116
11170
|
anchor: preferredAnchor.value,
|
|
11117
11171
|
origin: preferredOrigin.value
|
|
@@ -11222,19 +11276,19 @@
|
|
|
11222
11276
|
|
|
11223
11277
|
// shift
|
|
11224
11278
|
if (overflows.x.before) {
|
|
11225
|
-
|
|
11279
|
+
x += overflows.x.before;
|
|
11226
11280
|
contentBox.x += overflows.x.before;
|
|
11227
11281
|
}
|
|
11228
11282
|
if (overflows.x.after) {
|
|
11229
|
-
|
|
11283
|
+
x -= overflows.x.after;
|
|
11230
11284
|
contentBox.x -= overflows.x.after;
|
|
11231
11285
|
}
|
|
11232
11286
|
if (overflows.y.before) {
|
|
11233
|
-
|
|
11287
|
+
y += overflows.y.before;
|
|
11234
11288
|
contentBox.y += overflows.y.before;
|
|
11235
11289
|
}
|
|
11236
11290
|
if (overflows.y.after) {
|
|
11237
|
-
|
|
11291
|
+
y -= overflows.y.after;
|
|
11238
11292
|
contentBox.y -= overflows.y.after;
|
|
11239
11293
|
}
|
|
11240
11294
|
|
|
@@ -11243,9 +11297,9 @@
|
|
|
11243
11297
|
const overflows = getOverflow(contentBox, viewport);
|
|
11244
11298
|
available.x = viewport.width - overflows.x.before - overflows.x.after;
|
|
11245
11299
|
available.y = viewport.height - overflows.y.before - overflows.y.after;
|
|
11246
|
-
|
|
11300
|
+
x += overflows.x.before;
|
|
11247
11301
|
contentBox.x += overflows.x.before;
|
|
11248
|
-
|
|
11302
|
+
y += overflows.y.before;
|
|
11249
11303
|
contentBox.y += overflows.y.before;
|
|
11250
11304
|
}
|
|
11251
11305
|
break;
|
|
@@ -11555,7 +11609,6 @@
|
|
|
11555
11609
|
isActive.value = !isActive.value;
|
|
11556
11610
|
},
|
|
11557
11611
|
onMouseenter: e => {
|
|
11558
|
-
if (e.sourceCapabilities?.firesTouchEvents) return;
|
|
11559
11612
|
isHovered = true;
|
|
11560
11613
|
activatorEl.value = e.currentTarget || e.target;
|
|
11561
11614
|
runOpenDelay();
|
|
@@ -23996,6 +24049,14 @@
|
|
|
23996
24049
|
type: String,
|
|
23997
24050
|
default: 'picker-reverse-transition'
|
|
23998
24051
|
},
|
|
24052
|
+
events: {
|
|
24053
|
+
type: [Array, Function, Object],
|
|
24054
|
+
default: () => null
|
|
24055
|
+
},
|
|
24056
|
+
eventColor: {
|
|
24057
|
+
type: [Array, Function, Object, String],
|
|
24058
|
+
default: () => null
|
|
24059
|
+
},
|
|
23999
24060
|
...omit(makeCalendarProps(), ['displayValue'])
|
|
24000
24061
|
}, 'VDatePickerMonth');
|
|
24001
24062
|
const VDatePickerMonth = genericComponent()({
|
|
@@ -24095,6 +24156,49 @@
|
|
|
24095
24156
|
model.value = [value];
|
|
24096
24157
|
}
|
|
24097
24158
|
}
|
|
24159
|
+
function getEventColors(date) {
|
|
24160
|
+
const {
|
|
24161
|
+
events,
|
|
24162
|
+
eventColor
|
|
24163
|
+
} = props;
|
|
24164
|
+
let eventData;
|
|
24165
|
+
let eventColors = [];
|
|
24166
|
+
if (Array.isArray(events)) {
|
|
24167
|
+
eventData = events.includes(date);
|
|
24168
|
+
} else if (events instanceof Function) {
|
|
24169
|
+
eventData = events(date) || false;
|
|
24170
|
+
} else if (events) {
|
|
24171
|
+
eventData = events[date] || false;
|
|
24172
|
+
} else {
|
|
24173
|
+
eventData = false;
|
|
24174
|
+
}
|
|
24175
|
+
if (!eventData) {
|
|
24176
|
+
return [];
|
|
24177
|
+
} else if (eventData !== true) {
|
|
24178
|
+
eventColors = wrapInArray(eventData);
|
|
24179
|
+
} else if (typeof eventColor === 'string') {
|
|
24180
|
+
eventColors = [eventColor];
|
|
24181
|
+
} else if (typeof eventColor === 'function') {
|
|
24182
|
+
eventColors = wrapInArray(eventColor(date));
|
|
24183
|
+
} else if (Array.isArray(eventColor)) {
|
|
24184
|
+
eventColors = eventColor;
|
|
24185
|
+
} else if (typeof eventColor === 'object' && eventColor !== null) {
|
|
24186
|
+
eventColors = wrapInArray(eventColor[date]);
|
|
24187
|
+
}
|
|
24188
|
+
|
|
24189
|
+
// Fallback to default color if no color is found
|
|
24190
|
+
return !eventColors.length ? ['surface-variant'] : eventColors.filter(Boolean).map(color => typeof color === 'string' ? color : 'surface-variant');
|
|
24191
|
+
}
|
|
24192
|
+
function genEvents(date) {
|
|
24193
|
+
const eventColors = getEventColors(date);
|
|
24194
|
+
if (!eventColors.length) return null;
|
|
24195
|
+
return vue.createElementVNode("div", {
|
|
24196
|
+
"class": "v-date-picker-month__events"
|
|
24197
|
+
}, [eventColors.map(color => vue.createVNode(VBadge, {
|
|
24198
|
+
"dot": true,
|
|
24199
|
+
"color": color
|
|
24200
|
+
}, null))]);
|
|
24201
|
+
}
|
|
24098
24202
|
useRender(() => vue.createElementVNode("div", {
|
|
24099
24203
|
"class": "v-date-picker-month",
|
|
24100
24204
|
"style": {
|
|
@@ -24125,7 +24229,6 @@
|
|
|
24125
24229
|
disabled: item.isDisabled,
|
|
24126
24230
|
icon: true,
|
|
24127
24231
|
ripple: false,
|
|
24128
|
-
text: item.localized,
|
|
24129
24232
|
variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',
|
|
24130
24233
|
'aria-label': getDateAriaLabel(item),
|
|
24131
24234
|
'aria-current': item.isToday ? 'date' : undefined,
|
|
@@ -24146,7 +24249,9 @@
|
|
|
24146
24249
|
'v-date-picker-month__day--week-start': item.isWeekStart
|
|
24147
24250
|
}]),
|
|
24148
24251
|
"data-v-date": !item.isDisabled ? item.isoDate : undefined
|
|
24149
|
-
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? vue.createVNode(VBtn, slotProps.props,
|
|
24252
|
+
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? vue.createVNode(VBtn, slotProps.props, {
|
|
24253
|
+
default: () => [item.localized, genEvents(item.isoDate)]
|
|
24254
|
+
}))]);
|
|
24150
24255
|
})])]
|
|
24151
24256
|
})]));
|
|
24152
24257
|
}
|
|
@@ -32527,7 +32632,7 @@
|
|
|
32527
32632
|
};
|
|
32528
32633
|
});
|
|
32529
32634
|
}
|
|
32530
|
-
const version$1 = "3.10.7-dev.2025-10-
|
|
32635
|
+
const version$1 = "3.10.7-dev.2025-10-25";
|
|
32531
32636
|
createVuetify$1.version = version$1;
|
|
32532
32637
|
|
|
32533
32638
|
// Vue's inject() can only be used in setup
|
|
@@ -32552,7 +32657,7 @@
|
|
|
32552
32657
|
...options
|
|
32553
32658
|
});
|
|
32554
32659
|
};
|
|
32555
|
-
const version = "3.10.7-dev.2025-10-
|
|
32660
|
+
const version = "3.10.7-dev.2025-10-25";
|
|
32556
32661
|
createVuetify.version = version;
|
|
32557
32662
|
|
|
32558
32663
|
exports.blueprints = index;
|