UNPKG

wix-style-react

Version:
135 lines (118 loc) 5.01 kB
import _extends from "@babel/runtime/helpers/extends"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import _inherits from "@babel/runtime/helpers/inherits"; import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf"; function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(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; } } import React from 'react'; import PropTypes from 'prop-types'; import { st, classes } from './ComposerSidebar.st.css'; import { dataHooks } from './constants'; import Box from '../Box'; import ToggleButton from '../ToggleButton'; /** ComposerSidebar */ var ComposerSidebar = /*#__PURE__*/function (_React$PureComponent) { _inherits(ComposerSidebar, _React$PureComponent); var _super = _createSuper(ComposerSidebar); function ComposerSidebar() { _classCallCheck(this, ComposerSidebar); return _super.apply(this, arguments); } _createClass(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.createElement("div", { key: "sidebar-item-".concat(id), className: st(classes.item, { labelPlacement: labelPlacement }, className) }, /*#__PURE__*/React.createElement(ToggleButton, _extends({}, 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.createElement(Box, { className: className, height: "100%", maxHeight: "100%", dataHook: dataHook || dataHooks.composerSidebarContainer }, /*#__PURE__*/React.createElement("div", { "data-hook": "composer-sidebar-items-container", "data-selected-id": selectedId, className: classes.itemsContainer }, items.map(function (item) { return _this._renderItem(item); }))); } }]); return ComposerSidebar; }(React.PureComponent); ComposerSidebar.displayName = 'ComposerSidebar'; ComposerSidebar.propTypes = { /** Applied as data-hook HTML attribute that can be used in the tests */ dataHook: PropTypes.string, /** Custom className for the base element */ className: PropTypes.string, /** Different layout options. Places label to the right of the button or below it. */ labelPlacement: PropTypes.oneOf(['bottom', 'end']), /** Size of the component */ size: PropTypes.oneOf(['medium', 'large']), /** Selected item id */ selectedId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), /** Array of button items to show on the sidebar */ items: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), label: PropTypes.string, icon: PropTypes.node, disabled: PropTypes.bool, onClick: PropTypes.func })), /** Default on click handler for items */ onClick: PropTypes.func }; ComposerSidebar.defaultProps = { labelPlacement: 'end', selectedId: null, items: [], size: 'medium', onClick: function onClick() {} }; export default ComposerSidebar;