vuetify 3.0.3 → 3.0.5
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 +907 -891
- package/dist/json/importMap.json +74 -74
- package/dist/json/tags.json +4 -0
- package/dist/json/web-types.json +1163 -1123
- package/dist/vuetify.css +64 -67
- package/dist/vuetify.d.ts +230 -120
- package/dist/vuetify.esm.js +355 -295
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +355 -295
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +712 -708
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +25 -8
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs +6 -3
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBottomNavigation/index.d.ts +9 -0
- package/lib/components/VBtn/index.d.ts +2 -3
- package/lib/components/VCard/index.d.ts +2 -3
- package/lib/components/VCheckbox/VCheckbox.css +1 -1
- package/lib/components/VCheckbox/VCheckbox.sass +1 -1
- package/lib/components/VChip/VChip.mjs +15 -7
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/index.d.ts +2 -0
- package/lib/components/VColorPicker/VColorPicker.mjs +2 -2
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/util/index.mjs +24 -14
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +1 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +25 -8
- package/lib/components/VDialog/index.d.ts +21 -6
- package/lib/components/VField/VField.mjs +1 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/index.d.ts +5 -8
- package/lib/components/VFileInput/index.d.ts +2 -3
- package/lib/components/VGrid/VGrid.css +2 -2
- package/lib/components/VGrid/VGrid.sass +1 -1
- package/lib/components/VList/VListItem.mjs +2 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VMenu/index.d.ts +21 -6
- package/lib/components/VOverlay/VOverlay.mjs +10 -3
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.ts +8 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +6 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +25 -8
- package/lib/components/VSelectionControl/VSelectionControl.css +4 -0
- package/lib/components/VSelectionControl/VSelectionControl.sass +4 -0
- package/lib/components/VSnackbar/index.d.ts +21 -6
- package/lib/components/VSwitch/VSwitch.css +1 -1
- package/lib/components/VSwitch/VSwitch.sass +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +1 -1
- package/lib/components/VSystemBar/_variables.scss +1 -1
- package/lib/components/VTabs/VTab.css +2 -5
- package/lib/components/VTabs/VTab.sass +4 -6
- package/lib/components/VTabs/VTabs.css +0 -4
- package/lib/components/VTabs/VTabs.sass +0 -5
- package/lib/components/VTextField/index.d.ts +20 -29
- package/lib/components/VTextarea/index.d.ts +2 -3
- package/lib/components/VToolbar/VToolbar.mjs +32 -16
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.mjs +2 -1
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.ts +21 -6
- package/lib/components/index.d.ts +208 -98
- package/lib/composables/display.mjs +5 -4
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/hydration.mjs +13 -8
- package/lib/composables/hydration.mjs.map +1 -1
- package/lib/composables/loader.mjs +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/stack.mjs +16 -9
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/theme.mjs +7 -7
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/validation.mjs +2 -2
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +22 -22
- package/lib/services/goto/util.mjs +1 -1
- package/lib/services/goto/util.mjs.map +1 -1
- package/lib/util/color/APCA.mjs +6 -6
- package/lib/util/color/APCA.mjs.map +1 -1
- package/lib/util/color/transformSRGB.mjs +15 -7
- package/lib/util/color/transformSRGB.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +64 -81
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/console.mjs +3 -3
- package/lib/util/console.mjs.map +1 -1
- package/package.json +2 -2
package/dist/vuetify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.0.
|
|
2
|
+
* Vuetify v3.0.5
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
|
|
514
514
|
if (parent) {
|
|
515
515
|
vm = {
|
|
516
|
-
|
|
516
|
+
__isVue: true,
|
|
517
517
|
$parent: parent,
|
|
518
518
|
$options: vm
|
|
519
519
|
};
|
|
@@ -545,7 +545,7 @@
|
|
|
545
545
|
if (vm.$root === vm) {
|
|
546
546
|
return '<Root>';
|
|
547
547
|
}
|
|
548
|
-
const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm.
|
|
548
|
+
const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm.__isVue ? vm.$options || vm.constructor.options : vm || {};
|
|
549
549
|
let name = options.name || options._componentTag;
|
|
550
550
|
const file = options.__file;
|
|
551
551
|
if (!name && file) {
|
|
@@ -555,7 +555,7 @@
|
|
|
555
555
|
return (name ? `<${classify(name)}>` : `<Anonymous>`) + (file && includeFile !== false ? ` at ${file}` : '');
|
|
556
556
|
}
|
|
557
557
|
function generateComponentTrace(vm) {
|
|
558
|
-
if (vm.
|
|
558
|
+
if (vm.__isVue && vm.$parent) {
|
|
559
559
|
const tree = [];
|
|
560
560
|
let currentRecursiveSequence = 0;
|
|
561
561
|
while (vm) {
|
|
@@ -599,21 +599,29 @@
|
|
|
599
599
|
|
|
600
600
|
// Matrix transform, then gamma adjustment
|
|
601
601
|
for (let i = 0; i < 3; ++i) {
|
|
602
|
+
// Rescale back to [0, 255]
|
|
602
603
|
rgb[i] = Math.round(clamp(transform(matrix[i][0] * xyz[0] + matrix[i][1] * xyz[1] + matrix[i][2] * xyz[2])) * 255);
|
|
603
604
|
}
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
605
|
+
return {
|
|
606
|
+
r: rgb[0],
|
|
607
|
+
g: rgb[1],
|
|
608
|
+
b: rgb[2]
|
|
609
|
+
};
|
|
607
610
|
}
|
|
608
|
-
function toXYZ$1(
|
|
611
|
+
function toXYZ$1(_ref) {
|
|
612
|
+
let {
|
|
613
|
+
r,
|
|
614
|
+
g,
|
|
615
|
+
b
|
|
616
|
+
} = _ref;
|
|
609
617
|
const xyz = [0, 0, 0];
|
|
610
618
|
const transform = srgbReverseTransform;
|
|
611
619
|
const matrix = srgbReverseMatrix;
|
|
612
620
|
|
|
613
621
|
// Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
622
|
+
r = transform(r / 255);
|
|
623
|
+
g = transform(g / 255);
|
|
624
|
+
b = transform(b / 255);
|
|
617
625
|
|
|
618
626
|
// Matrix color space transform
|
|
619
627
|
for (let i = 0; i < 3; ++i) {
|
|
@@ -644,43 +652,36 @@
|
|
|
644
652
|
function isCssColor(color) {
|
|
645
653
|
return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
|
|
646
654
|
}
|
|
647
|
-
function
|
|
648
|
-
let rgb;
|
|
655
|
+
function parseColor$1(color) {
|
|
649
656
|
if (typeof color === 'number') {
|
|
650
|
-
|
|
657
|
+
if (isNaN(color) || color < 0 || color > 0xFFFFFF) {
|
|
658
|
+
// int can't have opacity
|
|
659
|
+
consoleWarn(`'${color}' is not a valid hex color`);
|
|
660
|
+
}
|
|
661
|
+
return {
|
|
662
|
+
r: (color & 0xFF0000) >> 16,
|
|
663
|
+
g: (color & 0xFF00) >> 8,
|
|
664
|
+
b: color & 0xFF
|
|
665
|
+
};
|
|
651
666
|
} else if (typeof color === 'string') {
|
|
652
|
-
let
|
|
653
|
-
if (
|
|
654
|
-
|
|
667
|
+
let hex = color.startsWith('#') ? color.slice(1) : color;
|
|
668
|
+
if ([3, 4].includes(hex.length)) {
|
|
669
|
+
hex = hex.split('').map(char => char + char).join('');
|
|
670
|
+
} else if (![6, 8].includes(hex.length)) {
|
|
671
|
+
consoleWarn(`'${color}' is not a valid hex(a) color`);
|
|
655
672
|
}
|
|
656
|
-
|
|
657
|
-
|
|
673
|
+
const int = parseInt(hex, 16);
|
|
674
|
+
if (isNaN(int) || int < 0 || int > 0xFFFFFFFF) {
|
|
675
|
+
consoleWarn(`'${color}' is not a valid hex(a) color`);
|
|
658
676
|
}
|
|
659
|
-
|
|
677
|
+
return HexToRGB(hex);
|
|
660
678
|
} else {
|
|
661
679
|
throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`);
|
|
662
680
|
}
|
|
663
|
-
if (rgb < 0) {
|
|
664
|
-
consoleWarn(`Colors cannot be negative: '${color}'`);
|
|
665
|
-
rgb = 0;
|
|
666
|
-
} else if (rgb > 0xffffffff || isNaN(rgb)) {
|
|
667
|
-
consoleWarn(`'${color}' is not a valid rgb color`);
|
|
668
|
-
rgb = 0xffffff;
|
|
669
|
-
}
|
|
670
|
-
return rgb;
|
|
671
|
-
}
|
|
672
|
-
function intToHex(color) {
|
|
673
|
-
let hexColor = color.toString(16);
|
|
674
|
-
if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor;
|
|
675
|
-
return '#' + hexColor;
|
|
676
681
|
}
|
|
677
682
|
|
|
678
|
-
/**
|
|
679
|
-
|
|
680
|
-
*
|
|
681
|
-
* @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]
|
|
682
|
-
*/
|
|
683
|
-
function HSVAtoRGBA(hsva) {
|
|
683
|
+
/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
|
|
684
|
+
function HSVtoRGB(hsva) {
|
|
684
685
|
const {
|
|
685
686
|
h,
|
|
686
687
|
s,
|
|
@@ -700,12 +701,8 @@
|
|
|
700
701
|
};
|
|
701
702
|
}
|
|
702
703
|
|
|
703
|
-
/**
|
|
704
|
-
|
|
705
|
-
*
|
|
706
|
-
* @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]
|
|
707
|
-
*/
|
|
708
|
-
function RGBAtoHSVA(rgba) {
|
|
704
|
+
/** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
|
|
705
|
+
function RGBtoHSV(rgba) {
|
|
709
706
|
if (!rgba) return {
|
|
710
707
|
h: 0,
|
|
711
708
|
s: 1,
|
|
@@ -737,7 +734,7 @@
|
|
|
737
734
|
a: rgba.a
|
|
738
735
|
};
|
|
739
736
|
}
|
|
740
|
-
function
|
|
737
|
+
function HSVtoHSL(hsva) {
|
|
741
738
|
const {
|
|
742
739
|
h,
|
|
743
740
|
s,
|
|
@@ -753,7 +750,7 @@
|
|
|
753
750
|
a
|
|
754
751
|
};
|
|
755
752
|
}
|
|
756
|
-
function
|
|
753
|
+
function HSLtoHSV(hsl) {
|
|
757
754
|
const {
|
|
758
755
|
h,
|
|
759
756
|
s,
|
|
@@ -769,34 +766,47 @@
|
|
|
769
766
|
a
|
|
770
767
|
};
|
|
771
768
|
}
|
|
772
|
-
function
|
|
773
|
-
|
|
769
|
+
function RGBtoCSS(_ref) {
|
|
770
|
+
let {
|
|
771
|
+
r,
|
|
772
|
+
g,
|
|
773
|
+
b,
|
|
774
|
+
a
|
|
775
|
+
} = _ref;
|
|
776
|
+
return a === undefined ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`;
|
|
774
777
|
}
|
|
775
|
-
function
|
|
776
|
-
return
|
|
778
|
+
function HSVtoCSS(hsva) {
|
|
779
|
+
return RGBtoCSS(HSVtoRGB(hsva));
|
|
777
780
|
}
|
|
778
|
-
function
|
|
779
|
-
const
|
|
780
|
-
|
|
781
|
-
return ('00'.substr(0, 2 - h.length) + h).toUpperCase();
|
|
782
|
-
};
|
|
783
|
-
return `#${[toHex(rgba.r), toHex(rgba.g), toHex(rgba.b), toHex(Math.round(rgba.a * 255))].join('')}`;
|
|
781
|
+
function toHex(v) {
|
|
782
|
+
const h = Math.round(v).toString(16);
|
|
783
|
+
return ('00'.substr(0, 2 - h.length) + h).toUpperCase();
|
|
784
784
|
}
|
|
785
|
-
function
|
|
786
|
-
|
|
785
|
+
function RGBtoHex(_ref2) {
|
|
786
|
+
let {
|
|
787
|
+
r,
|
|
788
|
+
g,
|
|
789
|
+
b,
|
|
790
|
+
a
|
|
791
|
+
} = _ref2;
|
|
792
|
+
return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : 'FF'].join('')}`;
|
|
793
|
+
}
|
|
794
|
+
function HexToRGB(hex) {
|
|
795
|
+
let [r, g, b, a] = chunk(hex, 2).map(c => parseInt(c, 16));
|
|
796
|
+
a = a === undefined ? a : Math.round(a / 255 * 100) / 100;
|
|
787
797
|
return {
|
|
788
|
-
r
|
|
789
|
-
g
|
|
790
|
-
b
|
|
791
|
-
a
|
|
798
|
+
r,
|
|
799
|
+
g,
|
|
800
|
+
b,
|
|
801
|
+
a
|
|
792
802
|
};
|
|
793
803
|
}
|
|
794
|
-
function
|
|
795
|
-
const rgb =
|
|
796
|
-
return
|
|
804
|
+
function HexToHSV(hex) {
|
|
805
|
+
const rgb = HexToRGB(hex);
|
|
806
|
+
return RGBtoHSV(rgb);
|
|
797
807
|
}
|
|
798
|
-
function
|
|
799
|
-
return
|
|
808
|
+
function HSVtoHex(hsva) {
|
|
809
|
+
return RGBtoHex(HSVtoRGB(hsva));
|
|
800
810
|
}
|
|
801
811
|
function parseHex(hex) {
|
|
802
812
|
if (hex.startsWith('#')) {
|
|
@@ -811,20 +821,10 @@
|
|
|
811
821
|
} else {
|
|
812
822
|
hex = padEnd(padEnd(hex, 6), 8, 'F');
|
|
813
823
|
}
|
|
814
|
-
return
|
|
815
|
-
}
|
|
816
|
-
function colorToRGB(color) {
|
|
817
|
-
const int = colorToInt(color);
|
|
818
|
-
return {
|
|
819
|
-
r: (int & 0xFF0000) >> 16,
|
|
820
|
-
g: (int & 0xFF00) >> 8,
|
|
821
|
-
b: int & 0xFF
|
|
822
|
-
};
|
|
824
|
+
return hex;
|
|
823
825
|
}
|
|
824
826
|
function lighten(value, amount) {
|
|
825
827
|
const lab = fromXYZ(toXYZ$1(value));
|
|
826
|
-
// TODO: why this false positive?
|
|
827
|
-
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
|
828
828
|
lab[0] = lab[0] + amount * 10;
|
|
829
829
|
return fromXYZ$1(toXYZ(lab));
|
|
830
830
|
}
|
|
@@ -839,7 +839,7 @@
|
|
|
839
839
|
* @see https://www.w3.org/TR/WCAG20/#relativeluminancedef
|
|
840
840
|
*/
|
|
841
841
|
function getLuma(color) {
|
|
842
|
-
const rgb =
|
|
842
|
+
const rgb = parseColor$1(color);
|
|
843
843
|
return toXYZ$1(rgb)[1];
|
|
844
844
|
}
|
|
845
845
|
|
|
@@ -1470,12 +1470,12 @@
|
|
|
1470
1470
|
|
|
1471
1471
|
function APCAcontrast(text, background) {
|
|
1472
1472
|
// Linearize sRGB
|
|
1473
|
-
const Rtxt = (
|
|
1474
|
-
const Gtxt = (
|
|
1475
|
-
const Btxt = (
|
|
1476
|
-
const Rbg = (
|
|
1477
|
-
const Gbg = (
|
|
1478
|
-
const Bbg = (
|
|
1473
|
+
const Rtxt = (text.r / 255) ** mainTRC;
|
|
1474
|
+
const Gtxt = (text.g / 255) ** mainTRC;
|
|
1475
|
+
const Btxt = (text.b / 255) ** mainTRC;
|
|
1476
|
+
const Rbg = (background.r / 255) ** mainTRC;
|
|
1477
|
+
const Gbg = (background.g / 255) ** mainTRC;
|
|
1478
|
+
const Bbg = (background.b / 255) ** mainTRC;
|
|
1479
1479
|
|
|
1480
1480
|
// Apply the standard coefficients and sum to Y
|
|
1481
1481
|
let Ytxt = Rtxt * Rco + Gtxt * Gco + Btxt * Bco;
|
|
@@ -1641,7 +1641,7 @@
|
|
|
1641
1641
|
for (const variation of ['lighten', 'darken']) {
|
|
1642
1642
|
const fn = variation === 'lighten' ? lighten : darken;
|
|
1643
1643
|
for (const amount of createRange(parsedOptions.variations[variation], 1)) {
|
|
1644
|
-
theme.colors[`${name}-${variation}-${amount}`] =
|
|
1644
|
+
theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor$1(color), amount));
|
|
1645
1645
|
}
|
|
1646
1646
|
}
|
|
1647
1647
|
}
|
|
@@ -1649,9 +1649,9 @@
|
|
|
1649
1649
|
for (const color of Object.keys(theme.colors)) {
|
|
1650
1650
|
if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
|
|
1651
1651
|
const onColor = `on-${color}`;
|
|
1652
|
-
const colorVal =
|
|
1653
|
-
const blackContrast = Math.abs(APCAcontrast(0, colorVal));
|
|
1654
|
-
const whiteContrast = Math.abs(APCAcontrast(0xffffff, colorVal));
|
|
1652
|
+
const colorVal = parseColor$1(theme.colors[color]);
|
|
1653
|
+
const blackContrast = Math.abs(APCAcontrast(parseColor$1(0), colorVal));
|
|
1654
|
+
const whiteContrast = Math.abs(APCAcontrast(parseColor$1(0xffffff), colorVal));
|
|
1655
1655
|
|
|
1656
1656
|
// TODO: warn about poor color selections
|
|
1657
1657
|
// const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
|
|
@@ -1681,7 +1681,7 @@
|
|
|
1681
1681
|
} = theme;
|
|
1682
1682
|
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${dark ? 'dark' : 'normal'}`, ...genCssVariables(theme), ...Object.keys(variables).map(key => {
|
|
1683
1683
|
const value = variables[key];
|
|
1684
|
-
const color = typeof value === 'string' && value.startsWith('#') ?
|
|
1684
|
+
const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
|
|
1685
1685
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
|
1686
1686
|
return `--v-${key}: ${rgb ?? value}`;
|
|
1687
1687
|
})]);
|
|
@@ -1783,7 +1783,7 @@
|
|
|
1783
1783
|
const darkOverlay = theme.dark ? 1 : 2;
|
|
1784
1784
|
const variables = [];
|
|
1785
1785
|
for (const [key, value] of Object.entries(theme.colors)) {
|
|
1786
|
-
const rgb =
|
|
1786
|
+
const rgb = parseColor$1(value);
|
|
1787
1787
|
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
|
1788
1788
|
if (!key.startsWith('on-')) {
|
|
1789
1789
|
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
|
@@ -3180,27 +3180,43 @@
|
|
|
3180
3180
|
}
|
|
3181
3181
|
}, {
|
|
3182
3182
|
default: () => [slots.image ? (_slots$image = slots.image) == null ? void 0 : _slots$image.call(slots) : vue.createVNode(VImg, null, null)]
|
|
3183
|
-
})]), vue.createVNode(
|
|
3184
|
-
"
|
|
3185
|
-
|
|
3186
|
-
|
|
3183
|
+
})]), vue.createVNode(VDefaultsProvider, {
|
|
3184
|
+
"defaults": {
|
|
3185
|
+
VTabs: {
|
|
3186
|
+
height: convertToUnit(contentHeight.value)
|
|
3187
|
+
}
|
|
3187
3188
|
}
|
|
3188
|
-
}, [slots.prepend && vue.createVNode("div", {
|
|
3189
|
-
"class": "v-toolbar__prepend"
|
|
3190
|
-
}, [(_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots)]), hasTitle && vue.createVNode(VToolbarTitle, {
|
|
3191
|
-
"key": "title",
|
|
3192
|
-
"text": props.title
|
|
3193
3189
|
}, {
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
"class": "v-toolbar__append"
|
|
3197
|
-
}, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots)])]), vue.createVNode(VExpandTransition, null, {
|
|
3198
|
-
default: () => [isExtended.value && vue.createVNode("div", {
|
|
3199
|
-
"class": "v-toolbar__extension",
|
|
3190
|
+
default: () => [vue.createVNode("div", {
|
|
3191
|
+
"class": "v-toolbar__content",
|
|
3200
3192
|
"style": {
|
|
3193
|
+
height: convertToUnit(contentHeight.value)
|
|
3194
|
+
}
|
|
3195
|
+
}, [slots.prepend && vue.createVNode("div", {
|
|
3196
|
+
"class": "v-toolbar__prepend"
|
|
3197
|
+
}, [(_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots)]), hasTitle && vue.createVNode(VToolbarTitle, {
|
|
3198
|
+
"key": "title",
|
|
3199
|
+
"text": props.title
|
|
3200
|
+
}, {
|
|
3201
|
+
text: slots.title
|
|
3202
|
+
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.append && vue.createVNode("div", {
|
|
3203
|
+
"class": "v-toolbar__append"
|
|
3204
|
+
}, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots)])])]
|
|
3205
|
+
}), vue.createVNode(VDefaultsProvider, {
|
|
3206
|
+
"defaults": {
|
|
3207
|
+
VTabs: {
|
|
3201
3208
|
height: convertToUnit(extensionHeight.value)
|
|
3202
3209
|
}
|
|
3203
|
-
}
|
|
3210
|
+
}
|
|
3211
|
+
}, {
|
|
3212
|
+
default: () => [vue.createVNode(VExpandTransition, null, {
|
|
3213
|
+
default: () => [isExtended.value && vue.createVNode("div", {
|
|
3214
|
+
"class": "v-toolbar__extension",
|
|
3215
|
+
"style": {
|
|
3216
|
+
height: convertToUnit(extensionHeight.value)
|
|
3217
|
+
}
|
|
3218
|
+
}, [extension])]
|
|
3219
|
+
})]
|
|
3204
3220
|
})]
|
|
3205
3221
|
});
|
|
3206
3222
|
});
|
|
@@ -4520,7 +4536,7 @@
|
|
|
4520
4536
|
|
|
4521
4537
|
// Composables
|
|
4522
4538
|
const makeLoaderProps = propsFactory({
|
|
4523
|
-
loading: Boolean
|
|
4539
|
+
loading: [Boolean, String]
|
|
4524
4540
|
}, 'loader');
|
|
4525
4541
|
function useLoader(props) {
|
|
4526
4542
|
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
|
|
@@ -5398,7 +5414,7 @@
|
|
|
5398
5414
|
"class": "v-field__overlay"
|
|
5399
5415
|
}, null), vue.createVNode(LoaderSlot, {
|
|
5400
5416
|
"name": "v-field",
|
|
5401
|
-
"active": props.loading,
|
|
5417
|
+
"active": !!props.loading,
|
|
5402
5418
|
"color": props.error ? 'error' : props.color
|
|
5403
5419
|
}, {
|
|
5404
5420
|
default: slots.loader
|
|
@@ -5691,7 +5707,7 @@
|
|
|
5691
5707
|
const isDisabled = vue.computed(() => !!(props.disabled || form != null && form.isDisabled.value));
|
|
5692
5708
|
const isReadonly = vue.computed(() => !!(props.readonly || form != null && form.isReadonly.value));
|
|
5693
5709
|
const errorMessages = vue.computed(() => {
|
|
5694
|
-
return props.errorMessages.length ? wrapInArray(props.errorMessages) : internalErrorMessages.value;
|
|
5710
|
+
return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
|
|
5695
5711
|
});
|
|
5696
5712
|
const isValid = vue.computed(() => {
|
|
5697
5713
|
if (props.error || errorMessages.value.length) return false;
|
|
@@ -5755,7 +5771,7 @@
|
|
|
5755
5771
|
const results = [];
|
|
5756
5772
|
isValidating.value = true;
|
|
5757
5773
|
for (const rule of props.rules) {
|
|
5758
|
-
if (results.length >= (props.maxErrors
|
|
5774
|
+
if (results.length >= (props.maxErrors ?? 1)) {
|
|
5759
5775
|
break;
|
|
5760
5776
|
}
|
|
5761
5777
|
const handler = typeof rule === 'function' ? rule : () => rule;
|
|
@@ -6729,7 +6745,8 @@
|
|
|
6729
6745
|
emits: {
|
|
6730
6746
|
'click:close': e => true,
|
|
6731
6747
|
'update:modelValue': value => true,
|
|
6732
|
-
'group:selected': val => true
|
|
6748
|
+
'group:selected': val => true,
|
|
6749
|
+
click: e => true
|
|
6733
6750
|
},
|
|
6734
6751
|
setup(props, _ref) {
|
|
6735
6752
|
let {
|
|
@@ -6763,10 +6780,18 @@
|
|
|
6763
6780
|
const isActive = useProxiedModel(props, 'modelValue');
|
|
6764
6781
|
const group = useGroupItem(props, VChipGroupSymbol, false);
|
|
6765
6782
|
const link = useLink(props, attrs);
|
|
6783
|
+
const isClickable = vue.computed(() => !props.disabled && (!!group || link.isClickable.value || props.link));
|
|
6766
6784
|
function onCloseClick(e) {
|
|
6767
6785
|
isActive.value = false;
|
|
6768
6786
|
emit('click:close', e);
|
|
6769
6787
|
}
|
|
6788
|
+
function onClick(e) {
|
|
6789
|
+
var _link$navigate;
|
|
6790
|
+
emit('click', e);
|
|
6791
|
+
if (!isClickable.value) return;
|
|
6792
|
+
(_link$navigate = link.navigate) == null ? void 0 : _link$navigate.call(link, e);
|
|
6793
|
+
group == null ? void 0 : group.toggle();
|
|
6794
|
+
}
|
|
6770
6795
|
return () => {
|
|
6771
6796
|
var _slots$default;
|
|
6772
6797
|
const Tag = link.isLink.value ? 'a' : props.tag;
|
|
@@ -6775,13 +6800,11 @@
|
|
|
6775
6800
|
const hasFilter = !!(slots.filter || props.filter) && group;
|
|
6776
6801
|
const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
|
|
6777
6802
|
const hasColor = !group || group.isSelected.value;
|
|
6778
|
-
const isClickable = !props.disabled && (!!group || link.isClickable.value || props.link);
|
|
6779
|
-
const onClickFunc = props.link ? props.link : group == null ? void 0 : group.toggle;
|
|
6780
6803
|
return isActive.value && vue.withDirectives(vue.createVNode(Tag, {
|
|
6781
6804
|
"class": ['v-chip', {
|
|
6782
6805
|
'v-chip--disabled': props.disabled,
|
|
6783
6806
|
'v-chip--label': props.label,
|
|
6784
|
-
'v-chip--link': isClickable,
|
|
6807
|
+
'v-chip--link': isClickable.value,
|
|
6785
6808
|
'v-chip--filter': hasFilter,
|
|
6786
6809
|
'v-chip--pill': props.pill
|
|
6787
6810
|
}, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group == null ? void 0 : group.selectedClass.value],
|
|
@@ -6789,9 +6812,9 @@
|
|
|
6789
6812
|
"disabled": props.disabled || undefined,
|
|
6790
6813
|
"draggable": props.draggable,
|
|
6791
6814
|
"href": link.href.value,
|
|
6792
|
-
"onClick":
|
|
6815
|
+
"onClick": onClick
|
|
6793
6816
|
}, {
|
|
6794
|
-
default: () => [genOverlays(isClickable, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
|
|
6817
|
+
default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
|
|
6795
6818
|
"key": "filter",
|
|
6796
6819
|
"defaults": {
|
|
6797
6820
|
VIcon: {
|
|
@@ -6861,7 +6884,7 @@
|
|
|
6861
6884
|
"onClick": onCloseClick
|
|
6862
6885
|
}, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
|
|
6863
6886
|
})]
|
|
6864
|
-
}), [[vue.resolveDirective("ripple"), isClickable && props.ripple, null]]);
|
|
6887
|
+
}), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
|
|
6865
6888
|
};
|
|
6866
6889
|
}
|
|
6867
6890
|
});
|
|
@@ -7657,7 +7680,8 @@
|
|
|
7657
7680
|
"key": "prepend-icon"
|
|
7658
7681
|
}, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)])]
|
|
7659
7682
|
}), vue.createVNode("div", {
|
|
7660
|
-
"class": "v-list-item__content"
|
|
7683
|
+
"class": "v-list-item__content",
|
|
7684
|
+
"data-no-activator": ""
|
|
7661
7685
|
}, [hasTitle && vue.createVNode(VListItemTitle, {
|
|
7662
7686
|
"key": "title"
|
|
7663
7687
|
}, {
|
|
@@ -9023,25 +9047,163 @@
|
|
|
9023
9047
|
});
|
|
9024
9048
|
}
|
|
9025
9049
|
|
|
9050
|
+
// Utilities
|
|
9051
|
+
|
|
9052
|
+
// Types
|
|
9053
|
+
|
|
9054
|
+
const DisplaySymbol = Symbol.for('vuetify:display');
|
|
9055
|
+
const defaultDisplayOptions = {
|
|
9056
|
+
mobileBreakpoint: 'lg',
|
|
9057
|
+
thresholds: {
|
|
9058
|
+
xs: 0,
|
|
9059
|
+
sm: 600,
|
|
9060
|
+
md: 960,
|
|
9061
|
+
lg: 1280,
|
|
9062
|
+
xl: 1920,
|
|
9063
|
+
xxl: 2560
|
|
9064
|
+
}
|
|
9065
|
+
};
|
|
9066
|
+
const parseDisplayOptions = function () {
|
|
9067
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
|
|
9068
|
+
return mergeDeep(defaultDisplayOptions, options);
|
|
9069
|
+
};
|
|
9070
|
+
function getClientWidth(isHydrate) {
|
|
9071
|
+
return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
|
|
9072
|
+
}
|
|
9073
|
+
function getClientHeight(isHydrate) {
|
|
9074
|
+
return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
|
|
9075
|
+
}
|
|
9076
|
+
function getPlatform() {
|
|
9077
|
+
const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
|
|
9078
|
+
function match(regexp) {
|
|
9079
|
+
return Boolean(userAgent.match(regexp));
|
|
9080
|
+
}
|
|
9081
|
+
const android = match(/android/i);
|
|
9082
|
+
const ios = match(/iphone|ipad|ipod/i);
|
|
9083
|
+
const cordova = match(/cordova/i);
|
|
9084
|
+
const electron = match(/electron/i);
|
|
9085
|
+
const chrome = match(/chrome/i);
|
|
9086
|
+
const edge = match(/edge/i);
|
|
9087
|
+
const firefox = match(/firefox/i);
|
|
9088
|
+
const opera = match(/opera/i);
|
|
9089
|
+
const win = match(/win/i);
|
|
9090
|
+
const mac = match(/mac/i);
|
|
9091
|
+
const linux = match(/linux/i);
|
|
9092
|
+
const ssr = match(/ssr/i);
|
|
9093
|
+
return {
|
|
9094
|
+
android,
|
|
9095
|
+
ios,
|
|
9096
|
+
cordova,
|
|
9097
|
+
electron,
|
|
9098
|
+
chrome,
|
|
9099
|
+
edge,
|
|
9100
|
+
firefox,
|
|
9101
|
+
opera,
|
|
9102
|
+
win,
|
|
9103
|
+
mac,
|
|
9104
|
+
linux,
|
|
9105
|
+
touch: SUPPORTS_TOUCH,
|
|
9106
|
+
ssr
|
|
9107
|
+
};
|
|
9108
|
+
}
|
|
9109
|
+
function createDisplay(options, ssr) {
|
|
9110
|
+
const {
|
|
9111
|
+
thresholds,
|
|
9112
|
+
mobileBreakpoint
|
|
9113
|
+
} = parseDisplayOptions(options);
|
|
9114
|
+
const height = vue.ref(getClientHeight(ssr));
|
|
9115
|
+
const platform = getPlatform();
|
|
9116
|
+
const state = vue.reactive({});
|
|
9117
|
+
const width = vue.ref(getClientWidth(ssr));
|
|
9118
|
+
function update() {
|
|
9119
|
+
height.value = getClientHeight();
|
|
9120
|
+
width.value = getClientWidth();
|
|
9121
|
+
}
|
|
9122
|
+
|
|
9123
|
+
// eslint-disable-next-line max-statements
|
|
9124
|
+
vue.watchEffect(() => {
|
|
9125
|
+
const xs = width.value < thresholds.sm;
|
|
9126
|
+
const sm = width.value < thresholds.md && !xs;
|
|
9127
|
+
const md = width.value < thresholds.lg && !(sm || xs);
|
|
9128
|
+
const lg = width.value < thresholds.xl && !(md || sm || xs);
|
|
9129
|
+
const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);
|
|
9130
|
+
const xxl = width.value >= thresholds.xxl;
|
|
9131
|
+
const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
|
|
9132
|
+
const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
|
|
9133
|
+
const mobile = !platform.ssr ? width.value < breakpointValue : platform.android || platform.ios || platform.opera;
|
|
9134
|
+
state.xs = xs;
|
|
9135
|
+
state.sm = sm;
|
|
9136
|
+
state.md = md;
|
|
9137
|
+
state.lg = lg;
|
|
9138
|
+
state.xl = xl;
|
|
9139
|
+
state.xxl = xxl;
|
|
9140
|
+
state.smAndUp = !xs;
|
|
9141
|
+
state.mdAndUp = !(xs || sm);
|
|
9142
|
+
state.lgAndUp = !(xs || sm || md);
|
|
9143
|
+
state.xlAndUp = !(xs || sm || md || lg);
|
|
9144
|
+
state.smAndDown = !(md || lg || xl || xxl);
|
|
9145
|
+
state.mdAndDown = !(lg || xl || xxl);
|
|
9146
|
+
state.lgAndDown = !(xl || xxl);
|
|
9147
|
+
state.xlAndDown = !xxl;
|
|
9148
|
+
state.name = name;
|
|
9149
|
+
state.height = height.value;
|
|
9150
|
+
state.width = width.value;
|
|
9151
|
+
state.mobile = mobile;
|
|
9152
|
+
state.mobileBreakpoint = mobileBreakpoint;
|
|
9153
|
+
state.platform = platform;
|
|
9154
|
+
state.thresholds = thresholds;
|
|
9155
|
+
});
|
|
9156
|
+
if (IN_BROWSER) {
|
|
9157
|
+
window.addEventListener('resize', update, {
|
|
9158
|
+
passive: true
|
|
9159
|
+
});
|
|
9160
|
+
}
|
|
9161
|
+
return {
|
|
9162
|
+
...vue.toRefs(state),
|
|
9163
|
+
update,
|
|
9164
|
+
ssr: !!ssr
|
|
9165
|
+
};
|
|
9166
|
+
}
|
|
9167
|
+
function useDisplay() {
|
|
9168
|
+
const display = vue.inject(DisplaySymbol);
|
|
9169
|
+
if (!display) throw new Error('Could not find Vuetify display injection');
|
|
9170
|
+
return display;
|
|
9171
|
+
}
|
|
9172
|
+
|
|
9026
9173
|
// Utilities
|
|
9027
9174
|
function useHydration() {
|
|
9028
|
-
var _vm$root, _vm$root$appContext, _vm$root$appContext$a;
|
|
9029
9175
|
if (!IN_BROWSER) return vue.ref(false);
|
|
9030
|
-
const
|
|
9031
|
-
|
|
9032
|
-
|
|
9033
|
-
if (
|
|
9034
|
-
|
|
9176
|
+
const {
|
|
9177
|
+
ssr
|
|
9178
|
+
} = useDisplay();
|
|
9179
|
+
if (ssr) {
|
|
9180
|
+
const isMounted = vue.ref(false);
|
|
9181
|
+
vue.onMounted(() => {
|
|
9182
|
+
isMounted.value = true;
|
|
9183
|
+
});
|
|
9184
|
+
return isMounted;
|
|
9185
|
+
} else {
|
|
9186
|
+
return vue.ref(true);
|
|
9035
9187
|
}
|
|
9036
|
-
|
|
9188
|
+
}
|
|
9189
|
+
|
|
9190
|
+
function useScopeId() {
|
|
9191
|
+
const vm = getCurrentInstance('useScopeId');
|
|
9192
|
+
const scopeId = vm.vnode.scopeId;
|
|
9193
|
+
return {
|
|
9194
|
+
scopeId: scopeId ? {
|
|
9195
|
+
[scopeId]: ''
|
|
9196
|
+
} : undefined
|
|
9197
|
+
};
|
|
9037
9198
|
}
|
|
9038
9199
|
|
|
9039
9200
|
// Types
|
|
9040
9201
|
|
|
9041
9202
|
const StackSymbol = Symbol.for('vuetify:stack');
|
|
9042
9203
|
const globalStack = vue.reactive([]);
|
|
9043
|
-
function useStack(isActive, zIndex) {
|
|
9204
|
+
function useStack(isActive, zIndex, disableGlobalStack) {
|
|
9044
9205
|
const vm = getCurrentInstance('useStack');
|
|
9206
|
+
const createStackEntry = !disableGlobalStack;
|
|
9045
9207
|
const parent = vue.inject(StackSymbol, undefined);
|
|
9046
9208
|
const stack = vue.reactive({
|
|
9047
9209
|
activeChildren: new Set()
|
|
@@ -9052,20 +9214,26 @@
|
|
|
9052
9214
|
var _globalStack$at;
|
|
9053
9215
|
const lastZIndex = (_globalStack$at = globalStack.at(-1)) == null ? void 0 : _globalStack$at[1];
|
|
9054
9216
|
_zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
|
|
9055
|
-
|
|
9217
|
+
if (createStackEntry) {
|
|
9218
|
+
globalStack.push([vm.uid, _zIndex.value]);
|
|
9219
|
+
}
|
|
9056
9220
|
parent == null ? void 0 : parent.activeChildren.add(vm.uid);
|
|
9057
9221
|
vue.onScopeDispose(() => {
|
|
9058
|
-
|
|
9059
|
-
|
|
9222
|
+
if (createStackEntry) {
|
|
9223
|
+
const idx = globalStack.findIndex(v => v[0] === vm.uid);
|
|
9224
|
+
globalStack.splice(idx, 1);
|
|
9225
|
+
}
|
|
9060
9226
|
parent == null ? void 0 : parent.activeChildren.delete(vm.uid);
|
|
9061
9227
|
});
|
|
9062
9228
|
});
|
|
9063
9229
|
const globalTop = vue.ref(true);
|
|
9064
|
-
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
|
|
9068
|
-
|
|
9230
|
+
if (createStackEntry) {
|
|
9231
|
+
vue.watchEffect(() => {
|
|
9232
|
+
var _globalStack$at2;
|
|
9233
|
+
const _isTop = ((_globalStack$at2 = globalStack.at(-1)) == null ? void 0 : _globalStack$at2[0]) === vm.uid;
|
|
9234
|
+
setTimeout(() => globalTop.value = _isTop);
|
|
9235
|
+
});
|
|
9236
|
+
}
|
|
9069
9237
|
const localTop = vue.computed(() => !stack.activeChildren.size);
|
|
9070
9238
|
return {
|
|
9071
9239
|
globalTop: vue.readonly(globalTop),
|
|
@@ -9244,7 +9412,10 @@
|
|
|
9244
9412
|
ClickOutside
|
|
9245
9413
|
},
|
|
9246
9414
|
inheritAttrs: false,
|
|
9247
|
-
props:
|
|
9415
|
+
props: {
|
|
9416
|
+
_disableGlobalStack: Boolean,
|
|
9417
|
+
...makeVOverlayProps()
|
|
9418
|
+
},
|
|
9248
9419
|
emits: {
|
|
9249
9420
|
'click:outside': e => true,
|
|
9250
9421
|
'update:modelValue': value => true,
|
|
@@ -9284,7 +9455,7 @@
|
|
|
9284
9455
|
globalTop,
|
|
9285
9456
|
localTop,
|
|
9286
9457
|
stackStyles
|
|
9287
|
-
} = useStack(isActive, vue.toRef(props, 'zIndex'));
|
|
9458
|
+
} = useStack(isActive, vue.toRef(props, 'zIndex'), props._disableGlobalStack);
|
|
9288
9459
|
const {
|
|
9289
9460
|
activatorEl,
|
|
9290
9461
|
activatorRef,
|
|
@@ -9299,6 +9470,9 @@
|
|
|
9299
9470
|
dimensionStyles
|
|
9300
9471
|
} = useDimension(props);
|
|
9301
9472
|
const isMounted = useHydration();
|
|
9473
|
+
const {
|
|
9474
|
+
scopeId
|
|
9475
|
+
} = useScopeId();
|
|
9302
9476
|
vue.watch(() => props.disabled, v => {
|
|
9303
9477
|
if (v) isActive.value = false;
|
|
9304
9478
|
});
|
|
@@ -9399,7 +9573,7 @@
|
|
|
9399
9573
|
top: convertToUnit(top.value)
|
|
9400
9574
|
}],
|
|
9401
9575
|
"ref": root
|
|
9402
|
-
}, attrs), [vue.createVNode(Scrim, vue.mergeProps({
|
|
9576
|
+
}, scopeId, attrs), [vue.createVNode(Scrim, vue.mergeProps({
|
|
9403
9577
|
"color": scrimColor,
|
|
9404
9578
|
"modelValue": isActive.value && !!props.scrim
|
|
9405
9579
|
}, vue.toHandlers(scrimEvents.value)), null), vue.createVNode(MaybeTransition, {
|
|
@@ -9440,16 +9614,6 @@
|
|
|
9440
9614
|
return pick(props, Object.keys(VOverlay.props));
|
|
9441
9615
|
}
|
|
9442
9616
|
|
|
9443
|
-
function useScopeId() {
|
|
9444
|
-
const vm = getCurrentInstance('useScopeId');
|
|
9445
|
-
const scopeId = vm.vnode.scopeId;
|
|
9446
|
-
return {
|
|
9447
|
-
scopeId: scopeId ? {
|
|
9448
|
-
[scopeId]: ''
|
|
9449
|
-
} : undefined
|
|
9450
|
-
};
|
|
9451
|
-
}
|
|
9452
|
-
|
|
9453
9617
|
// Types
|
|
9454
9618
|
|
|
9455
9619
|
const VMenu = genericComponent()({
|
|
@@ -9566,6 +9730,10 @@
|
|
|
9566
9730
|
default: '$vuetify.noDataText'
|
|
9567
9731
|
},
|
|
9568
9732
|
openOnClear: Boolean,
|
|
9733
|
+
valueComparator: {
|
|
9734
|
+
type: Function,
|
|
9735
|
+
default: deepEqual
|
|
9736
|
+
},
|
|
9569
9737
|
...makeItemsProps({
|
|
9570
9738
|
itemChildren: false
|
|
9571
9739
|
})
|
|
@@ -9607,7 +9775,7 @@
|
|
|
9607
9775
|
});
|
|
9608
9776
|
const selections = vue.computed(() => {
|
|
9609
9777
|
return model.value.map(v => {
|
|
9610
|
-
return items.value.find(item => item.value
|
|
9778
|
+
return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
|
|
9611
9779
|
});
|
|
9612
9780
|
});
|
|
9613
9781
|
const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
|
|
@@ -9948,7 +10116,7 @@
|
|
|
9948
10116
|
} = useFilter(props, items, vue.computed(() => isPristine.value ? undefined : search.value));
|
|
9949
10117
|
const selections = vue.computed(() => {
|
|
9950
10118
|
return model.value.map(v => {
|
|
9951
|
-
return items.value.find(item => item.value
|
|
10119
|
+
return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
|
|
9952
10120
|
});
|
|
9953
10121
|
});
|
|
9954
10122
|
const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
|
|
@@ -10297,128 +10465,6 @@
|
|
|
10297
10465
|
|
|
10298
10466
|
const VBannerText = createSimpleFunctional('v-banner-text');
|
|
10299
10467
|
|
|
10300
|
-
// Utilities
|
|
10301
|
-
|
|
10302
|
-
// Types
|
|
10303
|
-
|
|
10304
|
-
const DisplaySymbol = Symbol.for('vuetify:display');
|
|
10305
|
-
const defaultDisplayOptions = {
|
|
10306
|
-
mobileBreakpoint: 'lg',
|
|
10307
|
-
thresholds: {
|
|
10308
|
-
xs: 0,
|
|
10309
|
-
sm: 600,
|
|
10310
|
-
md: 960,
|
|
10311
|
-
lg: 1280,
|
|
10312
|
-
xl: 1920,
|
|
10313
|
-
xxl: 2560
|
|
10314
|
-
}
|
|
10315
|
-
};
|
|
10316
|
-
const parseDisplayOptions = function () {
|
|
10317
|
-
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
|
|
10318
|
-
return mergeDeep(defaultDisplayOptions, options);
|
|
10319
|
-
};
|
|
10320
|
-
function getClientWidth(isHydrate) {
|
|
10321
|
-
return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
|
|
10322
|
-
}
|
|
10323
|
-
function getClientHeight(isHydrate) {
|
|
10324
|
-
return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
|
|
10325
|
-
}
|
|
10326
|
-
function getPlatform() {
|
|
10327
|
-
const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
|
|
10328
|
-
function match(regexp) {
|
|
10329
|
-
return Boolean(userAgent.match(regexp));
|
|
10330
|
-
}
|
|
10331
|
-
const android = match(/android/i);
|
|
10332
|
-
const ios = match(/iphone|ipad|ipod/i);
|
|
10333
|
-
const cordova = match(/cordova/i);
|
|
10334
|
-
const electron = match(/electron/i);
|
|
10335
|
-
const chrome = match(/chrome/i);
|
|
10336
|
-
const edge = match(/edge/i);
|
|
10337
|
-
const firefox = match(/firefox/i);
|
|
10338
|
-
const opera = match(/opera/i);
|
|
10339
|
-
const win = match(/win/i);
|
|
10340
|
-
const mac = match(/mac/i);
|
|
10341
|
-
const linux = match(/linux/i);
|
|
10342
|
-
const ssr = match(/ssr/i);
|
|
10343
|
-
return {
|
|
10344
|
-
android,
|
|
10345
|
-
ios,
|
|
10346
|
-
cordova,
|
|
10347
|
-
electron,
|
|
10348
|
-
chrome,
|
|
10349
|
-
edge,
|
|
10350
|
-
firefox,
|
|
10351
|
-
opera,
|
|
10352
|
-
win,
|
|
10353
|
-
mac,
|
|
10354
|
-
linux,
|
|
10355
|
-
touch: SUPPORTS_TOUCH,
|
|
10356
|
-
ssr
|
|
10357
|
-
};
|
|
10358
|
-
}
|
|
10359
|
-
function createDisplay(options, isHydrate) {
|
|
10360
|
-
const {
|
|
10361
|
-
thresholds,
|
|
10362
|
-
mobileBreakpoint
|
|
10363
|
-
} = parseDisplayOptions(options);
|
|
10364
|
-
const height = vue.ref(getClientHeight(isHydrate));
|
|
10365
|
-
const platform = getPlatform();
|
|
10366
|
-
const state = vue.reactive({});
|
|
10367
|
-
const width = vue.ref(getClientWidth(isHydrate));
|
|
10368
|
-
function update() {
|
|
10369
|
-
height.value = getClientHeight();
|
|
10370
|
-
width.value = getClientWidth();
|
|
10371
|
-
}
|
|
10372
|
-
|
|
10373
|
-
// eslint-disable-next-line max-statements
|
|
10374
|
-
vue.watchEffect(() => {
|
|
10375
|
-
const xs = width.value < thresholds.sm;
|
|
10376
|
-
const sm = width.value < thresholds.md && !xs;
|
|
10377
|
-
const md = width.value < thresholds.lg && !(sm || xs);
|
|
10378
|
-
const lg = width.value < thresholds.xl && !(md || sm || xs);
|
|
10379
|
-
const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);
|
|
10380
|
-
const xxl = width.value >= thresholds.xxl;
|
|
10381
|
-
const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
|
|
10382
|
-
const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
|
|
10383
|
-
const mobile = !platform.ssr ? width.value < breakpointValue : platform.android || platform.ios || platform.opera;
|
|
10384
|
-
state.xs = xs;
|
|
10385
|
-
state.sm = sm;
|
|
10386
|
-
state.md = md;
|
|
10387
|
-
state.lg = lg;
|
|
10388
|
-
state.xl = xl;
|
|
10389
|
-
state.xxl = xxl;
|
|
10390
|
-
state.smAndUp = !xs;
|
|
10391
|
-
state.mdAndUp = !(xs || sm);
|
|
10392
|
-
state.lgAndUp = !(xs || sm || md);
|
|
10393
|
-
state.xlAndUp = !(xs || sm || md || lg);
|
|
10394
|
-
state.smAndDown = !(md || lg || xl || xxl);
|
|
10395
|
-
state.mdAndDown = !(lg || xl || xxl);
|
|
10396
|
-
state.lgAndDown = !(xl || xxl);
|
|
10397
|
-
state.xlAndDown = !xxl;
|
|
10398
|
-
state.name = name;
|
|
10399
|
-
state.height = height.value;
|
|
10400
|
-
state.width = width.value;
|
|
10401
|
-
state.mobile = mobile;
|
|
10402
|
-
state.mobileBreakpoint = mobileBreakpoint;
|
|
10403
|
-
state.platform = platform;
|
|
10404
|
-
state.thresholds = thresholds;
|
|
10405
|
-
});
|
|
10406
|
-
if (IN_BROWSER) {
|
|
10407
|
-
window.addEventListener('resize', update, {
|
|
10408
|
-
passive: true
|
|
10409
|
-
});
|
|
10410
|
-
}
|
|
10411
|
-
return {
|
|
10412
|
-
...vue.toRefs(state),
|
|
10413
|
-
update
|
|
10414
|
-
};
|
|
10415
|
-
}
|
|
10416
|
-
function useDisplay() {
|
|
10417
|
-
const display = vue.inject(DisplaySymbol);
|
|
10418
|
-
if (!display) throw new Error('Could not find Vuetify display injection');
|
|
10419
|
-
return display;
|
|
10420
|
-
}
|
|
10421
|
-
|
|
10422
10468
|
// Types
|
|
10423
10469
|
|
|
10424
10470
|
const VBanner = defineComponent({
|
|
@@ -10535,6 +10581,10 @@
|
|
|
10535
10581
|
type: [Number, String],
|
|
10536
10582
|
default: 56
|
|
10537
10583
|
},
|
|
10584
|
+
active: {
|
|
10585
|
+
type: Boolean,
|
|
10586
|
+
default: true
|
|
10587
|
+
},
|
|
10538
10588
|
...makeBorderProps(),
|
|
10539
10589
|
...makeDensityProps(),
|
|
10540
10590
|
...makeElevationProps(),
|
|
@@ -10578,7 +10628,7 @@
|
|
|
10578
10628
|
roundedClasses
|
|
10579
10629
|
} = useRounded(props);
|
|
10580
10630
|
const height = vue.computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
|
|
10581
|
-
const isActive =
|
|
10631
|
+
const isActive = vue.toRef(props, 'active');
|
|
10582
10632
|
const {
|
|
10583
10633
|
layoutItemStyles
|
|
10584
10634
|
} = useLayoutItem({
|
|
@@ -11752,13 +11802,13 @@
|
|
|
11752
11802
|
let hsva = null;
|
|
11753
11803
|
if (typeof color === 'string') {
|
|
11754
11804
|
const hex = parseHex(color);
|
|
11755
|
-
hsva =
|
|
11805
|
+
hsva = HexToHSV(hex);
|
|
11756
11806
|
}
|
|
11757
11807
|
if (typeof color === 'object') {
|
|
11758
11808
|
if (has(color, ['r', 'g', 'b'])) {
|
|
11759
|
-
hsva =
|
|
11809
|
+
hsva = RGBtoHSV(color);
|
|
11760
11810
|
} else if (has(color, ['h', 's', 'l'])) {
|
|
11761
|
-
hsva =
|
|
11811
|
+
hsva = HSLtoHSV(color);
|
|
11762
11812
|
} else if (has(color, ['h', 's', 'v'])) {
|
|
11763
11813
|
hsva = color;
|
|
11764
11814
|
}
|
|
@@ -11780,12 +11830,12 @@
|
|
|
11780
11830
|
}
|
|
11781
11831
|
function extractColor(color, input) {
|
|
11782
11832
|
if (input == null || typeof input === 'string') {
|
|
11783
|
-
const hex =
|
|
11833
|
+
const hex = HSVtoHex(color);
|
|
11784
11834
|
if (color.a === 1) return hex.slice(0, 7);else return hex;
|
|
11785
11835
|
}
|
|
11786
11836
|
if (typeof input === 'object') {
|
|
11787
11837
|
let converted;
|
|
11788
|
-
if (has(input, ['r', 'g', 'b'])) converted =
|
|
11838
|
+
if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;
|
|
11789
11839
|
return stripAlpha(converted, !has(input, ['a']));
|
|
11790
11840
|
}
|
|
11791
11841
|
return color;
|
|
@@ -11832,14 +11882,19 @@
|
|
|
11832
11882
|
label: 'A',
|
|
11833
11883
|
max: 1,
|
|
11834
11884
|
step: 0.01,
|
|
11835
|
-
getValue:
|
|
11885
|
+
getValue: _ref => {
|
|
11886
|
+
let {
|
|
11887
|
+
a
|
|
11888
|
+
} = _ref;
|
|
11889
|
+
return a ? Math.round(a * 100) / 100 : 1;
|
|
11890
|
+
},
|
|
11836
11891
|
getColor: (c, v) => ({
|
|
11837
11892
|
...c,
|
|
11838
11893
|
a: Number(v)
|
|
11839
11894
|
})
|
|
11840
11895
|
}],
|
|
11841
|
-
to:
|
|
11842
|
-
from:
|
|
11896
|
+
to: HSVtoRGB,
|
|
11897
|
+
from: RGBtoHSV
|
|
11843
11898
|
};
|
|
11844
11899
|
const rgb = {
|
|
11845
11900
|
...rgba,
|
|
@@ -11881,14 +11936,19 @@
|
|
|
11881
11936
|
label: 'A',
|
|
11882
11937
|
max: 1,
|
|
11883
11938
|
step: 0.01,
|
|
11884
|
-
getValue:
|
|
11939
|
+
getValue: _ref2 => {
|
|
11940
|
+
let {
|
|
11941
|
+
a
|
|
11942
|
+
} = _ref2;
|
|
11943
|
+
return a ? Math.round(a * 100) / 100 : 1;
|
|
11944
|
+
},
|
|
11885
11945
|
getColor: (c, v) => ({
|
|
11886
11946
|
...c,
|
|
11887
11947
|
a: Number(v)
|
|
11888
11948
|
})
|
|
11889
11949
|
}],
|
|
11890
|
-
to:
|
|
11891
|
-
from:
|
|
11950
|
+
to: HSVtoHSL,
|
|
11951
|
+
from: HSLtoHSV
|
|
11892
11952
|
};
|
|
11893
11953
|
const hsl = {
|
|
11894
11954
|
...hsla,
|
|
@@ -11903,8 +11963,8 @@
|
|
|
11903
11963
|
getValue: c => c,
|
|
11904
11964
|
getColor: (c, v) => v
|
|
11905
11965
|
}],
|
|
11906
|
-
to:
|
|
11907
|
-
from:
|
|
11966
|
+
to: HSVtoHex,
|
|
11967
|
+
from: HexToHSV
|
|
11908
11968
|
};
|
|
11909
11969
|
const hex = {
|
|
11910
11970
|
...hexa,
|
|
@@ -12670,7 +12730,7 @@
|
|
|
12670
12730
|
"class": "v-color-picker-preview__dot"
|
|
12671
12731
|
}, [vue.createVNode("div", {
|
|
12672
12732
|
"style": {
|
|
12673
|
-
background:
|
|
12733
|
+
background: HSVtoCSS(props.color ?? nullColor)
|
|
12674
12734
|
}
|
|
12675
12735
|
}, null)]), vue.createVNode("div", {
|
|
12676
12736
|
"class": "v-color-picker-preview__sliders"
|
|
@@ -13211,7 +13271,7 @@
|
|
|
13211
13271
|
"theme": props.theme,
|
|
13212
13272
|
"class": ['v-color-picker'],
|
|
13213
13273
|
"style": {
|
|
13214
|
-
'--v-color-picker-color-hsv':
|
|
13274
|
+
'--v-color-picker-color-hsv': HSVtoCSS({
|
|
13215
13275
|
...(currentColor.value ?? nullColor),
|
|
13216
13276
|
a: 1
|
|
13217
13277
|
})
|
|
@@ -13364,7 +13424,7 @@
|
|
|
13364
13424
|
} = useFilter(props, items, vue.computed(() => isPristine.value ? undefined : search.value));
|
|
13365
13425
|
const selections = vue.computed(() => {
|
|
13366
13426
|
return model.value.map(v => {
|
|
13367
|
-
return items.value.find(item => item.value
|
|
13427
|
+
return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
|
|
13368
13428
|
});
|
|
13369
13429
|
});
|
|
13370
13430
|
const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
|
|
@@ -15875,8 +15935,7 @@
|
|
|
15875
15935
|
isReadonly
|
|
15876
15936
|
} = _ref2;
|
|
15877
15937
|
return vue.createVNode(vue.Fragment, null, [label && vue.createVNode(VLabel, {
|
|
15878
|
-
"for": id.value
|
|
15879
|
-
"clickable": true
|
|
15938
|
+
"for": id.value
|
|
15880
15939
|
}, {
|
|
15881
15940
|
default: () => [label]
|
|
15882
15941
|
}), vue.createVNode(VSelectionControlGroup, vue.mergeProps(controlProps, {
|
|
@@ -17787,7 +17846,8 @@
|
|
|
17787
17846
|
"eager": true,
|
|
17788
17847
|
"activatorProps": vue.mergeProps({
|
|
17789
17848
|
'aria-describedby': id.value
|
|
17790
|
-
}, props.activatorProps)
|
|
17849
|
+
}, props.activatorProps),
|
|
17850
|
+
"_disableGlobalStack": true
|
|
17791
17851
|
}, scopeId), {
|
|
17792
17852
|
activator: slots.activator,
|
|
17793
17853
|
default: function () {
|
|
@@ -18170,7 +18230,7 @@
|
|
|
18170
18230
|
locale
|
|
18171
18231
|
};
|
|
18172
18232
|
}
|
|
18173
|
-
const version$1 = "3.0.
|
|
18233
|
+
const version$1 = "3.0.5";
|
|
18174
18234
|
createVuetify$1.version = version$1;
|
|
18175
18235
|
|
|
18176
18236
|
// Vue's inject() can only be used in setup
|
|
@@ -18191,7 +18251,7 @@
|
|
|
18191
18251
|
...options
|
|
18192
18252
|
});
|
|
18193
18253
|
};
|
|
18194
|
-
const version = "3.0.
|
|
18254
|
+
const version = "3.0.5";
|
|
18195
18255
|
createVuetify.version = version;
|
|
18196
18256
|
|
|
18197
18257
|
exports.components = components;
|