UNPKG

@wix/design-system

Version:

@wix/design-system

248 lines (247 loc) 8.56 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); 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 _Input = _interopRequireDefault(require("../Input")); var _Hash = require("./components/Hash"); var _ColorViewer = require("./components/ColorViewer"); var _hexHelpers = require("./hex-helpers"); var _Box = _interopRequireDefault(require("../Box")); var _excluded = ["placeholder", "size"]; var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/ColorInput/ColorInput.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 ColorInput = /*#__PURE__*/function (_React$Component) { function ColorInput(props) { var _this; (0, _classCallCheck2["default"])(this, ColorInput); _this = _callSuper(this, ColorInput, [props]); _this._renderPrefix = function () { var _this$props = _this.props, disabled = _this$props.disabled, size = _this$props.size; var _this$state = _this.state, active = _this$state.active, value = _this$state.value; var hash = /*#__PURE__*/_react["default"].createElement(_Input["default"].Affix, { __self: _this, __source: { fileName: _jsxFileName, lineNumber: 43, columnNumber: 7 } }, /*#__PURE__*/_react["default"].createElement(_Hash.Hash, { disabled: disabled, size: size, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 44, columnNumber: 9 } })); return active || value ? hash : undefined; }; _this.onTabOut = function (keyboardEvent) { if (!_this.input) { return; } var input = _this.input.input; var target = keyboardEvent.target; if (input === target) { return; } _this.cancel(); }; _this._renderSuffix = function () { var _this$state2 = _this.state, value = _this$state2.value, active = _this$state2.active; var _this$props2 = _this.props, size = _this$props2.size, popoverPlacement = _this$props2.popoverPlacement, popoverAppendTo = _this$props2.popoverAppendTo, disabled = _this$props2.disabled, colorPickerChildren = _this$props2.colorPickerChildren, onAddColor = _this$props2.onAddColor, addTooltipContent = _this$props2.addTooltipContent, placeholder = _this$props2.placeholder, popoverProps = _this$props2.popoverProps; return /*#__PURE__*/_react["default"].createElement(_Box["default"], { verticalAlign: "middle", __self: _this, __source: { fileName: _jsxFileName, lineNumber: 79, columnNumber: 7 } }, /*#__PURE__*/_react["default"].createElement(_ColorViewer.ColorViewer, { value: value, active: active, disabled: disabled, size: size, placement: popoverPlacement, appendTo: popoverAppendTo, onClick: _this.click, onChange: _this._onPickerChange, onCancel: _this.cancel, onConfirm: _this.confirm, onClickOutside: _this.confirm, children: colorPickerChildren, onAddColor: onAddColor, addTooltipContent: addTooltipContent, placeholder: placeholder, onTabOut: _this.onTabOut, popoverProps: popoverProps, __self: _this, __source: { fileName: _jsxFileName, lineNumber: 80, columnNumber: 9 } })); }; _this._onChange = function (evt) { var onChange = _this.props.onChange; var value = (0, _hexHelpers.normalizeHexInput)(evt.target.value); _this.setState({ value: value }, function () { return onChange(value); }); }; _this._onPickerChange = function (value) { var onChange = _this.props.onChange; _this.setState({ active: true, value: value }, function () { return onChange(value); }); }; _this._onFocus = function () { return _this.setState({ active: true }); }; _this._keyDown = function (e) { e.stopPropagation(); e.key === 'Enter' && _this.confirm(); e.key === 'Escape' && _this.cancel(); }; /** * clicks the input element * @returns {Void} */ _this.click = function () { _this.input.focus(); _this.setState({ active: true }); }; /** * sets the picked color * @returns {Void} */ _this.confirm = function () { var _this$props3 = _this.props, onConfirm = _this$props3.onConfirm, onChange = _this$props3.onChange; var value = (0, _hexHelpers.validateHex)(_this.state.value); _this.setState({ active: false, value: value, previous: value }, function () { onConfirm(value); onChange(value); }); }; /** * sets the previous color * @returns {Void} */ _this.cancel = function () { var _this$props4 = _this.props, onCancel = _this$props4.onCancel, onChange = _this$props4.onChange; var previous = _this.state.previous; _this.setState({ active: false, value: previous }, function () { onCancel(previous); onChange(previous); }); }; _this.state = { active: false, previous: props.value, value: '' }; return _this; } (0, _inherits2["default"])(ColorInput, _React$Component); return (0, _createClass2["default"])(ColorInput, [{ key: "render", value: function render() { var _this2 = this; var _this$props5 = this.props, placeholder = _this$props5.placeholder, size = _this$props5.size, rest = (0, _objectWithoutProperties2["default"])(_this$props5, _excluded); var _this$state3 = this.state, active = _this$state3.active, value = _this$state3.value; return /*#__PURE__*/_react["default"].createElement(_Input["default"], (0, _extends2["default"])({}, rest, { ref: function ref(input) { _this2.input = input; }, placeholder: active ? '' : placeholder, size: size, onKeyDown: this._keyDown, onChange: this._onChange, onFocus: this._onFocus, onInputClicked: this.click, value: value.replace('#', ''), prefix: this._renderPrefix(), suffix: this._renderSuffix(), __self: this, __source: { fileName: _jsxFileName, lineNumber: 160, columnNumber: 7 } })); } }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(props, state) { if (!state.active && props.value !== state.value) { return { value: (0, _hexHelpers.normalizeHexInput)(props.value) }; } return {}; } }]); }(_react["default"].Component); ColorInput.displayName = 'ColorInput'; ColorInput.defaultProps = { placeholder: '', size: 'medium', onChange: function onChange() {}, onConfirm: function onConfirm() {}, onCancel: function onCancel() {}, popoverProps: {}, value: '' }; var _default = exports["default"] = ColorInput;