@dimailn/vuetify 2.7.2-alpha23 → 2.7.2-alpha25
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/dist/vuetify.js +280 -256
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +1 -1
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VBadge/VBadge.js +17 -14
- package/es5/components/VBadge/VBadge.js.map +1 -1
- package/es5/components/VBtn/VBtn.js +16 -16
- package/es5/components/VBtn/VBtn.js.map +1 -1
- package/es5/components/VColorPicker/VColorPicker.js +18 -31
- package/es5/components/VColorPicker/VColorPicker.js.map +1 -1
- package/es5/components/VColorPicker/VColorPickerCanvas.js +45 -46
- package/es5/components/VColorPicker/VColorPickerCanvas.js.map +1 -1
- package/es5/components/VColorPicker/VColorPickerEdit.js +27 -26
- package/es5/components/VColorPicker/VColorPickerEdit.js.map +1 -1
- package/es5/components/VColorPicker/VColorPickerPreview.js +41 -30
- package/es5/components/VColorPicker/VColorPickerPreview.js.map +1 -1
- package/es5/components/VColorPicker/VColorPickerSwatches.js +13 -10
- package/es5/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
- package/es5/components/VDataTable/VDataTable.js +7 -11
- package/es5/components/VDataTable/VDataTable.js.map +1 -1
- package/es5/components/VInput/VInput.js +24 -6
- package/es5/components/VInput/VInput.js.map +1 -1
- package/es5/components/VSelect/VSelectList.js +1 -1
- package/es5/components/VSelect/VSelectList.js.map +1 -1
- package/es5/components/VSlider/VSlider.js +23 -18
- package/es5/components/VSlider/VSlider.js.map +1 -1
- package/es5/components/VTooltip/VTooltip.js +3 -7
- package/es5/components/VTooltip/VTooltip.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/activatable/index.js +2 -1
- package/es5/mixins/activatable/index.js.map +1 -1
- package/es5/mixins/bootable/index.js +1 -2
- package/es5/mixins/bootable/index.js.map +1 -1
- package/es5/mixins/mouse/index.js +10 -5
- package/es5/mixins/mouse/index.js.map +1 -1
- package/es5/mixins/selectable/index.js +3 -0
- package/es5/mixins/selectable/index.js.map +1 -1
- package/lib/components/VBadge/VBadge.js +14 -13
- package/lib/components/VBadge/VBadge.js.map +1 -1
- package/lib/components/VBtn/VBtn.js +18 -19
- package/lib/components/VBtn/VBtn.js.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.js +29 -37
- package/lib/components/VColorPicker/VColorPicker.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.js +41 -43
- package/lib/components/VColorPicker/VColorPickerCanvas.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.js +25 -31
- package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.js +45 -32
- package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.js +15 -9
- package/lib/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +3 -4
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VInput/VInput.js +16 -4
- package/lib/components/VInput/VInput.js.map +1 -1
- package/lib/components/VSelect/VSelectList.js +2 -1
- package/lib/components/VSelect/VSelectList.js.map +1 -1
- package/lib/components/VSlider/VSlider.js +26 -21
- package/lib/components/VSlider/VSlider.js.map +1 -1
- package/lib/components/VTooltip/VTooltip.js +6 -9
- package/lib/components/VTooltip/VTooltip.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/activatable/index.js +2 -1
- package/lib/mixins/activatable/index.js.map +1 -1
- package/lib/mixins/bootable/index.js +2 -4
- package/lib/mixins/bootable/index.js.map +1 -1
- package/lib/mixins/mouse/index.js +9 -5
- package/lib/mixins/mouse/index.js.map +1 -1
- package/lib/mixins/selectable/index.js +4 -0
- package/lib/mixins/selectable/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/VBadge/VBadge.ts +24 -25
- package/src/components/VBadge/__tests__/VBadge.spec.ts +47 -30
- package/src/components/VBadge/__tests__/__snapshots__/VBadge.spec.ts.snap +5 -5
- package/src/components/VBtn/VBtn.ts +18 -16
- package/src/components/VBtn/__tests__/VBtn.spec.ts +257 -242
- package/src/components/VBtn/__tests__/__snapshots__/VBtn.spec.ts.snap +13 -73
- package/src/components/VColorPicker/VColorPicker.ts +32 -35
- package/src/components/VColorPicker/VColorPickerCanvas.ts +44 -37
- package/src/components/VColorPicker/VColorPickerEdit.ts +37 -35
- package/src/components/VColorPicker/VColorPickerPreview.ts +48 -28
- package/src/components/VColorPicker/VColorPickerSwatches.ts +23 -12
- package/src/components/VColorPicker/__tests__/VColorPicker.spec.ts +47 -47
- package/src/components/VColorPicker/__tests__/VColorPickerCanvas.spec.ts +15 -13
- package/src/components/VColorPicker/__tests__/VColorPickerEdit.spec.ts +52 -50
- package/src/components/VColorPicker/__tests__/VColorPickerPreview.spec.ts +101 -30
- package/src/components/VColorPicker/__tests__/__snapshots__/VColorPicker.spec.ts.snap +200 -157
- package/src/components/VColorPicker/__tests__/__snapshots__/VColorPickerEdit.spec.ts.snap +28 -11
- package/src/components/VDataTable/VDataTable.ts +3 -3
- package/src/components/VInput/VInput.ts +12 -2
- package/src/components/VInput/__tests__/VInput.spec.ts +170 -234
- package/src/components/VInput/__tests__/__snapshots__/VInput.spec.ts.snap +50 -101
- package/src/components/VSelect/VSelectList.ts +1 -0
- package/src/components/VSkeletonLoader/__tests__/VSkeletonLoader.spec.ts +22 -15
- package/src/components/VSkeletonLoader/__tests__/__snapshots__/VSkeletonLoader.spec.ts.snap +60 -60
- package/src/components/VSlider/VSlider.ts +43 -27
- package/src/components/VSlider/__tests__/VSlider.spec.ts +188 -286
- package/src/components/VSlider/__tests__/__snapshots__/VSlider.spec.ts.snap +157 -246
- package/src/components/VTabs/__tests__/VTab.spec.ts +3 -3
- package/src/components/VTabs/__tests__/VTabsBar.spec.ts +2 -2
- package/src/components/VTooltip/VTooltip.ts +20 -20
- package/src/components/VTooltip/__tests__/VTooltip.spec.ts +60 -75
- package/src/mixins/activatable/index.ts +2 -1
- package/src/mixins/bootable/__tests__/bootable.spec.ts +17 -11
- package/src/mixins/bootable/index.ts +4 -3
- package/src/mixins/mouse/__tests__/mouse.spec.ts +54 -40
- package/src/mixins/mouse/index.ts +10 -6
- package/src/mixins/selectable/index.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VBadge/VBadge.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VBadge/VBadge.ts"],"names":[],"mappings":"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","sourcesContent":["import { Transition, h, defineComponent, VNode, withDirectives, vShow } from 'vue'\n// Styles\nimport './VBadge.sass'\n\n// Components\nimport VIcon from '../VIcon/VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Transitionable from '../../mixins/transitionable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport mergeData from '../../util/mergeData'\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n} from '../../util/helpers'\n\nconst Toggleable = ToggleableFactory('modelValue', 'update:modelValue')\n\nexport default defineComponent({\n name: 'v-badge',\n\n mixins: [\n Colorable,\n PositionableFactory(['left', 'bottom']),\n Themeable,\n Toggleable,\n Transitionable,\n ],\n\n props: {\n avatar: Boolean,\n bordered: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n content: { required: false },\n dot: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge',\n },\n icon: String,\n inline: Boolean,\n offsetX: [Number, String],\n offsetY: [Number, String],\n overlap: Boolean,\n tile: Boolean,\n transition: {\n type: String,\n default: 'scale-rotate-transition',\n },\n modelValue: { default: true },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-badge--avatar': this.avatar,\n 'v-badge--bordered': this.bordered,\n 'v-badge--bottom': this.bottom,\n 'v-badge--dot': this.dot,\n 'v-badge--icon': this.icon != null,\n 'v-badge--inline': this.inline,\n 'v-badge--left': this.left,\n 'v-badge--overlap': this.overlap,\n 'v-badge--tile': this.tile,\n ...this.themeClasses,\n }\n },\n computedBottom (): string {\n return this.bottom ? 'auto' : this.computedYOffset\n },\n computedLeft (): string {\n if (this.isRtl) {\n return this.left ? this.computedXOffset : 'auto'\n }\n\n return this.left ? 'auto' : this.computedXOffset\n },\n computedRight (): string {\n if (this.isRtl) {\n return this.left ? 'auto' : this.computedXOffset\n }\n\n return !this.left ? 'auto' : this.computedXOffset\n },\n computedTop (): string {\n return this.bottom ? this.computedYOffset : 'auto'\n },\n computedXOffset (): string {\n return this.calcPosition(this.offsetX)\n },\n computedYOffset (): string {\n return this.calcPosition(this.offsetY)\n },\n isRtl (): boolean {\n return this.$vuetify.rtl\n },\n // Default fallback if offsetX\n // or offsetY are undefined.\n offset (): number {\n if (this.overlap) return this.dot ? 8 : 12\n return this.dot ? 2 : 4\n },\n styles (): object {\n if (this.inline) return {}\n\n return {\n bottom: this.computedBottom,\n left: this.computedLeft,\n right: this.computedRight,\n top: this.computedTop,\n }\n },\n },\n\n methods: {\n calcPosition (offset: string | number): string {\n return `calc(100% - ${convertToUnit(offset || this.offset)})`\n },\n genBadge () {\n const lang = this.$vuetify.lang\n const label = this.$attrs['aria-label'] || lang.t(this.label)\n\n const data = this.setBackgroundColor(this.color, {\n class: 'v-badge__badge',\n style: this.styles,\n 'aria-atomic': this.$attrs['aria-atomic'] || 'true',\n 'aria-label': label,\n 'aria-live': this.$attrs['aria-live'] || 'polite',\n title: this.$attrs.title,\n role: this.$attrs.role || 'status',\n })\n\n const badge = withDirectives(\n h('span', data, [this.genBadgeContent()]),\n [[vShow, this.isActive]]\n )\n\n if (!this.transition) return badge\n\n return h(Transition, {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n }, {\n default: () => [badge],\n })\n },\n genBadgeContent () {\n // Dot prop shows no content\n if (this.dot) return undefined\n\n const slot = getSlot(this, 'badge')\n\n if (slot) return slot\n if (this.content) return String(this.content)\n if (this.icon) return h(VIcon, { icon: this.icon })\n\n return undefined\n },\n genBadgeWrapper () {\n return h('span', {\n class: 'v-badge__wrapper',\n }, [this.genBadge()])\n },\n },\n\n render (): VNode {\n const badge = [this.genBadgeWrapper()]\n const children = [getSlot(this)]\n const {\n 'aria-atomic': _x,\n 'aria-label': _y,\n 'aria-live': _z,\n role,\n title,\n ...attrs\n } = this.$attrs\n\n if (this.inline && this.left) children.unshift(badge)\n else children.push(badge)\n\n return h('span', mergeData({\n class: ['v-badge', this.classes],\n }, attrs), children)\n },\n})\n"],"sourceRoot":"","file":"VBadge.js"}
|
|
@@ -7,24 +7,20 @@ import VProgressCircular from '../VProgressCircular'; // Mixins
|
|
|
7
7
|
|
|
8
8
|
import { factory as GroupableFactory } from '../../mixins/groupable';
|
|
9
9
|
import { factory as ToggleableFactory } from '../../mixins/toggleable';
|
|
10
|
-
import Elevatable from '../../mixins/elevatable';
|
|
11
10
|
import Positionable from '../../mixins/positionable';
|
|
12
11
|
import Routable from '../../mixins/routable';
|
|
13
12
|
import Sizeable from '../../mixins/sizeable'; // Utilities
|
|
14
13
|
|
|
15
14
|
import mixins from '../../util/mixins';
|
|
16
15
|
import { breaking } from '../../util/console';
|
|
17
|
-
import { getSlot } from '../../util/helpers';
|
|
18
|
-
import mergeData from '../../util/mergeData'; // Types
|
|
16
|
+
import { getSlot } from '../../util/helpers'; // Types
|
|
19
17
|
|
|
20
|
-
import { withDirectives } from 'vue';
|
|
21
|
-
import { h } from 'vue';
|
|
18
|
+
import { withDirectives, h } from 'vue';
|
|
22
19
|
const baseMixins = mixins(VSheet, Routable, Positionable, Sizeable, GroupableFactory('btnToggle'), ToggleableFactory('inputValue')
|
|
23
20
|
/* @vue/component */
|
|
24
21
|
);
|
|
25
22
|
export default baseMixins.extend({
|
|
26
23
|
name: 'v-btn',
|
|
27
|
-
inheritAttrs: false,
|
|
28
24
|
props: {
|
|
29
25
|
activeClass: {
|
|
30
26
|
type: String
|
|
@@ -87,7 +83,7 @@ export default baseMixins.extend({
|
|
|
87
83
|
|
|
88
84
|
computedElevation() {
|
|
89
85
|
if (this.disabled) return undefined;
|
|
90
|
-
return
|
|
86
|
+
return this.elevation;
|
|
91
87
|
},
|
|
92
88
|
|
|
93
89
|
computedRipple() {
|
|
@@ -161,22 +157,25 @@ export default baseMixins.extend({
|
|
|
161
157
|
data: linkData,
|
|
162
158
|
directives
|
|
163
159
|
} = this.generateRouteLink();
|
|
164
|
-
const setColor = this.hasBg ? this.setBackgroundColor : this.setTextColor;
|
|
165
|
-
|
|
160
|
+
const setColor = this.hasBg ? this.setBackgroundColor : this.setTextColor; // Merge component classes with routable classes
|
|
161
|
+
|
|
162
|
+
const mergedClasses = { ...this.classes,
|
|
163
|
+
...linkData.class
|
|
164
|
+
};
|
|
166
165
|
|
|
167
166
|
if (tag === 'button') {
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
linkData.type = this.type;
|
|
168
|
+
linkData.disabled = this.disabled;
|
|
170
169
|
}
|
|
171
170
|
|
|
172
|
-
|
|
173
|
-
data = { ...
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
return withDirectives(h(tag,
|
|
171
|
+
linkData.value = ['string', 'number'].includes(typeof this.value) ? this.value : JSON.stringify(this.value);
|
|
172
|
+
const data = { ...linkData,
|
|
173
|
+
class: mergedClasses,
|
|
174
|
+
style: this.styles
|
|
175
|
+
}; // Apply color styling but preserve Vue's automatic attribute inheritance
|
|
176
|
+
|
|
177
|
+
const finalData = this.disabled ? data : setColor(this.color, data);
|
|
178
|
+
return withDirectives(h(tag, finalData, children), directives);
|
|
180
179
|
}
|
|
181
180
|
|
|
182
181
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VBtn/VBtn.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, withDirectives } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\nimport {h} from 'vue'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue<typeof baseMixins> {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend({\n name: 'v-btn',\n inheritAttrs: false,\n props: {\n activeClass: {\n type: String,\n } as any as PropValidator<string>,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType<any>,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n this.$emitLegacy('click', e)\n\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return h('span', {\n class: 'v-btn__content',\n }, getSlot(this))\n },\n genLoader (): VNode {\n return h('span', {\n class: 'v-btn__loader',\n }, getSlot(this, 'loader') || [h(VProgressCircular, {\n indeterminate: true,\n size: 23,\n width: 2\n })])\n },\n },\n\n render (): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data: linkData, directives } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n let data = {}\n\n if (tag === 'button') {\n data.type = this.type\n data.disabled = this.disabled\n }\n data.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n data = {\n ...data,\n ...linkData\n }\n\n data = mergeData(data, { class: this.$attrs.class })\n\n return withDirectives(\n h(tag, this.disabled ? data : setColor(this.color, data), children),\n directives\n )\n },\n})\n"],"sourceRoot":"","file":"VBtn.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VBtn/VBtn.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode, withDirectives, h } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue<typeof baseMixins> {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend({\n name: 'v-btn',\n props: {\n activeClass: {\n type: String,\n } as any as PropValidator<string>,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType<any>,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return this.elevation\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n this.$emitLegacy('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return h('span', {\n class: 'v-btn__content',\n }, getSlot(this))\n },\n genLoader (): VNode {\n return h('span', {\n class: 'v-btn__loader',\n }, getSlot(this, 'loader') || [h(VProgressCircular, {\n indeterminate: true,\n size: 23,\n width: 2,\n })])\n },\n },\n\n render (): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data: linkData, directives } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n // Merge component classes with routable classes\n const mergedClasses = {\n ...this.classes,\n ...linkData.class,\n }\n\n if (tag === 'button') {\n linkData.type = this.type\n linkData.disabled = this.disabled\n }\n linkData.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n const data = {\n ...linkData,\n class: mergedClasses,\n style: this.styles,\n }\n\n // Apply color styling but preserve Vue's automatic attribute inheritance\n const finalData = this.disabled ? data : setColor(this.color, data)\n\n return withDirectives(\n h(tag, finalData, children),\n directives\n )\n },\n})\n"],"sourceRoot":"","file":"VBtn.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h } from 'vue'; // Styles
|
|
1
|
+
import { h, defineComponent } from 'vue'; // Styles
|
|
2
2
|
|
|
3
3
|
import "../../../src/components/VColorPicker/VColorPicker.sass"; // Components
|
|
4
4
|
|
|
@@ -9,13 +9,13 @@ import VColorPickerEdit, { modes } from './VColorPickerEdit';
|
|
|
9
9
|
import VColorPickerSwatches from './VColorPickerSwatches'; // Helpers
|
|
10
10
|
|
|
11
11
|
import { parseColor, fromRGBA, extractColor, hasAlpha } from './util';
|
|
12
|
-
import mixins from '../../util/mixins';
|
|
13
12
|
import { deepEqual } from '../../util/helpers'; // Mixins
|
|
14
13
|
|
|
15
14
|
import Elevatable from '../../mixins/elevatable';
|
|
16
15
|
import Themeable from '../../mixins/themeable';
|
|
17
|
-
export default
|
|
16
|
+
export default defineComponent({
|
|
18
17
|
name: 'v-color-picker',
|
|
18
|
+
mixins: [Elevatable, Themeable],
|
|
19
19
|
props: {
|
|
20
20
|
canvasHeight: {
|
|
21
21
|
type: [String, Number],
|
|
@@ -50,14 +50,19 @@ export default mixins(Elevatable, Themeable).extend({
|
|
|
50
50
|
default: 300
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
emits: ['update:modelValue', 'update:color', 'update:mode'],
|
|
54
|
+
|
|
55
|
+
data() {
|
|
56
|
+
return {
|
|
57
|
+
internalValue: fromRGBA({
|
|
58
|
+
r: 255,
|
|
59
|
+
g: 0,
|
|
60
|
+
b: 0,
|
|
61
|
+
a: 1
|
|
62
|
+
})
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
|
|
61
66
|
computed: {
|
|
62
67
|
hideAlpha() {
|
|
63
68
|
if (!this.modelValue) return false;
|
|
@@ -66,7 +71,7 @@ export default mixins(Elevatable, Themeable).extend({
|
|
|
66
71
|
|
|
67
72
|
},
|
|
68
73
|
watch: {
|
|
69
|
-
|
|
74
|
+
modelValue: {
|
|
70
75
|
handler(color) {
|
|
71
76
|
this.updateColor(parseColor(color, this.internalValue));
|
|
72
77
|
},
|
|
@@ -116,30 +121,20 @@ export default mixins(Elevatable, Themeable).extend({
|
|
|
116
121
|
|
|
117
122
|
genPreview() {
|
|
118
123
|
return h(VColorPickerPreview, {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
},
|
|
124
|
-
on: {
|
|
125
|
-
'update:color': this.updateColor
|
|
126
|
-
}
|
|
124
|
+
color: this.internalValue,
|
|
125
|
+
disabled: this.disabled,
|
|
126
|
+
hideAlpha: this.hideAlpha,
|
|
127
|
+
'onUpdate:color': this.updateColor
|
|
127
128
|
});
|
|
128
129
|
},
|
|
129
130
|
|
|
130
131
|
genSwatches() {
|
|
131
132
|
return h(VColorPickerSwatches, {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
color: this.internalValue,
|
|
138
|
-
maxHeight: this.swatchesMaxHeight
|
|
139
|
-
},
|
|
140
|
-
on: {
|
|
141
|
-
'update:color': this.updateColor
|
|
142
|
-
}
|
|
133
|
+
disabled: this.disabled,
|
|
134
|
+
swatches: this.swatches,
|
|
135
|
+
color: this.internalValue,
|
|
136
|
+
maxHeight: this.swatchesMaxHeight,
|
|
137
|
+
'onUpdate:color': this.updateColor
|
|
143
138
|
});
|
|
144
139
|
}
|
|
145
140
|
|
|
@@ -147,15 +142,12 @@ export default mixins(Elevatable, Themeable).extend({
|
|
|
147
142
|
|
|
148
143
|
render() {
|
|
149
144
|
return h(VSheet, {
|
|
150
|
-
class: 'v-color-picker',
|
|
151
|
-
class: {
|
|
145
|
+
class: ['v-color-picker', {
|
|
152
146
|
'v-color-picker--flat': this.flat,
|
|
153
147
|
...this.themeClasses,
|
|
154
148
|
...this.elevationClasses
|
|
155
|
-
},
|
|
156
|
-
|
|
157
|
-
maxWidth: this.width
|
|
158
|
-
}
|
|
149
|
+
}],
|
|
150
|
+
maxWidth: this.width
|
|
159
151
|
}, [!this.hideCanvas && this.genCanvas(), (!this.hideSliders || !this.hideInputs) && this.genControls(), this.showSwatches && this.genSwatches()]);
|
|
160
152
|
}
|
|
161
153
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPicker.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPicker.ts"],"names":[],"mappings":"AAAA,SAAS,CAAT,EAAY,eAAZ,QAAmC,KAAnC,C,CAEA;;AACA,OAAO,wDAAP,C,CAEA;;AACA,OAAO,MAAP,MAAmB,kBAAnB;AACA,OAAO,mBAAP,MAAgC,uBAAhC;AACA,OAAO,kBAAP,MAA+B,sBAA/B;AACA,OAAO,gBAAP,IAAiC,KAAjC,QAA8C,oBAA9C;AACA,OAAO,oBAAP,MAAiC,wBAAjC,C,CAEA;;AACA,SAA4B,UAA5B,EAAwC,QAAxC,EAAkD,YAAlD,EAAgE,QAAhE,QAAgF,QAAhF;AACA,SAAS,SAAT,QAA0B,oBAA1B,C,CAEA;;AACA,OAAO,UAAP,MAAuB,yBAAvB;AACA,OAAO,SAAP,MAAsB,wBAAtB;AAKA,eAAe,eAAe,CAAC;AAC7B,EAAA,IAAI,EAAE,gBADuB;AAG7B,EAAA,MAAM,EAAE,CAAC,UAAD,EAAa,SAAb,CAHqB;AAK7B,EAAA,KAAK,EAAE;AACL,IAAA,YAAY,EAAE;AACZ,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADM;AAEZ,MAAA,OAAO,EAAE;AAFG,KADT;AAKL,IAAA,QAAQ,EAAE,OALL;AAML,IAAA,OAAO,EAAE;AACP,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADC;AAEP,MAAA,OAAO,EAAE;AAFF,KANJ;AAUL,IAAA,IAAI,EAAE,OAVD;AAWL,IAAA,UAAU,EAAE,OAXP;AAYL,IAAA,WAAW,EAAE,OAZR;AAaL,IAAA,UAAU,EAAE,OAbP;AAcL,IAAA,cAAc,EAAE,OAdX;AAeL,IAAA,IAAI,EAAE;AACJ,MAAA,IAAI,EAAE,MADF;AAEJ,MAAA,OAAO,EAAE,MAFL;AAGJ,MAAA,SAAS,EAAG,CAAD,IAAe,MAAM,CAAC,IAAP,CAAY,KAAZ,EAAmB,QAAnB,CAA4B,CAA5B;AAHtB,KAfD;AAoBL,IAAA,YAAY,EAAE,OApBT;AAqBL,IAAA,QAAQ,EAAE,KArBL;AAsBL,IAAA,iBAAiB,EAAE;AACjB,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADW;AAEjB,MAAA,OAAO,EAAE;AAFQ,KAtBd;AA0BL,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT;AADI,KA1BP;AA6BL,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADD;AAEL,MAAA,OAAO,EAAE;AAFJ;AA7BF,GALsB;AAwC7B,EAAA,KAAK,EAAE,CAAC,mBAAD,EAAsB,cAAtB,EAAsC,aAAtC,CAxCsB;;AA0C7B,EAAA,IAAI,GAAA;AACF,WAAO;AACL,MAAA,aAAa,EAAE,QAAQ,CAAC;AAAE,QAAA,CAAC,EAAE,GAAL;AAAU,QAAA,CAAC,EAAE,CAAb;AAAgB,QAAA,CAAC,EAAE,CAAnB;AAAsB,QAAA,CAAC,EAAE;AAAzB,OAAD;AADlB,KAAP;AAGD,GA9C4B;;AAgD7B,EAAA,QAAQ,EAAE;AACR,IAAA,SAAS,GAAA;AACP,UAAI,CAAC,KAAK,UAAV,EAAsB,OAAO,KAAP;AACtB,aAAO,CAAC,QAAQ,CAAC,KAAK,UAAN,CAAhB;AACD;;AAJO,GAhDmB;AAuD7B,EAAA,KAAK,EAAE;AACL,IAAA,UAAU,EAAE;AACV,MAAA,OAAO,CAAE,KAAF,EAAY;AACjB,aAAK,WAAL,CAAiB,UAAU,CAAC,KAAD,EAAQ,KAAK,aAAb,CAA3B;AACD,OAHS;;AAIV,MAAA,SAAS,EAAE;AAJD;AADP,GAvDsB;AAgE7B,EAAA,OAAO,EAAE;AACP,IAAA,WAAW,CAAE,KAAF,EAA0B;AACnC,WAAK,aAAL,GAAqB,KAArB;AACA,YAAM,KAAK,GAAG,YAAY,CAAC,KAAK,aAAN,EAAqB,KAAK,UAA1B,CAA1B;;AAEA,UAAI,CAAC,SAAS,CAAC,KAAD,EAAQ,KAAK,UAAb,CAAd,EAAwC;AACtC,aAAK,KAAL,CAAW,mBAAX,EAAgC,KAAhC;AACA,aAAK,KAAL,CAAW,cAAX,EAA2B,KAAK,aAAhC;AACD;AACF,KATM;;AAWP,IAAA,SAAS,GAAA;AACP,aAAO,CAAC,CAAC,kBAAD,EAAqB;AAC3B,QAAA,KAAK,EAAE,KAAK,aADe;AAE3B,QAAA,QAAQ,EAAE,KAAK,QAFY;AAG3B,QAAA,OAAO,EAAE,KAAK,OAHa;AAI3B,QAAA,KAAK,EAAE,KAAK,KAJe;AAK3B,QAAA,MAAM,EAAE,KAAK,YALc;AAM3B,0BAAkB,KAAK;AANI,OAArB,CAAR;AAQD,KApBM;;AAsBP,IAAA,WAAW,GAAA;AACT,aAAO,CAAC,CAAC,KAAD,EAAQ;AACd,QAAA,KAAK,EAAE;AADO,OAAR,EAEL,CACD,CAAC,KAAK,WAAN,IAAqB,KAAK,UAAL,EADpB,EAED,CAAC,KAAK,UAAN,IAAoB,KAAK,OAAL,EAFnB,CAFK,CAAR;AAMD,KA7BM;;AA+BP,IAAA,OAAO,GAAA;AACL,aAAO,CAAC,CAAC,gBAAD,EAAmB;AACzB,QAAA,KAAK,EAAE,KAAK,aADa;AAEzB,QAAA,QAAQ,EAAE,KAAK,QAFU;AAGzB,QAAA,SAAS,EAAE,KAAK,SAHS;AAIzB,QAAA,cAAc,EAAE,KAAK,cAJI;AAKzB,QAAA,IAAI,EAAE,KAAK,IALc;AAMzB,0BAAkB,KAAK,WANE;AAOzB,yBAAkB,CAAD,IAAe,KAAK,KAAL,CAAW,aAAX,EAA0B,CAA1B;AAPP,OAAnB,CAAR;AASD,KAzCM;;AA2CP,IAAA,UAAU,GAAA;AACR,aAAO,CAAC,CAAC,mBAAD,EAAsB;AAC5B,QAAA,KAAK,EAAE,KAAK,aADgB;AAE5B,QAAA,QAAQ,EAAE,KAAK,QAFa;AAG5B,QAAA,SAAS,EAAE,KAAK,SAHY;AAI5B,0BAAkB,KAAK;AAJK,OAAtB,CAAR;AAMD,KAlDM;;AAoDP,IAAA,WAAW,GAAA;AACT,aAAO,CAAC,CAAC,oBAAD,EAAuB;AAC7B,QAAA,QAAQ,EAAE,KAAK,QADc;AAE7B,QAAA,QAAQ,EAAE,KAAK,QAFc;AAG7B,QAAA,KAAK,EAAE,KAAK,aAHiB;AAI7B,QAAA,SAAS,EAAE,KAAK,iBAJa;AAK7B,0BAAkB,KAAK;AALM,OAAvB,CAAR;AAOD;;AA5DM,GAhEoB;;AA+H7B,EAAA,MAAM,GAAA;AACJ,WAAO,CAAC,CAAC,MAAD,EAAS;AACf,MAAA,KAAK,EAAE,CAAC,gBAAD,EAAmB;AACxB,gCAAwB,KAAK,IADL;AAExB,WAAG,KAAK,YAFgB;AAGxB,WAAG,KAAK;AAHgB,OAAnB,CADQ;AAMf,MAAA,QAAQ,EAAE,KAAK;AANA,KAAT,EAOL,CACD,CAAC,KAAK,UAAN,IAAoB,KAAK,SAAL,EADnB,EAED,CAAC,CAAC,KAAK,WAAN,IAAqB,CAAC,KAAK,UAA5B,KAA2C,KAAK,WAAL,EAF1C,EAGD,KAAK,YAAL,IAAqB,KAAK,WAAL,EAHpB,CAPK,CAAR;AAYD;;AA5I4B,CAAD,CAA9B","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\nimport VColorPickerPreview from './VColorPickerPreview'\nimport VColorPickerCanvas from './VColorPickerCanvas'\nimport VColorPickerEdit, { Mode, modes } from './VColorPickerEdit'\nimport VColorPickerSwatches from './VColorPickerSwatches'\n\n// Helpers\nimport { VColorPickerColor, parseColor, fromRGBA, extractColor, hasAlpha } from './util'\nimport { deepEqual } from '../../util/helpers'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport type { VNode, PropType } from 'vue'\n\nexport default defineComponent({\n name: 'v-color-picker',\n\n mixins: [Elevatable, Themeable],\n\n props: {\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n flat: Boolean,\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n showSwatches: Boolean,\n swatches: Array as PropType<string[][]>,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n modelValue: {\n type: [Object, String],\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: ['update:modelValue', 'update:color', 'update:mode'],\n\n data () {\n return {\n internalValue: fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n }\n },\n\n computed: {\n hideAlpha (): boolean {\n if (!this.modelValue) return false\n return !hasAlpha(this.modelValue)\n },\n },\n\n watch: {\n modelValue: {\n handler (color: any) {\n this.updateColor(parseColor(color, this.internalValue))\n },\n immediate: true,\n },\n },\n\n methods: {\n updateColor (color: VColorPickerColor) {\n this.internalValue = color\n const value = extractColor(this.internalValue, this.modelValue)\n\n if (!deepEqual(value, this.modelValue)) {\n this.$emit('update:modelValue', value)\n this.$emit('update:color', this.internalValue)\n }\n },\n\n genCanvas (): VNode {\n return h(VColorPickerCanvas, {\n color: this.internalValue,\n disabled: this.disabled,\n dotSize: this.dotSize,\n width: this.width,\n height: this.canvasHeight,\n 'onUpdate:color': this.updateColor\n })\n },\n\n genControls (): VNode {\n return h('div', {\n class: 'v-color-picker__controls',\n }, [\n !this.hideSliders && this.genPreview(),\n !this.hideInputs && this.genEdit(),\n ])\n },\n\n genEdit (): VNode {\n return h(VColorPickerEdit, {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n hideModeSwitch: this.hideModeSwitch,\n mode: this.mode,\n 'onUpdate:color': this.updateColor,\n 'onUpdate:mode': (v: string) => this.$emit('update:mode', v),\n })\n },\n\n genPreview (): VNode {\n return h(VColorPickerPreview, {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n 'onUpdate:color': this.updateColor,\n })\n },\n\n genSwatches (): VNode {\n return h(VColorPickerSwatches, {\n disabled: this.disabled,\n swatches: this.swatches,\n color: this.internalValue,\n maxHeight: this.swatchesMaxHeight,\n 'onUpdate:color': this.updateColor,\n })\n },\n },\n\n render (): VNode {\n return h(VSheet, {\n class: ['v-color-picker', {\n 'v-color-picker--flat': this.flat,\n ...this.themeClasses,\n ...this.elevationClasses,\n }],\n maxWidth: this.width,\n }, [\n !this.hideCanvas && this.genCanvas(),\n (!this.hideSliders || !this.hideInputs) && this.genControls(),\n this.showSwatches && this.genSwatches(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPicker.js"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { h } from 'vue'; // Styles
|
|
1
|
+
import { h, defineComponent } from 'vue'; // Styles
|
|
2
2
|
|
|
3
3
|
import "../../../src/components/VColorPicker/VColorPickerCanvas.sass"; // Helpers
|
|
4
4
|
|
|
5
5
|
import { clamp, convertToUnit } from '../../util/helpers';
|
|
6
|
-
import { fromHSVA, fromRGBA } from './util';
|
|
7
|
-
|
|
8
|
-
import { defineComponent } from 'vue';
|
|
6
|
+
import { fromHSVA, fromRGBA } from './util';
|
|
9
7
|
export default defineComponent({
|
|
10
8
|
name: 'v-color-picker-canvas',
|
|
11
9
|
props: {
|
|
@@ -32,6 +30,7 @@ export default defineComponent({
|
|
|
32
30
|
default: 300
|
|
33
31
|
}
|
|
34
32
|
},
|
|
33
|
+
emits: ['update:color'],
|
|
35
34
|
|
|
36
35
|
data() {
|
|
37
36
|
return {
|
|
@@ -51,14 +50,17 @@ export default defineComponent({
|
|
|
51
50
|
y: 0
|
|
52
51
|
};
|
|
53
52
|
return {
|
|
54
|
-
x: this.color.hsva.s * parseInt(this.width, 10),
|
|
55
|
-
y: (1 - this.color.hsva.v) * parseInt(this.height, 10)
|
|
53
|
+
x: this.color.hsva.s * parseInt(String(this.width), 10),
|
|
54
|
+
y: (1 - this.color.hsva.v) * parseInt(String(this.height), 10)
|
|
56
55
|
};
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
},
|
|
60
59
|
watch: {
|
|
61
|
-
'color.hue'
|
|
60
|
+
'color.hue'() {
|
|
61
|
+
this.updateCanvas();
|
|
62
|
+
}
|
|
63
|
+
|
|
62
64
|
},
|
|
63
65
|
|
|
64
66
|
mounted() {
|
|
@@ -66,24 +68,10 @@ export default defineComponent({
|
|
|
66
68
|
},
|
|
67
69
|
|
|
68
70
|
methods: {
|
|
69
|
-
emitColor(x, y) {
|
|
70
|
-
const {
|
|
71
|
-
left,
|
|
72
|
-
top,
|
|
73
|
-
width,
|
|
74
|
-
height
|
|
75
|
-
} = this.boundingRect;
|
|
76
|
-
this.$emit('update:color', fromHSVA({
|
|
77
|
-
h: this.color.hue,
|
|
78
|
-
s: clamp(x - left, 0, width) / width,
|
|
79
|
-
v: 1 - clamp(y - top, 0, height) / height,
|
|
80
|
-
a: this.color.alpha
|
|
81
|
-
}));
|
|
82
|
-
},
|
|
83
|
-
|
|
84
71
|
updateCanvas() {
|
|
85
72
|
if (!this.color) return;
|
|
86
73
|
const canvas = this.$refs.canvas;
|
|
74
|
+
if (!canvas) return;
|
|
87
75
|
const ctx = canvas.getContext('2d');
|
|
88
76
|
if (!ctx) return;
|
|
89
77
|
const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0);
|
|
@@ -101,19 +89,25 @@ export default defineComponent({
|
|
|
101
89
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
102
90
|
},
|
|
103
91
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
92
|
+
emitColor(x, y) {
|
|
93
|
+
const {
|
|
94
|
+
left,
|
|
95
|
+
top,
|
|
96
|
+
width,
|
|
97
|
+
height
|
|
98
|
+
} = this.boundingRect;
|
|
99
|
+
this.$emit('update:color', fromHSVA({
|
|
100
|
+
h: this.color.hue,
|
|
101
|
+
s: clamp(x - left, 0, width) / width,
|
|
102
|
+
v: 1 - clamp(y - top, 0, height) / height,
|
|
103
|
+
a: this.color.alpha
|
|
104
|
+
}));
|
|
108
105
|
},
|
|
109
106
|
|
|
110
|
-
|
|
111
|
-
// To prevent selection while moving cursor
|
|
112
|
-
e.preventDefault();
|
|
107
|
+
handleClick(e) {
|
|
113
108
|
if (this.disabled) return;
|
|
114
109
|
this.boundingRect = this.$el.getBoundingClientRect();
|
|
115
|
-
|
|
116
|
-
window.addEventListener('mouseup', this.handleMouseUp);
|
|
110
|
+
this.emitColor(e.clientX, e.clientY);
|
|
117
111
|
},
|
|
118
112
|
|
|
119
113
|
handleMouseMove(e) {
|
|
@@ -126,25 +120,31 @@ export default defineComponent({
|
|
|
126
120
|
window.removeEventListener('mouseup', this.handleMouseUp);
|
|
127
121
|
},
|
|
128
122
|
|
|
123
|
+
handleMouseDown(e) {
|
|
124
|
+
// To prevent selection while moving cursor
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
if (this.disabled) return;
|
|
127
|
+
this.boundingRect = this.$el.getBoundingClientRect();
|
|
128
|
+
window.addEventListener('mousemove', this.handleMouseMove);
|
|
129
|
+
window.addEventListener('mouseup', this.handleMouseUp);
|
|
130
|
+
},
|
|
131
|
+
|
|
129
132
|
genCanvas() {
|
|
130
133
|
return h('canvas', {
|
|
131
134
|
ref: 'canvas',
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
height: this.height
|
|
135
|
-
}
|
|
135
|
+
width: this.width,
|
|
136
|
+
height: this.height
|
|
136
137
|
});
|
|
137
138
|
},
|
|
138
139
|
|
|
139
140
|
genDot() {
|
|
140
|
-
const radius = parseInt(this.dotSize, 10) / 2;
|
|
141
|
+
const radius = parseInt(String(this.dotSize), 10) / 2;
|
|
141
142
|
const x = convertToUnit(this.dot.x - radius);
|
|
142
143
|
const y = convertToUnit(this.dot.y - radius);
|
|
143
144
|
return h('div', {
|
|
144
|
-
class: 'v-color-picker__canvas-dot',
|
|
145
|
-
class: {
|
|
145
|
+
class: ['v-color-picker__canvas-dot', {
|
|
146
146
|
'v-color-picker__canvas-dot--disabled': this.disabled
|
|
147
|
-
},
|
|
147
|
+
}],
|
|
148
148
|
style: {
|
|
149
149
|
width: convertToUnit(this.dotSize),
|
|
150
150
|
height: convertToUnit(this.dotSize),
|
|
@@ -162,10 +162,8 @@ export default defineComponent({
|
|
|
162
162
|
width: convertToUnit(this.width),
|
|
163
163
|
height: convertToUnit(this.height)
|
|
164
164
|
},
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
mousedown: this.handleMouseDown
|
|
168
|
-
}
|
|
165
|
+
onClick: this.handleClick,
|
|
166
|
+
onMousedown: this.handleMouseDown
|
|
169
167
|
}, [this.genCanvas(), this.genDot()]);
|
|
170
168
|
}
|
|
171
169
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPickerCanvas.sass'\n\n// Helpers\nimport { clamp, convertToUnit } from '../../util/helpers'\nimport { fromHSVA, VColorPickerColor, fromRGBA } from './util'\n\n// Types\nimport type { VNode, PropType } from 'vue'\n\nexport default defineComponent({\n name: 'v-color-picker-canvas',\n\n props: {\n color: {\n type: Object as PropType<VColorPickerColor>,\n default: () => fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: ['update:color'],\n\n data () {\n return {\n boundingRect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n } as ClientRect,\n }\n },\n\n computed: {\n dot () {\n if (!this.color) return { x: 0, y: 0 }\n\n return {\n x: this.color.hsva.s * parseInt(String(this.width), 10),\n y: (1 - this.color.hsva.v) * parseInt(String(this.height), 10),\n }\n },\n },\n\n watch: {\n 'color.hue' () {\n this.updateCanvas()\n },\n },\n\n mounted () {\n this.updateCanvas()\n },\n\n methods: {\n updateCanvas () {\n if (!this.color) return\n\n const canvas = this.$refs.canvas as HTMLCanvasElement\n if (!canvas) return\n\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${this.color.hue}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n },\n\n emitColor (x: number, y: number) {\n const { left, top, width, height } = this.boundingRect\n\n this.$emit('update:color', fromHSVA({\n h: this.color!.hue,\n s: clamp(x - left, 0, width) / width,\n v: 1 - clamp(y - top, 0, height) / height,\n a: this.color!.alpha,\n }))\n },\n\n handleClick (e: MouseEvent) {\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n this.emitColor(e.clientX, e.clientY)\n },\n\n handleMouseMove (e: MouseEvent) {\n if (this.disabled) return\n this.emitColor(e.clientX, e.clientY)\n },\n\n handleMouseUp () {\n window.removeEventListener('mousemove', this.handleMouseMove)\n window.removeEventListener('mouseup', this.handleMouseUp)\n },\n\n handleMouseDown (e: MouseEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n\n window.addEventListener('mousemove', this.handleMouseMove)\n window.addEventListener('mouseup', this.handleMouseUp)\n },\n\n genCanvas (): VNode {\n return h('canvas', {\n ref: 'canvas',\n width: this.width,\n height: this.height,\n })\n },\n\n genDot (): VNode {\n const radius = parseInt(String(this.dotSize), 10) / 2\n const x = convertToUnit(this.dot.x - radius)\n const y = convertToUnit(this.dot.y - radius)\n\n return h('div', {\n class: ['v-color-picker__canvas-dot', {\n 'v-color-picker__canvas-dot--disabled': this.disabled,\n }],\n style: {\n width: convertToUnit(this.dotSize),\n height: convertToUnit(this.dotSize),\n transform: `translate(${x}, ${y})`,\n },\n })\n },\n },\n\n render (): VNode {\n return h('div', {\n class: 'v-color-picker__canvas',\n style: {\n width: convertToUnit(this.width),\n height: convertToUnit(this.height),\n },\n onClick: this.handleClick,\n onMousedown: this.handleMouseDown,\n }, [\n this.genCanvas(),\n this.genDot(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerCanvas.js"}
|