From ce14414a0cb9d65ec389a5d9f01572ee37bc1e14 Mon Sep 17 00:00:00 2001 From: "zengguhao.zgh" Date: Wed, 5 Jan 2022 11:11:02 +0800 Subject: [PATCH] fix: antd #33453 fix the table tree hover error --- src/Body/BodyRow.tsx | 3 +++ src/Body/index.tsx | 3 ++- src/Cell/index.tsx | 7 +++++-- tests/Table.spec.js | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/Body/BodyRow.tsx b/src/Body/BodyRow.tsx index 5f307cad6..9cde73526 100644 --- a/src/Body/BodyRow.tsx +++ b/src/Body/BodyRow.tsx @@ -16,6 +16,7 @@ import ExpandedRow from './ExpandedRow'; export interface BodyRowProps { record: RecordType; index: number; + renderIndex: number; className?: string; style?: React.CSSProperties; recordKey: Key; @@ -38,6 +39,7 @@ function BodyRow( style, record, index, + renderIndex, rowKey, rowExpandable, expandedKeys, @@ -165,6 +167,7 @@ function BodyRow( key={key} record={record} index={index} + renderIndex={renderIndex} dataIndex={dataIndex} render={render} shouldCellUpdate={column.shouldCellUpdate} diff --git a/src/Body/index.tsx b/src/Body/index.tsx index 640cc2345..6fecb2086 100644 --- a/src/Body/index.tsx +++ b/src/Body/index.tsx @@ -71,7 +71,8 @@ function Body({ rowKey={key} record={record} recordKey={key} - index={renderIndex} + index={idx} + renderIndex={renderIndex} rowComponent={trComponent} cellComponent={tdComponent} expandedKeys={expandedKeys} diff --git a/src/Cell/index.tsx b/src/Cell/index.tsx index 6e70895cf..a1a83286e 100644 --- a/src/Cell/index.tsx +++ b/src/Cell/index.tsx @@ -43,8 +43,10 @@ interface InternalCellProps prefixCls?: string; className?: string; record?: RecordType; - /** `record` index. Not `column` index. */ + /** `column` index is the real show rowIndex */ index?: number; + /** the index of the record. For the render(value, record, renderIndex) */ + renderIndex?: number; dataIndex?: DataIndex; render?: ColumnType['render']; component?: CustomizeComponent; @@ -89,6 +91,7 @@ function Cell( className, record, index, + renderIndex, dataIndex, render, children, @@ -131,7 +134,7 @@ function Cell( // Customize render node childNode = value; if (render) { - const renderData = render(value, record, index); + const renderData = render(value, record, renderIndex); if (isRenderCell(renderData)) { if (process.env.NODE_ENV !== 'production') { diff --git a/tests/Table.spec.js b/tests/Table.spec.js index b5a703fb6..8c80595a5 100644 --- a/tests/Table.spec.js +++ b/tests/Table.spec.js @@ -988,4 +988,36 @@ describe('Table.Basic', () => { expect(trs.at(4).find('Cell').at(1).text()).toEqual('0'); expect(trs.at(5).find('Cell').at(1).text()).toEqual('1'); }); + + it('hover the tree table', () => { + const tColumns = [ + { + title: 'Key', + dataIndex: 'key', + }, + ]; + + const tData = [ + { key: 'row0', children: [{ key: 'row0-0' }, { key: 'row0-1' }] }, + { key: 'row1', children: [{ key: 'row1-0' }, { key: 'row1-1' }] }, + ]; + const wrapper = mount( + , + ); + + const trs = wrapper.find('tr.rc-table-row'); + + trs.forEach((tr, index) => { + tr.find('td.rc-table-cell').at(0).simulate('mouseEnter'); + const currentClassName = wrapper + .find('tr.rc-table-row') + .at(index) + .find('td.rc-table-cell') + .at(0) + .getElement().props.className; + + expect(currentClassName.includes('rc-table-cell-row-hover')).toEqual(true); + expect(wrapper.find('td.rc-table-cell-row-hover')).toHaveLength(1); + }); + }); });