UNPKG

ukelli-ui

Version:

Base on React's UI lib. Make frontend's dev simpler and faster.

693 lines (692 loc) 32.6 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; import React from 'react'; import { Call, IsFunc, HasValue, DebounceClass } from 'basic-helper'; import classnames from 'classnames'; import MapperFilter from './mapper-filter'; import { Icon } from '../icon'; var isStringNumRegex = /\d+,?/; var exec = new DebounceClass().exec; var tdSpecClassMapper = { checkbox: 'check-td' }; var scrollLeftClass = 'scroll-to-left'; var scrollRightClass = 'scroll-at-right'; var breakWordClass = 'break-word'; var autoWidthClass = 'auto-width'; var tdMaxWidth = 400; var moneyFormat = function (text) { return (HasValue(text) ? text.toLocaleString('en-US') : '-'); }; var defaultSortIgnores = ['action', 'checkbox']; /** * 提供一个快速的表格数据渲染容器,不需要关注具体如何渲染,只需要传入对应的数据和过滤器 * * @export * @class Table * @extends {MapperFilter} */ var Table = /** @class */ (function (_super) { __extends(Table, _super); function Table(props) { var _this = _super.call(this, props) || this; _this.excludeFilterField = ['action', 'checkbox']; _this.firstTDDOMs = {}; _this.firstRowNodes = {}; _this.sameSortTime = 0; _this.fixedLeftGroup = []; _this.fixedRightGroup = []; _this.columnHeightInfo = {}; // componentDidUpdate() { // // this.calcSize(); // } /** * 清除所有已选择的内容 * * @memberof TableBody * @public */ _this.clearCheckeds = function () { _this.toggleAllItems(false); }; _this.handleClickToHighlight = function (e, rowIdx) { // if (e.currentTarget !== e.target) return; _this.setState(function (_a) { var highlightRow = _a.highlightRow; var nextState = __assign({}, highlightRow); nextState[rowIdx] = !nextState[rowIdx]; return { highlightRow: nextState }; }); }; _this.toggleSelectItem = function (item, idx) { var checkedItems = _this.state.checkedItems; var nextCheckedItems = __assign({}, checkedItems); if (nextCheckedItems[idx]) { delete nextCheckedItems[idx]; } else { nextCheckedItems[idx] = item; } _this.selectItems(nextCheckedItems, idx); }; _this.getCheckbox = function (str, item, mapper, idx) { var checkedItems = _this.state.checkedItems; var checked = !!checkedItems[idx]; return (React.createElement("input", { type: "checkbox", checked: checked, onChange: function (e) { return _this.toggleSelectItem(item, idx); } })); }; _this.getKeyMapper = function () { var needCheck = _this.props.needCheck; var columns = _this.getColumns(); var result = columns; if (needCheck) { var fixedLeft = columns[0].fixed === 'left'; var checkExtend = Object.assign({}, fixedLeft ? { fixed: 'left' } : {}, { key: 'checkbox', // w: checkWidth, filter: _this.getCheckbox }); result = __spreadArrays([checkExtend], columns); } _this.saveFixedGroup(result); return result; }; _this.saveFixedGroup = function (columns) { if (_this.hadSaved) return; _this.hadSaved = true; var _a = _this.props, _b = _a.fixedRightKeys, fixedRightKeys = _b === void 0 ? [] : _b, _c = _a.fixedLeftKeys, fixedLeftKeys = _c === void 0 ? [] : _c; columns.forEach(function (item, idx) { var key = item.key, fixed = item.fixed; var nextItem = __assign(__assign({}, item), { idx: idx }); switch (true) { case fixedLeftKeys.indexOf(key) !== -1: case fixed === 'left': _this.fixedLeftGroup.push(nextItem); break; case fixedRightKeys.indexOf(key) !== -1: case fixed === 'right': _this.fixedRightGroup.push(nextItem); break; } }); }; _this.setTableContainerClass = function (isAutoWidth) { if (_this.tableContainer) _this.tableContainer.classList.toggle(autoWidthClass, isAutoWidth); }; _this.resetTableDOMInfo = function () { _this.tableContainerWidth = _this.tableContainer.offsetWidth; }; _this.resizeCalcSize = function () { if (!_this.tableContainer) return; var tableWidth = _this.state.tableWidth; if (tableWidth !== 'auto' && tableWidth < _this.tableContainer.offsetWidth) { _this.setTableContainerClass(true); _this.setState({ tableWidth: 'auto', isAutoWidth: true }, function () { return _this.calcSize(_this.firstRowNodes); }); } else { _this.calcSize(_this.firstRowNodes); } setTimeout(function () { _this.resetTableDOMInfo(); }, 100); }; _this.onChangeRecords = function () { setTimeout(function () { _this.reSaveFirstRow(); _this.resizeCalcSize(); }, 10); }; _this.isHidden = function (el) { return el && el.offsetParent === null; }; _this.initTableContainer = function (e) { _this.tableContainer = e; if (e) { _this.tableContainerWidth = e.offsetWidth; setTimeout(function () { e.classList.add('ready'); if (e && _this.state.tableWidth === 'auto') { e.classList.add(scrollRightClass); } }, 100); } _this.calcSize(_this.firstRowNodes); }; _this.clearWatch = function () { _this.desplayWatcher && clearTimeout(_this.desplayWatcher); }; _this.saveContainer = function (e) { /** 检测表格元素是否被隐藏了,如果被隐藏了,则设置监听器监听显示变化 */ _this.clearWatch(); var isHide = _this.isHidden(e); var _a = _this.props, records = _a.records, watcherTimer = _a.watcherTimer; var hasRecord = records.length > 0; if (!hasRecord || isHide) { _this.desplayWatcher = setTimeout(function () { _this.saveContainer(e); }, watcherTimer); } else { _this.initTableContainer(e); _this.desplayWatcher = null; } }; _this.getRowKey = function (record, idx) { var rowKey = _this.props.rowKey; var key; if (rowKey) { if (IsFunc(rowKey)) { key = rowKey(record, idx); } else if (typeof rowKey == 'string') { key = record[rowKey] || idx; } } else { key = idx; exec(function () { return console.warn('需要设置 rowKey,为每一行设置唯一 key'); }, 1000); } return key; }; _this.saveCell = function (idx, isMain, rowKey) { return function (tdDOM) { if (tdDOM && tdDOM.offsetWidth >= tdMaxWidth) tdDOM.classList.add(breakWordClass); if (tdDOM && isMain && idx === 0) { _this.columnHeightInfo[rowKey] = tdDOM.offsetHeight; } if (tdDOM && !isMain) { // eslint-disable-next-line no-param-reassign tdDOM.style.height = _this.columnHeightInfo[rowKey] + "px"; } }; }; // eslint-disable-next-line consistent-return _this.checkRightAlign = function (mapperItem) { var _a = _this.props.alignRightTypes, alignRightTypes = _a === void 0 ? [] : _a; for (var _i = 0, alignRightTypes_1 = alignRightTypes; _i < alignRightTypes_1.length; _i++) { var rightAlignItem = alignRightTypes_1[_i]; // eslint-disable-next-line no-prototype-builtins if (mapperItem.hasOwnProperty(rightAlignItem)) { return true; // eslint-disable-next-line no-continue } continue; } }; _this.handleHoverRow = function (idx) { _this.setState({ hoveringRow: idx }); }; _this.renderRow = function (options) { var clickToHighlight = _this.props.clickToHighlight; var records = options.records, other = __rest(options, ["records"]); var _a = _this.state, hoveringRow = _a.hoveringRow, highlightRow = _a.highlightRow; return records.map(function (record, idx) { if (!record) return; var _a = record._highlight, _highlight = _a === void 0 ? '' : _a; var key = _this.getRowKey(record, idx); var isHighlight = !!highlightRow[idx]; var isHoving = hoveringRow === idx; // eslint-disable-next-line consistent-return return (React.createElement("tr", { key: key, onMouseEnter: function () { return _this.handleHoverRow(idx); }, onClick: clickToHighlight ? function (e) { return _this.handleClickToHighlight(e, idx); } : undefined, className: "" + _highlight + (isHoving ? ' hovering' : '') + (isHighlight ? ' highlight' : '') }, _this.renderCell(__assign({ rowKey: key, record: record, parentIdx: idx }, other)))); }); }; _this.calcTableWidth = function (columns) { var headerWidthMapper = _this.state.headerWidthMapper; if (headerWidthMapper.length === 0) return null; var res = 0; columns.forEach(function (mapper, _idx) { var idx = mapper.idx; var __idx = idx || _idx; // if(fixed == 'right') { // console.log([[...headerWidthMapper].reverse()], idx) // res += [[...headerWidthMapper].reverse()][idx]; // } else { res += headerWidthMapper[__idx]; // } }); return res; }; _this.renderTableHeader = function (options) { var needInnerSort = _this.props.needInnerSort; var _a = _this.state, headerWidthMapper = _a.headerWidthMapper, sortField = _a.sortField, sortOutsideField = _a.sortOutsideField, isDescInner = _a.isDescInner, isDescOutside = _a.isDescOutside; var columns = options.columns, isAllCheck = options.isAllCheck; var style = { width: _this.calcTableWidth(columns) || undefined }; var isDesc = typeof isDescOutside == 'undefined' ? isDescInner : isDescOutside; return (React.createElement("div", { key: "tableHead", className: "__table-scroll", style: style }, React.createElement("table", { className: "table nomargin table-header" }, React.createElement("thead", null, React.createElement("tr", null, columns.map(function (item, _idx) { if (!item) return; // const { key, w } = item; // const cellWidth = w || headerWidthMapper[idx]; var key = item.key, idx = item.idx, onSort = item.onSort; var __idx = idx || _idx; var cellWidth = headerWidthMapper[__idx]; var needSort = needInnerSort || onSort; var isRightAlign = _this.checkRightAlign(item); var title; if (key === 'checkbox') { title = (React.createElement("input", { type: "checkbox", checked: isAllCheck, onChange: function (e) { return _this.toggleAllItems(e.target.checked); } })); } else { title = _this.titleFilter(item, __idx); } var isOrdering = onSort ? sortOutsideField === key : sortField === key; var canOrder = needSort && !_this.ignoreFilter(key); var sortTip = canOrder && (React.createElement("span", { className: "sort-caret-group " + (isDesc ? 'desc' : 'asc') }, React.createElement("span", { className: "caret up", style: { transform: "rotate(180deg)" } }), React.createElement("span", { className: "caret down" }))); var clickHandlerForTh = needSort ? { onClick: function () { if (IsFunc(onSort)) { var _isDesc = onSort(item, isDescOutside); _this.setState({ isDescOutside: !!_isDesc, sortOutsideField: key }); } else { _this.orderRecord(key); } } } : {}; var _className = classnames(isOrdering && (isDesc ? '_desc' : '_asc'), canOrder && '_order _btn', isRightAlign && 'right'); // eslint-disable-next-line consistent-return return (React.createElement("th", __assign({ className: _className, key: key }, clickHandlerForTh, { style: { width: cellWidth } }), title, sortTip)); })))))); }; _this.reSaveFirstRow = function () { _this.firstRowNodes = _this.mainTableBody ? _this.mainTableBody.querySelectorAll('tbody tr:first-child td') : null; }; _this.saveTableBody = function (t) { _this.mainTableBody = t; _this.firstRowNodes = t ? t.querySelectorAll('tbody tr:first-child td') : null; t && _this.calcSize(_this.firstRowNodes); }; _this.hasFixedGroup = function () { return _this.leftFixedTable || _this.rightFixedTable; }; _this.renderTableBody = function (options) { var _a = _this.props, height = _a.height, needCount = _a.needCount; var _b = _this.state, tableWidth = _b.tableWidth, isAutoWidth = _b.isAutoWidth; var hasRecord = options.hasRecord, columns = options.columns, ref = options.ref, main = options.main; // const hasFixedTable = this.hasFixedGroup(); /** 统计字段,每一次统计都是一个新对象 */ var statistics = { _highlight: 'theme', id: 'statistics' }; var style = Object.assign({}, { height: height, width: isAutoWidth ? tableWidth : _this.calcTableWidth(columns) }); return hasRecord ? (React.createElement("div", { key: "tableBody", onScroll: _this.handleTableScroll, ref: ref, className: "__table-scroll", style: style }, React.createElement("table", { className: "table nomargin table-body", ref: main ? _this.saveTableBody : null }, React.createElement("tbody", null, _this.renderRow(__assign(__assign({}, options), { needCount: needCount, /** 在渲染 body 的时候会做数据统计,以 statistics 对象做记录 */ statistics: statistics }))), needCount && (React.createElement("tfoot", null, _this.renderRow(__assign(__assign({}, options), { records: [statistics], needAction: false, filter: moneyFormat }))))))) : main && (React.createElement("span", { className: "no-record-tip" }, React.createElement(Icon, { n: "noData" }), React.createElement("span", { className: "text" }, _this.$T_UKE('暂无记录')))); }; _this.renderTable = function (options, key) { var className = options.className, style = options.style; var tableHeader = _this.renderTableHeader(options); var tableBody = _this.renderTableBody(options); return (React.createElement("div", { key: key, style: style, className: "__table-scroll-container " + (className || '') }, tableHeader, tableBody)); }; _this.saveDOM = function (ref) { return function (e) { _this[ref] = e; }; }; _this.saveLeftFixed = function (e) { _this.leftFixedTable = e; }; _this.saveRightFixed = function (e) { _this.rightFixedTable = e; }; _this.saveMainTable = function (e) { _this.mainTable = e; }; _this.renderFixedGroup = function (options) { var hasLeft = _this.fixedLeftGroup.length > 0; var hasRight = _this.fixedRightGroup.length > 0; var leftFixedTable = hasLeft && _this.renderTable(__assign(__assign({}, options), { className: 'table-fixed left', columns: _this.fixedLeftGroup, ref: _this.saveLeftFixed }), 'table-fixed-left'); var rightFixedTable = hasRight && _this.renderTable(__assign(__assign({}, options), { className: 'table-fixed right', ref: _this.saveRightFixed, columns: _this.fixedRightGroup }), 'table-fixed-right'); return !hasLeft && !hasRight ? null : [ leftFixedTable, rightFixedTable ]; }; _this.renderMainTable = function (options) { return _this.renderTable(__assign(__assign({}, options), { main: true, ref: _this.saveMainTable }), 'mainTable'); }; _this.handleTableScroll = function (e) { var target = e.target; if (e.currentTarget !== target) return; var currScrollOffset = target.scrollTop; if (currScrollOffset === _this.lastScrollTop) return; var _a = _this, rightFixedTable = _a.rightFixedTable, leftFixedTable = _a.leftFixedTable, mainTable = _a.mainTable; if (target !== leftFixedTable && leftFixedTable) { leftFixedTable.scrollTop = currScrollOffset; } if (target !== rightFixedTable && rightFixedTable) { rightFixedTable.scrollTop = currScrollOffset; } if (target !== mainTable && mainTable) { mainTable.scrollTop = currScrollOffset; } _this.lastScrollTop = currScrollOffset; _this.scrollY = currScrollOffset; }; _this.handleScrollHor = function (e) { // this.calcScroll(e, 'scrollLeft'); var target = e.target; if (e.currentTarget !== target) return; var scrollLeft = target.scrollLeft; if (scrollLeft === _this.lastScrollTop) return; var tableWidth = _this.state.tableWidth; var scrollLeftEndPoint = typeof tableWidth == 'number' ? tableWidth - _this.tableContainerWidth : 0; if (scrollLeft > 0) { target.classList.add(scrollLeftClass); } else { target.classList.remove(scrollLeftClass); } if (scrollLeft === scrollLeftEndPoint) { target.classList.add(scrollRightClass); } else { target.classList.remove(scrollRightClass); } _this.lastScrollLeft = scrollLeft; _this.scrollX = scrollLeft; }; _this.state = { headerWidthMapper: [], tableWidth: 'auto', sortField: '', sortOutsideField: '', isDescInner: false, isDescOutside: undefined, hoveringRow: undefined, isAutoWidth: undefined, highlightRow: {}, checkedItems: {}, }; return _this; } Table.prototype.componentDidMount = function () { window.addEventListener('resize', this.resizeCalcSize); if (this.props.whenCheckAction) { console.warn('whenCheckAction 即将废弃,请使用 checkedOverlay'); } // this.calcSize(); }; Table.prototype.componentWillUnmount = function () { window.removeEventListener('resize', this.resizeCalcSize); this.clearWatch(); }; Table.prototype.toggleAllItems = function (allCheck) { var checkedItems = this.state.checkedItems; var nextCheckedItems = __assign({}, checkedItems); if (!allCheck) { nextCheckedItems = {}; } else { this.props.records.forEach(function (item, idx) { nextCheckedItems[idx] = item; }); } this.selectItems(nextCheckedItems); }; Table.prototype.selectItems = function (nextState, idx) { var onCheck = this.props.onCheck; this.checkedItems = nextState; this.setState({ checkedItems: nextState }); Call(onCheck, nextState, idx); }; Table.prototype.calcSize = function (firstRowNodes) { if (!this.tableContainer || !firstRowNodes) return; // if(Object.keys(this.firstTDDOMs).length === 0) return; var cellsLen = firstRowNodes.length; var headerWidthMapper = this.state.headerWidthMapper; var nextHeaderWidthMapper = []; var nextContainerWidth = 0; for (var i = 0; i < cellsLen; i++) { var currCell = firstRowNodes[i]; var currCellWidth = currCell.offsetWidth || headerWidthMapper[i]; if (currCellWidth) { nextHeaderWidthMapper[i] = currCellWidth; nextContainerWidth += nextHeaderWidthMapper[i]; } } if (nextHeaderWidthMapper.join(',') !== headerWidthMapper.join(',')) { var tableContainerWidth = this.tableContainer.offsetWidth; var isTableMoreContainer = nextContainerWidth > tableContainerWidth; var isAutoWidth = !isTableMoreContainer; this.setTableContainerClass(isAutoWidth); this.setState({ headerWidthMapper: nextHeaderWidthMapper, // tableWidth: nextContainerWidth tableWidth: isTableMoreContainer ? nextContainerWidth : 'auto', isAutoWidth: !isTableMoreContainer }); } }; Table.prototype.ignoreFilter = function (str) { return defaultSortIgnores.concat(this.props.sortIgnores || []).indexOf(str) !== -1; }; Table.prototype.recordsOrderFilter = function () { var _a = this.state, sortField = _a.sortField, isDescInner = _a.isDescInner; var records = this.props.records; if (!sortField) return records; var result = __spreadArrays(records); result.sort(function (itemPrev, itemNext) { var sortTargetPrev = itemPrev[sortField]; var sortTargetNext = itemNext[sortField]; var res; if (typeof sortTargetPrev == 'string') { res = sortTargetPrev.localeCompare(sortTargetNext); } else if (typeof sortTargetPrev == 'number') { res = sortTargetPrev - +sortTargetNext; } return isDescInner ? res : res * -1; }); return result; }; Table.prototype.orderRecord = function (_orderKey) { var _this = this; var orderKey = _orderKey; if (this.ignoreFilter(orderKey)) return; this.setState(function (_a) { var isDescInner = _a.isDescInner, sortField = _a.sortField; var _isDesc = isDescInner; if (sortField === orderKey) { _this.sameSortTime += 1; if (_this.sameSortTime === 2) { _isDesc = false; orderKey = ''; _this.sameSortTime = 0; } else { _isDesc = !_isDesc; } } else { _this.sameSortTime = 0; _isDesc = false; } return { sortField: orderKey, isDescInner: _isDesc }; }); }; Table.prototype.renderCell = function (options) { var _this = this; var record = options.record, parentIdx = options.parentIdx, needCount = options.needCount, rowKey = options.rowKey, columns = options.columns, _a = options.needAction, needAction = _a === void 0 ? true : _a, filter = options.filter, statistics = options.statistics, main = options.main; if (!record) return null; // const columns = this.getKeyMapper(); var keyMapperLen = columns.length; var result = []; var _loop_1 = function (_idx) { var mapperItem = columns[_idx]; // eslint-disable-next-line no-continue if (!mapperItem) return "continue"; var key = mapperItem.key, className = mapperItem.className, _a = mapperItem.count, count = _a === void 0 ? true : _a; var isRightAlign = this_1.checkRightAlign(mapperItem); var currText = record[key]; var needFilter = needAction || this_1.excludeFilterField.indexOf(key) === -1; /** 优先使用 options 传入的 filter 作为过滤器,其次为 this.mapperFilter */ var filterRes = '-'; if (IsFunc(filter)) { filterRes = filter(currText); } else if (needFilter) { filterRes = this_1.mapperFilter(mapperItem, record, parentIdx); } if (needCount) { /** * 进入统计流程 * 1. 判断原始值 currText 是否为数字 * 2. 判断当前记录是否需要纳入统计 count */ var isNum = !isNaN(+currText) || isStringNumRegex.test(currText); if (count && isNum) { // 这里是处理累加的逻辑,如果为字符串的字段,则先把逗号去除 var isNumbTxt = +(("" + filterRes).replace(',', '')); if (!isNaN(isNumbTxt) && typeof isNumbTxt === 'number') { statistics[key] = (statistics[key] || 0) + isNumbTxt; } } } var tdKey = rowKey + "_" + key; // let style = {}; var _className = (tdSpecClassMapper[key] || '') + " " + (className || '') + " " + (isRightAlign ? 'right' : ''); var tdDOM = (React.createElement("td", { ref: function (e) { return _this.saveCell(_idx, main, rowKey)(e); }, // style={mapperItem.w ? {width: mapperItem.w, whiteSpace: 'pre-wrap'} : style} className: _className, key: tdKey }, filterRes)); result.push(tdDOM); }; var this_1 = this; for (var _idx = 0; _idx < keyMapperLen; _idx++) { _loop_1(_idx); } return result; }; Table.prototype.render = function () { var _this = this; var _a = this.props, whenCheckAction = _a.whenCheckAction, needCheck = _a.needCheck, checkedOverlay = _a.checkedOverlay; var checkedItems = this.state.checkedItems; var records = this.recordsOrderFilter(); var hasRecord = records.length > 0; var columns = this.getKeyMapper(); var checkedItemLen = Object.keys(checkedItems).length; var hasChecked = checkedItemLen > 0; var isAllCheck = hasRecord && (checkedItemLen === records.length); var _checkedOverlay = checkedOverlay || whenCheckAction; var renderTableConfig = { hasRecord: hasRecord, columns: columns, records: records, isAllCheck: isAllCheck }; var mainTable = this.renderMainTable(renderTableConfig); var fixedGroup = this.renderFixedGroup(renderTableConfig); var extendDOM = needCheck && _checkedOverlay && (React.createElement("div", { className: "checked-actions" + (hasChecked ? ' show' : '') }, React.createElement("span", { className: "mr10" }, React.createElement("span", { className: "mr10" }, this.$T_UKE('已选'), " ", React.createElement("span", { className: "t_theme" }, checkedItemLen), " ", this.$T_UKE('项')), React.createElement("span", { className: "link", onClick: this.clearCheckeds }, this.$T_UKE('清除'))), typeof _checkedOverlay === 'function' ? _checkedOverlay({ checkedItems: checkedItems, clearCheckeds: this.clearCheckeds }) : _checkedOverlay)); return (React.createElement("div", { className: "__table", onMouseLeave: function (e) { return _this.handleHoverRow(null); } }, extendDOM, React.createElement("div", { className: "table-render", onScroll: this.handleScrollHor, ref: this.saveContainer }, mainTable, fixedGroup))); }; Table.defaultProps = { sortIgnores: [], fixedLeftKeys: [], fixedRightKeys: [], alignRightTypes: ['money'], needCheck: false, clickToHighlight: false, height: 'auto', needInnerSort: false, watcherTimer: 1000, fixHead: true, checkWidth: 30, needCount: false, }; return Table; }(MapperFilter)); export default Table;