import * as React from 'react'; import Button from '@material-ui/core/Button'; import Popover from '@material-ui/core/Popover'; import ColorizeIcon from '@material-ui/icons/Colorize'; import { ChromePicker, ColorChangeHandler, RGBColor } from 'react-color'; export interface ColorPickerProps { onChange: (color: RGBColor) => void; onChangeComplete: (color: RGBColor) => void; color: RGBColor; buttonContent: JSX.Element | string; icon: JSX.Element | string; onDialogOpen: () => void; style?: React.CSSProperties; } type ColorPickerState = { isColorPickerVisible: boolean; }; class ColorPicker extends React.Component { static defaultProps: Partial = { buttonContent: 'Change color', icon: , }; anchorEl: HTMLElement; state: ColorPickerState = { isColorPickerVisible: false, }; props: ColorPickerProps; handleClickShowColorPicker = (e: React.MouseEvent) => { if (this.props.onDialogOpen) { this.props.onDialogOpen(); } this.setState({ isColorPickerVisible: !this.state.isColorPickerVisible }); } onChange: ColorChangeHandler = e => this.props.onChange && this.props.onChange(e.rgb) handleChangeComplete: ColorChangeHandler = e => this.props.onChangeComplete && this.props.onChangeComplete(e.rgb) render() { return (
); } } export { RGBColor }; export const colorToString = (c: RGBColor) => c && 'rgba(' + c.r + ', ' + c.g + ', ' + c.b + ', ' + c.a + ')'; export default ColorPicker;