From a4576f3aafad85d443dace4fd8e2394cc07a3a85 Mon Sep 17 00:00:00 2001 From: zombiej Date: Fri, 27 May 2022 18:11:48 +0800 Subject: [PATCH 1/2] chore: tmp --- src/Panel.tsx | 73 ++++++++++++++++++++++++++------------------ tests/index.spec.tsx | 10 +++--- 2 files changed, 49 insertions(+), 34 deletions(-) diff --git a/src/Panel.tsx b/src/Panel.tsx index 4b3391a..b94af0b 100644 --- a/src/Panel.tsx +++ b/src/Panel.tsx @@ -19,7 +19,7 @@ class CollapsePanel extends React.Component { return !shallowEqual(this.props, nextProps); } - handleItemClick = () => { + onItemClick = () => { const { onItemClick, panelKey } = this.props; if (typeof onItemClick === 'function') { @@ -29,26 +29,57 @@ class CollapsePanel extends React.Component { handleKeyPress = (e: React.KeyboardEvent) => { if (e.key === 'Enter' || e.keyCode === 13 || e.which === 13) { - this.handleItemClick(); + this.onItemClick(); } }; + renderIcon = () => { + const { showArrow, expandIcon, prefixCls, collapsible } = this.props; + if (!showArrow) { + return null; + } + + const iconNode = + typeof expandIcon === 'function' ? expandIcon(this.props) : ; + + return ( + iconNode && ( +
+ {iconNode} +
+ ) + ); + }; + + renderTitle = () => { + const { header, prefixCls, collapsible } = this.props; + + return ( + + {header} + + ); + }; + render() { const { className, id, style, prefixCls, - header, headerClass, children, isActive, - showArrow, destroyInactivePanel, accordion, forceRender, openMotion, - expandIcon, extra, collapsible, } = this.props; @@ -56,10 +87,6 @@ class CollapsePanel extends React.Component { const disabled = collapsible === 'disabled'; const collapsibleHeader = collapsible === 'header'; - const headerCls = classNames(`${prefixCls}-header`, { - [headerClass]: headerClass, - [`${prefixCls}-header-collapsible-only`]: collapsibleHeader, - }); const itemCls = classNames( { [`${prefixCls}-item`]: true, @@ -69,7 +96,10 @@ class CollapsePanel extends React.Component { className, ); - let icon: any = ; + const headerCls = classNames(`${prefixCls}-header`, { + [headerClass]: headerClass, + [`${prefixCls}-header-collapsible-only`]: collapsibleHeader, + }); /** header 节点属性 */ const headerProps: React.HTMLAttributes = { @@ -78,17 +108,8 @@ class CollapsePanel extends React.Component { onKeyPress: this.handleKeyPress, }; - if (showArrow && typeof expandIcon === 'function') { - icon = expandIcon(this.props); - } - if (collapsibleHeader) { - icon = ( - this.handleItemClick()}> - {icon} - - ); - } else { - headerProps.onClick = this.handleItemClick; + if (!collapsibleHeader) { + headerProps.onClick = this.onItemClick; headerProps.role = accordion ? 'tab' : 'button'; headerProps.tabIndex = disabled ? -1 : 0; } @@ -98,14 +119,8 @@ class CollapsePanel extends React.Component { return (
- {showArrow && icon} - {collapsibleHeader ? ( - - {header} - - ) : ( - header - )} + {this.renderIcon()} + {this.renderTitle()} {ifExtraExist &&
{extra}
}
{ activeKey: ['2'], }; - constructor(props: any) { - super(props); + componentDidMount(): void { this.setState({ activeKey: ['2'], }); @@ -471,6 +470,7 @@ describe('collapse', () => { , ); + console.log('>>>', wrapper.find('.rc-collapse-header').html()); expect(wrapper.find('.rc-collapse-header').at(0).getDOMNode().childNodes.length).toBe(1); }); @@ -495,7 +495,7 @@ describe('collapse', () => { , ); - expect(collapse.find('.rc-collapse-header-text').exists()).toBeFalsy(); + expect(collapse.find('.rc-collapse-header-text').exists()).toBeTruthy(); collapse.find('.rc-collapse-header').simulate('click'); expect(collapse.find('.rc-collapse-item-active').length).toBe(1); }); @@ -522,7 +522,7 @@ describe('collapse', () => { , ); - expect(collapse.find('.rc-collapse-header-text').exists()).toBeFalsy(); + expect(collapse.find('.rc-collapse-header-text').exists()).toBeTruthy(); expect(collapse.find('.rc-collapse-item-disabled').length).toBe(1); @@ -538,7 +538,7 @@ describe('collapse', () => { , ); - expect(collapse.find('.rc-collapse-header-text').exists()).toBeFalsy(); + expect(collapse.find('.rc-collapse-header-text').exists()).toBeTruthy(); expect(collapse.find('.rc-collapse-item-disabled').length).toBe(1); From 3d90da8d04259b03bbd2258726509458a4f61191 Mon Sep 17 00:00:00 2001 From: zombiej Date: Fri, 27 May 2022 19:15:38 +0800 Subject: [PATCH 2/2] test: coverage --- tests/index.spec.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/index.spec.tsx b/tests/index.spec.tsx index c37bfdc..408b532 100644 --- a/tests/index.spec.tsx +++ b/tests/index.spec.tsx @@ -470,7 +470,6 @@ describe('collapse', () => { , ); - console.log('>>>', wrapper.find('.rc-collapse-header').html()); expect(wrapper.find('.rc-collapse-header').at(0).getDOMNode().childNodes.length).toBe(1); }); @@ -559,4 +558,16 @@ describe('collapse', () => { expect(collapse.find('.rc-collapse-item-active').length).toBe(1); }); }); + + it('!showArrow', () => { + const wrapper = mount( + + + first + + , + ); + + expect(wrapper.exists('.rc-collapse-expand-icon')).toBeFalsy(); + }); });