UNPKG

wix-style-react

Version:
275 lines (227 loc) • 10.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: 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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); 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"]; function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var ColorInput = /*#__PURE__*/function (_React$Component) { (0, _inherits2["default"])(ColorInput, _React$Component); var _super = _createSuper(ColorInput); function ColorInput(props) { var _this; (0, _classCallCheck2["default"])(this, ColorInput); _this = _super.call(this, props); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_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, null, /*#__PURE__*/_react["default"].createElement(_Hash.Hash, { disabled: disabled, size: size })); return active || value ? hash : undefined; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_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" }, /*#__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, popoverProps: popoverProps })); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_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); }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onPickerChange", function (value) { var onChange = _this.props.onChange; _this.setState({ active: true, value: value }, function () { return onChange(value); }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onFocus", function () { return _this.setState({ active: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_keyDown", function (e) { e.stopPropagation(); e.key === 'Enter' && _this.confirm(); e.key === 'Escape' && _this.cancel(); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "click", function () { _this.input.focus(); _this.setState({ active: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_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); }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_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, _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) { return _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() })); } }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(props, state) { if (!state.active && props.value !== state.value) { return { value: (0, _hexHelpers.normalizeHexInput)(props.value) }; } return {}; } }]); return ColorInput; }(_react["default"].Component); (0, _defineProperty2["default"])(ColorInput, "displayName", 'ColorInput'); (0, _defineProperty2["default"])(ColorInput, "propTypes", { /** Defines placeholder text to display on an empty input */ placeholder: _propTypes["default"].string, /** Specifies whether the input should be disabled */ disabled: _propTypes["default"].bool, /** Specifies the status of a field */ status: _propTypes["default"].oneOf(['error', 'warning', 'loading']), /** Defines the message to display on status icon hover. If not given or empty, there will be no tooltip. */ statusMessage: _propTypes["default"].node, /** Controls input size */ size: _propTypes["default"].oneOf(['small', 'medium', 'large']), /** Defines input value */ value: _propTypes["default"].string.isRequired, /** Returns confirmed value */ onConfirm: _propTypes["default"].func, /** Returns last confirmed value from `value` prop */ onCancel: _propTypes["default"].func, /** Returns changed value of input or color picker */ onChange: _propTypes["default"].func, /** Defines child items to render inside of a component. Accepts any kind of content. It receives the `changeColor` function to control <ColorInput/> value. */ colorPickerChildren: _propTypes["default"].oneOfType([_propTypes["default"].node, _propTypes["default"].func]), /** Defines a callback handler with color HEX string. Handler is called whenever the `Add Color` button is pressed. */ onAddColor: _propTypes["default"].func, /** Defines content to show in add button tooltip. Does not appear if `onAdd` is not passed. */ addTooltipContent: _propTypes["default"].node, /** Allows to pass popover props. See <Popover/> API for a full list. */ popoverProps: _propTypes["default"].object }); (0, _defineProperty2["default"])(ColorInput, "defaultProps", { placeholder: '', size: 'medium', onChange: function onChange() {}, onConfirm: function onConfirm() {}, onCancel: function onCancel() {}, popoverProps: {}, value: '' }); var _default = ColorInput; exports["default"] = _default;