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.
Files changed (101) hide show
  1. package/dist/json/attributes.json +907 -891
  2. package/dist/json/importMap.json +74 -74
  3. package/dist/json/tags.json +4 -0
  4. package/dist/json/web-types.json +1163 -1123
  5. package/dist/vuetify.css +64 -67
  6. package/dist/vuetify.d.ts +230 -120
  7. package/dist/vuetify.esm.js +355 -295
  8. package/dist/vuetify.esm.js.map +1 -1
  9. package/dist/vuetify.js +355 -295
  10. package/dist/vuetify.js.map +1 -1
  11. package/dist/vuetify.min.css +2 -2
  12. package/dist/vuetify.min.js +712 -708
  13. package/dist/vuetify.min.js.map +1 -1
  14. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  15. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  16. package/lib/components/VAutocomplete/index.d.ts +25 -8
  17. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +6 -3
  18. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  19. package/lib/components/VBottomNavigation/index.d.ts +9 -0
  20. package/lib/components/VBtn/index.d.ts +2 -3
  21. package/lib/components/VCard/index.d.ts +2 -3
  22. package/lib/components/VCheckbox/VCheckbox.css +1 -1
  23. package/lib/components/VCheckbox/VCheckbox.sass +1 -1
  24. package/lib/components/VChip/VChip.mjs +15 -7
  25. package/lib/components/VChip/VChip.mjs.map +1 -1
  26. package/lib/components/VChip/index.d.ts +2 -0
  27. package/lib/components/VColorPicker/VColorPicker.mjs +2 -2
  28. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  29. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  30. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  31. package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
  32. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  33. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  34. package/lib/components/VColorPicker/util/index.mjs +24 -14
  35. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  36. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  37. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  38. package/lib/components/VCombobox/index.d.ts +25 -8
  39. package/lib/components/VDialog/index.d.ts +21 -6
  40. package/lib/components/VField/VField.mjs +1 -1
  41. package/lib/components/VField/VField.mjs.map +1 -1
  42. package/lib/components/VField/index.d.ts +5 -8
  43. package/lib/components/VFileInput/index.d.ts +2 -3
  44. package/lib/components/VGrid/VGrid.css +2 -2
  45. package/lib/components/VGrid/VGrid.sass +1 -1
  46. package/lib/components/VList/VListItem.mjs +2 -1
  47. package/lib/components/VList/VListItem.mjs.map +1 -1
  48. package/lib/components/VMenu/index.d.ts +21 -6
  49. package/lib/components/VOverlay/VOverlay.mjs +10 -3
  50. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  51. package/lib/components/VOverlay/index.d.ts +8 -1
  52. package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -2
  53. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  54. package/lib/components/VSelect/VSelect.mjs +6 -2
  55. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  56. package/lib/components/VSelect/index.d.ts +25 -8
  57. package/lib/components/VSelectionControl/VSelectionControl.css +4 -0
  58. package/lib/components/VSelectionControl/VSelectionControl.sass +4 -0
  59. package/lib/components/VSnackbar/index.d.ts +21 -6
  60. package/lib/components/VSwitch/VSwitch.css +1 -1
  61. package/lib/components/VSwitch/VSwitch.sass +1 -1
  62. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  63. package/lib/components/VSystemBar/_variables.scss +1 -1
  64. package/lib/components/VTabs/VTab.css +2 -5
  65. package/lib/components/VTabs/VTab.sass +4 -6
  66. package/lib/components/VTabs/VTabs.css +0 -4
  67. package/lib/components/VTabs/VTabs.sass +0 -5
  68. package/lib/components/VTextField/index.d.ts +20 -29
  69. package/lib/components/VTextarea/index.d.ts +2 -3
  70. package/lib/components/VToolbar/VToolbar.mjs +32 -16
  71. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  72. package/lib/components/VTooltip/VTooltip.mjs +2 -1
  73. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  74. package/lib/components/VTooltip/index.d.ts +21 -6
  75. package/lib/components/index.d.ts +208 -98
  76. package/lib/composables/display.mjs +5 -4
  77. package/lib/composables/display.mjs.map +1 -1
  78. package/lib/composables/hydration.mjs +13 -8
  79. package/lib/composables/hydration.mjs.map +1 -1
  80. package/lib/composables/loader.mjs +1 -1
  81. package/lib/composables/loader.mjs.map +1 -1
  82. package/lib/composables/stack.mjs +16 -9
  83. package/lib/composables/stack.mjs.map +1 -1
  84. package/lib/composables/theme.mjs +7 -7
  85. package/lib/composables/theme.mjs.map +1 -1
  86. package/lib/composables/validation.mjs +2 -2
  87. package/lib/composables/validation.mjs.map +1 -1
  88. package/lib/entry-bundler.mjs +1 -1
  89. package/lib/framework.mjs +1 -1
  90. package/lib/index.d.ts +22 -22
  91. package/lib/services/goto/util.mjs +1 -1
  92. package/lib/services/goto/util.mjs.map +1 -1
  93. package/lib/util/color/APCA.mjs +6 -6
  94. package/lib/util/color/APCA.mjs.map +1 -1
  95. package/lib/util/color/transformSRGB.mjs +15 -7
  96. package/lib/util/color/transformSRGB.mjs.map +1 -1
  97. package/lib/util/colorUtils.mjs +64 -81
  98. package/lib/util/colorUtils.mjs.map +1 -1
  99. package/lib/util/console.mjs +3 -3
  100. package/lib/util/console.mjs.map +1 -1
  101. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.0.3
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
- _isVue: true,
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._isVue ? vm.$options || vm.constructor.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._isVue && vm.$parent) {
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
- // Rescale back to [0, 255]
606
- return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0);
605
+ return {
606
+ r: rgb[0],
607
+ g: rgb[1],
608
+ b: rgb[2]
609
+ };
607
610
  }
608
- function toXYZ$1(rgb) {
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
- const r = transform((rgb >> 16 & 0xff) / 255);
615
- const g = transform((rgb >> 8 & 0xff) / 255);
616
- const b = transform((rgb >> 0 & 0xff) / 255);
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 colorToInt(color) {
648
- let rgb;
655
+ function parseColor$1(color) {
649
656
  if (typeof color === 'number') {
650
- rgb = color;
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 c = color.startsWith('#') ? color.substring(1) : color;
653
- if (c.length === 3) {
654
- c = c.split('').map(char => char + char).join('');
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
- if (c.length !== 6 && c.length !== 8) {
657
- consoleWarn(`'${color}' is not a valid rgb color`);
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
- rgb = parseInt(c, 16);
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
- * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV
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
- * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV
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 HSVAtoHSLA(hsva) {
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 HSLAtoHSVA(hsl) {
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 RGBAtoCSS(rgba) {
773
- return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;
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 HSVAtoCSS(hsva) {
776
- return RGBAtoCSS(HSVAtoRGBA(hsva));
778
+ function HSVtoCSS(hsva) {
779
+ return RGBtoCSS(HSVtoRGB(hsva));
777
780
  }
778
- function RGBAtoHex(rgba) {
779
- const toHex = v => {
780
- const h = Math.round(v).toString(16);
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 HexToRGBA(hex) {
786
- const rgba = chunk(hex.slice(1), 2).map(c => parseInt(c, 16));
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: rgba[0],
789
- g: rgba[1],
790
- b: rgba[2],
791
- a: Math.round(rgba[3] / 255 * 100) / 100
798
+ r,
799
+ g,
800
+ b,
801
+ a
792
802
  };
793
803
  }
794
- function HexToHSVA(hex) {
795
- const rgb = HexToRGBA(hex);
796
- return RGBAtoHSVA(rgb);
804
+ function HexToHSV(hex) {
805
+ const rgb = HexToRGB(hex);
806
+ return RGBtoHSV(rgb);
797
807
  }
798
- function HSVAtoHex(hsva) {
799
- return RGBAtoHex(HSVAtoRGBA(hsva));
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 `#${hex}`.toUpperCase().substr(0, 9);
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 = colorToInt(color);
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 = ((text >> 16 & 0xff) / 255) ** mainTRC;
1474
- const Gtxt = ((text >> 8 & 0xff) / 255) ** mainTRC;
1475
- const Btxt = ((text >> 0 & 0xff) / 255) ** mainTRC;
1476
- const Rbg = ((background >> 16 & 0xff) / 255) ** mainTRC;
1477
- const Gbg = ((background >> 8 & 0xff) / 255) ** mainTRC;
1478
- const Bbg = ((background >> 0 & 0xff) / 255) ** mainTRC;
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}`] = intToHex(fn(colorToInt(color), 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 = colorToInt(theme.colors[color]);
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('#') ? colorToRGB(value) : undefined;
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 = colorToRGB(value);
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("div", {
3184
- "class": "v-toolbar__content",
3185
- "style": {
3186
- height: convertToUnit(contentHeight.value)
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
- text: slots.title
3195
- }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.append && vue.createVNode("div", {
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
- }, [extension])]
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 || 1)) {
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": isClickable && onClickFunc
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 vm = getCurrentInstance('useHydration');
9031
- const rootEl = vm == null ? void 0 : (_vm$root = vm.root) == null ? void 0 : (_vm$root$appContext = _vm$root.appContext) == null ? void 0 : (_vm$root$appContext$a = _vm$root$appContext.app) == null ? void 0 : _vm$root$appContext$a._container;
9032
- const isMounted = vue.ref(!!(rootEl != null && rootEl.__vue_app__));
9033
- if (!isMounted.value) {
9034
- vue.onMounted(() => isMounted.value = true);
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
- return isMounted;
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
- globalStack.push([vm.uid, _zIndex.value]);
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
- const idx = globalStack.findIndex(v => v[0] === vm.uid);
9059
- globalStack.splice(idx, 1);
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
- vue.watchEffect(() => {
9065
- var _globalStack$at2;
9066
- const _isTop = ((_globalStack$at2 = globalStack.at(-1)) == null ? void 0 : _globalStack$at2[0]) === vm.uid;
9067
- setTimeout(() => globalTop.value = _isTop);
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: makeVOverlayProps(),
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 === v.value) || v;
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 === v.value) || v;
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 = useProxiedModel(props, 'modelValue');
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 = HexToHSVA(hex);
11805
+ hsva = HexToHSV(hex);
11756
11806
  }
11757
11807
  if (typeof color === 'object') {
11758
11808
  if (has(color, ['r', 'g', 'b'])) {
11759
- hsva = RGBAtoHSVA(color);
11809
+ hsva = RGBtoHSV(color);
11760
11810
  } else if (has(color, ['h', 's', 'l'])) {
11761
- hsva = HSLAtoHSVA(color);
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 = HSVAtoHex(color);
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 = HSVAtoRGBA(color);else if (has(input, ['h', 's', 'l'])) converted = HSVAtoHSLA(color);else if (has(input, ['h', 's', 'v'])) converted = color;
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: c => Math.round(c.a * 100) / 100,
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: HSVAtoRGBA,
11842
- from: RGBAtoHSVA
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: c => Math.round(c.a * 100) / 100,
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: HSVAtoHSLA,
11891
- from: HSLAtoHSVA
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: HSVAtoHex,
11907
- from: HexToHSVA
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: HSVAtoCSS(props.color ?? nullColor)
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': HSVAtoCSS({
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 === v.value) || v;
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.3";
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.3";
18254
+ const version = "3.0.5";
18195
18255
  createVuetify.version = version;
18196
18256
 
18197
18257
  exports.components = components;