UNPKG

wix-style-react

Version:
176 lines (173 loc) • 6.82 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _Focusable = require("../common/Focusable"); var _wixUiIconsCommon = require("@wix/wix-ui-icons-common"); var _TooltipCommon = require("../common/PropTypes/TooltipCommon"); var _FillButtonSt = require("./FillButton.st.css"); var _Tooltip = _interopRequireDefault(require("../Tooltip")); var _Proportion = _interopRequireDefault(require("../Proportion")); var _constants = require("./constants"); var _utils = require("./utils"); var _context = require("../WixStyleReactProvider/context"); var _excluded = ["disabled", "focusableOnBlur", "focusableOnFocus", "dataHook", "fill", "iconSize", "tooltipContent", "tooltipProps", "className"]; var _jsxFileName = "/home/builduser/work/a9c1ac8876d5057c/packages/wix-style-react/dist/cjs/FillButton/FillButton.js"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var { iconSmall, iconMedium } = _constants.dataHooks; /** FillButton */ class FillButton extends _react.default.PureComponent { constructor() { super(...arguments); this._getBackground = fill => { var { disabled } = this.props; if ((0, _utils.parseColor)(fill) && !disabled) { return { backgroundColor: fill }; } if ((0, _utils.parseGradient)(fill) && !disabled) { return { backgroundImage: fill }; } return undefined; }; this._renderIcon = () => { var { iconSize, fill, disabled, icon } = this.props; var iconStyle = { color: !disabled && (0, _utils.parseContrastColor)(fill) }; if (icon) { return /*#__PURE__*/_react.default.cloneElement(icon, { style: iconStyle }); } var AddIcon = iconSize === 'small' ? _wixUiIconsCommon.AddSmall : _wixUiIconsCommon.Add; return /*#__PURE__*/_react.default.createElement(AddIcon, { style: iconStyle, "data-hook": iconSize === 'small' ? iconSmall : iconMedium, __self: this, __source: { fileName: _jsxFileName, lineNumber: 76, columnNumber: 7 } }); }; } render() { var _this$props = this.props, { disabled, focusableOnBlur, focusableOnFocus, dataHook, fill, iconSize, tooltipContent, tooltipProps = {}, className } = _this$props, rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded); var background = this._getBackground(fill); // For backwards compatibility var content = tooltipProps.content || tooltipContent; return /*#__PURE__*/_react.default.createElement(_context.WixStyleReactContext.Consumer, { __self: this, __source: { fileName: _jsxFileName, lineNumber: 102, columnNumber: 7 } }, _ref => { var { newColorsBranding } = _ref; return /*#__PURE__*/_react.default.createElement(_Tooltip.default, (0, _extends2.default)({ appendTo: "window", disabled: disabled }, tooltipProps, { content: content, dataHook: dataHook, size: "small", __self: this, __source: { fileName: _jsxFileName, lineNumber: 104, columnNumber: 11 } }), /*#__PURE__*/_react.default.createElement(_Proportion.default, { className: _FillButtonSt.classes.proportion, __self: this, __source: { fileName: _jsxFileName, lineNumber: 112, columnNumber: 13 } }, /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({}, rest, { className: (0, _FillButtonSt.st)(_FillButtonSt.classes.root, { disabled, fill: !!background, newColorsBranding }, className), style: _objectSpread({}, background), "data-hook": _constants.dataHooks.button, onFocus: focusableOnFocus, onBlur: focusableOnBlur, disabled: disabled, __self: this, __source: { fileName: _jsxFileName, lineNumber: 113, columnNumber: 15 } }), this._renderIcon()))); }); } } FillButton.displayName = 'FillButton'; FillButton.propTypes = { /** Applies a data-hook HTML attribute that can be used in the tests */ dataHook: _propTypes.default.string, /** Specifies a CSS class name to be appended to the component’s root element */ className: _propTypes.default.string, /** Defines a callback handler. Handler is called whenever a button is clicked. */ onClick: _propTypes.default.func, /** Controls the size of a plus icon. */ iconSize: _propTypes.default.oneOf(['small', 'medium']), /** Specify whether button should be disabled or not */ disabled: _propTypes.default.bool, /** Defines button fill value in string format. Accepts HEX colors and gradients. */ fill: _propTypes.default.string, /** Specifies a message to display on button hover. */ tooltipContent: _propTypes.default.node, /** Allows to pass tooltip common props. * @linkTypeTo components-overlays--tooltip * @setTypeName TooltipCommonProps */ tooltipProps: _propTypes.default.shape(_TooltipCommon.TooltipCommonProps), /** Overrides a default plus icon to any WSR icon. Do not work together with `iconSize`. Icon size has to be controlled manually.*/ icon: _propTypes.default.node }; FillButton.defaultProps = { iconSize: 'small' }; var _default = exports.default = (0, _Focusable.withFocusable)(FillButton); //# sourceMappingURL=FillButton.js.map