UNPKG

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
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);