vuetify 3.7.4 → 3.7.6
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/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +3914 -3618
- package/dist/json/importMap-labs.json +34 -26
- package/dist/json/importMap.json +170 -170
- package/dist/json/tags.json +84 -0
- package/dist/json/web-types.json +7277 -6336
- package/dist/vuetify-labs.css +3535 -3460
- package/dist/vuetify-labs.d.ts +1909 -600
- package/dist/vuetify-labs.esm.js +428 -79
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +428 -79
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +4119 -4117
- package/dist/vuetify.d.ts +187 -189
- package/dist/vuetify.esm.js +95 -65
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +95 -65
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +66 -65
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -5
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +28 -28
- package/lib/components/VBadge/VBadge.css +4 -0
- package/lib/components/VBadge/VBadge.sass +4 -0
- package/lib/components/VChip/VChip.mjs +3 -2
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/index.d.mts +9 -9
- package/lib/components/VCombobox/VCombobox.mjs +6 -5
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +28 -28
- package/lib/components/VConfirmEdit/VConfirmEdit.mjs +9 -7
- package/lib/components/VConfirmEdit/VConfirmEdit.mjs.map +1 -1
- package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +1 -1
- package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs.map +1 -1
- package/lib/components/VConfirmEdit/index.d.mts +3 -7
- package/lib/components/VDatePicker/VDatePickerHeader.mjs +2 -1
- package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
- package/lib/components/VDatePicker/index.d.mts +6 -6
- package/lib/components/VField/VField.mjs +2 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VList/VList.mjs +3 -2
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +17 -10
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +12 -12
- package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +5 -4
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +28 -28
- package/lib/components/VSelectionControl/VSelectionControl.css +1 -3
- package/lib/components/VSelectionControl/VSelectionControl.sass +1 -5
- package/lib/components/VStepper/VStepper.mjs +5 -4
- package/lib/components/VStepper/VStepper.mjs.map +1 -1
- package/lib/components/VStepper/VStepperItem.mjs +5 -4
- package/lib/components/VStepper/VStepperItem.mjs.map +1 -1
- package/lib/components/VStepper/index.d.mts +58 -52
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/index.d.mts +129 -133
- package/lib/composables/form.mjs +7 -2
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +4 -2
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/validation.mjs +10 -12
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/virtual.mjs +7 -2
- package/lib/composables/virtual.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/mdi.mjs +2 -1
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.mts +58 -56
- package/lib/labs/VDateInput/VDateInput.mjs +1 -1
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.css +74 -0
- package/lib/labs/VFileUpload/VFileUpload.mjs +241 -0
- package/lib/labs/VFileUpload/VFileUpload.mjs.map +1 -0
- package/lib/labs/VFileUpload/VFileUpload.sass +75 -0
- package/lib/labs/VFileUpload/VFileUploadItem.mjs +95 -0
- package/lib/labs/VFileUpload/VFileUploadItem.mjs.map +1 -0
- package/lib/labs/VFileUpload/_variables.scss +12 -0
- package/lib/labs/VFileUpload/index.d.mts +1365 -0
- package/lib/labs/VFileUpload/index.mjs +3 -0
- package/lib/labs/VFileUpload/index.mjs.map +1 -0
- package/lib/labs/VNumberInput/VNumberInput.mjs +14 -9
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VStepperVertical/index.d.mts +51 -51
- package/lib/labs/VTreeview/VTreeviewItem.mjs +3 -4
- package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
- package/lib/labs/VTreeview/index.d.mts +22 -22
- package/lib/labs/components.d.mts +1421 -110
- package/lib/labs/components.mjs +1 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/af.mjs +5 -0
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +5 -0
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +5 -0
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +5 -0
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +5 -0
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +5 -0
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +5 -0
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +5 -0
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +5 -0
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +5 -0
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +5 -0
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +5 -0
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +5 -0
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +5 -0
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +5 -0
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +6 -1
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +5 -0
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +5 -0
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +5 -0
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +5 -0
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +215 -0
- package/lib/locale/it.mjs +5 -0
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +5 -0
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/km.mjs +5 -0
- package/lib/locale/km.mjs.map +1 -1
- package/lib/locale/ko.mjs +5 -0
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +5 -0
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +5 -0
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +5 -0
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +5 -0
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +5 -0
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +5 -0
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +5 -0
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +5 -0
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +5 -0
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +5 -0
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +5 -0
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +5 -0
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +5 -0
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +5 -0
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +5 -0
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +5 -0
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +5 -0
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +5 -0
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +5 -0
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/package.json +2 -2
package/dist/vuetify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.7.
|
|
2
|
+
* Vuetify v3.7.6
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1771,7 +1771,8 @@
|
|
|
1771
1771
|
calendar: 'mdi-calendar',
|
|
1772
1772
|
treeviewCollapse: 'mdi-menu-down',
|
|
1773
1773
|
treeviewExpand: 'mdi-menu-right',
|
|
1774
|
-
eyeDropper: 'mdi-eyedropper'
|
|
1774
|
+
eyeDropper: 'mdi-eyedropper',
|
|
1775
|
+
upload: 'mdi-cloud-upload'
|
|
1775
1776
|
};
|
|
1776
1777
|
const mdi = {
|
|
1777
1778
|
// Not using mergeProps here, functional components merge props by default (?)
|
|
@@ -2475,6 +2476,11 @@
|
|
|
2475
2476
|
counter: '{0} files',
|
|
2476
2477
|
counterSize: '{0} files ({1} in total)'
|
|
2477
2478
|
},
|
|
2479
|
+
fileUpload: {
|
|
2480
|
+
title: 'Drag and drop files here',
|
|
2481
|
+
divider: 'or',
|
|
2482
|
+
browse: 'Browse Files'
|
|
2483
|
+
},
|
|
2478
2484
|
timePicker: {
|
|
2479
2485
|
am: 'AM',
|
|
2480
2486
|
pm: 'PM',
|
|
@@ -6905,8 +6911,13 @@
|
|
|
6905
6911
|
resetValidation
|
|
6906
6912
|
};
|
|
6907
6913
|
}
|
|
6908
|
-
function useForm() {
|
|
6909
|
-
|
|
6914
|
+
function useForm(props) {
|
|
6915
|
+
const form = vue.inject(FormKey, null);
|
|
6916
|
+
return {
|
|
6917
|
+
...form,
|
|
6918
|
+
isReadonly: vue.computed(() => !!(props?.readonly ?? form?.isReadonly.value)),
|
|
6919
|
+
isDisabled: vue.computed(() => !!(props?.disabled ?? form?.isDisabled.value))
|
|
6920
|
+
};
|
|
6910
6921
|
}
|
|
6911
6922
|
|
|
6912
6923
|
// Composables
|
|
@@ -6947,17 +6958,15 @@
|
|
|
6947
6958
|
let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();
|
|
6948
6959
|
const model = useProxiedModel(props, 'modelValue');
|
|
6949
6960
|
const validationModel = vue.computed(() => props.validationValue === undefined ? model.value : props.validationValue);
|
|
6950
|
-
const form = useForm();
|
|
6961
|
+
const form = useForm(props);
|
|
6951
6962
|
const internalErrorMessages = vue.ref([]);
|
|
6952
6963
|
const isPristine = vue.shallowRef(true);
|
|
6953
6964
|
const isDirty = vue.computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
|
|
6954
|
-
const isDisabled = vue.computed(() => !!(props.disabled ?? form?.isDisabled.value));
|
|
6955
|
-
const isReadonly = vue.computed(() => !!(props.readonly ?? form?.isReadonly.value));
|
|
6956
6965
|
const errorMessages = vue.computed(() => {
|
|
6957
6966
|
return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
|
|
6958
6967
|
});
|
|
6959
6968
|
const validateOn = vue.computed(() => {
|
|
6960
|
-
let value = (props.validateOn ?? form?.
|
|
6969
|
+
let value = (props.validateOn ?? form.validateOn?.value) || 'input';
|
|
6961
6970
|
if (value === 'lazy') value = 'input lazy';
|
|
6962
6971
|
if (value === 'eager') value = 'input eager';
|
|
6963
6972
|
const set = new Set(value?.split(' ') ?? []);
|
|
@@ -6983,14 +6992,14 @@
|
|
|
6983
6992
|
return {
|
|
6984
6993
|
[`${name}--error`]: isValid.value === false,
|
|
6985
6994
|
[`${name}--dirty`]: isDirty.value,
|
|
6986
|
-
[`${name}--disabled`]: isDisabled.value,
|
|
6987
|
-
[`${name}--readonly`]: isReadonly.value
|
|
6995
|
+
[`${name}--disabled`]: form.isDisabled.value,
|
|
6996
|
+
[`${name}--readonly`]: form.isReadonly.value
|
|
6988
6997
|
};
|
|
6989
6998
|
});
|
|
6990
6999
|
const vm = getCurrentInstance('validation');
|
|
6991
7000
|
const uid = vue.computed(() => props.name ?? vue.unref(id));
|
|
6992
7001
|
vue.onBeforeMount(() => {
|
|
6993
|
-
form?.
|
|
7002
|
+
form.register?.({
|
|
6994
7003
|
id: uid.value,
|
|
6995
7004
|
vm,
|
|
6996
7005
|
validate,
|
|
@@ -6999,13 +7008,13 @@
|
|
|
6999
7008
|
});
|
|
7000
7009
|
});
|
|
7001
7010
|
vue.onBeforeUnmount(() => {
|
|
7002
|
-
form?.
|
|
7011
|
+
form.unregister?.(uid.value);
|
|
7003
7012
|
});
|
|
7004
7013
|
vue.onMounted(async () => {
|
|
7005
7014
|
if (!validateOn.value.lazy) {
|
|
7006
7015
|
await validate(!validateOn.value.eager);
|
|
7007
7016
|
}
|
|
7008
|
-
form?.
|
|
7017
|
+
form.update?.(uid.value, isValid.value, errorMessages.value);
|
|
7009
7018
|
});
|
|
7010
7019
|
useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
|
|
7011
7020
|
vue.watch(validationModel, () => {
|
|
@@ -7025,7 +7034,7 @@
|
|
|
7025
7034
|
});
|
|
7026
7035
|
});
|
|
7027
7036
|
vue.watch([isValid, errorMessages], () => {
|
|
7028
|
-
form?.
|
|
7037
|
+
form.update?.(uid.value, isValid.value, errorMessages.value);
|
|
7029
7038
|
});
|
|
7030
7039
|
async function reset() {
|
|
7031
7040
|
model.value = null;
|
|
@@ -7066,8 +7075,8 @@
|
|
|
7066
7075
|
return {
|
|
7067
7076
|
errorMessages,
|
|
7068
7077
|
isDirty,
|
|
7069
|
-
isDisabled,
|
|
7070
|
-
isReadonly,
|
|
7078
|
+
isDisabled: form.isDisabled,
|
|
7079
|
+
isReadonly: form.isReadonly,
|
|
7071
7080
|
isPristine,
|
|
7072
7081
|
isValid,
|
|
7073
7082
|
isValidating,
|
|
@@ -8070,7 +8079,7 @@
|
|
|
8070
8079
|
draggable: Boolean,
|
|
8071
8080
|
filter: Boolean,
|
|
8072
8081
|
filterIcon: {
|
|
8073
|
-
type:
|
|
8082
|
+
type: IconValue,
|
|
8074
8083
|
default: '$complete'
|
|
8075
8084
|
},
|
|
8076
8085
|
label: Boolean,
|
|
@@ -8193,7 +8202,8 @@
|
|
|
8193
8202
|
'v-chip--label': props.label,
|
|
8194
8203
|
'v-chip--link': isClickable.value,
|
|
8195
8204
|
'v-chip--filter': hasFilter,
|
|
8196
|
-
'v-chip--pill': props.pill
|
|
8205
|
+
'v-chip--pill': props.pill,
|
|
8206
|
+
[`${props.activeClass}`]: props.activeClass && link.isActive?.value
|
|
8197
8207
|
}, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
|
|
8198
8208
|
"style": [hasColor ? colorStyles.value : undefined, props.style],
|
|
8199
8209
|
"disabled": props.disabled || undefined,
|
|
@@ -8941,7 +8951,9 @@
|
|
|
8941
8951
|
isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value)),
|
|
8942
8952
|
isGroupActivator: parent.isGroupActivator
|
|
8943
8953
|
};
|
|
8944
|
-
|
|
8954
|
+
vue.onBeforeMount(() => {
|
|
8955
|
+
!parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup);
|
|
8956
|
+
});
|
|
8945
8957
|
vue.onBeforeUnmount(() => {
|
|
8946
8958
|
!parent.isGroupActivator && parent.root.unregister(computedId.value);
|
|
8947
8959
|
});
|
|
@@ -9167,23 +9179,30 @@
|
|
|
9167
9179
|
const list = useList();
|
|
9168
9180
|
const isActive = vue.computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
|
|
9169
9181
|
const isLink = vue.computed(() => props.link !== false && link.isLink.value);
|
|
9170
|
-
const
|
|
9182
|
+
const isSelectable = vue.computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
|
|
9183
|
+
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
|
|
9171
9184
|
const roundedProps = vue.computed(() => props.rounded || props.nav);
|
|
9172
9185
|
const color = vue.computed(() => props.color ?? props.activeColor);
|
|
9173
9186
|
const variantProps = vue.computed(() => ({
|
|
9174
9187
|
color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
|
|
9175
9188
|
variant: props.variant
|
|
9176
9189
|
}));
|
|
9190
|
+
|
|
9191
|
+
// useNestedItem doesn't call register until beforeMount,
|
|
9192
|
+
// so this can't be an immediate watcher as we don't know parent yet
|
|
9177
9193
|
vue.watch(() => link.isActive?.value, val => {
|
|
9178
|
-
if (val
|
|
9194
|
+
if (!val) return;
|
|
9195
|
+
handleActiveLink();
|
|
9196
|
+
});
|
|
9197
|
+
vue.onBeforeMount(() => {
|
|
9198
|
+
if (link.isActive?.value) handleActiveLink();
|
|
9199
|
+
});
|
|
9200
|
+
function handleActiveLink() {
|
|
9201
|
+
if (parent.value != null) {
|
|
9179
9202
|
root.open(parent.value, true);
|
|
9180
9203
|
}
|
|
9181
|
-
|
|
9182
|
-
|
|
9183
|
-
}
|
|
9184
|
-
}, {
|
|
9185
|
-
immediate: true
|
|
9186
|
-
});
|
|
9204
|
+
openOnSelect(true);
|
|
9205
|
+
}
|
|
9187
9206
|
const {
|
|
9188
9207
|
themeClasses
|
|
9189
9208
|
} = provideTheme(props);
|
|
@@ -9258,7 +9277,7 @@
|
|
|
9258
9277
|
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
|
|
9259
9278
|
"style": [colorStyles.value, dimensionStyles.value, props.style],
|
|
9260
9279
|
"tabindex": isClickable.value ? list ? -2 : 0 : undefined,
|
|
9261
|
-
"aria-selected": root.activatable.value ? isActivated.value : isSelected.value,
|
|
9280
|
+
"aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
|
|
9262
9281
|
"onClick": onClick,
|
|
9263
9282
|
"onKeydown": isClickable.value && !isLink.value && onKeyDown
|
|
9264
9283
|
}, link.linkProps), {
|
|
@@ -9675,8 +9694,8 @@
|
|
|
9675
9694
|
activeClass: String,
|
|
9676
9695
|
bgColor: String,
|
|
9677
9696
|
disabled: Boolean,
|
|
9678
|
-
expandIcon:
|
|
9679
|
-
collapseIcon:
|
|
9697
|
+
expandIcon: IconValue,
|
|
9698
|
+
collapseIcon: IconValue,
|
|
9680
9699
|
lines: {
|
|
9681
9700
|
type: [Boolean, String],
|
|
9682
9701
|
default: 'one'
|
|
@@ -11850,7 +11869,8 @@
|
|
|
11850
11869
|
"style": textColorStyles.value
|
|
11851
11870
|
}, {
|
|
11852
11871
|
default: () => [label()]
|
|
11853
|
-
}), vue.createVNode(VFieldLabel, {
|
|
11872
|
+
}), hasLabel.value && vue.createVNode(VFieldLabel, {
|
|
11873
|
+
"key": "label",
|
|
11854
11874
|
"ref": labelRef,
|
|
11855
11875
|
"for": id.value
|
|
11856
11876
|
}, {
|
|
@@ -12295,6 +12315,7 @@
|
|
|
12295
12315
|
}
|
|
12296
12316
|
}
|
|
12297
12317
|
});
|
|
12318
|
+
let scrollTimeout = -1;
|
|
12298
12319
|
function handleScroll() {
|
|
12299
12320
|
if (!containerRef.value || !markerRef.value) return;
|
|
12300
12321
|
const scrollTop = containerRef.value.scrollTop;
|
|
@@ -12311,12 +12332,15 @@
|
|
|
12311
12332
|
}
|
|
12312
12333
|
lastScrollTop = scrollTop;
|
|
12313
12334
|
lastScrollTime = scrollTime;
|
|
12335
|
+
window.clearTimeout(scrollTimeout);
|
|
12336
|
+
scrollTimeout = window.setTimeout(handleScrollend, 500);
|
|
12314
12337
|
calculateVisibleItems();
|
|
12315
12338
|
}
|
|
12316
12339
|
function handleScrollend() {
|
|
12317
12340
|
if (!containerRef.value || !markerRef.value) return;
|
|
12318
12341
|
scrollVelocity = 0;
|
|
12319
12342
|
lastScrollTime = 0;
|
|
12343
|
+
window.clearTimeout(scrollTimeout);
|
|
12320
12344
|
calculateVisibleItems();
|
|
12321
12345
|
}
|
|
12322
12346
|
let raf = -1;
|
|
@@ -12362,7 +12386,8 @@
|
|
|
12362
12386
|
const computedItems = vue.computed(() => {
|
|
12363
12387
|
return items.value.slice(first.value, last.value).map((item, index) => ({
|
|
12364
12388
|
raw: item,
|
|
12365
|
-
index: index + first.value
|
|
12389
|
+
index: index + first.value,
|
|
12390
|
+
key: isObject(item) && 'value' in item ? item.value : index + first.value
|
|
12366
12391
|
}));
|
|
12367
12392
|
});
|
|
12368
12393
|
vue.watch(items, () => {
|
|
@@ -12477,7 +12502,7 @@
|
|
|
12477
12502
|
});
|
|
12478
12503
|
useRender(() => {
|
|
12479
12504
|
const children = computedItems.value.map(item => vue.createVNode(VVirtualScrollItem, {
|
|
12480
|
-
"key": item.
|
|
12505
|
+
"key": item.key,
|
|
12481
12506
|
"renderless": props.renderless,
|
|
12482
12507
|
"onUpdate:height": height => handleItemResize(item.index, height)
|
|
12483
12508
|
}, {
|
|
@@ -12676,7 +12701,7 @@
|
|
|
12676
12701
|
const counterValue = vue.computed(() => {
|
|
12677
12702
|
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
|
|
12678
12703
|
});
|
|
12679
|
-
const form = useForm();
|
|
12704
|
+
const form = useForm(props);
|
|
12680
12705
|
const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
|
|
12681
12706
|
const isFocused = vue.shallowRef(false);
|
|
12682
12707
|
const label = vue.computed(() => menu.value ? props.closeText : props.openText);
|
|
@@ -12688,7 +12713,7 @@
|
|
|
12688
12713
|
}
|
|
12689
12714
|
return items.value;
|
|
12690
12715
|
});
|
|
12691
|
-
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length ||
|
|
12716
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
|
12692
12717
|
const computedMenuProps = vue.computed(() => {
|
|
12693
12718
|
return {
|
|
12694
12719
|
...props.menuProps,
|
|
@@ -12715,7 +12740,7 @@
|
|
|
12715
12740
|
}
|
|
12716
12741
|
}
|
|
12717
12742
|
function onKeydown(e) {
|
|
12718
|
-
if (!e.key ||
|
|
12743
|
+
if (!e.key || form.isReadonly.value) return;
|
|
12719
12744
|
if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {
|
|
12720
12745
|
e.preventDefault();
|
|
12721
12746
|
}
|
|
@@ -12876,6 +12901,7 @@
|
|
|
12876
12901
|
"color": props.itemColor ?? props.color
|
|
12877
12902
|
}, listEvents, props.listProps), {
|
|
12878
12903
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
12904
|
+
"key": "no-data",
|
|
12879
12905
|
"title": t(props.noDataText)
|
|
12880
12906
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
12881
12907
|
"ref": vVirtualScrollRef,
|
|
@@ -12890,7 +12916,7 @@
|
|
|
12890
12916
|
} = _ref2;
|
|
12891
12917
|
const itemProps = vue.mergeProps(item.props, {
|
|
12892
12918
|
ref: itemRef,
|
|
12893
|
-
key:
|
|
12919
|
+
key: item.value,
|
|
12894
12920
|
onClick: () => select(item, null)
|
|
12895
12921
|
});
|
|
12896
12922
|
return slots.item?.({
|
|
@@ -13193,7 +13219,7 @@
|
|
|
13193
13219
|
const counterValue = vue.computed(() => {
|
|
13194
13220
|
return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
|
|
13195
13221
|
});
|
|
13196
|
-
const form = useForm();
|
|
13222
|
+
const form = useForm(props);
|
|
13197
13223
|
const {
|
|
13198
13224
|
filteredItems,
|
|
13199
13225
|
getMatches
|
|
@@ -13211,7 +13237,7 @@
|
|
|
13211
13237
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
13212
13238
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
13213
13239
|
});
|
|
13214
|
-
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length ||
|
|
13240
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
|
13215
13241
|
const listRef = vue.ref();
|
|
13216
13242
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
13217
13243
|
function onClear(e) {
|
|
@@ -13238,7 +13264,7 @@
|
|
|
13238
13264
|
}
|
|
13239
13265
|
}
|
|
13240
13266
|
function onKeydown(e) {
|
|
13241
|
-
if (
|
|
13267
|
+
if (form.isReadonly.value) return;
|
|
13242
13268
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
13243
13269
|
const length = model.value.length;
|
|
13244
13270
|
if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
@@ -13415,7 +13441,7 @@
|
|
|
13415
13441
|
'v-autocomplete--selecting-index': selectionIndex.value > -1
|
|
13416
13442
|
}, props.class],
|
|
13417
13443
|
"style": props.style,
|
|
13418
|
-
"readonly":
|
|
13444
|
+
"readonly": form.isReadonly.value,
|
|
13419
13445
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
13420
13446
|
"onClick:clear": onClear,
|
|
13421
13447
|
"onMousedown:control": onMousedownControl,
|
|
@@ -13450,6 +13476,7 @@
|
|
|
13450
13476
|
"color": props.itemColor ?? props.color
|
|
13451
13477
|
}, listEvents, props.listProps), {
|
|
13452
13478
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
13479
|
+
"key": "no-data",
|
|
13453
13480
|
"title": t(props.noDataText)
|
|
13454
13481
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
13455
13482
|
"ref": vVirtualScrollRef,
|
|
@@ -13464,7 +13491,7 @@
|
|
|
13464
13491
|
} = _ref4;
|
|
13465
13492
|
const itemProps = vue.mergeProps(item.props, {
|
|
13466
13493
|
ref: itemRef,
|
|
13467
|
-
key:
|
|
13494
|
+
key: item.value,
|
|
13468
13495
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
13469
13496
|
onClick: () => select(item, null)
|
|
13470
13497
|
});
|
|
@@ -17034,7 +17061,7 @@
|
|
|
17034
17061
|
const transformed = transformOut(v);
|
|
17035
17062
|
return props.multiple ? transformed : transformed[0] ?? null;
|
|
17036
17063
|
});
|
|
17037
|
-
const form = useForm();
|
|
17064
|
+
const form = useForm(props);
|
|
17038
17065
|
const hasChips = vue.computed(() => !!(props.chips || slots.chip));
|
|
17039
17066
|
const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
|
|
17040
17067
|
const _search = vue.shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
|
|
@@ -17094,7 +17121,7 @@
|
|
|
17094
17121
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
17095
17122
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
17096
17123
|
});
|
|
17097
|
-
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length ||
|
|
17124
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !displayItems.value.length || form.isReadonly.value || form.isDisabled.value);
|
|
17098
17125
|
const listRef = vue.ref();
|
|
17099
17126
|
const listEvents = useScrolling(listRef, vTextFieldRef);
|
|
17100
17127
|
function onClear(e) {
|
|
@@ -17122,7 +17149,7 @@
|
|
|
17122
17149
|
}
|
|
17123
17150
|
// eslint-disable-next-line complexity
|
|
17124
17151
|
function onKeydown(e) {
|
|
17125
|
-
if (isComposingIgnoreKey(e) ||
|
|
17152
|
+
if (isComposingIgnoreKey(e) || form.isReadonly.value) return;
|
|
17126
17153
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
17127
17154
|
const length = model.value.length;
|
|
17128
17155
|
if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
@@ -17294,7 +17321,7 @@
|
|
|
17294
17321
|
[`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
|
|
17295
17322
|
}, props.class],
|
|
17296
17323
|
"style": props.style,
|
|
17297
|
-
"readonly":
|
|
17324
|
+
"readonly": form.isReadonly.value,
|
|
17298
17325
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
17299
17326
|
"onClick:clear": onClear,
|
|
17300
17327
|
"onMousedown:control": onMousedownControl,
|
|
@@ -17329,6 +17356,7 @@
|
|
|
17329
17356
|
"color": props.itemColor ?? props.color
|
|
17330
17357
|
}, listEvents, props.listProps), {
|
|
17331
17358
|
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
17359
|
+
"key": "no-data",
|
|
17332
17360
|
"title": t(props.noDataText)
|
|
17333
17361
|
}, null)), vue.createVNode(VVirtualScroll, {
|
|
17334
17362
|
"ref": vVirtualScrollRef,
|
|
@@ -17343,7 +17371,7 @@
|
|
|
17343
17371
|
} = _ref4;
|
|
17344
17372
|
const itemProps = vue.mergeProps(item.props, {
|
|
17345
17373
|
ref: itemRef,
|
|
17346
|
-
key:
|
|
17374
|
+
key: item.value,
|
|
17347
17375
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
17348
17376
|
onClick: () => select(item, null)
|
|
17349
17377
|
});
|
|
@@ -18338,21 +18366,23 @@
|
|
|
18338
18366
|
internalModel.value = structuredClone(vue.toRaw(model.value));
|
|
18339
18367
|
emit('cancel');
|
|
18340
18368
|
}
|
|
18341
|
-
|
|
18342
|
-
|
|
18343
|
-
const actions = vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, {
|
|
18369
|
+
function actions(actionsProps) {
|
|
18370
|
+
return vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, vue.mergeProps({
|
|
18344
18371
|
"disabled": isPristine.value,
|
|
18345
18372
|
"variant": "text",
|
|
18346
18373
|
"color": props.color,
|
|
18347
18374
|
"onClick": cancel,
|
|
18348
18375
|
"text": t(props.cancelText)
|
|
18349
|
-
}, null), vue.createVNode(VBtn, {
|
|
18376
|
+
}, actionsProps), null), vue.createVNode(VBtn, vue.mergeProps({
|
|
18350
18377
|
"disabled": isPristine.value,
|
|
18351
18378
|
"variant": "text",
|
|
18352
18379
|
"color": props.color,
|
|
18353
18380
|
"onClick": save,
|
|
18354
18381
|
"text": t(props.okText)
|
|
18355
|
-
}, null)]);
|
|
18382
|
+
}, actionsProps), null)]);
|
|
18383
|
+
}
|
|
18384
|
+
let actionsUsed = false;
|
|
18385
|
+
useRender(() => {
|
|
18356
18386
|
return vue.createVNode(vue.Fragment, null, [slots.default?.({
|
|
18357
18387
|
model: internalModel,
|
|
18358
18388
|
save,
|
|
@@ -18362,7 +18392,7 @@
|
|
|
18362
18392
|
actionsUsed = true;
|
|
18363
18393
|
return actions;
|
|
18364
18394
|
}
|
|
18365
|
-
}), !actionsUsed && actions]);
|
|
18395
|
+
}), !actionsUsed && actions()]);
|
|
18366
18396
|
});
|
|
18367
18397
|
return {
|
|
18368
18398
|
save,
|
|
@@ -21652,7 +21682,7 @@
|
|
|
21652
21682
|
// Types
|
|
21653
21683
|
|
|
21654
21684
|
const makeVDatePickerHeaderProps = propsFactory({
|
|
21655
|
-
appendIcon:
|
|
21685
|
+
appendIcon: IconValue,
|
|
21656
21686
|
color: String,
|
|
21657
21687
|
header: String,
|
|
21658
21688
|
transition: String,
|
|
@@ -25085,7 +25115,7 @@
|
|
|
25085
25115
|
// the thumbs are on top of each other
|
|
25086
25116
|
// and they are both at minimum value
|
|
25087
25117
|
// but only if focused from outside.
|
|
25088
|
-
if (model.value[0] === model.value[1] && model.value[1] === min.value && e.relatedTarget !== stopThumbRef.value?.$el) {
|
|
25118
|
+
if (max.value !== min.value && model.value[0] === model.value[1] && model.value[1] === min.value && e.relatedTarget !== stopThumbRef.value?.$el) {
|
|
25089
25119
|
startThumbRef.value?.$el.blur();
|
|
25090
25120
|
stopThumbRef.value?.$el.focus();
|
|
25091
25121
|
}
|
|
@@ -25114,7 +25144,7 @@
|
|
|
25114
25144
|
// the thumbs are on top of each other
|
|
25115
25145
|
// and they are both at maximum value
|
|
25116
25146
|
// but only if focused from outside.
|
|
25117
|
-
if (model.value[0] === model.value[1] && model.value[0] === max.value && e.relatedTarget !== startThumbRef.value?.$el) {
|
|
25147
|
+
if (max.value !== min.value && model.value[0] === model.value[1] && model.value[0] === max.value && e.relatedTarget !== startThumbRef.value?.$el) {
|
|
25118
25148
|
stopThumbRef.value?.$el.blur();
|
|
25119
25149
|
startThumbRef.value?.$el.focus();
|
|
25120
25150
|
}
|
|
@@ -26304,20 +26334,20 @@
|
|
|
26304
26334
|
subtitle: String,
|
|
26305
26335
|
complete: Boolean,
|
|
26306
26336
|
completeIcon: {
|
|
26307
|
-
type:
|
|
26337
|
+
type: IconValue,
|
|
26308
26338
|
default: '$complete'
|
|
26309
26339
|
},
|
|
26310
26340
|
editable: Boolean,
|
|
26311
26341
|
editIcon: {
|
|
26312
|
-
type:
|
|
26342
|
+
type: IconValue,
|
|
26313
26343
|
default: '$edit'
|
|
26314
26344
|
},
|
|
26315
26345
|
error: Boolean,
|
|
26316
26346
|
errorIcon: {
|
|
26317
|
-
type:
|
|
26347
|
+
type: IconValue,
|
|
26318
26348
|
default: '$error'
|
|
26319
26349
|
},
|
|
26320
|
-
icon:
|
|
26350
|
+
icon: IconValue,
|
|
26321
26351
|
ripple: {
|
|
26322
26352
|
type: [Boolean, Object],
|
|
26323
26353
|
default: true
|
|
@@ -26478,10 +26508,10 @@
|
|
|
26478
26508
|
const makeStepperProps = propsFactory({
|
|
26479
26509
|
altLabels: Boolean,
|
|
26480
26510
|
bgColor: String,
|
|
26481
|
-
completeIcon:
|
|
26482
|
-
editIcon:
|
|
26511
|
+
completeIcon: IconValue,
|
|
26512
|
+
editIcon: IconValue,
|
|
26483
26513
|
editable: Boolean,
|
|
26484
|
-
errorIcon:
|
|
26514
|
+
errorIcon: IconValue,
|
|
26485
26515
|
hideActions: Boolean,
|
|
26486
26516
|
items: {
|
|
26487
26517
|
type: Array,
|
|
@@ -28258,7 +28288,7 @@
|
|
|
28258
28288
|
goTo
|
|
28259
28289
|
};
|
|
28260
28290
|
}
|
|
28261
|
-
const version$1 = "3.7.
|
|
28291
|
+
const version$1 = "3.7.6";
|
|
28262
28292
|
createVuetify$1.version = version$1;
|
|
28263
28293
|
|
|
28264
28294
|
// Vue's inject() can only be used in setup
|
|
@@ -28283,7 +28313,7 @@
|
|
|
28283
28313
|
...options
|
|
28284
28314
|
});
|
|
28285
28315
|
};
|
|
28286
|
-
const version = "3.7.
|
|
28316
|
+
const version = "3.7.6";
|
|
28287
28317
|
createVuetify.version = version;
|
|
28288
28318
|
|
|
28289
28319
|
exports.blueprints = index;
|