vuetify 3.1.14 → 3.1.15
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 +149 -97
- package/dist/json/importMap.json +70 -70
- package/dist/json/tags.json +13 -0
- package/dist/json/web-types.json +440 -209
- package/dist/vuetify-labs.css +161 -152
- package/dist/vuetify-labs.d.ts +518 -160
- package/dist/vuetify-labs.esm.js +176 -116
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +176 -116
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +11 -2
- package/dist/vuetify.d.ts +486 -161
- package/dist/vuetify.esm.js +118 -68
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +118 -68
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +728 -717
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +9 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +50 -6
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +10 -0
- package/lib/components/VAutocomplete/index.d.ts +29 -17
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/index.d.ts +21 -16
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.ts +22 -1
- package/lib/components/VCombobox/VCombobox.css +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +6 -4
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +1 -1
- package/lib/components/VCombobox/index.d.ts +29 -17
- package/lib/components/VField/index.d.ts +6 -0
- package/lib/components/VFileInput/VFileInput.mjs +13 -17
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.ts +68 -23
- package/lib/components/VInput/VInput.mjs +14 -7
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/index.d.ts +22 -1
- package/lib/components/VOverlay/locationStrategies.mjs +9 -4
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.ts +22 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.d.ts +22 -1
- package/lib/components/VSelect/VSelect.mjs +6 -0
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +32 -17
- package/lib/components/VSlider/VSlider.mjs +2 -2
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/index.d.ts +22 -1
- package/lib/components/VSwitch/VSwitch.mjs +5 -3
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.ts +43 -1
- package/lib/components/VTextField/VTextField.mjs +4 -12
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.ts +70 -22
- package/lib/components/VTextarea/VTextarea.mjs +4 -12
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/index.d.ts +61 -22
- package/lib/components/VTreeview/_mixins.sass +0 -0
- package/lib/components/VTreeview/util/filterTreeItems.mjs +0 -0
- package/lib/components/VValidation/index.d.ts +10 -1
- package/lib/components/index.d.ts +465 -140
- package/lib/composables/focus.mjs +3 -2
- package/lib/composables/focus.mjs.map +1 -1
- package/lib/composables/items.mjs +7 -2
- package/lib/composables/items.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/mdi-svg.mjs +2 -2
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/index.d.ts +21 -21
- package/lib/labs/VDataTable/VDataTable.mjs +2 -2
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +52 -44
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +2 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +0 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +2 -1
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +44 -11
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +1 -0
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
- package/lib/labs/components.d.ts +53 -20
- package/lib/locale/el.mjs +0 -0
- package/lib/locale/index.mjs +0 -0
- package/package.json +2 -2
package/dist/vuetify.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.1.
|
|
2
|
+
* Vuetify v3.1.15
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -5289,7 +5289,8 @@ const VFieldLabel = genericComponent()({
|
|
|
5289
5289
|
|
|
5290
5290
|
// Composables
|
|
5291
5291
|
const makeFocusProps = propsFactory({
|
|
5292
|
-
focused: Boolean
|
|
5292
|
+
focused: Boolean,
|
|
5293
|
+
'onUpdate:focused': EventProp()
|
|
5293
5294
|
}, 'focus');
|
|
5294
5295
|
function useFocus(props) {
|
|
5295
5296
|
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
|
|
@@ -5878,6 +5879,8 @@ const makeVInputProps = propsFactory({
|
|
|
5878
5879
|
appendIcon: IconValue,
|
|
5879
5880
|
prependIcon: IconValue,
|
|
5880
5881
|
hideDetails: [Boolean, String],
|
|
5882
|
+
hint: String,
|
|
5883
|
+
persistentHint: Boolean,
|
|
5881
5884
|
messages: {
|
|
5882
5885
|
type: [Array, String],
|
|
5883
5886
|
default: () => []
|
|
@@ -5941,10 +5944,19 @@ const VInput = genericComponent()({
|
|
|
5941
5944
|
resetValidation,
|
|
5942
5945
|
validate
|
|
5943
5946
|
}));
|
|
5947
|
+
const messages = computed(() => {
|
|
5948
|
+
if (errorMessages.value.length > 0) {
|
|
5949
|
+
return errorMessages.value;
|
|
5950
|
+
} else if (props.hint && (props.persistentHint || props.focused)) {
|
|
5951
|
+
return props.hint;
|
|
5952
|
+
} else {
|
|
5953
|
+
return props.messages;
|
|
5954
|
+
}
|
|
5955
|
+
});
|
|
5944
5956
|
useRender(() => {
|
|
5945
5957
|
const hasPrepend = !!(slots.prepend || props.prependIcon);
|
|
5946
5958
|
const hasAppend = !!(slots.append || props.appendIcon);
|
|
5947
|
-
const hasMessages =
|
|
5959
|
+
const hasMessages = messages.value.length > 0;
|
|
5948
5960
|
const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
|
|
5949
5961
|
return createVNode("div", {
|
|
5950
5962
|
"class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
|
|
@@ -5967,7 +5979,7 @@ const VInput = genericComponent()({
|
|
|
5967
5979
|
}, [createVNode(VMessages, {
|
|
5968
5980
|
"id": messagesId.value,
|
|
5969
5981
|
"active": hasMessages,
|
|
5970
|
-
"messages":
|
|
5982
|
+
"messages": messages.value
|
|
5971
5983
|
}, {
|
|
5972
5984
|
message: slots.message
|
|
5973
5985
|
}), slots.details?.(slotProps.value)])]);
|
|
@@ -5979,10 +5991,6 @@ const VInput = genericComponent()({
|
|
|
5979
5991
|
};
|
|
5980
5992
|
}
|
|
5981
5993
|
});
|
|
5982
|
-
function filterInputProps(props) {
|
|
5983
|
-
const keys = Object.keys(VInput.props).filter(k => !isOn(k));
|
|
5984
|
-
return pick(props, keys);
|
|
5985
|
-
}
|
|
5986
5994
|
|
|
5987
5995
|
const VCounter = genericComponent()({
|
|
5988
5996
|
name: 'VCounter',
|
|
@@ -6108,8 +6116,6 @@ const makeVTextFieldProps = propsFactory({
|
|
|
6108
6116
|
autofocus: Boolean,
|
|
6109
6117
|
counter: [Boolean, Number, String],
|
|
6110
6118
|
counterValue: Function,
|
|
6111
|
-
hint: String,
|
|
6112
|
-
persistentHint: Boolean,
|
|
6113
6119
|
prefix: String,
|
|
6114
6120
|
placeholder: String,
|
|
6115
6121
|
persistentPlaceholder: Boolean,
|
|
@@ -6164,9 +6170,6 @@ const VTextField = genericComponent()({
|
|
|
6164
6170
|
const vFieldRef = ref();
|
|
6165
6171
|
const inputRef = ref();
|
|
6166
6172
|
const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
|
|
6167
|
-
const messages = computed(() => {
|
|
6168
|
-
return props.messages.length ? props.messages : isFocused.value || props.persistentHint ? props.hint : '';
|
|
6169
|
-
});
|
|
6170
6173
|
function onFocus() {
|
|
6171
6174
|
if (inputRef.value !== document.activeElement) {
|
|
6172
6175
|
inputRef.value?.focus();
|
|
@@ -6209,7 +6212,7 @@ const VTextField = genericComponent()({
|
|
|
6209
6212
|
const [{
|
|
6210
6213
|
modelValue: _,
|
|
6211
6214
|
...inputProps
|
|
6212
|
-
}] =
|
|
6215
|
+
}] = VInput.filterProps(props);
|
|
6213
6216
|
const [fieldProps] = filterFieldProps(props);
|
|
6214
6217
|
return createVNode(VInput, mergeProps({
|
|
6215
6218
|
"ref": vInputRef,
|
|
@@ -6219,12 +6222,9 @@ const VTextField = genericComponent()({
|
|
|
6219
6222
|
'v-text-field--prefixed': props.prefix,
|
|
6220
6223
|
'v-text-field--suffixed': props.suffix,
|
|
6221
6224
|
'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
|
|
6222
|
-
}]
|
|
6223
|
-
"onClick:prepend": props['onClick:prepend'],
|
|
6224
|
-
"onClick:append": props['onClick:append']
|
|
6225
|
+
}]
|
|
6225
6226
|
}, rootAttrs, inputProps, {
|
|
6226
|
-
"focused": isFocused.value
|
|
6227
|
-
"messages": messages.value
|
|
6227
|
+
"focused": isFocused.value
|
|
6228
6228
|
}), {
|
|
6229
6229
|
...slots,
|
|
6230
6230
|
default: _ref2 => {
|
|
@@ -6633,7 +6633,7 @@ const VCheckbox = genericComponent()({
|
|
|
6633
6633
|
const id = computed(() => props.id || `checkbox-${uid}`);
|
|
6634
6634
|
useRender(() => {
|
|
6635
6635
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
6636
|
-
const [inputProps, _1] =
|
|
6636
|
+
const [inputProps, _1] = VInput.filterProps(props);
|
|
6637
6637
|
const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
|
|
6638
6638
|
return createVNode(VInput, mergeProps({
|
|
6639
6639
|
"class": "v-checkbox"
|
|
@@ -8045,7 +8045,12 @@ function transformItems$1(props, items) {
|
|
|
8045
8045
|
function useItems(props) {
|
|
8046
8046
|
const items = computed(() => transformItems$1(props, props.items));
|
|
8047
8047
|
function transformIn(value) {
|
|
8048
|
-
return value.map(
|
|
8048
|
+
return value.map(v => {
|
|
8049
|
+
const existingItem = items.value.find(item => deepEqual(v, item.value));
|
|
8050
|
+
// Nullish existingItem means value is a custom input value from combobox
|
|
8051
|
+
// In this case, use transformItem to create an InternalItem based on value
|
|
8052
|
+
return existingItem ?? transformItem$1(props, v);
|
|
8053
|
+
});
|
|
8049
8054
|
}
|
|
8050
8055
|
function transformOut(value) {
|
|
8051
8056
|
return value.map(_ref => {
|
|
@@ -8723,7 +8728,7 @@ function staticLocationStrategy() {
|
|
|
8723
8728
|
}
|
|
8724
8729
|
|
|
8725
8730
|
/** Get size of element ignoring max-width/max-height */
|
|
8726
|
-
function getIntrinsicSize(el) {
|
|
8731
|
+
function getIntrinsicSize(el, isRtl) {
|
|
8727
8732
|
// const scrollables = new Map<Element, [number, number]>()
|
|
8728
8733
|
// el.querySelectorAll('*').forEach(el => {
|
|
8729
8734
|
// const x = el.scrollLeft
|
|
@@ -8740,7 +8745,11 @@ function getIntrinsicSize(el) {
|
|
|
8740
8745
|
|
|
8741
8746
|
/* eslint-disable-next-line sonarjs/prefer-immediate-return */
|
|
8742
8747
|
const contentBox = nullifyTransforms(el);
|
|
8743
|
-
|
|
8748
|
+
if (isRtl) {
|
|
8749
|
+
contentBox.x += parseFloat(el.style.right || 0);
|
|
8750
|
+
} else {
|
|
8751
|
+
contentBox.x -= parseFloat(el.style.left || 0);
|
|
8752
|
+
}
|
|
8744
8753
|
contentBox.y -= parseFloat(el.style.top || 0);
|
|
8745
8754
|
|
|
8746
8755
|
// el.style.maxWidth = initialMaxWidth
|
|
@@ -8821,7 +8830,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
8821
8830
|
});
|
|
8822
8831
|
if (!data.activatorEl.value || !data.contentEl.value) return;
|
|
8823
8832
|
const targetBox = data.activatorEl.value.getBoundingClientRect();
|
|
8824
|
-
const contentBox = getIntrinsicSize(data.contentEl.value);
|
|
8833
|
+
const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
|
|
8825
8834
|
const scrollParents = getScrollParents(data.contentEl.value);
|
|
8826
8835
|
const viewportMargin = 12;
|
|
8827
8836
|
if (!scrollParents.length) {
|
|
@@ -8997,7 +9006,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
8997
9006
|
transformOrigin: `${placement.origin.side} ${placement.origin.align}`,
|
|
8998
9007
|
// transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,
|
|
8999
9008
|
top: convertToUnit(pixelRound(y)),
|
|
9000
|
-
left: convertToUnit(pixelRound(x)),
|
|
9009
|
+
left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),
|
|
9010
|
+
right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,
|
|
9001
9011
|
minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),
|
|
9002
9012
|
maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),
|
|
9003
9013
|
maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))
|
|
@@ -9892,6 +9902,7 @@ const VSelect = genericComponent()({
|
|
|
9892
9902
|
})
|
|
9893
9903
|
},
|
|
9894
9904
|
emits: {
|
|
9905
|
+
'update:focused': focused => true,
|
|
9895
9906
|
'update:modelValue': val => true,
|
|
9896
9907
|
'update:menu': val => true
|
|
9897
9908
|
},
|
|
@@ -10008,6 +10019,9 @@ const VSelect = genericComponent()({
|
|
|
10008
10019
|
menu.value = false;
|
|
10009
10020
|
}
|
|
10010
10021
|
}
|
|
10022
|
+
function onFocusin(e) {
|
|
10023
|
+
isFocused.value = true;
|
|
10024
|
+
}
|
|
10011
10025
|
function onFocusout(e) {
|
|
10012
10026
|
if (e.relatedTarget == null) {
|
|
10013
10027
|
vTextFieldRef.value?.focus();
|
|
@@ -10062,6 +10076,7 @@ const VSelect = genericComponent()({
|
|
|
10062
10076
|
"selected": selected.value,
|
|
10063
10077
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
10064
10078
|
"onMousedown": e => e.preventDefault(),
|
|
10079
|
+
"onFocusin": onFocusin,
|
|
10065
10080
|
"onFocusout": onFocusout
|
|
10066
10081
|
}, {
|
|
10067
10082
|
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? createVNode(VListItem, {
|
|
@@ -10140,6 +10155,7 @@ const VSelect = genericComponent()({
|
|
|
10140
10155
|
});
|
|
10141
10156
|
});
|
|
10142
10157
|
return forwardRefs({
|
|
10158
|
+
isFocused,
|
|
10143
10159
|
menu,
|
|
10144
10160
|
select
|
|
10145
10161
|
}, vTextFieldRef);
|
|
@@ -10278,6 +10294,7 @@ const VAutocomplete = genericComponent()({
|
|
|
10278
10294
|
})
|
|
10279
10295
|
},
|
|
10280
10296
|
emits: {
|
|
10297
|
+
'update:focused': focused => true,
|
|
10281
10298
|
'update:search': val => true,
|
|
10282
10299
|
'update:modelValue': val => true,
|
|
10283
10300
|
'update:menu': val => true
|
|
@@ -10301,11 +10318,17 @@ const VAutocomplete = genericComponent()({
|
|
|
10301
10318
|
_menu.value = v;
|
|
10302
10319
|
}
|
|
10303
10320
|
});
|
|
10321
|
+
const selectionIndex = ref(-1);
|
|
10322
|
+
const color = computed(() => vTextFieldRef.value?.color);
|
|
10304
10323
|
const {
|
|
10305
10324
|
items,
|
|
10306
10325
|
transformIn,
|
|
10307
10326
|
transformOut
|
|
10308
10327
|
} = useItems(props);
|
|
10328
|
+
const {
|
|
10329
|
+
textColorClasses,
|
|
10330
|
+
textColorStyles
|
|
10331
|
+
} = useTextColor(color);
|
|
10309
10332
|
const search = useProxiedModel(props, 'search', '');
|
|
10310
10333
|
const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
|
|
10311
10334
|
const transformed = transformOut(v);
|
|
@@ -10328,6 +10351,7 @@ const VAutocomplete = genericComponent()({
|
|
|
10328
10351
|
return filteredItems.value;
|
|
10329
10352
|
});
|
|
10330
10353
|
const selected = computed(() => selections.value.map(selection => selection.props.value));
|
|
10354
|
+
const selection = computed(() => selections.value[selectionIndex.value]);
|
|
10331
10355
|
const listRef = ref();
|
|
10332
10356
|
function onClear(e) {
|
|
10333
10357
|
if (props.openOnClear) {
|
|
@@ -10341,7 +10365,9 @@ const VAutocomplete = genericComponent()({
|
|
|
10341
10365
|
}
|
|
10342
10366
|
function onKeydown(e) {
|
|
10343
10367
|
if (props.readonly || form?.isReadonly.value) return;
|
|
10344
|
-
|
|
10368
|
+
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
10369
|
+
const length = selected.value.length;
|
|
10370
|
+
if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
10345
10371
|
e.preventDefault();
|
|
10346
10372
|
}
|
|
10347
10373
|
if (['Enter', 'ArrowDown'].includes(e.key)) {
|
|
@@ -10358,6 +10384,38 @@ const VAutocomplete = genericComponent()({
|
|
|
10358
10384
|
} else if (e.key === 'ArrowUp') {
|
|
10359
10385
|
listRef.value?.focus('prev');
|
|
10360
10386
|
}
|
|
10387
|
+
if (!props.multiple) return;
|
|
10388
|
+
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
10389
|
+
if (selectionIndex.value < 0) {
|
|
10390
|
+
if (e.key === 'Backspace' && !search.value) {
|
|
10391
|
+
selectionIndex.value = length - 1;
|
|
10392
|
+
}
|
|
10393
|
+
return;
|
|
10394
|
+
}
|
|
10395
|
+
const originalSelectionIndex = selectionIndex.value;
|
|
10396
|
+
if (selection.value) select(selection.value);
|
|
10397
|
+
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
10398
|
+
}
|
|
10399
|
+
if (e.key === 'ArrowLeft') {
|
|
10400
|
+
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
10401
|
+
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
10402
|
+
if (selections.value[prev]) {
|
|
10403
|
+
selectionIndex.value = prev;
|
|
10404
|
+
} else {
|
|
10405
|
+
selectionIndex.value = -1;
|
|
10406
|
+
vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length);
|
|
10407
|
+
}
|
|
10408
|
+
}
|
|
10409
|
+
if (e.key === 'ArrowRight') {
|
|
10410
|
+
if (selectionIndex.value < 0) return;
|
|
10411
|
+
const next = selectionIndex.value + 1;
|
|
10412
|
+
if (selections.value[next]) {
|
|
10413
|
+
selectionIndex.value = next;
|
|
10414
|
+
} else {
|
|
10415
|
+
selectionIndex.value = -1;
|
|
10416
|
+
vTextFieldRef.value.setSelectionRange(0, 0);
|
|
10417
|
+
}
|
|
10418
|
+
}
|
|
10361
10419
|
}
|
|
10362
10420
|
function onInput(e) {
|
|
10363
10421
|
search.value = e.target.value;
|
|
@@ -10379,7 +10437,6 @@ const VAutocomplete = genericComponent()({
|
|
|
10379
10437
|
const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
|
|
10380
10438
|
if (index === -1) {
|
|
10381
10439
|
model.value = [...model.value, item];
|
|
10382
|
-
search.value = '';
|
|
10383
10440
|
} else {
|
|
10384
10441
|
const value = [...model.value];
|
|
10385
10442
|
value.splice(index, 1);
|
|
@@ -10424,12 +10481,15 @@ const VAutocomplete = genericComponent()({
|
|
|
10424
10481
|
"onUpdate:modelValue": v => {
|
|
10425
10482
|
if (v == null) model.value = [];
|
|
10426
10483
|
},
|
|
10484
|
+
"focused": isFocused.value,
|
|
10485
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
|
10427
10486
|
"validationValue": model.externalValue,
|
|
10428
10487
|
"dirty": isDirty,
|
|
10429
10488
|
"onInput": onInput,
|
|
10430
10489
|
"class": ['v-autocomplete', {
|
|
10431
10490
|
'v-autocomplete--active-menu': menu.value,
|
|
10432
10491
|
'v-autocomplete--chips': !!props.chips,
|
|
10492
|
+
'v-autocomplete--selecting-index': selectionIndex.value > -1,
|
|
10433
10493
|
[`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
|
|
10434
10494
|
'v-autocomplete--selection-slot': !!slots.selection
|
|
10435
10495
|
}],
|
|
@@ -10438,8 +10498,6 @@ const VAutocomplete = genericComponent()({
|
|
|
10438
10498
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
10439
10499
|
"onClick:clear": onClear,
|
|
10440
10500
|
"onMousedown:control": onMousedownControl,
|
|
10441
|
-
"onFocus": () => isFocused.value = true,
|
|
10442
|
-
"onBlur": () => isFocused.value = false,
|
|
10443
10501
|
"onKeydown": onKeydown
|
|
10444
10502
|
}), {
|
|
10445
10503
|
...slots,
|
|
@@ -10504,7 +10562,8 @@ const VAutocomplete = genericComponent()({
|
|
|
10504
10562
|
};
|
|
10505
10563
|
return createVNode("div", {
|
|
10506
10564
|
"key": item.value,
|
|
10507
|
-
"class":
|
|
10565
|
+
"class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
|
|
10566
|
+
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
10508
10567
|
}, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
|
|
10509
10568
|
"key": "chip",
|
|
10510
10569
|
"closable": props.closableChips,
|
|
@@ -12899,7 +12958,7 @@ const VSlider = genericComponent()({
|
|
|
12899
12958
|
} = useFocus(props);
|
|
12900
12959
|
const trackStop = computed(() => position(model.value));
|
|
12901
12960
|
useRender(() => {
|
|
12902
|
-
const [inputProps, _] =
|
|
12961
|
+
const [inputProps, _] = VInput.filterProps(props);
|
|
12903
12962
|
const hasPrepend = !!(props.label || slots.label || slots.prepend);
|
|
12904
12963
|
return createVNode(VInput, mergeProps({
|
|
12905
12964
|
"class": ['v-slider', {
|
|
@@ -13563,6 +13622,7 @@ const VCombobox = genericComponent()({
|
|
|
13563
13622
|
})
|
|
13564
13623
|
},
|
|
13565
13624
|
emits: {
|
|
13625
|
+
'update:focused': focused => true,
|
|
13566
13626
|
'update:modelValue': val => true,
|
|
13567
13627
|
'update:search': val => true,
|
|
13568
13628
|
'update:menu': val => true
|
|
@@ -13700,8 +13760,9 @@ const VCombobox = genericComponent()({
|
|
|
13700
13760
|
}
|
|
13701
13761
|
return;
|
|
13702
13762
|
}
|
|
13703
|
-
|
|
13704
|
-
|
|
13763
|
+
const originalSelectionIndex = selectionIndex.value;
|
|
13764
|
+
if (selection.value) select(selection.value);
|
|
13765
|
+
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
13705
13766
|
}
|
|
13706
13767
|
if (e.key === 'ArrowLeft') {
|
|
13707
13768
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
@@ -13786,6 +13847,8 @@ const VCombobox = genericComponent()({
|
|
|
13786
13847
|
"onUpdate:modelValue": [$event => search.value = $event, v => {
|
|
13787
13848
|
if (v == null) model.value = [];
|
|
13788
13849
|
}],
|
|
13850
|
+
"focused": isFocused.value,
|
|
13851
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
|
13789
13852
|
"validationValue": model.externalValue,
|
|
13790
13853
|
"dirty": isDirty,
|
|
13791
13854
|
"class": ['v-combobox', {
|
|
@@ -13799,8 +13862,6 @@ const VCombobox = genericComponent()({
|
|
|
13799
13862
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
13800
13863
|
"onClick:clear": onClear,
|
|
13801
13864
|
"onMousedown:control": onMousedownControl,
|
|
13802
|
-
"onFocus": () => isFocused.value = true,
|
|
13803
|
-
"onBlur": () => isFocused.value = false,
|
|
13804
13865
|
"onKeydown": onKeydown
|
|
13805
13866
|
}), {
|
|
13806
13867
|
...slots,
|
|
@@ -14252,8 +14313,6 @@ const VFileInput = genericComponent()({
|
|
|
14252
14313
|
default: '$vuetify.fileInput.counter'
|
|
14253
14314
|
},
|
|
14254
14315
|
multiple: Boolean,
|
|
14255
|
-
hint: String,
|
|
14256
|
-
persistentHint: Boolean,
|
|
14257
14316
|
showSize: {
|
|
14258
14317
|
type: [Boolean, Number],
|
|
14259
14318
|
default: false,
|
|
@@ -14278,6 +14337,7 @@ const VFileInput = genericComponent()({
|
|
|
14278
14337
|
emits: {
|
|
14279
14338
|
'click:control': e => true,
|
|
14280
14339
|
'mousedown:control': e => true,
|
|
14340
|
+
'update:focused': focused => true,
|
|
14281
14341
|
'update:modelValue': files => true
|
|
14282
14342
|
},
|
|
14283
14343
|
setup(props, _ref) {
|
|
@@ -14290,6 +14350,11 @@ const VFileInput = genericComponent()({
|
|
|
14290
14350
|
t
|
|
14291
14351
|
} = useLocale();
|
|
14292
14352
|
const model = useProxiedModel(props, 'modelValue');
|
|
14353
|
+
const {
|
|
14354
|
+
isFocused,
|
|
14355
|
+
focus,
|
|
14356
|
+
blur
|
|
14357
|
+
} = useFocus(props);
|
|
14293
14358
|
const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined);
|
|
14294
14359
|
const totalBytes = computed(() => (model.value ?? []).reduce((bytes, _ref2) => {
|
|
14295
14360
|
let {
|
|
@@ -14311,21 +14376,14 @@ const VFileInput = genericComponent()({
|
|
|
14311
14376
|
});
|
|
14312
14377
|
const vInputRef = ref();
|
|
14313
14378
|
const vFieldRef = ref();
|
|
14314
|
-
const isFocused = ref(false);
|
|
14315
14379
|
const inputRef = ref();
|
|
14316
|
-
const messages = computed(() => {
|
|
14317
|
-
return props.messages.length ? props.messages : props.persistentHint ? props.hint : '';
|
|
14318
|
-
});
|
|
14319
14380
|
function onFocus() {
|
|
14320
14381
|
if (inputRef.value !== document.activeElement) {
|
|
14321
14382
|
inputRef.value?.focus();
|
|
14322
14383
|
}
|
|
14323
|
-
if (!isFocused.value)
|
|
14324
|
-
isFocused.value = true;
|
|
14325
|
-
}
|
|
14384
|
+
if (!isFocused.value) focus();
|
|
14326
14385
|
}
|
|
14327
14386
|
function onClickPrepend(e) {
|
|
14328
|
-
callEvent(props['onClick:prepend'], e);
|
|
14329
14387
|
onControlClick(e);
|
|
14330
14388
|
}
|
|
14331
14389
|
function onControlMousedown(e) {
|
|
@@ -14356,18 +14414,16 @@ const VFileInput = genericComponent()({
|
|
|
14356
14414
|
const [{
|
|
14357
14415
|
modelValue: _,
|
|
14358
14416
|
...inputProps
|
|
14359
|
-
}] =
|
|
14417
|
+
}] = VInput.filterProps(props);
|
|
14360
14418
|
const [fieldProps] = filterFieldProps(props);
|
|
14361
14419
|
return createVNode(VInput, mergeProps({
|
|
14362
14420
|
"ref": vInputRef,
|
|
14363
14421
|
"modelValue": model.value,
|
|
14364
14422
|
"onUpdate:modelValue": $event => model.value = $event,
|
|
14365
14423
|
"class": "v-file-input",
|
|
14366
|
-
"onClick:prepend": onClickPrepend
|
|
14367
|
-
"onClick:append": props['onClick:append']
|
|
14424
|
+
"onClick:prepend": onClickPrepend
|
|
14368
14425
|
}, rootAttrs, inputProps, {
|
|
14369
|
-
"focused": isFocused.value
|
|
14370
|
-
"messages": messages.value
|
|
14426
|
+
"focused": isFocused.value
|
|
14371
14427
|
}), {
|
|
14372
14428
|
...slots,
|
|
14373
14429
|
default: _ref3 => {
|
|
@@ -14419,7 +14475,7 @@ const VFileInput = genericComponent()({
|
|
|
14419
14475
|
model.value = [...(target.files ?? [])];
|
|
14420
14476
|
},
|
|
14421
14477
|
"onFocus": onFocus,
|
|
14422
|
-
"onBlur":
|
|
14478
|
+
"onBlur": blur
|
|
14423
14479
|
}, slotProps, inputAttrs), null), createVNode("div", {
|
|
14424
14480
|
"class": fieldClass
|
|
14425
14481
|
}, [!!model.value?.length && (slots.selection ? slots.selection({
|
|
@@ -16114,7 +16170,7 @@ const VRadioGroup = genericComponent()({
|
|
|
16114
16170
|
const model = useProxiedModel(props, 'modelValue');
|
|
16115
16171
|
useRender(() => {
|
|
16116
16172
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
16117
|
-
const [inputProps, _1] =
|
|
16173
|
+
const [inputProps, _1] = VInput.filterProps(props);
|
|
16118
16174
|
const [controlProps, _2] = VSelectionControl.filterProps(props);
|
|
16119
16175
|
const label = slots.label ? slots.label({
|
|
16120
16176
|
label: props.label,
|
|
@@ -16242,7 +16298,7 @@ const VRangeSlider = genericComponent()({
|
|
|
16242
16298
|
const trackStart = computed(() => position(model.value[0]));
|
|
16243
16299
|
const trackStop = computed(() => position(model.value[1]));
|
|
16244
16300
|
useRender(() => {
|
|
16245
|
-
const [inputProps, _] =
|
|
16301
|
+
const [inputProps, _] = VInput.filterProps(props);
|
|
16246
16302
|
const hasPrepend = !!(props.label || slots.label || slots.prepend);
|
|
16247
16303
|
return createVNode(VInput, mergeProps({
|
|
16248
16304
|
"class": ['v-slider', 'v-range-slider', {
|
|
@@ -17116,10 +17172,12 @@ const VSwitch = genericComponent()({
|
|
|
17116
17172
|
}
|
|
17117
17173
|
useRender(() => {
|
|
17118
17174
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
17119
|
-
const [inputProps, _1] =
|
|
17175
|
+
const [inputProps, _1] = VInput.filterProps(props);
|
|
17120
17176
|
const [controlProps, _2] = VSelectionControl.filterProps(props);
|
|
17121
17177
|
const control = ref();
|
|
17122
|
-
function onClick() {
|
|
17178
|
+
function onClick(e) {
|
|
17179
|
+
e.stopPropagation();
|
|
17180
|
+
e.preventDefault();
|
|
17123
17181
|
control.value?.input?.click();
|
|
17124
17182
|
}
|
|
17125
17183
|
return createVNode(VInput, mergeProps({
|
|
@@ -17481,8 +17539,6 @@ const VTextarea = genericComponent()({
|
|
|
17481
17539
|
autofocus: Boolean,
|
|
17482
17540
|
counter: [Boolean, Number, String],
|
|
17483
17541
|
counterValue: Function,
|
|
17484
|
-
hint: String,
|
|
17485
|
-
persistentHint: Boolean,
|
|
17486
17542
|
prefix: String,
|
|
17487
17543
|
placeholder: String,
|
|
17488
17544
|
persistentPlaceholder: Boolean,
|
|
@@ -17537,9 +17593,6 @@ const VTextarea = genericComponent()({
|
|
|
17537
17593
|
const controlHeight = ref('');
|
|
17538
17594
|
const textareaRef = ref();
|
|
17539
17595
|
const isActive = computed(() => isFocused.value || props.persistentPlaceholder);
|
|
17540
|
-
const messages = computed(() => {
|
|
17541
|
-
return props.messages.length ? props.messages : isFocused.value || props.persistentHint ? props.hint : '';
|
|
17542
|
-
});
|
|
17543
17596
|
function onFocus() {
|
|
17544
17597
|
if (textareaRef.value !== document.activeElement) {
|
|
17545
17598
|
textareaRef.value?.focus();
|
|
@@ -17611,7 +17664,7 @@ const VTextarea = genericComponent()({
|
|
|
17611
17664
|
const [{
|
|
17612
17665
|
modelValue: _,
|
|
17613
17666
|
...inputProps
|
|
17614
|
-
}] =
|
|
17667
|
+
}] = VInput.filterProps(props);
|
|
17615
17668
|
const [fieldProps] = filterFieldProps(props);
|
|
17616
17669
|
return createVNode(VInput, mergeProps({
|
|
17617
17670
|
"ref": vInputRef,
|
|
@@ -17625,12 +17678,9 @@ const VTextarea = genericComponent()({
|
|
|
17625
17678
|
'v-textarea--auto-grow': props.autoGrow,
|
|
17626
17679
|
'v-textarea--no-resize': props.noResize || props.autoGrow,
|
|
17627
17680
|
'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
|
|
17628
|
-
}]
|
|
17629
|
-
"onClick:prepend": props['onClick:prepend'],
|
|
17630
|
-
"onClick:append": props['onClick:append']
|
|
17681
|
+
}]
|
|
17631
17682
|
}, rootAttrs, inputProps, {
|
|
17632
|
-
"focused": isFocused.value
|
|
17633
|
-
"messages": messages.value
|
|
17683
|
+
"focused": isFocused.value
|
|
17634
17684
|
}), {
|
|
17635
17685
|
...slots,
|
|
17636
17686
|
default: _ref2 => {
|
|
@@ -18403,7 +18453,7 @@ function createVuetify$1() {
|
|
|
18403
18453
|
locale
|
|
18404
18454
|
};
|
|
18405
18455
|
}
|
|
18406
|
-
const version$1 = "3.1.
|
|
18456
|
+
const version$1 = "3.1.15";
|
|
18407
18457
|
createVuetify$1.version = version$1;
|
|
18408
18458
|
|
|
18409
18459
|
// Vue's inject() can only be used in setup
|
|
@@ -18423,7 +18473,7 @@ const createVuetify = function () {
|
|
|
18423
18473
|
...options
|
|
18424
18474
|
});
|
|
18425
18475
|
};
|
|
18426
|
-
const version = "3.1.
|
|
18476
|
+
const version = "3.1.15";
|
|
18427
18477
|
createVuetify.version = version;
|
|
18428
18478
|
|
|
18429
18479
|
export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
|