Skip to content

Commit 1a72912

Browse files
authored
Merge pull request #265 from linx4200/dev/3.x-alpha.3
3.0.0-alpha.3
2 parents 1e9f44b + ecb0cf8 commit 1a72912

26 files changed

+646
-489
lines changed

demo/App.vue

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
<script setup lang="ts">
2-
import { effectScope, watch, reactive, computed } from 'vue';
2+
import { watch, computed, reactive } from 'vue';
33
import tinycolor from 'tinycolor2';
44
5-
import Chrome from '../src/components/ChromePicker.vue';
6-
import Compact from '../src/components/CompactPicker.vue';
7-
import Grayscale from '../src/components/GrayscalePicker.vue';
8-
import Material from '../src/components/MaterialPicker.vue';
9-
import Photoshop from '../src/components/PhotoshopPicker.vue';
10-
import Sketch from '../src/components/SketchPicker.vue';
11-
import Slider from '../src/components/SliderPicker.vue';
12-
import Swatches from '../src/components/SwatchesPicker.vue';
13-
import Twitter from '../src/components/TwitterPicker.vue';
5+
import {
6+
ChromePicker,
7+
SketchPicker,
8+
PhotoshopPicker,
9+
CompactPicker,
10+
GrayscalePicker,
11+
MaterialPicker,
12+
SliderPicker,
13+
TwitterPicker,
14+
SwatchesPicker,
15+
HueSlider
16+
} from '../src';
1417
1518
const tinyColor = defineModel('tinycolor', {
16-
default: '#F5F7FA'
19+
default: tinycolor('#F5F7FA')
1720
});
1821
1922
const color = defineModel({
2023
default: () => reactive({r: 0, g: 0, b: 255, a: 1})
2124
});
2225
23-
const scope = effectScope();
24-
25-
scope.run(() => {
26-
watch(color, () => console.log('color changed ==>', color.value));
27-
});
26+
watch(tinyColor, () => console.log('color changed ==>', tinyColor.value));
2827
2928
function invertColor(rgb: { r: number; g: number; b: number }): string {
3029
const inverted = {
@@ -44,10 +43,10 @@ const background = computed(() => {
4443
});
4544
4645
const hsva = computed(() => {
47-
const hsv = tinycolor(tinyColor.value).toHsv();
46+
const hsva = tinycolor(tinyColor.value).toHsv();
4847
const res: Record<string, number> = {};
49-
for (const [key, value] of Object.entries(hsv)) {
50-
res[key] = value.toFixed();
48+
for (const [key, value] of Object.entries(hsva)) {
49+
res[key] = value.toFixed(2);
5150
}
5251
return res;
5352
});
@@ -56,6 +55,10 @@ const textColor = computed(() => {
5655
return invertColor(tinycolor(tinyColor.value).toRgb());
5756
});
5857
58+
const updateHue = (newHue: number) => {
59+
tinyColor.value = tinycolor(tinyColor.value).spin(newHue - hsva.value.h).clone();
60+
}
61+
5962
</script>
6063

6164
<template>
@@ -79,58 +82,63 @@ const textColor = computed(() => {
7982
<div :style="{flex: 0.8}">
8083
<div class="row">
8184
<div class="col">
82-
<div class="roboto current-color" :style="{color: textColor, opacity: 0.5}" :aria-hidden="true">
85+
<div class="roboto current-color" :style="{color: textColor, opacity: 0.5}">
8386
{{ hex }}<br />
8487
{{ color }}<br />
8588
{{ hsva }}
8689
</div>
8790
<div class="picker-container">
88-
<Chrome v-model:tinyColor="tinyColor" v-model="color" />
91+
<ChromePicker v-model:tinyColor="tinyColor" v-model="color" />
8992
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;ChromePicker /&gt;</div>
9093
</div>
9194
</div>
9295

9396
<div class="picker-container">
94-
<div><Sketch v-model:tinyColor="tinyColor" v-model="color" /></div>
97+
<div><SketchPicker v-model:tinyColor="tinyColor" v-model="color" /></div>
9598
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;SketchPicker /&gt;</div>
9699
</div>
97100

98101
<div class="picker-container">
99-
<div><Photoshop v-model:tinyColor="tinyColor" v-model="color" :hasResetButton="true" /></div>
102+
<div><PhotoshopPicker v-model:tinyColor="tinyColor" v-model="color" /></div>
100103
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;PhotoshopPicker /&gt;</div>
101104
</div>
102105
</div>
103106
<div class="row" :style="{marginTop: '5%'}">
104107
<div class="col">
105108
<div class="picker-container">
106-
<div><Compact v-model:tinyColor="tinyColor" v-model="color" /></div>
109+
<div><CompactPicker v-model:tinyColor="tinyColor" v-model="color" /></div>
107110
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;CompactPicker /&gt;</div>
108111
</div>
109112
<div class="picker-container">
110-
<div><Grayscale v-model:tinyColor="tinyColor" v-model="color" /></div>
113+
<div><GrayscalePicker v-model:tinyColor="tinyColor" v-model="color" /></div>
111114
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;GrayscalePicker /&gt;</div>
112115
</div>
113116
<div class="picker-container">
114-
<div><Material v-model:tinyColor="tinyColor" v-model="color" /></div>
117+
<div><MaterialPicker v-model:tinyColor="tinyColor" v-model="color" /></div>
115118
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;MaterialPicker /&gt;</div>
116119
</div>
117120
</div>
118121

119122
<div class="col">
120123
<div class="picker-container">
121-
<div><Slider v-model:tinyColor="tinyColor" v-model="color" /></div>
124+
<div :style="{width: '410px'}"><HueSlider :modelValue="hsva.h" @update:modelValue="updateHue" /></div>
125+
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;HueSlider /&gt;</div>
126+
</div>
127+
128+
<div class="picker-container">
129+
<div><SliderPicker v-model:tinyColor="tinyColor" v-model="color" /></div>
122130
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;SliderPicker /&gt;</div>
123131
</div>
124132

125133
<div class="picker-container">
126-
<div><Twitter v-model:tinyColor="tinyColor" v-model="color" /></div>
134+
<div><TwitterPicker v-model:tinyColor="tinyColor" v-model="color" /></div>
127135
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;TwitterPicker /&gt;</div>
128136
</div>
129137
</div>
130138

131139
<div class="col">
132140
<div class="picker-container">
133-
<div><Swatches v-model:tinyColor="tinyColor" v-model="color" /></div>
141+
<div><SwatchesPicker v-model:tinyColor="tinyColor" v-model="color" /></div>
134142
<div class="picker-title roboto" :style="{color: textColor, opacity: 0.5}">&lt;SwatchesPicker /&gt;</div>
135143
</div>
136144
</div>
@@ -231,6 +239,7 @@ const textColor = computed(() => {
231239
.current-color {
232240
padding: 10px;
233241
width: 240px;
242+
height: 100px;
234243
line-height: 1.5;
235244
}
236245
</style>

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue-color",
3-
"version": "3.0.0-alpha.2",
3+
"version": "3.0.0-alpha.3",
44
"type": "module",
55
"files": [
66
"dist"

0 commit comments

Comments
 (0)