admin-on-rest-fr05t1k
Version:
A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
87 lines (68 loc) • 3.17 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _shouldUpdate = require('recompose/shouldUpdate');
var _shouldUpdate2 = _interopRequireDefault(_shouldUpdate);
var _Table = require('material-ui/Table');
var _DatagridCell = require('./DatagridCell');
var _DatagridCell2 = _interopRequireDefault(_DatagridCell);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var DatagridBody = function DatagridBody(_ref) {
var resource = _ref.resource,
children = _ref.children,
ids = _ref.ids,
data = _ref.data,
basePath = _ref.basePath,
styles = _ref.styles,
rowStyle = _ref.rowStyle,
options = _ref.options,
rowOptions = _ref.rowOptions,
rest = (0, _objectWithoutProperties3.default)(_ref, ['resource', 'children', 'ids', 'data', 'basePath', 'styles', 'rowStyle', 'options', 'rowOptions']);
return _react2.default.createElement(
_Table.TableBody,
(0, _extends3.default)({ displayRowCheckbox: false, className: 'datagrid-body' }, rest, options),
ids.map(function (id, rowIndex) {
return _react2.default.createElement(
_Table.TableRow,
(0, _extends3.default)({ style: rowStyle ? rowStyle(data[id], rowIndex) : styles.tr, key: id, selectable: false }, rowOptions),
_react2.default.Children.map(children, function (field, index) {
return _react2.default.createElement(_DatagridCell2.default, (0, _extends3.default)({
key: id + '-' + (field.props.source || index),
className: 'column-' + field.props.source,
record: data[id],
defaultStyle: index === 0 ? styles.cell['td:first-child'] : styles.cell.td
}, { field: field, basePath: basePath, resource: resource }));
})
);
})
);
};
DatagridBody.propTypes = {
ids: _react.PropTypes.arrayOf(_react.PropTypes.any).isRequired,
isLoading: _react.PropTypes.bool,
resource: _react.PropTypes.string,
data: _react.PropTypes.object.isRequired,
basePath: _react.PropTypes.string,
options: _react.PropTypes.object,
rowOptions: _react.PropTypes.object,
styles: _react.PropTypes.object,
rowStyle: _react.PropTypes.func
};
DatagridBody.defaultProps = {
data: {},
ids: []
};
var PureDatagridBody = (0, _shouldUpdate2.default)(function (props, nextProps) {
return nextProps.isLoading === false;
})(DatagridBody);
// trick material-ui Table into thinking this is one of the child type it supports
PureDatagridBody.muiName = 'TableBody';
exports.default = PureDatagridBody;
module.exports = exports['default'];