@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.
- package/CHANGELOG.md +22 -23
- package/dist/json/attributes.json +854 -658
- package/dist/json/importMap-labs.json +4 -4
- package/dist/json/tags.json +50 -1
- package/dist/json/web-types.json +1797 -1324
- package/dist/vuetify-labs.css +81 -69
- package/dist/vuetify-labs.d.ts +771 -257
- package/dist/vuetify-labs.esm.js +260 -224
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +259 -223
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +23 -11
- package/dist/vuetify.d.ts +884 -412
- package/dist/vuetify.esm.js +237 -215
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +236 -214
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +640 -645
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/{index.d.ts → index.d.mts} +5 -1
- package/lib/blueprints/{md1.d.ts → md1.d.mts} +5 -1
- package/lib/blueprints/{md2.d.ts → md2.d.mts} +5 -1
- package/lib/blueprints/{md3.d.ts → md3.d.mts} +5 -1
- package/lib/components/VAppBar/VAppBar.mjs +7 -11
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.mjs +10 -16
- package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
- package/lib/components/VAppBar/{index.d.ts → index.d.mts} +394 -28
- package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +9 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
- package/lib/components/VAutocomplete/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VBtn/VBtn.mjs +7 -6
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +0 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VColorPicker/VColorPicker.mjs +9 -4
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs +5 -4
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/{index.d.ts → index.d.mts} +97 -31
- package/lib/components/VColorPicker/util/index.mjs +2 -22
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +9 -2
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VField/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VFileInput/VFileInput.mjs +2 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/{index.d.ts → index.d.mts} +15 -15
- package/lib/components/VImg/VImg.css +2 -4
- package/lib/components/VImg/VImg.mjs +25 -24
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +4 -3
- package/lib/components/VImg/{index.d.ts → index.d.mts} +48 -3
- package/lib/components/VInput/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VList/VList.mjs +5 -0
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +3 -0
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +10 -5
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/{index.d.ts → index.d.mts} +18 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -8
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VRadioGroup/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VRangeSlider/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VResponsive/VResponsive.css +13 -5
- package/lib/components/VResponsive/VResponsive.mjs +12 -8
- package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.sass +12 -4
- package/lib/components/VResponsive/{index.d.ts → index.d.mts} +10 -1
- package/lib/components/VSelect/VSelect.mjs +9 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VSheet/VSheet.css +6 -0
- package/lib/components/VSheet/_variables.scss +1 -1
- package/lib/components/VSlider/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VSwitch/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/VTextField/VTextField.mjs +1 -1
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/{index.d.ts → index.d.mts} +24 -24
- package/lib/components/VTextarea/VTextarea.mjs +1 -1
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/{index.d.ts → index.d.mts} +15 -15
- package/lib/components/VValidation/{index.d.ts → index.d.mts} +6 -6
- package/lib/components/{index.d.ts → index.d.mts} +679 -208
- package/lib/composables/defaults.mjs +15 -3
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/display.mjs +6 -6
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/focus.mjs.map +1 -1
- package/lib/composables/scroll.mjs +18 -19
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/{index.d.ts → index.d.mts} +7 -6
- package/lib/labs/VDataTable/VDataTable.mjs +11 -2
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +0 -5
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +7 -2
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +6 -1
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/{index.d.ts → index.d.mts} +54 -12
- package/lib/labs/{components.d.ts → components.d.mts} +54 -12
- package/lib/util/colorUtils.mjs +68 -3
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/console.mjs +12 -81
- package/lib/util/console.mjs.map +1 -1
- package/lib/util/defineComponent.mjs +2 -2
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/helpers.mjs +3 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +10 -6
- /package/lib/components/VAlert/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VApp/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VAvatar/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VBadge/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VBanner/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VBottomNavigation/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VBreadcrumbs/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VBtn/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VBtnGroup/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VBtnToggle/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VCard/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VCarousel/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VChip/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VChipGroup/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VCode/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VCounter/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VDefaultsProvider/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VDialog/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VDivider/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VExpansionPanel/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VFooter/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VForm/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VGrid/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VHover/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VIcon/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VItemGroup/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VKbd/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VLabel/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VLayout/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VLazy/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VLocaleProvider/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VMain/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VMenu/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VMessages/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VNavigationDrawer/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VNoSsr/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VOverlay/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VPagination/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VParallax/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VProgressCircular/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VProgressLinear/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VRadio/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VRating/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VSelectionControl/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VSelectionControlGroup/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VSheet/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VSlideGroup/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VSnackbar/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VSystemBar/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VTable/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VTabs/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VThemeProvider/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VTimeline/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VToolbar/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VTooltip/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VVirtualScroll/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/VWindow/{index.d.ts → index.d.mts} +0 -0
- /package/lib/components/transitions/{index.d.ts → index.d.mts} +0 -0
- /package/lib/directives/{index.d.ts → index.d.mts} +0 -0
- /package/lib/iconsets/{fa-svg.d.ts → fa-svg.d.mts} +0 -0
- /package/lib/iconsets/{fa.d.ts → fa.d.mts} +0 -0
- /package/lib/iconsets/{fa4.d.ts → fa4.d.mts} +0 -0
- /package/lib/iconsets/{md.d.ts → md.d.mts} +0 -0
- /package/lib/iconsets/{mdi-svg.d.ts → mdi-svg.d.mts} +0 -0
- /package/lib/iconsets/{mdi.d.ts → mdi.d.mts} +0 -0
- /package/lib/labs/VInfiniteScroll/{index.d.ts → index.d.mts} +0 -0
- /package/lib/labs/VSkeletonLoader/{index.d.ts → index.d.mts} +0 -0
- /package/lib/labs/date/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
- /package/lib/labs/date/{index.d.ts → index.d.mts} +0 -0
- /package/lib/locale/adapters/{vue-i18n.d.ts → vue-i18n.d.mts} +0 -0
- /package/lib/locale/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
- /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-
|
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
|
-
|
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
|
562
|
-
|
563
|
-
newMessage != null && console.warn(newMessage);
|
547
|
+
function consoleError(message) {
|
548
|
+
vue.warn(`Vuetify error: ${message}`);
|
564
549
|
}
|
565
|
-
function
|
566
|
-
|
567
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
-
} =
|
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
|
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
|
1730
|
-
const blackContrast = Math.abs(APCAcontrast(parseColor
|
1731
|
-
const whiteContrast = Math.abs(APCAcontrast(parseColor
|
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
|
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
|
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',
|
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
|
-
|
2799
|
+
...makeVResponsiveProps(),
|
2781
2800
|
...makeComponentProps(),
|
2782
2801
|
...makeTransitionProps()
|
2783
2802
|
},
|
@@ -2963,25 +2982,27 @@
|
|
2963
2982
|
}
|
2964
2983
|
});
|
2965
2984
|
}
|
2966
|
-
useRender(() =>
|
2967
|
-
|
2968
|
-
|
2969
|
-
|
2970
|
-
|
2971
|
-
|
2972
|
-
|
2973
|
-
|
2974
|
-
|
2975
|
-
|
2976
|
-
|
2977
|
-
|
2978
|
-
|
2979
|
-
|
2980
|
-
|
2981
|
-
|
2982
|
-
|
2983
|
-
|
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
|
3349
|
-
return Number(props.scrollThreshold
|
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 -
|
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}
|
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
|
-
|
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
|
-
|
3488
|
-
|
3489
|
-
|
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 ?
|
3494
|
-
const isFlat = vue.computed(() => props.flat || scrollBehavior.value.elevate &&
|
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 =
|
3525
|
+
isActive.value = currentScroll.value > scrollThreshold.value;
|
3508
3526
|
} else {
|
3509
|
-
isActive.value = isScrollingUp.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
|
-
}, '
|
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":
|
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
|
-
|
5217
|
-
|
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'
|
5227
|
-
|
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 ?
|
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,
|
8067
|
-
"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(
|
9488
|
-
return IN_BROWSER && !
|
9511
|
+
function getClientWidth(ssr) {
|
9512
|
+
return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;
|
9489
9513
|
}
|
9490
|
-
function getClientHeight(
|
9491
|
-
return IN_BROWSER && !
|
9514
|
+
function getClientHeight(ssr) {
|
9515
|
+
return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;
|
9492
9516
|
}
|
9493
|
-
function getPlatform(
|
9494
|
-
const userAgent = IN_BROWSER && !
|
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
|
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
|
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
|
13854
|
-
|
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":
|
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.
|
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-
|
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-
|
19464
|
+
const version = "4.0.0-dev-20230511.0";
|
19443
19465
|
createVuetify.version = version;
|
19444
19466
|
|
19445
19467
|
exports.components = components;
|