@dimailn/vuetify 2.7.2-alpha24 → 2.7.2-alpha26
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 +583 -388
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +1 -1
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VAppBar/VAppBarNavIcon.js +5 -1
- package/es5/components/VAppBar/VAppBarNavIcon.js.map +1 -1
- package/es5/components/VBanner/VBanner.js +15 -6
- package/es5/components/VBanner/VBanner.js.map +1 -1
- package/es5/components/VBreadcrumbs/VBreadcrumbs.js +18 -6
- package/es5/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
- package/es5/components/VBtn/VBtn.js +19 -15
- package/es5/components/VBtn/VBtn.js.map +1 -1
- package/es5/components/VCarousel/VCarousel.js +10 -4
- package/es5/components/VCarousel/VCarousel.js.map +1 -1
- package/es5/components/VCarousel/VCarouselItem.js +7 -3
- package/es5/components/VCarousel/VCarouselItem.js.map +1 -1
- package/es5/components/VCheckbox/VCheckbox.js +5 -1
- package/es5/components/VCheckbox/VCheckbox.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/VDataIterator/VDataFooter.js +5 -1
- package/es5/components/VDataIterator/VDataFooter.js.map +1 -1
- package/es5/components/VDataTable/VDataTable.js +28 -18
- package/es5/components/VDataTable/VDataTable.js.map +1 -1
- package/es5/components/VDataTable/VDataTableHeader.js +2 -6
- package/es5/components/VDataTable/VDataTableHeader.js.map +1 -1
- package/es5/components/VDataTable/VEditDialog.js +6 -2
- package/es5/components/VDataTable/VEditDialog.js.map +1 -1
- package/es5/components/VDataTable/mixins/header.js +5 -1
- package/es5/components/VDataTable/mixins/header.js.map +1 -1
- package/es5/components/VDatePicker/VDatePickerHeader.js +8 -2
- package/es5/components/VDatePicker/VDatePickerHeader.js.map +1 -1
- package/es5/components/VDatePicker/VDatePickerTitle.js +13 -5
- package/es5/components/VDatePicker/VDatePickerTitle.js.map +1 -1
- package/es5/components/VDatePicker/mixins/date-picker-table.js +5 -3
- package/es5/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
- package/es5/components/VDialog/VDialog.js +16 -12
- package/es5/components/VDialog/VDialog.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelContent.js +11 -9
- package/es5/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelHeader.js +15 -9
- package/es5/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/es5/components/VImg/VImg.js +6 -2
- package/es5/components/VImg/VImg.js.map +1 -1
- package/es5/components/VInput/VInput.js +28 -8
- package/es5/components/VInput/VInput.js.map +1 -1
- package/es5/components/VList/VListGroup.js +27 -9
- package/es5/components/VList/VListGroup.js.map +1 -1
- package/es5/components/VList/VListItem.js +5 -1
- package/es5/components/VList/VListItem.js.map +1 -1
- package/es5/components/VMessages/VMessages.js +5 -1
- package/es5/components/VMessages/VMessages.js.map +1 -1
- package/es5/components/VOverflowBtn/VOverflowBtn.js +3 -1
- package/es5/components/VOverflowBtn/VOverflowBtn.js.map +1 -1
- package/es5/components/VPagination/VPagination.js +3 -1
- package/es5/components/VPagination/VPagination.js.map +1 -1
- package/es5/components/VPicker/VPicker.js +5 -1
- package/es5/components/VPicker/VPicker.js.map +1 -1
- package/es5/components/VRadioGroup/VRadio.js +10 -2
- package/es5/components/VRadioGroup/VRadio.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +6 -2
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VSelect/VSelectList.js +17 -9
- package/es5/components/VSelect/VSelectList.js.map +1 -1
- package/es5/components/VSlideGroup/VSlideGroup.js +26 -18
- package/es5/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/es5/components/VSlider/VSlider.js +36 -27
- package/es5/components/VSlider/VSlider.js.map +1 -1
- package/es5/components/VStepper/VStepperContent.js +3 -1
- package/es5/components/VStepper/VStepperContent.js.map +1 -1
- package/es5/components/VSwitch/VSwitch.js +10 -6
- package/es5/components/VSwitch/VSwitch.js.map +1 -1
- package/es5/components/VTabs/VTabs.js +6 -2
- package/es5/components/VTabs/VTabs.js.map +1 -1
- package/es5/components/VTextField/VTextField.js +7 -3
- package/es5/components/VTextField/VTextField.js.map +1 -1
- package/es5/components/VTooltip/VTooltip.js +6 -8
- package/es5/components/VTooltip/VTooltip.js.map +1 -1
- package/es5/components/VTreeview/VTreeviewNode.js +11 -3
- package/es5/components/VTreeview/VTreeviewNode.js.map +1 -1
- package/es5/components/transitions/createTransition.js +8 -2
- package/es5/components/transitions/createTransition.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/picker/index.js +13 -3
- package/es5/mixins/picker/index.js.map +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.js +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.js.map +1 -1
- package/lib/components/VBanner/VBanner.js +3 -3
- package/lib/components/VBanner/VBanner.js.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.js +2 -2
- package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
- package/lib/components/VBtn/VBtn.js +20 -19
- package/lib/components/VBtn/VBtn.js.map +1 -1
- package/lib/components/VCarousel/VCarousel.js +3 -3
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VCarousel/VCarouselItem.js +1 -1
- package/lib/components/VCarousel/VCarouselItem.js.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.js +1 -1
- package/lib/components/VCheckbox/VCheckbox.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/VDataIterator/VDataFooter.js +1 -1
- package/lib/components/VDataIterator/VDataFooter.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +8 -9
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeader.js +3 -6
- package/lib/components/VDataTable/VDataTableHeader.js.map +1 -1
- package/lib/components/VDataTable/VEditDialog.js +2 -2
- package/lib/components/VDataTable/VEditDialog.js.map +1 -1
- package/lib/components/VDataTable/mixins/header.js +1 -1
- package/lib/components/VDataTable/mixins/header.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerHeader.js +2 -2
- package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerTitle.js +2 -2
- package/lib/components/VDatePicker/VDatePickerTitle.js.map +1 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.js +1 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
- package/lib/components/VDialog/VDialog.js +2 -2
- package/lib/components/VDialog/VDialog.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelContent.js +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelHeader.js +2 -2
- package/lib/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/lib/components/VImg/VImg.js +2 -2
- package/lib/components/VImg/VImg.js.map +1 -1
- package/lib/components/VInput/VInput.js +14 -6
- package/lib/components/VInput/VInput.js.map +1 -1
- package/lib/components/VList/VListGroup.js +5 -5
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VList/VListItem.js +3 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VMessages/VMessages.js +1 -1
- package/lib/components/VMessages/VMessages.js.map +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.js +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.js.map +1 -1
- package/lib/components/VPagination/VPagination.js +1 -1
- package/lib/components/VPagination/VPagination.js.map +1 -1
- package/lib/components/VPicker/VPicker.js +1 -1
- package/lib/components/VPicker/VPicker.js.map +1 -1
- package/lib/components/VRadioGroup/VRadio.js +2 -2
- package/lib/components/VRadioGroup/VRadio.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +2 -2
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelectList.js +2 -2
- package/lib/components/VSelect/VSelectList.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.js +3 -3
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VSlider/VSlider.js +26 -21
- package/lib/components/VSlider/VSlider.js.map +1 -1
- package/lib/components/VStepper/VStepperContent.js +1 -1
- package/lib/components/VStepper/VStepperContent.js.map +1 -1
- package/lib/components/VSwitch/VSwitch.js +1 -1
- package/lib/components/VSwitch/VSwitch.js.map +1 -1
- package/lib/components/VTabs/VTabs.js +2 -2
- package/lib/components/VTabs/VTabs.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +1 -1
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTooltip/VTooltip.js +7 -10
- package/lib/components/VTooltip/VTooltip.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewNode.js +3 -3
- package/lib/components/VTreeview/VTreeviewNode.js.map +1 -1
- package/lib/components/transitions/createTransition.js +2 -2
- package/lib/components/transitions/createTransition.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/picker/index.js +5 -3
- package/lib/mixins/picker/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/VAppBar/VAppBarNavIcon.ts +1 -1
- package/src/components/VBanner/VBanner.ts +3 -3
- package/src/components/VBreadcrumbs/VBreadcrumbs.ts +2 -2
- package/src/components/VBtn/VBtn.ts +24 -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/VCarousel/VCarousel.ts +3 -3
- package/src/components/VCarousel/VCarouselItem.ts +1 -1
- package/src/components/VCheckbox/VCheckbox.ts +1 -1
- 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/VDataIterator/VDataFooter.ts +1 -1
- package/src/components/VDataTable/VDataTable.ts +8 -8
- package/src/components/VDataTable/VDataTableHeader.ts +2 -4
- package/src/components/VDataTable/VEditDialog.ts +2 -2
- package/src/components/VDataTable/mixins/header.ts +1 -1
- package/src/components/VDatePicker/VDatePickerHeader.ts +3 -3
- package/src/components/VDatePicker/VDatePickerTitle.ts +2 -2
- package/src/components/VDatePicker/mixins/date-picker-table.ts +1 -1
- package/src/components/VDialog/VDialog.ts +2 -2
- package/src/components/VExpansionPanel/VExpansionPanelContent.ts +1 -1
- package/src/components/VExpansionPanel/VExpansionPanelHeader.ts +2 -2
- package/src/components/VImg/VImg.ts +2 -2
- package/src/components/VInput/VInput.ts +10 -4
- 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/VList/VListGroup.ts +5 -5
- package/src/components/VList/VListItem.ts +7 -4
- package/src/components/VMessages/VMessages.ts +1 -1
- package/src/components/VOverflowBtn/VOverflowBtn.ts +1 -1
- package/src/components/VPagination/VPagination.ts +1 -1
- package/src/components/VPicker/VPicker.ts +1 -1
- package/src/components/VRadioGroup/VRadio.ts +2 -2
- package/src/components/VSelect/VSelect.ts +2 -2
- package/src/components/VSelect/VSelectList.ts +3 -3
- 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/VSlideGroup/VSlideGroup.ts +3 -3
- package/src/components/VSlider/VSlider.ts +44 -28
- 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/VStepper/VStepperContent.ts +1 -1
- package/src/components/VSwitch/VSwitch.ts +1 -1
- package/src/components/VTabs/VTabs.ts +2 -2
- package/src/components/VTabs/__tests__/VTab.spec.ts +3 -3
- package/src/components/VTabs/__tests__/VTabsBar.spec.ts +2 -2
- package/src/components/VTextField/VTextField.ts +1 -1
- package/src/components/VTooltip/VTooltip.ts +21 -21
- package/src/components/VTooltip/__tests__/VTooltip.spec.ts +60 -75
- package/src/components/VTreeview/VTreeviewNode.ts +3 -3
- package/src/components/transitions/createTransition.ts +2 -2
- package/src/mixins/picker/index.ts +4 -4
|
@@ -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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { h } from 'vue'; // Styles
|
|
1
|
+
import { h, defineComponent } from 'vue'; // Styles
|
|
2
2
|
|
|
3
3
|
import "../../../src/components/VColorPicker/VColorPickerEdit.sass"; // Components
|
|
4
4
|
|
|
5
5
|
import VBtn from '../VBtn';
|
|
6
6
|
import VIcon from '../VIcon'; // Helpers
|
|
7
7
|
|
|
8
|
-
import { parseHex } from '../../util/colorUtils';
|
|
9
|
-
|
|
10
|
-
import { defineComponent } from 'vue';
|
|
8
|
+
import { parseHex } from '../../util/colorUtils';
|
|
11
9
|
import { fromRGBA, fromHexa, fromHSLA } from './util';
|
|
12
10
|
export const modes = {
|
|
13
11
|
rgba: {
|
|
@@ -25,7 +23,10 @@ export const modes = {
|
|
|
25
23
|
export default defineComponent({
|
|
26
24
|
name: 'v-color-picker-edit',
|
|
27
25
|
props: {
|
|
28
|
-
color:
|
|
26
|
+
color: {
|
|
27
|
+
type: Object,
|
|
28
|
+
required: true
|
|
29
|
+
},
|
|
29
30
|
disabled: Boolean,
|
|
30
31
|
hideAlpha: Boolean,
|
|
31
32
|
hideModeSwitch: Boolean,
|
|
@@ -35,17 +36,17 @@ export default defineComponent({
|
|
|
35
36
|
validator: v => Object.keys(modes).includes(v)
|
|
36
37
|
}
|
|
37
38
|
},
|
|
39
|
+
emits: ['update:color', 'update:mode'],
|
|
38
40
|
|
|
39
41
|
data() {
|
|
40
42
|
return {
|
|
41
|
-
modes,
|
|
42
43
|
internalMode: this.mode
|
|
43
44
|
};
|
|
44
45
|
},
|
|
45
46
|
|
|
46
47
|
computed: {
|
|
47
48
|
currentMode() {
|
|
48
|
-
return
|
|
49
|
+
return modes[this.internalMode];
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
},
|
|
@@ -55,11 +56,6 @@ export default defineComponent({
|
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
},
|
|
58
|
-
|
|
59
|
-
created() {
|
|
60
|
-
this.internalMode = this.mode;
|
|
61
|
-
},
|
|
62
|
-
|
|
63
59
|
methods: {
|
|
64
60
|
getValue(v, type) {
|
|
65
61
|
if (type === 'float') return Math.round(v * 100) / 100;else if (type === 'int') return Math.round(v);else return 0;
|
|
@@ -70,21 +66,21 @@ export default defineComponent({
|
|
|
70
66
|
},
|
|
71
67
|
|
|
72
68
|
changeMode() {
|
|
73
|
-
const
|
|
74
|
-
const index =
|
|
75
|
-
const newMode =
|
|
69
|
+
const modeKeys = Object.keys(modes);
|
|
70
|
+
const index = modeKeys.indexOf(this.internalMode);
|
|
71
|
+
const newMode = modeKeys[(index + 1) % modeKeys.length];
|
|
76
72
|
this.internalMode = newMode;
|
|
77
73
|
this.$emit('update:mode', newMode);
|
|
78
74
|
},
|
|
79
75
|
|
|
80
|
-
genInput(target, attrs, value,
|
|
76
|
+
genInput(target, attrs, value, onChange) {
|
|
81
77
|
return h('div', {
|
|
82
78
|
class: 'v-color-picker__input'
|
|
83
79
|
}, [h('input', {
|
|
84
80
|
key: target,
|
|
85
81
|
...attrs,
|
|
86
82
|
value,
|
|
87
|
-
|
|
83
|
+
onChange
|
|
88
84
|
}), h('span', target.toUpperCase())]);
|
|
89
85
|
},
|
|
90
86
|
|
|
@@ -95,11 +91,9 @@ export default defineComponent({
|
|
|
95
91
|
return this.genInput('hex', {
|
|
96
92
|
maxlength: this.hideAlpha ? 7 : 9,
|
|
97
93
|
disabled: this.disabled
|
|
98
|
-
}, value, {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.$emit('update:color', this.currentMode.from(parseHex(el.value)));
|
|
102
|
-
}
|
|
94
|
+
}, value, e => {
|
|
95
|
+
const el = e.target;
|
|
96
|
+
this.$emit('update:color', this.currentMode.from(parseHex(el.value)));
|
|
103
97
|
});
|
|
104
98
|
} else {
|
|
105
99
|
const inputs = this.hideAlpha ? this.currentMode.inputs.slice(0, -1) : this.currentMode.inputs;
|
|
@@ -111,14 +105,12 @@ export default defineComponent({
|
|
|
111
105
|
max,
|
|
112
106
|
step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,
|
|
113
107
|
disabled: this.disabled
|
|
114
|
-
}, this.getValue(value[target], type), {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}), this.color.alpha));
|
|
121
|
-
}
|
|
108
|
+
}, this.getValue(value[target], type), e => {
|
|
109
|
+
const el = e.target;
|
|
110
|
+
const newVal = this.parseValue(el.value || '0', type);
|
|
111
|
+
this.$emit('update:color', this.currentMode.from(Object.assign({}, value, {
|
|
112
|
+
[target]: newVal
|
|
113
|
+
}), this.color.alpha));
|
|
122
114
|
});
|
|
123
115
|
});
|
|
124
116
|
}
|
|
@@ -130,7 +122,9 @@ export default defineComponent({
|
|
|
130
122
|
icon: true,
|
|
131
123
|
disabled: this.disabled,
|
|
132
124
|
onClick: this.changeMode
|
|
133
|
-
},
|
|
125
|
+
}, {
|
|
126
|
+
default: () => [h(VIcon, {}, '$unfold')]
|
|
127
|
+
});
|
|
134
128
|
}
|
|
135
129
|
|
|
136
130
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerEdit.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerEdit.ts"],"names":[],"mappings":"AAAA,SAAS,CAAT,EAAY,eAAZ,QAAmC,KAAnC,C,CAEA;;AACA,OAAO,4DAAP,C,CAEA;;AACA,OAAO,IAAP,MAAiB,SAAjB;AACA,OAAO,KAAP,MAAkB,UAAlB,C,CAEA;;AACA,SAAS,QAAT,QAAyB,uBAAzB;AAIA,SAA4B,QAA5B,EAAsC,QAAtC,EAAgD,QAAhD,QAAgE,QAAhE;AASA,OAAO,MAAM,KAAK,GAAG;AACnB,EAAA,IAAI,EAAE;AACJ,IAAA,MAAM,EAAE,CACN,CAAC,GAAD,EAAM,GAAN,EAAW,KAAX,CADM,EAEN,CAAC,GAAD,EAAM,GAAN,EAAW,KAAX,CAFM,EAGN,CAAC,GAAD,EAAM,GAAN,EAAW,KAAX,CAHM,EAIN,CAAC,GAAD,EAAM,CAAN,EAAS,OAAT,CAJM,CADJ;AAOJ,IAAA,IAAI,EAAE;AAPF,GADa;AAUnB,EAAA,IAAI,EAAE;AACJ,IAAA,MAAM,EAAE,CACN,CAAC,GAAD,EAAM,GAAN,EAAW,KAAX,CADM,EAEN,CAAC,GAAD,EAAM,CAAN,EAAS,OAAT,CAFM,EAGN,CAAC,GAAD,EAAM,CAAN,EAAS,OAAT,CAHM,EAIN,CAAC,GAAD,EAAM,CAAN,EAAS,OAAT,CAJM,CADJ;AAOJ,IAAA,IAAI,EAAE;AAPF,GAVa;AAmBnB,EAAA,IAAI,EAAE;AACJ,IAAA,IAAI,EAAE;AADF;AAnBa,CAAd;AAwBP,eAAe,eAAe,CAAC;AAC7B,EAAA,IAAI,EAAE,qBADuB;AAG7B,EAAA,KAAK,EAAE;AACL,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,MADD;AAEL,MAAA,QAAQ,EAAE;AAFL,KADF;AAKL,IAAA,QAAQ,EAAE,OALL;AAML,IAAA,SAAS,EAAE,OANN;AAOL,IAAA,cAAc,EAAE,OAPX;AAQL,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;AARD,GAHsB;AAkB7B,EAAA,KAAK,EAAE,CAAC,cAAD,EAAiB,aAAjB,CAlBsB;;AAoB7B,EAAA,IAAI,GAAA;AACF,WAAO;AACL,MAAA,YAAY,EAAE,KAAK;AADd,KAAP;AAGD,GAxB4B;;AA0B7B,EAAA,QAAQ,EAAE;AACR,IAAA,WAAW,GAAA;AACT,aAAO,KAAK,CAAC,KAAK,YAAN,CAAZ;AACD;;AAHO,GA1BmB;AAgC7B,EAAA,KAAK,EAAE;AACL,IAAA,IAAI,CAAE,IAAF,EAAc;AAChB,WAAK,YAAL,GAAoB,IAApB;AACD;;AAHI,GAhCsB;AAsC7B,EAAA,OAAO,EAAE;AACP,IAAA,QAAQ,CAAE,CAAF,EAAU,IAAV,EAAsB;AAC5B,UAAI,IAAI,KAAK,OAAb,EAAsB,OAAO,IAAI,CAAC,KAAL,CAAW,CAAC,GAAG,GAAf,IAAsB,GAA7B,CAAtB,KACK,IAAI,IAAI,KAAK,KAAb,EAAoB,OAAO,IAAI,CAAC,KAAL,CAAW,CAAX,CAAP,CAApB,KACA,OAAO,CAAP;AACN,KALM;;AAOP,IAAA,UAAU,CAAE,CAAF,EAAa,IAAb,EAAyB;AACjC,UAAI,IAAI,KAAK,OAAb,EAAsB,OAAO,UAAU,CAAC,CAAD,CAAjB,CAAtB,KACK,IAAI,IAAI,KAAK,KAAb,EAAoB,OAAO,QAAQ,CAAC,CAAD,EAAI,EAAJ,CAAR,IAAmB,CAA1B,CAApB,KACA,OAAO,CAAP;AACN,KAXM;;AAaP,IAAA,UAAU,GAAA;AACR,YAAM,QAAQ,GAAG,MAAM,CAAC,IAAP,CAAY,KAAZ,CAAjB;AACA,YAAM,KAAK,GAAG,QAAQ,CAAC,OAAT,CAAiB,KAAK,YAAtB,CAAd;AACA,YAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAT,IAAc,QAAQ,CAAC,MAAxB,CAAxB;AACA,WAAK,YAAL,GAAoB,OAApB;AACA,WAAK,KAAL,CAAW,aAAX,EAA0B,OAA1B;AACD,KAnBM;;AAqBP,IAAA,QAAQ,CAAE,MAAF,EAAkB,KAAlB,EAA8B,KAA9B,EAA0C,QAA1C,EAAuD;AAC7D,aAAO,CAAC,CAAC,KAAD,EAAQ;AACd,QAAA,KAAK,EAAE;AADO,OAAR,EAEL,CACD,CAAC,CAAC,OAAD,EAAU;AACT,QAAA,GAAG,EAAE,MADI;AAET,WAAG,KAFM;AAGT,QAAA,KAHS;AAIT,QAAA;AAJS,OAAV,CADA,EAOD,CAAC,CAAC,MAAD,EAAS,MAAM,CAAC,WAAP,EAAT,CAPA,CAFK,CAAR;AAWD,KAjCM;;AAmCP,IAAA,SAAS,GAAA;AACP,UAAI,KAAK,YAAL,KAAsB,MAA1B,EAAkC;AAChC,cAAM,GAAG,GAAG,KAAK,KAAL,CAAY,IAAxB;AACA,cAAM,KAAK,GAAG,KAAK,SAAL,IAAkB,GAAG,CAAC,QAAJ,CAAa,IAAb,CAAlB,GAAuC,GAAG,CAAC,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAvC,GAA0D,GAAxE;AACA,eAAO,KAAK,QAAL,CACL,KADK,EAEL;AACE,UAAA,SAAS,EAAE,KAAK,SAAL,GAAiB,CAAjB,GAAqB,CADlC;AAEE,UAAA,QAAQ,EAAE,KAAK;AAFjB,SAFK,EAML,KANK,EAOJ,CAAD,IAAa;AACX,gBAAM,EAAE,GAAG,CAAC,CAAC,MAAb;AACA,eAAK,KAAL,CAAW,cAAX,EAA2B,KAAK,WAAL,CAAiB,IAAjB,CAAsB,QAAQ,CAAC,EAAE,CAAC,KAAJ,CAA9B,CAA3B;AACD,SAVI,CAAP;AAYD,OAfD,MAeO;AACL,cAAM,MAAM,GAAG,KAAK,SAAL,GAAiB,KAAK,WAAL,CAAiB,MAAjB,CAAyB,KAAzB,CAA+B,CAA/B,EAAkC,CAAC,CAAnC,CAAjB,GAAyD,KAAK,WAAL,CAAiB,MAAzF;AACA,eAAO,MAAM,CAAC,GAAP,CAAW,CAAC,CAAC,MAAD,EAAS,GAAT,EAAc,IAAd,CAAD,KAAwB;AACxC,gBAAM,KAAK,GAAG,KAAK,KAAL,CAAY,KAAK,YAAjB,CAAd;AACA,iBAAO,KAAK,QAAL,CACL,MADK,EAEL;AACE,YAAA,IAAI,EAAE,QADR;AAEE,YAAA,GAAG,EAAE,CAFP;AAGE,YAAA,GAHF;AAIE,YAAA,IAAI,EAAE,IAAI,KAAK,OAAT,GAAmB,MAAnB,GAA4B,IAAI,KAAK,KAAT,GAAiB,GAAjB,GAAuB,SAJ3D;AAKE,YAAA,QAAQ,EAAE,KAAK;AALjB,WAFK,EASL,KAAK,QAAL,CAAc,KAAK,CAAC,MAAD,CAAnB,EAA6B,IAA7B,CATK,EAUJ,CAAD,IAAa;AACX,kBAAM,EAAE,GAAG,CAAC,CAAC,MAAb;AACA,kBAAM,MAAM,GAAG,KAAK,UAAL,CAAgB,EAAE,CAAC,KAAH,IAAY,GAA5B,EAAiC,IAAjC,CAAf;AAEA,iBAAK,KAAL,CAAW,cAAX,EAA2B,KAAK,WAAL,CAAiB,IAAjB,CACzB,MAAM,CAAC,MAAP,CAAc,EAAd,EAAkB,KAAlB,EAAyB;AAAE,eAAC,MAAD,GAAU;AAAZ,aAAzB,CADyB,EAEzB,KAAK,KAAL,CAAY,KAFa,CAA3B;AAID,WAlBI,CAAP;AAoBD,SAtBM,CAAP;AAuBD;AACF,KA7EM;;AA+EP,IAAA,SAAS,GAAA;AACP,aAAO,CAAC,CAAC,IAAD,EAAO;AACb,QAAA,KAAK,EAAE,IADM;AAEb,QAAA,IAAI,EAAE,IAFO;AAGb,QAAA,QAAQ,EAAE,KAAK,QAHF;AAIb,QAAA,OAAO,EAAE,KAAK;AAJD,OAAP,EAKL;AACD,QAAA,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAD,EAAQ,EAAR,EAAY,SAAZ,CAAF;AADd,OALK,CAAR;AAQD;;AAxFM,GAtCoB;;AAiI7B,EAAA,MAAM,GAAA;AACJ,WAAO,CAAC,CAAC,KAAD,EAAQ;AACd,MAAA,KAAK,EAAE;AADO,KAAR,EAEL,CACD,KAAK,SAAL,EADC,EAED,CAAC,KAAK,cAAN,IAAwB,KAAK,SAAL,EAFvB,CAFK,CAAR;AAMD;;AAxI4B,CAAD,CAA9B","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Helpers\nimport { parseHex } from '../../util/colorUtils'\n\n// Types\nimport type { VNode, PropType } from 'vue'\nimport { VColorPickerColor, fromRGBA, fromHexa, fromHSLA } from './util'\n\ntype Input = [string, number, string]\n\nexport type Mode = {\n inputs?: Input[]\n from: Function\n}\n\nexport const modes = {\n rgba: {\n inputs: [\n ['r', 255, 'int'],\n ['g', 255, 'int'],\n ['b', 255, 'int'],\n ['a', 1, 'float'],\n ],\n from: fromRGBA,\n },\n hsla: {\n inputs: [\n ['h', 360, 'int'],\n ['s', 1, 'float'],\n ['l', 1, 'float'],\n ['a', 1, 'float'],\n ],\n from: fromHSLA,\n },\n hexa: {\n from: fromHexa,\n },\n} as { [key: string]: Mode }\n\nexport default defineComponent({\n name: 'v-color-picker-edit',\n\n props: {\n color: {\n type: Object as PropType<VColorPickerColor>,\n required: true,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n },\n\n emits: ['update:color', 'update:mode'],\n\n data () {\n return {\n internalMode: this.mode,\n }\n },\n\n computed: {\n currentMode (): Mode {\n return modes[this.internalMode]\n },\n },\n\n watch: {\n mode (mode: string) {\n this.internalMode = mode\n },\n },\n\n methods: {\n getValue (v: any, type: string) {\n if (type === 'float') return Math.round(v * 100) / 100\n else if (type === 'int') return Math.round(v)\n else return 0\n },\n\n parseValue (v: string, type: string) {\n if (type === 'float') return parseFloat(v)\n else if (type === 'int') return parseInt(v, 10) || 0\n else return 0\n },\n\n changeMode () {\n const modeKeys = Object.keys(modes)\n const index = modeKeys.indexOf(this.internalMode)\n const newMode = modeKeys[(index + 1) % modeKeys.length]\n this.internalMode = newMode\n this.$emit('update:mode', newMode)\n },\n\n genInput (target: string, attrs: any, value: any, onChange: any): VNode {\n return h('div', {\n class: 'v-color-picker__input',\n }, [\n h('input', {\n key: target,\n ...attrs,\n value,\n onChange,\n }),\n h('span', target.toUpperCase()),\n ])\n },\n\n genInputs (): VNode[] | VNode {\n if (this.internalMode === 'hexa') {\n const hex = this.color!.hexa\n const value = this.hideAlpha && hex.endsWith('FF') ? hex.substr(0, 7) : hex\n return this.genInput(\n 'hex',\n {\n maxlength: this.hideAlpha ? 7 : 9,\n disabled: this.disabled,\n },\n value,\n (e: Event) => {\n const el = e.target as HTMLInputElement\n this.$emit('update:color', this.currentMode.from(parseHex(el.value)))\n }\n )\n } else {\n const inputs = this.hideAlpha ? this.currentMode.inputs!.slice(0, -1) : this.currentMode.inputs!\n return inputs.map(([target, max, type]) => {\n const value = this.color![this.internalMode as keyof VColorPickerColor] as any\n return this.genInput(\n target,\n {\n type: 'number',\n min: 0,\n max,\n step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,\n disabled: this.disabled,\n },\n this.getValue(value[target], type),\n (e: Event) => {\n const el = e.target as HTMLInputElement\n const newVal = this.parseValue(el.value || '0', type)\n\n this.$emit('update:color', this.currentMode.from(\n Object.assign({}, value, { [target]: newVal }),\n this.color!.alpha\n ))\n }\n )\n })\n }\n },\n\n genSwitch (): VNode {\n return h(VBtn, {\n small: true,\n icon: true,\n disabled: this.disabled,\n onClick: this.changeMode,\n }, {\n default: () => [h(VIcon, {}, '$unfold')]\n })\n },\n },\n\n render (): VNode {\n return h('div', {\n class: 'v-color-picker__edit',\n }, [\n this.genInputs(),\n !this.hideModeSwitch && this.genSwitch(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerEdit.js"}
|
|
@@ -1,77 +1,90 @@
|
|
|
1
|
-
import { h } from 'vue'; // Styles
|
|
1
|
+
import { h, defineComponent } from 'vue'; // Styles
|
|
2
2
|
|
|
3
3
|
import "../../../src/components/VColorPicker/VColorPickerPreview.sass"; // Components
|
|
4
4
|
|
|
5
5
|
import VSlider from '../VSlider/VSlider'; // Utilities
|
|
6
6
|
|
|
7
|
-
import { RGBtoCSS, RGBAtoCSS } from '../../util/colorUtils';
|
|
8
|
-
|
|
9
|
-
import { defineComponent } from 'vue';
|
|
7
|
+
import { RGBtoCSS, RGBAtoCSS } from '../../util/colorUtils';
|
|
10
8
|
import { fromHSVA } from './util';
|
|
11
9
|
export default defineComponent({
|
|
12
10
|
name: 'v-color-picker-preview',
|
|
13
11
|
props: {
|
|
14
|
-
color:
|
|
12
|
+
color: {
|
|
13
|
+
type: Object,
|
|
14
|
+
required: true
|
|
15
|
+
},
|
|
15
16
|
disabled: Boolean,
|
|
16
17
|
hideAlpha: Boolean
|
|
17
18
|
},
|
|
19
|
+
emits: ['update:color'],
|
|
18
20
|
methods: {
|
|
19
21
|
genAlpha() {
|
|
22
|
+
var _a;
|
|
23
|
+
|
|
24
|
+
if (!this.color) return h('div');
|
|
20
25
|
return this.genTrack({
|
|
21
26
|
class: 'v-color-picker__alpha',
|
|
22
27
|
thumbColor: 'grey lighten-2',
|
|
23
28
|
hideDetails: true,
|
|
24
|
-
|
|
29
|
+
modelValue: this.color.alpha,
|
|
25
30
|
step: 0,
|
|
26
31
|
min: 0,
|
|
27
32
|
max: 1,
|
|
28
33
|
style: {
|
|
29
|
-
backgroundImage: this.disabled ? undefined : `linear-gradient(to ${this.$vuetify.rtl ? 'left' : 'right'}, transparent, ${RGBtoCSS(this.color.rgba)})`
|
|
34
|
+
backgroundImage: this.disabled ? undefined : `linear-gradient(to ${((_a = this.$vuetify) === null || _a === void 0 ? void 0 : _a.rtl) ? 'left' : 'right'}, transparent, ${RGBtoCSS(this.color.rgba)})`
|
|
30
35
|
},
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
genSliders() {
|
|
38
|
-
return h('div', {
|
|
39
|
-
class: 'v-color-picker__sliders'
|
|
40
|
-
}, [this.genHue(), !this.hideAlpha && this.genAlpha()]);
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
genDot() {
|
|
44
|
-
return h('div', {
|
|
45
|
-
class: 'v-color-picker__dot'
|
|
46
|
-
}, [h('div', {
|
|
47
|
-
style: {
|
|
48
|
-
background: RGBAtoCSS(this.color.rgba)
|
|
36
|
+
'onUpdate:modelValue': val => {
|
|
37
|
+
if (this.color && this.color.alpha !== val) {
|
|
38
|
+
this.$emit('update:color', fromHSVA({ ...this.color.hsva,
|
|
39
|
+
a: val
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
49
42
|
}
|
|
50
|
-
})
|
|
43
|
+
});
|
|
51
44
|
},
|
|
52
45
|
|
|
53
46
|
genHue() {
|
|
47
|
+
if (!this.color) return h('div');
|
|
54
48
|
return this.genTrack({
|
|
55
49
|
class: 'v-color-picker__hue',
|
|
56
50
|
thumbColor: 'grey lighten-2',
|
|
57
51
|
hideDetails: true,
|
|
58
|
-
|
|
52
|
+
modelValue: this.color.hue,
|
|
59
53
|
step: 0,
|
|
60
54
|
min: 0,
|
|
61
55
|
max: 360,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
'onUpdate:modelValue': val => {
|
|
57
|
+
if (this.color && this.color.hue !== val) {
|
|
58
|
+
this.$emit('update:color', fromHSVA({ ...this.color.hsva,
|
|
59
|
+
h: val
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
65
63
|
});
|
|
66
64
|
},
|
|
67
65
|
|
|
68
66
|
genTrack(options) {
|
|
69
67
|
return h(VSlider, {
|
|
70
68
|
class: 'v-color-picker__track',
|
|
71
|
-
...options,
|
|
72
69
|
disabled: this.disabled,
|
|
73
|
-
...options
|
|
70
|
+
...options
|
|
74
71
|
});
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
genSliders() {
|
|
75
|
+
return h('div', {
|
|
76
|
+
class: 'v-color-picker__sliders'
|
|
77
|
+
}, [this.genHue(), !this.hideAlpha && this.genAlpha()]);
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
genDot() {
|
|
81
|
+
return h('div', {
|
|
82
|
+
class: 'v-color-picker__dot'
|
|
83
|
+
}, [h('div', {
|
|
84
|
+
style: {
|
|
85
|
+
background: this.color ? RGBAtoCSS(this.color.rgba) : 'transparent'
|
|
86
|
+
}
|
|
87
|
+
})]);
|
|
75
88
|
}
|
|
76
89
|
|
|
77
90
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerPreview.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerPreview.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport VSlider from '../VSlider/VSlider'\n\n// Utilities\nimport { RGBtoCSS, RGBAtoCSS } from '../../util/colorUtils'\n\n// Types\nimport type { VNode, PropType } from 'vue'\nimport type { VColorPickerColor } from './util'\nimport { fromHSVA } from './util'\n\nexport default defineComponent({\n name: 'v-color-picker-preview',\n\n props: {\n color: {\n type: Object as PropType<VColorPickerColor>,\n required: true,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n },\n\n emits: ['update:color'],\n\n methods: {\n genAlpha (): VNode {\n if (!this.color) return h('div')\n return this.genTrack({\n class: 'v-color-picker__alpha',\n thumbColor: 'grey lighten-2',\n hideDetails: true,\n modelValue: this.color.alpha,\n step: 0,\n min: 0,\n max: 1,\n style: {\n backgroundImage: this.disabled\n ? undefined\n : `linear-gradient(to ${this.$vuetify?.rtl ? 'left' : 'right'}, transparent, ${RGBtoCSS(this.color.rgba)})`,\n },\n 'onUpdate:modelValue': (val: number) => {\n if (this.color && this.color.alpha !== val) {\n this.$emit('update:color', fromHSVA({ ...this.color.hsva, a: val }))\n }\n },\n })\n },\n\n genHue (): VNode {\n if (!this.color) return h('div')\n return this.genTrack({\n class: 'v-color-picker__hue',\n thumbColor: 'grey lighten-2',\n hideDetails: true,\n modelValue: this.color.hue,\n step: 0,\n min: 0,\n max: 360,\n 'onUpdate:modelValue': (val: number) => {\n if (this.color && this.color.hue !== val) {\n this.$emit('update:color', fromHSVA({ ...this.color.hsva, h: val }))\n }\n },\n })\n },\n\n genTrack (options: Record<string, any>): VNode {\n return h(VSlider, {\n class: 'v-color-picker__track',\n disabled: this.disabled,\n ...options,\n })\n },\n\n genSliders (): VNode {\n return h('div', {\n class: 'v-color-picker__sliders',\n }, [\n this.genHue(),\n !this.hideAlpha && this.genAlpha(),\n ])\n },\n\n genDot (): VNode {\n return h('div', {\n class: 'v-color-picker__dot',\n }, [\n h('div', {\n style: {\n background: this.color ? RGBAtoCSS(this.color.rgba) : 'transparent',\n },\n }),\n ])\n },\n },\n\n render (): VNode {\n return h('div', {\n class: ['v-color-picker__preview', {\n 'v-color-picker__preview--hide-alpha': this.hideAlpha,\n }],\n }, [\n this.genDot(),\n this.genSliders(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerPreview.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/VColorPickerSwatches.sass"; // Components
|
|
4
4
|
|
|
@@ -7,9 +7,9 @@ import VIcon from '../VIcon'; // Helpers
|
|
|
7
7
|
import colors from '../../util/colors';
|
|
8
8
|
import { fromHex, parseColor } from './util';
|
|
9
9
|
import { convertToUnit, deepEqual } from '../../util/helpers';
|
|
10
|
-
import
|
|
10
|
+
import { contrastRatio } from '../../util/colorUtils'; // Mixins
|
|
11
|
+
|
|
11
12
|
import Themeable from '../../mixins/themeable';
|
|
12
|
-
import { contrastRatio } from '../../util/colorUtils';
|
|
13
13
|
|
|
14
14
|
function parseDefaultColors(colors) {
|
|
15
15
|
return Object.keys(colors).map(key => {
|
|
@@ -20,18 +20,23 @@ function parseDefaultColors(colors) {
|
|
|
20
20
|
|
|
21
21
|
const white = fromHex('#FFFFFF').rgba;
|
|
22
22
|
const black = fromHex('#000000').rgba;
|
|
23
|
-
export default
|
|
23
|
+
export default defineComponent({
|
|
24
24
|
name: 'v-color-picker-swatches',
|
|
25
|
+
mixins: [Themeable],
|
|
25
26
|
props: {
|
|
26
27
|
swatches: {
|
|
27
28
|
type: Array,
|
|
28
29
|
default: () => parseDefaultColors(colors)
|
|
29
30
|
},
|
|
30
31
|
disabled: Boolean,
|
|
31
|
-
color:
|
|
32
|
+
color: {
|
|
33
|
+
type: Object,
|
|
34
|
+
required: true
|
|
35
|
+
},
|
|
32
36
|
maxWidth: [Number, String],
|
|
33
37
|
maxHeight: [Number, String]
|
|
34
38
|
},
|
|
39
|
+
emits: ['update:color'],
|
|
35
40
|
methods: {
|
|
36
41
|
genColor(color) {
|
|
37
42
|
const content = h('div', {
|
|
@@ -45,9 +50,10 @@ export default mixins(Themeable).extend({
|
|
|
45
50
|
}, '$success')]);
|
|
46
51
|
return h('div', {
|
|
47
52
|
class: 'v-color-picker__color',
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
onClick: () => {
|
|
54
|
+
if (!this.disabled) {
|
|
55
|
+
this.$emit('update:color', fromHex(color === 'transparent' ? '#00000000' : color));
|
|
56
|
+
}
|
|
51
57
|
}
|
|
52
58
|
}, [content]);
|
|
53
59
|
},
|
|
@@ -65,7 +71,7 @@ export default mixins(Themeable).extend({
|
|
|
65
71
|
|
|
66
72
|
render() {
|
|
67
73
|
return h('div', {
|
|
68
|
-
class: 'v-color-picker__swatches',
|
|
74
|
+
class: ['v-color-picker__swatches', this.themeClasses],
|
|
69
75
|
style: {
|
|
70
76
|
maxWidth: convertToUnit(this.maxWidth),
|
|
71
77
|
maxHeight: convertToUnit(this.maxHeight)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerSwatches.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerSwatches.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPickerSwatches.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Helpers\nimport colors from '../../util/colors'\nimport { VColorPickerColor, fromHex, parseColor } from './util'\nimport { convertToUnit, deepEqual } from '../../util/helpers'\nimport { contrastRatio } from '../../util/colorUtils'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport type { VNode, PropType } from 'vue'\n\nfunction parseDefaultColors (colors: Record<string, Record<string, string>>) {\n return Object.keys(colors).map(key => {\n const color = colors[key]\n return color.base ? [\n color.base,\n color.darken4,\n color.darken3,\n color.darken2,\n color.darken1,\n color.lighten1,\n color.lighten2,\n color.lighten3,\n color.lighten4,\n color.lighten5,\n ] : [\n color.black,\n color.white,\n color.transparent,\n ]\n })\n}\n\nconst white = fromHex('#FFFFFF').rgba\nconst black = fromHex('#000000').rgba\n\nexport default defineComponent({\n name: 'v-color-picker-swatches',\n\n mixins: [Themeable],\n\n props: {\n swatches: {\n type: Array as PropType<string[][]>,\n default: () => parseDefaultColors(colors),\n },\n disabled: Boolean,\n color: {\n type: Object as PropType<VColorPickerColor>,\n required: true,\n },\n maxWidth: [Number, String],\n maxHeight: [Number, String],\n },\n\n emits: ['update:color'],\n\n methods: {\n genColor (color: string): VNode {\n const content = h('div', {\n style: {\n background: color,\n },\n }, [\n deepEqual(this.color, parseColor(color, null)) && h(VIcon, {\n small: true,\n dark: contrastRatio(this.color.rgba, white) > 2 && this.color.alpha > 0.5,\n light: contrastRatio(this.color.rgba, black) > 2 && this.color.alpha > 0.5\n }, '$success'),\n ])\n\n return h('div', {\n class: 'v-color-picker__color',\n onClick: () => {\n if (!this.disabled) {\n this.$emit('update:color', fromHex(color === 'transparent' ? '#00000000' : color))\n }\n },\n }, [content])\n },\n\n genSwatches (): VNode[] {\n return this.swatches.map(swatch => {\n const colors = swatch.map(this.genColor)\n\n return h('div', {\n class: 'v-color-picker__swatch',\n }, colors)\n })\n },\n },\n\n render (): VNode {\n return h('div', {\n class: ['v-color-picker__swatches', this.themeClasses],\n style: {\n maxWidth: convertToUnit(this.maxWidth),\n maxHeight: convertToUnit(this.maxHeight),\n },\n }, [\n h('div', this.genSwatches()),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerSwatches.js"}
|