react-color
Version:
A Collection of Color Pickers from Sketch, Photoshop, Chrome & more
130 lines (113 loc) • 3.25 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Block = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactcss = require('reactcss');
var _reactcss2 = _interopRequireDefault(_reactcss);
var _color = require('../../helpers/color');
var _color2 = _interopRequireDefault(_color);
var _common = require('../common');
var _BlockSwatches = require('./BlockSwatches');
var _BlockSwatches2 = _interopRequireDefault(_BlockSwatches);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Block = exports.Block = function Block(_ref) {
var onChange = _ref.onChange,
hex = _ref.hex,
colors = _ref.colors,
width = _ref.width,
triangle = _ref.triangle;
var handleChange = function handleChange(hexCode, e) {
_color2.default.isValidHex(hexCode) && onChange({
hex: hexCode,
source: 'hex'
}, e);
};
var styles = (0, _reactcss2.default)({
'default': {
card: {
width: width,
background: '#fff',
boxShadow: '0 1px rgba(0,0,0,.1)',
borderRadius: '6px',
position: 'relative'
},
head: {
height: '110px',
background: hex,
borderRadius: '6px 6px 0 0',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
},
body: {
padding: '10px'
},
label: {
fontSize: '18px',
color: '#fff'
},
triangle: {
width: '0px',
height: '0px',
borderStyle: 'solid',
borderWidth: '0 10px 10px 10px',
borderColor: 'transparent transparent ' + hex + ' transparent',
position: 'absolute',
top: '-10px',
left: '50%',
marginLeft: '-10px'
},
input: {
width: '100%',
fontSize: '12px',
color: '#666',
border: '0px',
outline: 'none',
height: '22px',
boxShadow: 'inset 0 0 0 1px #ddd',
borderRadius: '4px',
padding: '0 7px',
boxSizing: 'border-box'
}
},
'hide-triangle': {
triangle: {
display: 'none'
}
}
}, { 'hide-triangle': triangle === 'hide' });
return _react2.default.createElement(
'div',
{ style: styles.card, className: 'block-picker' },
_react2.default.createElement('div', { style: styles.triangle }),
_react2.default.createElement(
'div',
{ style: styles.head },
_react2.default.createElement(
'div',
{ style: styles.label },
hex
)
),
_react2.default.createElement(
'div',
{ style: styles.body },
_react2.default.createElement(_BlockSwatches2.default, { colors: colors, onClick: handleChange }),
_react2.default.createElement(_common.EditableInput, {
placeholder: 'Hex Code',
style: { input: styles.input },
value: '',
onChange: handleChange
})
)
);
};
Block.defaultProps = {
width: '170px',
colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'],
triangle: 'top'
};
exports.default = (0, _common.ColorWrap)(Block);