admin-on-rest-fr05t1k
Version:
A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
97 lines (73 loc) • 2.94 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _inflection = require('inflection');
var _inflection2 = _interopRequireDefault(_inflection);
var _MenuItem = require('material-ui/MenuItem');
var _MenuItem2 = _interopRequireDefault(_MenuItem);
var _reactRouterDom = require('react-router-dom');
var _pure = require('recompose/pure');
var _pure2 = _interopRequireDefault(_pure);
var _compose = require('recompose/compose');
var _compose2 = _interopRequireDefault(_compose);
var _DashboardMenuItem = require('./DashboardMenuItem');
var _DashboardMenuItem2 = _interopRequireDefault(_DashboardMenuItem);
var _translate = require('../../i18n/translate');
var _translate2 = _interopRequireDefault(_translate);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = {
main: {
display: 'flex',
flexDirection: 'column',
justifyContent: 'flex-start',
height: '100%'
}
};
var translatedResourceName = function translatedResourceName(resource, translate) {
return translate('resources.' + resource.name + '.name', {
smart_count: 2,
_: resource.options && resource.options.label ? translate(resource.options.label, { smart_count: 2, _: resource.options.label }) : _inflection2.default.humanize(_inflection2.default.pluralize(resource.name))
});
};
var Menu = function Menu(_ref) {
var hasDashboard = _ref.hasDashboard,
onMenuTap = _ref.onMenuTap,
resources = _ref.resources,
translate = _ref.translate,
logout = _ref.logout;
return _react2.default.createElement(
'div',
{ style: styles.main },
hasDashboard && _react2.default.createElement(_DashboardMenuItem2.default, { onTouchTap: onMenuTap }),
resources.filter(function (r) {
return r.list;
}).map(function (resource) {
return _react2.default.createElement(_MenuItem2.default, {
key: resource.name,
containerElement: _react2.default.createElement(_reactRouterDom.Link, { to: '/' + resource.name }),
primaryText: translatedResourceName(resource, translate),
leftIcon: _react2.default.createElement(resource.icon, null),
onTouchTap: onMenuTap
});
}),
logout
);
};
Menu.propTypes = {
hasDashboard: _react.PropTypes.bool,
logout: _react.PropTypes.element,
onMenuTap: _react.PropTypes.func,
resources: _react.PropTypes.array.isRequired,
translate: _react.PropTypes.func.isRequired
};
Menu.defaultProps = {
onMenuTap: function onMenuTap() {
return null;
}
};
var enhance = (0, _compose2.default)(_pure2.default, _translate2.default);
exports.default = enhance(Menu);
module.exports = exports['default'];