diff --git a/packages/react-components/react-color-picker-preview/stories/src/ColorPicker/ColorPickerDefault.stories.tsx b/packages/react-components/react-color-picker-preview/stories/src/ColorPicker/ColorPickerDefault.stories.tsx
index 3d903f1a6eb8b7..394822d70e8309 100644
--- a/packages/react-components/react-color-picker-preview/stories/src/ColorPicker/ColorPickerDefault.stories.tsx
+++ b/packages/react-components/react-color-picker-preview/stories/src/ColorPicker/ColorPickerDefault.stories.tsx
@@ -50,7 +50,7 @@ const useStyles = makeStyles({
width: '80px',
},
spinButton: {
- width: '50px',
+ minWidth: '60px',
},
});
@@ -62,17 +62,20 @@ type RgbKey = 'r' | 'g' | 'b';
export const Default = () => {
const hexId = useId('hex-input');
+ const alphaId = useId('alpha-input');
const styles = useStyles();
const [color, setColor] = React.useState(DEFAULT_COLOR_HSV);
const [hex, setHex] = React.useState(tinycolor(color).toHexString());
const [rgb, setRgb] = React.useState(tinycolor(color).toRgb());
+ const [alpha, setAlpha] = React.useState(color.a);
const [namedColor, setNamedColor] = React.useState('');
const handleChange: ColorPickerProps['onColorChange'] = (_, data) => {
setColor({ ...data.color, a: data.color.a ?? 1 });
setHex(tinycolor(data.color).toHexString());
setRgb(tinycolor(data.color).toRgb());
+ setAlpha(data.color.a ?? 1);
const _namedColor = tinycolor(`hsl(${data.color.h},100%,50%)`).toName();
if (_namedColor) {
setNamedColor(_namedColor);
@@ -96,6 +99,26 @@ export const Default = () => {
}
};
+ const onAlphaChange: SpinButtonProps['onChange'] = React.useCallback(
+ (_ev, data) => {
+ const value = data.value ?? parseFloat(data.displayValue ?? '');
+
+ if (Number.isNaN(value) || value < 0 || value > 1) {
+ return;
+ }
+
+ const newColor = tinycolor({ ...color, a: value });
+
+ if (newColor.isValid) {
+ setColor(newColor.toHsv());
+ setHex(newColor.toHex());
+ setRgb(newColor.toRgb());
+ setAlpha(newColor.a);
+ }
+ },
+ [setAlpha, setRgb, setHex, setColor, color],
+ );
+
const colorAriaAttributes = {
'aria-label': 'ColorPicker',
'aria-roledescription': '2D slider',
@@ -110,7 +133,6 @@ export const Default = () => {