@@ -2,7 +2,7 @@ import classNames from 'classnames';
22import toArray from 'rc-util/lib/Children/toArray' ;
33import useMergedState from 'rc-util/lib/hooks/useMergedState' ;
44import React from 'react' ;
5- import type { CollapseProps , CollapsibleType } from './interface' ;
5+ import type { CollapsePanelProps , CollapseProps , CollapsibleType } from './interface' ;
66import CollapsePanel from './Panel' ;
77
88function getActiveKeysArray ( activeKey : React . Key | React . Key [ ] ) {
@@ -56,7 +56,7 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
5656 } ) ;
5757
5858 // ======================== Children ========================
59- const getNewChild = ( child : React . ReactElement , index : number ) => {
59+ const getNewChild = ( child : React . ReactElement < CollapsePanelProps > , index : number ) => {
6060 if ( ! child ) return null ;
6161
6262 const key = child . key || String ( index ) ;
@@ -66,6 +66,7 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
6666 headerClass,
6767 destroyInactivePanel : childDestroyInactivePanel ,
6868 collapsible : childCollapsible ,
69+ onItemClick : childOnItemClick ,
6970 } = child . props ;
7071
7172 let isActive = false ;
@@ -77,6 +78,12 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
7778
7879 const mergeCollapsible : CollapsibleType = childCollapsible ?? collapsible ;
7980
81+ const handleItemClick = ( value : React . Key ) => {
82+ if ( mergeCollapsible === 'disabled' ) return ;
83+ onClickItem ( value ) ;
84+ childOnItemClick ?.( value ) ;
85+ } ;
86+
8087 const childProps = {
8188 key,
8289 panelKey : key ,
@@ -88,7 +95,7 @@ const Collapse = React.forwardRef<HTMLDivElement, CollapseProps>((props, ref) =>
8895 openMotion,
8996 accordion,
9097 children : child . props . children ,
91- onItemClick : mergeCollapsible === 'disabled' ? null : onClickItem ,
98+ onItemClick : handleItemClick ,
9299 expandIcon,
93100 collapsible : mergeCollapsible ,
94101 } ;
0 commit comments