vuetify 3.3.2 → 3.3.3
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 +8 -8
- package/dist/json/importMap.json +4 -4
- package/dist/json/web-types.json +26 -15
- package/dist/vuetify-labs.css +53 -61
- package/dist/vuetify-labs.d.ts +253 -119
- package/dist/vuetify-labs.esm.js +196 -82
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +195 -81
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +10 -8
- package/dist/vuetify.d.ts +254 -120
- package/dist/vuetify.esm.js +191 -78
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +190 -77
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +780 -771
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.mts +2 -2
- package/lib/blueprints/md1.d.mts +2 -2
- package/lib/blueprints/md2.d.mts +2 -2
- package/lib/blueprints/md3.d.mts +2 -2
- package/lib/components/VAppBar/index.d.mts +24 -8
- package/lib/components/VAutocomplete/VAutocomplete.mjs +16 -11
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.mjs +1 -1
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/index.d.mts +24 -8
- package/lib/components/VCard/VCard.mjs +1 -1
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/index.d.mts +44 -28
- package/lib/components/VCheckbox/VCheckbox.mjs +8 -1
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.mts +7 -1
- package/lib/components/VChip/VChip.mjs +2 -2
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/index.d.mts +48 -32
- package/lib/components/VCombobox/VCombobox.mjs +16 -8
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +56 -24
- package/lib/components/VField/VField.css +1 -0
- package/lib/components/VField/VField.sass +1 -0
- package/lib/components/VIcon/VIcon.mjs +2 -2
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +1 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +24 -8
- package/lib/components/VMenu/VMenu.mjs +29 -3
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +7 -4
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +29 -35
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +15 -10
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs +2 -2
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.css +1 -0
- package/lib/components/VTabs/VTabs.sass +1 -0
- package/lib/components/VTabs/index.d.mts +24 -8
- package/lib/components/VTextarea/VTextarea.css +7 -7
- package/lib/components/VTextarea/VTextarea.sass +9 -9
- package/lib/components/index.d.mts +251 -117
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/theme.mjs +1 -1
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/mdi-svg.mjs +35 -35
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/index.d.mts +3 -3
- package/lib/labs/VDataTable/VDataTable.css +4 -14
- package/lib/labs/VDataTable/VDataTable.sass +6 -15
- package/lib/labs/VDataTable/VDataTableHeaders.mjs +2 -2
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +3 -2
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/util/bindProps.mjs +49 -0
- package/lib/util/bindProps.mjs.map +1 -0
- package/lib/util/helpers.mjs +3 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/index.mjs +1 -0
- package/lib/util/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/vuetify-labs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.3.
|
|
2
|
+
* Vuetify v3.3.3
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -298,6 +298,15 @@
|
|
|
298
298
|
}
|
|
299
299
|
return out;
|
|
300
300
|
}
|
|
301
|
+
function flattenFragments(nodes) {
|
|
302
|
+
return nodes.map(node => {
|
|
303
|
+
if (node.type === vue.Fragment) {
|
|
304
|
+
return flattenFragments(node.children);
|
|
305
|
+
} else {
|
|
306
|
+
return node;
|
|
307
|
+
}
|
|
308
|
+
}).flat();
|
|
309
|
+
}
|
|
301
310
|
function toKebabCase() {
|
|
302
311
|
let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
303
312
|
if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str);
|
|
@@ -377,6 +386,9 @@
|
|
|
377
386
|
}
|
|
378
387
|
const onRE = /^on[^a-z]/;
|
|
379
388
|
const isOn = key => onRE.test(key);
|
|
389
|
+
function eventName(propName) {
|
|
390
|
+
return propName[2].toLowerCase() + propName.slice(3);
|
|
391
|
+
}
|
|
380
392
|
const EventProp = () => [Function, Array];
|
|
381
393
|
function hasEvent(props, name) {
|
|
382
394
|
name = 'on' + vue.capitalize(name);
|
|
@@ -575,6 +587,54 @@
|
|
|
575
587
|
return animation;
|
|
576
588
|
}
|
|
577
589
|
|
|
590
|
+
// Utilities
|
|
591
|
+
const handlers = new WeakMap();
|
|
592
|
+
function bindProps(el, props) {
|
|
593
|
+
Object.keys(props).forEach(k => {
|
|
594
|
+
if (isOn(k)) {
|
|
595
|
+
const name = eventName(k);
|
|
596
|
+
const handler = handlers.get(el);
|
|
597
|
+
if (props[k] == null) {
|
|
598
|
+
handler?.forEach(v => {
|
|
599
|
+
const [n, fn] = v;
|
|
600
|
+
if (n === name) {
|
|
601
|
+
el.removeEventListener(name, fn);
|
|
602
|
+
handler.delete(v);
|
|
603
|
+
}
|
|
604
|
+
});
|
|
605
|
+
} else if (!handler || ![...handler]?.some(v => v[0] === name && v[1] === props[k])) {
|
|
606
|
+
el.addEventListener(name, props[k]);
|
|
607
|
+
const _handler = handler || new Set();
|
|
608
|
+
_handler.add([name, props[k]]);
|
|
609
|
+
if (!handlers.has(el)) handlers.set(el, _handler);
|
|
610
|
+
}
|
|
611
|
+
} else {
|
|
612
|
+
if (props[k] == null) {
|
|
613
|
+
el.removeAttribute(k);
|
|
614
|
+
} else {
|
|
615
|
+
el.setAttribute(k, props[k]);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
function unbindProps(el, props) {
|
|
621
|
+
Object.keys(props).forEach(k => {
|
|
622
|
+
if (isOn(k)) {
|
|
623
|
+
const name = eventName(k);
|
|
624
|
+
const handler = handlers.get(el);
|
|
625
|
+
handler?.forEach(v => {
|
|
626
|
+
const [n, fn] = v;
|
|
627
|
+
if (n === name) {
|
|
628
|
+
el.removeEventListener(name, fn);
|
|
629
|
+
handler.delete(v);
|
|
630
|
+
}
|
|
631
|
+
});
|
|
632
|
+
} else {
|
|
633
|
+
el.removeAttribute(k);
|
|
634
|
+
}
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
|
|
578
638
|
/* eslint-disable no-console */
|
|
579
639
|
|
|
580
640
|
function consoleWarn(message) {
|
|
@@ -2162,6 +2222,7 @@
|
|
|
2162
2222
|
};
|
|
2163
2223
|
}
|
|
2164
2224
|
function install(app) {
|
|
2225
|
+
if (parsedOptions.isDisabled) return;
|
|
2165
2226
|
const head = app._context.provides.usehead;
|
|
2166
2227
|
if (head) {
|
|
2167
2228
|
if (head.push) {
|
|
@@ -2183,7 +2244,6 @@
|
|
|
2183
2244
|
immediate: true
|
|
2184
2245
|
});
|
|
2185
2246
|
function updateStyles() {
|
|
2186
|
-
if (parsedOptions.isDisabled) return;
|
|
2187
2247
|
if (typeof document !== 'undefined' && !styleEl) {
|
|
2188
2248
|
const el = document.createElement('style');
|
|
2189
2249
|
el.type = 'text/css';
|
|
@@ -4270,7 +4330,7 @@
|
|
|
4270
4330
|
useRender(() => {
|
|
4271
4331
|
const slotValue = slots.default?.();
|
|
4272
4332
|
if (slotValue) {
|
|
4273
|
-
slotIcon.value = slotValue.filter(node => node.type === vue.Text && node.children && typeof node.children === 'string')[0]?.children;
|
|
4333
|
+
slotIcon.value = flattenFragments(slotValue).filter(node => node.type === vue.Text && node.children && typeof node.children === 'string')[0]?.children;
|
|
4274
4334
|
}
|
|
4275
4335
|
return vue.createVNode(iconData.value.component, {
|
|
4276
4336
|
"tag": props.tag,
|
|
@@ -5107,7 +5167,7 @@
|
|
|
5107
5167
|
block: Boolean,
|
|
5108
5168
|
stacked: Boolean,
|
|
5109
5169
|
ripple: {
|
|
5110
|
-
type: Boolean,
|
|
5170
|
+
type: [Boolean, Object],
|
|
5111
5171
|
default: true
|
|
5112
5172
|
},
|
|
5113
5173
|
text: String,
|
|
@@ -6390,6 +6450,7 @@
|
|
|
6390
6450
|
inheritAttrs: false,
|
|
6391
6451
|
props: makeVCheckboxProps(),
|
|
6392
6452
|
emits: {
|
|
6453
|
+
'update:modelValue': value => true,
|
|
6393
6454
|
'update:focused': focused => true
|
|
6394
6455
|
},
|
|
6395
6456
|
setup(props, _ref) {
|
|
@@ -6397,6 +6458,7 @@
|
|
|
6397
6458
|
attrs,
|
|
6398
6459
|
slots
|
|
6399
6460
|
} = _ref;
|
|
6461
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
6400
6462
|
const {
|
|
6401
6463
|
isFocused,
|
|
6402
6464
|
focus,
|
|
@@ -6411,6 +6473,8 @@
|
|
|
6411
6473
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
6412
6474
|
"class": ['v-checkbox', props.class]
|
|
6413
6475
|
}, inputAttrs, inputProps, {
|
|
6476
|
+
"modelValue": model.value,
|
|
6477
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
6414
6478
|
"id": id.value,
|
|
6415
6479
|
"focused": isFocused.value,
|
|
6416
6480
|
"style": props.style
|
|
@@ -6429,6 +6493,8 @@
|
|
|
6429
6493
|
"disabled": isDisabled.value,
|
|
6430
6494
|
"readonly": isReadonly.value
|
|
6431
6495
|
}, controlAttrs, {
|
|
6496
|
+
"modelValue": model.value,
|
|
6497
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
6432
6498
|
"onFocus": focus,
|
|
6433
6499
|
"onBlur": blur
|
|
6434
6500
|
}), slots);
|
|
@@ -6566,6 +6632,8 @@
|
|
|
6566
6632
|
}
|
|
6567
6633
|
});
|
|
6568
6634
|
|
|
6635
|
+
// Types
|
|
6636
|
+
|
|
6569
6637
|
const makeVChipProps = propsFactory({
|
|
6570
6638
|
activeClass: String,
|
|
6571
6639
|
appendAvatar: String,
|
|
@@ -6594,7 +6662,7 @@
|
|
|
6594
6662
|
prependAvatar: String,
|
|
6595
6663
|
prependIcon: IconValue,
|
|
6596
6664
|
ripple: {
|
|
6597
|
-
type: Boolean,
|
|
6665
|
+
type: [Boolean, Object],
|
|
6598
6666
|
default: true
|
|
6599
6667
|
},
|
|
6600
6668
|
text: String,
|
|
@@ -7410,7 +7478,7 @@
|
|
|
7410
7478
|
prependAvatar: String,
|
|
7411
7479
|
prependIcon: IconValue,
|
|
7412
7480
|
ripple: {
|
|
7413
|
-
type: Boolean,
|
|
7481
|
+
type: [Boolean, Object],
|
|
7414
7482
|
default: true
|
|
7415
7483
|
},
|
|
7416
7484
|
subtitle: [String, Number, Boolean],
|
|
@@ -8783,29 +8851,29 @@
|
|
|
8783
8851
|
}
|
|
8784
8852
|
});
|
|
8785
8853
|
const availableEvents = {
|
|
8786
|
-
|
|
8854
|
+
onClick: e => {
|
|
8787
8855
|
e.stopPropagation();
|
|
8788
8856
|
activatorEl.value = e.currentTarget || e.target;
|
|
8789
8857
|
isActive.value = !isActive.value;
|
|
8790
8858
|
},
|
|
8791
|
-
|
|
8859
|
+
onMouseenter: e => {
|
|
8792
8860
|
if (e.sourceCapabilities?.firesTouchEvents) return;
|
|
8793
8861
|
isHovered = true;
|
|
8794
8862
|
activatorEl.value = e.currentTarget || e.target;
|
|
8795
8863
|
runOpenDelay();
|
|
8796
8864
|
},
|
|
8797
|
-
|
|
8865
|
+
onMouseleave: e => {
|
|
8798
8866
|
isHovered = false;
|
|
8799
8867
|
runCloseDelay();
|
|
8800
8868
|
},
|
|
8801
|
-
|
|
8869
|
+
onFocus: e => {
|
|
8802
8870
|
if (SUPPORTS_FOCUS_VISIBLE && !e.target.matches(':focus-visible')) return;
|
|
8803
8871
|
isFocused = true;
|
|
8804
8872
|
e.stopPropagation();
|
|
8805
8873
|
activatorEl.value = e.currentTarget || e.target;
|
|
8806
8874
|
runOpenDelay();
|
|
8807
8875
|
},
|
|
8808
|
-
|
|
8876
|
+
onBlur: e => {
|
|
8809
8877
|
isFocused = false;
|
|
8810
8878
|
e.stopPropagation();
|
|
8811
8879
|
runCloseDelay();
|
|
@@ -8814,33 +8882,43 @@
|
|
|
8814
8882
|
const activatorEvents = vue.computed(() => {
|
|
8815
8883
|
const events = {};
|
|
8816
8884
|
if (openOnClick.value) {
|
|
8817
|
-
events.
|
|
8885
|
+
events.onClick = availableEvents.onClick;
|
|
8818
8886
|
}
|
|
8819
8887
|
if (props.openOnHover) {
|
|
8820
|
-
events.
|
|
8821
|
-
events.
|
|
8888
|
+
events.onMouseenter = availableEvents.onMouseenter;
|
|
8889
|
+
events.onMouseleave = availableEvents.onMouseleave;
|
|
8822
8890
|
}
|
|
8823
8891
|
if (openOnFocus.value) {
|
|
8824
|
-
events.
|
|
8825
|
-
events.
|
|
8892
|
+
events.onFocus = availableEvents.onFocus;
|
|
8893
|
+
events.onBlur = availableEvents.onBlur;
|
|
8826
8894
|
}
|
|
8827
8895
|
return events;
|
|
8828
8896
|
});
|
|
8829
8897
|
const contentEvents = vue.computed(() => {
|
|
8830
8898
|
const events = {};
|
|
8831
8899
|
if (props.openOnHover) {
|
|
8832
|
-
events.
|
|
8900
|
+
events.onMouseenter = () => {
|
|
8833
8901
|
isHovered = true;
|
|
8834
8902
|
runOpenDelay();
|
|
8835
8903
|
};
|
|
8836
|
-
events.
|
|
8904
|
+
events.onMouseleave = () => {
|
|
8837
8905
|
isHovered = false;
|
|
8838
8906
|
runCloseDelay();
|
|
8839
8907
|
};
|
|
8840
8908
|
}
|
|
8909
|
+
if (openOnFocus.value) {
|
|
8910
|
+
events.onFocusin = () => {
|
|
8911
|
+
isFocused = true;
|
|
8912
|
+
runOpenDelay();
|
|
8913
|
+
};
|
|
8914
|
+
events.onFocusout = () => {
|
|
8915
|
+
isFocused = false;
|
|
8916
|
+
runCloseDelay();
|
|
8917
|
+
};
|
|
8918
|
+
}
|
|
8841
8919
|
if (props.closeOnContentClick) {
|
|
8842
8920
|
const menu = vue.inject(VMenuSymbol, null);
|
|
8843
|
-
events.
|
|
8921
|
+
events.onClick = () => {
|
|
8844
8922
|
isActive.value = false;
|
|
8845
8923
|
menu?.closeParents();
|
|
8846
8924
|
};
|
|
@@ -8850,14 +8928,14 @@
|
|
|
8850
8928
|
const scrimEvents = vue.computed(() => {
|
|
8851
8929
|
const events = {};
|
|
8852
8930
|
if (props.openOnHover) {
|
|
8853
|
-
events.
|
|
8931
|
+
events.onMouseenter = () => {
|
|
8854
8932
|
if (firstEnter) {
|
|
8855
8933
|
isHovered = true;
|
|
8856
8934
|
firstEnter = false;
|
|
8857
8935
|
runOpenDelay();
|
|
8858
8936
|
}
|
|
8859
8937
|
};
|
|
8860
|
-
events.
|
|
8938
|
+
events.onMouseleave = () => {
|
|
8861
8939
|
isHovered = false;
|
|
8862
8940
|
runCloseDelay();
|
|
8863
8941
|
};
|
|
@@ -8931,29 +9009,13 @@
|
|
|
8931
9009
|
let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();
|
|
8932
9010
|
let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;
|
|
8933
9011
|
if (!el) return;
|
|
8934
|
-
|
|
8935
|
-
let [name, cb] = _ref3;
|
|
8936
|
-
el.addEventListener(name, cb);
|
|
8937
|
-
});
|
|
8938
|
-
Object.keys(_props).forEach(k => {
|
|
8939
|
-
if (_props[k] == null) {
|
|
8940
|
-
el.removeAttribute(k);
|
|
8941
|
-
} else {
|
|
8942
|
-
el.setAttribute(k, _props[k]);
|
|
8943
|
-
}
|
|
8944
|
-
});
|
|
9012
|
+
bindProps(el, vue.mergeProps(activatorEvents.value, _props));
|
|
8945
9013
|
}
|
|
8946
9014
|
function unbindActivatorProps() {
|
|
8947
9015
|
let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getActivator();
|
|
8948
9016
|
let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;
|
|
8949
9017
|
if (!el) return;
|
|
8950
|
-
|
|
8951
|
-
let [name, cb] = _ref4;
|
|
8952
|
-
el.removeEventListener(name, cb);
|
|
8953
|
-
});
|
|
8954
|
-
Object.keys(_props).forEach(k => {
|
|
8955
|
-
el.removeAttribute(k);
|
|
8956
|
-
});
|
|
9018
|
+
unbindProps(el, vue.mergeProps(activatorEvents.value, _props));
|
|
8957
9019
|
}
|
|
8958
9020
|
function getActivator() {
|
|
8959
9021
|
let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : props.activator;
|
|
@@ -9480,6 +9542,9 @@
|
|
|
9480
9542
|
if (e.key === 'Escape' && globalTop.value) {
|
|
9481
9543
|
if (!props.persistent) {
|
|
9482
9544
|
isActive.value = false;
|
|
9545
|
+
if (contentEl.value?.contains(document.activeElement)) {
|
|
9546
|
+
activatorEl.value?.focus();
|
|
9547
|
+
}
|
|
9483
9548
|
} else animateClick();
|
|
9484
9549
|
}
|
|
9485
9550
|
}
|
|
@@ -9522,7 +9587,7 @@
|
|
|
9522
9587
|
isActive: isActive.value,
|
|
9523
9588
|
props: vue.mergeProps({
|
|
9524
9589
|
ref: activatorRef
|
|
9525
|
-
},
|
|
9590
|
+
}, activatorEvents.value, props.activatorProps)
|
|
9526
9591
|
}), isMounted.value && vue.createVNode(vue.Teleport, {
|
|
9527
9592
|
"disabled": !teleportTarget.value,
|
|
9528
9593
|
"to": teleportTarget.value
|
|
@@ -9540,7 +9605,7 @@
|
|
|
9540
9605
|
}, scopeId, attrs), [vue.createVNode(Scrim, vue.mergeProps({
|
|
9541
9606
|
"color": scrimColor,
|
|
9542
9607
|
"modelValue": isActive.value && !!props.scrim
|
|
9543
|
-
},
|
|
9608
|
+
}, scrimEvents.value), null), vue.createVNode(MaybeTransition, {
|
|
9544
9609
|
"appear": true,
|
|
9545
9610
|
"persisted": true,
|
|
9546
9611
|
"transition": props.transition,
|
|
@@ -9554,7 +9619,7 @@
|
|
|
9554
9619
|
"ref": contentEl,
|
|
9555
9620
|
"class": ['v-overlay__content', props.contentClass],
|
|
9556
9621
|
"style": [dimensionStyles.value, contentStyles.value]
|
|
9557
|
-
},
|
|
9622
|
+
}, contentEvents.value, props.contentProps), [slots.default?.({
|
|
9558
9623
|
isActive
|
|
9559
9624
|
})]), [[vue.vShow, isActive.value], [vue.resolveDirective("click-outside"), {
|
|
9560
9625
|
handler: onClickOutside,
|
|
@@ -9714,10 +9779,35 @@
|
|
|
9714
9779
|
function onClickOutside() {
|
|
9715
9780
|
parent?.closeParents();
|
|
9716
9781
|
}
|
|
9782
|
+
function onKeydown(e) {
|
|
9783
|
+
if (props.disabled) return;
|
|
9784
|
+
if (e.key === 'Tab') {
|
|
9785
|
+
isActive.value = false;
|
|
9786
|
+
overlay.value?.activatorEl?.focus();
|
|
9787
|
+
}
|
|
9788
|
+
}
|
|
9789
|
+
function onActivatorKeydown(e) {
|
|
9790
|
+
if (props.disabled) return;
|
|
9791
|
+
const el = overlay.value?.contentEl;
|
|
9792
|
+
if (el && isActive.value) {
|
|
9793
|
+
if (e.key === 'ArrowDown') {
|
|
9794
|
+
e.preventDefault();
|
|
9795
|
+
focusChild(el, 'next');
|
|
9796
|
+
} else if (e.key === 'ArrowUp') {
|
|
9797
|
+
e.preventDefault();
|
|
9798
|
+
focusChild(el, 'prev');
|
|
9799
|
+
}
|
|
9800
|
+
} else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
9801
|
+
isActive.value = true;
|
|
9802
|
+
e.preventDefault();
|
|
9803
|
+
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
|
9804
|
+
}
|
|
9805
|
+
}
|
|
9717
9806
|
const activatorProps = vue.computed(() => vue.mergeProps({
|
|
9718
9807
|
'aria-haspopup': 'menu',
|
|
9719
9808
|
'aria-expanded': String(isActive.value),
|
|
9720
|
-
'aria-owns': id.value
|
|
9809
|
+
'aria-owns': id.value,
|
|
9810
|
+
onKeydown: onActivatorKeydown
|
|
9721
9811
|
}, props.activatorProps));
|
|
9722
9812
|
useRender(() => {
|
|
9723
9813
|
const [overlayProps] = VOverlay.filterProps(props);
|
|
@@ -9730,7 +9820,8 @@
|
|
|
9730
9820
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
9731
9821
|
"absolute": true,
|
|
9732
9822
|
"activatorProps": activatorProps.value,
|
|
9733
|
-
"onClick:outside": onClickOutside
|
|
9823
|
+
"onClick:outside": onClickOutside,
|
|
9824
|
+
"onKeydown": onKeydown
|
|
9734
9825
|
}, scopeId), {
|
|
9735
9826
|
activator: slots.activator,
|
|
9736
9827
|
default: function () {
|
|
@@ -10374,6 +10465,7 @@
|
|
|
10374
10465
|
}
|
|
10375
10466
|
return items.value;
|
|
10376
10467
|
});
|
|
10468
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value);
|
|
10377
10469
|
const listRef = vue.ref();
|
|
10378
10470
|
function onClear(e) {
|
|
10379
10471
|
if (props.openOnClear) {
|
|
@@ -10381,7 +10473,7 @@
|
|
|
10381
10473
|
}
|
|
10382
10474
|
}
|
|
10383
10475
|
function onMousedownControl() {
|
|
10384
|
-
if (
|
|
10476
|
+
if (menuDisabled.value) return;
|
|
10385
10477
|
menu.value = !menu.value;
|
|
10386
10478
|
}
|
|
10387
10479
|
function onKeydown(e) {
|
|
@@ -10395,11 +10487,7 @@
|
|
|
10395
10487
|
if (['Escape', 'Tab'].includes(e.key)) {
|
|
10396
10488
|
menu.value = false;
|
|
10397
10489
|
}
|
|
10398
|
-
if (e.key === '
|
|
10399
|
-
listRef.value?.focus('next');
|
|
10400
|
-
} else if (e.key === 'ArrowUp') {
|
|
10401
|
-
listRef.value?.focus('prev');
|
|
10402
|
-
} else if (e.key === 'Home') {
|
|
10490
|
+
if (e.key === 'Home') {
|
|
10403
10491
|
listRef.value?.focus('first');
|
|
10404
10492
|
} else if (e.key === 'End') {
|
|
10405
10493
|
listRef.value?.focus('last');
|
|
@@ -10425,6 +10513,11 @@
|
|
|
10425
10513
|
model.value = [item];
|
|
10426
10514
|
}
|
|
10427
10515
|
}
|
|
10516
|
+
function onListKeydown(e) {
|
|
10517
|
+
if (e.key === 'Tab') {
|
|
10518
|
+
vTextFieldRef.value?.focus();
|
|
10519
|
+
}
|
|
10520
|
+
}
|
|
10428
10521
|
function select(item) {
|
|
10429
10522
|
if (props.multiple) {
|
|
10430
10523
|
const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
|
|
@@ -10455,7 +10548,7 @@
|
|
|
10455
10548
|
}
|
|
10456
10549
|
useRender(() => {
|
|
10457
10550
|
const hasChips = !!(props.chips || slots.chip);
|
|
10458
|
-
const hasList = !!(!props.hideNoData || displayItems.value.length || slots
|
|
10551
|
+
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
10459
10552
|
const isDirty = model.value.length > 0;
|
|
10460
10553
|
const [textFieldProps] = VTextField.filterProps(props);
|
|
10461
10554
|
const placeholder = isDirty || !isFocused.value && props.label && !props.persistentPlaceholder ? undefined : props.placeholder;
|
|
@@ -10492,6 +10585,7 @@
|
|
|
10492
10585
|
"onUpdate:modelValue": $event => menu.value = $event,
|
|
10493
10586
|
"activator": "parent",
|
|
10494
10587
|
"contentClass": "v-select__content",
|
|
10588
|
+
"disabled": menuDisabled.value,
|
|
10495
10589
|
"eager": props.eager,
|
|
10496
10590
|
"maxHeight": 310,
|
|
10497
10591
|
"openOnClick": false,
|
|
@@ -10504,11 +10598,13 @@
|
|
|
10504
10598
|
"selected": selected.value,
|
|
10505
10599
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
10506
10600
|
"onMousedown": e => e.preventDefault(),
|
|
10507
|
-
"
|
|
10601
|
+
"onKeydown": onListKeydown,
|
|
10602
|
+
"onFocusin": onFocusin,
|
|
10603
|
+
"tabindex": "-1"
|
|
10508
10604
|
}, {
|
|
10509
|
-
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
10605
|
+
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
10510
10606
|
"title": t(props.noDataText)
|
|
10511
|
-
}, null)),
|
|
10607
|
+
}, null)), displayItems.value.map((item, index) => {
|
|
10512
10608
|
const itemProps = vue.mergeProps(item.props, {
|
|
10513
10609
|
key: index,
|
|
10514
10610
|
onClick: () => select(item)
|
|
@@ -10800,6 +10896,7 @@
|
|
|
10800
10896
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
10801
10897
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
10802
10898
|
});
|
|
10899
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value);
|
|
10803
10900
|
const listRef = vue.ref();
|
|
10804
10901
|
function onClear(e) {
|
|
10805
10902
|
if (props.openOnClear) {
|
|
@@ -10808,10 +10905,11 @@
|
|
|
10808
10905
|
search.value = '';
|
|
10809
10906
|
}
|
|
10810
10907
|
function onMousedownControl() {
|
|
10811
|
-
if (
|
|
10908
|
+
if (menuDisabled.value) return;
|
|
10812
10909
|
menu.value = true;
|
|
10813
10910
|
}
|
|
10814
10911
|
function onMousedownMenuIcon(e) {
|
|
10912
|
+
if (menuDisabled.value) return;
|
|
10815
10913
|
if (isFocused.value) {
|
|
10816
10914
|
e.preventDefault();
|
|
10817
10915
|
e.stopPropagation();
|
|
@@ -10837,13 +10935,8 @@
|
|
|
10837
10935
|
}
|
|
10838
10936
|
isPristine.value = true;
|
|
10839
10937
|
}
|
|
10840
|
-
if (e.key === 'ArrowDown') {
|
|
10938
|
+
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
10841
10939
|
listRef.value?.focus('next');
|
|
10842
|
-
if (highlightFirst.value) {
|
|
10843
|
-
listRef.value?.focus('next');
|
|
10844
|
-
}
|
|
10845
|
-
} else if (e.key === 'ArrowUp') {
|
|
10846
|
-
listRef.value?.focus('prev');
|
|
10847
10940
|
}
|
|
10848
10941
|
if (!props.multiple) return;
|
|
10849
10942
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
@@ -10878,6 +10971,11 @@
|
|
|
10878
10971
|
}
|
|
10879
10972
|
}
|
|
10880
10973
|
}
|
|
10974
|
+
function onListKeydown(e) {
|
|
10975
|
+
if (e.key === 'Tab') {
|
|
10976
|
+
vTextFieldRef.value?.focus();
|
|
10977
|
+
}
|
|
10978
|
+
}
|
|
10881
10979
|
function onInput(e) {
|
|
10882
10980
|
search.value = e.target.value;
|
|
10883
10981
|
}
|
|
@@ -10947,7 +11045,7 @@
|
|
|
10947
11045
|
});
|
|
10948
11046
|
useRender(() => {
|
|
10949
11047
|
const hasChips = !!(props.chips || slots.chip);
|
|
10950
|
-
const hasList = !!(!props.hideNoData || displayItems.value.length || slots
|
|
11048
|
+
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
10951
11049
|
const isDirty = model.value.length > 0;
|
|
10952
11050
|
const [textFieldProps] = VTextField.filterProps(props);
|
|
10953
11051
|
return vue.createVNode(VTextField, vue.mergeProps({
|
|
@@ -10980,6 +11078,7 @@
|
|
|
10980
11078
|
"onUpdate:modelValue": $event => menu.value = $event,
|
|
10981
11079
|
"activator": "parent",
|
|
10982
11080
|
"contentClass": "v-autocomplete__content",
|
|
11081
|
+
"disabled": menuDisabled.value,
|
|
10983
11082
|
"eager": props.eager,
|
|
10984
11083
|
"maxHeight": 310,
|
|
10985
11084
|
"openOnClick": false,
|
|
@@ -10992,12 +11091,14 @@
|
|
|
10992
11091
|
"selected": selected.value,
|
|
10993
11092
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
10994
11093
|
"onMousedown": e => e.preventDefault(),
|
|
11094
|
+
"onKeydown": onListKeydown,
|
|
10995
11095
|
"onFocusin": onFocusin,
|
|
10996
|
-
"onFocusout": onFocusout
|
|
11096
|
+
"onFocusout": onFocusout,
|
|
11097
|
+
"tabindex": "-1"
|
|
10997
11098
|
}, {
|
|
10998
|
-
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
11099
|
+
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
10999
11100
|
"title": t(props.noDataText)
|
|
11000
|
-
}, null)),
|
|
11101
|
+
}, null)), displayItems.value.map((item, index) => {
|
|
11001
11102
|
const itemProps = vue.mergeProps(item.props, {
|
|
11002
11103
|
key: index,
|
|
11003
11104
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
@@ -11747,7 +11848,7 @@
|
|
|
11747
11848
|
prependAvatar: String,
|
|
11748
11849
|
prependIcon: IconValue,
|
|
11749
11850
|
ripple: {
|
|
11750
|
-
type: Boolean,
|
|
11851
|
+
type: [Boolean, Object],
|
|
11751
11852
|
default: true
|
|
11752
11853
|
},
|
|
11753
11854
|
subtitle: String,
|
|
@@ -13152,6 +13253,8 @@
|
|
|
13152
13253
|
return data;
|
|
13153
13254
|
};
|
|
13154
13255
|
|
|
13256
|
+
// Types
|
|
13257
|
+
|
|
13155
13258
|
const makeVSliderThumbProps = propsFactory({
|
|
13156
13259
|
focused: Boolean,
|
|
13157
13260
|
max: {
|
|
@@ -13171,7 +13274,7 @@
|
|
|
13171
13274
|
required: true
|
|
13172
13275
|
},
|
|
13173
13276
|
ripple: {
|
|
13174
|
-
type: Boolean,
|
|
13277
|
+
type: [Boolean, Object],
|
|
13175
13278
|
default: true
|
|
13176
13279
|
},
|
|
13177
13280
|
...makeComponentProps()
|
|
@@ -14330,6 +14433,7 @@
|
|
|
14330
14433
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
14331
14434
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
14332
14435
|
});
|
|
14436
|
+
const menuDisabled = vue.computed(() => props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value);
|
|
14333
14437
|
const listRef = vue.ref();
|
|
14334
14438
|
function onClear(e) {
|
|
14335
14439
|
cleared = true;
|
|
@@ -14338,10 +14442,11 @@
|
|
|
14338
14442
|
}
|
|
14339
14443
|
}
|
|
14340
14444
|
function onMousedownControl() {
|
|
14341
|
-
if (
|
|
14445
|
+
if (menuDisabled.value) return;
|
|
14342
14446
|
menu.value = true;
|
|
14343
14447
|
}
|
|
14344
14448
|
function onMousedownMenuIcon(e) {
|
|
14449
|
+
if (menuDisabled.value) return;
|
|
14345
14450
|
if (isFocused.value) {
|
|
14346
14451
|
e.preventDefault();
|
|
14347
14452
|
e.stopPropagation();
|
|
@@ -14367,10 +14472,8 @@
|
|
|
14367
14472
|
}
|
|
14368
14473
|
isPristine.value = true;
|
|
14369
14474
|
}
|
|
14370
|
-
if (e.key === 'ArrowDown') {
|
|
14475
|
+
if (e.key === 'ArrowDown' && highlightFirst.value) {
|
|
14371
14476
|
listRef.value?.focus('next');
|
|
14372
|
-
} else if (e.key === 'ArrowUp') {
|
|
14373
|
-
listRef.value?.focus('prev');
|
|
14374
14477
|
}
|
|
14375
14478
|
if (!props.multiple) return;
|
|
14376
14479
|
if (['Backspace', 'Delete'].includes(e.key)) {
|
|
@@ -14409,6 +14512,11 @@
|
|
|
14409
14512
|
search.value = '';
|
|
14410
14513
|
}
|
|
14411
14514
|
}
|
|
14515
|
+
function onListKeydown(e) {
|
|
14516
|
+
if (e.key === 'Tab') {
|
|
14517
|
+
vTextFieldRef.value?.focus();
|
|
14518
|
+
}
|
|
14519
|
+
}
|
|
14412
14520
|
function onAfterLeave() {
|
|
14413
14521
|
if (isFocused.value) {
|
|
14414
14522
|
isPristine.value = true;
|
|
@@ -14470,7 +14578,7 @@
|
|
|
14470
14578
|
});
|
|
14471
14579
|
useRender(() => {
|
|
14472
14580
|
const hasChips = !!(props.chips || slots.chip);
|
|
14473
|
-
const hasList = !!(!props.hideNoData || displayItems.value.length || slots
|
|
14581
|
+
const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
|
|
14474
14582
|
const isDirty = model.value.length > 0;
|
|
14475
14583
|
const [textFieldProps] = VTextField.filterProps(props);
|
|
14476
14584
|
return vue.createVNode(VTextField, vue.mergeProps({
|
|
@@ -14503,6 +14611,7 @@
|
|
|
14503
14611
|
"onUpdate:modelValue": $event => menu.value = $event,
|
|
14504
14612
|
"activator": "parent",
|
|
14505
14613
|
"contentClass": "v-combobox__content",
|
|
14614
|
+
"disabled": menuDisabled.value,
|
|
14506
14615
|
"eager": props.eager,
|
|
14507
14616
|
"maxHeight": 310,
|
|
14508
14617
|
"openOnClick": false,
|
|
@@ -14515,12 +14624,14 @@
|
|
|
14515
14624
|
"selected": selected.value,
|
|
14516
14625
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
14517
14626
|
"onMousedown": e => e.preventDefault(),
|
|
14627
|
+
"onKeydown": onListKeydown,
|
|
14518
14628
|
"onFocusin": onFocusin,
|
|
14519
|
-
"onFocusout": onFocusout
|
|
14629
|
+
"onFocusout": onFocusout,
|
|
14630
|
+
"tabindex": "-1"
|
|
14520
14631
|
}, {
|
|
14521
|
-
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
14632
|
+
default: () => [slots['prepend-item']?.(), !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
14522
14633
|
"title": t(props.noDataText)
|
|
14523
|
-
}, null)),
|
|
14634
|
+
}, null)), displayItems.value.map((item, index) => {
|
|
14524
14635
|
const itemProps = vue.mergeProps(item.props, {
|
|
14525
14636
|
key: index,
|
|
14526
14637
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
@@ -14812,6 +14923,8 @@
|
|
|
14812
14923
|
}
|
|
14813
14924
|
});
|
|
14814
14925
|
|
|
14926
|
+
// Types
|
|
14927
|
+
|
|
14815
14928
|
const makeVExpansionPanelTitleProps = propsFactory({
|
|
14816
14929
|
color: String,
|
|
14817
14930
|
expandIcon: {
|
|
@@ -19507,9 +19620,10 @@
|
|
|
19507
19620
|
allSelected: () => [],
|
|
19508
19621
|
select: _ref => {
|
|
19509
19622
|
let {
|
|
19510
|
-
items
|
|
19623
|
+
items,
|
|
19624
|
+
value
|
|
19511
19625
|
} = _ref;
|
|
19512
|
-
return new Set([items[0]?.value]);
|
|
19626
|
+
return new Set(value ? [items[0]?.value] : []);
|
|
19513
19627
|
},
|
|
19514
19628
|
selectAll: _ref2 => {
|
|
19515
19629
|
let {
|
|
@@ -20397,11 +20511,11 @@
|
|
|
20397
20511
|
"x": x,
|
|
20398
20512
|
"y": y
|
|
20399
20513
|
}, null))])), props.loading && vue.createVNode("tr", {
|
|
20400
|
-
"class": "v-data-
|
|
20514
|
+
"class": "v-data-table-progress"
|
|
20401
20515
|
}, [vue.createVNode("th", {
|
|
20402
20516
|
"colspan": columns.value.length
|
|
20403
20517
|
}, [vue.createVNode(LoaderSlot, {
|
|
20404
|
-
"name": "v-data-table-
|
|
20518
|
+
"name": "v-data-table-progress",
|
|
20405
20519
|
"active": true,
|
|
20406
20520
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
|
20407
20521
|
"indeterminate": true
|
|
@@ -22393,7 +22507,7 @@
|
|
|
22393
22507
|
date
|
|
22394
22508
|
};
|
|
22395
22509
|
}
|
|
22396
|
-
const version$1 = "3.3.
|
|
22510
|
+
const version$1 = "3.3.3";
|
|
22397
22511
|
createVuetify$1.version = version$1;
|
|
22398
22512
|
|
|
22399
22513
|
// Vue's inject() can only be used in setup
|
|
@@ -22407,7 +22521,7 @@
|
|
|
22407
22521
|
|
|
22408
22522
|
/* eslint-disable local-rules/sort-imports */
|
|
22409
22523
|
|
|
22410
|
-
const version = "3.3.
|
|
22524
|
+
const version = "3.3.3";
|
|
22411
22525
|
|
|
22412
22526
|
/* eslint-disable local-rules/sort-imports */
|
|
22413
22527
|
|