Skip to content

Commit eb2ba73

Browse files
committed
fix: preserve extra value semantics
1 parent 0f3d661 commit eb2ba73

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

‎src/Panel.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { clsx } from 'clsx';
22
import CSSMotion from '@rc-component/motion';
3-
import { isReactRenderable, KeyCode } from '@rc-component/util';
3+
import { isNonNullable, isReactRenderable, KeyCode } from '@rc-component/util';
44
import React from 'react';
55
import type { CollapsePanelProps } from './interface';
66
import PanelContent from './PanelContent';
@@ -30,7 +30,7 @@ const CollapsePanel = React.forwardRef<HTMLDivElement, CollapsePanelProps>((prop
3030

3131
const disabled = collapsible === 'disabled';
3232

33-
const ifExtraExist = isReactRenderable(extra);
33+
const ifExtraExist = isNonNullable(extra) && typeof extra !== 'boolean';
3434

3535
const collapsibleProps = {
3636
onClick: () => {

‎tests/index.spec.tsx‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,18 +205,25 @@ describe('collapse', () => {
205205
});
206206
});
207207

208-
it('should support extra whit number 0', () => {
208+
it.each([
209+
{ name: 'number zero', extra: 0, expected: true, content: '0' },
210+
{ name: 'empty string', extra: '', expected: true, content: '' },
211+
{ name: 'true', extra: true, expected: false },
212+
{ name: 'false', extra: false, expected: false },
213+
])('should preserve extra semantics for $name', ({ extra, expected, content }) => {
209214
const { container } = render(
210215
<Collapse onChange={onChange} activeKey={0}>
211-
<Panel header="collapse 0" key={0} extra={0}>
216+
<Panel header="collapse 0" key={0} extra={extra}>
212217
zero
213218
</Panel>
214219
</Collapse>,
215220
);
216221

217222
const extraNodes = container.querySelectorAll('.rc-collapse-extra');
218-
expect(extraNodes).toHaveLength(1);
219-
expect(extraNodes[0].innerHTML).toBe('0');
223+
expect(extraNodes).toHaveLength(expected ? 1 : 0);
224+
if (expected) {
225+
expect(extraNodes[0].innerHTML).toBe(content);
226+
}
220227
});
221228

222229
it('should support activeKey number 0', () => {

0 commit comments

Comments
 (0)