UNPKG

@wix/design-system

Version:

@wix/design-system

243 lines (241 loc) 9.36 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _react = _interopRequireDefault(require("react")); var _color3 = _interopRequireDefault(require("color")); var _ColorPickerHsb = _interopRequireDefault(require("./ColorPickerHsb")); var _ColorPickerHue = _interopRequireDefault(require("./ColorPickerHue")); var _ColorPickerHistory = _interopRequireDefault(require("./ColorPickerHistory")); var _ColorPickerConverter = _interopRequireDefault(require("./ColorPickerConverter")); var _ColorPickerActions = _interopRequireDefault(require("./ColorPickerActions")); var _ColorPickerSt = require("./ColorPicker.st.css.js"); var _utils = require("./utils"); var _constants = require("./constants"); var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/ColorPicker/ColorPicker.jsx"; function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var FALLBACK_COLOR = (0, _color3["default"])('#86c6e5'); /** * Color Picker * * Under the hood uses color manipulation library [https://github.com/Qix-/color](https://github.com/Qix-/color). * Value for this component can be given in `string` or `object` format. * The callbacks always respond with color `object` format. */ var ColorPicker = /*#__PURE__*/function (_React$PureComponent) { function ColorPicker(props) { var _this; (0, _classCallCheck2["default"])(this, ColorPicker); _this = _callSuper(this, ColorPicker, [props]); _this._renderChildren = function () { var children = _this.props.children; var childrenInterface = { changeColor: function changeColor(_color) { try { var colorObject = _color; if ((0, _typeof2["default"])(_color) !== 'object') { colorObject = _color === '' ? (0, _color3["default"])().fade(1) : (0, _color3["default"])(_color); } _this.change(colorObject); } catch (err) {} } }; if (typeof children === 'function') { return children(childrenInterface); } return children; }; /** * sets the selected color * @param {object} color - An object that contains data for the selected color, model, and valpha. */ _this.change = function (_color) { _this.setState({ current: _color }, function () { _this.props.onChange(_color); // Auto-confirm when action buttons are hidden if (!_this.props.showActionButtons) { _this.confirm(); } }); }; /** * confirms the selected color */ _this.confirm = function () { _this.setState({ previous: _this.state.current }); _this.props.onConfirm(_this.state.current); }; /** * cancels the selected color */ _this.cancel = function () { _this.props.onCancel(_this.state.previous); }; /** * Sets focus on the first interactive element inside ColorPicker */ _this.focus = function () { _this.hsbRef.current && _this.hsbRef.current.focus(); }; var _color2 = (0, _utils.safeColor)(props.value, props.allowEmpty) || FALLBACK_COLOR; _this.state = { current: _color2, previous: _color2 }; _this.hsbRef = /*#__PURE__*/_react["default"].createRef(); return _this; } (0, _inherits2["default"])(ColorPicker, _React$PureComponent); return (0, _createClass2["default"])(ColorPicker, [{ key: "render", value: function render() { var _this$props = this.props, showHistory = _this$props.showHistory, showInput = _this$props.showInput, showConverter = _this$props.showConverter, showActionButtons = _this$props.showActionButtons, showEyeDropper = _this$props.showEyeDropper, eyeDropperLabel = _this$props.eyeDropperLabel, children = _this$props.children, value = _this$props.value, onAdd = _this$props.onAdd, addTooltipContent = _this$props.addTooltipContent, allowEmpty = _this$props.allowEmpty, emptyPlaceholder = _this$props.emptyPlaceholder, dataHook = _this$props.dataHook, removePadding = _this$props.removePadding; var _this$state = this.state, current = _this$state.current, previous = _this$state.previous; return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _ColorPickerSt.st)(_ColorPickerSt.classes.root, { noPadding: removePadding }), "data-hook": dataHook, role: "group", "aria-label": "Color picker", __self: this, __source: { fileName: _jsxFileName, lineNumber: 51, columnNumber: 7 } }, /*#__PURE__*/_react["default"].createElement("div", { __self: this, __source: { fileName: _jsxFileName, lineNumber: 57, columnNumber: 9 } }, /*#__PURE__*/_react["default"].createElement(_ColorPickerHsb["default"], { ref: this.hsbRef, dataHook: _constants.DataHooks.hsb, current: current, onChange: this.change, __self: this, __source: { fileName: _jsxFileName, lineNumber: 58, columnNumber: 11 } }), /*#__PURE__*/_react["default"].createElement(_ColorPickerHue["default"], { dataHook: _constants.DataHooks.hue, current: current, onChange: this.change, showHistory: showHistory, __self: this, __source: { fileName: _jsxFileName, lineNumber: 64, columnNumber: 11 } }), /*#__PURE__*/_react["default"].createElement(_ColorPickerHistory["default"], { show: showHistory, current: current, previous: previous, onClick: this.change, __self: this, __source: { fileName: _jsxFileName, lineNumber: 70, columnNumber: 11 } })), /*#__PURE__*/_react["default"].createElement(_ColorPickerConverter["default"], { dataHook: _constants.DataHooks.converter, showConverter: showConverter, showInput: showInput, current: current, onChange: this.change, onEnter: this.confirm, onAdd: onAdd, addTooltipContent: addTooltipContent, allowEmpty: allowEmpty, hexPlaceholder: emptyPlaceholder, showEyeDropper: showEyeDropper, eyeDropperLabel: eyeDropperLabel, __self: this, __source: { fileName: _jsxFileName, lineNumber: 78, columnNumber: 9 } }), children && /*#__PURE__*/_react["default"].createElement("div", { className: _ColorPickerSt.classes.children, "data-hook": _constants.DataHooks.children, __self: this, __source: { fileName: _jsxFileName, lineNumber: 94, columnNumber: 11 } }, this._renderChildren()), showActionButtons && /*#__PURE__*/_react["default"].createElement(_ColorPickerActions["default"], { disabled: !allowEmpty && value === '', onConfirm: this.confirm, onCancel: this.cancel, __self: this, __source: { fileName: _jsxFileName, lineNumber: 99, columnNumber: 11 } })); } }, { key: "UNSAFE_componentWillReceiveProps", value: function UNSAFE_componentWillReceiveProps(props) { var _color = (0, _utils.safeColor)(props.value, props.allowEmpty); if (!_color) return; if (_color.hex() !== this.state.current.hex() || (0, _utils.isTransparent)(_color) !== (0, _utils.isTransparent)(this.state.current)) { this.setState({ current: _color }); } } }]); }(_react["default"].PureComponent); ColorPicker.displayName = 'ColorPicker'; ColorPicker.defaultProps = { showHistory: false, showConverter: true, showInput: true, showActionButtons: true, allowEmpty: false, showEyeDropper: false, eyeDropperLabel: 'Sample color', removePadding: false, onChange: function onChange() {}, onCancel: function onCancel() {}, onConfirm: function onConfirm() {} }; var _default = exports["default"] = ColorPicker;