Skip to content

Commit b06b6e7

Browse files
authored
feat: support more info (#264)
1 parent fbd0ba9 commit b06b6e7

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

src/ColorPicker.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,11 @@ const ColorPicker = forwardRef<HTMLDivElement, ColorPickerProps>(
9898

9999
// Slider change
100100
const onHueChange = (hue: number) => {
101-
handleChange(getHueColor(hue), 'hue');
101+
handleChange(getHueColor(hue), { type: 'hue', value: hue });
102102
};
103103

104104
const onAlphaChange = (alpha: number) => {
105-
handleChange(getAlphaColor(alpha), 'alpha');
105+
handleChange(getAlphaColor(alpha), { type: 'alpha', value: alpha });
106106
};
107107

108108
// Complete

src/interface.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ export interface BaseColorPickerProps {
4040
color?: Color;
4141
prefixCls?: string;
4242
disabled?: boolean;
43-
onChange?: (color: Color, type?: HsbaColorType) => void;
44-
onChangeComplete?: (value: Color, type?: HsbaColorType) => void;
43+
onChange?: (
44+
color: Color,
45+
info?: { type?: HsbaColorType; value?: number },
46+
) => void;
47+
onChangeComplete?: (
48+
value: Color,
49+
info?: { type?: HsbaColorType; value?: number },
50+
) => void;
4551
}

tests/index.test.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,8 @@ describe('ColorPicker', () => {
436436
height: 100,
437437
}),
438438
});
439+
440+
let changeInfo: any;
439441
const onChange = vi.fn();
440442
const Demo = () => {
441443
const [value, setValue] = useState(new Color('#163cff'));
@@ -445,11 +447,13 @@ describe('ColorPicker', () => {
445447
<div className="pick-color">{value.toHsbString()}</div>
446448
<ColorPicker
447449
color={value}
448-
onChange={(color, type) => {
449-
onChange(color, type);
450+
onChange={(color, info) => {
451+
changeInfo = info;
452+
453+
onChange(color, info);
450454

451455
let passedColor = color;
452-
if (type !== 'alpha') {
456+
if (info.type !== 'alpha') {
453457
// bad case, color should be immutable
454458
passedColor = new Color(color.setA(1));
455459
}
@@ -464,6 +468,7 @@ describe('ColorPicker', () => {
464468
expect(container.querySelector('.pick-color').innerHTML).toBe(
465469
'hsb(230, 91%, 100%)',
466470
);
471+
467472
doMouseMove(
468473
container.querySelector('.rc-color-picker-slider-alpha'),
469474
100,
@@ -472,10 +477,14 @@ describe('ColorPicker', () => {
472477
expect(container.querySelector('.pick-color').innerHTML).toBe(
473478
'hsba(215, 91%, 100%, 0)',
474479
);
480+
expect(changeInfo).toEqual({ type: 'alpha', value: 0 });
481+
475482
doMouseMove(container.querySelector('.rc-color-picker-slider-hue'), 0, 50);
476483
expect(container.querySelector('.pick-color').innerHTML).toBe(
477484
'hsb(180, 91%, 100%)',
478485
);
486+
expect(changeInfo).toEqual({ type: 'hue', value: 180 });
487+
479488
doMouseMove(
480489
container.querySelector('.rc-color-picker-slider-hue'),
481490
50,
@@ -484,6 +493,8 @@ describe('ColorPicker', () => {
484493
expect(container.querySelector('.pick-color').innerHTML).toBe(
485494
'hsb(0, 91%, 100%)',
486495
);
496+
expect(changeInfo).toEqual({ type: 'hue', value: 0 });
497+
487498
spy.mockRestore();
488499
});
489500
});

0 commit comments

Comments
 (0)