@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-labs.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
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
|
*/
|
|
6
6
|
|
|
7
|
-
import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment,
|
|
7
|
+
import { warn, shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, toValue, watch, onBeforeUnmount, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, createElementVNode, normalizeStyle, normalizeClass, createVNode, TransitionGroup, Transition, mergeProps, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
|
|
8
8
|
|
|
9
9
|
// Types
|
|
10
10
|
// eslint-disable-line vue/prefer-import-from-vue
|
|
@@ -77,6 +77,19 @@ const makeComponentProps = propsFactory({
|
|
|
77
77
|
}
|
|
78
78
|
}, 'component');
|
|
79
79
|
|
|
80
|
+
/* eslint-disable no-console */
|
|
81
|
+
|
|
82
|
+
function consoleWarn(message) {
|
|
83
|
+
warn(`Vuetify: ${message}`);
|
|
84
|
+
}
|
|
85
|
+
function consoleError(message) {
|
|
86
|
+
warn(`Vuetify error: ${message}`);
|
|
87
|
+
}
|
|
88
|
+
function deprecate(original, replacement) {
|
|
89
|
+
replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
|
|
90
|
+
warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
|
|
91
|
+
}
|
|
92
|
+
|
|
80
93
|
const IN_BROWSER = typeof window !== 'undefined';
|
|
81
94
|
const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
|
|
82
95
|
const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
|
|
@@ -279,6 +292,39 @@ function debounce(fn, delay) {
|
|
|
279
292
|
wrap.immediate = fn;
|
|
280
293
|
return wrap;
|
|
281
294
|
}
|
|
295
|
+
function throttle(fn, delay) {
|
|
296
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
297
|
+
leading: true,
|
|
298
|
+
trailing: true
|
|
299
|
+
};
|
|
300
|
+
let timeoutId = 0;
|
|
301
|
+
let lastExec = 0;
|
|
302
|
+
let throttling = false;
|
|
303
|
+
const wrap = function () {
|
|
304
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
305
|
+
args[_key2] = arguments[_key2];
|
|
306
|
+
}
|
|
307
|
+
clearTimeout(timeoutId);
|
|
308
|
+
const now = Date.now();
|
|
309
|
+
const elapsed = now - lastExec;
|
|
310
|
+
if (!throttling || elapsed >= delay) {
|
|
311
|
+
lastExec = now;
|
|
312
|
+
}
|
|
313
|
+
if (!throttling && options.leading || elapsed >= delay) {
|
|
314
|
+
window.setTimeout(() => fn(...args)); // ignore 'fn' executin errors
|
|
315
|
+
}
|
|
316
|
+
throttling = true;
|
|
317
|
+
timeoutId = window.setTimeout(() => {
|
|
318
|
+
throttling = false;
|
|
319
|
+
if (options.trailing) {
|
|
320
|
+
fn(...args);
|
|
321
|
+
}
|
|
322
|
+
}, delay);
|
|
323
|
+
};
|
|
324
|
+
wrap.clear = () => clearTimeout(timeoutId);
|
|
325
|
+
wrap.immediate = fn;
|
|
326
|
+
return wrap;
|
|
327
|
+
}
|
|
282
328
|
function clamp(value) {
|
|
283
329
|
let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
284
330
|
let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
@@ -455,8 +501,8 @@ function hasEvent(props, name) {
|
|
|
455
501
|
return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);
|
|
456
502
|
}
|
|
457
503
|
function callEvent(handler) {
|
|
458
|
-
for (var
|
|
459
|
-
args[
|
|
504
|
+
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
505
|
+
args[_key3 - 1] = arguments[_key3];
|
|
460
506
|
}
|
|
461
507
|
if (Array.isArray(handler)) {
|
|
462
508
|
for (const h of handler) {
|
|
@@ -469,7 +515,14 @@ function callEvent(handler) {
|
|
|
469
515
|
function focusableChildren(el) {
|
|
470
516
|
let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
471
517
|
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(', ');
|
|
472
|
-
|
|
518
|
+
let elements;
|
|
519
|
+
try {
|
|
520
|
+
elements = [...el.querySelectorAll(targets)];
|
|
521
|
+
} catch (err) {
|
|
522
|
+
consoleError(String(err));
|
|
523
|
+
return [];
|
|
524
|
+
}
|
|
525
|
+
return elements.filter(x => !x.closest('[inert]')) // does not have inert parent
|
|
473
526
|
.filter(x => !!x.offsetParent || x.getClientRects().length > 0) // is rendered
|
|
474
527
|
.filter(x => !x.parentElement?.closest('details:not([open])') || x.tagName === 'SUMMARY' && x.parentElement?.tagName === 'DETAILS');
|
|
475
528
|
}
|
|
@@ -936,19 +989,6 @@ function APCAcontrast(text, background) {
|
|
|
936
989
|
return outputContrast * 100;
|
|
937
990
|
}
|
|
938
991
|
|
|
939
|
-
/* eslint-disable no-console */
|
|
940
|
-
|
|
941
|
-
function consoleWarn(message) {
|
|
942
|
-
warn(`Vuetify: ${message}`);
|
|
943
|
-
}
|
|
944
|
-
function consoleError(message) {
|
|
945
|
-
warn(`Vuetify error: ${message}`);
|
|
946
|
-
}
|
|
947
|
-
function deprecate(original, replacement) {
|
|
948
|
-
replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
|
|
949
|
-
warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
|
|
950
|
-
}
|
|
951
|
-
|
|
952
992
|
// Types
|
|
953
993
|
|
|
954
994
|
const delta = 0.20689655172413793; // 6÷29
|
|
@@ -9331,6 +9371,10 @@ const useNested = props => {
|
|
|
9331
9371
|
}
|
|
9332
9372
|
const vm = getCurrentInstance('nested');
|
|
9333
9373
|
const nodeIds = new Set();
|
|
9374
|
+
const itemsUpdatePropagation = throttle(() => {
|
|
9375
|
+
children.value = new Map(children.value);
|
|
9376
|
+
parents.value = new Map(parents.value);
|
|
9377
|
+
}, 100);
|
|
9334
9378
|
const nested = {
|
|
9335
9379
|
id: shallowRef(),
|
|
9336
9380
|
root: {
|
|
@@ -9361,6 +9405,7 @@ const useNested = props => {
|
|
|
9361
9405
|
if (parentId != null) {
|
|
9362
9406
|
children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
|
|
9363
9407
|
}
|
|
9408
|
+
itemsUpdatePropagation();
|
|
9364
9409
|
},
|
|
9365
9410
|
unregister: id => {
|
|
9366
9411
|
if (isUnmounted) return;
|
|
@@ -9373,6 +9418,7 @@ const useNested = props => {
|
|
|
9373
9418
|
children.value.set(parent, list.filter(child => child !== id));
|
|
9374
9419
|
}
|
|
9375
9420
|
parents.value.delete(id);
|
|
9421
|
+
itemsUpdatePropagation();
|
|
9376
9422
|
},
|
|
9377
9423
|
open: (id, value, event) => {
|
|
9378
9424
|
vm.emit('click:open', {
|
|
@@ -10760,7 +10806,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
10760
10806
|
|
|
10761
10807
|
const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
|
|
10762
10808
|
const scrollParents = getScrollParents(data.contentEl.value);
|
|
10763
|
-
const viewportMargin = 12;
|
|
10809
|
+
const viewportMargin = props.stickToTarget ? 0 : 12; // TOOD: prop.viewportMargin
|
|
10810
|
+
|
|
10764
10811
|
if (!scrollParents.length) {
|
|
10765
10812
|
scrollParents.push(document.documentElement);
|
|
10766
10813
|
if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {
|
|
@@ -10780,10 +10827,17 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
10780
10827
|
}
|
|
10781
10828
|
return scrollBox;
|
|
10782
10829
|
}, undefined);
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10830
|
+
if (props.stickToTarget) {
|
|
10831
|
+
viewport.x += Math.min(0, targetBox.x);
|
|
10832
|
+
viewport.y += Math.min(0, targetBox.y);
|
|
10833
|
+
viewport.width = Math.max(viewport.width, targetBox.x + targetBox.width);
|
|
10834
|
+
viewport.height = Math.max(viewport.height, targetBox.y + targetBox.height);
|
|
10835
|
+
} else {
|
|
10836
|
+
viewport.x += viewportMargin;
|
|
10837
|
+
viewport.y += viewportMargin;
|
|
10838
|
+
viewport.width -= viewportMargin * 2;
|
|
10839
|
+
viewport.height -= viewportMargin * 2;
|
|
10840
|
+
}
|
|
10787
10841
|
let placement = {
|
|
10788
10842
|
anchor: preferredAnchor.value,
|
|
10789
10843
|
origin: preferredOrigin.value
|
|
@@ -10894,19 +10948,19 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
10894
10948
|
|
|
10895
10949
|
// shift
|
|
10896
10950
|
if (overflows.x.before) {
|
|
10897
|
-
|
|
10951
|
+
x += overflows.x.before;
|
|
10898
10952
|
contentBox.x += overflows.x.before;
|
|
10899
10953
|
}
|
|
10900
10954
|
if (overflows.x.after) {
|
|
10901
|
-
|
|
10955
|
+
x -= overflows.x.after;
|
|
10902
10956
|
contentBox.x -= overflows.x.after;
|
|
10903
10957
|
}
|
|
10904
10958
|
if (overflows.y.before) {
|
|
10905
|
-
|
|
10959
|
+
y += overflows.y.before;
|
|
10906
10960
|
contentBox.y += overflows.y.before;
|
|
10907
10961
|
}
|
|
10908
10962
|
if (overflows.y.after) {
|
|
10909
|
-
|
|
10963
|
+
y -= overflows.y.after;
|
|
10910
10964
|
contentBox.y -= overflows.y.after;
|
|
10911
10965
|
}
|
|
10912
10966
|
|
|
@@ -10915,9 +10969,9 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
10915
10969
|
const overflows = getOverflow(contentBox, viewport);
|
|
10916
10970
|
available.x = viewport.width - overflows.x.before - overflows.x.after;
|
|
10917
10971
|
available.y = viewport.height - overflows.y.before - overflows.y.after;
|
|
10918
|
-
|
|
10972
|
+
x += overflows.x.before;
|
|
10919
10973
|
contentBox.x += overflows.x.before;
|
|
10920
|
-
|
|
10974
|
+
y += overflows.y.before;
|
|
10921
10975
|
contentBox.y += overflows.y.before;
|
|
10922
10976
|
}
|
|
10923
10977
|
break;
|
|
@@ -11227,7 +11281,6 @@ function useActivator(props, _ref) {
|
|
|
11227
11281
|
isActive.value = !isActive.value;
|
|
11228
11282
|
},
|
|
11229
11283
|
onMouseenter: e => {
|
|
11230
|
-
if (e.sourceCapabilities?.firesTouchEvents) return;
|
|
11231
11284
|
isHovered = true;
|
|
11232
11285
|
activatorEl.value = e.currentTarget || e.target;
|
|
11233
11286
|
runOpenDelay();
|
|
@@ -23677,6 +23730,14 @@ const makeVDatePickerMonthProps = propsFactory({
|
|
|
23677
23730
|
type: String,
|
|
23678
23731
|
default: 'picker-reverse-transition'
|
|
23679
23732
|
},
|
|
23733
|
+
events: {
|
|
23734
|
+
type: [Array, Function, Object],
|
|
23735
|
+
default: () => null
|
|
23736
|
+
},
|
|
23737
|
+
eventColor: {
|
|
23738
|
+
type: [Array, Function, Object, String],
|
|
23739
|
+
default: () => null
|
|
23740
|
+
},
|
|
23680
23741
|
...omit(makeCalendarProps(), ['displayValue'])
|
|
23681
23742
|
}, 'VDatePickerMonth');
|
|
23682
23743
|
const VDatePickerMonth = genericComponent()({
|
|
@@ -23776,6 +23837,49 @@ const VDatePickerMonth = genericComponent()({
|
|
|
23776
23837
|
model.value = [value];
|
|
23777
23838
|
}
|
|
23778
23839
|
}
|
|
23840
|
+
function getEventColors(date) {
|
|
23841
|
+
const {
|
|
23842
|
+
events,
|
|
23843
|
+
eventColor
|
|
23844
|
+
} = props;
|
|
23845
|
+
let eventData;
|
|
23846
|
+
let eventColors = [];
|
|
23847
|
+
if (Array.isArray(events)) {
|
|
23848
|
+
eventData = events.includes(date);
|
|
23849
|
+
} else if (events instanceof Function) {
|
|
23850
|
+
eventData = events(date) || false;
|
|
23851
|
+
} else if (events) {
|
|
23852
|
+
eventData = events[date] || false;
|
|
23853
|
+
} else {
|
|
23854
|
+
eventData = false;
|
|
23855
|
+
}
|
|
23856
|
+
if (!eventData) {
|
|
23857
|
+
return [];
|
|
23858
|
+
} else if (eventData !== true) {
|
|
23859
|
+
eventColors = wrapInArray(eventData);
|
|
23860
|
+
} else if (typeof eventColor === 'string') {
|
|
23861
|
+
eventColors = [eventColor];
|
|
23862
|
+
} else if (typeof eventColor === 'function') {
|
|
23863
|
+
eventColors = wrapInArray(eventColor(date));
|
|
23864
|
+
} else if (Array.isArray(eventColor)) {
|
|
23865
|
+
eventColors = eventColor;
|
|
23866
|
+
} else if (typeof eventColor === 'object' && eventColor !== null) {
|
|
23867
|
+
eventColors = wrapInArray(eventColor[date]);
|
|
23868
|
+
}
|
|
23869
|
+
|
|
23870
|
+
// Fallback to default color if no color is found
|
|
23871
|
+
return !eventColors.length ? ['surface-variant'] : eventColors.filter(Boolean).map(color => typeof color === 'string' ? color : 'surface-variant');
|
|
23872
|
+
}
|
|
23873
|
+
function genEvents(date) {
|
|
23874
|
+
const eventColors = getEventColors(date);
|
|
23875
|
+
if (!eventColors.length) return null;
|
|
23876
|
+
return createElementVNode("div", {
|
|
23877
|
+
"class": "v-date-picker-month__events"
|
|
23878
|
+
}, [eventColors.map(color => createVNode(VBadge, {
|
|
23879
|
+
"dot": true,
|
|
23880
|
+
"color": color
|
|
23881
|
+
}, null))]);
|
|
23882
|
+
}
|
|
23779
23883
|
useRender(() => createElementVNode("div", {
|
|
23780
23884
|
"class": "v-date-picker-month",
|
|
23781
23885
|
"style": {
|
|
@@ -23806,7 +23910,6 @@ const VDatePickerMonth = genericComponent()({
|
|
|
23806
23910
|
disabled: item.isDisabled,
|
|
23807
23911
|
icon: true,
|
|
23808
23912
|
ripple: false,
|
|
23809
|
-
text: item.localized,
|
|
23810
23913
|
variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',
|
|
23811
23914
|
'aria-label': getDateAriaLabel(item),
|
|
23812
23915
|
'aria-current': item.isToday ? 'date' : undefined,
|
|
@@ -23827,7 +23930,9 @@ const VDatePickerMonth = genericComponent()({
|
|
|
23827
23930
|
'v-date-picker-month__day--week-start': item.isWeekStart
|
|
23828
23931
|
}]),
|
|
23829
23932
|
"data-v-date": !item.isDisabled ? item.isoDate : undefined
|
|
23830
|
-
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? createVNode(VBtn, slotProps.props,
|
|
23933
|
+
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? createVNode(VBtn, slotProps.props, {
|
|
23934
|
+
default: () => [item.localized, genEvents(item.isoDate)]
|
|
23935
|
+
}))]);
|
|
23831
23936
|
})])]
|
|
23832
23937
|
})]));
|
|
23833
23938
|
}
|
|
@@ -38158,7 +38263,7 @@ function createVuetify$1() {
|
|
|
38158
38263
|
};
|
|
38159
38264
|
});
|
|
38160
38265
|
}
|
|
38161
|
-
const version$1 = "3.10.7-dev.2025-10-
|
|
38266
|
+
const version$1 = "3.10.7-dev.2025-10-25";
|
|
38162
38267
|
createVuetify$1.version = version$1;
|
|
38163
38268
|
|
|
38164
38269
|
// Vue's inject() can only be used in setup
|
|
@@ -38456,7 +38561,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
38456
38561
|
|
|
38457
38562
|
/* eslint-disable local-rules/sort-imports */
|
|
38458
38563
|
|
|
38459
|
-
const version = "3.10.7-dev.2025-10-
|
|
38564
|
+
const version = "3.10.7-dev.2025-10-25";
|
|
38460
38565
|
|
|
38461
38566
|
/* eslint-disable local-rules/sort-imports */
|
|
38462
38567
|
|