@vuetify/nightly 3.7.15-master.2025-03-05 → 3.7.15-master.2025-03-07
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 +29 -3
- package/dist/json/attributes.json +2581 -2577
- package/dist/json/importMap-labs.json +12 -12
- package/dist/json/importMap.json +160 -160
- package/dist/json/tags.json +3 -2
- package/dist/json/web-types.json +4799 -4778
- package/dist/vuetify-labs.css +2627 -2627
- package/dist/vuetify-labs.d.ts +301 -129
- package/dist/vuetify-labs.esm.js +129 -106
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +128 -105
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +2604 -2604
- package/dist/vuetify.d.ts +258 -144
- package/dist/vuetify.esm.js +80 -51
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +79 -50
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +219 -217
- 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/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 +206 -92
- 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 +52 -52
- 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 +12 -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 +97 -39
- 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-07
|
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
|
}
|
@@ -24700,7 +24729,7 @@
|
|
24700
24729
|
vue.watch(displayHeight, onScroll);
|
24701
24730
|
vue.watch(() => contentRect.value?.height, onScroll);
|
24702
24731
|
const scale = vue.computed(() => {
|
24703
|
-
return 1 - clamp(
|
24732
|
+
return 1 - clamp(Number(props.scale));
|
24704
24733
|
});
|
24705
24734
|
let frame = -1;
|
24706
24735
|
function onScroll() {
|
@@ -25121,7 +25150,7 @@
|
|
25121
25150
|
themeClasses
|
25122
25151
|
} = provideTheme(props);
|
25123
25152
|
const rating = useProxiedModel(props, 'modelValue');
|
25124
|
-
const normalizedValue = vue.computed(() => clamp(parseFloat(rating.value), 0,
|
25153
|
+
const normalizedValue = vue.computed(() => clamp(parseFloat(rating.value), 0, Number(props.length)));
|
25125
25154
|
const range = vue.computed(() => createRange(Number(props.length), 1));
|
25126
25155
|
const increments = vue.computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
|
25127
25156
|
const hoverIndex = vue.shallowRef(-1);
|
@@ -25732,7 +25761,7 @@
|
|
25732
25761
|
const height = Math.abs(gridY * value);
|
25733
25762
|
return {
|
25734
25763
|
x: minX + index * gridX,
|
25735
|
-
y: horizonY - height +
|
25764
|
+
y: horizonY - height + Number(value < 0) * height,
|
25736
25765
|
height,
|
25737
25766
|
value
|
25738
25767
|
};
|
@@ -27170,10 +27199,10 @@
|
|
27170
27199
|
}
|
27171
27200
|
}
|
27172
27201
|
const sizerRef = vue.ref();
|
27173
|
-
const rows = vue.ref(
|
27202
|
+
const rows = vue.ref(Number(props.rows));
|
27174
27203
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
27175
27204
|
vue.watchEffect(() => {
|
27176
|
-
if (!props.autoGrow) rows.value =
|
27205
|
+
if (!props.autoGrow) rows.value = Number(props.rows);
|
27177
27206
|
});
|
27178
27207
|
function calculateInputHeight() {
|
27179
27208
|
if (!props.autoGrow) return;
|
@@ -28544,8 +28573,9 @@
|
|
28544
28573
|
inputRef.value?.click();
|
28545
28574
|
}
|
28546
28575
|
function onClickRemove(index) {
|
28547
|
-
|
28548
|
-
|
28576
|
+
const newValue = model.value.filter((_, i) => i !== index);
|
28577
|
+
model.value = newValue;
|
28578
|
+
if (newValue.length > 0 || !inputRef.value) return;
|
28549
28579
|
inputRef.value.value = '';
|
28550
28580
|
}
|
28551
28581
|
useRender(() => {
|
@@ -28756,7 +28786,7 @@
|
|
28756
28786
|
return isFocused.value ? Number(fixed).toString() // trim zeros
|
28757
28787
|
: fixed;
|
28758
28788
|
}
|
28759
|
-
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(
|
28789
|
+
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
28760
28790
|
const _inputText = vue.shallowRef(null);
|
28761
28791
|
vue.watchEffect(() => {
|
28762
28792
|
if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
|
@@ -28771,8 +28801,8 @@
|
|
28771
28801
|
if (val === null || val === '') {
|
28772
28802
|
model.value = null;
|
28773
28803
|
_inputText.value = null;
|
28774
|
-
} else if (!isNaN(
|
28775
|
-
model.value =
|
28804
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
28805
|
+
model.value = Number(val);
|
28776
28806
|
_inputText.value = val;
|
28777
28807
|
}
|
28778
28808
|
}
|
@@ -28896,8 +28926,8 @@
|
|
28896
28926
|
if (controlsDisabled.value) return;
|
28897
28927
|
if (!vTextFieldRef.value) return;
|
28898
28928
|
const actualText = vTextFieldRef.value.value;
|
28899
|
-
if (actualText && !isNaN(
|
28900
|
-
inputText.value = correctPrecision(clamp(
|
28929
|
+
if (actualText && !isNaN(Number(actualText))) {
|
28930
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
28901
28931
|
} else {
|
28902
28932
|
inputText.value = null;
|
28903
28933
|
}
|
@@ -29771,14 +29801,7 @@
|
|
29771
29801
|
}
|
29772
29802
|
});
|
29773
29803
|
|
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 || {});
|
29804
|
+
// Types
|
29782
29805
|
|
29783
29806
|
const makeVTimePickerControlsProps = propsFactory({
|
29784
29807
|
ampm: Boolean,
|
@@ -29792,15 +29815,15 @@
|
|
29792
29815
|
period: String,
|
29793
29816
|
readonly: Boolean,
|
29794
29817
|
useSeconds: Boolean,
|
29795
|
-
|
29796
|
-
|
29818
|
+
value: Number,
|
29819
|
+
viewMode: String
|
29797
29820
|
}, 'VTimePickerControls');
|
29798
29821
|
const VTimePickerControls = genericComponent()({
|
29799
29822
|
name: 'VTimePickerControls',
|
29800
29823
|
props: makeVTimePickerControlsProps(),
|
29801
29824
|
emits: {
|
29802
29825
|
'update:period': data => true,
|
29803
|
-
'update:
|
29826
|
+
'update:viewMode': data => true
|
29804
29827
|
},
|
29805
29828
|
setup(props, _ref) {
|
29806
29829
|
let {
|
@@ -29823,8 +29846,8 @@
|
|
29823
29846
|
'v-time-picker-controls__time--with-seconds': props.useSeconds
|
29824
29847
|
}
|
29825
29848
|
}, [vue.createVNode(VBtn, {
|
29826
|
-
"active": props.
|
29827
|
-
"color": props.
|
29849
|
+
"active": props.viewMode === 'hour',
|
29850
|
+
"color": props.viewMode === 'hour' ? props.color : undefined,
|
29828
29851
|
"disabled": props.disabled,
|
29829
29852
|
"variant": "tonal",
|
29830
29853
|
"class": {
|
@@ -29833,24 +29856,24 @@
|
|
29833
29856
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
29834
29857
|
},
|
29835
29858
|
"text": props.hour == null ? '--' : pad(`${hour}`),
|
29836
|
-
"onClick": () => emit('update:
|
29859
|
+
"onClick": () => emit('update:viewMode', 'hour')
|
29837
29860
|
}, null), vue.createVNode("span", {
|
29838
29861
|
"class": ['v-time-picker-controls__time__separator', {
|
29839
29862
|
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
29840
29863
|
}]
|
29841
29864
|
}, [vue.createTextVNode(":")]), vue.createVNode(VBtn, {
|
29842
|
-
"active": props.
|
29843
|
-
"color": props.
|
29865
|
+
"active": props.viewMode === 'minute',
|
29866
|
+
"color": props.viewMode === 'minute' ? props.color : undefined,
|
29844
29867
|
"class": {
|
29845
29868
|
'v-time-picker-controls__time__btn': true,
|
29846
|
-
'v-time-picker-controls__time__btn__active': props.
|
29869
|
+
'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',
|
29847
29870
|
'v-time-picker-controls__time--with-ampm__btn': props.ampm,
|
29848
29871
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
29849
29872
|
},
|
29850
29873
|
"disabled": props.disabled,
|
29851
29874
|
"variant": "tonal",
|
29852
29875
|
"text": props.minute == null ? '--' : pad(props.minute),
|
29853
|
-
"onClick": () => emit('update:
|
29876
|
+
"onClick": () => emit('update:viewMode', 'minute')
|
29854
29877
|
}, null), props.useSeconds && vue.createVNode("span", {
|
29855
29878
|
"class": ['v-time-picker-controls__time__separator', {
|
29856
29879
|
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
@@ -29859,10 +29882,10 @@
|
|
29859
29882
|
}, [vue.createTextVNode(":")]), props.useSeconds && vue.createVNode(VBtn, {
|
29860
29883
|
"key": "secondsVal",
|
29861
29884
|
"variant": "tonal",
|
29862
|
-
"onClick": () => emit('update:
|
29885
|
+
"onClick": () => emit('update:viewMode', 'second'),
|
29863
29886
|
"class": {
|
29864
29887
|
'v-time-picker-controls__time__btn': true,
|
29865
|
-
'v-time-picker-controls__time__btn__active': props.
|
29888
|
+
'v-time-picker-controls__time__btn__active': props.viewMode === 'second',
|
29866
29889
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
29867
29890
|
},
|
29868
29891
|
"disabled": props.disabled,
|
@@ -29907,11 +29930,6 @@
|
|
29907
29930
|
const rangeHours12am = createRange(12);
|
29908
29931
|
const rangeHours12pm = rangeHours12am.map(v => v + 12);
|
29909
29932
|
createRange(60);
|
29910
|
-
const selectingNames = {
|
29911
|
-
1: 'hour',
|
29912
|
-
2: 'minute',
|
29913
|
-
3: 'second'
|
29914
|
-
};
|
29915
29933
|
const makeVTimePickerProps = propsFactory({
|
29916
29934
|
allowedHours: [Function, Array],
|
29917
29935
|
allowedMinutes: [Function, Array],
|
@@ -29924,6 +29942,10 @@
|
|
29924
29942
|
},
|
29925
29943
|
max: String,
|
29926
29944
|
min: String,
|
29945
|
+
viewMode: {
|
29946
|
+
type: String,
|
29947
|
+
default: 'hour'
|
29948
|
+
},
|
29927
29949
|
modelValue: null,
|
29928
29950
|
readonly: Boolean,
|
29929
29951
|
scrollable: Boolean,
|
@@ -29940,7 +29962,8 @@
|
|
29940
29962
|
'update:minute': val => true,
|
29941
29963
|
'update:period': val => true,
|
29942
29964
|
'update:second': val => true,
|
29943
|
-
'update:modelValue': val => true
|
29965
|
+
'update:modelValue': val => true,
|
29966
|
+
'update:viewMode': val => true
|
29944
29967
|
},
|
29945
29968
|
setup(props, _ref) {
|
29946
29969
|
let {
|
@@ -29957,7 +29980,7 @@
|
|
29957
29980
|
const lazyInputMinute = vue.ref(null);
|
29958
29981
|
const lazyInputSecond = vue.ref(null);
|
29959
29982
|
const period = vue.ref('am');
|
29960
|
-
const
|
29983
|
+
const viewMode = useProxiedModel(props, 'viewMode', 'hour');
|
29961
29984
|
const controlsRef = vue.ref(null);
|
29962
29985
|
const clockRef = vue.ref(null);
|
29963
29986
|
const isAllowedHourCb = vue.computed(() => {
|
@@ -29971,7 +29994,7 @@
|
|
29971
29994
|
const minHour = props.min ? Number(props.min.split(':')[0]) : 0;
|
29972
29995
|
const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;
|
29973
29996
|
return val => {
|
29974
|
-
return val >= minHour
|
29997
|
+
return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));
|
29975
29998
|
};
|
29976
29999
|
});
|
29977
30000
|
const isAllowedMinuteCb = vue.computed(() => {
|
@@ -29987,8 +30010,8 @@
|
|
29987
30010
|
}
|
29988
30011
|
const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];
|
29989
30012
|
const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];
|
29990
|
-
const minTime = minHour * 60 + minMinute
|
29991
|
-
const maxTime = maxHour * 60 + maxMinute
|
30013
|
+
const minTime = minHour * 60 + Number(minMinute);
|
30014
|
+
const maxTime = maxHour * 60 + Number(maxMinute);
|
29992
30015
|
return val => {
|
29993
30016
|
const time = 60 * inputHour.value + val;
|
29994
30017
|
return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));
|
@@ -30008,8 +30031,8 @@
|
|
30008
30031
|
}
|
30009
30032
|
const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];
|
30010
30033
|
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)
|
30034
|
+
const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);
|
30035
|
+
const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);
|
30013
30036
|
return val => {
|
30014
30037
|
const time = 3600 * inputHour.value + 60 * inputMinute.value + val;
|
30015
30038
|
return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));
|
@@ -30075,16 +30098,16 @@
|
|
30075
30098
|
return true;
|
30076
30099
|
}
|
30077
30100
|
function onInput(value) {
|
30078
|
-
if (
|
30101
|
+
if (viewMode.value === 'hour') {
|
30079
30102
|
inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;
|
30080
|
-
} else if (
|
30103
|
+
} else if (viewMode.value === 'minute') {
|
30081
30104
|
inputMinute.value = value;
|
30082
30105
|
} else {
|
30083
30106
|
inputSecond.value = value;
|
30084
30107
|
}
|
30085
30108
|
}
|
30086
30109
|
function onChange(value) {
|
30087
|
-
switch (
|
30110
|
+
switch (viewMode.value || 'hour') {
|
30088
30111
|
case 'hour':
|
30089
30112
|
emit('update:hour', value);
|
30090
30113
|
break;
|
@@ -30096,10 +30119,10 @@
|
|
30096
30119
|
break;
|
30097
30120
|
}
|
30098
30121
|
const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);
|
30099
|
-
if (
|
30100
|
-
|
30101
|
-
} else if (props.useSeconds &&
|
30102
|
-
|
30122
|
+
if (viewMode.value === 'hour') {
|
30123
|
+
viewMode.value = 'minute';
|
30124
|
+
} else if (props.useSeconds && viewMode.value === 'minute') {
|
30125
|
+
viewMode.value = 'second';
|
30103
30126
|
}
|
30104
30127
|
if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;
|
30105
30128
|
const time = genValue();
|
@@ -30128,20 +30151,20 @@
|
|
30128
30151
|
"minute": inputMinute.value,
|
30129
30152
|
"period": period.value,
|
30130
30153
|
"second": inputSecond.value,
|
30131
|
-
"
|
30154
|
+
"viewMode": viewMode.value,
|
30132
30155
|
"onUpdate:period": val => setPeriod(val),
|
30133
|
-
"onUpdate:
|
30156
|
+
"onUpdate:viewMode": value => viewMode.value = value,
|
30134
30157
|
"ref": controlsRef
|
30135
30158
|
}), null),
|
30136
30159
|
default: () => vue.createVNode(VTimePickerClock, vue.mergeProps(timePickerClockProps, {
|
30137
|
-
"allowedValues":
|
30138
|
-
"double":
|
30139
|
-
"format":
|
30140
|
-
"max":
|
30141
|
-
"min":
|
30160
|
+
"allowedValues": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,
|
30161
|
+
"double": viewMode.value === 'hour' && !isAmPm.value,
|
30162
|
+
"format": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),
|
30163
|
+
"max": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,
|
30164
|
+
"min": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,
|
30142
30165
|
"size": 20,
|
30143
|
-
"step":
|
30144
|
-
"modelValue":
|
30166
|
+
"step": viewMode.value === 'hour' ? 1 : 5,
|
30167
|
+
"modelValue": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,
|
30145
30168
|
"onChange": onChange,
|
30146
30169
|
"onInput": onInput,
|
30147
30170
|
"ref": clockRef
|
@@ -31054,7 +31077,7 @@
|
|
31054
31077
|
goTo
|
31055
31078
|
};
|
31056
31079
|
}
|
31057
|
-
const version$1 = "3.7.15-master.2025-03-
|
31080
|
+
const version$1 = "3.7.15-master.2025-03-07";
|
31058
31081
|
createVuetify$1.version = version$1;
|
31059
31082
|
|
31060
31083
|
// Vue's inject() can only be used in setup
|
@@ -31307,7 +31330,7 @@
|
|
31307
31330
|
|
31308
31331
|
/* eslint-disable local-rules/sort-imports */
|
31309
31332
|
|
31310
|
-
const version = "3.7.15-master.2025-03-
|
31333
|
+
const version = "3.7.15-master.2025-03-07";
|
31311
31334
|
|
31312
31335
|
/* eslint-disable local-rules/sort-imports */
|
31313
31336
|
|