fix: expandIconAsCell={true},表格错行

This commit is contained in:
yangchch6 2019-12-11 17:09:59 +08:00
parent 721460bf42
commit a560c5151d
11 changed files with 784 additions and 646 deletions

View File

@ -274,6 +274,10 @@
display: inline-block; display: inline-block;
font-size: 12px; font-size: 12px;
line-height: 12px; } line-height: 12px; }
.u-table th .expand-icon-con .uf,
.u-table td .expand-icon-con .uf {
padding: 0;
font-size: 12px; }
.u-table-sm td { .u-table-sm td {
padding: 8px 8px; } padding: 8px 8px; }
.u-table-lg td { .u-table-lg td {

View File

@ -172,6 +172,8 @@ var defaultProps = {
showRowNum: false showRowNum: false
}; };
var expandIconCellWidth = Number(43);
var Table = function (_Component) { var Table = function (_Component) {
_inherits(Table, _Component); _inherits(Table, _Component);
@ -439,11 +441,13 @@ var Table = function (_Component) {
// console.log('this.scrollTop**********',this.scrollTop); // console.log('this.scrollTop**********',this.scrollTop);
}; };
Table.prototype.componentDidUpdate = function componentDidUpdate(prevProps) { Table.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
// fix: 挪到 componentWillReceiveProps 中处理,解决 ie11 滚动加载,导致浏览器崩溃的问题 // 展开行后追加了新的DOM必须在此阶段同步高度并重新渲染
// if (this.columnManager.isAnyColumnsFixed()) { if (this.state.expandedRowKeys.length > 0) {
// this.syncFixedTableRowHeight(); if (this.columnManager.isAnyColumnsFixed()) {
// } this.syncFixedTableRowHeight();
}
}
//适应模态框中表格、以及父容器宽度变化的情况 //适应模态框中表格、以及父容器宽度变化的情况
if (typeof this.props.scroll.x !== 'number' && this.contentTable.getBoundingClientRect().width !== this.contentDomWidth && this.firstDid) { if (typeof this.props.scroll.x !== 'number' && this.contentTable.getBoundingClientRect().width !== this.contentDomWidth && this.firstDid) {
this.computeTableWidth(); this.computeTableWidth();
@ -474,8 +478,9 @@ var Table = function (_Component) {
}; };
Table.prototype.computeTableWidth = function computeTableWidth() { Table.prototype.computeTableWidth = function computeTableWidth() {
var expandIconAsCell = this.props.expandIconAsCell;
//如果用户传了scroll.x按用户传的为主 //如果用户传了scroll.x按用户传的为主
var setWidthParam = this.props.scroll.x; var setWidthParam = this.props.scroll.x;
if (typeof setWidthParam == 'number') { if (typeof setWidthParam == 'number') {
@ -489,8 +494,9 @@ var Table = function (_Component) {
this.contentWidth = this.contentDomWidth; //默认与容器宽度一样 this.contentWidth = this.contentDomWidth; //默认与容器宽度一样
} }
var computeObj = this.columnManager.getColumnWidth(this.contentWidth); var computeObj = this.columnManager.getColumnWidth(this.contentWidth);
var expandColWidth = expandIconAsCell ? expandIconCellWidth : 0;
var lastShowIndex = computeObj.lastShowIndex; var lastShowIndex = computeObj.lastShowIndex;
this.computeWidth = computeObj.computeWidth; this.computeWidth = computeObj.computeWidth + expandColWidth;
this.domWidthDiff = this.contentDomWidth - this.computeWidth; this.domWidthDiff = this.contentDomWidth - this.computeWidth;
if (typeof setWidthParam == 'string' && setWidthParam.indexOf('%')) { if (typeof setWidthParam == 'string' && setWidthParam.indexOf('%')) {
@ -636,7 +642,8 @@ var Table = function (_Component) {
key: 'u-table-expandIconAsCell', key: 'u-table-expandIconAsCell',
className: clsPrefix + '-expand-icon-th', className: clsPrefix + '-expand-icon-th',
title: '', title: '',
rowSpan: rows.length rowSpan: rows.length,
width: expandIconCellWidth
}); });
} }
var trStyle = headerHeight && !fixed ? { height: headerHeight } : fixed ? this.getHeaderRowStyle(columns, rows) : null; var trStyle = headerHeight && !fixed ? { height: headerHeight } : fixed ? this.getHeaderRowStyle(columns, rows) : null;
@ -984,7 +991,8 @@ var Table = function (_Component) {
lazyStartIndex: lazyCurrentIndex, lazyStartIndex: lazyCurrentIndex,
lazyEndIndex: lazyEndIndex, lazyEndIndex: lazyEndIndex,
centerColumnsLength: this.centerColumnsLength, centerColumnsLength: this.centerColumnsLength,
leftColumnsLength: this.leftColumnsLength leftColumnsLength: this.leftColumnsLength,
expandIconCellWidth: expandIconCellWidth
}))); })));
this.treeRowIndex++; this.treeRowIndex++;
var subVisible = visible && isRowExpanded; var subVisible = visible && isRowExpanded;

View File

@ -571,7 +571,8 @@ var TableRow = function (_Component) {
collapsedIcon = _props9.collapsedIcon, collapsedIcon = _props9.collapsedIcon,
hoverKey = _props9.hoverKey, hoverKey = _props9.hoverKey,
lazyStartIndex = _props9.lazyStartIndex, lazyStartIndex = _props9.lazyStartIndex,
lazyEndIndex = _props9.lazyEndIndex; lazyEndIndex = _props9.lazyEndIndex,
expandIconCellWidth = _props9.expandIconCellWidth;
var showSum = false; var showSum = false;
var className = this.props.className; var className = this.props.className;
@ -609,7 +610,8 @@ var TableRow = function (_Component) {
'td', 'td',
{ {
className: clsPrefix + '-expand-icon-cell ' + isExpandIconAsCell, className: clsPrefix + '-expand-icon-cell ' + isExpandIconAsCell,
key: 'rc-table-expand-icon-cell-' + i key: 'rc-table-expand-icon-cell-' + i,
width: expandIconCellWidth
}, },
expandIcon expandIcon
)); ));

File diff suppressed because one or more lines are too long

4
dist/demo.css vendored
View File

@ -261,6 +261,10 @@
display: inline-block; display: inline-block;
font-size: 12px; font-size: 12px;
line-height: 12px; } line-height: 12px; }
.u-table th .expand-icon-con .uf,
.u-table td .expand-icon-con .uf {
padding: 0;
font-size: 12px; }
.u-table-sm td { .u-table-sm td {
padding: 8px 8px; } padding: 8px 8px; }
.u-table-lg td { .u-table-lg td {

2
dist/demo.css.map vendored

File diff suppressed because one or more lines are too long

1356
dist/demo.js vendored

File diff suppressed because one or more lines are too long

2
dist/demo.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -107,6 +107,8 @@ const defaultProps = {
showRowNum: false, showRowNum: false,
}; };
const expandIconCellWidth = Number(43);
class Table extends Component { class Table extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -241,11 +243,13 @@ class Table extends Component {
} }
componentDidUpdate(prevProps) { componentDidUpdate(prevProps, prevState) {
// fix: 挪到 componentWillReceiveProps 中处理,解决 ie11 滚动加载,导致浏览器崩溃的问题 // 展开行后追加了新的DOM必须在此阶段同步高度并重新渲染
// if (this.columnManager.isAnyColumnsFixed()) { if (this.state.expandedRowKeys.length > 0) {
// this.syncFixedTableRowHeight(); if(this.columnManager.isAnyColumnsFixed()) {
// } this.syncFixedTableRowHeight();
}
}
//适应模态框中表格、以及父容器宽度变化的情况 //适应模态框中表格、以及父容器宽度变化的情况
if (typeof (this.props.scroll.x) !== 'number' && this.contentTable.getBoundingClientRect().width !== this.contentDomWidth && this.firstDid) { if (typeof (this.props.scroll.x) !== 'number' && this.contentTable.getBoundingClientRect().width !== this.contentDomWidth && this.firstDid) {
this.computeTableWidth(); this.computeTableWidth();
@ -295,7 +299,7 @@ class Table extends Component {
} }
computeTableWidth() { computeTableWidth() {
let {expandIconAsCell} = this.props;
//如果用户传了scroll.x按用户传的为主 //如果用户传了scroll.x按用户传的为主
let setWidthParam = this.props.scroll.x let setWidthParam = this.props.scroll.x
@ -311,8 +315,9 @@ class Table extends Component {
} }
const computeObj = this.columnManager.getColumnWidth(this.contentWidth); const computeObj = this.columnManager.getColumnWidth(this.contentWidth);
const expandColWidth = expandIconAsCell ? expandIconCellWidth : 0;
let lastShowIndex = computeObj.lastShowIndex; let lastShowIndex = computeObj.lastShowIndex;
this.computeWidth = computeObj.computeWidth; this.computeWidth = computeObj.computeWidth + expandColWidth;
this.domWidthDiff = this.contentDomWidth - this.computeWidth; this.domWidthDiff = this.contentDomWidth - this.computeWidth;
if (typeof (setWidthParam) == 'string' && setWidthParam.indexOf('%')) { if (typeof (setWidthParam) == 'string' && setWidthParam.indexOf('%')) {
@ -449,6 +454,7 @@ class Table extends Component {
className: `${clsPrefix}-expand-icon-th`, className: `${clsPrefix}-expand-icon-th`,
title: '', title: '',
rowSpan: rows.length, rowSpan: rows.length,
width: expandIconCellWidth
}); });
} }
const trStyle = headerHeight&&!fixed ? { height: headerHeight } : (fixed ? this.getHeaderRowStyle(columns, rows) : null); const trStyle = headerHeight&&!fixed ? { height: headerHeight } : (fixed ? this.getHeaderRowStyle(columns, rows) : null);
@ -827,6 +833,7 @@ class Table extends Component {
lazyEndIndex = {lazyEndIndex} lazyEndIndex = {lazyEndIndex}
centerColumnsLength={this.centerColumnsLength} centerColumnsLength={this.centerColumnsLength}
leftColumnsLength={this.leftColumnsLength} leftColumnsLength={this.leftColumnsLength}
expandIconCellWidth={expandIconCellWidth}
/> />
); );
this.treeRowIndex++; this.treeRowIndex++;

View File

@ -182,6 +182,10 @@ $icon-color:#505F79;
display: inline-block; display: inline-block;
font-size: 12px; font-size: 12px;
line-height: 12px; line-height: 12px;
.uf{
padding: 0;
font-size: 12px;
}
} }
} }
&-sm { &-sm {

View File

@ -449,7 +449,7 @@ class TableRow extends Component{
clsPrefix, columns, record, height, visible, index, clsPrefix, columns, record, height, visible, index,
expandIconColumnIndex, expandIconAsCell, expanded, expandRowByClick,rowDraggAble, expandIconColumnIndex, expandIconAsCell, expanded, expandRowByClick,rowDraggAble,
expandable, onExpand, needIndentSpaced, indent, indentSize,isHiddenExpandIcon,fixed,bodyDisplayInRow expandable, onExpand, needIndentSpaced, indent, indentSize,isHiddenExpandIcon,fixed,bodyDisplayInRow
,expandedIcon,collapsedIcon, hoverKey,lazyStartIndex,lazyEndIndex ,expandedIcon,collapsedIcon, hoverKey,lazyStartIndex,lazyEndIndex, expandIconCellWidth
} = this.props; } = this.props;
let showSum = false; let showSum = false;
let { className } = this.props; let { className } = this.props;
@ -488,6 +488,7 @@ class TableRow extends Component{
<td <td
className={`${clsPrefix}-expand-icon-cell ${isExpandIconAsCell}`} className={`${clsPrefix}-expand-icon-cell ${isExpandIconAsCell}`}
key={`rc-table-expand-icon-cell-${i}`} key={`rc-table-expand-icon-cell-${i}`}
width={expandIconCellWidth}
> >
{expandIcon} {expandIcon}
</td> </td>