11import classNames from 'classnames' ;
22import useMergedState from 'rc-util/lib/hooks/useMergedState' ;
3+ import warning from 'rc-util/lib/warning' ;
34import React from 'react' ;
45import useItems from './hooks/useItems' ;
56import type { CollapseProps } from './interface' ;
@@ -22,6 +23,7 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
2223 style,
2324 accordion,
2425 className,
26+ children,
2527 collapsible,
2628 openMotion,
2729 expandIcon,
@@ -72,57 +74,6 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
7274 activeKey,
7375 } ) ;
7476
75- // eslint-disable-next-line @typescript-eslint/no-shadow
76- const convertItemsToNodes = ( items : ItemType [ ] ) =>
77- items . map ( ( item , index ) => {
78- const {
79- children,
80- key : rawKey ,
81- collapsible : rawCollapsible ,
82- onItemClick : rawOnItemClick ,
83- destroyInactivePanel : rawDestroyInactivePanel ,
84- expandIcon : rawExpandIcon = expandIcon ,
85- ...restProps
86- } = item ;
87-
88- // You may be puzzled why you want to convert them all into strings, me too.
89- // Maybe: https://github.com/react-component/collapse/blob/aac303a8b6ff30e35060b4f8fecde6f4556fcbe2/src/Collapse.tsx#L15
90- const key = String ( rawKey ?? index ) ;
91- const mergeCollapsible = rawCollapsible ?? collapsible ;
92- const mergeDestroyInactivePanel = rawDestroyInactivePanel ?? destroyInactivePanel ;
93-
94- const handleItemClick = ( value : React . Key ) => {
95- if ( mergeCollapsible === 'disabled' ) return ;
96- onClickItem ( value ) ;
97- rawOnItemClick ?.( value ) ;
98- } ;
99-
100- let isActive = false ;
101- if ( accordion ) {
102- isActive = activeKey [ 0 ] === key ;
103- } else {
104- isActive = activeKey . indexOf ( key ) > - 1 ;
105- }
106-
107- return (
108- < CollapsePanel
109- prefixCls = { prefixCls }
110- key = { key }
111- panelKey = { key }
112- isActive = { isActive }
113- accordion = { accordion }
114- openMotion = { openMotion }
115- collapsible = { mergeCollapsible }
116- onItemClick = { handleItemClick }
117- destroyInactivePanel = { mergeDestroyInactivePanel }
118- expandIcon = { rawExpandIcon }
119- { ...restProps }
120- >
121- { children }
122- </ CollapsePanel >
123- ) ;
124- } ) ;
125-
12677 // ======================== Render ========================
12778 return (
12879 < div
@@ -136,4 +87,9 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
13687 ) ;
13788} ) ;
13889
139- export default Collapse ;
90+ export default Object . assign ( Collapse , {
91+ /**
92+ * @deprecated use `items` instead, will be removed in `v4.0.0`
93+ */
94+ Panel : CollapsePanel ,
95+ } ) ;
0 commit comments