react-mui-table
Version:
A react component that takes data & style parameters, and renders a Material UI table.
105 lines (85 loc) • 3.08 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _selectn = require('selectn');
var _selectn2 = _interopRequireDefault(_selectn);
var _Table = require('material-ui/Table');
var _Avatar = require('material-ui/Avatar');
var _Avatar2 = _interopRequireDefault(_Avatar);
var _person = require('material-ui/svg-icons/social/person');
var _person2 = _interopRequireDefault(_person);
var _Checkbox = require('material-ui/Checkbox');
var _Checkbox2 = _interopRequireDefault(_Checkbox);
var _ActionMenu = require('../ActionMenu');
var _ActionMenu2 = _interopRequireDefault(_ActionMenu);
var _styles = require('../MaterialTable/styles');
var _styles2 = _interopRequireDefault(_styles);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var getAvatarSrc = function getAvatarSrc(avatar, item) {
if (typeof avatar === 'function') {
return avatar(item);
} else if (typeof avatar === 'string') {
return (0, _selectn2.default)(avatar, item);
}
return undefined;
};
var TableBodyRow = function TableBodyRow(props) {
var actions = props.actions,
item = props.item,
itemUniqueId = props.itemUniqueId,
tableIdx = props.tableIdx,
avatar = props.avatar,
columns = props.columns,
displayColumn = props.displayColumn,
displayAvatar = props.displayAvatar,
handleSelect = props.handleSelect,
selections = props.selections,
actionsEnabled = props.actionsEnabled;
return _react2.default.createElement(
_Table.TableRow,
props,
_react2.default.createElement(
_Table.TableRowColumn,
{ style: _styles2.default.checkboxColumn },
_react2.default.createElement(_Checkbox2.default, {
'data-key': tableIdx,
checked: selections[tableIdx],
onCheck: handleSelect })
),
avatar && displayAvatar() && _react2.default.createElement(
_Table.TableRowColumn,
{ style: _styles2.default.smallColumn },
_react2.default.createElement(_Avatar2.default, {
src: getAvatarSrc(avatar, item),
icon: _react2.default.createElement(_person2.default, null) })
),
columns.map(function (column) {
if (!displayColumn(column)) return null;
var columnValue = (0, _selectn2.default)(column.key, item);
if (column.format) {
columnValue = column.format(columnValue, item);
}
return _react2.default.createElement(
_Table.TableRowColumn,
{ key: column.label, colSpan: column.colSpan },
_react2.default.createElement(
'span',
null,
columnValue || ''
)
);
}),
actionsEnabled && _react2.default.createElement(
_Table.TableRowColumn,
{ style: _styles2.default.smallColumn },
_react2.default.createElement(_ActionMenu2.default, {
actions: actions,
item: item,
itemId: item[itemUniqueId] })
)
);
};
exports.default = TableBodyRow;