UNPKG

wix-style-react

Version:
153 lines (125 loc) 6.01 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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); 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 _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _ComposerSidebarSt = require("./ComposerSidebar.st.css"); var _constants = require("./constants"); var _Box = _interopRequireDefault(require("../Box")); var _ToggleButton = _interopRequireDefault(require("../ToggleButton")); 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; } } /** ComposerSidebar */ var ComposerSidebar = /*#__PURE__*/function (_React$PureComponent) { (0, _inherits2["default"])(ComposerSidebar, _React$PureComponent); var _super = _createSuper(ComposerSidebar); function ComposerSidebar() { (0, _classCallCheck2["default"])(this, ComposerSidebar); return _super.apply(this, arguments); } (0, _createClass2["default"])(ComposerSidebar, [{ key: "_renderItem", value: function _renderItem(item) { var _this$props = this.props, selectedId = _this$props.selectedId, labelPlacement = _this$props.labelPlacement, size = _this$props.size, onClick = _this$props.onClick, className = _this$props.className; var label = item.label, id = item.id, icon = item.icon, disabled = item.disabled, rest = item.rest; var selected = selectedId === id; var onClickHandler = item.onClick || onClick; return /*#__PURE__*/_react["default"].createElement("div", { key: "sidebar-item-".concat(id), className: (0, _ComposerSidebarSt.st)(_ComposerSidebarSt.classes.item, { labelPlacement: labelPlacement }, className) }, /*#__PURE__*/_react["default"].createElement(_ToggleButton["default"], (0, _extends2["default"])({}, rest, { dataHook: "composer-sidebar-item-".concat(id), onClick: function onClick(e) { return onClickHandler(e, { id: id, label: label }); }, shape: "round", size: size, border: true, skin: "inverted", labelEllipsis: true, disabled: disabled, selected: selected, labelValue: label, labelPlacement: labelPlacement }), icon)); } }, { key: "render", value: function render() { var _this = this; var _this$props2 = this.props, items = _this$props2.items, dataHook = _this$props2.dataHook, selectedId = _this$props2.selectedId, className = _this$props2.className; return /*#__PURE__*/_react["default"].createElement(_Box["default"], { className: className, height: "100%", maxHeight: "100%", dataHook: dataHook || _constants.dataHooks.composerSidebarContainer }, /*#__PURE__*/_react["default"].createElement("div", { "data-hook": "composer-sidebar-items-container", "data-selected-id": selectedId, className: _ComposerSidebarSt.classes.itemsContainer }, items.map(function (item) { return _this._renderItem(item); }))); } }]); return ComposerSidebar; }(_react["default"].PureComponent); ComposerSidebar.displayName = 'ComposerSidebar'; ComposerSidebar.propTypes = { /** Applied as data-hook HTML attribute that can be used in the tests */ dataHook: _propTypes["default"].string, /** Custom className for the base element */ className: _propTypes["default"].string, /** Different layout options. Places label to the right of the button or below it. */ labelPlacement: _propTypes["default"].oneOf(['bottom', 'end']), /** Size of the component */ size: _propTypes["default"].oneOf(['medium', 'large']), /** Selected item id */ selectedId: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), /** Array of button items to show on the sidebar */ items: _propTypes["default"].arrayOf(_propTypes["default"].shape({ id: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), label: _propTypes["default"].string, icon: _propTypes["default"].node, disabled: _propTypes["default"].bool, onClick: _propTypes["default"].func })), /** Default on click handler for items */ onClick: _propTypes["default"].func }; ComposerSidebar.defaultProps = { labelPlacement: 'end', selectedId: null, items: [], size: 'medium', onClick: function onClick() {} }; var _default = ComposerSidebar; exports["default"] = _default;