@bootstrap-styled/ra-ui
Version:
UI components for react-admin
124 lines (100 loc) • 4.34 kB
JavaScript
"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;