solid-color
Version:
<p> <img width="100%" src="https://assets.solidjs.com/banner?type=solid-color&background=tiles&project=%20" alt="solid-color"> </p>
92 lines (91 loc) • 3.31 kB
JSX
import { merge } from 'lodash-es';
import { mergeProps } from 'solid-js';
import { Hue, Saturation, useColorPicker, withColorPicker } from '../_common';
import GoogleFields from './GoogleFields';
import GooglePointer from './GooglePointer';
import GooglePointerCircle from './GooglePointerCircle';
export function Google(_props) {
const props = mergeProps({
width: 652,
header: 'Color picker',
styles: {},
className: '',
}, _props);
const { colors, changeColor } = useColorPicker();
const styles = () => {
const width = typeof props.width === 'number' ? `${props.width}px` : props.width;
return merge({
picker: {
width,
background: '#fff',
border: '1px solid #dfe1e5',
'box-sizing': 'initial',
display: 'flex',
'flex-wrap': 'wrap',
'border-radius': '8px 8px 0px 0px',
},
head: {
height: '57px',
width: '100%',
'padding-top': '16px',
'padding-bottom': '16px',
'padding-left': '16px',
'font-size': '20px',
'box-sizing': 'border-box',
'font-family': 'Roboto-Regular,HelveticaNeue,Arial,sans-serif',
},
saturation: {
width: '70%',
padding: '0px',
position: 'relative',
overflow: 'hidden',
},
swatch: {
width: '30%',
height: '228px',
padding: '0px',
background: `rgba(${colors().rgb.r}, ${colors().rgb.g}, ${colors().rgb.b}, 1)`,
position: 'relative',
overflow: 'hidden',
},
body: {
margin: 'auto',
width: '95%',
},
controls: {
display: 'flex',
'box-sizing': 'border-box',
height: '52px',
'padding-top': '22px',
},
color: {
width: '32px',
},
hue: {
height: '8px',
position: 'relative',
margin: '0px 16px 0px 16px',
width: '100%',
},
Hue: {
'border-radius': '2px',
},
}, props.styles);
};
return (<div style={styles().picker} class={`google-picker ${props.className}`}>
<div style={styles().head}>{props.header}</div>
<div style={styles().swatch}/>
<div style={styles().saturation}>
<Saturation hsl={colors().hsl} hsv={colors().hsv} pointer={<GooglePointerCircle hsl={colors().hsl}/>} onChange={changeColor}/>
</div>
<div style={styles().body}>
<div style={styles().controls} class="flexbox-fix">
<div style={styles().hue}>
<Hue styles={styles().Hue} hsl={colors().hsl} radius="4px" pointer={GooglePointer} onChange={changeColor}/>
</div>
</div>
<GoogleFields rgb={colors().rgb} hsl={colors().hsl} hex={colors().hex} hsv={colors().hsv} onChange={changeColor}/>
</div>
</div>);
}
export default withColorPicker(Google);