vuetify 3.7.14 → 3.7.16
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/dist/json/attributes.json +3550 -3550
- package/dist/json/importMap-labs.json +28 -28
- package/dist/json/importMap.json +162 -162
- package/dist/json/tags.json +3 -3
- package/dist/json/web-types.json +6475 -6452
- package/dist/vuetify-labs.css +5395 -5391
- package/dist/vuetify-labs.d.ts +453 -215
- package/dist/vuetify-labs.esm.js +254 -151
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +253 -150
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +3635 -3635
- package/dist/vuetify.d.ts +389 -209
- package/dist/vuetify.esm.js +105 -70
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +104 -69
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +229 -227
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAppBar/index.d.mts +15 -6
- package/lib/components/VAutocomplete/index.d.mts +23 -8
- 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 +23 -8
- package/lib/components/VDataIterator/index.d.mts +2 -2
- package/lib/components/VDataTable/composables/headers.mjs +3 -1
- 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/VDataTable/index.d.mts +34 -34
- package/lib/components/VDataTable/types.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/VDialog/index.d.mts +21 -6
- package/lib/components/VFab/index.d.mts +15 -6
- package/lib/components/VList/VListItem.mjs +13 -5
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +32 -14
- package/lib/components/VMenu/index.d.mts +21 -6
- package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +10 -1
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.mts +6 -0
- 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 +23 -8
- package/lib/components/VSlider/slider.mjs +2 -1
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.mts +21 -6
- 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/VTooltip/index.d.mts +21 -6
- package/lib/components/index.d.mts +333 -153
- 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 +56 -56
- package/lib/labs/VDateInput/VDateInput.mjs +5 -4
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
- package/lib/labs/VDateInput/index.d.mts +10 -10
- package/lib/labs/VFileUpload/VFileUpload.css +5 -1
- package/lib/labs/VFileUpload/VFileUpload.mjs +3 -2
- package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.sass +4 -0
- package/lib/labs/VFileUpload/_variables.scss +1 -1
- package/lib/labs/VFileUpload/index.d.mts +32 -14
- package/lib/labs/VNumberInput/VNumberInput.mjs +60 -24
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VNumberInput/hold.mjs +31 -0
- package/lib/labs/VNumberInput/hold.mjs.map +1 -0
- package/lib/labs/VNumberInput/index.d.mts +1 -7
- package/lib/labs/VSnackbarQueue/index.d.mts +21 -6
- 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/VTreeviewItem.mjs +11 -4
- package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
- package/lib/labs/VTreeview/index.d.mts +46 -22
- package/lib/labs/components.d.mts +143 -70
- package/lib/locale/adapters/vuetify.mjs +1 -1
- package/lib/locale/adapters/vuetify.mjs.map +1 -1
- package/lib/locale/af.mjs +42 -42
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/az.mjs +7 -7
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +7 -7
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +25 -25
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +29 -29
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +13 -13
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +22 -22
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/el.mjs +41 -41
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/es.mjs +26 -26
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +29 -29
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +5 -5
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +22 -22
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +6 -6
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +29 -29
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +28 -28
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +10 -10
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +30 -30
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/it.mjs +7 -7
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +9 -9
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/km.mjs +6 -6
- package/lib/locale/km.mjs.map +1 -1
- package/lib/locale/ko.mjs +27 -27
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +5 -5
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +33 -33
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +10 -10
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +11 -11
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +7 -7
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +11 -11
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +9 -9
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +6 -6
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +5 -5
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +4 -4
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +30 -30
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +28 -28
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +17 -17
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +30 -30
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +31 -31
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +29 -29
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +28 -28
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +31 -31
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +31 -31
- package/lib/locale/zh-Hant.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 +7 -2
- 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.
|
|
2
|
+
* Vuetify v3.7.16
|
|
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(),
|
|
@@ -9060,6 +9074,8 @@
|
|
|
9060
9074
|
}
|
|
9061
9075
|
}
|
|
9062
9076
|
function onKeyDown(e) {
|
|
9077
|
+
const target = e.target;
|
|
9078
|
+
if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return;
|
|
9063
9079
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
9064
9080
|
e.preventDefault();
|
|
9065
9081
|
e.target.dispatchEvent(new MouseEvent('click', e));
|
|
@@ -9132,13 +9148,13 @@
|
|
|
9132
9148
|
}, {
|
|
9133
9149
|
default: () => [slots.title?.({
|
|
9134
9150
|
title: props.title
|
|
9135
|
-
}) ?? props.title]
|
|
9151
|
+
}) ?? vue.toDisplayString(props.title)]
|
|
9136
9152
|
}), hasSubtitle && vue.createVNode(VListItemSubtitle, {
|
|
9137
9153
|
"key": "subtitle"
|
|
9138
9154
|
}, {
|
|
9139
9155
|
default: () => [slots.subtitle?.({
|
|
9140
9156
|
subtitle: props.subtitle
|
|
9141
|
-
}) ?? props.subtitle]
|
|
9157
|
+
}) ?? vue.toDisplayString(props.subtitle)]
|
|
9142
9158
|
}), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
|
|
9143
9159
|
"key": "append",
|
|
9144
9160
|
"class": "v-list-item__append"
|
|
@@ -10739,10 +10755,10 @@
|
|
|
10739
10755
|
activeChildren: new Set()
|
|
10740
10756
|
});
|
|
10741
10757
|
vue.provide(StackSymbol, stack);
|
|
10742
|
-
const _zIndex = vue.shallowRef(
|
|
10758
|
+
const _zIndex = vue.shallowRef(Number(zIndex.value));
|
|
10743
10759
|
useToggleScope(isActive, () => {
|
|
10744
10760
|
const lastZIndex = globalStack.at(-1)?.[1];
|
|
10745
|
-
_zIndex.value = lastZIndex ? lastZIndex + 10 :
|
|
10761
|
+
_zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
|
|
10746
10762
|
if (createStackEntry) {
|
|
10747
10763
|
globalStack.push([vm.uid, _zIndex.value]);
|
|
10748
10764
|
}
|
|
@@ -10951,6 +10967,7 @@
|
|
|
10951
10967
|
emits: {
|
|
10952
10968
|
'click:outside': e => true,
|
|
10953
10969
|
'update:modelValue': value => true,
|
|
10970
|
+
keydown: e => true,
|
|
10954
10971
|
afterEnter: () => true,
|
|
10955
10972
|
afterLeave: () => true
|
|
10956
10973
|
},
|
|
@@ -11063,6 +11080,9 @@
|
|
|
11063
11080
|
});
|
|
11064
11081
|
function onKeydown(e) {
|
|
11065
11082
|
if (e.key === 'Escape' && globalTop.value) {
|
|
11083
|
+
if (!contentEl.value?.contains(document.activeElement)) {
|
|
11084
|
+
emit('keydown', e);
|
|
11085
|
+
}
|
|
11066
11086
|
if (!props.persistent) {
|
|
11067
11087
|
isActive.value = false;
|
|
11068
11088
|
if (contentEl.value?.contains(document.activeElement)) {
|
|
@@ -11071,6 +11091,10 @@
|
|
|
11071
11091
|
} else animateClick();
|
|
11072
11092
|
}
|
|
11073
11093
|
}
|
|
11094
|
+
function onKeydownSelf(e) {
|
|
11095
|
+
if (e.key === 'Escape' && !globalTop.value) return;
|
|
11096
|
+
emit('keydown', e);
|
|
11097
|
+
}
|
|
11074
11098
|
const router = useRouter();
|
|
11075
11099
|
useToggleScope(() => props.closeOnBack, () => {
|
|
11076
11100
|
useBackButton(router, next => {
|
|
@@ -11133,7 +11157,8 @@
|
|
|
11133
11157
|
'--v-overlay-opacity': props.opacity,
|
|
11134
11158
|
top: convertToUnit(top.value)
|
|
11135
11159
|
}, props.style],
|
|
11136
|
-
"ref": root
|
|
11160
|
+
"ref": root,
|
|
11161
|
+
"onKeydown": onKeydownSelf
|
|
11137
11162
|
}, scopeId, attrs), [vue.createVNode(Scrim, vue.mergeProps({
|
|
11138
11163
|
"color": scrimColor,
|
|
11139
11164
|
"modelValue": isActive.value && !!props.scrim,
|
|
@@ -13524,11 +13549,11 @@
|
|
|
13524
13549
|
locationStyles
|
|
13525
13550
|
} = useLocation(props, true, side => {
|
|
13526
13551
|
const base = props.floating ? props.dot ? 2 : 4 : props.dot ? 8 : 12;
|
|
13527
|
-
return base + (['top', 'bottom'].includes(side) ?
|
|
13552
|
+
return base + (['top', 'bottom'].includes(side) ? Number(props.offsetY ?? 0) : ['left', 'right'].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
|
13528
13553
|
});
|
|
13529
13554
|
useRender(() => {
|
|
13530
13555
|
const value = Number(props.content);
|
|
13531
|
-
const content = !props.max || isNaN(value) ? props.content : value <=
|
|
13556
|
+
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
|
13532
13557
|
const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, ['aria-atomic', 'aria-label', 'aria-live', 'role', 'title']);
|
|
13533
13558
|
return vue.createVNode(props.tag, vue.mergeProps({
|
|
13534
13559
|
"class": ['v-badge', {
|
|
@@ -14227,8 +14252,14 @@
|
|
|
14227
14252
|
appendIcon: IconValue,
|
|
14228
14253
|
prependAvatar: String,
|
|
14229
14254
|
prependIcon: IconValue,
|
|
14230
|
-
subtitle:
|
|
14231
|
-
|
|
14255
|
+
subtitle: {
|
|
14256
|
+
type: [String, Number, Boolean],
|
|
14257
|
+
default: undefined
|
|
14258
|
+
},
|
|
14259
|
+
title: {
|
|
14260
|
+
type: [String, Number, Boolean],
|
|
14261
|
+
default: undefined
|
|
14262
|
+
},
|
|
14232
14263
|
...makeComponentProps(),
|
|
14233
14264
|
...makeDensityProps()
|
|
14234
14265
|
}, 'VCardItem');
|
|
@@ -14278,11 +14309,11 @@
|
|
|
14278
14309
|
}, [hasTitle && vue.createVNode(VCardTitle, {
|
|
14279
14310
|
"key": "title"
|
|
14280
14311
|
}, {
|
|
14281
|
-
default: () => [slots.title?.() ?? props.title]
|
|
14312
|
+
default: () => [slots.title?.() ?? vue.toDisplayString(props.title)]
|
|
14282
14313
|
}), hasSubtitle && vue.createVNode(VCardSubtitle, {
|
|
14283
14314
|
"key": "subtitle"
|
|
14284
14315
|
}, {
|
|
14285
|
-
default: () => [slots.subtitle?.() ?? props.subtitle]
|
|
14316
|
+
default: () => [slots.subtitle?.() ?? vue.toDisplayString(props.subtitle)]
|
|
14286
14317
|
}), slots.default?.()]), hasAppend && vue.createVNode("div", {
|
|
14287
14318
|
"key": "append",
|
|
14288
14319
|
"class": "v-card-item__append"
|
|
@@ -14354,9 +14385,18 @@
|
|
|
14354
14385
|
type: [Boolean, Object],
|
|
14355
14386
|
default: true
|
|
14356
14387
|
},
|
|
14357
|
-
subtitle:
|
|
14358
|
-
|
|
14359
|
-
|
|
14388
|
+
subtitle: {
|
|
14389
|
+
type: [String, Number, Boolean],
|
|
14390
|
+
default: undefined
|
|
14391
|
+
},
|
|
14392
|
+
text: {
|
|
14393
|
+
type: [String, Number, Boolean],
|
|
14394
|
+
default: undefined
|
|
14395
|
+
},
|
|
14396
|
+
title: {
|
|
14397
|
+
type: [String, Number, Boolean],
|
|
14398
|
+
default: undefined
|
|
14399
|
+
},
|
|
14360
14400
|
...makeBorderProps(),
|
|
14361
14401
|
...makeComponentProps(),
|
|
14362
14402
|
...makeDensityProps(),
|
|
@@ -14825,7 +14865,7 @@
|
|
|
14825
14865
|
vue.onMounted(startTimeout);
|
|
14826
14866
|
function startTimeout() {
|
|
14827
14867
|
if (!props.cycle || !windowRef.value) return;
|
|
14828
|
-
slideTimeout = window.setTimeout(windowRef.value.group.next,
|
|
14868
|
+
slideTimeout = window.setTimeout(windowRef.value.group.next, Number(props.interval) > 0 ? Number(props.interval) : 6000);
|
|
14829
14869
|
}
|
|
14830
14870
|
function restartTimeout() {
|
|
14831
14871
|
window.clearTimeout(slideTimeout);
|
|
@@ -15551,7 +15591,7 @@
|
|
|
15551
15591
|
const useSteps = props => {
|
|
15552
15592
|
const min = vue.computed(() => parseFloat(props.min));
|
|
15553
15593
|
const max = vue.computed(() => parseFloat(props.max));
|
|
15554
|
-
const step = vue.computed(() =>
|
|
15594
|
+
const step = vue.computed(() => Number(props.step) > 0 ? parseFloat(props.step) : 0);
|
|
15555
15595
|
const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
|
|
15556
15596
|
function roundValue(value) {
|
|
15557
15597
|
value = parseFloat(value);
|
|
@@ -15685,6 +15725,7 @@
|
|
|
15685
15725
|
});
|
|
15686
15726
|
}
|
|
15687
15727
|
function onSliderMousedown(e) {
|
|
15728
|
+
if (e.button !== 0) return;
|
|
15688
15729
|
e.preventDefault();
|
|
15689
15730
|
handleStart(e);
|
|
15690
15731
|
window.addEventListener('mousemove', onMouseMove, moveListenerOptions);
|
|
@@ -18505,8 +18546,8 @@
|
|
|
18505
18546
|
}, 'DataTable-paginate');
|
|
18506
18547
|
const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
|
|
18507
18548
|
function createPagination(props) {
|
|
18508
|
-
const page = useProxiedModel(props, 'page', undefined, value =>
|
|
18509
|
-
const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value =>
|
|
18549
|
+
const page = useProxiedModel(props, 'page', undefined, value => Number(value ?? 1));
|
|
18550
|
+
const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => Number(value ?? 10));
|
|
18510
18551
|
return {
|
|
18511
18552
|
page,
|
|
18512
18553
|
itemsPerPage
|
|
@@ -19295,7 +19336,7 @@
|
|
|
19295
19336
|
const minButtons = props.showFirstLastPage ? 5 : 3;
|
|
19296
19337
|
return Math.max(0, Math.floor(
|
|
19297
19338
|
// Round to two decimal places to avoid floating point errors
|
|
19298
|
-
|
|
19339
|
+
Number(((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2))));
|
|
19299
19340
|
}
|
|
19300
19341
|
const range = vue.computed(() => {
|
|
19301
19342
|
if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];
|
|
@@ -19366,7 +19407,7 @@
|
|
|
19366
19407
|
ref,
|
|
19367
19408
|
ellipsis: false,
|
|
19368
19409
|
icon: true,
|
|
19369
|
-
disabled: !!props.disabled ||
|
|
19410
|
+
disabled: !!props.disabled || Number(props.length) < 2,
|
|
19370
19411
|
color: isActive ? props.activeColor : props.color,
|
|
19371
19412
|
'aria-current': isActive,
|
|
19372
19413
|
'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),
|
|
@@ -19415,7 +19456,7 @@
|
|
|
19415
19456
|
refs.value[currentIndex]?.$el.focus();
|
|
19416
19457
|
}
|
|
19417
19458
|
function onKeydown(e) {
|
|
19418
|
-
if (e.key === keyValues.left && !props.disabled && page.value >
|
|
19459
|
+
if (e.key === keyValues.left && !props.disabled && page.value > Number(props.start)) {
|
|
19419
19460
|
page.value = page.value - 1;
|
|
19420
19461
|
vue.nextTick(updateFocus);
|
|
19421
19462
|
} else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {
|
|
@@ -19748,8 +19789,10 @@
|
|
|
19748
19789
|
} else {
|
|
19749
19790
|
if (!seenFixed) {
|
|
19750
19791
|
item.lastFixed = true;
|
|
19751
|
-
} else if (isNaN(
|
|
19792
|
+
} else if (isNaN(Number(item.width))) {
|
|
19752
19793
|
consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
|
|
19794
|
+
} else {
|
|
19795
|
+
item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0);
|
|
19753
19796
|
}
|
|
19754
19797
|
seenFixed = true;
|
|
19755
19798
|
}
|
|
@@ -21882,7 +21925,7 @@
|
|
|
21882
21925
|
model.value = [value];
|
|
21883
21926
|
}
|
|
21884
21927
|
}
|
|
21885
|
-
|
|
21928
|
+
useRender(() => vue.createVNode("div", {
|
|
21886
21929
|
"class": "v-date-picker-month"
|
|
21887
21930
|
}, [props.showWeek && vue.createVNode("div", {
|
|
21888
21931
|
"key": "weeks",
|
|
@@ -21904,6 +21947,13 @@
|
|
|
21904
21947
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
|
21905
21948
|
const slotProps = {
|
|
21906
21949
|
props: {
|
|
21950
|
+
class: 'v-date-picker-month__day-btn',
|
|
21951
|
+
color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
|
|
21952
|
+
disabled: item.isDisabled,
|
|
21953
|
+
icon: true,
|
|
21954
|
+
ripple: false,
|
|
21955
|
+
text: item.localized,
|
|
21956
|
+
variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
|
|
21907
21957
|
onClick: () => onClick(item.date)
|
|
21908
21958
|
},
|
|
21909
21959
|
item,
|
|
@@ -21921,24 +21971,9 @@
|
|
|
21921
21971
|
'v-date-picker-month__day--week-start': item.isWeekStart
|
|
21922
21972
|
}],
|
|
21923
21973
|
"data-v-date": !item.isDisabled ? item.isoDate : undefined
|
|
21924
|
-
}, [(props.showAdjacentMonths || !item.isAdjacent) && vue.createVNode(
|
|
21925
|
-
"defaults": {
|
|
21926
|
-
VBtn: {
|
|
21927
|
-
class: 'v-date-picker-month__day-btn',
|
|
21928
|
-
color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
|
|
21929
|
-
disabled: item.isDisabled,
|
|
21930
|
-
icon: true,
|
|
21931
|
-
ripple: false,
|
|
21932
|
-
text: item.localized,
|
|
21933
|
-
variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
|
|
21934
|
-
onClick: () => onClick(item.date)
|
|
21935
|
-
}
|
|
21936
|
-
}
|
|
21937
|
-
}, {
|
|
21938
|
-
default: () => [slots.day?.(slotProps) ?? vue.createVNode(VBtn, slotProps.props, null)]
|
|
21939
|
-
})]);
|
|
21974
|
+
}, [(props.showAdjacentMonths || !item.isAdjacent) && (slots.day?.(slotProps) ?? vue.createVNode(VBtn, slotProps.props, null))]);
|
|
21940
21975
|
})])]
|
|
21941
|
-
})]);
|
|
21976
|
+
})]));
|
|
21942
21977
|
}
|
|
21943
21978
|
});
|
|
21944
21979
|
|
|
@@ -24599,7 +24634,7 @@
|
|
|
24599
24634
|
"disabled": props.disabled,
|
|
24600
24635
|
"inputmode": props.type === 'number' ? 'numeric' : 'text',
|
|
24601
24636
|
"min": props.type === 'number' ? 0 : undefined,
|
|
24602
|
-
"maxlength":
|
|
24637
|
+
"maxlength": i === 0 ? length.value : '1',
|
|
24603
24638
|
"placeholder": props.placeholder,
|
|
24604
24639
|
"type": props.type === 'number' ? 'text' : props.type,
|
|
24605
24640
|
"value": model.value[i],
|
|
@@ -24695,7 +24730,7 @@
|
|
|
24695
24730
|
vue.watch(displayHeight, onScroll);
|
|
24696
24731
|
vue.watch(() => contentRect.value?.height, onScroll);
|
|
24697
24732
|
const scale = vue.computed(() => {
|
|
24698
|
-
return 1 - clamp(
|
|
24733
|
+
return 1 - clamp(Number(props.scale));
|
|
24699
24734
|
});
|
|
24700
24735
|
let frame = -1;
|
|
24701
24736
|
function onScroll() {
|
|
@@ -25116,7 +25151,7 @@
|
|
|
25116
25151
|
themeClasses
|
|
25117
25152
|
} = provideTheme(props);
|
|
25118
25153
|
const rating = useProxiedModel(props, 'modelValue');
|
|
25119
|
-
const normalizedValue = vue.computed(() => clamp(parseFloat(rating.value), 0,
|
|
25154
|
+
const normalizedValue = vue.computed(() => clamp(parseFloat(rating.value), 0, Number(props.length)));
|
|
25120
25155
|
const range = vue.computed(() => createRange(Number(props.length), 1));
|
|
25121
25156
|
const increments = vue.computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
|
|
25122
25157
|
const hoverIndex = vue.shallowRef(-1);
|
|
@@ -25727,7 +25762,7 @@
|
|
|
25727
25762
|
const height = Math.abs(gridY * value);
|
|
25728
25763
|
return {
|
|
25729
25764
|
x: minX + index * gridX,
|
|
25730
|
-
y: horizonY - height +
|
|
25765
|
+
y: horizonY - height + Number(value < 0) * height,
|
|
25731
25766
|
height,
|
|
25732
25767
|
value
|
|
25733
25768
|
};
|
|
@@ -27165,10 +27200,10 @@
|
|
|
27165
27200
|
}
|
|
27166
27201
|
}
|
|
27167
27202
|
const sizerRef = vue.ref();
|
|
27168
|
-
const rows = vue.ref(
|
|
27203
|
+
const rows = vue.ref(Number(props.rows));
|
|
27169
27204
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
27170
27205
|
vue.watchEffect(() => {
|
|
27171
|
-
if (!props.autoGrow) rows.value =
|
|
27206
|
+
if (!props.autoGrow) rows.value = Number(props.rows);
|
|
27172
27207
|
});
|
|
27173
27208
|
function calculateInputHeight() {
|
|
27174
27209
|
if (!props.autoGrow) return;
|
|
@@ -28215,8 +28250,8 @@
|
|
|
28215
28250
|
prependIcon: '$calendar'
|
|
28216
28251
|
}),
|
|
28217
28252
|
...omit(makeVDatePickerProps({
|
|
28218
|
-
|
|
28219
|
-
|
|
28253
|
+
hideHeader: true,
|
|
28254
|
+
showAdjacentMonths: true
|
|
28220
28255
|
}), ['active', 'location', 'rounded'])
|
|
28221
28256
|
}, 'VDateInput');
|
|
28222
28257
|
const VDateInput = genericComponent()({
|
|
@@ -28250,9 +28285,9 @@
|
|
|
28250
28285
|
if (props.multiple === 'range') {
|
|
28251
28286
|
const start = value[0];
|
|
28252
28287
|
const end = value[value.length - 1];
|
|
28253
|
-
return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(start, 'keyboardDate')} - ${adapter.format(end, 'keyboardDate')}` : '';
|
|
28288
|
+
return adapter.isValid(start) && adapter.isValid(end) ? `${adapter.format(adapter.date(start), 'keyboardDate')} - ${adapter.format(adapter.date(end), 'keyboardDate')}` : '';
|
|
28254
28289
|
}
|
|
28255
|
-
return adapter.isValid(model.value) ? adapter.format(model.value, 'keyboardDate') : '';
|
|
28290
|
+
return adapter.isValid(model.value) ? adapter.format(adapter.date(model.value), 'keyboardDate') : '';
|
|
28256
28291
|
});
|
|
28257
28292
|
const isInteractive = vue.computed(() => !props.disabled && !props.readonly);
|
|
28258
28293
|
function onKeydown(e) {
|
|
@@ -28300,6 +28335,7 @@
|
|
|
28300
28335
|
"onUpdate:modelValue": $event => menu.value = $event,
|
|
28301
28336
|
"activator": "parent",
|
|
28302
28337
|
"min-width": "0",
|
|
28338
|
+
"eager": isFocused.value,
|
|
28303
28339
|
"location": props.location,
|
|
28304
28340
|
"closeOnContentClick": false,
|
|
28305
28341
|
"openOnClick": false
|
|
@@ -28539,8 +28575,9 @@
|
|
|
28539
28575
|
inputRef.value?.click();
|
|
28540
28576
|
}
|
|
28541
28577
|
function onClickRemove(index) {
|
|
28542
|
-
|
|
28543
|
-
|
|
28578
|
+
const newValue = model.value.filter((_, i) => i !== index);
|
|
28579
|
+
model.value = newValue;
|
|
28580
|
+
if (newValue.length > 0 || !inputRef.value) return;
|
|
28544
28581
|
inputRef.value.value = '';
|
|
28545
28582
|
}
|
|
28546
28583
|
useRender(() => {
|
|
@@ -28658,6 +28695,36 @@
|
|
|
28658
28695
|
}
|
|
28659
28696
|
});
|
|
28660
28697
|
|
|
28698
|
+
// Utilities
|
|
28699
|
+
const HOLD_REPEAT = 50;
|
|
28700
|
+
const HOLD_DELAY = 500;
|
|
28701
|
+
function useHold(_ref) {
|
|
28702
|
+
let {
|
|
28703
|
+
toggleUpDown
|
|
28704
|
+
} = _ref;
|
|
28705
|
+
let timeout = -1;
|
|
28706
|
+
let interval = -1;
|
|
28707
|
+
vue.onScopeDispose(holdStop);
|
|
28708
|
+
function holdStart(value) {
|
|
28709
|
+
holdStop();
|
|
28710
|
+
tick(value);
|
|
28711
|
+
timeout = window.setTimeout(() => {
|
|
28712
|
+
interval = window.setInterval(() => tick(value), HOLD_REPEAT);
|
|
28713
|
+
}, HOLD_DELAY);
|
|
28714
|
+
}
|
|
28715
|
+
function holdStop() {
|
|
28716
|
+
window.clearTimeout(timeout);
|
|
28717
|
+
window.clearInterval(interval);
|
|
28718
|
+
}
|
|
28719
|
+
function tick(value) {
|
|
28720
|
+
toggleUpDown(value === 'up');
|
|
28721
|
+
}
|
|
28722
|
+
return {
|
|
28723
|
+
holdStart,
|
|
28724
|
+
holdStop
|
|
28725
|
+
};
|
|
28726
|
+
}
|
|
28727
|
+
|
|
28661
28728
|
// Types
|
|
28662
28729
|
|
|
28663
28730
|
const makeVNumberInputProps = propsFactory({
|
|
@@ -28687,7 +28754,7 @@
|
|
|
28687
28754
|
type: Number,
|
|
28688
28755
|
default: 0
|
|
28689
28756
|
},
|
|
28690
|
-
...omit(makeVTextFieldProps(
|
|
28757
|
+
...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])
|
|
28691
28758
|
}, 'VNumberInput');
|
|
28692
28759
|
const VNumberInput = genericComponent()({
|
|
28693
28760
|
name: 'VNumberInput',
|
|
@@ -28702,16 +28769,26 @@
|
|
|
28702
28769
|
slots
|
|
28703
28770
|
} = _ref;
|
|
28704
28771
|
const vTextFieldRef = vue.ref();
|
|
28772
|
+
const {
|
|
28773
|
+
holdStart,
|
|
28774
|
+
holdStop
|
|
28775
|
+
} = useHold({
|
|
28776
|
+
toggleUpDown
|
|
28777
|
+
});
|
|
28705
28778
|
const form = useForm(props);
|
|
28706
28779
|
const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
|
|
28707
|
-
const
|
|
28780
|
+
const {
|
|
28781
|
+
isFocused,
|
|
28782
|
+
focus,
|
|
28783
|
+
blur
|
|
28784
|
+
} = useFocus(props);
|
|
28708
28785
|
function correctPrecision(val) {
|
|
28709
28786
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
|
28710
28787
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
|
28711
28788
|
return isFocused.value ? Number(fixed).toString() // trim zeros
|
|
28712
28789
|
: fixed;
|
|
28713
28790
|
}
|
|
28714
|
-
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(
|
|
28791
|
+
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
|
28715
28792
|
const _inputText = vue.shallowRef(null);
|
|
28716
28793
|
vue.watchEffect(() => {
|
|
28717
28794
|
if (isFocused.value && !controlsDisabled.value) ; else if (model.value == null) {
|
|
@@ -28726,8 +28803,8 @@
|
|
|
28726
28803
|
if (val === null || val === '') {
|
|
28727
28804
|
model.value = null;
|
|
28728
28805
|
_inputText.value = null;
|
|
28729
|
-
} else if (!isNaN(
|
|
28730
|
-
model.value =
|
|
28806
|
+
} else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {
|
|
28807
|
+
model.value = Number(val);
|
|
28731
28808
|
_inputText.value = val;
|
|
28732
28809
|
}
|
|
28733
28810
|
}
|
|
@@ -28748,10 +28825,18 @@
|
|
|
28748
28825
|
const controlNodeSize = vue.computed(() => controlVariant.value === 'split' ? 'default' : 'small');
|
|
28749
28826
|
const controlNodeDefaultHeight = vue.computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
|
28750
28827
|
const incrementSlotProps = vue.computed(() => ({
|
|
28751
|
-
|
|
28828
|
+
props: {
|
|
28829
|
+
onClick: onControlClick,
|
|
28830
|
+
onPointerup: onControlMouseup,
|
|
28831
|
+
onPointerdown: onUpControlMousedown
|
|
28832
|
+
}
|
|
28752
28833
|
}));
|
|
28753
28834
|
const decrementSlotProps = vue.computed(() => ({
|
|
28754
|
-
|
|
28835
|
+
props: {
|
|
28836
|
+
onClick: onControlClick,
|
|
28837
|
+
onPointerup: onControlMouseup,
|
|
28838
|
+
onPointerdown: onDownControlMousedown
|
|
28839
|
+
}
|
|
28755
28840
|
}));
|
|
28756
28841
|
vue.watch(() => props.precision, () => formatInputValue());
|
|
28757
28842
|
vue.onMounted(() => {
|
|
@@ -28778,14 +28863,6 @@
|
|
|
28778
28863
|
if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);
|
|
28779
28864
|
}
|
|
28780
28865
|
}
|
|
28781
|
-
function onClickUp(e) {
|
|
28782
|
-
e.stopPropagation();
|
|
28783
|
-
toggleUpDown();
|
|
28784
|
-
}
|
|
28785
|
-
function onClickDown(e) {
|
|
28786
|
-
e.stopPropagation();
|
|
28787
|
-
toggleUpDown(false);
|
|
28788
|
-
}
|
|
28789
28866
|
function onBeforeinput(e) {
|
|
28790
28867
|
if (!e.data) return;
|
|
28791
28868
|
const existingTxt = e.target?.value;
|
|
@@ -28823,15 +28900,36 @@
|
|
|
28823
28900
|
}
|
|
28824
28901
|
}
|
|
28825
28902
|
}
|
|
28826
|
-
function
|
|
28903
|
+
function onControlClick(e) {
|
|
28904
|
+
e.stopPropagation();
|
|
28905
|
+
}
|
|
28906
|
+
function onControlMouseup(e) {
|
|
28907
|
+
const el = e.currentTarget;
|
|
28908
|
+
el?.releasePointerCapture(e.pointerId);
|
|
28909
|
+
e.preventDefault();
|
|
28910
|
+
e.stopPropagation();
|
|
28911
|
+
holdStop();
|
|
28912
|
+
}
|
|
28913
|
+
function onUpControlMousedown(e) {
|
|
28914
|
+
const el = e.currentTarget;
|
|
28915
|
+
el?.setPointerCapture(e.pointerId);
|
|
28916
|
+
e.preventDefault();
|
|
28827
28917
|
e.stopPropagation();
|
|
28918
|
+
holdStart('up');
|
|
28919
|
+
}
|
|
28920
|
+
function onDownControlMousedown(e) {
|
|
28921
|
+
const el = e.currentTarget;
|
|
28922
|
+
el?.setPointerCapture(e.pointerId);
|
|
28923
|
+
e.preventDefault();
|
|
28924
|
+
e.stopPropagation();
|
|
28925
|
+
holdStart('down');
|
|
28828
28926
|
}
|
|
28829
28927
|
function clampModel() {
|
|
28830
28928
|
if (controlsDisabled.value) return;
|
|
28831
28929
|
if (!vTextFieldRef.value) return;
|
|
28832
28930
|
const actualText = vTextFieldRef.value.value;
|
|
28833
|
-
if (actualText && !isNaN(
|
|
28834
|
-
inputText.value = correctPrecision(clamp(
|
|
28931
|
+
if (actualText && !isNaN(Number(actualText))) {
|
|
28932
|
+
inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max));
|
|
28835
28933
|
} else {
|
|
28836
28934
|
inputText.value = null;
|
|
28837
28935
|
}
|
|
@@ -28853,11 +28951,11 @@
|
|
|
28853
28951
|
inputText.value = model.value.toString();
|
|
28854
28952
|
}
|
|
28855
28953
|
function onFocus() {
|
|
28856
|
-
|
|
28954
|
+
focus();
|
|
28857
28955
|
trimDecimalZeros();
|
|
28858
28956
|
}
|
|
28859
28957
|
function onBlur() {
|
|
28860
|
-
|
|
28958
|
+
blur();
|
|
28861
28959
|
clampModel();
|
|
28862
28960
|
}
|
|
28863
28961
|
useRender(() => {
|
|
@@ -28874,8 +28972,9 @@
|
|
|
28874
28972
|
"data-testid": "increment",
|
|
28875
28973
|
"aria-hidden": "true",
|
|
28876
28974
|
"icon": incrementIcon.value,
|
|
28877
|
-
"onClick":
|
|
28878
|
-
"
|
|
28975
|
+
"onClick": onControlClick,
|
|
28976
|
+
"onPointerup": onControlMouseup,
|
|
28977
|
+
"onPointerdown": onUpControlMousedown,
|
|
28879
28978
|
"size": controlNodeSize.value,
|
|
28880
28979
|
"tabindex": "-1"
|
|
28881
28980
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
@@ -28904,8 +29003,9 @@
|
|
|
28904
29003
|
"icon": decrementIcon.value,
|
|
28905
29004
|
"size": controlNodeSize.value,
|
|
28906
29005
|
"tabindex": "-1",
|
|
28907
|
-
"onClick":
|
|
28908
|
-
"
|
|
29006
|
+
"onClick": onControlClick,
|
|
29007
|
+
"onPointerup": onControlMouseup,
|
|
29008
|
+
"onPointerdown": onDownControlMousedown
|
|
28909
29009
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
28910
29010
|
"key": "decrement-defaults",
|
|
28911
29011
|
"defaults": {
|
|
@@ -28949,6 +29049,7 @@
|
|
|
28949
29049
|
"ref": vTextFieldRef,
|
|
28950
29050
|
"modelValue": inputText.value,
|
|
28951
29051
|
"onUpdate:modelValue": $event => inputText.value = $event,
|
|
29052
|
+
"validationValue": model.value,
|
|
28952
29053
|
"onBeforeinput": onBeforeinput,
|
|
28953
29054
|
"onFocus": onFocus,
|
|
28954
29055
|
"onBlur": onBlur,
|
|
@@ -29702,14 +29803,7 @@
|
|
|
29702
29803
|
}
|
|
29703
29804
|
});
|
|
29704
29805
|
|
|
29705
|
-
//
|
|
29706
|
-
/* eslint-disable */
|
|
29707
|
-
var SelectingTimes = /*#__PURE__*/function (SelectingTimes) {
|
|
29708
|
-
SelectingTimes[SelectingTimes["Hour"] = 1] = "Hour";
|
|
29709
|
-
SelectingTimes[SelectingTimes["Minute"] = 2] = "Minute";
|
|
29710
|
-
SelectingTimes[SelectingTimes["Second"] = 3] = "Second";
|
|
29711
|
-
return SelectingTimes;
|
|
29712
|
-
}(SelectingTimes || {});
|
|
29806
|
+
// Types
|
|
29713
29807
|
|
|
29714
29808
|
const makeVTimePickerControlsProps = propsFactory({
|
|
29715
29809
|
ampm: Boolean,
|
|
@@ -29723,15 +29817,15 @@
|
|
|
29723
29817
|
period: String,
|
|
29724
29818
|
readonly: Boolean,
|
|
29725
29819
|
useSeconds: Boolean,
|
|
29726
|
-
|
|
29727
|
-
|
|
29820
|
+
value: Number,
|
|
29821
|
+
viewMode: String
|
|
29728
29822
|
}, 'VTimePickerControls');
|
|
29729
29823
|
const VTimePickerControls = genericComponent()({
|
|
29730
29824
|
name: 'VTimePickerControls',
|
|
29731
29825
|
props: makeVTimePickerControlsProps(),
|
|
29732
29826
|
emits: {
|
|
29733
29827
|
'update:period': data => true,
|
|
29734
|
-
'update:
|
|
29828
|
+
'update:viewMode': data => true
|
|
29735
29829
|
},
|
|
29736
29830
|
setup(props, _ref) {
|
|
29737
29831
|
let {
|
|
@@ -29754,8 +29848,8 @@
|
|
|
29754
29848
|
'v-time-picker-controls__time--with-seconds': props.useSeconds
|
|
29755
29849
|
}
|
|
29756
29850
|
}, [vue.createVNode(VBtn, {
|
|
29757
|
-
"active": props.
|
|
29758
|
-
"color": props.
|
|
29851
|
+
"active": props.viewMode === 'hour',
|
|
29852
|
+
"color": props.viewMode === 'hour' ? props.color : undefined,
|
|
29759
29853
|
"disabled": props.disabled,
|
|
29760
29854
|
"variant": "tonal",
|
|
29761
29855
|
"class": {
|
|
@@ -29764,24 +29858,24 @@
|
|
|
29764
29858
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
|
29765
29859
|
},
|
|
29766
29860
|
"text": props.hour == null ? '--' : pad(`${hour}`),
|
|
29767
|
-
"onClick": () => emit('update:
|
|
29861
|
+
"onClick": () => emit('update:viewMode', 'hour')
|
|
29768
29862
|
}, null), vue.createVNode("span", {
|
|
29769
29863
|
"class": ['v-time-picker-controls__time__separator', {
|
|
29770
29864
|
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
|
29771
29865
|
}]
|
|
29772
29866
|
}, [vue.createTextVNode(":")]), vue.createVNode(VBtn, {
|
|
29773
|
-
"active": props.
|
|
29774
|
-
"color": props.
|
|
29867
|
+
"active": props.viewMode === 'minute',
|
|
29868
|
+
"color": props.viewMode === 'minute' ? props.color : undefined,
|
|
29775
29869
|
"class": {
|
|
29776
29870
|
'v-time-picker-controls__time__btn': true,
|
|
29777
|
-
'v-time-picker-controls__time__btn__active': props.
|
|
29871
|
+
'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',
|
|
29778
29872
|
'v-time-picker-controls__time--with-ampm__btn': props.ampm,
|
|
29779
29873
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
|
29780
29874
|
},
|
|
29781
29875
|
"disabled": props.disabled,
|
|
29782
29876
|
"variant": "tonal",
|
|
29783
29877
|
"text": props.minute == null ? '--' : pad(props.minute),
|
|
29784
|
-
"onClick": () => emit('update:
|
|
29878
|
+
"onClick": () => emit('update:viewMode', 'minute')
|
|
29785
29879
|
}, null), props.useSeconds && vue.createVNode("span", {
|
|
29786
29880
|
"class": ['v-time-picker-controls__time__separator', {
|
|
29787
29881
|
'v-time-picker-controls--with-seconds__time__separator': props.useSeconds
|
|
@@ -29789,11 +29883,13 @@
|
|
|
29789
29883
|
"key": "secondsDivider"
|
|
29790
29884
|
}, [vue.createTextVNode(":")]), props.useSeconds && vue.createVNode(VBtn, {
|
|
29791
29885
|
"key": "secondsVal",
|
|
29886
|
+
"active": props.viewMode === 'second',
|
|
29887
|
+
"color": props.viewMode === 'second' ? props.color : undefined,
|
|
29792
29888
|
"variant": "tonal",
|
|
29793
|
-
"onClick": () => emit('update:
|
|
29889
|
+
"onClick": () => emit('update:viewMode', 'second'),
|
|
29794
29890
|
"class": {
|
|
29795
29891
|
'v-time-picker-controls__time__btn': true,
|
|
29796
|
-
'v-time-picker-controls__time__btn__active': props.
|
|
29892
|
+
'v-time-picker-controls__time__btn__active': props.viewMode === 'second',
|
|
29797
29893
|
'v-time-picker-controls__time--with-seconds__btn': props.useSeconds
|
|
29798
29894
|
},
|
|
29799
29895
|
"disabled": props.disabled,
|
|
@@ -29838,11 +29934,6 @@
|
|
|
29838
29934
|
const rangeHours12am = createRange(12);
|
|
29839
29935
|
const rangeHours12pm = rangeHours12am.map(v => v + 12);
|
|
29840
29936
|
createRange(60);
|
|
29841
|
-
const selectingNames = {
|
|
29842
|
-
1: 'hour',
|
|
29843
|
-
2: 'minute',
|
|
29844
|
-
3: 'second'
|
|
29845
|
-
};
|
|
29846
29937
|
const makeVTimePickerProps = propsFactory({
|
|
29847
29938
|
allowedHours: [Function, Array],
|
|
29848
29939
|
allowedMinutes: [Function, Array],
|
|
@@ -29855,6 +29946,10 @@
|
|
|
29855
29946
|
},
|
|
29856
29947
|
max: String,
|
|
29857
29948
|
min: String,
|
|
29949
|
+
viewMode: {
|
|
29950
|
+
type: String,
|
|
29951
|
+
default: 'hour'
|
|
29952
|
+
},
|
|
29858
29953
|
modelValue: null,
|
|
29859
29954
|
readonly: Boolean,
|
|
29860
29955
|
scrollable: Boolean,
|
|
@@ -29871,7 +29966,8 @@
|
|
|
29871
29966
|
'update:minute': val => true,
|
|
29872
29967
|
'update:period': val => true,
|
|
29873
29968
|
'update:second': val => true,
|
|
29874
|
-
'update:modelValue': val => true
|
|
29969
|
+
'update:modelValue': val => true,
|
|
29970
|
+
'update:viewMode': val => true
|
|
29875
29971
|
},
|
|
29876
29972
|
setup(props, _ref) {
|
|
29877
29973
|
let {
|
|
@@ -29888,7 +29984,7 @@
|
|
|
29888
29984
|
const lazyInputMinute = vue.ref(null);
|
|
29889
29985
|
const lazyInputSecond = vue.ref(null);
|
|
29890
29986
|
const period = vue.ref('am');
|
|
29891
|
-
const
|
|
29987
|
+
const viewMode = useProxiedModel(props, 'viewMode', 'hour');
|
|
29892
29988
|
const controlsRef = vue.ref(null);
|
|
29893
29989
|
const clockRef = vue.ref(null);
|
|
29894
29990
|
const isAllowedHourCb = vue.computed(() => {
|
|
@@ -29902,7 +29998,7 @@
|
|
|
29902
29998
|
const minHour = props.min ? Number(props.min.split(':')[0]) : 0;
|
|
29903
29999
|
const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;
|
|
29904
30000
|
return val => {
|
|
29905
|
-
return val >= minHour
|
|
30001
|
+
return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));
|
|
29906
30002
|
};
|
|
29907
30003
|
});
|
|
29908
30004
|
const isAllowedMinuteCb = vue.computed(() => {
|
|
@@ -29918,8 +30014,8 @@
|
|
|
29918
30014
|
}
|
|
29919
30015
|
const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];
|
|
29920
30016
|
const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];
|
|
29921
|
-
const minTime = minHour * 60 + minMinute
|
|
29922
|
-
const maxTime = maxHour * 60 + maxMinute
|
|
30017
|
+
const minTime = minHour * 60 + Number(minMinute);
|
|
30018
|
+
const maxTime = maxHour * 60 + Number(maxMinute);
|
|
29923
30019
|
return val => {
|
|
29924
30020
|
const time = 60 * inputHour.value + val;
|
|
29925
30021
|
return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));
|
|
@@ -29939,8 +30035,8 @@
|
|
|
29939
30035
|
}
|
|
29940
30036
|
const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];
|
|
29941
30037
|
const [maxHour, maxMinute, maxSecond] = props.max ? props.max.split(':').map(Number) : [23, 59, 59];
|
|
29942
|
-
const minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0)
|
|
29943
|
-
const maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0)
|
|
30038
|
+
const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);
|
|
30039
|
+
const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);
|
|
29944
30040
|
return val => {
|
|
29945
30041
|
const time = 3600 * inputHour.value + 60 * inputMinute.value + val;
|
|
29946
30042
|
return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));
|
|
@@ -30006,16 +30102,16 @@
|
|
|
30006
30102
|
return true;
|
|
30007
30103
|
}
|
|
30008
30104
|
function onInput(value) {
|
|
30009
|
-
if (
|
|
30105
|
+
if (viewMode.value === 'hour') {
|
|
30010
30106
|
inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;
|
|
30011
|
-
} else if (
|
|
30107
|
+
} else if (viewMode.value === 'minute') {
|
|
30012
30108
|
inputMinute.value = value;
|
|
30013
30109
|
} else {
|
|
30014
30110
|
inputSecond.value = value;
|
|
30015
30111
|
}
|
|
30016
30112
|
}
|
|
30017
30113
|
function onChange(value) {
|
|
30018
|
-
switch (
|
|
30114
|
+
switch (viewMode.value || 'hour') {
|
|
30019
30115
|
case 'hour':
|
|
30020
30116
|
emit('update:hour', value);
|
|
30021
30117
|
break;
|
|
@@ -30027,10 +30123,10 @@
|
|
|
30027
30123
|
break;
|
|
30028
30124
|
}
|
|
30029
30125
|
const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);
|
|
30030
|
-
if (
|
|
30031
|
-
|
|
30032
|
-
} else if (props.useSeconds &&
|
|
30033
|
-
|
|
30126
|
+
if (viewMode.value === 'hour') {
|
|
30127
|
+
viewMode.value = 'minute';
|
|
30128
|
+
} else if (props.useSeconds && viewMode.value === 'minute') {
|
|
30129
|
+
viewMode.value = 'second';
|
|
30034
30130
|
}
|
|
30035
30131
|
if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;
|
|
30036
30132
|
const time = genValue();
|
|
@@ -30059,20 +30155,20 @@
|
|
|
30059
30155
|
"minute": inputMinute.value,
|
|
30060
30156
|
"period": period.value,
|
|
30061
30157
|
"second": inputSecond.value,
|
|
30062
|
-
"
|
|
30158
|
+
"viewMode": viewMode.value,
|
|
30063
30159
|
"onUpdate:period": val => setPeriod(val),
|
|
30064
|
-
"onUpdate:
|
|
30160
|
+
"onUpdate:viewMode": value => viewMode.value = value,
|
|
30065
30161
|
"ref": controlsRef
|
|
30066
30162
|
}), null),
|
|
30067
30163
|
default: () => vue.createVNode(VTimePickerClock, vue.mergeProps(timePickerClockProps, {
|
|
30068
|
-
"allowedValues":
|
|
30069
|
-
"double":
|
|
30070
|
-
"format":
|
|
30071
|
-
"max":
|
|
30072
|
-
"min":
|
|
30164
|
+
"allowedValues": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,
|
|
30165
|
+
"double": viewMode.value === 'hour' && !isAmPm.value,
|
|
30166
|
+
"format": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),
|
|
30167
|
+
"max": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,
|
|
30168
|
+
"min": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,
|
|
30073
30169
|
"size": 20,
|
|
30074
|
-
"step":
|
|
30075
|
-
"modelValue":
|
|
30170
|
+
"step": viewMode.value === 'hour' ? 1 : 5,
|
|
30171
|
+
"modelValue": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,
|
|
30076
30172
|
"onChange": onChange,
|
|
30077
30173
|
"onInput": onInput,
|
|
30078
30174
|
"ref": clockRef
|
|
@@ -30133,7 +30229,6 @@
|
|
|
30133
30229
|
|
|
30134
30230
|
const makeVTreeviewItemProps = propsFactory({
|
|
30135
30231
|
loading: Boolean,
|
|
30136
|
-
onToggleExpand: EventProp(),
|
|
30137
30232
|
toggleIcon: IconValue,
|
|
30138
30233
|
...makeVListItemProps({
|
|
30139
30234
|
slim: true
|
|
@@ -30142,9 +30237,13 @@
|
|
|
30142
30237
|
const VTreeviewItem = genericComponent()({
|
|
30143
30238
|
name: 'VTreeviewItem',
|
|
30144
30239
|
props: makeVTreeviewItemProps(),
|
|
30240
|
+
emits: {
|
|
30241
|
+
toggleExpand: value => true
|
|
30242
|
+
},
|
|
30145
30243
|
setup(props, _ref) {
|
|
30146
30244
|
let {
|
|
30147
|
-
slots
|
|
30245
|
+
slots,
|
|
30246
|
+
emit
|
|
30148
30247
|
} = _ref;
|
|
30149
30248
|
const visibleIds = vue.inject(VTreeviewSymbol, {
|
|
30150
30249
|
visibleIds: vue.ref()
|
|
@@ -30159,6 +30258,10 @@
|
|
|
30159
30258
|
vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e);
|
|
30160
30259
|
}
|
|
30161
30260
|
}
|
|
30261
|
+
function onClickAction(e) {
|
|
30262
|
+
e.preventDefault();
|
|
30263
|
+
emit('toggleExpand', e);
|
|
30264
|
+
}
|
|
30162
30265
|
useRender(() => {
|
|
30163
30266
|
const listItemProps = omit(VListItem.filterProps(props), ['onClick']);
|
|
30164
30267
|
const hasPrepend = slots.prepend || props.toggleIcon;
|
|
@@ -30183,7 +30286,7 @@
|
|
|
30183
30286
|
"icon": props.toggleIcon,
|
|
30184
30287
|
"loading": props.loading,
|
|
30185
30288
|
"variant": "text",
|
|
30186
|
-
"onClick":
|
|
30289
|
+
"onClick": onClickAction
|
|
30187
30290
|
}, {
|
|
30188
30291
|
loader() {
|
|
30189
30292
|
return vue.createVNode(VProgressCircular, {
|
|
@@ -30978,7 +31081,7 @@
|
|
|
30978
31081
|
goTo
|
|
30979
31082
|
};
|
|
30980
31083
|
}
|
|
30981
|
-
const version$1 = "3.7.
|
|
31084
|
+
const version$1 = "3.7.16";
|
|
30982
31085
|
createVuetify$1.version = version$1;
|
|
30983
31086
|
|
|
30984
31087
|
// Vue's inject() can only be used in setup
|
|
@@ -31231,7 +31334,7 @@
|
|
|
31231
31334
|
|
|
31232
31335
|
/* eslint-disable local-rules/sort-imports */
|
|
31233
31336
|
|
|
31234
|
-
const version = "3.7.
|
|
31337
|
+
const version = "3.7.16";
|
|
31235
31338
|
|
|
31236
31339
|
/* eslint-disable local-rules/sort-imports */
|
|
31237
31340
|
|