From 2c033c41caf7e93b7cba63059d54b66152724632 Mon Sep 17 00:00:00 2001 From: YiJie <51358815+NWYLZW@users.noreply.github.com> Date: Mon, 27 Nov 2023 09:53:59 +0800 Subject: [PATCH] fix(Tree): node open state class condition error (#2611) * fix(tree): node open state class condition error * feat(tree): unit test `node-open` class render logic --- src/tree/TreeItem.tsx | 4 +++- src/tree/__tests__/tree.test.tsx | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/tree/TreeItem.tsx b/src/tree/TreeItem.tsx index 2f7b70a89..6741a386a 100644 --- a/src/tree/TreeItem.tsx +++ b/src/tree/TreeItem.tsx @@ -340,7 +340,9 @@ const TreeItem = forwardRef( data-value={node.value} data-level={level} className={classNames(treeClassNames.treeNode, { - [treeClassNames.treeNodeOpen]: node.expanded, + [treeClassNames.treeNodeOpen]: + node.expanded && + (typeof node.data.children === 'boolean' ? node.data.children : node.data.children !== undefined), [treeClassNames.actived]: node.isActivable() ? node.actived : false, [treeClassNames.disabled]: node.isDisabled(), [treeClassNames.treeNodeDraggable]: node.isDraggable(), diff --git a/src/tree/__tests__/tree.test.tsx b/src/tree/__tests__/tree.test.tsx index 4cafa5dad..2dea5c054 100644 --- a/src/tree/__tests__/tree.test.tsx +++ b/src/tree/__tests__/tree.test.tsx @@ -197,6 +197,20 @@ describe('Tree test', () => { expect(onChangeFn1).not.toHaveBeenCalled(); }); + it('should calculate right class of tree item.', async () => { + const { container } = await renderTreeWithProps({ + expanded: [1, '1-2', '1-2', 2], + }); + + await mockDelay(300); + const allItems = container.querySelectorAll('.t-tree__item'); + expect(allItems.length).toBe(4); + const nodeOpenItems = container.querySelectorAll('.t-tree__item--open'); + // only set expanded when node has children + // or children is `true` when the tree is lazy + expect(nodeOpenItems.length).toBe(1); + }); + test('props.line', async () => { const data = [ {