UNPKG

@vtex/styleguide

Version:

> VTEX Styleguide React components ([Docs](https://vtex.github.io/styleguide))

189 lines (145 loc) 5.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _reactOutsideClickHandler = require("react-outside-click-handler"); var _reactOutsideClickHandler2 = _interopRequireDefault(_reactOutsideClickHandler); var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); var _colorUtil = require("./colorUtil"); var _colorUtil2 = _interopRequireDefault(_colorUtil); var _HexInput = require("./HexInput"); var _HexInput2 = _interopRequireDefault(_HexInput); var _ColorOptions = require("./ColorOptions"); var _ColorOptions2 = _interopRequireDefault(_ColorOptions); require("./color-picker.global.css"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _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; }; return _extends.apply(this, arguments); } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } /** * ColorPicker Component */ var ColorPicker = /*#__PURE__*/ function (_React$Component) { _inheritsLoose(ColorPicker, _React$Component); function ColorPicker() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; _this.state = { showOptions: false }; _this.handleColorChange = function (color) { var onChange = _this.props.onChange; onChange && onChange({ rgba: color.rgb || color.rgba, hsva: color.hsv || color.hsva, hex: color.hex }); }; _this.handleOutsideClick = function () { _this.setState({ showOptions: false }); }; _this.handleShowOptions = function () { _this.setState({ showOptions: !_this.state.showOptions }); }; return _this; } var _proto = ColorPicker.prototype; _proto.validColor = function validColor() { var _this$props$color = this.props.color, rgba = _this$props$color.rgba, hsva = _this$props$color.hsva, hex = _this$props$color.hex; var color = rgba || hsva || hex; var hsvaAux = color && (hsva || _colorUtil2.default.any.to.hsv(color)); var hexAux = color && (hex || _colorUtil2.default.any.to.hex(color)); var rgbaAux = color && (rgba || _colorUtil2.default.any.to.rgb(color)); return { rgba: rgbaAux, hsva: hsvaAux, hex: hexAux }; }; _proto.render = function render() { var _this$props = this.props, title = _this$props.title, disabled = _this$props.disabled; var _this$validColor = this.validColor(), rgba = _this$validColor.rgba, hsva = _this$validColor.hsva, hex = _this$validColor.hex; var styleColorBox = { backgroundColor: "rgba(" + rgba.r + "," + rgba.g + "," + rgba.b + "," + rgba.a + ")", height: '1.5rem' }; return _react2.default.createElement(_reactOutsideClickHandler2.default, { onOutsideClick: this.handleOutsideClick }, _react2.default.createElement("div", { className: "relative dib w-100" }, title && _react2.default.createElement("div", { className: "bb b--muted-4 mb3 t-heading-5 pv5" }, title), _react2.default.createElement("div", { className: "flex w-100" }, _react2.default.createElement("div", { className: "w-25 pa1" }, _react2.default.createElement("div", { className: "t-small w-100 c-on-base db mb3" }, this.props.label), _react2.default.createElement("div", { className: "ba bw1 b--muted-4 br2 pa1 " + (disabled ? '' : 'hover-b--action-primary pointer'), onClick: this.handleShowOptions }, _react2.default.createElement("div", { className: "br1", style: styleColorBox }))), _react2.default.createElement("div", { className: "w-75 pa1" }, _react2.default.createElement(_HexInput2.default, { rgb: rgba, onChange: this.handleColorChange, disabled: disabled }))), _react2.default.createElement("div", null, this.state.showOptions && !disabled && _react2.default.createElement(_ColorOptions2.default, _extends({}, this.props, { color: { rgba: rgba, hex: hex, hsva: hsva }, onColorChange: this.handleColorChange }))))); }; return ColorPicker; }(_react2.default.Component); /** Default props values */ ColorPicker.defaultProps = { label: 'Default' }; ColorPicker.propTypes = { /** onChange event */ onChange: _propTypes2.default.func, /** Color Label */ label: _propTypes2.default.string, /** ColorPicker Title */ title: _propTypes2.default.string, /** Color format */ color: _propTypes2.default.shape({ /** RGBA color format */ rgba: _propTypes2.default.object, /** HSVA color format */ hsva: _propTypes2.default.object, /** HEX color format */ hex: _propTypes2.default.string }).isRequired, /** Color history */ colorHistory: _propTypes2.default.array.isRequired, /** Disable component */ disabled: _propTypes2.default.bool }; exports.default = ColorPicker;