nsn-comp
Version:
NSN核心组件
251 lines (218 loc) • 10.1 kB
JavaScript
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
import ProTable from '@ant-design/pro-table';
import { NConst } from 'nsn-const';
import { NLocale, NType } from 'nsn-util';
import React, { Component } from 'react';
import { DetailDrawer } from './DetailDrawer';
import { EditForm } from './EditForm';
import './index.less';
import { HeaderTitle, TableAlert } from './_comp';
import { conventToTree, getColumns, getToolBar, requestPage } from './_util';
var CLS_PREFIX = "".concat(NConst.CLS_PREFIX, "-table-page");
var Table = /*#__PURE__*/function (_Component) {
_inherits(Table, _Component);
var _super = _createSuper(Table);
function Table() {
var _this;
_classCallCheck(this, Table);
_this = _super.apply(this, arguments);
_this.state = {};
return _this;
}
_createClass(Table, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
requestPage(this); //
var mounted = this.props.mounted;
if (NType.isFunction(mounted)) {
mounted(this);
} else if (NType.isArray(mounted)) {
mounted.forEach(function (func) {
return func(_this2);
});
}
}
}, {
key: "render",
value: function render() {
var _this3 = this;
var _this$state = this.state,
densitySize = _this$state.densitySize,
expandedRowKeys = _this$state.expandedRowKeys,
page = _this$state.page,
editVisible = _this$state.editVisible,
detailVisible = _this$state.detailVisible;
var _this$props = this.props,
route = _this$props.route,
location = _this$props.location,
table = _this$props.table,
loading = _this$props.loading,
children = _this$props.children,
editForm = _this$props.editForm;
var emptyText = table.emptyText,
rowKey = table.rowKey,
search = table.search,
scroll = table.scroll,
_table$columnsProps = table.columnsProps,
columnsProps = _table$columnsProps === void 0 ? {} : _table$columnsProps,
pagination = table.pagination,
style = table.style,
className = table.className,
tree = table.tree,
pageConfig = table.page;
var _ref = page || {},
records = _ref.records,
current = _ref.current,
total = _ref.total,
pageSize = _ref.size;
var select = columnsProps.select,
option = columnsProps.option,
fixSelect = columnsProps.fixSelect;
var pageLoading = loading.effects[pageConfig];
if (!NType.isString(pageConfig)) {
pageLoading = loading.effects[pageConfig.dtype];
}
var showDetail = false;
if (option && !NType.isArray(option)) {
showDetail = !!option.showDetail;
}
if (pagination) {
Object.assign(pagination, {
current: current,
total: total,
pageSize: pageSize
});
}
var getCheckboxProps = undefined;
var selectType = 'checkbox';
if (select !== false) {
if (select && NType.isString(select)) {
selectType = select;
} else if (select) {
getCheckboxProps = select.getCheckboxProps;
}
}
return React.createElement("div", {
className: CLS_PREFIX
}, React.createElement(ProTable, Object.assign({}, {
search: search,
scroll: scroll
}, {
type: "table",
size: densitySize || 'small',
onSizeChange: function onSizeChange(size) {
return _this3.setState({
densitySize: size
});
},
columnEmptyText: emptyText || '-',
rowKey: rowKey || NConst.ID,
loading: pageLoading,
tableStyle: style,
tableClassName: className,
dataSource: tree ? conventToTree(records) : records,
options: {
reload: function reload() {
return requestPage(_this3);
}
},
columns: getColumns(this),
actionRef: function actionRef(ref) {
return _this3.setState({
searchActionRef: ref
});
},
formRef: function formRef(ref) {
return _this3.setState({
searchFormRef: ref
});
},
headerTitle: React.createElement(HeaderTitle, Object.assign({}, {
route: route
}, {
path: location === null || location === void 0 ? void 0 : location.pathname
})),
// 行选择
rowSelection: select !== false ? {
type: selectType,
fixed: fixSelect,
onSelectAll: function onSelectAll(_, selected) {
return _this3.setState({
selectedRows: selected
});
},
onSelect: function onSelect(_, __, selected) {
return _this3.setState({
selectedRows: selected
});
},
getCheckboxProps: getCheckboxProps
} : false,
// toolBarRender 渲染在 rowSelection 之后
// 当表格数据是树结构时 toolBarRender 中的 selectedRows 检测不到二级节点以下的选中状态
toolBarRender: function toolBarRender() {
return getToolBar(_this3);
},
// tableAlertRender 渲染在 toolBarRender 之后
tableAlertRender: function tableAlertRender(_ref2) {
var keys = _ref2.selectedRowKeys;
return React.createElement(TableAlert, Object.assign({}, {
keys: keys
}));
},
tableAlertOptionRender: function tableAlertOptionRender(_ref3) {
var onCleanSelected = _ref3.onCleanSelected;
return React.createElement("a", {
onClick: function onClick() {
onCleanSelected();
_this3.setState({
selectedRows: []
});
}
}, NLocale.getText('operation.clear.selected'));
},
onReset: function onReset() {
return requestPage(_this3);
},
onSubmit: function onSubmit() {
return requestPage(_this3);
},
onChange: function onChange(pagination, filters, sorter, extra) {
return requestPage(_this3, {
pagination: pagination,
filters: filters,
sorter: sorter,
extra: extra
});
},
pagination: tree ? false : pagination,
expandable: {
expandedRowKeys: expandedRowKeys,
onExpandedRowsChange: function onExpandedRowsChange(expanded) {
return _this3.setState({
expandedRowKeys: expanded
});
}
}
})), editForm && editVisible && React.createElement(EditForm, Object.assign({}, this.props, {
comp: this
})), showDetail && detailVisible && React.createElement(DetailDrawer, Object.assign({}, this.props, {
comp: this
})), NType.isFunction(children) ? children(this) : children);
}
}]);
return Table;
}(Component);
export default Table;
export { requestPage };