react-color
Version:
A Collection of Color Pickers from Sketch, Photoshop, Chrome & more
70 lines (61 loc) • 2.04 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
import React from 'react';
import reactCSS from 'reactcss';
import { handleFocus } from '../../helpers/interaction';
import Checkboard from './Checkboard';
var ENTER = 13;
export var Swatch = function Swatch(_ref) {
var color = _ref.color,
style = _ref.style,
_ref$onClick = _ref.onClick,
onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,
onHover = _ref.onHover,
_ref$title = _ref.title,
title = _ref$title === undefined ? color : _ref$title,
children = _ref.children,
focus = _ref.focus,
_ref$focusStyle = _ref.focusStyle,
focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;
var transparent = color === 'transparent';
var styles = reactCSS({
default: {
swatch: _extends({
background: color,
height: '100%',
width: '100%',
cursor: 'pointer',
position: 'relative',
outline: 'none'
}, style, focus ? focusStyle : {})
}
});
var handleClick = function handleClick(e) {
return onClick(color, e);
};
var handleKeyDown = function handleKeyDown(e) {
return e.keyCode === ENTER && onClick(color, e);
};
var handleHover = function handleHover(e) {
return onHover(color, e);
};
var optionalEvents = {};
if (onHover) {
optionalEvents.onMouseOver = handleHover;
}
return React.createElement(
'div',
_extends({
style: styles.swatch,
onClick: handleClick,
title: title,
tabIndex: 0,
onKeyDown: handleKeyDown
}, optionalEvents),
children,
transparent && React.createElement(Checkboard, {
borderRadius: styles.swatch.borderRadius,
boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'
})
);
};
export default handleFocus(Swatch);