vuetify 3.1.14 → 3.1.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 +193 -141
- package/dist/json/importMap.json +8 -8
- package/dist/json/tags.json +13 -0
- package/dist/json/web-types.json +513 -282
- package/dist/vuetify-labs.css +465 -457
- package/dist/vuetify-labs.d.ts +521 -163
- package/dist/vuetify-labs.esm.js +272 -179
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +272 -179
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +17 -9
- package/dist/vuetify.d.ts +470 -145
- package/dist/vuetify.esm.js +178 -106
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +178 -106
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +638 -624
- 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/VBreadcrumbs/VBreadcrumbs.mjs +31 -16
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/index.d.ts +3 -3
- 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/VDialog/VDialog.mjs +2 -2
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VField/VField.css +0 -1
- package/lib/components/VField/VField.sass +0 -1
- 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/VList/VList.mjs +3 -22
- package/lib/components/VList/VList.mjs.map +1 -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/VSlideGroup/VSlideGroup.mjs +2 -2
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- 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 +468 -143
- 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 +2 -2
- package/lib/labs/VDataTable/VDataTable.mjs +3 -3
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
- package/lib/labs/VDataTable/VDataTableRow.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 +3 -2
- 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/lib/util/helpers.mjs +26 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +3 -3
package/dist/vuetify-labs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.1.
|
|
2
|
+
* Vuetify v3.1.16
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -360,6 +360,32 @@
|
|
|
360
360
|
handler(...args);
|
|
361
361
|
}
|
|
362
362
|
}
|
|
363
|
+
function focusableChildren(el) {
|
|
364
|
+
const targets = ['button', '[href]', 'input:not([type="hidden"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"]):not([disabled])`).join(', ');
|
|
365
|
+
return [...el.querySelectorAll(targets)];
|
|
366
|
+
}
|
|
367
|
+
function focusChild(el, location) {
|
|
368
|
+
const focusable = focusableChildren(el);
|
|
369
|
+
const idx = focusable.indexOf(document.activeElement);
|
|
370
|
+
if (!location) {
|
|
371
|
+
if (!el.contains(document.activeElement)) {
|
|
372
|
+
focusable[0]?.focus();
|
|
373
|
+
}
|
|
374
|
+
} else if (location === 'first') {
|
|
375
|
+
focusable[0]?.focus();
|
|
376
|
+
} else if (location === 'last') {
|
|
377
|
+
focusable.at(-1)?.focus();
|
|
378
|
+
} else {
|
|
379
|
+
let _el;
|
|
380
|
+
let idxx = idx;
|
|
381
|
+
const inc = location === 'next' ? 1 : -1;
|
|
382
|
+
do {
|
|
383
|
+
idxx += inc;
|
|
384
|
+
_el = focusable[idxx];
|
|
385
|
+
} while ((!_el || _el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
|
|
386
|
+
if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
|
|
387
|
+
}
|
|
388
|
+
}
|
|
363
389
|
|
|
364
390
|
const block = ['top', 'bottom'];
|
|
365
391
|
const inline = ['start', 'end', 'left', 'right'];
|
|
@@ -5297,7 +5323,8 @@
|
|
|
5297
5323
|
|
|
5298
5324
|
// Composables
|
|
5299
5325
|
const makeFocusProps = propsFactory({
|
|
5300
|
-
focused: Boolean
|
|
5326
|
+
focused: Boolean,
|
|
5327
|
+
'onUpdate:focused': EventProp()
|
|
5301
5328
|
}, 'focus');
|
|
5302
5329
|
function useFocus(props) {
|
|
5303
5330
|
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
|
|
@@ -5886,6 +5913,8 @@
|
|
|
5886
5913
|
appendIcon: IconValue,
|
|
5887
5914
|
prependIcon: IconValue,
|
|
5888
5915
|
hideDetails: [Boolean, String],
|
|
5916
|
+
hint: String,
|
|
5917
|
+
persistentHint: Boolean,
|
|
5889
5918
|
messages: {
|
|
5890
5919
|
type: [Array, String],
|
|
5891
5920
|
default: () => []
|
|
@@ -5949,10 +5978,19 @@
|
|
|
5949
5978
|
resetValidation,
|
|
5950
5979
|
validate
|
|
5951
5980
|
}));
|
|
5981
|
+
const messages = vue.computed(() => {
|
|
5982
|
+
if (errorMessages.value.length > 0) {
|
|
5983
|
+
return errorMessages.value;
|
|
5984
|
+
} else if (props.hint && (props.persistentHint || props.focused)) {
|
|
5985
|
+
return props.hint;
|
|
5986
|
+
} else {
|
|
5987
|
+
return props.messages;
|
|
5988
|
+
}
|
|
5989
|
+
});
|
|
5952
5990
|
useRender(() => {
|
|
5953
5991
|
const hasPrepend = !!(slots.prepend || props.prependIcon);
|
|
5954
5992
|
const hasAppend = !!(slots.append || props.appendIcon);
|
|
5955
|
-
const hasMessages =
|
|
5993
|
+
const hasMessages = messages.value.length > 0;
|
|
5956
5994
|
const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
|
|
5957
5995
|
return vue.createVNode("div", {
|
|
5958
5996
|
"class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
|
|
@@ -5975,7 +6013,7 @@
|
|
|
5975
6013
|
}, [vue.createVNode(VMessages, {
|
|
5976
6014
|
"id": messagesId.value,
|
|
5977
6015
|
"active": hasMessages,
|
|
5978
|
-
"messages":
|
|
6016
|
+
"messages": messages.value
|
|
5979
6017
|
}, {
|
|
5980
6018
|
message: slots.message
|
|
5981
6019
|
}), slots.details?.(slotProps.value)])]);
|
|
@@ -5987,10 +6025,6 @@
|
|
|
5987
6025
|
};
|
|
5988
6026
|
}
|
|
5989
6027
|
});
|
|
5990
|
-
function filterInputProps(props) {
|
|
5991
|
-
const keys = Object.keys(VInput.props).filter(k => !isOn(k));
|
|
5992
|
-
return pick(props, keys);
|
|
5993
|
-
}
|
|
5994
6028
|
|
|
5995
6029
|
const VCounter = genericComponent()({
|
|
5996
6030
|
name: 'VCounter',
|
|
@@ -6116,8 +6150,6 @@
|
|
|
6116
6150
|
autofocus: Boolean,
|
|
6117
6151
|
counter: [Boolean, Number, String],
|
|
6118
6152
|
counterValue: Function,
|
|
6119
|
-
hint: String,
|
|
6120
|
-
persistentHint: Boolean,
|
|
6121
6153
|
prefix: String,
|
|
6122
6154
|
placeholder: String,
|
|
6123
6155
|
persistentPlaceholder: Boolean,
|
|
@@ -6172,9 +6204,6 @@
|
|
|
6172
6204
|
const vFieldRef = vue.ref();
|
|
6173
6205
|
const inputRef = vue.ref();
|
|
6174
6206
|
const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
|
|
6175
|
-
const messages = vue.computed(() => {
|
|
6176
|
-
return props.messages.length ? props.messages : isFocused.value || props.persistentHint ? props.hint : '';
|
|
6177
|
-
});
|
|
6178
6207
|
function onFocus() {
|
|
6179
6208
|
if (inputRef.value !== document.activeElement) {
|
|
6180
6209
|
inputRef.value?.focus();
|
|
@@ -6217,7 +6246,7 @@
|
|
|
6217
6246
|
const [{
|
|
6218
6247
|
modelValue: _,
|
|
6219
6248
|
...inputProps
|
|
6220
|
-
}] =
|
|
6249
|
+
}] = VInput.filterProps(props);
|
|
6221
6250
|
const [fieldProps] = filterFieldProps(props);
|
|
6222
6251
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
6223
6252
|
"ref": vInputRef,
|
|
@@ -6227,12 +6256,9 @@
|
|
|
6227
6256
|
'v-text-field--prefixed': props.prefix,
|
|
6228
6257
|
'v-text-field--suffixed': props.suffix,
|
|
6229
6258
|
'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
|
|
6230
|
-
}]
|
|
6231
|
-
"onClick:prepend": props['onClick:prepend'],
|
|
6232
|
-
"onClick:append": props['onClick:append']
|
|
6259
|
+
}]
|
|
6233
6260
|
}, rootAttrs, inputProps, {
|
|
6234
|
-
"focused": isFocused.value
|
|
6235
|
-
"messages": messages.value
|
|
6261
|
+
"focused": isFocused.value
|
|
6236
6262
|
}), {
|
|
6237
6263
|
...slots,
|
|
6238
6264
|
default: _ref2 => {
|
|
@@ -6641,7 +6667,7 @@
|
|
|
6641
6667
|
const id = vue.computed(() => props.id || `checkbox-${uid}`);
|
|
6642
6668
|
useRender(() => {
|
|
6643
6669
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
6644
|
-
const [inputProps, _1] =
|
|
6670
|
+
const [inputProps, _1] = VInput.filterProps(props);
|
|
6645
6671
|
const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
|
|
6646
6672
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
6647
6673
|
"class": "v-checkbox"
|
|
@@ -8053,7 +8079,12 @@
|
|
|
8053
8079
|
function useItems(props) {
|
|
8054
8080
|
const items = vue.computed(() => transformItems$1(props, props.items));
|
|
8055
8081
|
function transformIn(value) {
|
|
8056
|
-
return value.map(
|
|
8082
|
+
return value.map(v => {
|
|
8083
|
+
const existingItem = items.value.find(item => deepEqual(v, item.value));
|
|
8084
|
+
// Nullish existingItem means value is a custom input value from combobox
|
|
8085
|
+
// In this case, use transformItem to create an InternalItem based on value
|
|
8086
|
+
return existingItem ?? transformItem$1(props, v);
|
|
8087
|
+
});
|
|
8057
8088
|
}
|
|
8058
8089
|
function transformOut(value) {
|
|
8059
8090
|
return value.map(_ref => {
|
|
@@ -8226,27 +8257,8 @@
|
|
|
8226
8257
|
e.preventDefault();
|
|
8227
8258
|
}
|
|
8228
8259
|
function focus(location) {
|
|
8229
|
-
if (
|
|
8230
|
-
|
|
8231
|
-
const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
|
|
8232
|
-
const idx = focusable.indexOf(document.activeElement);
|
|
8233
|
-
if (!location) {
|
|
8234
|
-
if (!contentRef.value.contains(document.activeElement)) {
|
|
8235
|
-
focusable[0]?.focus();
|
|
8236
|
-
}
|
|
8237
|
-
} else if (location === 'first') {
|
|
8238
|
-
focusable[0]?.focus();
|
|
8239
|
-
} else if (location === 'last') {
|
|
8240
|
-
focusable.at(-1)?.focus();
|
|
8241
|
-
} else {
|
|
8242
|
-
let el;
|
|
8243
|
-
let idxx = idx;
|
|
8244
|
-
const inc = location === 'next' ? 1 : -1;
|
|
8245
|
-
do {
|
|
8246
|
-
idxx += inc;
|
|
8247
|
-
el = focusable[idxx];
|
|
8248
|
-
} while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0);
|
|
8249
|
-
if (el) el.focus();else focus(location === 'next' ? 'first' : 'last');
|
|
8260
|
+
if (contentRef.value) {
|
|
8261
|
+
return focusChild(contentRef.value, location);
|
|
8250
8262
|
}
|
|
8251
8263
|
}
|
|
8252
8264
|
useRender(() => {
|
|
@@ -8731,7 +8743,7 @@
|
|
|
8731
8743
|
}
|
|
8732
8744
|
|
|
8733
8745
|
/** Get size of element ignoring max-width/max-height */
|
|
8734
|
-
function getIntrinsicSize(el) {
|
|
8746
|
+
function getIntrinsicSize(el, isRtl) {
|
|
8735
8747
|
// const scrollables = new Map<Element, [number, number]>()
|
|
8736
8748
|
// el.querySelectorAll('*').forEach(el => {
|
|
8737
8749
|
// const x = el.scrollLeft
|
|
@@ -8748,7 +8760,11 @@
|
|
|
8748
8760
|
|
|
8749
8761
|
/* eslint-disable-next-line sonarjs/prefer-immediate-return */
|
|
8750
8762
|
const contentBox = nullifyTransforms(el);
|
|
8751
|
-
|
|
8763
|
+
if (isRtl) {
|
|
8764
|
+
contentBox.x += parseFloat(el.style.right || 0);
|
|
8765
|
+
} else {
|
|
8766
|
+
contentBox.x -= parseFloat(el.style.left || 0);
|
|
8767
|
+
}
|
|
8752
8768
|
contentBox.y -= parseFloat(el.style.top || 0);
|
|
8753
8769
|
|
|
8754
8770
|
// el.style.maxWidth = initialMaxWidth
|
|
@@ -8829,7 +8845,7 @@
|
|
|
8829
8845
|
});
|
|
8830
8846
|
if (!data.activatorEl.value || !data.contentEl.value) return;
|
|
8831
8847
|
const targetBox = data.activatorEl.value.getBoundingClientRect();
|
|
8832
|
-
const contentBox = getIntrinsicSize(data.contentEl.value);
|
|
8848
|
+
const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value);
|
|
8833
8849
|
const scrollParents = getScrollParents(data.contentEl.value);
|
|
8834
8850
|
const viewportMargin = 12;
|
|
8835
8851
|
if (!scrollParents.length) {
|
|
@@ -9005,7 +9021,8 @@
|
|
|
9005
9021
|
transformOrigin: `${placement.origin.side} ${placement.origin.align}`,
|
|
9006
9022
|
// transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,
|
|
9007
9023
|
top: convertToUnit(pixelRound(y)),
|
|
9008
|
-
left: convertToUnit(pixelRound(x)),
|
|
9024
|
+
left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),
|
|
9025
|
+
right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,
|
|
9009
9026
|
minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),
|
|
9010
9027
|
maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),
|
|
9011
9028
|
maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value)))
|
|
@@ -9900,6 +9917,7 @@
|
|
|
9900
9917
|
})
|
|
9901
9918
|
},
|
|
9902
9919
|
emits: {
|
|
9920
|
+
'update:focused': focused => true,
|
|
9903
9921
|
'update:modelValue': val => true,
|
|
9904
9922
|
'update:menu': val => true
|
|
9905
9923
|
},
|
|
@@ -10016,6 +10034,9 @@
|
|
|
10016
10034
|
menu.value = false;
|
|
10017
10035
|
}
|
|
10018
10036
|
}
|
|
10037
|
+
function onFocusin(e) {
|
|
10038
|
+
isFocused.value = true;
|
|
10039
|
+
}
|
|
10019
10040
|
function onFocusout(e) {
|
|
10020
10041
|
if (e.relatedTarget == null) {
|
|
10021
10042
|
vTextFieldRef.value?.focus();
|
|
@@ -10070,6 +10091,7 @@
|
|
|
10070
10091
|
"selected": selected.value,
|
|
10071
10092
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
10072
10093
|
"onMousedown": e => e.preventDefault(),
|
|
10094
|
+
"onFocusin": onFocusin,
|
|
10073
10095
|
"onFocusout": onFocusout
|
|
10074
10096
|
}, {
|
|
10075
10097
|
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
@@ -10148,6 +10170,7 @@
|
|
|
10148
10170
|
});
|
|
10149
10171
|
});
|
|
10150
10172
|
return forwardRefs({
|
|
10173
|
+
isFocused,
|
|
10151
10174
|
menu,
|
|
10152
10175
|
select
|
|
10153
10176
|
}, vTextFieldRef);
|
|
@@ -10286,6 +10309,7 @@
|
|
|
10286
10309
|
})
|
|
10287
10310
|
},
|
|
10288
10311
|
emits: {
|
|
10312
|
+
'update:focused': focused => true,
|
|
10289
10313
|
'update:search': val => true,
|
|
10290
10314
|
'update:modelValue': val => true,
|
|
10291
10315
|
'update:menu': val => true
|
|
@@ -10309,11 +10333,17 @@
|
|
|
10309
10333
|
_menu.value = v;
|
|
10310
10334
|
}
|
|
10311
10335
|
});
|
|
10336
|
+
const selectionIndex = vue.ref(-1);
|
|
10337
|
+
const color = vue.computed(() => vTextFieldRef.value?.color);
|
|
10312
10338
|
const {
|
|
10313
10339
|
items,
|
|
10314
10340
|
transformIn,
|
|
10315
10341
|
transformOut
|
|
10316
10342
|
} = useItems(props);
|
|
10343
|
+
const {
|
|
10344
|
+
textColorClasses,
|
|
10345
|
+
textColorStyles
|
|
10346
|
+
} = useTextColor(color);
|
|
10317
10347
|
const search = useProxiedModel(props, 'search', '');
|
|
10318
10348
|
const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
|
|
10319
10349
|
const transformed = transformOut(v);
|
|
@@ -10336,6 +10366,7 @@
|
|
|
10336
10366
|
return filteredItems.value;
|
|
10337
10367
|
});
|
|
10338
10368
|
const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
|
|
10369
|
+
const selection = vue.computed(() => selections.value[selectionIndex.value]);
|
|
10339
10370
|
const listRef = vue.ref();
|
|
10340
10371
|
function onClear(e) {
|
|
10341
10372
|
if (props.openOnClear) {
|
|
@@ -10349,7 +10380,9 @@
|
|
|
10349
10380
|
}
|
|
10350
10381
|
function onKeydown(e) {
|
|
10351
10382
|
if (props.readonly || form?.isReadonly.value) return;
|
|
10352
|
-
|
|
10383
|
+
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
10384
|
+
const length = selected.value.length;
|
|
10385
|
+
if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
10353
10386
|
e.preventDefault();
|
|
10354
10387
|
}
|
|
10355
10388
|
if (['Enter', 'ArrowDown'].includes(e.key)) {
|
|
@@ -10366,6 +10399,38 @@
|
|
|
10366
10399
|
} else if (e.key === 'ArrowUp') {
|
|
10367
10400
|
listRef.value?.focus('prev');
|
|
10368
10401
|
}
|
|
10402
|
+
if (!props.multiple) return;
|
|
10403
|
+
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
10404
|
+
if (selectionIndex.value < 0) {
|
|
10405
|
+
if (e.key === 'Backspace' && !search.value) {
|
|
10406
|
+
selectionIndex.value = length - 1;
|
|
10407
|
+
}
|
|
10408
|
+
return;
|
|
10409
|
+
}
|
|
10410
|
+
const originalSelectionIndex = selectionIndex.value;
|
|
10411
|
+
if (selection.value) select(selection.value);
|
|
10412
|
+
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
10413
|
+
}
|
|
10414
|
+
if (e.key === 'ArrowLeft') {
|
|
10415
|
+
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
10416
|
+
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
10417
|
+
if (selections.value[prev]) {
|
|
10418
|
+
selectionIndex.value = prev;
|
|
10419
|
+
} else {
|
|
10420
|
+
selectionIndex.value = -1;
|
|
10421
|
+
vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length);
|
|
10422
|
+
}
|
|
10423
|
+
}
|
|
10424
|
+
if (e.key === 'ArrowRight') {
|
|
10425
|
+
if (selectionIndex.value < 0) return;
|
|
10426
|
+
const next = selectionIndex.value + 1;
|
|
10427
|
+
if (selections.value[next]) {
|
|
10428
|
+
selectionIndex.value = next;
|
|
10429
|
+
} else {
|
|
10430
|
+
selectionIndex.value = -1;
|
|
10431
|
+
vTextFieldRef.value.setSelectionRange(0, 0);
|
|
10432
|
+
}
|
|
10433
|
+
}
|
|
10369
10434
|
}
|
|
10370
10435
|
function onInput(e) {
|
|
10371
10436
|
search.value = e.target.value;
|
|
@@ -10387,7 +10452,6 @@
|
|
|
10387
10452
|
const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
|
|
10388
10453
|
if (index === -1) {
|
|
10389
10454
|
model.value = [...model.value, item];
|
|
10390
|
-
search.value = '';
|
|
10391
10455
|
} else {
|
|
10392
10456
|
const value = [...model.value];
|
|
10393
10457
|
value.splice(index, 1);
|
|
@@ -10432,12 +10496,15 @@
|
|
|
10432
10496
|
"onUpdate:modelValue": v => {
|
|
10433
10497
|
if (v == null) model.value = [];
|
|
10434
10498
|
},
|
|
10499
|
+
"focused": isFocused.value,
|
|
10500
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
|
10435
10501
|
"validationValue": model.externalValue,
|
|
10436
10502
|
"dirty": isDirty,
|
|
10437
10503
|
"onInput": onInput,
|
|
10438
10504
|
"class": ['v-autocomplete', {
|
|
10439
10505
|
'v-autocomplete--active-menu': menu.value,
|
|
10440
10506
|
'v-autocomplete--chips': !!props.chips,
|
|
10507
|
+
'v-autocomplete--selecting-index': selectionIndex.value > -1,
|
|
10441
10508
|
[`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
|
|
10442
10509
|
'v-autocomplete--selection-slot': !!slots.selection
|
|
10443
10510
|
}],
|
|
@@ -10446,8 +10513,6 @@
|
|
|
10446
10513
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
10447
10514
|
"onClick:clear": onClear,
|
|
10448
10515
|
"onMousedown:control": onMousedownControl,
|
|
10449
|
-
"onFocus": () => isFocused.value = true,
|
|
10450
|
-
"onBlur": () => isFocused.value = false,
|
|
10451
10516
|
"onKeydown": onKeydown
|
|
10452
10517
|
}), {
|
|
10453
10518
|
...slots,
|
|
@@ -10512,7 +10577,8 @@
|
|
|
10512
10577
|
};
|
|
10513
10578
|
return vue.createVNode("div", {
|
|
10514
10579
|
"key": item.value,
|
|
10515
|
-
"class":
|
|
10580
|
+
"class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
|
|
10581
|
+
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
10516
10582
|
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
10517
10583
|
"key": "chip",
|
|
10518
10584
|
"closable": props.closableChips,
|
|
@@ -11003,6 +11069,17 @@
|
|
|
11003
11069
|
disabled: vue.toRef(props, 'disabled')
|
|
11004
11070
|
}
|
|
11005
11071
|
});
|
|
11072
|
+
const items = vue.computed(() => props.items.map(item => {
|
|
11073
|
+
return typeof item === 'string' ? {
|
|
11074
|
+
item: {
|
|
11075
|
+
title: item
|
|
11076
|
+
},
|
|
11077
|
+
raw: item
|
|
11078
|
+
} : {
|
|
11079
|
+
item,
|
|
11080
|
+
raw: item
|
|
11081
|
+
};
|
|
11082
|
+
}));
|
|
11006
11083
|
useRender(() => {
|
|
11007
11084
|
const hasPrepend = !!(slots.prepend || props.icon);
|
|
11008
11085
|
return vue.createVNode(props.tag, {
|
|
@@ -11025,22 +11102,26 @@
|
|
|
11025
11102
|
start: true
|
|
11026
11103
|
}
|
|
11027
11104
|
}
|
|
11028
|
-
}, slots.prepend)]),
|
|
11029
|
-
|
|
11030
|
-
"disabled": index >= array.length - 1
|
|
11031
|
-
}, typeof item === 'string' ? {
|
|
11032
|
-
title: item
|
|
11033
|
-
} : item), {
|
|
11034
|
-
default: slots.title ? () => slots.title?.({
|
|
11035
|
-
item,
|
|
11036
|
-
index
|
|
11037
|
-
}) : undefined
|
|
11038
|
-
}), index < array.length - 1 && vue.createVNode(VBreadcrumbsDivider, null, {
|
|
11039
|
-
default: slots.divider ? () => slots.divider?.({
|
|
11105
|
+
}, slots.prepend)]), items.value.map((_ref2, index, array) => {
|
|
11106
|
+
let {
|
|
11040
11107
|
item,
|
|
11041
|
-
|
|
11042
|
-
}
|
|
11043
|
-
|
|
11108
|
+
raw
|
|
11109
|
+
} = _ref2;
|
|
11110
|
+
return vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
|
|
11111
|
+
"key": item.title,
|
|
11112
|
+
"disabled": index >= array.length - 1
|
|
11113
|
+
}, item), {
|
|
11114
|
+
default: slots.title ? () => slots.title?.({
|
|
11115
|
+
item: raw,
|
|
11116
|
+
index
|
|
11117
|
+
}) : undefined
|
|
11118
|
+
}), index < array.length - 1 && vue.createVNode(VBreadcrumbsDivider, null, {
|
|
11119
|
+
default: slots.divider ? () => slots.divider?.({
|
|
11120
|
+
item: raw,
|
|
11121
|
+
index
|
|
11122
|
+
}) : undefined
|
|
11123
|
+
})]);
|
|
11124
|
+
}), slots.default?.()]
|
|
11044
11125
|
});
|
|
11045
11126
|
});
|
|
11046
11127
|
return {};
|
|
@@ -12907,7 +12988,7 @@
|
|
|
12907
12988
|
} = useFocus(props);
|
|
12908
12989
|
const trackStop = vue.computed(() => position(model.value));
|
|
12909
12990
|
useRender(() => {
|
|
12910
|
-
const [inputProps, _] =
|
|
12991
|
+
const [inputProps, _] = VInput.filterProps(props);
|
|
12911
12992
|
const hasPrepend = !!(props.label || slots.label || slots.prepend);
|
|
12912
12993
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
12913
12994
|
"class": ['v-slider', {
|
|
@@ -13571,6 +13652,7 @@
|
|
|
13571
13652
|
})
|
|
13572
13653
|
},
|
|
13573
13654
|
emits: {
|
|
13655
|
+
'update:focused': focused => true,
|
|
13574
13656
|
'update:modelValue': val => true,
|
|
13575
13657
|
'update:search': val => true,
|
|
13576
13658
|
'update:menu': val => true
|
|
@@ -13708,8 +13790,9 @@
|
|
|
13708
13790
|
}
|
|
13709
13791
|
return;
|
|
13710
13792
|
}
|
|
13711
|
-
|
|
13712
|
-
|
|
13793
|
+
const originalSelectionIndex = selectionIndex.value;
|
|
13794
|
+
if (selection.value) select(selection.value);
|
|
13795
|
+
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
13713
13796
|
}
|
|
13714
13797
|
if (e.key === 'ArrowLeft') {
|
|
13715
13798
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
@@ -13794,6 +13877,8 @@
|
|
|
13794
13877
|
"onUpdate:modelValue": [$event => search.value = $event, v => {
|
|
13795
13878
|
if (v == null) model.value = [];
|
|
13796
13879
|
}],
|
|
13880
|
+
"focused": isFocused.value,
|
|
13881
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
|
13797
13882
|
"validationValue": model.externalValue,
|
|
13798
13883
|
"dirty": isDirty,
|
|
13799
13884
|
"class": ['v-combobox', {
|
|
@@ -13807,8 +13892,6 @@
|
|
|
13807
13892
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
13808
13893
|
"onClick:clear": onClear,
|
|
13809
13894
|
"onMousedown:control": onMousedownControl,
|
|
13810
|
-
"onFocus": () => isFocused.value = true,
|
|
13811
|
-
"onBlur": () => isFocused.value = false,
|
|
13812
13895
|
"onKeydown": onKeydown
|
|
13813
13896
|
}), {
|
|
13814
13897
|
...slots,
|
|
@@ -13960,7 +14043,7 @@
|
|
|
13960
14043
|
![document, overlay.value.contentEl].includes(after) &&
|
|
13961
14044
|
// It isn't inside the dialog body
|
|
13962
14045
|
!overlay.value.contentEl.contains(after)) {
|
|
13963
|
-
const focusable =
|
|
14046
|
+
const focusable = focusableChildren(overlay.value.contentEl);
|
|
13964
14047
|
if (!focusable.length) return;
|
|
13965
14048
|
const firstElement = focusable[0];
|
|
13966
14049
|
const lastElement = focusable[focusable.length - 1];
|
|
@@ -14260,8 +14343,6 @@
|
|
|
14260
14343
|
default: '$vuetify.fileInput.counter'
|
|
14261
14344
|
},
|
|
14262
14345
|
multiple: Boolean,
|
|
14263
|
-
hint: String,
|
|
14264
|
-
persistentHint: Boolean,
|
|
14265
14346
|
showSize: {
|
|
14266
14347
|
type: [Boolean, Number],
|
|
14267
14348
|
default: false,
|
|
@@ -14286,6 +14367,7 @@
|
|
|
14286
14367
|
emits: {
|
|
14287
14368
|
'click:control': e => true,
|
|
14288
14369
|
'mousedown:control': e => true,
|
|
14370
|
+
'update:focused': focused => true,
|
|
14289
14371
|
'update:modelValue': files => true
|
|
14290
14372
|
},
|
|
14291
14373
|
setup(props, _ref) {
|
|
@@ -14298,6 +14380,11 @@
|
|
|
14298
14380
|
t
|
|
14299
14381
|
} = useLocale();
|
|
14300
14382
|
const model = useProxiedModel(props, 'modelValue');
|
|
14383
|
+
const {
|
|
14384
|
+
isFocused,
|
|
14385
|
+
focus,
|
|
14386
|
+
blur
|
|
14387
|
+
} = useFocus(props);
|
|
14301
14388
|
const base = vue.computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined);
|
|
14302
14389
|
const totalBytes = vue.computed(() => (model.value ?? []).reduce((bytes, _ref2) => {
|
|
14303
14390
|
let {
|
|
@@ -14319,21 +14406,14 @@
|
|
|
14319
14406
|
});
|
|
14320
14407
|
const vInputRef = vue.ref();
|
|
14321
14408
|
const vFieldRef = vue.ref();
|
|
14322
|
-
const isFocused = vue.ref(false);
|
|
14323
14409
|
const inputRef = vue.ref();
|
|
14324
|
-
const messages = vue.computed(() => {
|
|
14325
|
-
return props.messages.length ? props.messages : props.persistentHint ? props.hint : '';
|
|
14326
|
-
});
|
|
14327
14410
|
function onFocus() {
|
|
14328
14411
|
if (inputRef.value !== document.activeElement) {
|
|
14329
14412
|
inputRef.value?.focus();
|
|
14330
14413
|
}
|
|
14331
|
-
if (!isFocused.value)
|
|
14332
|
-
isFocused.value = true;
|
|
14333
|
-
}
|
|
14414
|
+
if (!isFocused.value) focus();
|
|
14334
14415
|
}
|
|
14335
14416
|
function onClickPrepend(e) {
|
|
14336
|
-
callEvent(props['onClick:prepend'], e);
|
|
14337
14417
|
onControlClick(e);
|
|
14338
14418
|
}
|
|
14339
14419
|
function onControlMousedown(e) {
|
|
@@ -14364,18 +14444,16 @@
|
|
|
14364
14444
|
const [{
|
|
14365
14445
|
modelValue: _,
|
|
14366
14446
|
...inputProps
|
|
14367
|
-
}] =
|
|
14447
|
+
}] = VInput.filterProps(props);
|
|
14368
14448
|
const [fieldProps] = filterFieldProps(props);
|
|
14369
14449
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
14370
14450
|
"ref": vInputRef,
|
|
14371
14451
|
"modelValue": model.value,
|
|
14372
14452
|
"onUpdate:modelValue": $event => model.value = $event,
|
|
14373
14453
|
"class": "v-file-input",
|
|
14374
|
-
"onClick:prepend": onClickPrepend
|
|
14375
|
-
"onClick:append": props['onClick:append']
|
|
14454
|
+
"onClick:prepend": onClickPrepend
|
|
14376
14455
|
}, rootAttrs, inputProps, {
|
|
14377
|
-
"focused": isFocused.value
|
|
14378
|
-
"messages": messages.value
|
|
14456
|
+
"focused": isFocused.value
|
|
14379
14457
|
}), {
|
|
14380
14458
|
...slots,
|
|
14381
14459
|
default: _ref3 => {
|
|
@@ -14427,7 +14505,7 @@
|
|
|
14427
14505
|
model.value = [...(target.files ?? [])];
|
|
14428
14506
|
},
|
|
14429
14507
|
"onFocus": onFocus,
|
|
14430
|
-
"onBlur":
|
|
14508
|
+
"onBlur": blur
|
|
14431
14509
|
}, slotProps, inputAttrs), null), vue.createVNode("div", {
|
|
14432
14510
|
"class": fieldClass
|
|
14433
14511
|
}, [!!model.value?.length && (slots.selection ? slots.selection({
|
|
@@ -16122,7 +16200,7 @@
|
|
|
16122
16200
|
const model = useProxiedModel(props, 'modelValue');
|
|
16123
16201
|
useRender(() => {
|
|
16124
16202
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
16125
|
-
const [inputProps, _1] =
|
|
16203
|
+
const [inputProps, _1] = VInput.filterProps(props);
|
|
16126
16204
|
const [controlProps, _2] = VSelectionControl.filterProps(props);
|
|
16127
16205
|
const label = slots.label ? slots.label({
|
|
16128
16206
|
label: props.label,
|
|
@@ -16250,7 +16328,7 @@
|
|
|
16250
16328
|
const trackStart = vue.computed(() => position(model.value[0]));
|
|
16251
16329
|
const trackStop = vue.computed(() => position(model.value[1]));
|
|
16252
16330
|
useRender(() => {
|
|
16253
|
-
const [inputProps, _] =
|
|
16331
|
+
const [inputProps, _] = VInput.filterProps(props);
|
|
16254
16332
|
const hasPrepend = !!(props.label || slots.label || slots.prepend);
|
|
16255
16333
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
16256
16334
|
"class": ['v-slider', 'v-range-slider', {
|
|
@@ -16810,7 +16888,7 @@
|
|
|
16810
16888
|
function focus(location) {
|
|
16811
16889
|
if (!contentRef.value) return;
|
|
16812
16890
|
if (!location) {
|
|
16813
|
-
const focusable =
|
|
16891
|
+
const focusable = focusableChildren(contentRef.value);
|
|
16814
16892
|
focusable[0]?.focus();
|
|
16815
16893
|
} else if (location === 'next') {
|
|
16816
16894
|
const el = contentRef.value.querySelector(':focus')?.nextElementSibling;
|
|
@@ -17124,10 +17202,12 @@
|
|
|
17124
17202
|
}
|
|
17125
17203
|
useRender(() => {
|
|
17126
17204
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
17127
|
-
const [inputProps, _1] =
|
|
17205
|
+
const [inputProps, _1] = VInput.filterProps(props);
|
|
17128
17206
|
const [controlProps, _2] = VSelectionControl.filterProps(props);
|
|
17129
17207
|
const control = vue.ref();
|
|
17130
|
-
function onClick() {
|
|
17208
|
+
function onClick(e) {
|
|
17209
|
+
e.stopPropagation();
|
|
17210
|
+
e.preventDefault();
|
|
17131
17211
|
control.value?.input?.click();
|
|
17132
17212
|
}
|
|
17133
17213
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
@@ -17489,8 +17569,6 @@
|
|
|
17489
17569
|
autofocus: Boolean,
|
|
17490
17570
|
counter: [Boolean, Number, String],
|
|
17491
17571
|
counterValue: Function,
|
|
17492
|
-
hint: String,
|
|
17493
|
-
persistentHint: Boolean,
|
|
17494
17572
|
prefix: String,
|
|
17495
17573
|
placeholder: String,
|
|
17496
17574
|
persistentPlaceholder: Boolean,
|
|
@@ -17545,9 +17623,6 @@
|
|
|
17545
17623
|
const controlHeight = vue.ref('');
|
|
17546
17624
|
const textareaRef = vue.ref();
|
|
17547
17625
|
const isActive = vue.computed(() => isFocused.value || props.persistentPlaceholder);
|
|
17548
|
-
const messages = vue.computed(() => {
|
|
17549
|
-
return props.messages.length ? props.messages : isFocused.value || props.persistentHint ? props.hint : '';
|
|
17550
|
-
});
|
|
17551
17626
|
function onFocus() {
|
|
17552
17627
|
if (textareaRef.value !== document.activeElement) {
|
|
17553
17628
|
textareaRef.value?.focus();
|
|
@@ -17619,7 +17694,7 @@
|
|
|
17619
17694
|
const [{
|
|
17620
17695
|
modelValue: _,
|
|
17621
17696
|
...inputProps
|
|
17622
|
-
}] =
|
|
17697
|
+
}] = VInput.filterProps(props);
|
|
17623
17698
|
const [fieldProps] = filterFieldProps(props);
|
|
17624
17699
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
17625
17700
|
"ref": vInputRef,
|
|
@@ -17633,12 +17708,9 @@
|
|
|
17633
17708
|
'v-textarea--auto-grow': props.autoGrow,
|
|
17634
17709
|
'v-textarea--no-resize': props.noResize || props.autoGrow,
|
|
17635
17710
|
'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
|
|
17636
|
-
}]
|
|
17637
|
-
"onClick:prepend": props['onClick:prepend'],
|
|
17638
|
-
"onClick:append": props['onClick:append']
|
|
17711
|
+
}]
|
|
17639
17712
|
}, rootAttrs, inputProps, {
|
|
17640
|
-
"focused": isFocused.value
|
|
17641
|
-
"messages": messages.value
|
|
17713
|
+
"focused": isFocused.value
|
|
17642
17714
|
}), {
|
|
17643
17715
|
...slots,
|
|
17644
17716
|
default: _ref2 => {
|
|
@@ -18492,6 +18564,17 @@
|
|
|
18492
18564
|
backgroundColorClasses,
|
|
18493
18565
|
backgroundColorStyles
|
|
18494
18566
|
} = useBackgroundColor(props, 'color');
|
|
18567
|
+
const slotProps = vue.computed(() => ({
|
|
18568
|
+
headers: headers.value,
|
|
18569
|
+
columns: columns.value,
|
|
18570
|
+
toggleSort,
|
|
18571
|
+
sortBy: sortBy.value,
|
|
18572
|
+
someSelected: someSelected.value,
|
|
18573
|
+
allSelected: allSelected.value,
|
|
18574
|
+
selectAll,
|
|
18575
|
+
getSortIcon,
|
|
18576
|
+
getFixedStyles
|
|
18577
|
+
}));
|
|
18495
18578
|
const VDataTableHeaderCell = _ref2 => {
|
|
18496
18579
|
let {
|
|
18497
18580
|
column,
|
|
@@ -18519,14 +18602,14 @@
|
|
|
18519
18602
|
"noPadding": noPadding
|
|
18520
18603
|
}, {
|
|
18521
18604
|
default: () => {
|
|
18522
|
-
const
|
|
18523
|
-
const
|
|
18605
|
+
const columnSlotName = `column.${column.key}`;
|
|
18606
|
+
const columnSlotProps = {
|
|
18524
18607
|
column,
|
|
18525
18608
|
selectAll
|
|
18526
18609
|
};
|
|
18527
|
-
if (slots[
|
|
18610
|
+
if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
|
|
18528
18611
|
if (column.key === 'data-table-select') {
|
|
18529
|
-
return slots['column.data-table-select']?.(
|
|
18612
|
+
return slots['column.data-table-select']?.(columnSlotProps) ?? vue.createVNode(VCheckboxBtn, {
|
|
18530
18613
|
"modelValue": allSelected.value,
|
|
18531
18614
|
"indeterminate": someSelected.value && !allSelected.value,
|
|
18532
18615
|
"onUpdate:modelValue": selectAll
|
|
@@ -18546,22 +18629,24 @@
|
|
|
18546
18629
|
}
|
|
18547
18630
|
});
|
|
18548
18631
|
};
|
|
18549
|
-
useRender(() =>
|
|
18550
|
-
"
|
|
18551
|
-
|
|
18552
|
-
|
|
18553
|
-
|
|
18554
|
-
"
|
|
18555
|
-
|
|
18556
|
-
"
|
|
18557
|
-
|
|
18558
|
-
|
|
18559
|
-
|
|
18560
|
-
|
|
18561
|
-
|
|
18562
|
-
|
|
18563
|
-
|
|
18564
|
-
|
|
18632
|
+
useRender(() => {
|
|
18633
|
+
return vue.createVNode(vue.Fragment, null, [slots.headers ? slots.headers(slotProps.value) : headers.value.map((row, y) => vue.createVNode("tr", null, [row.map((column, x) => vue.createVNode(VDataTableHeaderCell, {
|
|
18634
|
+
"column": column,
|
|
18635
|
+
"x": x,
|
|
18636
|
+
"y": y
|
|
18637
|
+
}, null))])), props.loading && vue.createVNode("tr", {
|
|
18638
|
+
"class": "v-data-table__progress"
|
|
18639
|
+
}, [vue.createVNode("th", {
|
|
18640
|
+
"colspan": columns.value.length
|
|
18641
|
+
}, [vue.createVNode(LoaderSlot, {
|
|
18642
|
+
"name": "v-data-table-headers",
|
|
18643
|
+
"active": true,
|
|
18644
|
+
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
|
18645
|
+
"indeterminate": true
|
|
18646
|
+
}, {
|
|
18647
|
+
default: slots.loader
|
|
18648
|
+
})])])]);
|
|
18649
|
+
});
|
|
18565
18650
|
}
|
|
18566
18651
|
});
|
|
18567
18652
|
|
|
@@ -18860,9 +18945,7 @@
|
|
|
18860
18945
|
'v-data-table__tr--clickable': !!props.onClick
|
|
18861
18946
|
}],
|
|
18862
18947
|
"onClick": props.onClick
|
|
18863
|
-
}, [
|
|
18864
|
-
"key": "no-data"
|
|
18865
|
-
}, slots), props.item && columns.value.map((column, i) => vue.createVNode(VDataTableColumn, {
|
|
18948
|
+
}, [props.item && columns.value.map((column, i) => vue.createVNode(VDataTableColumn, {
|
|
18866
18949
|
"align": column.align,
|
|
18867
18950
|
"fixed": column.fixed,
|
|
18868
18951
|
"fixedOffset": column.fixedOffset,
|
|
@@ -18949,56 +19032,64 @@
|
|
|
18949
19032
|
const {
|
|
18950
19033
|
t
|
|
18951
19034
|
} = useLocale();
|
|
18952
|
-
useRender(() =>
|
|
18953
|
-
|
|
18954
|
-
|
|
18955
|
-
|
|
18956
|
-
|
|
18957
|
-
|
|
18958
|
-
|
|
18959
|
-
|
|
18960
|
-
|
|
18961
|
-
|
|
18962
|
-
|
|
18963
|
-
|
|
18964
|
-
|
|
19035
|
+
useRender(() => {
|
|
19036
|
+
if (props.loading && slots.loading) {
|
|
19037
|
+
return vue.createVNode("tr", {
|
|
19038
|
+
"class": "v-data-table-rows-loading",
|
|
19039
|
+
"key": "loading"
|
|
19040
|
+
}, [vue.createVNode("td", {
|
|
19041
|
+
"colspan": columns.value.length
|
|
19042
|
+
}, [slots.loading()])]);
|
|
19043
|
+
}
|
|
19044
|
+
if (!props.loading && !props.items.length && !props.hideNoData) {
|
|
19045
|
+
return vue.createVNode("tr", {
|
|
19046
|
+
"class": "v-data-table-rows-no-data",
|
|
19047
|
+
"key": "no-data"
|
|
19048
|
+
}, [vue.createVNode("td", {
|
|
19049
|
+
"colspan": columns.value.length
|
|
19050
|
+
}, [slots['no-data']?.() ?? t(props.noDataText)])]);
|
|
19051
|
+
}
|
|
19052
|
+
return vue.createVNode(vue.Fragment, null, [props.items.map((item, index) => {
|
|
19053
|
+
if (item.type === 'group-header') {
|
|
19054
|
+
return slots['group-header'] ? slots['group-header']({
|
|
19055
|
+
index,
|
|
19056
|
+
item,
|
|
19057
|
+
columns: columns.value,
|
|
19058
|
+
isExpanded,
|
|
19059
|
+
toggleExpand,
|
|
19060
|
+
isSelected,
|
|
19061
|
+
toggleSelect,
|
|
19062
|
+
toggleGroup,
|
|
19063
|
+
isGroupOpen
|
|
19064
|
+
}) : vue.createVNode(VDataTableGroupHeaderRow, {
|
|
19065
|
+
"key": `group-header_${item.id}`,
|
|
19066
|
+
"item": item
|
|
19067
|
+
}, slots);
|
|
19068
|
+
}
|
|
19069
|
+
const slotProps = {
|
|
18965
19070
|
index,
|
|
18966
19071
|
item,
|
|
18967
19072
|
columns: columns.value,
|
|
18968
19073
|
isExpanded,
|
|
18969
19074
|
toggleExpand,
|
|
18970
19075
|
isSelected,
|
|
18971
|
-
toggleSelect
|
|
18972
|
-
|
|
18973
|
-
|
|
18974
|
-
|
|
18975
|
-
"
|
|
19076
|
+
toggleSelect
|
|
19077
|
+
};
|
|
19078
|
+
return vue.createVNode(vue.Fragment, null, [slots.item ? slots.item(slotProps) : vue.createVNode(VDataTableRow, {
|
|
19079
|
+
"key": `item_${item.value}`,
|
|
19080
|
+
"onClick": expandOnClick.value || props['onClick:row'] ? event => {
|
|
19081
|
+
if (expandOnClick.value) {
|
|
19082
|
+
toggleExpand(item);
|
|
19083
|
+
}
|
|
19084
|
+
props['onClick:row']?.(event, {
|
|
19085
|
+
item
|
|
19086
|
+
});
|
|
19087
|
+
} : undefined,
|
|
19088
|
+
"index": index,
|
|
18976
19089
|
"item": item
|
|
18977
|
-
}, slots);
|
|
18978
|
-
}
|
|
18979
|
-
|
|
18980
|
-
index,
|
|
18981
|
-
item,
|
|
18982
|
-
columns: columns.value,
|
|
18983
|
-
isExpanded,
|
|
18984
|
-
toggleExpand,
|
|
18985
|
-
isSelected,
|
|
18986
|
-
toggleSelect
|
|
18987
|
-
};
|
|
18988
|
-
return vue.createVNode(vue.Fragment, null, [slots.item ? slots.item(slotProps) : vue.createVNode(VDataTableRow, {
|
|
18989
|
-
"key": `item_${item.value}`,
|
|
18990
|
-
"onClick": expandOnClick.value || props['onClick:row'] ? event => {
|
|
18991
|
-
if (expandOnClick.value) {
|
|
18992
|
-
toggleExpand(item);
|
|
18993
|
-
}
|
|
18994
|
-
props['onClick:row']?.(event, {
|
|
18995
|
-
item
|
|
18996
|
-
});
|
|
18997
|
-
} : undefined,
|
|
18998
|
-
"index": index,
|
|
18999
|
-
"item": item
|
|
19000
|
-
}, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
|
|
19001
|
-
})]));
|
|
19090
|
+
}, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
|
|
19091
|
+
})]);
|
|
19092
|
+
});
|
|
19002
19093
|
return {};
|
|
19003
19094
|
}
|
|
19004
19095
|
});
|
|
@@ -19273,7 +19364,8 @@
|
|
|
19273
19364
|
page: page.value,
|
|
19274
19365
|
itemsPerPage: itemsPerPage.value,
|
|
19275
19366
|
sortBy: sortBy.value,
|
|
19276
|
-
groupBy: groupBy.value
|
|
19367
|
+
groupBy: groupBy.value,
|
|
19368
|
+
search: search.value
|
|
19277
19369
|
}));
|
|
19278
19370
|
|
|
19279
19371
|
// Reset page when searching
|
|
@@ -19306,12 +19398,12 @@
|
|
|
19306
19398
|
width: [String, Number],
|
|
19307
19399
|
fixedHeader: Boolean,
|
|
19308
19400
|
fixedFooter: Boolean,
|
|
19309
|
-
'onClick:row': Function
|
|
19401
|
+
'onClick:row': Function,
|
|
19402
|
+
search: String
|
|
19310
19403
|
}, 'v-data-table');
|
|
19311
19404
|
const VDataTable = genericComponent()({
|
|
19312
19405
|
name: 'VDataTable',
|
|
19313
19406
|
props: {
|
|
19314
|
-
search: String,
|
|
19315
19407
|
...makeVDataTableProps(),
|
|
19316
19408
|
...makeDataTableExpandProps(),
|
|
19317
19409
|
...makeDataTableGroupProps(),
|
|
@@ -19428,7 +19520,7 @@
|
|
|
19428
19520
|
top: slots.top,
|
|
19429
19521
|
default: slots.default ?? (() => vue.createVNode(vue.Fragment, null, [slots.colgroup?.({
|
|
19430
19522
|
columns
|
|
19431
|
-
}), vue.createVNode("thead", null, [
|
|
19523
|
+
}), vue.createVNode("thead", null, [vue.createVNode(VDataTableHeaders, {
|
|
19432
19524
|
"sticky": props.fixedHeader,
|
|
19433
19525
|
"multiSort": props.multiSort
|
|
19434
19526
|
}, slots)]), slots.thead?.(), vue.createVNode("tbody", null, [slots.body ? slots.body() : vue.createVNode(VDataTableRows, {
|
|
@@ -19526,7 +19618,6 @@
|
|
|
19526
19618
|
const VDataTableVirtual = genericComponent()({
|
|
19527
19619
|
name: 'VDataTableVirtual',
|
|
19528
19620
|
props: {
|
|
19529
|
-
search: String,
|
|
19530
19621
|
...makeVDataTableProps(),
|
|
19531
19622
|
...makeVDataTableProps(),
|
|
19532
19623
|
...makeDataTableGroupProps(),
|
|
@@ -19765,7 +19856,8 @@
|
|
|
19765
19856
|
page,
|
|
19766
19857
|
itemsPerPage,
|
|
19767
19858
|
sortBy,
|
|
19768
|
-
groupBy
|
|
19859
|
+
groupBy,
|
|
19860
|
+
search: vue.toRef(props, 'search')
|
|
19769
19861
|
});
|
|
19770
19862
|
vue.provide('v-data-table', {
|
|
19771
19863
|
toggleSort,
|
|
@@ -19794,7 +19886,7 @@
|
|
|
19794
19886
|
}), vue.createVNode("thead", {
|
|
19795
19887
|
"class": "v-data-table__thead",
|
|
19796
19888
|
"role": "rowgroup"
|
|
19797
|
-
}, [
|
|
19889
|
+
}, [vue.createVNode(VDataTableHeaders, {
|
|
19798
19890
|
"sticky": props.fixedHeader,
|
|
19799
19891
|
"loading": props.loading,
|
|
19800
19892
|
"color": props.color
|
|
@@ -19825,6 +19917,7 @@
|
|
|
19825
19917
|
'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',
|
|
19826
19918
|
'date-picker-options': 'text, avatar@2',
|
|
19827
19919
|
'date-picker-days': 'avatar@28',
|
|
19920
|
+
divider: 'divider',
|
|
19828
19921
|
heading: 'heading',
|
|
19829
19922
|
image: 'image',
|
|
19830
19923
|
'list-item': 'text',
|
|
@@ -20466,7 +20559,7 @@
|
|
|
20466
20559
|
locale
|
|
20467
20560
|
};
|
|
20468
20561
|
}
|
|
20469
|
-
const version$1 = "3.1.
|
|
20562
|
+
const version$1 = "3.1.16";
|
|
20470
20563
|
createVuetify$1.version = version$1;
|
|
20471
20564
|
|
|
20472
20565
|
// Vue's inject() can only be used in setup
|
|
@@ -20478,7 +20571,7 @@
|
|
|
20478
20571
|
}
|
|
20479
20572
|
}
|
|
20480
20573
|
|
|
20481
|
-
const version = "3.1.
|
|
20574
|
+
const version = "3.1.16";
|
|
20482
20575
|
|
|
20483
20576
|
const createVuetify = function () {
|
|
20484
20577
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|