react-admin-ui
Version:
React Admin Panel based on material-ui interface Edit
173 lines (126 loc) • 7.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _values = require('babel-runtime/core-js/object/values');
var _values2 = _interopRequireDefault(_values);
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _taggedTemplateLiteral2 = require('babel-runtime/helpers/taggedTemplateLiteral');
var _taggedTemplateLiteral3 = _interopRequireDefault(_taggedTemplateLiteral2);
var _dec, _class;
var _templateObject = (0, _taggedTemplateLiteral3.default)(['\n color: rgba(0, 0, 0, 0.87);\n background-color: rgb(255, 255, 255);\n transition: margin 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;\n box-sizing: border-box;\n font-family: Roboto, sans-serif;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 6px, rgba(0, 0, 0, 0.12) 0px 1px 4px;\n border-radius: 2px;\n flex: 0 0 256px;\n margin-left: 0px;\n order: -1;\n margin-left: ', ';\n'], ['\n color: rgba(0, 0, 0, 0.87);\n background-color: rgb(255, 255, 255);\n transition: margin 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;\n box-sizing: border-box;\n font-family: Roboto, sans-serif;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 6px, rgba(0, 0, 0, 0.12) 0px 1px 4px;\n border-radius: 2px;\n flex: 0 0 256px;\n margin-left: 0px;\n order: -1;\n margin-left: ', ';\n']);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRedux = require('react-redux');
var _Drawer = require('material-ui/Drawer');
var _Drawer2 = _interopRequireDefault(_Drawer);
var _materialUi = require('material-ui');
var _lib = require('../../../lib');
var _reactIsomorphicTools = require('react-isomorphic-tools');
var _styledComponents = require('styled-components');
var _styledComponents2 = _interopRequireDefault(_styledComponents);
var _reactRouter = require('react-router');
var _reactRouterConfig = require('react-router-config');
var _resolveRoutes = require('react-isomorphic-tools/lib/resolveRoutes');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DrawlerStyled = (0, _styledComponents2.default)(_Drawer2.default)(_templateObject, function (props) {
return props.panel ? '0' : '-256px';
});
var SelectableList = (0, _materialUi.makeSelectable)(_materialUi.List);
var Panel = (_dec = (0, _reactRedux.connect)(function (state) {
return {
panel: state.modals.panel || false
};
}, { openModal: _reactIsomorphicTools.openModal, closeModal: _reactIsomorphicTools.closeModal }), (0, _reactRouter.withRouter)(_class = _dec(_class = function (_React$Component) {
(0, _inherits3.default)(Panel, _React$Component);
function Panel(props) {
(0, _classCallCheck3.default)(this, Panel);
var _this = (0, _possibleConstructorReturn3.default)(this, (Panel.__proto__ || (0, _getPrototypeOf2.default)(Panel)).call(this, props));
_this.componentWillReceiveProps = function (nextProps) {
_this.entityName = _this.getEntityNameByPathname(nextProps.location.pathname);
};
_this.getEntityNameByPathname = function (pathname) {
var result = (0, _reactRouterConfig.matchRoutes)(_resolveRoutes.routes, pathname).slice(-1)[0];
if ((typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) == 'object') {
return result.match.params.name;
}
return null;
};
_this.isOpen = function (nestedItems) {
return !!(0, _lib.getEntity)(_this.entityName, nestedItems);
};
_this.renderList = function (entities) {
return (0, _values2.default)(entities).filter(function (item) {
return !item.hidden;
}).map(function (item, index) {
if (item.nestedItems) {
return _react2.default.createElement(_materialUi.ListItem, {
primaryTogglesNestedList: true,
key: index,
leftIcon: item.leftIcon ? _react2.default.createElement(item.leftIcon, null) : null,
initiallyOpen: _this.isOpen(item.nestedItems),
nestedItems: _this.renderList(item.nestedItems),
primaryText: item.title,
value: 'group'
});
} else {
return _react2.default.createElement(_materialUi.ListItem, {
key: index,
leftIcon: item.leftIcon ? _react2.default.createElement(item.leftIcon, null) : null,
containerElement: _react2.default.createElement(_reactIsomorphicTools.Link, { to: { pathname: (0, _lib.getPrefix)() + '/' + item.name } }),
primaryText: item.title || item.name,
value: item.name
});
}
});
};
_this.entities = (0, _lib.getEntities)();
_this.entityName = _this.getEntityNameByPathname(props.location.pathname);
return _this;
}
(0, _createClass3.default)(Panel, [{
key: 'componentDidMount',
value: function componentDidMount() {
var _this2 = this;
setTimeout(function () {
_this2.props.openModal('panel');
}, 200);
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
this.props.closeModal('panel');
}
}, {
key: 'render',
value: function render() {
var panel = this.props.panel;
var style = {
position: 'relative'
};
return _react2.default.createElement(
DrawlerStyled,
{ open: true, panel: panel, containerStyle: style },
_react2.default.createElement(
SelectableList,
{ value: this.entityName },
this.renderList(this.entities)
)
);
}
}]);
return Panel;
}(_react2.default.Component)) || _class) || _class);
exports.default = Panel;