@vuetify/nightly 4.0.0-dev-20230427.0 → 4.0.0-dev-20230511.0

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 (193) hide show
  1. package/CHANGELOG.md +22 -23
  2. package/dist/json/attributes.json +854 -658
  3. package/dist/json/importMap-labs.json +4 -4
  4. package/dist/json/tags.json +50 -1
  5. package/dist/json/web-types.json +1797 -1324
  6. package/dist/vuetify-labs.css +81 -69
  7. package/dist/vuetify-labs.d.ts +771 -257
  8. package/dist/vuetify-labs.esm.js +260 -224
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +259 -223
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +23 -11
  13. package/dist/vuetify.d.ts +884 -412
  14. package/dist/vuetify.esm.js +237 -215
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +236 -214
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +640 -645
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/{index.d.ts → index.d.mts} +5 -1
  22. package/lib/blueprints/{md1.d.ts → md1.d.mts} +5 -1
  23. package/lib/blueprints/{md2.d.ts → md2.d.mts} +5 -1
  24. package/lib/blueprints/{md3.d.ts → md3.d.mts} +5 -1
  25. package/lib/components/VAppBar/VAppBar.mjs +7 -11
  26. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  27. package/lib/components/VAppBar/VAppBarNavIcon.mjs +10 -16
  28. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  29. package/lib/components/VAppBar/{index.d.ts → index.d.mts} +394 -28
  30. package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
  31. package/lib/components/VAutocomplete/VAutocomplete.mjs +9 -2
  32. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  33. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  34. package/lib/components/VAutocomplete/{index.d.ts → index.d.mts} +6 -6
  35. package/lib/components/VBtn/VBtn.mjs +7 -6
  36. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  37. package/lib/components/VCheckbox/VCheckboxBtn.mjs +0 -1
  38. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  39. package/lib/components/VCheckbox/{index.d.ts → index.d.mts} +6 -6
  40. package/lib/components/VColorPicker/VColorPicker.mjs +9 -4
  41. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  42. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  43. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +5 -4
  44. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  45. package/lib/components/VColorPicker/{index.d.ts → index.d.mts} +97 -31
  46. package/lib/components/VColorPicker/util/index.mjs +2 -22
  47. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  48. package/lib/components/VCombobox/VCombobox.mjs +9 -2
  49. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  50. package/lib/components/VCombobox/{index.d.ts → index.d.mts} +6 -6
  51. package/lib/components/VField/{index.d.ts → index.d.mts} +6 -6
  52. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  53. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  54. package/lib/components/VFileInput/{index.d.ts → index.d.mts} +15 -15
  55. package/lib/components/VImg/VImg.css +2 -4
  56. package/lib/components/VImg/VImg.mjs +25 -24
  57. package/lib/components/VImg/VImg.mjs.map +1 -1
  58. package/lib/components/VImg/VImg.sass +4 -3
  59. package/lib/components/VImg/{index.d.ts → index.d.mts} +48 -3
  60. package/lib/components/VInput/{index.d.ts → index.d.mts} +6 -6
  61. package/lib/components/VList/VList.mjs +5 -0
  62. package/lib/components/VList/VList.mjs.map +1 -1
  63. package/lib/components/VList/VListGroup.mjs +3 -0
  64. package/lib/components/VList/VListGroup.mjs.map +1 -1
  65. package/lib/components/VList/VListItem.mjs +10 -5
  66. package/lib/components/VList/VListItem.mjs.map +1 -1
  67. package/lib/components/VList/{index.d.ts → index.d.mts} +18 -0
  68. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -8
  69. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  70. package/lib/components/VRadioGroup/{index.d.ts → index.d.mts} +6 -6
  71. package/lib/components/VRangeSlider/{index.d.ts → index.d.mts} +6 -6
  72. package/lib/components/VResponsive/VResponsive.css +13 -5
  73. package/lib/components/VResponsive/VResponsive.mjs +12 -8
  74. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  75. package/lib/components/VResponsive/VResponsive.sass +12 -4
  76. package/lib/components/VResponsive/{index.d.ts → index.d.mts} +10 -1
  77. package/lib/components/VSelect/VSelect.mjs +9 -2
  78. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  79. package/lib/components/VSelect/{index.d.ts → index.d.mts} +6 -6
  80. package/lib/components/VSheet/VSheet.css +6 -0
  81. package/lib/components/VSheet/_variables.scss +1 -1
  82. package/lib/components/VSlider/{index.d.ts → index.d.mts} +6 -6
  83. package/lib/components/VSwitch/{index.d.ts → index.d.mts} +6 -6
  84. package/lib/components/VTextField/VTextField.mjs +1 -1
  85. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  86. package/lib/components/VTextField/{index.d.ts → index.d.mts} +24 -24
  87. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  88. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  89. package/lib/components/VTextarea/{index.d.ts → index.d.mts} +15 -15
  90. package/lib/components/VValidation/{index.d.ts → index.d.mts} +6 -6
  91. package/lib/components/{index.d.ts → index.d.mts} +679 -208
  92. package/lib/composables/defaults.mjs +15 -3
  93. package/lib/composables/defaults.mjs.map +1 -1
  94. package/lib/composables/display.mjs +6 -6
  95. package/lib/composables/display.mjs.map +1 -1
  96. package/lib/composables/focus.mjs.map +1 -1
  97. package/lib/composables/scroll.mjs +18 -19
  98. package/lib/composables/scroll.mjs.map +1 -1
  99. package/lib/entry-bundler.mjs +1 -1
  100. package/lib/framework.mjs +1 -1
  101. package/lib/framework.mjs.map +1 -1
  102. package/lib/{index.d.ts → index.d.mts} +7 -6
  103. package/lib/labs/VDataTable/VDataTable.mjs +11 -2
  104. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  105. package/lib/labs/VDataTable/VDataTableServer.mjs +0 -5
  106. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  107. package/lib/labs/VDataTable/VDataTableVirtual.mjs +7 -2
  108. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  109. package/lib/labs/VDataTable/composables/paginate.mjs +6 -1
  110. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  111. package/lib/labs/VDataTable/{index.d.ts → index.d.mts} +54 -12
  112. package/lib/labs/{components.d.ts → components.d.mts} +54 -12
  113. package/lib/util/colorUtils.mjs +68 -3
  114. package/lib/util/colorUtils.mjs.map +1 -1
  115. package/lib/util/console.mjs +12 -81
  116. package/lib/util/console.mjs.map +1 -1
  117. package/lib/util/defineComponent.mjs +2 -2
  118. package/lib/util/defineComponent.mjs.map +1 -1
  119. package/lib/util/helpers.mjs +3 -0
  120. package/lib/util/helpers.mjs.map +1 -1
  121. package/package.json +10 -6
  122. /package/lib/components/VAlert/{index.d.ts → index.d.mts} +0 -0
  123. /package/lib/components/VApp/{index.d.ts → index.d.mts} +0 -0
  124. /package/lib/components/VAvatar/{index.d.ts → index.d.mts} +0 -0
  125. /package/lib/components/VBadge/{index.d.ts → index.d.mts} +0 -0
  126. /package/lib/components/VBanner/{index.d.ts → index.d.mts} +0 -0
  127. /package/lib/components/VBottomNavigation/{index.d.ts → index.d.mts} +0 -0
  128. /package/lib/components/VBreadcrumbs/{index.d.ts → index.d.mts} +0 -0
  129. /package/lib/components/VBtn/{index.d.ts → index.d.mts} +0 -0
  130. /package/lib/components/VBtnGroup/{index.d.ts → index.d.mts} +0 -0
  131. /package/lib/components/VBtnToggle/{index.d.ts → index.d.mts} +0 -0
  132. /package/lib/components/VCard/{index.d.ts → index.d.mts} +0 -0
  133. /package/lib/components/VCarousel/{index.d.ts → index.d.mts} +0 -0
  134. /package/lib/components/VChip/{index.d.ts → index.d.mts} +0 -0
  135. /package/lib/components/VChipGroup/{index.d.ts → index.d.mts} +0 -0
  136. /package/lib/components/VCode/{index.d.ts → index.d.mts} +0 -0
  137. /package/lib/components/VCounter/{index.d.ts → index.d.mts} +0 -0
  138. /package/lib/components/VDefaultsProvider/{index.d.ts → index.d.mts} +0 -0
  139. /package/lib/components/VDialog/{index.d.ts → index.d.mts} +0 -0
  140. /package/lib/components/VDivider/{index.d.ts → index.d.mts} +0 -0
  141. /package/lib/components/VExpansionPanel/{index.d.ts → index.d.mts} +0 -0
  142. /package/lib/components/VFooter/{index.d.ts → index.d.mts} +0 -0
  143. /package/lib/components/VForm/{index.d.ts → index.d.mts} +0 -0
  144. /package/lib/components/VGrid/{index.d.ts → index.d.mts} +0 -0
  145. /package/lib/components/VHover/{index.d.ts → index.d.mts} +0 -0
  146. /package/lib/components/VIcon/{index.d.ts → index.d.mts} +0 -0
  147. /package/lib/components/VItemGroup/{index.d.ts → index.d.mts} +0 -0
  148. /package/lib/components/VKbd/{index.d.ts → index.d.mts} +0 -0
  149. /package/lib/components/VLabel/{index.d.ts → index.d.mts} +0 -0
  150. /package/lib/components/VLayout/{index.d.ts → index.d.mts} +0 -0
  151. /package/lib/components/VLazy/{index.d.ts → index.d.mts} +0 -0
  152. /package/lib/components/VLocaleProvider/{index.d.ts → index.d.mts} +0 -0
  153. /package/lib/components/VMain/{index.d.ts → index.d.mts} +0 -0
  154. /package/lib/components/VMenu/{index.d.ts → index.d.mts} +0 -0
  155. /package/lib/components/VMessages/{index.d.ts → index.d.mts} +0 -0
  156. /package/lib/components/VNavigationDrawer/{index.d.ts → index.d.mts} +0 -0
  157. /package/lib/components/VNoSsr/{index.d.ts → index.d.mts} +0 -0
  158. /package/lib/components/VOverlay/{index.d.ts → index.d.mts} +0 -0
  159. /package/lib/components/VPagination/{index.d.ts → index.d.mts} +0 -0
  160. /package/lib/components/VParallax/{index.d.ts → index.d.mts} +0 -0
  161. /package/lib/components/VProgressCircular/{index.d.ts → index.d.mts} +0 -0
  162. /package/lib/components/VProgressLinear/{index.d.ts → index.d.mts} +0 -0
  163. /package/lib/components/VRadio/{index.d.ts → index.d.mts} +0 -0
  164. /package/lib/components/VRating/{index.d.ts → index.d.mts} +0 -0
  165. /package/lib/components/VSelectionControl/{index.d.ts → index.d.mts} +0 -0
  166. /package/lib/components/VSelectionControlGroup/{index.d.ts → index.d.mts} +0 -0
  167. /package/lib/components/VSheet/{index.d.ts → index.d.mts} +0 -0
  168. /package/lib/components/VSlideGroup/{index.d.ts → index.d.mts} +0 -0
  169. /package/lib/components/VSnackbar/{index.d.ts → index.d.mts} +0 -0
  170. /package/lib/components/VSystemBar/{index.d.ts → index.d.mts} +0 -0
  171. /package/lib/components/VTable/{index.d.ts → index.d.mts} +0 -0
  172. /package/lib/components/VTabs/{index.d.ts → index.d.mts} +0 -0
  173. /package/lib/components/VThemeProvider/{index.d.ts → index.d.mts} +0 -0
  174. /package/lib/components/VTimeline/{index.d.ts → index.d.mts} +0 -0
  175. /package/lib/components/VToolbar/{index.d.ts → index.d.mts} +0 -0
  176. /package/lib/components/VTooltip/{index.d.ts → index.d.mts} +0 -0
  177. /package/lib/components/VVirtualScroll/{index.d.ts → index.d.mts} +0 -0
  178. /package/lib/components/VWindow/{index.d.ts → index.d.mts} +0 -0
  179. /package/lib/components/transitions/{index.d.ts → index.d.mts} +0 -0
  180. /package/lib/directives/{index.d.ts → index.d.mts} +0 -0
  181. /package/lib/iconsets/{fa-svg.d.ts → fa-svg.d.mts} +0 -0
  182. /package/lib/iconsets/{fa.d.ts → fa.d.mts} +0 -0
  183. /package/lib/iconsets/{fa4.d.ts → fa4.d.mts} +0 -0
  184. /package/lib/iconsets/{md.d.ts → md.d.mts} +0 -0
  185. /package/lib/iconsets/{mdi-svg.d.ts → mdi-svg.d.mts} +0 -0
  186. /package/lib/iconsets/{mdi.d.ts → mdi.d.mts} +0 -0
  187. /package/lib/labs/VInfiniteScroll/{index.d.ts → index.d.mts} +0 -0
  188. /package/lib/labs/VSkeletonLoader/{index.d.ts → index.d.mts} +0 -0
  189. /package/lib/labs/date/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
  190. /package/lib/labs/date/{index.d.ts → index.d.mts} +0 -0
  191. /package/lib/locale/adapters/{vue-i18n.d.ts → vue-i18n.d.mts} +0 -0
  192. /package/lib/locale/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
  193. /package/lib/locale/{index.d.ts → index.d.mts} +0 -0
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v4.0.0-dev-20230427.0
2
+ * Vuetify v4.0.0-dev-20230511.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -171,6 +171,9 @@
171
171
  function keys(o) {
172
172
  return Object.keys(o);
173
173
  }
174
+ function has(obj, key) {
175
+ return key.every(k => obj.hasOwnProperty(k));
176
+ }
174
177
  function pick(obj, paths, exclude) {
175
178
  const found = Object.create(null);
176
179
  const rest = Object.create(null);
@@ -538,79 +541,15 @@
538
541
  }
539
542
 
540
543
  /* eslint-disable no-console */
541
- // import Vuetify from '../framework'
542
-
543
- function createMessage(message, vm, parent) {
544
- // if (Vuetify.config.silent) return
545
-
546
- if (parent) {
547
- vm = {
548
- __isVue: true,
549
- $parent: parent,
550
- $options: vm
551
- };
552
- }
553
- if (vm) {
554
- // Only show each message once per instance
555
- vm.$_alreadyWarned = vm.$_alreadyWarned || [];
556
- if (vm.$_alreadyWarned.includes(message)) return;
557
- vm.$_alreadyWarned.push(message);
558
- }
559
- return `[Vuetify] ${message}` + (vm ? generateComponentTrace(vm) : '');
544
+ function consoleWarn(message) {
545
+ vue.warn(`Vuetify: ${message}`);
560
546
  }
561
- function consoleWarn(message, vm, parent) {
562
- const newMessage = createMessage(message, vm, parent);
563
- newMessage != null && console.warn(newMessage);
547
+ function consoleError(message) {
548
+ vue.warn(`Vuetify error: ${message}`);
564
549
  }
565
- function consoleError(message, vm, parent) {
566
- const newMessage = createMessage(message, vm, parent);
567
- newMessage != null && console.error(newMessage);
568
- }
569
-
570
- /**
571
- * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js
572
- */
573
-
574
- const classifyRE = /(?:^|[-_])(\w)/g;
575
- const classify = str => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');
576
- function formatComponentName(vm, includeFile) {
577
- if (vm.$root === vm) {
578
- return '<Root>';
579
- }
580
- const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm.__isVue ? vm.$options || vm.constructor.options : vm || {};
581
- let name = options.name || options._componentTag;
582
- const file = options.__file;
583
- if (!name && file) {
584
- const match = file.match(/([^/\\]+)\.vue$/);
585
- name = match?.[1];
586
- }
587
- return (name ? `<${classify(name)}>` : `<Anonymous>`) + (file && includeFile !== false ? ` at ${file}` : '');
588
- }
589
- function generateComponentTrace(vm) {
590
- if (vm.__isVue && vm.$parent) {
591
- const tree = [];
592
- let currentRecursiveSequence = 0;
593
- while (vm) {
594
- if (tree.length > 0) {
595
- const last = tree[tree.length - 1];
596
- if (last.constructor === vm.constructor) {
597
- currentRecursiveSequence++;
598
- vm = vm.$parent;
599
- continue;
600
- } else if (currentRecursiveSequence > 0) {
601
- tree[tree.length - 1] = [last, currentRecursiveSequence];
602
- currentRecursiveSequence = 0;
603
- }
604
- }
605
- tree.push(vm);
606
- vm = vm.$parent;
607
- }
608
- return '\n\nfound in\n\n' + tree.map((vm, i) => `${i === 0 ? '---> ' : ' '.repeat(5 + i * 2)}${Array.isArray(vm)
609
- // eslint-disable-next-line sonarjs/no-nested-template-literals
610
- ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)` : formatComponentName(vm)}`).join('\n');
611
- } else {
612
- return `\n\n(found in ${formatComponentName(vm)})`;
613
- }
550
+ function deprecate(original, replacement) {
551
+ replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
552
+ vue.warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
614
553
  }
615
554
 
616
555
  // For converting XYZ to sRGB
@@ -684,7 +623,46 @@
684
623
  function isCssColor(color) {
685
624
  return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
686
625
  }
687
- function parseColor$1(color) {
626
+ const cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/;
627
+ const mappers = {
628
+ rgb: (r, g, b, a) => ({
629
+ r,
630
+ g,
631
+ b,
632
+ a
633
+ }),
634
+ rgba: (r, g, b, a) => ({
635
+ r,
636
+ g,
637
+ b,
638
+ a
639
+ }),
640
+ hsl: (h, s, l, a) => HSLtoRGB({
641
+ h,
642
+ s,
643
+ l,
644
+ a
645
+ }),
646
+ hsla: (h, s, l, a) => HSLtoRGB({
647
+ h,
648
+ s,
649
+ l,
650
+ a
651
+ }),
652
+ hsv: (h, s, v, a) => HSVtoRGB({
653
+ h,
654
+ s,
655
+ v,
656
+ a
657
+ }),
658
+ hsva: (h, s, v, a) => HSVtoRGB({
659
+ h,
660
+ s,
661
+ v,
662
+ a
663
+ })
664
+ };
665
+ function parseColor(color) {
688
666
  if (typeof color === 'number') {
689
667
  if (isNaN(color) || color < 0 || color > 0xFFFFFF) {
690
668
  // int can't have opacity
@@ -695,6 +673,22 @@
695
673
  g: (color & 0xFF00) >> 8,
696
674
  b: color & 0xFF
697
675
  };
676
+ } else if (typeof color === 'string' && cssColorRe.test(color)) {
677
+ const {
678
+ groups
679
+ } = color.match(cssColorRe);
680
+ const {
681
+ fn,
682
+ values
683
+ } = groups;
684
+ const realValues = values.split(/,\s*/).map(v => {
685
+ if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {
686
+ return parseFloat(v) / 100;
687
+ } else {
688
+ return parseFloat(v);
689
+ }
690
+ });
691
+ return mappers[fn](...realValues);
698
692
  } else if (typeof color === 'string') {
699
693
  let hex = color.startsWith('#') ? color.slice(1) : color;
700
694
  if ([3, 4].includes(hex.length)) {
@@ -707,9 +701,16 @@
707
701
  consoleWarn(`'${color}' is not a valid hex(a) color`);
708
702
  }
709
703
  return HexToRGB(hex);
710
- } else {
711
- throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`);
704
+ } else if (typeof color === 'object') {
705
+ if (has(color, ['r', 'g', 'b'])) {
706
+ return color;
707
+ } else if (has(color, ['h', 's', 'l'])) {
708
+ return HSVtoRGB(HSLtoHSV(color));
709
+ } else if (has(color, ['h', 's', 'v'])) {
710
+ return HSVtoRGB(color);
711
+ }
712
712
  }
713
+ throw new TypeError(`Invalid color: ${color == null ? color : String(color) || color.constructor.name}\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);
713
714
  }
714
715
 
715
716
  /** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
@@ -732,6 +733,9 @@
732
733
  a
733
734
  };
734
735
  }
736
+ function HSLtoRGB(hsla) {
737
+ return HSVtoRGB(HSLtoHSV(hsla));
738
+ }
735
739
 
736
740
  /** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
737
741
  function RGBtoHSV(rgba) {
@@ -870,7 +874,7 @@
870
874
  * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef
871
875
  */
872
876
  function getLuma(color) {
873
- const rgb = parseColor$1(color);
877
+ const rgb = parseColor(color);
874
878
  return toXYZ$1(rgb)[1];
875
879
  }
876
880
 
@@ -1016,21 +1020,23 @@
1016
1020
  function propIsDefined(vnode, prop) {
1017
1021
  return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1018
1022
  }
1019
- function useDefaults(props, name) {
1023
+ function internalUseDefaults() {
1024
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1025
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1020
1026
  let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
1021
1027
  const vm = getCurrentInstance('useDefaults');
1022
1028
  name = name ?? vm.type.name ?? vm.type.__name;
1023
1029
  if (!name) {
1024
1030
  throw new Error('[Vuetify] Could not determine component name');
1025
1031
  }
1026
- const componentDefaults = vue.computed(() => defaults.value[props._as ?? name]);
1032
+ const componentDefaults = vue.computed(() => defaults.value?.[props._as ?? name]);
1027
1033
  const _props = new Proxy(props, {
1028
1034
  get(target, prop) {
1029
1035
  const propValue = Reflect.get(target, prop);
1030
1036
  if (prop === 'class' || prop === 'style') {
1031
1037
  return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1032
1038
  } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1033
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1039
+ return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue;
1034
1040
  }
1035
1041
  return propValue;
1036
1042
  }
@@ -1058,6 +1064,16 @@
1058
1064
  provideSubDefaults
1059
1065
  };
1060
1066
  }
1067
+ function useDefaults() {
1068
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1069
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1070
+ const {
1071
+ props: _props,
1072
+ provideSubDefaults
1073
+ } = internalUseDefaults(props, name);
1074
+ provideSubDefaults();
1075
+ return _props;
1076
+ }
1061
1077
 
1062
1078
  // Utils
1063
1079
 
@@ -1085,7 +1101,7 @@
1085
1101
  const {
1086
1102
  props: _props,
1087
1103
  provideSubDefaults
1088
- } = useDefaults(props, props._as ?? options.name, defaults);
1104
+ } = internalUseDefaults(props, props._as ?? options.name, defaults);
1089
1105
  const setupBindings = options._setup(_props, ctx);
1090
1106
  provideSubDefaults();
1091
1107
  return setupBindings;
@@ -1718,7 +1734,7 @@
1718
1734
  for (const variation of ['lighten', 'darken']) {
1719
1735
  const fn = variation === 'lighten' ? lighten : darken;
1720
1736
  for (const amount of createRange(parsedOptions.variations[variation], 1)) {
1721
- theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor$1(color), amount));
1737
+ theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
1722
1738
  }
1723
1739
  }
1724
1740
  }
@@ -1726,9 +1742,9 @@
1726
1742
  for (const color of Object.keys(theme.colors)) {
1727
1743
  if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
1728
1744
  const onColor = `on-${color}`;
1729
- const colorVal = parseColor$1(theme.colors[color]);
1730
- const blackContrast = Math.abs(APCAcontrast(parseColor$1(0), colorVal));
1731
- const whiteContrast = Math.abs(APCAcontrast(parseColor$1(0xffffff), colorVal));
1745
+ const colorVal = parseColor(theme.colors[color]);
1746
+ const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal));
1747
+ const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal));
1732
1748
 
1733
1749
  // TODO: warn about poor color selections
1734
1750
  // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
@@ -1860,14 +1876,14 @@
1860
1876
  const darkOverlay = theme.dark ? 1 : 2;
1861
1877
  const variables = [];
1862
1878
  for (const [key, value] of Object.entries(theme.colors)) {
1863
- const rgb = parseColor$1(value);
1879
+ const rgb = parseColor(value);
1864
1880
  variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
1865
1881
  if (!key.startsWith('on-')) {
1866
1882
  variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
1867
1883
  }
1868
1884
  }
1869
1885
  for (const [key, value] of Object.entries(theme.variables)) {
1870
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
1886
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
1871
1887
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
1872
1888
  variables.push(`--v-${key}: ${rgb ?? value}`);
1873
1889
  }
@@ -2640,14 +2656,16 @@
2640
2656
  })
2641
2657
  };
2642
2658
  }
2659
+ const makeVResponsiveProps = propsFactory({
2660
+ aspectRatio: [String, Number],
2661
+ contentClass: String,
2662
+ inline: Boolean,
2663
+ ...makeComponentProps(),
2664
+ ...makeDimensionProps()
2665
+ }, 'v-responsive');
2643
2666
  const VResponsive = genericComponent()({
2644
2667
  name: 'VResponsive',
2645
- props: {
2646
- aspectRatio: [String, Number],
2647
- contentClass: String,
2648
- ...makeComponentProps(),
2649
- ...makeDimensionProps()
2650
- },
2668
+ props: makeVResponsiveProps(),
2651
2669
  setup(props, _ref) {
2652
2670
  let {
2653
2671
  slots
@@ -2659,7 +2677,9 @@
2659
2677
  dimensionStyles
2660
2678
  } = useDimension(props);
2661
2679
  useRender(() => vue.createVNode("div", {
2662
- "class": ['v-responsive', props.class],
2680
+ "class": ['v-responsive', {
2681
+ 'v-responsive--inline': props.inline
2682
+ }, props.class],
2663
2683
  "style": [dimensionStyles.value, props.style]
2664
2684
  }, [vue.createVNode("div", {
2665
2685
  "class": "v-responsive__sizer",
@@ -2755,7 +2775,6 @@
2755
2775
  intersect: Intersect
2756
2776
  },
2757
2777
  props: {
2758
- aspectRatio: [String, Number],
2759
2778
  alt: String,
2760
2779
  cover: Boolean,
2761
2780
  eager: Boolean,
@@ -2777,7 +2796,7 @@
2777
2796
  default: ''
2778
2797
  },
2779
2798
  srcset: String,
2780
- width: [String, Number],
2799
+ ...makeVResponsiveProps(),
2781
2800
  ...makeComponentProps(),
2782
2801
  ...makeTransitionProps()
2783
2802
  },
@@ -2963,25 +2982,27 @@
2963
2982
  }
2964
2983
  });
2965
2984
  }
2966
- useRender(() => vue.withDirectives(vue.createVNode(VResponsive, {
2967
- "class": ['v-img', {
2968
- 'v-img--booting': !isBooted.value
2969
- }, props.class],
2970
- "style": [{
2971
- width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2972
- }, props.style],
2973
- "aspectRatio": aspectRatio.value,
2974
- "aria-label": props.alt,
2975
- "role": props.alt ? 'img' : undefined
2976
- }, {
2977
- additional: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(__image, null, null), vue.createVNode(__preloadImage, null, null), vue.createVNode(__gradient, null, null), vue.createVNode(__placeholder, null, null), vue.createVNode(__error, null, null)]),
2978
- default: slots.default
2979
- }), [[vue.resolveDirective("intersect"), {
2980
- handler: init,
2981
- options: props.options
2982
- }, null, {
2983
- once: true
2984
- }]]));
2985
+ useRender(() => {
2986
+ const [responsiveProps] = VResponsive.filterProps(props);
2987
+ return vue.withDirectives(vue.createVNode(VResponsive, vue.mergeProps({
2988
+ "class": ['v-img', {
2989
+ 'v-img--booting': !isBooted.value
2990
+ }, props.class],
2991
+ "style": props.style
2992
+ }, responsiveProps, {
2993
+ "aspectRatio": aspectRatio.value,
2994
+ "aria-label": props.alt,
2995
+ "role": props.alt ? 'img' : undefined
2996
+ }), {
2997
+ additional: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(__image, null, null), vue.createVNode(__preloadImage, null, null), vue.createVNode(__gradient, null, null), vue.createVNode(__placeholder, null, null), vue.createVNode(__error, null, null)]),
2998
+ default: slots.default
2999
+ }), [[vue.resolveDirective("intersect"), {
3000
+ handler: init,
3001
+ options: props.options
3002
+ }, null, {
3003
+ once: true
3004
+ }]]);
3005
+ });
2985
3006
  return {
2986
3007
  currentSrc,
2987
3008
  image,
@@ -3328,14 +3349,13 @@
3328
3349
  type: String
3329
3350
  },
3330
3351
  scrollThreshold: {
3331
- type: [String, Number]
3352
+ type: [String, Number],
3353
+ default: 300
3332
3354
  }
3333
3355
  }, 'scroll');
3334
3356
  function useScroll(props) {
3335
3357
  let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3336
3358
  const {
3337
- thresholdMetCallback,
3338
- scrollThreshold,
3339
3359
  canScroll
3340
3360
  } = args;
3341
3361
  let previousScroll = 0;
@@ -3345,8 +3365,16 @@
3345
3365
  const currentThreshold = vue.ref(0);
3346
3366
  const isScrollActive = vue.ref(false);
3347
3367
  const isScrollingUp = vue.ref(false);
3348
- const computedScrollThreshold = vue.computed(() => {
3349
- return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3368
+ const scrollThreshold = vue.computed(() => {
3369
+ return Number(props.scrollThreshold);
3370
+ });
3371
+
3372
+ /**
3373
+ * 1: at top
3374
+ * 0: at threshold
3375
+ */
3376
+ const scrollRatio = vue.computed(() => {
3377
+ return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
3350
3378
  });
3351
3379
  const onScroll = () => {
3352
3380
  const targetEl = target.value;
@@ -3354,7 +3382,7 @@
3354
3382
  previousScroll = currentScroll.value;
3355
3383
  currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3356
3384
  isScrollingUp.value = currentScroll.value < previousScroll;
3357
- currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3385
+ currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
3358
3386
  };
3359
3387
  vue.watch(isScrollingUp, () => {
3360
3388
  savedScroll.value = savedScroll.value || currentScroll.value;
@@ -3366,7 +3394,7 @@
3366
3394
  vue.watch(() => props.scrollTarget, scrollTarget => {
3367
3395
  const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
3368
3396
  if (!newTarget) {
3369
- consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, vue.getCurrentInstance());
3397
+ consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);
3370
3398
  return;
3371
3399
  }
3372
3400
  if (newTarget === target.value) return;
@@ -3382,15 +3410,6 @@
3382
3410
  vue.onBeforeUnmount(() => {
3383
3411
  target.value?.removeEventListener('scroll', onScroll);
3384
3412
  });
3385
- thresholdMetCallback && vue.watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3386
- thresholdMet && thresholdMetCallback({
3387
- currentThreshold: currentThreshold.value,
3388
- isScrollingUp: isScrollingUp.value,
3389
- savedScroll
3390
- });
3391
- }, {
3392
- immediate: true
3393
- });
3394
3413
 
3395
3414
  // Do we need this? If yes - seems that
3396
3415
  // there's no need to expose onScroll
@@ -3398,10 +3417,11 @@
3398
3417
  immediate: true
3399
3418
  });
3400
3419
  return {
3401
- computedScrollThreshold,
3420
+ scrollThreshold,
3402
3421
  currentScroll,
3403
3422
  currentThreshold,
3404
3423
  isScrollActive,
3424
+ scrollRatio,
3405
3425
  // required only for testing
3406
3426
  // probably can be removed
3407
3427
  // later (2 chars chlng)
@@ -3484,15 +3504,14 @@
3484
3504
  });
3485
3505
  const {
3486
3506
  currentScroll,
3487
- currentThreshold,
3488
- computedScrollThreshold,
3489
- isScrollingUp
3507
+ scrollThreshold,
3508
+ isScrollingUp,
3509
+ scrollRatio
3490
3510
  } = useScroll(props, {
3491
3511
  canScroll
3492
3512
  });
3493
- const isCollapsed = vue.computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3494
- const isFlat = vue.computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3495
- const scrollRatio = vue.computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3513
+ const isCollapsed = vue.computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
3514
+ const isFlat = vue.computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3496
3515
  const opacity = vue.computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3497
3516
  const height = vue.computed(() => {
3498
3517
  if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
@@ -3501,15 +3520,12 @@
3501
3520
  return height + extensionHeight;
3502
3521
  });
3503
3522
  function setActive() {
3504
- const val = currentScroll.value;
3505
3523
  if (scrollBehavior.value.hide) {
3506
3524
  if (scrollBehavior.value.inverted) {
3507
- isActive.value = val > computedScrollThreshold.value;
3525
+ isActive.value = currentScroll.value > scrollThreshold.value;
3508
3526
  } else {
3509
- isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3527
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3510
3528
  }
3511
- } else if (scrollBehavior.value.inverted) {
3512
- isActive.value = currentScroll.value === 0;
3513
3529
  } else {
3514
3530
  isActive.value = true;
3515
3531
  }
@@ -5049,7 +5065,7 @@
5049
5065
  ...makeVariantProps({
5050
5066
  variant: 'elevated'
5051
5067
  })
5052
- }, 'VBtn');
5068
+ }, 'v-btn');
5053
5069
  const VBtn = genericComponent()({
5054
5070
  name: 'VBtn',
5055
5071
  directives: {
@@ -5119,6 +5135,11 @@
5119
5135
  if (props.value === undefined) return undefined;
5120
5136
  return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
5121
5137
  });
5138
+ function onClick(e) {
5139
+ if (isDisabled.value) return;
5140
+ link.navigate?.(e);
5141
+ group?.toggle();
5142
+ }
5122
5143
  useSelectLink(link, group?.select);
5123
5144
  useRender(() => {
5124
5145
  const Tag = link.isLink.value ? 'a' : props.tag;
@@ -5141,11 +5162,7 @@
5141
5162
  "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
5142
5163
  "disabled": isDisabled.value || undefined,
5143
5164
  "href": link.href.value,
5144
- "onClick": e => {
5145
- if (isDisabled.value) return;
5146
- link.navigate?.(e);
5147
- group?.toggle();
5148
- },
5165
+ "onClick": onClick,
5149
5166
  "value": valueAttr.value
5150
5167
  }, {
5151
5168
  default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
@@ -5211,22 +5228,17 @@
5211
5228
 
5212
5229
  const VAppBarNavIcon = genericComponent()({
5213
5230
  name: 'VAppBarNavIcon',
5214
- props: {
5215
- icon: {
5216
- type: IconValue,
5217
- default: '$menu'
5218
- },
5219
- ...makeComponentProps()
5220
- },
5231
+ props: makeVBtnProps({
5232
+ icon: '$menu',
5233
+ variant: 'text'
5234
+ }),
5221
5235
  setup(props, _ref) {
5222
5236
  let {
5223
5237
  slots
5224
5238
  } = _ref;
5225
- useRender(() => vue.createVNode(VBtn, {
5226
- "class": ['v-app-bar-nav-icon', props.class],
5227
- "icon": props.icon,
5228
- "style": props.style
5229
- }, slots));
5239
+ useRender(() => vue.createVNode(VBtn, vue.mergeProps(props, {
5240
+ "class": ['v-app-bar-nav-icon']
5241
+ }), slots));
5230
5242
  return {};
5231
5243
  }
5232
5244
  });
@@ -6429,7 +6441,7 @@
6429
6441
  const vInputRef = vue.ref();
6430
6442
  const vFieldRef = vue.ref();
6431
6443
  const inputRef = vue.ref();
6432
- const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
6444
+ const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
6433
6445
  function onFocus() {
6434
6446
  if (inputRef.value !== document.activeElement) {
6435
6447
  inputRef.value?.focus();
@@ -6865,7 +6877,6 @@
6865
6877
  "class": ['v-checkbox-btn', props.class],
6866
6878
  "style": props.style,
6867
6879
  "type": "checkbox",
6868
- "inline": true,
6869
6880
  "falseIcon": falseIcon.value,
6870
6881
  "trueIcon": trueIcon.value,
6871
6882
  "aria-checked": props.indeterminate ? 'mixed' : undefined
@@ -7820,7 +7831,9 @@
7820
7831
  }
7821
7832
  });
7822
7833
  const makeVListGroupProps = propsFactory({
7834
+ /* @deprecated */
7823
7835
  activeColor: String,
7836
+ baseColor: String,
7824
7837
  color: String,
7825
7838
  collapseIcon: {
7826
7839
  type: IconValue,
@@ -7871,6 +7884,7 @@
7871
7884
  VListItem: {
7872
7885
  active: isOpen.value,
7873
7886
  activeColor: props.activeColor,
7887
+ baseColor: props.baseColor,
7874
7888
  color: props.color,
7875
7889
  prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,
7876
7890
  appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,
@@ -7930,9 +7944,11 @@
7930
7944
  default: undefined
7931
7945
  },
7932
7946
  activeClass: String,
7947
+ /* @deprecated */
7933
7948
  activeColor: String,
7934
7949
  appendAvatar: String,
7935
7950
  appendIcon: IconValue,
7951
+ baseColor: String,
7936
7952
  disabled: Boolean,
7937
7953
  lines: String,
7938
7954
  link: {
@@ -7989,8 +8005,9 @@
7989
8005
  const isLink = vue.computed(() => props.link !== false && link.isLink.value);
7990
8006
  const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
7991
8007
  const roundedProps = vue.computed(() => props.rounded || props.nav);
8008
+ const color = vue.computed(() => props.color ?? props.activeColor);
7992
8009
  const variantProps = vue.computed(() => ({
7993
- color: isActive.value ? props.activeColor ?? props.color : props.color,
8010
+ color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
7994
8011
  variant: props.variant
7995
8012
  }));
7996
8013
  vue.watch(() => link.isActive?.value, val => {
@@ -8047,7 +8064,6 @@
8047
8064
  }
8048
8065
  useRender(() => {
8049
8066
  const Tag = isLink.value ? 'a' : props.tag;
8050
- const hasColor = !list || isSelected.value || isActive.value;
8051
8067
  const hasTitle = slots.title || props.title;
8052
8068
  const hasSubtitle = slots.subtitle || props.subtitle;
8053
8069
  const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
@@ -8055,6 +8071,9 @@
8055
8071
  const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
8056
8072
  const hasPrepend = !!(hasPrependMedia || slots.prepend);
8057
8073
  list?.updateHasPrepend(hasPrepend);
8074
+ if (props.activeColor) {
8075
+ deprecate('active-color', ['color', 'base-color']);
8076
+ }
8058
8077
  return vue.withDirectives(vue.createVNode(Tag, {
8059
8078
  "class": ['v-list-item', {
8060
8079
  'v-list-item--active': isActive.value,
@@ -8063,8 +8082,8 @@
8063
8082
  'v-list-item--nav': props.nav,
8064
8083
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
8065
8084
  [`${props.activeClass}`]: props.activeClass && isActive.value
8066
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8067
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
8085
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8086
+ "style": [colorStyles.value, dimensionStyles.value, props.style],
8068
8087
  "href": link.href.value,
8069
8088
  "tabindex": isClickable.value ? 0 : undefined,
8070
8089
  "onClick": onClick,
@@ -8383,6 +8402,8 @@
8383
8402
  const VList = genericComponent()({
8384
8403
  name: 'VList',
8385
8404
  props: {
8405
+ baseColor: String,
8406
+ /* @deprecated */
8386
8407
  activeColor: String,
8387
8408
  activeClass: String,
8388
8409
  bgColor: String,
@@ -8454,16 +8475,19 @@
8454
8475
  } = useNested(props);
8455
8476
  const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
8456
8477
  const activeColor = vue.toRef(props, 'activeColor');
8478
+ const baseColor = vue.toRef(props, 'baseColor');
8457
8479
  const color = vue.toRef(props, 'color');
8458
8480
  createList();
8459
8481
  provideDefaults({
8460
8482
  VListGroup: {
8461
8483
  activeColor,
8484
+ baseColor,
8462
8485
  color
8463
8486
  },
8464
8487
  VListItem: {
8465
8488
  activeClass: vue.toRef(props, 'activeClass'),
8466
8489
  activeColor,
8490
+ baseColor,
8467
8491
  color,
8468
8492
  density: vue.toRef(props, 'density'),
8469
8493
  disabled: vue.toRef(props, 'disabled'),
@@ -9484,14 +9508,14 @@
9484
9508
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
9485
9509
  return mergeDeep(defaultDisplayOptions, options);
9486
9510
  };
9487
- function getClientWidth(isHydrate) {
9488
- return IN_BROWSER && !isHydrate ? window.innerWidth : 0;
9511
+ function getClientWidth(ssr) {
9512
+ return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;
9489
9513
  }
9490
- function getClientHeight(isHydrate) {
9491
- return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
9514
+ function getClientHeight(ssr) {
9515
+ return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;
9492
9516
  }
9493
- function getPlatform(isHydrate) {
9494
- const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
9517
+ function getPlatform(ssr) {
9518
+ const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';
9495
9519
  function match(regexp) {
9496
9520
  return Boolean(userAgent.match(regexp));
9497
9521
  }
@@ -10364,11 +10388,13 @@
10364
10388
  let {
10365
10389
  isSelected
10366
10390
  } = _ref2;
10367
- return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10391
+ return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10368
10392
  "modelValue": isSelected,
10369
10393
  "ripple": false,
10370
10394
  "tabindex": "-1"
10371
- }, null) : undefined;
10395
+ }, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
10396
+ "icon": item.props.prependIcon
10397
+ }, null)]);
10372
10398
  }
10373
10399
  });
10374
10400
  }), slots['append-item']?.()]
@@ -10381,6 +10407,10 @@
10381
10407
  }
10382
10408
  const slotProps = {
10383
10409
  'onClick:close': onChipClose,
10410
+ onMousedown(e) {
10411
+ e.preventDefault();
10412
+ e.stopPropagation();
10413
+ },
10384
10414
  modelValue: true,
10385
10415
  'onUpdate:modelValue': undefined
10386
10416
  };
@@ -10803,11 +10833,13 @@
10803
10833
  let {
10804
10834
  isSelected
10805
10835
  } = _ref2;
10806
- return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10836
+ return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
10807
10837
  "modelValue": isSelected,
10808
10838
  "ripple": false,
10809
10839
  "tabindex": "-1"
10810
- }, null) : undefined;
10840
+ }, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
10841
+ "icon": item.props.prependIcon
10842
+ }, null)]);
10811
10843
  },
10812
10844
  title: () => {
10813
10845
  return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -10822,6 +10854,10 @@
10822
10854
  }
10823
10855
  const slotProps = {
10824
10856
  'onClick:close': onChipClose,
10857
+ onMousedown(e) {
10858
+ e.preventDefault();
10859
+ e.stopPropagation();
10860
+ },
10825
10861
  modelValue: true,
10826
10862
  'onUpdate:modelValue': undefined
10827
10863
  };
@@ -12422,27 +12458,6 @@
12422
12458
 
12423
12459
  // Types
12424
12460
 
12425
- function has(obj, key) {
12426
- return key.every(k => obj.hasOwnProperty(k));
12427
- }
12428
- function parseColor(color) {
12429
- if (!color) return null;
12430
- let hsva = null;
12431
- if (typeof color === 'string') {
12432
- const hex = parseHex(color);
12433
- hsva = HexToHSV(hex);
12434
- }
12435
- if (typeof color === 'object') {
12436
- if (has(color, ['r', 'g', 'b'])) {
12437
- hsva = RGBtoHSV(color);
12438
- } else if (has(color, ['h', 's', 'l'])) {
12439
- hsva = HSLtoHSV(color);
12440
- } else if (has(color, ['h', 's', 'v'])) {
12441
- hsva = color;
12442
- }
12443
- }
12444
- return hsva;
12445
- }
12446
12461
  function stripAlpha(color, stripAlpha) {
12447
12462
  if (stripAlpha) {
12448
12463
  const {
@@ -13784,13 +13799,15 @@
13784
13799
  }, [vue.createVNode("div", null, [props.swatches.map(swatch => vue.createVNode("div", {
13785
13800
  "class": "v-color-picker-swatches__swatch"
13786
13801
  }, [swatch.map(color => {
13787
- const hsva = parseColor(color);
13802
+ const rgba = parseColor(color);
13803
+ const hsva = RGBtoHSV(rgba);
13804
+ const background = RGBtoCSS(rgba);
13788
13805
  return vue.createVNode("div", {
13789
13806
  "class": "v-color-picker-swatches__color",
13790
13807
  "onClick": () => hsva && emit('update:color', hsva)
13791
13808
  }, [vue.createVNode("div", {
13792
13809
  "style": {
13793
- background: color
13810
+ background
13794
13811
  }
13795
13812
  }, [props.color && deepEqual(props.color, hsva) ? vue.createVNode(VIcon, {
13796
13813
  "size": "x-small",
@@ -13850,8 +13867,13 @@
13850
13867
  const mode = useProxiedModel(props, 'mode');
13851
13868
  const lastPickedColor = vue.ref(null);
13852
13869
  const currentColor = useProxiedModel(props, 'modelValue', undefined, v => {
13853
- let c = parseColor(v);
13854
- if (!c) return null;
13870
+ let c;
13871
+ try {
13872
+ c = RGBtoHSV(parseColor(v));
13873
+ } catch (err) {
13874
+ consoleWarn(err);
13875
+ return null;
13876
+ }
13855
13877
  if (lastPickedColor.value) {
13856
13878
  c = {
13857
13879
  ...c,
@@ -14248,11 +14270,13 @@
14248
14270
  let {
14249
14271
  isSelected
14250
14272
  } = _ref2;
14251
- return props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
14273
+ return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
14252
14274
  "modelValue": isSelected,
14253
14275
  "ripple": false,
14254
14276
  "tabindex": "-1"
14255
- }, null) : undefined;
14277
+ }, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
14278
+ "icon": item.props.prependIcon
14279
+ }, null)]);
14256
14280
  },
14257
14281
  title: () => {
14258
14282
  return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
@@ -14267,6 +14291,10 @@
14267
14291
  }
14268
14292
  const slotProps = {
14269
14293
  'onClick:close': onChipClose,
14294
+ onMousedown(e) {
14295
+ e.preventDefault();
14296
+ e.stopPropagation();
14297
+ },
14270
14298
  modelValue: true,
14271
14299
  'onUpdate:modelValue': undefined
14272
14300
  };
@@ -14730,6 +14758,7 @@
14730
14758
  const vInputRef = vue.ref();
14731
14759
  const vFieldRef = vue.ref();
14732
14760
  const inputRef = vue.ref();
14761
+ const isActive = vue.computed(() => isFocused.value || props.active);
14733
14762
  function onFocus() {
14734
14763
  if (inputRef.value !== document.activeElement) {
14735
14764
  inputRef.value?.focus();
@@ -14798,7 +14827,7 @@
14798
14827
  "onClick:appendInner": props['onClick:appendInner']
14799
14828
  }, fieldProps, {
14800
14829
  "id": id.value,
14801
- "active": isDirty.value || isFocused.value,
14830
+ "active": isActive.value || isDirty.value,
14802
14831
  "dirty": isDirty.value,
14803
14832
  "disabled": isDisabled.value,
14804
14833
  "focused": isFocused.value,
@@ -15964,7 +15993,6 @@
15964
15993
  });
15965
15994
  const {
15966
15995
  layoutItemStyles,
15967
- layoutRect,
15968
15996
  layoutItemScrimStyles
15969
15997
  } = useLayoutItem({
15970
15998
  id: props.name,
@@ -15994,12 +16022,6 @@
15994
16022
  opacity: dragProgress.value * 0.2,
15995
16023
  transition: 'none'
15996
16024
  } : undefined),
15997
- ...(layoutRect.value ? {
15998
- left: convertToUnit(layoutRect.value.left),
15999
- right: convertToUnit(layoutRect.value.right),
16000
- top: convertToUnit(layoutRect.value.top),
16001
- bottom: convertToUnit(layoutRect.value.bottom)
16002
- } : undefined),
16003
16025
  ...layoutItemScrimStyles.value
16004
16026
  }));
16005
16027
  provideDefaults({
@@ -17963,7 +17985,7 @@
17963
17985
  const vFieldRef = vue.ref();
17964
17986
  const controlHeight = vue.ref('');
17965
17987
  const textareaRef = vue.ref();
17966
- const isActive = vue.computed(() => isFocused.value || props.persistentPlaceholder);
17988
+ const isActive = vue.computed(() => props.persistentPlaceholder || isFocused.value || props.active);
17967
17989
  function onFocus() {
17968
17990
  if (textareaRef.value !== document.activeElement) {
17969
17991
  textareaRef.value?.focus();
@@ -19419,7 +19441,7 @@
19419
19441
  date
19420
19442
  };
19421
19443
  }
19422
- const version$1 = "4.0.0-dev-20230427.0";
19444
+ const version$1 = "4.0.0-dev-20230511.0";
19423
19445
  createVuetify$1.version = version$1;
19424
19446
 
19425
19447
  // Vue's inject() can only be used in setup
@@ -19439,7 +19461,7 @@
19439
19461
  ...options
19440
19462
  });
19441
19463
  };
19442
- const version = "4.0.0-dev-20230427.0";
19464
+ const version = "4.0.0-dev-20230511.0";
19443
19465
  createVuetify.version = version;
19444
19466
 
19445
19467
  exports.components = components;