vuetify 3.0.2 → 3.0.4

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 (88) hide show
  1. package/dist/json/attributes.json +902 -902
  2. package/dist/json/importMap.json +66 -66
  3. package/dist/json/web-types.json +1178 -1136
  4. package/dist/vuetify.css +124 -126
  5. package/dist/vuetify.d.ts +389 -196
  6. package/dist/vuetify.esm.js +175 -144
  7. package/dist/vuetify.esm.js.map +1 -1
  8. package/dist/vuetify.js +175 -144
  9. package/dist/vuetify.js.map +1 -1
  10. package/dist/vuetify.min.css +2 -2
  11. package/dist/vuetify.min.js +696 -692
  12. package/dist/vuetify.min.js.map +1 -1
  13. package/lib/components/VAlert/index.d.ts +1 -1
  14. package/lib/components/VAppBar/VAppBar.mjs +2 -2
  15. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  16. package/lib/components/VAppBar/index.d.ts +275 -62
  17. package/lib/components/VAutocomplete/index.d.ts +22 -22
  18. package/lib/components/VCheckbox/VCheckbox.css +1 -1
  19. package/lib/components/VCheckbox/VCheckbox.sass +1 -1
  20. package/lib/components/VChip/VChip.mjs +14 -6
  21. package/lib/components/VChip/VChip.mjs.map +1 -1
  22. package/lib/components/VChip/index.d.ts +3 -1
  23. package/lib/components/VChipGroup/index.d.ts +1 -1
  24. package/lib/components/VColorPicker/VColorPicker.mjs +2 -2
  25. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  26. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  27. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  28. package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
  29. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  30. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  31. package/lib/components/VColorPicker/util/index.mjs +24 -14
  32. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  33. package/lib/components/VCombobox/index.d.ts +22 -22
  34. package/lib/components/VExpansionPanel/index.d.ts +1 -1
  35. package/lib/components/VField/index.d.ts +6 -6
  36. package/lib/components/VFileInput/index.d.ts +2 -2
  37. package/lib/components/VFooter/VFooter.mjs +1 -1
  38. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  39. package/lib/components/VGrid/VGrid.css +2 -2
  40. package/lib/components/VGrid/VGrid.sass +1 -1
  41. package/lib/components/VLazy/VLazy.mjs +2 -1
  42. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  43. package/lib/components/VList/VListItem.mjs +2 -1
  44. package/lib/components/VList/VListItem.mjs.map +1 -1
  45. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +2 -2
  46. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  47. package/lib/components/VOverlay/locationStrategies.mjs +3 -1
  48. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  49. package/lib/components/VPagination/index.d.ts +1 -1
  50. package/lib/components/VProgressLinear/VProgressLinear.sass +1 -1
  51. package/lib/components/VProgressLinear/_variables.scss +1 -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/index.d.ts +22 -22
  55. package/lib/components/VSelectionControl/VSelectionControl.css +4 -0
  56. package/lib/components/VSelectionControl/VSelectionControl.sass +4 -0
  57. package/lib/components/VSelectionControl/index.d.ts +6 -6
  58. package/lib/components/VSnackbar/index.d.ts +4 -4
  59. package/lib/components/VSwitch/VSwitch.css +1 -1
  60. package/lib/components/VSwitch/VSwitch.sass +1 -1
  61. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  62. package/lib/components/VSystemBar/_variables.scss +1 -1
  63. package/lib/components/VTabs/VTab.css +1 -3
  64. package/lib/components/VTabs/VTab.sass +1 -4
  65. package/lib/components/VTabs/VTabs.css +0 -4
  66. package/lib/components/VTabs/VTabs.sass +0 -5
  67. package/lib/components/VTextField/index.d.ts +18 -18
  68. package/lib/components/VTextarea/index.d.ts +1 -1
  69. package/lib/components/VToolbar/VToolbar.mjs +32 -22
  70. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  71. package/lib/components/VToolbar/index.d.ts +9 -8
  72. package/lib/components/index.d.ts +370 -177
  73. package/lib/components/transitions/dialog-transition.mjs +2 -2
  74. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  75. package/lib/composables/theme.mjs +7 -7
  76. package/lib/composables/theme.mjs.map +1 -1
  77. package/lib/composables/validation.mjs +1 -1
  78. package/lib/composables/validation.mjs.map +1 -1
  79. package/lib/entry-bundler.mjs +1 -1
  80. package/lib/framework.mjs +1 -1
  81. package/lib/index.d.ts +19 -19
  82. package/lib/util/color/APCA.mjs +6 -6
  83. package/lib/util/color/APCA.mjs.map +1 -1
  84. package/lib/util/color/transformSRGB.mjs +15 -7
  85. package/lib/util/color/transformSRGB.mjs.map +1 -1
  86. package/lib/util/colorUtils.mjs +64 -81
  87. package/lib/util/colorUtils.mjs.map +1 -1
  88. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.0.2
2
+ * Vuetify v3.0.4
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -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
+ }
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('')}`;
784
793
  }
785
- function HexToRGBA(hex) {
786
- const rgba = chunk(hex.slice(1), 2).map(c => parseInt(c, 16));
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}`);
@@ -2480,8 +2480,8 @@
2480
2480
  const tsx = targetBox.width / elBox.width;
2481
2481
  const tsy = targetBox.height / elBox.height;
2482
2482
  const maxs = Math.max(1, tsx, tsy);
2483
- const sx = tsx / maxs;
2484
- const sy = tsy / maxs;
2483
+ const sx = tsx / maxs || 0;
2484
+ const sy = tsy / maxs || 0;
2485
2485
 
2486
2486
  // Animate elements larger than 12% of the screen area up to 1.5x slower
2487
2487
  const asa = elBox.width * elBox.height / (window.innerWidth * window.innerHeight);
@@ -3147,11 +3147,6 @@
3147
3147
  const isExtended = vue.ref(!!(props.extended || (_slots$extension = slots.extension) != null && _slots$extension.call(slots)));
3148
3148
  const contentHeight = vue.computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
3149
3149
  const extensionHeight = vue.computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === 'prominent' ? Number(props.extensionHeight) : 0) - (props.density === 'comfortable' ? 4 : 0) - (props.density === 'compact' ? 8 : 0), 10) : 0);
3150
- provideDefaults({
3151
- VBtn: {
3152
- variant: 'text'
3153
- }
3154
- });
3155
3150
  useRender(() => {
3156
3151
  var _slots$extension2, _slots$image, _slots$prepend, _slots$default, _slots$append;
3157
3152
  const hasTitle = !!(props.title || slots.title);
@@ -3180,27 +3175,43 @@
3180
3175
  }
3181
3176
  }, {
3182
3177
  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)
3178
+ })]), vue.createVNode(VDefaultsProvider, {
3179
+ "defaults": {
3180
+ VTabs: {
3181
+ height: convertToUnit(contentHeight.value)
3182
+ }
3187
3183
  }
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
3184
  }, {
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",
3185
+ default: () => [vue.createVNode("div", {
3186
+ "class": "v-toolbar__content",
3200
3187
  "style": {
3188
+ height: convertToUnit(contentHeight.value)
3189
+ }
3190
+ }, [slots.prepend && vue.createVNode("div", {
3191
+ "class": "v-toolbar__prepend"
3192
+ }, [(_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots)]), hasTitle && vue.createVNode(VToolbarTitle, {
3193
+ "key": "title",
3194
+ "text": props.title
3195
+ }, {
3196
+ text: slots.title
3197
+ }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.append && vue.createVNode("div", {
3198
+ "class": "v-toolbar__append"
3199
+ }, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots)])])]
3200
+ }), vue.createVNode(VDefaultsProvider, {
3201
+ "defaults": {
3202
+ VTabs: {
3201
3203
  height: convertToUnit(extensionHeight.value)
3202
3204
  }
3203
- }, [extension])]
3205
+ }
3206
+ }, {
3207
+ default: () => [vue.createVNode(VExpandTransition, null, {
3208
+ default: () => [isExtended.value && vue.createVNode("div", {
3209
+ "class": "v-toolbar__extension",
3210
+ "style": {
3211
+ height: convertToUnit(extensionHeight.value)
3212
+ }
3213
+ }, [extension])]
3214
+ })]
3204
3215
  })]
3205
3216
  });
3206
3217
  });
@@ -3216,7 +3227,7 @@
3216
3227
 
3217
3228
  // Types
3218
3229
 
3219
- const VAppBar = defineComponent({
3230
+ const VAppBar = genericComponent()({
3220
3231
  name: 'VAppBar',
3221
3232
  props: {
3222
3233
  // TODO: Implement scrolling techniques
@@ -5691,7 +5702,7 @@
5691
5702
  const isDisabled = vue.computed(() => !!(props.disabled || form != null && form.isDisabled.value));
5692
5703
  const isReadonly = vue.computed(() => !!(props.readonly || form != null && form.isReadonly.value));
5693
5704
  const errorMessages = vue.computed(() => {
5694
- return props.errorMessages.length ? wrapInArray(props.errorMessages) : internalErrorMessages.value;
5705
+ return props.errorMessages.length ? wrapInArray(props.errorMessages.slice(0, Math.max(0, +props.maxErrors))) : internalErrorMessages.value;
5695
5706
  });
5696
5707
  const isValid = vue.computed(() => {
5697
5708
  if (props.error || errorMessages.value.length) return false;
@@ -6729,7 +6740,8 @@
6729
6740
  emits: {
6730
6741
  'click:close': e => true,
6731
6742
  'update:modelValue': value => true,
6732
- 'group:selected': val => true
6743
+ 'group:selected': val => true,
6744
+ click: e => true
6733
6745
  },
6734
6746
  setup(props, _ref) {
6735
6747
  let {
@@ -6763,10 +6775,18 @@
6763
6775
  const isActive = useProxiedModel(props, 'modelValue');
6764
6776
  const group = useGroupItem(props, VChipGroupSymbol, false);
6765
6777
  const link = useLink(props, attrs);
6778
+ const isClickable = vue.computed(() => !props.disabled && (!!group || link.isClickable.value || props.link));
6766
6779
  function onCloseClick(e) {
6767
6780
  isActive.value = false;
6768
6781
  emit('click:close', e);
6769
6782
  }
6783
+ function onClick(e) {
6784
+ var _link$navigate;
6785
+ emit('click', e);
6786
+ if (!isClickable.value) return;
6787
+ (_link$navigate = link.navigate) == null ? void 0 : _link$navigate.call(link, e);
6788
+ group == null ? void 0 : group.toggle();
6789
+ }
6770
6790
  return () => {
6771
6791
  var _slots$default;
6772
6792
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -6775,8 +6795,6 @@
6775
6795
  const hasFilter = !!(slots.filter || props.filter) && group;
6776
6796
  const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6777
6797
  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
6798
  return isActive.value && vue.withDirectives(vue.createVNode(Tag, {
6781
6799
  "class": ['v-chip', {
6782
6800
  'v-chip--disabled': props.disabled,
@@ -6789,9 +6807,9 @@
6789
6807
  "disabled": props.disabled || undefined,
6790
6808
  "draggable": props.draggable,
6791
6809
  "href": link.href.value,
6792
- "onClick": isClickable && onClickFunc
6810
+ "onClick": onClick
6793
6811
  }, {
6794
- default: () => [genOverlays(isClickable, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
6812
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VDefaultsProvider, {
6795
6813
  "key": "filter",
6796
6814
  "defaults": {
6797
6815
  VIcon: {
@@ -6861,7 +6879,7 @@
6861
6879
  "onClick": onCloseClick
6862
6880
  }, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
6863
6881
  })]
6864
- }), [[vue.resolveDirective("ripple"), isClickable && props.ripple, null]]);
6882
+ }), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6865
6883
  };
6866
6884
  }
6867
6885
  });
@@ -7657,7 +7675,8 @@
7657
7675
  "key": "prepend-icon"
7658
7676
  }, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)])]
7659
7677
  }), vue.createVNode("div", {
7660
- "class": "v-list-item__content"
7678
+ "class": "v-list-item__content",
7679
+ "data-no-activator": ""
7661
7680
  }, [hasTitle && vue.createVNode(VListItemTitle, {
7662
7681
  "key": "title"
7663
7682
  }, {
@@ -8540,7 +8559,9 @@
8540
8559
  updateLocation.value = undefined;
8541
8560
  if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return;
8542
8561
  scope = vue.effectScope();
8543
- await vue.nextTick();
8562
+ if (!(props.locationStrategy === 'connected')) {
8563
+ await vue.nextTick();
8564
+ }
8544
8565
  scope.run(() => {
8545
8566
  if (typeof props.locationStrategy === 'function') {
8546
8567
  var _props$locationStrate;
@@ -11750,13 +11771,13 @@
11750
11771
  let hsva = null;
11751
11772
  if (typeof color === 'string') {
11752
11773
  const hex = parseHex(color);
11753
- hsva = HexToHSVA(hex);
11774
+ hsva = HexToHSV(hex);
11754
11775
  }
11755
11776
  if (typeof color === 'object') {
11756
11777
  if (has(color, ['r', 'g', 'b'])) {
11757
- hsva = RGBAtoHSVA(color);
11778
+ hsva = RGBtoHSV(color);
11758
11779
  } else if (has(color, ['h', 's', 'l'])) {
11759
- hsva = HSLAtoHSVA(color);
11780
+ hsva = HSLtoHSV(color);
11760
11781
  } else if (has(color, ['h', 's', 'v'])) {
11761
11782
  hsva = color;
11762
11783
  }
@@ -11778,12 +11799,12 @@
11778
11799
  }
11779
11800
  function extractColor(color, input) {
11780
11801
  if (input == null || typeof input === 'string') {
11781
- const hex = HSVAtoHex(color);
11802
+ const hex = HSVtoHex(color);
11782
11803
  if (color.a === 1) return hex.slice(0, 7);else return hex;
11783
11804
  }
11784
11805
  if (typeof input === 'object') {
11785
11806
  let converted;
11786
- 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;
11807
+ 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;
11787
11808
  return stripAlpha(converted, !has(input, ['a']));
11788
11809
  }
11789
11810
  return color;
@@ -11830,14 +11851,19 @@
11830
11851
  label: 'A',
11831
11852
  max: 1,
11832
11853
  step: 0.01,
11833
- getValue: c => Math.round(c.a * 100) / 100,
11854
+ getValue: _ref => {
11855
+ let {
11856
+ a
11857
+ } = _ref;
11858
+ return a ? Math.round(a * 100) / 100 : 1;
11859
+ },
11834
11860
  getColor: (c, v) => ({
11835
11861
  ...c,
11836
11862
  a: Number(v)
11837
11863
  })
11838
11864
  }],
11839
- to: HSVAtoRGBA,
11840
- from: RGBAtoHSVA
11865
+ to: HSVtoRGB,
11866
+ from: RGBtoHSV
11841
11867
  };
11842
11868
  const rgb = {
11843
11869
  ...rgba,
@@ -11879,14 +11905,19 @@
11879
11905
  label: 'A',
11880
11906
  max: 1,
11881
11907
  step: 0.01,
11882
- getValue: c => Math.round(c.a * 100) / 100,
11908
+ getValue: _ref2 => {
11909
+ let {
11910
+ a
11911
+ } = _ref2;
11912
+ return a ? Math.round(a * 100) / 100 : 1;
11913
+ },
11883
11914
  getColor: (c, v) => ({
11884
11915
  ...c,
11885
11916
  a: Number(v)
11886
11917
  })
11887
11918
  }],
11888
- to: HSVAtoHSLA,
11889
- from: HSLAtoHSVA
11919
+ to: HSVtoHSL,
11920
+ from: HSLtoHSV
11890
11921
  };
11891
11922
  const hsl = {
11892
11923
  ...hsla,
@@ -11901,8 +11932,8 @@
11901
11932
  getValue: c => c,
11902
11933
  getColor: (c, v) => v
11903
11934
  }],
11904
- to: HSVAtoHex,
11905
- from: HexToHSVA
11935
+ to: HSVtoHex,
11936
+ from: HexToHSV
11906
11937
  };
11907
11938
  const hex = {
11908
11939
  ...hexa,
@@ -12668,7 +12699,7 @@
12668
12699
  "class": "v-color-picker-preview__dot"
12669
12700
  }, [vue.createVNode("div", {
12670
12701
  "style": {
12671
- background: HSVAtoCSS(props.color ?? nullColor)
12702
+ background: HSVtoCSS(props.color ?? nullColor)
12672
12703
  }
12673
12704
  }, null)]), vue.createVNode("div", {
12674
12705
  "class": "v-color-picker-preview__sliders"
@@ -13209,7 +13240,7 @@
13209
13240
  "theme": props.theme,
13210
13241
  "class": ['v-color-picker'],
13211
13242
  "style": {
13212
- '--v-color-picker-color-hsv': HSVAtoCSS({
13243
+ '--v-color-picker-color-hsv': HSVtoCSS({
13213
13244
  ...(currentColor.value ?? nullColor),
13214
13245
  a: 1
13215
13246
  })
@@ -14222,7 +14253,7 @@
14222
14253
  useRender(() => vue.createVNode(props.tag, {
14223
14254
  "ref": resizeRef,
14224
14255
  "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14225
- "style": [backgroundColorStyles, props.app ? layoutItemStyles.value : undefined]
14256
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14226
14257
  }, slots));
14227
14258
  return {};
14228
14259
  }
@@ -14784,7 +14815,8 @@
14784
14815
  "style": dimensionStyles.value
14785
14816
  }, {
14786
14817
  default: () => [isActive.value && vue.createVNode(MaybeTransition, {
14787
- "transition": props.transition
14818
+ "transition": props.transition,
14819
+ "appear": true
14788
14820
  }, {
14789
14821
  default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]
14790
14822
  })]
@@ -15244,7 +15276,7 @@
15244
15276
  const isTemporary = vue.computed(() => !props.permanent && (mobile.value || props.temporary));
15245
15277
  const isSticky = vue.computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
15246
15278
  if (!props.disableResizeWatcher) {
15247
- vue.watch(isTemporary, val => !props.permanent && (isActive.value = !val));
15279
+ vue.watch(isTemporary, val => !props.permanent && vue.nextTick(() => isActive.value = !val));
15248
15280
  }
15249
15281
  if (!props.disableRouteWatcher && router) {
15250
15282
  vue.watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));
@@ -15872,8 +15904,7 @@
15872
15904
  isReadonly
15873
15905
  } = _ref2;
15874
15906
  return vue.createVNode(vue.Fragment, null, [label && vue.createVNode(VLabel, {
15875
- "for": id.value,
15876
- "clickable": true
15907
+ "for": id.value
15877
15908
  }, {
15878
15909
  default: () => [label]
15879
15910
  }), vue.createVNode(VSelectionControlGroup, vue.mergeProps(controlProps, {
@@ -18167,7 +18198,7 @@
18167
18198
  locale
18168
18199
  };
18169
18200
  }
18170
- const version$1 = "3.0.2";
18201
+ const version$1 = "3.0.4";
18171
18202
  createVuetify$1.version = version$1;
18172
18203
 
18173
18204
  // Vue's inject() can only be used in setup
@@ -18188,7 +18219,7 @@
18188
18219
  ...options
18189
18220
  });
18190
18221
  };
18191
- const version = "3.0.2";
18222
+ const version = "3.0.4";
18192
18223
  createVuetify.version = version;
18193
18224
 
18194
18225
  exports.components = components;