@vuetify/nightly 3.7.15-master.2025-03-06 → 3.7.15-master.2025-03-08
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 +33 -3
- package/dist/json/attributes.json +3107 -3103
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +164 -164
- package/dist/json/tags.json +3 -2
- package/dist/json/web-types.json +5945 -5924
- package/dist/vuetify-labs.css +3283 -3283
- package/dist/vuetify-labs.d.ts +314 -142
- package/dist/vuetify-labs.esm.js +144 -126
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +143 -125
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +3835 -3835
- package/dist/vuetify.d.ts +264 -150
- package/dist/vuetify.esm.js +90 -69
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +89 -68
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +221 -219
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAppBar/index.d.mts +15 -6
- package/lib/components/VAutocomplete/index.d.mts +2 -2
- package/lib/components/VBadge/VBadge.mjs +2 -2
- package/lib/components/VBadge/VBadge.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.mjs +6 -3
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/index.d.mts +15 -6
- package/lib/components/VCard/VCard.mjs +12 -3
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCardItem.mjs +11 -4
- package/lib/components/VCard/VCardItem.mjs.map +1 -1
- package/lib/components/VCard/index.d.mts +75 -30
- package/lib/components/VCarousel/VCarousel.mjs +1 -1
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VChip/VChip.mjs +6 -3
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/index.d.mts +15 -6
- package/lib/components/VCombobox/index.d.mts +2 -2
- package/lib/components/VDataTable/composables/headers.mjs +2 -2
- package/lib/components/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/components/VDataTable/composables/paginate.mjs +2 -2
- package/lib/components/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +12 -21
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/components/VDatePicker/index.d.mts +3 -3
- package/lib/components/VFab/index.d.mts +15 -6
- package/lib/components/VList/VListItem.mjs +11 -5
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +32 -14
- package/lib/components/VPagination/VPagination.mjs +3 -3
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VParallax/VParallax.mjs +1 -1
- package/lib/components/VParallax/VParallax.mjs.map +1 -1
- package/lib/components/VRating/VRating.mjs +1 -1
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +2 -2
- package/lib/components/VSlider/slider.mjs +1 -1
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSparkline/VBarline.mjs +1 -1
- package/lib/components/VSparkline/VBarline.mjs.map +1 -1
- package/lib/components/VTabs/index.d.mts +39 -24
- package/lib/components/VTextarea/VTextarea.mjs +2 -2
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/index.d.mts +209 -95
- package/lib/composables/stack.mjs +2 -2
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/validation.mjs +2 -2
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +55 -55
- package/lib/labs/VDateInput/VDateInput.mjs +3 -2
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
- package/lib/labs/VDateInput/index.d.mts +10 -10
- package/lib/labs/VFileUpload/VFileUpload.mjs +3 -2
- package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -1
- package/lib/labs/VFileUpload/index.d.mts +32 -14
- package/lib/labs/VNumberInput/VNumberInput.mjs +5 -5
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VTimePicker/VTimePicker.mjs +30 -31
- package/lib/labs/VTimePicker/VTimePicker.mjs.map +1 -1
- package/lib/labs/VTimePicker/VTimePickerControls.mjs +14 -13
- package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
- package/lib/labs/VTimePicker/index.d.mts +35 -13
- package/lib/labs/VTimePicker/shared.mjs +2 -0
- package/lib/labs/VTimePicker/shared.mjs.map +1 -0
- package/lib/labs/VTreeview/index.d.mts +32 -14
- package/lib/labs/components.d.mts +107 -49
- package/lib/locale/adapters/vuetify.mjs +1 -1
- package/lib/locale/adapters/vuetify.mjs.map +1 -1
- package/lib/util/animation.mjs +8 -8
- package/lib/util/animation.mjs.map +1 -1
- package/lib/util/helpers.mjs +6 -4
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +1 -1
- package/lib/labs/VTimePicker/SelectingTimes.mjs +0 -10
- package/lib/labs/VTimePicker/SelectingTimes.mjs.map +0 -1
package/dist/vuetify-labs.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v3.7.15-master.2025-03-
|
2
|
+
* Vuetify v3.7.15-master.2025-03-08
|
3
3
|
* Forged by John Leider
|
4
4
|
* Released under the MIT License.
|
5
5
|
*/
|
@@ -155,12 +155,14 @@
|
|
155
155
|
let unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'px';
|
156
156
|
if (str == null || str === '') {
|
157
157
|
return undefined;
|
158
|
-
}
|
158
|
+
}
|
159
|
+
const num = Number(str);
|
160
|
+
if (isNaN(num)) {
|
159
161
|
return String(str);
|
160
|
-
} else if (!isFinite(
|
162
|
+
} else if (!isFinite(num)) {
|
161
163
|
return undefined;
|
162
164
|
} else {
|
163
|
-
return `${
|
165
|
+
return `${num}${unit}`;
|
164
166
|
}
|
165
167
|
}
|
166
168
|
function isObject(obj) {
|
@@ -694,16 +696,16 @@
|
|
694
696
|
let ta, sx, sy, dx, dy;
|
695
697
|
if (tx.startsWith('matrix3d(')) {
|
696
698
|
ta = tx.slice(9, -1).split(/, /);
|
697
|
-
sx =
|
698
|
-
sy =
|
699
|
-
dx =
|
700
|
-
dy =
|
699
|
+
sx = Number(ta[0]);
|
700
|
+
sy = Number(ta[5]);
|
701
|
+
dx = Number(ta[12]);
|
702
|
+
dy = Number(ta[13]);
|
701
703
|
} else if (tx.startsWith('matrix(')) {
|
702
704
|
ta = tx.slice(7, -1).split(/, /);
|
703
|
-
sx =
|
704
|
-
sy =
|
705
|
-
dx =
|
706
|
-
dy =
|
705
|
+
sx = Number(ta[0]);
|
706
|
+
sy = Number(ta[3]);
|
707
|
+
dx = Number(ta[4]);
|
708
|
+
dy = Number(ta[5]);
|
707
709
|
} else {
|
708
710
|
return new Box(rect);
|
709
711
|
}
|
@@ -2079,7 +2081,7 @@
|
|
2079
2081
|
const LANG_PREFIX = '$vuetify.';
|
2080
2082
|
const replace = (str, params) => {
|
2081
2083
|
return str.replace(/\{(\d+)\}/g, (match, index) => {
|
2082
|
-
return String(params[
|
2084
|
+
return String(params[Number(index)]);
|
2083
2085
|
});
|
2084
2086
|
};
|
2085
2087
|
const createTranslateFunction = (current, fallback, messages) => {
|
@@ -5576,7 +5578,10 @@
|
|
5576
5578
|
type: [Boolean, Object],
|
5577
5579
|
default: true
|
5578
5580
|
},
|
5579
|
-
text:
|
5581
|
+
text: {
|
5582
|
+
type: [String, Number, Boolean],
|
5583
|
+
default: undefined
|
5584
|
+
},
|
5580
5585
|
...makeBorderProps(),
|
5581
5586
|
...makeComponentProps(),
|
5582
5587
|
...makeDensityProps(),
|
@@ -5732,7 +5737,7 @@
|
|
5732
5737
|
}
|
5733
5738
|
}
|
5734
5739
|
}, {
|
5735
|
-
default: () => [slots.default?.() ?? props.text]
|
5740
|
+
default: () => [slots.default?.() ?? vue.toDisplayString(props.text)]
|
5736
5741
|
})]), !props.icon && hasAppend && vue.createVNode("span", {
|
5737
5742
|
"key": "append",
|
5738
5743
|
"class": "v-btn__append"
|
@@ -6740,7 +6745,7 @@
|
|
6740
6745
|
const isPristine = vue.shallowRef(true);
|
6741
6746
|
const isDirty = vue.computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
|
6742
6747
|
const errorMessages = vue.computed(() => {
|
6743
|
-
return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0,
|
6748
|
+
return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors))) : internalErrorMessages.value;
|
6744
6749
|
});
|
6745
6750
|
const validateOn = vue.computed(() => {
|
6746
6751
|
let value = (props.validateOn ?? form.validateOn?.value) || 'input';
|
@@ -6831,7 +6836,7 @@
|
|
6831
6836
|
const results = [];
|
6832
6837
|
isValidating.value = true;
|
6833
6838
|
for (const rule of props.rules) {
|
6834
|
-
if (results.length >=
|
6839
|
+
if (results.length >= Number(props.maxErrors ?? 1)) {
|
6835
6840
|
break;
|
6836
6841
|
}
|
6837
6842
|
const handler = typeof rule === 'function' ? rule : () => rule;
|
@@ -7892,7 +7897,10 @@
|
|
7892
7897
|
type: [Boolean, Object],
|
7893
7898
|
default: true
|
7894
7899
|
},
|
7895
|
-
text:
|
7900
|
+
text: {
|
7901
|
+
type: [String, Number, Boolean],
|
7902
|
+
default: undefined
|
7903
|
+
},
|
7896
7904
|
modelValue: {
|
7897
7905
|
type: Boolean,
|
7898
7906
|
default: true
|
@@ -8061,7 +8069,7 @@
|
|
8061
8069
|
toggle: group?.toggle,
|
8062
8070
|
value: group?.value.value,
|
8063
8071
|
disabled: props.disabled
|
8064
|
-
}) ?? props.text]), hasAppend && vue.createVNode("div", {
|
8072
|
+
}) ?? vue.toDisplayString(props.text)]), hasAppend && vue.createVNode("div", {
|
8065
8073
|
"key": "append",
|
8066
8074
|
"class": "v-chip__append"
|
8067
8075
|
}, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
|
@@ -8940,8 +8948,14 @@
|
|
8940
8948
|
default: true
|
8941
8949
|
},
|
8942
8950
|
slim: Boolean,
|
8943
|
-
subtitle:
|
8944
|
-
|
8951
|
+
subtitle: {
|
8952
|
+
type: [String, Number, Boolean],
|
8953
|
+
default: undefined
|
8954
|
+
},
|
8955
|
+
title: {
|
8956
|
+
type: [String, Number, Boolean],
|
8957
|
+
default: undefined
|
8958
|
+
},
|
8945
8959
|
value: null,
|
8946
8960
|
onClick: EventProp(),
|
8947
8961
|
onClickOnce: EventProp(),
|
@@ -9134,13 +9148,13 @@
|
|
9134
9148
|
}, {
|
9135
9149
|
default: () => [slots.title?.({
|
9136
9150
|
title: props.title
|
9137
|
-
}) ?? props.title]
|
9151
|
+
}) ?? vue.toDisplayString(props.title)]
|
9138
9152
|
}), hasSubtitle && vue.createVNode(VListItemSubtitle, {
|
9139
9153
|
"key": "subtitle"
|
9140
9154
|
}, {
|
9141
9155
|
default: () => [slots.subtitle?.({
|
9142
9156
|
subtitle: props.subtitle
|
9143
|
-
}) ?? props.subtitle]
|
9157
|
+
}) ?? vue.toDisplayString(props.subtitle)]
|
9144
9158
|
}), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
|
9145
9159
|
"key": "append",
|
9146
9160
|
"class": "v-list-item__append"
|
@@ -10741,10 +10755,10 @@
|
|
10741
10755
|
activeChildren: new Set()
|
10742
10756
|
});
|
10743
10757
|
vue.provide(StackSymbol, stack);
|
10744
|
-
const _zIndex = vue.shallowRef(
|
10758
|
+
const _zIndex = vue.shallowRef(Number(zIndex.value));
|
10745
10759
|
useToggleScope(isActive, () => {
|
10746
10760
|
const lastZIndex = globalStack.at(-1)?.[1];
|
10747
|
-
_zIndex.value = lastZIndex ? lastZIndex + 10 :
|
10761
|
+
_zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
|
10748
10762
|
if (createStackEntry) {
|
10749
10763
|
globalStack.push([vm.uid, _zIndex.value]);
|
10750
10764
|
}
|
@@ -13526,11 +13540,11 @@
|
|
13526
13540
|
locationStyles
|
13527
13541
|
} = useLocation(props, true, side => {
|
13528
13542
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
13529
|
-
return base + (['top', 'bottom'].includes(side) ?
|
13543
|
+
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
13530
13544
|
});
|
13531
13545
|
useRender(() => {
|
13532
13546
|
const value = Number(props.content);
|
13533
|
-
const content = !props.max || isNaN(value) ? props.content : value <=
|
13547
|
+
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
13534
13548
|
const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);
|
13535
13549
|
return vue.createVNode(props.tag, vue.mergeProps({
|
13536
13550
|
"class": ['v-badge', {
|
@@ -14229,8 +14243,14 @@
|
|
14229
14243
|
appendIcon: IconValue,
|
14230
14244
|
prependAvatar: String,
|
14231
14245
|
prependIcon: IconValue,
|
14232
|
-
subtitle:
|
14233
|
-
|
14246
|
+
subtitle: {
|
14247
|
+
type: [String, Number, Boolean],
|
14248
|
+
default: undefined
|
14249
|
+
},
|
14250
|
+
title: {
|
14251
|
+
type: [String, Number, Boolean],
|
14252
|
+
default: undefined
|
14253
|
+
},
|
14234
14254
|
...makeComponentProps(),
|
14235
14255
|
...makeDensityProps()
|
14236
14256
|
}, 'VCardItem');
|
@@ -14280,11 +14300,11 @@
|
|
14280
14300
|
}, [hasTitle && vue.createVNode(VCardTitle, {
|
14281
14301
|
"key": "title"
|
14282
14302
|
}, {
|
14283
|
-
default: () => [slots.title?.() ?? props.title]
|
14303
|
+
default: () => [slots.title?.() ?? vue.toDisplayString(props.title)]
|
14284
14304
|
}), hasSubtitle && vue.createVNode(VCardSubtitle, {
|
14285
14305
|
"key": "subtitle"
|
14286
14306
|
}, {
|
14287
|
-
default: () => [slots.subtitle?.() ?? props.subtitle]
|
14307
|
+
default: () => [slots.subtitle?.() ?? vue.toDisplayString(props.subtitle)]
|
14288
14308
|
}), slots.default?.()]), hasAppend && vue.createVNode("div", {
|
14289
14309
|
"key": "append",
|
14290
14310
|
"class": "v-card-item__append"
|
@@ -14356,9 +14376,18 @@
|
|
14356
14376
|
type: [Boolean, Object],
|
14357
14377
|
default: true
|
14358
14378
|
},
|
14359
|
-
subtitle:
|
14360
|
-
|
14361
|
-
|
14379
|
+
subtitle: {
|
14380
|
+
type: [String, Number, Boolean],
|
14381
|
+
default: undefined
|
14382
|
+
},
|
14383
|
+
text: {
|
14384
|
+
type: [String, Number, Boolean],
|
14385
|
+
default: undefined
|
14386
|
+
},
|
14387
|
+
title: {
|
14388
|
+
type: [String, Number, Boolean],
|
14389
|
+
default: undefined
|
14390
|
+
},
|
14362
14391
|
...makeBorderProps(),
|
14363
14392
|
...makeComponentProps(),
|
14364
14393
|
...makeDensityProps(),
|
@@ -14827,7 +14856,7 @@
|
|
14827
14856
|
vue.onMounted(startTimeout);
|
14828
14857
|
function startTimeout() {
|
14829
14858
|
if (!props.cycle || !windowRef.value) return;
|
14830
|
-
slideTimeout = window.setTimeout(windowRef.value.group.next,
|
14859
|
+
slideTimeout = window.setTimeout(windowRef.value.group.next, Number(props.interval) > 0 ? Number(props.interval) : 6000);
|
14831
14860
|
}
|
14832
14861
|
function restartTimeout() {
|
14833
14862
|
window.clearTimeout(slideTimeout);
|
@@ -15553,7 +15582,7 @@
|
|
15553
15582
|
const useSteps = props => {
|
15554
15583
|
const min = vue.computed(() => parseFloat(props.min));
|
15555
15584
|
const max = vue.computed(() => parseFloat(props.max));
|
15556
|
-
const step = vue.computed(() =>
|
15585
|
+
const step = vue.computed(() => Number(props.step) > 0 ? parseFloat(props.step) : 0);
|
15557
15586
|
const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
|
15558
15587
|
function roundValue(value) {
|
15559
15588
|
value = parseFloat(value);
|
@@ -18508,8 +18537,8 @@
|
|
18508
18537
|
}, 'DataTable-paginate');
|
18509
18538
|
const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
|
18510
18539
|
function createPagination(props) {
|
18511
|
-
const page = useProxiedModel(props, 'page', undefined, value =>
|
18512
|
-
const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value =>
|
18540
|
+
const page = useProxiedModel(props, 'page', undefined, value => Number(value ?? 1));
|
18541
|
+
const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => Number(value ?? 10));
|
18513
18542
|
return {
|
18514
18543
|
page,
|
18515
18544
|
itemsPerPage
|
@@ -19298,7 +19327,7 @@
|
|
19298
19327
|
const minButtons = props.showFirstLastPage ? 5 : 3;
|
19299
19328
|
return Math.max(0, Math.floor(
|
19300
19329
|
// Round to two decimal places to avoid floating point errors
|
19301
|
-
|
19330
|
+
Number(((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2))));
|
19302
19331
|
}
|
19303
19332
|
const range = vue.computed(() => {
|
19304
19333
|
if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];
|
@@ -19369,7 +19398,7 @@
|
|
19369
19398
|
ref,
|
19370
19399
|
ellipsis: false,
|
19371
19400
|
icon: true,
|
19372
|
-
disabled: !!props.disabled ||
|
19401
|
+
disabled: !!props.disabled || Number(props.length) < 2,
|
19373
19402
|
color: isActive ? props.activeColor : props.color,
|
19374
19403
|
'aria-current': isActive,
|
19375
19404
|
'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),
|
@@ -19418,7 +19447,7 @@
|
|
19418
19447
|
refs.value[currentIndex]?.$el.focus();
|
19419
19448
|
}
|
19420
19449
|
function onKeydown(e) {
|
19421
|
-
if (e.key === keyValues.left && !props.disabled && page.value >
|
19450
|
+
if (e.key === keyValues.left && !props.disabled && page.value > Number(props.start)) {
|
19422
19451
|
page.value = page.value - 1;
|
19423
19452
|
vue.nextTick(updateFocus);
|
19424
19453
|
} else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {
|
@@ -19751,10 +19780,10 @@
|
|
19751
19780
|
} else {
|
19752
19781
|
if (!seenFixed) {
|
19753
19782
|
item.lastFixed = true;
|
19754
|
-
} else if (isNaN(
|
19783
|
+
} else if (isNaN(Number(item.width))) {
|
19755
19784
|
consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
|
19756
19785
|
} else {
|
19757
|
-
item.minWidth = Math.max(
|
19786
|
+
item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0);
|
19758
19787
|
}
|
19759
19788
|
seenFixed = true;
|
19760
19789
|
}
|
@@ -21887,7 +21916,7 @@
|
|
21887
21916
|
model.value = [value];
|
21888
21917
|
}
|
21889
21918
|
}
|
21890
|
-
|
21919
|
+
useRender(() => vue.createVNode("div", {
|
21891
21920
|
"class": "v-date-picker-month"
|
21892
21921
|
}, [props.showWeek && vue.createVNode("div", {
|
21893
21922
|
"key": "weeks",
|
@@ -21909,6 +21938,13 @@
|
|
21909
21938
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
21910
21939
|
const slotProps = {
|
21911
21940
|
props: {
|
21941
|
+
class: 'v-date-picker-month__day-btn',
|
21942
|
+
color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
|
21943
|
+
disabled: item.isDisabled,
|
21944
|
+
icon: true,
|
21945
|
+
ripple: false,
|
21946
|
+
text: item.localized,
|
21947
|
+
variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
|
21912
21948
|
onClick: () => onClick(item.date)
|
21913
21949
|
},
|
21914
21950
|
item,
|
@@ -21926,24 +21962,9 @@
|
|
21926
21962
|
'v-date-picker-month__day--week-start': item.isWeekStart
|
21927
21963
|
}],
|
21928
21964
|
"data-v-date": !item.isDisabled ? item.isoDate : undefined
|
21929
|
-
}, [(props.showAdjacentMonths || !item.isAdjacent) && vue.createVNode(
|
21930
|
-
"defaults": {
|
21931
|
-
VBtn: {
|
21932
|
-
class: 'v-date-picker-month__day-btn',
|
21933
|
-
color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
|
21934
|
-
disabled: item.isDisabled,
|
21935
|
-
icon: true,
|
21936
|
-
ripple: false,
|
21937
|
-
text: item.localized,
|
21938
|
-
variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
|
21939
|
-
onClick: () => onClick(item.date)
|
21940
|
-
}
|
21941
|
-
}
|
21942
|
-
}, {
|
21943
|
-
default: () => [slots.day?.(slotProps) ?? vue.createVNode(VBtn, slotProps.props, null)]
|
21944
|
-
})]);
|
21965
|
+
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? vue.createVNode(VBtn, slotProps.props, null))]);
|
21945
21966
|
})])]
|
21946
|
-
})]);
|
21967
|
+
})]));
|
21947
21968
|
}
|
21948
21969
|
});
|
21949
21970
|
|
@@ -24700,7 +24721,7 @@
|
|
24700
24721
|
vue.watch(displayHeight, onScroll);
|
24701
24722
|
vue.watch(() => contentRect.value?.height, onScroll);
|
24702
24723
|
const scale = vue.computed(() => {
|
24703
|
-
return 1 - clamp(
|
24724
|
+
return 1 - clamp(Number(props.scale));
|
24704
24725
|
});
|
24705
24726
|
let frame = -1;
|
24706
24727
|
function onScroll() {
|
@@ -25121,7 +25142,7 @@
|
|
25121
25142
|
themeClasses
|
25122
25143
|
} = provideTheme(props);
|
25123
25144
|
const rating = useProxiedModel(props, 'modelValue');
|
25124
|
-
const normalizedValue = vue.computed(() => clamp(parseFloat(rating.value), 0,
|
25145
|
+
const normalizedValue = vue.computed(() => clamp(parseFloat(rating.value), 0, Number(props.length)));
|
25125
25146
|
const range = vue.computed(() => createRange(Number(props.length), 1));
|
25126
25147
|
const increments = vue.computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
|
25127
25148
|
const hoverIndex = vue.shallowRef(-1);
|
@@ -25732,7 +25753,7 @@
|
|
25732
25753
|
const height = Math.abs(gridY * value);
|
25733
25754
|
return {
|
25734
25755
|
x: minX + index * gridX,
|
25735
|
-
y: horizonY - height +
|
25756
|
+
y: horizonY - height + Number(value < 0) * height,
|
25736
25757
|
height,
|
25737
25758
|
value
|
25738
25759
|
};
|
@@ -27170,10 +27191,10 @@
|
|
27170
27191
|
}
|
27171
27192
|
}
|
27172
27193
|
const sizerRef = vue.ref();
|
27173
|
-
const rows = vue.ref(
|
27194
|
+
const rows = vue.ref(Number(props.rows));
|
27174
27195
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
27175
27196
|
vue.watchEffect(() => {
|
27176
|
-
if (!props.autoGrow) rows.value =
|
27197
|
+
if (!props.autoGrow) rows.value = Number(props.rows);
|
27177
27198
|
});
|
27178
27199
|
function calculateInputHeight() {
|
27179
27200
|
if (!props.autoGrow) return;
|
@@ -28220,8 +28241,8 @@
|
|
28220
28241
|
prependIcon: '$calendar'
|
28221
28242
|
}),
|
28222
28243
|
...omit(makeVDatePickerProps({
|
28223
|
-
|
28224
|
-
|
28244
|
+
hideHeader: true,
|
28245
|
+
showAdjacentMonths: true
|
28225
28246
|
}), ['active', 'location', 'rounded'])
|
28226
28247
|
}, 'VDateInput');
|
28227
28248
|
const VDateInput = genericComponent()({
|
@@ -28305,6 +28326,7 @@
|
|
28305
28326
|
"onUpdate:modelValue": $event => menu.value = $event,
|
28306
28327
|
"activator": "parent",
|
28307
28328
|
"min-width": "0",
|
28329
|
+
"eager": isFocused.value,
|
28308
28330
|
"location": props.location,
|
28309
28331
|
"closeOnContentClick": false,
|
28310
28332
|
"openOnClick": false
|
@@ -28544,8 +28566,9 @@
|
|
28544
28566
|
inputRef.value?.click();
|
28545
28567
|
}
|
28546
28568
|
function onClickRemove(index) {
|
28547
|
-
|
28548
|
-
|
28569
|
+
const newValue = model.value.filter((_, i) => i !== index);
|
28570
|
+
model.value = newValue;
|
28571
|
+
if (newValue.length > 0 || !inputRef.value) return;
|
28549
28572
|
inputRef.value.value = '';
|
28550
28573
|
}
|
28551
28574
|
useRender(() => {
|
@@ -28756,7 +28779,7 @@
|
|
28756
28779
|
return isFocused.value ? Number(fixed).toString() // trim zeros
|
28757
28780
|
: fixed;
|
28758
28781
|
}
|
28759
|
-
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(
|
28782
|
+
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
28760
28783
|
const _inputText = vue.shallowRef(null);
|
28761
28784
|
vue.watchEffect(() => {
|
28762
28785
|
if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
|
@@ -28771,8 +28794,8 @@
|
|
28771
28794
|
if (val === null || val === '') {
|
28772
28795
|
model.value = null;
|
28773
28796
|
_inputText.value = null;
|
28774
|
-
} else if (!isNaN(
|
28775
|
-
model.value =
|
28797
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
28798
|
+
model.value = Number(val);
|
28776
28799
|
_inputText.value = val;
|
28777
28800
|
}
|
28778
28801
|
}
|
@@ -28896,8 +28919,8 @@
|
|
28896
28919
|
if (controlsDisabled.value) return;
|
28897
28920
|
if (!vTextFieldRef.value) return;
|
28898
28921
|
const actualText = vTextFieldRef.value.value;
|
28899
|
-
if (actualText && !isNaN(
|
28900
|
-
inputText.value = correctPrecision(clamp(
|
28922
|
+
if (actualText && !isNaN(Number(actualText))) {
|
28923
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
28901
28924
|
} else {
|
28902
28925
|
inputText.value = null;
|
28903
28926
|
}
|
@@ -29771,14 +29794,7 @@
|
|
29771
29794
|
}
|
29772
29795
|
});
|
29773
29796
|
|
29774
|
-
//
|
29775
|
-
/* eslint-disable */
|
29776
|
-
var SelectingTimes = /*#__PURE__*/function (SelectingTimes) {
|
29777
|
-
SelectingTimes[SelectingTimes["Hour"] = 1] = "Hour";
|
29778
|
-
SelectingTimes[SelectingTimes["Minute"] = 2] = "Minute";
|
29779
|
-
SelectingTimes[SelectingTimes["Second"] = 3] = "Second";
|
29780
|
-
return SelectingTimes;
|
29781
|
-
}(SelectingTimes || {});
|
29797
|
+
// Types
|
29782
29798
|
|
29783
29799
|
const makeVTimePickerControlsProps = propsFactory({
|
29784
29800
|
ampm: Boolean,
|
@@ -29792,15 +29808,15 @@
|
|
29792
29808
|
period: String,
|
29793
29809
|
readonly: Boolean,
|
29794
29810
|
useSeconds: Boolean,
|
29795
|
-
|
29796
|
-
|
29811
|
+
value: Number,
|
29812
|
+
viewMode: String
|
29797
29813
|
}, 'VTimePickerControls');
|
29798
29814
|
const VTimePickerControls = genericComponent()({
|
29799
29815
|
name: 'VTimePickerControls',
|
29800
29816
|
props: makeVTimePickerControlsProps(),
|
29801
29817
|
emits: {
|
29802
29818
|
'update:period': data => true,
|
29803
|
-
'update:
|
29819
|
+
'update:viewMode': data => true
|
29804
29820
|
},
|
29805
29821
|
setup(props, _ref) {
|
29806
29822
|
let {
|
@@ -29823,8 +29839,8 @@
|
|
29823
29839
|
'v-time-picker-controls__time--with-seconds': props.useSeconds
|
29824
29840
|
}
|
29825
29841
|
}, [vue.createVNode(VBtn, {
|
29826
|
-
"active": props.
|
29827
|
-
"color": props.
|
29842
|
+
"active": props.viewMode === 'hour',
|
29843
|
+
"color": props.viewMode === 'hour' ? props.color : undefined,
|
29828
29844
|
"disabled": props.disabled,
|
29829
29845
|
"variant": "tonal",
|
29830
29846
|
"class": {
|
@@ -29833,24 +29849,24 @@
|
|
29833
29849
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
29834
29850
|
},
|
29835
29851
|
"text": props.hour == null ? '--' : pad(`${hour}`),
|
29836
|
-
"onClick": () => emit('update:
|
29852
|
+
"onClick": () => emit('update:viewMode', 'hour')
|
29837
29853
|
}, null), vue.createVNode("span", {
|
29838
29854
|
"class": ['v-time-picker-controls__time__separator', {
|
29839
29855
|
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
29840
29856
|
}]
|
29841
29857
|
}, [vue.createTextVNode(":")]), vue.createVNode(VBtn, {
|
29842
|
-
"active": props.
|
29843
|
-
"color": props.
|
29858
|
+
"active": props.viewMode === 'minute',
|
29859
|
+
"color": props.viewMode === 'minute' ? props.color : undefined,
|
29844
29860
|
"class": {
|
29845
29861
|
'v-time-picker-controls__time__btn': true,
|
29846
|
-
'v-time-picker-controls__time__btn__active': props.
|
29862
|
+
'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',
|
29847
29863
|
'v-time-picker-controls__time--with-ampm__btn': props.ampm,
|
29848
29864
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
29849
29865
|
},
|
29850
29866
|
"disabled": props.disabled,
|
29851
29867
|
"variant": "tonal",
|
29852
29868
|
"text": props.minute == null ? '--' : pad(props.minute),
|
29853
|
-
"onClick": () => emit('update:
|
29869
|
+
"onClick": () => emit('update:viewMode', 'minute')
|
29854
29870
|
}, null), props.useSeconds && vue.createVNode("span", {
|
29855
29871
|
"class": ['v-time-picker-controls__time__separator', {
|
29856
29872
|
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
@@ -29858,11 +29874,13 @@
|
|
29858
29874
|
"key": "secondsDivider"
|
29859
29875
|
}, [vue.createTextVNode(":")]), props.useSeconds && vue.createVNode(VBtn, {
|
29860
29876
|
"key": "secondsVal",
|
29877
|
+
"active": props.viewMode === 'second',
|
29878
|
+
"color": props.viewMode === 'second' ? props.color : undefined,
|
29861
29879
|
"variant": "tonal",
|
29862
|
-
"onClick": () => emit('update:
|
29880
|
+
"onClick": () => emit('update:viewMode', 'second'),
|
29863
29881
|
"class": {
|
29864
29882
|
'v-time-picker-controls__time__btn': true,
|
29865
|
-
'v-time-picker-controls__time__btn__active': props.
|
29883
|
+
'v-time-picker-controls__time__btn__active': props.viewMode === 'second',
|
29866
29884
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
29867
29885
|
},
|
29868
29886
|
"disabled": props.disabled,
|
@@ -29907,11 +29925,6 @@
|
|
29907
29925
|
const rangeHours12am = createRange(12);
|
29908
29926
|
const rangeHours12pm = rangeHours12am.map(v => v + 12);
|
29909
29927
|
createRange(60);
|
29910
|
-
const selectingNames = {
|
29911
|
-
1: 'hour',
|
29912
|
-
2: 'minute',
|
29913
|
-
3: 'second'
|
29914
|
-
};
|
29915
29928
|
const makeVTimePickerProps = propsFactory({
|
29916
29929
|
allowedHours: [Function, Array],
|
29917
29930
|
allowedMinutes: [Function, Array],
|
@@ -29924,6 +29937,10 @@
|
|
29924
29937
|
},
|
29925
29938
|
max: String,
|
29926
29939
|
min: String,
|
29940
|
+
viewMode: {
|
29941
|
+
type: String,
|
29942
|
+
default: 'hour'
|
29943
|
+
},
|
29927
29944
|
modelValue: null,
|
29928
29945
|
readonly: Boolean,
|
29929
29946
|
scrollable: Boolean,
|
@@ -29940,7 +29957,8 @@
|
|
29940
29957
|
'update:minute': val => true,
|
29941
29958
|
'update:period': val => true,
|
29942
29959
|
'update:second': val => true,
|
29943
|
-
'update:modelValue': val => true
|
29960
|
+
'update:modelValue': val => true,
|
29961
|
+
'update:viewMode': val => true
|
29944
29962
|
},
|
29945
29963
|
setup(props, _ref) {
|
29946
29964
|
let {
|
@@ -29957,7 +29975,7 @@
|
|
29957
29975
|
const lazyInputMinute = vue.ref(null);
|
29958
29976
|
const lazyInputSecond = vue.ref(null);
|
29959
29977
|
const period = vue.ref('am');
|
29960
|
-
const
|
29978
|
+
const viewMode = useProxiedModel(props, 'viewMode', 'hour');
|
29961
29979
|
const controlsRef = vue.ref(null);
|
29962
29980
|
const clockRef = vue.ref(null);
|
29963
29981
|
const isAllowedHourCb = vue.computed(() => {
|
@@ -29971,7 +29989,7 @@
|
|
29971
29989
|
const minHour = props.min ? Number(props.min.split(':')[0]) : 0;
|
29972
29990
|
const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;
|
29973
29991
|
return val => {
|
29974
|
-
return val >= minHour
|
29992
|
+
return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));
|
29975
29993
|
};
|
29976
29994
|
});
|
29977
29995
|
const isAllowedMinuteCb = vue.computed(() => {
|
@@ -29987,8 +30005,8 @@
|
|
29987
30005
|
}
|
29988
30006
|
const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];
|
29989
30007
|
const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];
|
29990
|
-
const minTime = minHour * 60 + minMinute
|
29991
|
-
const maxTime = maxHour * 60 + maxMinute
|
30008
|
+
const minTime = minHour * 60 + Number(minMinute);
|
30009
|
+
const maxTime = maxHour * 60 + Number(maxMinute);
|
29992
30010
|
return val => {
|
29993
30011
|
const time = 60 * inputHour.value + val;
|
29994
30012
|
return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));
|
@@ -30008,8 +30026,8 @@
|
|
30008
30026
|
}
|
30009
30027
|
const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];
|
30010
30028
|
const [maxHour, maxMinute, maxSecond] = props.max ? props.max.split(':').map(Number) : [23, 59, 59];
|
30011
|
-
const minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0)
|
30012
|
-
const maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0)
|
30029
|
+
const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);
|
30030
|
+
const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);
|
30013
30031
|
return val => {
|
30014
30032
|
const time = 3600 * inputHour.value + 60 * inputMinute.value + val;
|
30015
30033
|
return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));
|
@@ -30075,16 +30093,16 @@
|
|
30075
30093
|
return true;
|
30076
30094
|
}
|
30077
30095
|
function onInput(value) {
|
30078
|
-
if (
|
30096
|
+
if (viewMode.value === 'hour') {
|
30079
30097
|
inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;
|
30080
|
-
} else if (
|
30098
|
+
} else if (viewMode.value === 'minute') {
|
30081
30099
|
inputMinute.value = value;
|
30082
30100
|
} else {
|
30083
30101
|
inputSecond.value = value;
|
30084
30102
|
}
|
30085
30103
|
}
|
30086
30104
|
function onChange(value) {
|
30087
|
-
switch (
|
30105
|
+
switch (viewMode.value || 'hour') {
|
30088
30106
|
case 'hour':
|
30089
30107
|
emit('update:hour', value);
|
30090
30108
|
break;
|
@@ -30096,10 +30114,10 @@
|
|
30096
30114
|
break;
|
30097
30115
|
}
|
30098
30116
|
const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);
|
30099
|
-
if (
|
30100
|
-
|
30101
|
-
} else if (props.useSeconds &&
|
30102
|
-
|
30117
|
+
if (viewMode.value === 'hour') {
|
30118
|
+
viewMode.value = 'minute';
|
30119
|
+
} else if (props.useSeconds && viewMode.value === 'minute') {
|
30120
|
+
viewMode.value = 'second';
|
30103
30121
|
}
|
30104
30122
|
if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;
|
30105
30123
|
const time = genValue();
|
@@ -30128,20 +30146,20 @@
|
|
30128
30146
|
"minute": inputMinute.value,
|
30129
30147
|
"period": period.value,
|
30130
30148
|
"second": inputSecond.value,
|
30131
|
-
"
|
30149
|
+
"viewMode": viewMode.value,
|
30132
30150
|
"onUpdate:period": val => setPeriod(val),
|
30133
|
-
"onUpdate:
|
30151
|
+
"onUpdate:viewMode": value => viewMode.value = value,
|
30134
30152
|
"ref": controlsRef
|
30135
30153
|
}), null),
|
30136
30154
|
default: () => vue.createVNode(VTimePickerClock, vue.mergeProps(timePickerClockProps, {
|
30137
|
-
"allowedValues":
|
30138
|
-
"double":
|
30139
|
-
"format":
|
30140
|
-
"max":
|
30141
|
-
"min":
|
30155
|
+
"allowedValues": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,
|
30156
|
+
"double": viewMode.value === 'hour' && !isAmPm.value,
|
30157
|
+
"format": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),
|
30158
|
+
"max": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,
|
30159
|
+
"min": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,
|
30142
30160
|
"size": 20,
|
30143
|
-
"step":
|
30144
|
-
"modelValue":
|
30161
|
+
"step": viewMode.value === 'hour' ? 1 : 5,
|
30162
|
+
"modelValue": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,
|
30145
30163
|
"onChange": onChange,
|
30146
30164
|
"onInput": onInput,
|
30147
30165
|
"ref": clockRef
|
@@ -31054,7 +31072,7 @@
|
|
31054
31072
|
goTo
|
31055
31073
|
};
|
31056
31074
|
}
|
31057
|
-
const version$1 = "3.7.15-master.2025-03-
|
31075
|
+
const version$1 = "3.7.15-master.2025-03-08";
|
31058
31076
|
createVuetify$1.version = version$1;
|
31059
31077
|
|
31060
31078
|
// Vue's inject() can only be used in setup
|
@@ -31307,7 +31325,7 @@
|
|
31307
31325
|
|
31308
31326
|
/* eslint-disable local-rules/sort-imports */
|
31309
31327
|
|
31310
|
-
const version = "3.7.15-master.2025-03-
|
31328
|
+
const version = "3.7.15-master.2025-03-08";
|
31311
31329
|
|
31312
31330
|
/* eslint-disable local-rules/sort-imports */
|
31313
31331
|
|