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
@@ -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
  */
@@ -595,21 +595,29 @@ function fromXYZ$1(xyz) {
595
595
 
596
596
  // Matrix transform, then gamma adjustment
597
597
  for (let i = 0; i < 3; ++i) {
598
+ // Rescale back to [0, 255]
598
599
  rgb[i] = Math.round(clamp(transform(matrix[i][0] * xyz[0] + matrix[i][1] * xyz[1] + matrix[i][2] * xyz[2])) * 255);
599
600
  }
600
-
601
- // Rescale back to [0, 255]
602
- return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0);
601
+ return {
602
+ r: rgb[0],
603
+ g: rgb[1],
604
+ b: rgb[2]
605
+ };
603
606
  }
604
- function toXYZ$1(rgb) {
607
+ function toXYZ$1(_ref) {
608
+ let {
609
+ r,
610
+ g,
611
+ b
612
+ } = _ref;
605
613
  const xyz = [0, 0, 0];
606
614
  const transform = srgbReverseTransform;
607
615
  const matrix = srgbReverseMatrix;
608
616
 
609
617
  // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB
610
- const r = transform((rgb >> 16 & 0xff) / 255);
611
- const g = transform((rgb >> 8 & 0xff) / 255);
612
- const b = transform((rgb >> 0 & 0xff) / 255);
618
+ r = transform(r / 255);
619
+ g = transform(g / 255);
620
+ b = transform(b / 255);
613
621
 
614
622
  // Matrix color space transform
615
623
  for (let i = 0; i < 3; ++i) {
@@ -640,43 +648,36 @@ function toXYZ(lab) {
640
648
  function isCssColor(color) {
641
649
  return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
642
650
  }
643
- function colorToInt(color) {
644
- let rgb;
651
+ function parseColor$1(color) {
645
652
  if (typeof color === 'number') {
646
- rgb = color;
653
+ if (isNaN(color) || color < 0 || color > 0xFFFFFF) {
654
+ // int can't have opacity
655
+ consoleWarn(`'${color}' is not a valid hex color`);
656
+ }
657
+ return {
658
+ r: (color & 0xFF0000) >> 16,
659
+ g: (color & 0xFF00) >> 8,
660
+ b: color & 0xFF
661
+ };
647
662
  } else if (typeof color === 'string') {
648
- let c = color.startsWith('#') ? color.substring(1) : color;
649
- if (c.length === 3) {
650
- c = c.split('').map(char => char + char).join('');
663
+ let hex = color.startsWith('#') ? color.slice(1) : color;
664
+ if ([3, 4].includes(hex.length)) {
665
+ hex = hex.split('').map(char => char + char).join('');
666
+ } else if (![6, 8].includes(hex.length)) {
667
+ consoleWarn(`'${color}' is not a valid hex(a) color`);
651
668
  }
652
- if (c.length !== 6 && c.length !== 8) {
653
- consoleWarn(`'${color}' is not a valid rgb color`);
669
+ const int = parseInt(hex, 16);
670
+ if (isNaN(int) || int < 0 || int > 0xFFFFFFFF) {
671
+ consoleWarn(`'${color}' is not a valid hex(a) color`);
654
672
  }
655
- rgb = parseInt(c, 16);
673
+ return HexToRGB(hex);
656
674
  } else {
657
675
  throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`);
658
676
  }
659
- if (rgb < 0) {
660
- consoleWarn(`Colors cannot be negative: '${color}'`);
661
- rgb = 0;
662
- } else if (rgb > 0xffffffff || isNaN(rgb)) {
663
- consoleWarn(`'${color}' is not a valid rgb color`);
664
- rgb = 0xffffff;
665
- }
666
- return rgb;
667
- }
668
- function intToHex(color) {
669
- let hexColor = color.toString(16);
670
- if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor;
671
- return '#' + hexColor;
672
677
  }
673
678
 
674
- /**
675
- * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV
676
- *
677
- * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]
678
- */
679
- function HSVAtoRGBA(hsva) {
679
+ /** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
680
+ function HSVtoRGB(hsva) {
680
681
  const {
681
682
  h,
682
683
  s,
@@ -696,12 +697,8 @@ function HSVAtoRGBA(hsva) {
696
697
  };
697
698
  }
698
699
 
699
- /**
700
- * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV
701
- *
702
- * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]
703
- */
704
- function RGBAtoHSVA(rgba) {
700
+ /** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
701
+ function RGBtoHSV(rgba) {
705
702
  if (!rgba) return {
706
703
  h: 0,
707
704
  s: 1,
@@ -733,7 +730,7 @@ function RGBAtoHSVA(rgba) {
733
730
  a: rgba.a
734
731
  };
735
732
  }
736
- function HSVAtoHSLA(hsva) {
733
+ function HSVtoHSL(hsva) {
737
734
  const {
738
735
  h,
739
736
  s,
@@ -749,7 +746,7 @@ function HSVAtoHSLA(hsva) {
749
746
  a
750
747
  };
751
748
  }
752
- function HSLAtoHSVA(hsl) {
749
+ function HSLtoHSV(hsl) {
753
750
  const {
754
751
  h,
755
752
  s,
@@ -765,34 +762,47 @@ function HSLAtoHSVA(hsl) {
765
762
  a
766
763
  };
767
764
  }
768
- function RGBAtoCSS(rgba) {
769
- return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;
765
+ function RGBtoCSS(_ref) {
766
+ let {
767
+ r,
768
+ g,
769
+ b,
770
+ a
771
+ } = _ref;
772
+ return a === undefined ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`;
770
773
  }
771
- function HSVAtoCSS(hsva) {
772
- return RGBAtoCSS(HSVAtoRGBA(hsva));
774
+ function HSVtoCSS(hsva) {
775
+ return RGBtoCSS(HSVtoRGB(hsva));
773
776
  }
774
- function RGBAtoHex(rgba) {
775
- const toHex = v => {
776
- const h = Math.round(v).toString(16);
777
- return ('00'.substr(0, 2 - h.length) + h).toUpperCase();
778
- };
779
- return `#${[toHex(rgba.r), toHex(rgba.g), toHex(rgba.b), toHex(Math.round(rgba.a * 255))].join('')}`;
777
+ function toHex(v) {
778
+ const h = Math.round(v).toString(16);
779
+ return ('00'.substr(0, 2 - h.length) + h).toUpperCase();
780
+ }
781
+ function RGBtoHex(_ref2) {
782
+ let {
783
+ r,
784
+ g,
785
+ b,
786
+ a
787
+ } = _ref2;
788
+ return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : 'FF'].join('')}`;
780
789
  }
781
- function HexToRGBA(hex) {
782
- const rgba = chunk(hex.slice(1), 2).map(c => parseInt(c, 16));
790
+ function HexToRGB(hex) {
791
+ let [r, g, b, a] = chunk(hex, 2).map(c => parseInt(c, 16));
792
+ a = a === undefined ? a : Math.round(a / 255 * 100) / 100;
783
793
  return {
784
- r: rgba[0],
785
- g: rgba[1],
786
- b: rgba[2],
787
- a: Math.round(rgba[3] / 255 * 100) / 100
794
+ r,
795
+ g,
796
+ b,
797
+ a
788
798
  };
789
799
  }
790
- function HexToHSVA(hex) {
791
- const rgb = HexToRGBA(hex);
792
- return RGBAtoHSVA(rgb);
800
+ function HexToHSV(hex) {
801
+ const rgb = HexToRGB(hex);
802
+ return RGBtoHSV(rgb);
793
803
  }
794
- function HSVAtoHex(hsva) {
795
- return RGBAtoHex(HSVAtoRGBA(hsva));
804
+ function HSVtoHex(hsva) {
805
+ return RGBtoHex(HSVtoRGB(hsva));
796
806
  }
797
807
  function parseHex(hex) {
798
808
  if (hex.startsWith('#')) {
@@ -807,20 +817,10 @@ function parseHex(hex) {
807
817
  } else {
808
818
  hex = padEnd(padEnd(hex, 6), 8, 'F');
809
819
  }
810
- return `#${hex}`.toUpperCase().substr(0, 9);
811
- }
812
- function colorToRGB(color) {
813
- const int = colorToInt(color);
814
- return {
815
- r: (int & 0xFF0000) >> 16,
816
- g: (int & 0xFF00) >> 8,
817
- b: int & 0xFF
818
- };
820
+ return hex;
819
821
  }
820
822
  function lighten(value, amount) {
821
823
  const lab = fromXYZ(toXYZ$1(value));
822
- // TODO: why this false positive?
823
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
824
824
  lab[0] = lab[0] + amount * 10;
825
825
  return fromXYZ$1(toXYZ(lab));
826
826
  }
@@ -835,7 +835,7 @@ function darken(value, amount) {
835
835
  * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef
836
836
  */
837
837
  function getLuma(color) {
838
- const rgb = colorToInt(color);
838
+ const rgb = parseColor$1(color);
839
839
  return toXYZ$1(rgb)[1];
840
840
  }
841
841
 
@@ -1466,12 +1466,12 @@ const loClip = 0.001; // Output clip (lint trap #2)
1466
1466
 
1467
1467
  function APCAcontrast(text, background) {
1468
1468
  // Linearize sRGB
1469
- const Rtxt = ((text >> 16 & 0xff) / 255) ** mainTRC;
1470
- const Gtxt = ((text >> 8 & 0xff) / 255) ** mainTRC;
1471
- const Btxt = ((text >> 0 & 0xff) / 255) ** mainTRC;
1472
- const Rbg = ((background >> 16 & 0xff) / 255) ** mainTRC;
1473
- const Gbg = ((background >> 8 & 0xff) / 255) ** mainTRC;
1474
- const Bbg = ((background >> 0 & 0xff) / 255) ** mainTRC;
1469
+ const Rtxt = (text.r / 255) ** mainTRC;
1470
+ const Gtxt = (text.g / 255) ** mainTRC;
1471
+ const Btxt = (text.b / 255) ** mainTRC;
1472
+ const Rbg = (background.r / 255) ** mainTRC;
1473
+ const Gbg = (background.g / 255) ** mainTRC;
1474
+ const Bbg = (background.b / 255) ** mainTRC;
1475
1475
 
1476
1476
  // Apply the standard coefficients and sum to Y
1477
1477
  let Ytxt = Rtxt * Rco + Gtxt * Gco + Btxt * Bco;
@@ -1637,7 +1637,7 @@ function createTheme(options) {
1637
1637
  for (const variation of ['lighten', 'darken']) {
1638
1638
  const fn = variation === 'lighten' ? lighten : darken;
1639
1639
  for (const amount of createRange(parsedOptions.variations[variation], 1)) {
1640
- theme.colors[`${name}-${variation}-${amount}`] = intToHex(fn(colorToInt(color), amount));
1640
+ theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor$1(color), amount));
1641
1641
  }
1642
1642
  }
1643
1643
  }
@@ -1645,9 +1645,9 @@ function createTheme(options) {
1645
1645
  for (const color of Object.keys(theme.colors)) {
1646
1646
  if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
1647
1647
  const onColor = `on-${color}`;
1648
- const colorVal = colorToInt(theme.colors[color]);
1649
- const blackContrast = Math.abs(APCAcontrast(0, colorVal));
1650
- const whiteContrast = Math.abs(APCAcontrast(0xffffff, colorVal));
1648
+ const colorVal = parseColor$1(theme.colors[color]);
1649
+ const blackContrast = Math.abs(APCAcontrast(parseColor$1(0), colorVal));
1650
+ const whiteContrast = Math.abs(APCAcontrast(parseColor$1(0xffffff), colorVal));
1651
1651
 
1652
1652
  // TODO: warn about poor color selections
1653
1653
  // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
@@ -1677,7 +1677,7 @@ function createTheme(options) {
1677
1677
  } = theme;
1678
1678
  createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${dark ? 'dark' : 'normal'}`, ...genCssVariables(theme), ...Object.keys(variables).map(key => {
1679
1679
  const value = variables[key];
1680
- const color = typeof value === 'string' && value.startsWith('#') ? colorToRGB(value) : undefined;
1680
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1681
1681
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1682
1682
  return `--v-${key}: ${rgb ?? value}`;
1683
1683
  })]);
@@ -1779,7 +1779,7 @@ function genCssVariables(theme) {
1779
1779
  const darkOverlay = theme.dark ? 1 : 2;
1780
1780
  const variables = [];
1781
1781
  for (const [key, value] of Object.entries(theme.colors)) {
1782
- const rgb = colorToRGB(value);
1782
+ const rgb = parseColor$1(value);
1783
1783
  variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
1784
1784
  if (!key.startsWith('on-')) {
1785
1785
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
@@ -2476,8 +2476,8 @@ function getDimensions(target, el) {
2476
2476
  const tsx = targetBox.width / elBox.width;
2477
2477
  const tsy = targetBox.height / elBox.height;
2478
2478
  const maxs = Math.max(1, tsx, tsy);
2479
- const sx = tsx / maxs;
2480
- const sy = tsy / maxs;
2479
+ const sx = tsx / maxs || 0;
2480
+ const sy = tsy / maxs || 0;
2481
2481
 
2482
2482
  // Animate elements larger than 12% of the screen area up to 1.5x slower
2483
2483
  const asa = elBox.width * elBox.height / (window.innerWidth * window.innerHeight);
@@ -3143,11 +3143,6 @@ const VToolbar = genericComponent()({
3143
3143
  const isExtended = ref(!!(props.extended || (_slots$extension = slots.extension) != null && _slots$extension.call(slots)));
3144
3144
  const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === 'prominent' ? Number(props.height) : 0) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0), 10));
3145
3145
  const extensionHeight = 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);
3146
- provideDefaults({
3147
- VBtn: {
3148
- variant: 'text'
3149
- }
3150
- });
3151
3146
  useRender(() => {
3152
3147
  var _slots$extension2, _slots$image, _slots$prepend, _slots$default, _slots$append;
3153
3148
  const hasTitle = !!(props.title || slots.title);
@@ -3176,27 +3171,43 @@ const VToolbar = genericComponent()({
3176
3171
  }
3177
3172
  }, {
3178
3173
  default: () => [slots.image ? (_slots$image = slots.image) == null ? void 0 : _slots$image.call(slots) : createVNode(VImg, null, null)]
3179
- })]), createVNode("div", {
3180
- "class": "v-toolbar__content",
3181
- "style": {
3182
- height: convertToUnit(contentHeight.value)
3174
+ })]), createVNode(VDefaultsProvider, {
3175
+ "defaults": {
3176
+ VTabs: {
3177
+ height: convertToUnit(contentHeight.value)
3178
+ }
3183
3179
  }
3184
- }, [slots.prepend && createVNode("div", {
3185
- "class": "v-toolbar__prepend"
3186
- }, [(_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots)]), hasTitle && createVNode(VToolbarTitle, {
3187
- "key": "title",
3188
- "text": props.title
3189
3180
  }, {
3190
- text: slots.title
3191
- }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.append && createVNode("div", {
3192
- "class": "v-toolbar__append"
3193
- }, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots)])]), createVNode(VExpandTransition, null, {
3194
- default: () => [isExtended.value && createVNode("div", {
3195
- "class": "v-toolbar__extension",
3181
+ default: () => [createVNode("div", {
3182
+ "class": "v-toolbar__content",
3196
3183
  "style": {
3184
+ height: convertToUnit(contentHeight.value)
3185
+ }
3186
+ }, [slots.prepend && createVNode("div", {
3187
+ "class": "v-toolbar__prepend"
3188
+ }, [(_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots)]), hasTitle && createVNode(VToolbarTitle, {
3189
+ "key": "title",
3190
+ "text": props.title
3191
+ }, {
3192
+ text: slots.title
3193
+ }), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots), slots.append && createVNode("div", {
3194
+ "class": "v-toolbar__append"
3195
+ }, [(_slots$append = slots.append) == null ? void 0 : _slots$append.call(slots)])])]
3196
+ }), createVNode(VDefaultsProvider, {
3197
+ "defaults": {
3198
+ VTabs: {
3197
3199
  height: convertToUnit(extensionHeight.value)
3198
3200
  }
3199
- }, [extension])]
3201
+ }
3202
+ }, {
3203
+ default: () => [createVNode(VExpandTransition, null, {
3204
+ default: () => [isExtended.value && createVNode("div", {
3205
+ "class": "v-toolbar__extension",
3206
+ "style": {
3207
+ height: convertToUnit(extensionHeight.value)
3208
+ }
3209
+ }, [extension])]
3210
+ })]
3200
3211
  })]
3201
3212
  });
3202
3213
  });
@@ -3212,7 +3223,7 @@ function filterToolbarProps(props) {
3212
3223
 
3213
3224
  // Types
3214
3225
 
3215
- const VAppBar = defineComponent({
3226
+ const VAppBar = genericComponent()({
3216
3227
  name: 'VAppBar',
3217
3228
  props: {
3218
3229
  // TODO: Implement scrolling techniques
@@ -5687,7 +5698,7 @@ function useValidation(props) {
5687
5698
  const isDisabled = computed(() => !!(props.disabled || form != null && form.isDisabled.value));
5688
5699
  const isReadonly = computed(() => !!(props.readonly || form != null && form.isReadonly.value));
5689
5700
  const errorMessages = computed(() => {
5690
- return props.errorMessages.length ? wrapInArray(props.errorMessages) : internalErrorMessages.value;
5701
+ return props.errorMessages.length ? wrapInArray(props.errorMessages.slice(0, Math.max(0, +props.maxErrors))) : internalErrorMessages.value;
5691
5702
  });
5692
5703
  const isValid = computed(() => {
5693
5704
  if (props.error || errorMessages.value.length) return false;
@@ -6725,7 +6736,8 @@ const VChip = defineComponent({
6725
6736
  emits: {
6726
6737
  'click:close': e => true,
6727
6738
  'update:modelValue': value => true,
6728
- 'group:selected': val => true
6739
+ 'group:selected': val => true,
6740
+ click: e => true
6729
6741
  },
6730
6742
  setup(props, _ref) {
6731
6743
  let {
@@ -6759,10 +6771,18 @@ const VChip = defineComponent({
6759
6771
  const isActive = useProxiedModel(props, 'modelValue');
6760
6772
  const group = useGroupItem(props, VChipGroupSymbol, false);
6761
6773
  const link = useLink(props, attrs);
6774
+ const isClickable = computed(() => !props.disabled && (!!group || link.isClickable.value || props.link));
6762
6775
  function onCloseClick(e) {
6763
6776
  isActive.value = false;
6764
6777
  emit('click:close', e);
6765
6778
  }
6779
+ function onClick(e) {
6780
+ var _link$navigate;
6781
+ emit('click', e);
6782
+ if (!isClickable.value) return;
6783
+ (_link$navigate = link.navigate) == null ? void 0 : _link$navigate.call(link, e);
6784
+ group == null ? void 0 : group.toggle();
6785
+ }
6766
6786
  return () => {
6767
6787
  var _slots$default;
6768
6788
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -6771,8 +6791,6 @@ const VChip = defineComponent({
6771
6791
  const hasFilter = !!(slots.filter || props.filter) && group;
6772
6792
  const hasPrepend = !!(slots.prepend || props.prependIcon || props.prependAvatar);
6773
6793
  const hasColor = !group || group.isSelected.value;
6774
- const isClickable = !props.disabled && (!!group || link.isClickable.value || props.link);
6775
- const onClickFunc = props.link ? props.link : group == null ? void 0 : group.toggle;
6776
6794
  return isActive.value && withDirectives(createVNode(Tag, {
6777
6795
  "class": ['v-chip', {
6778
6796
  'v-chip--disabled': props.disabled,
@@ -6785,9 +6803,9 @@ const VChip = defineComponent({
6785
6803
  "disabled": props.disabled || undefined,
6786
6804
  "draggable": props.draggable,
6787
6805
  "href": link.href.value,
6788
- "onClick": isClickable && onClickFunc
6806
+ "onClick": onClick
6789
6807
  }, {
6790
- default: () => [genOverlays(isClickable, 'v-chip'), hasFilter && createVNode(VDefaultsProvider, {
6808
+ default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && createVNode(VDefaultsProvider, {
6791
6809
  "key": "filter",
6792
6810
  "defaults": {
6793
6811
  VIcon: {
@@ -6857,7 +6875,7 @@ const VChip = defineComponent({
6857
6875
  "onClick": onCloseClick
6858
6876
  }, [slots.close ? slots.close() : createVNode(VIcon, null, null)])]
6859
6877
  })]
6860
- }), [[resolveDirective("ripple"), isClickable && props.ripple, null]]);
6878
+ }), [[resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
6861
6879
  };
6862
6880
  }
6863
6881
  });
@@ -7653,7 +7671,8 @@ const VListItem = genericComponent()({
7653
7671
  "key": "prepend-icon"
7654
7672
  }, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)])]
7655
7673
  }), createVNode("div", {
7656
- "class": "v-list-item__content"
7674
+ "class": "v-list-item__content",
7675
+ "data-no-activator": ""
7657
7676
  }, [hasTitle && createVNode(VListItemTitle, {
7658
7677
  "key": "title"
7659
7678
  }, {
@@ -8536,7 +8555,9 @@ function useLocationStrategies(props, data) {
8536
8555
  updateLocation.value = undefined;
8537
8556
  if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return;
8538
8557
  scope = effectScope();
8539
- await nextTick();
8558
+ if (!(props.locationStrategy === 'connected')) {
8559
+ await nextTick();
8560
+ }
8540
8561
  scope.run(() => {
8541
8562
  if (typeof props.locationStrategy === 'function') {
8542
8563
  var _props$locationStrate;
@@ -11746,13 +11767,13 @@ function parseColor(color) {
11746
11767
  let hsva = null;
11747
11768
  if (typeof color === 'string') {
11748
11769
  const hex = parseHex(color);
11749
- hsva = HexToHSVA(hex);
11770
+ hsva = HexToHSV(hex);
11750
11771
  }
11751
11772
  if (typeof color === 'object') {
11752
11773
  if (has(color, ['r', 'g', 'b'])) {
11753
- hsva = RGBAtoHSVA(color);
11774
+ hsva = RGBtoHSV(color);
11754
11775
  } else if (has(color, ['h', 's', 'l'])) {
11755
- hsva = HSLAtoHSVA(color);
11776
+ hsva = HSLtoHSV(color);
11756
11777
  } else if (has(color, ['h', 's', 'v'])) {
11757
11778
  hsva = color;
11758
11779
  }
@@ -11774,12 +11795,12 @@ function stripAlpha(color, stripAlpha) {
11774
11795
  }
11775
11796
  function extractColor(color, input) {
11776
11797
  if (input == null || typeof input === 'string') {
11777
- const hex = HSVAtoHex(color);
11798
+ const hex = HSVtoHex(color);
11778
11799
  if (color.a === 1) return hex.slice(0, 7);else return hex;
11779
11800
  }
11780
11801
  if (typeof input === 'object') {
11781
11802
  let converted;
11782
- 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;
11803
+ 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;
11783
11804
  return stripAlpha(converted, !has(input, ['a']));
11784
11805
  }
11785
11806
  return color;
@@ -11826,14 +11847,19 @@ const rgba = {
11826
11847
  label: 'A',
11827
11848
  max: 1,
11828
11849
  step: 0.01,
11829
- getValue: c => Math.round(c.a * 100) / 100,
11850
+ getValue: _ref => {
11851
+ let {
11852
+ a
11853
+ } = _ref;
11854
+ return a ? Math.round(a * 100) / 100 : 1;
11855
+ },
11830
11856
  getColor: (c, v) => ({
11831
11857
  ...c,
11832
11858
  a: Number(v)
11833
11859
  })
11834
11860
  }],
11835
- to: HSVAtoRGBA,
11836
- from: RGBAtoHSVA
11861
+ to: HSVtoRGB,
11862
+ from: RGBtoHSV
11837
11863
  };
11838
11864
  const rgb = {
11839
11865
  ...rgba,
@@ -11875,14 +11901,19 @@ const hsla = {
11875
11901
  label: 'A',
11876
11902
  max: 1,
11877
11903
  step: 0.01,
11878
- getValue: c => Math.round(c.a * 100) / 100,
11904
+ getValue: _ref2 => {
11905
+ let {
11906
+ a
11907
+ } = _ref2;
11908
+ return a ? Math.round(a * 100) / 100 : 1;
11909
+ },
11879
11910
  getColor: (c, v) => ({
11880
11911
  ...c,
11881
11912
  a: Number(v)
11882
11913
  })
11883
11914
  }],
11884
- to: HSVAtoHSLA,
11885
- from: HSLAtoHSVA
11915
+ to: HSVtoHSL,
11916
+ from: HSLtoHSV
11886
11917
  };
11887
11918
  const hsl = {
11888
11919
  ...hsla,
@@ -11897,8 +11928,8 @@ const hexa = {
11897
11928
  getValue: c => c,
11898
11929
  getColor: (c, v) => v
11899
11930
  }],
11900
- to: HSVAtoHex,
11901
- from: HexToHSVA
11931
+ to: HSVtoHex,
11932
+ from: HexToHSV
11902
11933
  };
11903
11934
  const hex = {
11904
11935
  ...hexa,
@@ -12664,7 +12695,7 @@ const VColorPickerPreview = defineComponent({
12664
12695
  "class": "v-color-picker-preview__dot"
12665
12696
  }, [createVNode("div", {
12666
12697
  "style": {
12667
- background: HSVAtoCSS(props.color ?? nullColor)
12698
+ background: HSVtoCSS(props.color ?? nullColor)
12668
12699
  }
12669
12700
  }, null)]), createVNode("div", {
12670
12701
  "class": "v-color-picker-preview__sliders"
@@ -13205,7 +13236,7 @@ const VColorPicker = defineComponent({
13205
13236
  "theme": props.theme,
13206
13237
  "class": ['v-color-picker'],
13207
13238
  "style": {
13208
- '--v-color-picker-color-hsv': HSVAtoCSS({
13239
+ '--v-color-picker-color-hsv': HSVtoCSS({
13209
13240
  ...(currentColor.value ?? nullColor),
13210
13241
  a: 1
13211
13242
  })
@@ -14218,7 +14249,7 @@ const VFooter = defineComponent({
14218
14249
  useRender(() => createVNode(props.tag, {
14219
14250
  "ref": resizeRef,
14220
14251
  "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14221
- "style": [backgroundColorStyles, props.app ? layoutItemStyles.value : undefined]
14252
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14222
14253
  }, slots));
14223
14254
  return {};
14224
14255
  }
@@ -14780,7 +14811,8 @@ const VLazy = defineComponent({
14780
14811
  "style": dimensionStyles.value
14781
14812
  }, {
14782
14813
  default: () => [isActive.value && createVNode(MaybeTransition, {
14783
- "transition": props.transition
14814
+ "transition": props.transition,
14815
+ "appear": true
14784
14816
  }, {
14785
14817
  default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]
14786
14818
  })]
@@ -15240,7 +15272,7 @@ const VNavigationDrawer = defineComponent({
15240
15272
  const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary));
15241
15273
  const isSticky = computed(() => props.sticky && !isTemporary.value && location.value !== 'bottom');
15242
15274
  if (!props.disableResizeWatcher) {
15243
- watch(isTemporary, val => !props.permanent && (isActive.value = !val));
15275
+ watch(isTemporary, val => !props.permanent && nextTick(() => isActive.value = !val));
15244
15276
  }
15245
15277
  if (!props.disableRouteWatcher && router) {
15246
15278
  watch(router.currentRoute, () => isTemporary.value && (isActive.value = false));
@@ -15868,8 +15900,7 @@ const VRadioGroup = defineComponent({
15868
15900
  isReadonly
15869
15901
  } = _ref2;
15870
15902
  return createVNode(Fragment, null, [label && createVNode(VLabel, {
15871
- "for": id.value,
15872
- "clickable": true
15903
+ "for": id.value
15873
15904
  }, {
15874
15905
  default: () => [label]
15875
15906
  }), createVNode(VSelectionControlGroup, mergeProps(controlProps, {
@@ -18163,7 +18194,7 @@ function createVuetify$1() {
18163
18194
  locale
18164
18195
  };
18165
18196
  }
18166
- const version$1 = "3.0.2";
18197
+ const version$1 = "3.0.4";
18167
18198
  createVuetify$1.version = version$1;
18168
18199
 
18169
18200
  // Vue's inject() can only be used in setup
@@ -18184,7 +18215,7 @@ const createVuetify = function () {
18184
18215
  ...options
18185
18216
  });
18186
18217
  };
18187
- const version = "3.0.2";
18218
+ const version = "3.0.4";
18188
18219
  createVuetify.version = version;
18189
18220
 
18190
18221
  export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };