UNPKG

@bootstrap-styled/ra-ui

Version:
124 lines (100 loc) 4.34 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 _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactRedux = require("react-redux"); var _inflection = _interopRequireDefault(require("inflection")); var _compose = _interopRequireDefault(require("recompose/compose")); var _classnames = _interopRequireDefault(require("classnames")); var _raCore = require("ra-core"); var _ListGroup = _interopRequireDefault(require("@bootstrap-styled/v4/lib/ListGroup")); var _ViewList = _interopRequireDefault(require("@material-ui/icons/ViewList")); var _DashboardMenuItem = _interopRequireDefault(require("./DashboardMenuItem")); var _MenuItemLink = _interopRequireDefault(require("./MenuItemLink")); var _Responsive = _interopRequireDefault(require("./Responsive")); var _Sidebar = require("./Sidebar"); var translatedResourceName = function translatedResourceName(resource, translate) { return translate("resources.".concat(resource.name, ".name"), { smart_count: 2, _: resource.options && resource.options.label ? translate(resource.options.label, { smart_count: 2, _: resource.options.label }) : _inflection.default.humanize(_inflection.default.pluralize(resource.name)) }); }; var Menu = function Menu(_ref) { var className = _ref.className, dense = _ref.dense, hasDashboard = _ref.hasDashboard, onMenuClick = _ref.onMenuClick, open = _ref.open, pathname = _ref.pathname, resources = _ref.resources, translate = _ref.translate, logout = _ref.logout, rest = (0, _objectWithoutProperties2.default)(_ref, ["className", "dense", "hasDashboard", "onMenuClick", "open", "pathname", "resources", "translate", "logout"]); return _react.default.createElement(_ListGroup.default, (0, _extends2.default)({ className: (0, _classnames.default)(className, 'd-flex flex-column flex-start pl-2 mt-2'), style: { width: _Sidebar.DRAWER_WIDTH } }, rest), hasDashboard && _react.default.createElement(_DashboardMenuItem.default, { onClick: onMenuClick, className: "border-0 rounded-0 d-flex flex-start pl-2" }), resources.filter(function (r) { return r.hasList; }).map(function (resource) { return _react.default.createElement(_MenuItemLink.default, { className: "border-0 rounded-0 d-flex flex-start pl-2", key: resource.name, to: "/".concat(resource.name), primaryText: translatedResourceName(resource, translate), leftFaIcon: resource.faIcon, leftIcon: resource.icon ? _react.default.createElement(resource.icon, null) : _react.default.createElement(_ViewList.default, null), onClick: onMenuClick, dense: dense }); }), _react.default.createElement(_Responsive.default, { xsmall: logout, medium: null })); }; Menu.propTypes = { className: _propTypes.default.string, dense: _propTypes.default.bool, hasDashboard: _propTypes.default.bool, logout: _propTypes.default.element, onMenuClick: _propTypes.default.func, open: _propTypes.default.bool, pathname: _propTypes.default.string, resources: _propTypes.default.array.isRequired, translate: _propTypes.default.func.isRequired }; Menu.defaultProps = { onMenuClick: function onMenuClick() { return null; } }; var mapStateToProps = function mapStateToProps(state) { return { open: state.admin.ui.sidebarOpen, resources: (0, _raCore.getResources)(state), pathname: state.router.location.pathname }; }; var enhance = (0, _compose.default)(_raCore.translate, (0, _reactRedux.connect)(mapStateToProps, {}, null, { areStatePropsEqual: function areStatePropsEqual(prev, next) { return prev.resources.every(function (value, index) { return value === next.resources[index]; }) && prev.pathname === next.pathname && prev.open === next.open; } })); var _default = enhance(Menu); exports.default = _default; module.exports = exports.default;