UNPKG

react-color

Version:

A Collection of Color Pickers from Sketch, Photoshop, Chrome & more

72 lines (64 loc) 2.33 kB
import React from 'react'; import PropTypes from 'prop-types'; import reactCSS from 'reactcss'; import map from 'lodash-es/map'; import merge from 'lodash-es/merge'; import * as material from 'material-colors'; import { ColorWrap } from '../common'; import CircleSwatch from './CircleSwatch'; export var Circle = function Circle(_ref) { var width = _ref.width, onChange = _ref.onChange, onSwatchHover = _ref.onSwatchHover, colors = _ref.colors, hex = _ref.hex, circleSize = _ref.circleSize, _ref$styles = _ref.styles, passedStyles = _ref$styles === undefined ? {} : _ref$styles, circleSpacing = _ref.circleSpacing, _ref$className = _ref.className, className = _ref$className === undefined ? '' : _ref$className; var styles = reactCSS(merge({ 'default': { card: { width: width, display: 'flex', flexWrap: 'wrap', marginRight: -circleSpacing, marginBottom: -circleSpacing } } }, passedStyles)); var handleChange = function handleChange(hexCode, e) { return onChange({ hex: hexCode, source: 'hex' }, e); }; return React.createElement( 'div', { style: styles.card, className: 'circle-picker ' + className }, map(colors, function (c) { return React.createElement(CircleSwatch, { key: c, color: c, onClick: handleChange, onSwatchHover: onSwatchHover, active: hex === c.toLowerCase(), circleSize: circleSize, circleSpacing: circleSpacing }); }) ); }; Circle.propTypes = { width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), circleSize: PropTypes.number, circleSpacing: PropTypes.number, styles: PropTypes.object }; Circle.defaultProps = { width: 252, circleSize: 28, circleSpacing: 14, colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']], styles: {} }; export default ColorWrap(Circle);