shradmin
Version:
A frontend Framework for building admin application, using antd and mirrorjs.
111 lines (90 loc) • 3.44 kB
JavaScript
'use strict';
exports.__esModule = true;
var _style2 = require('antd/lib/table/style');
var _table = require('antd/lib/table');
var _table2 = _interopRequireDefault(_table);
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _inflection = require('inflection');
var _inflection2 = _interopRequireDefault(_inflection);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var DataTable = function DataTable(_ref) {
var model = _ref.model,
data = _ref.data,
children = _ref.children,
translate = _ref.translate,
rowKey = _ref.rowKey,
params = _ref.params,
total = _ref.total,
setParams = _ref.setParams,
rest = _objectWithoutProperties(_ref, ['model', 'data', 'children', 'translate', 'rowKey', 'params', 'total', 'setParams']);
var columns = [];
_react2.default.Children.forEach(children, function (child, index) {
if (child) {
var _child$props = child.props,
source = _child$props.source,
columnProps = _child$props.columnProps;
columns.push(_extends({
title: source ? translate('models.' + model + '.fields.' + source, { _: _inflection2.default.humanize(source) }) : "",
dataIndex: source,
key: index,
render: function render(value, record) {
return _react2.default.cloneElement(child, {
record: record,
model: model
});
}
}, columnProps));
}
});
var handleChange = function handleChange(pagination, filters, sorter) {
var newParams = {
_page: pagination.current,
_limit: pagination.pageSize
};
if (sorter.field && sorter.order !== false) {
newParams._sort = sorter.field;
newParams._order = sorter.order === "descend" ? "desc" : "asc";
} else {
newParams._sort = null;
newParams._order = "asc";
}
setParams(newParams);
};
return _react2.default.createElement(
'div',
{ style: { margin: "16px 0" } },
_react2.default.createElement(_table2.default, _extends({}, rest, {
rowKey: rowKey,
dataSource: data,
columns: columns,
onChange: handleChange,
pagination: {
total: total,
current: parseInt(params._page, 10),
pageSize: parseInt(params._limit, 10)
}
}))
);
};
DataTable.defaultProps = {
data: [],
rowKey: "id",
params: {},
total: 0
};
DataTable.propTypes = process.env.NODE_ENV !== "production" ? {
model: _propTypes2.default.string,
data: _propTypes2.default.array,
translate: _propTypes2.default.func,
rowKey: _propTypes2.default.string,
params: _propTypes2.default.object,
total: _propTypes2.default.number,
setParams: _propTypes2.default.func
} : {};
exports.default = DataTable;
module.exports = exports['default'];