@@ -12,6 +12,7 @@ import { usePrefixConfig, useComponentConfig, useElement, useLockScroll, useMaxI
1212import { registerComponentMate , getClassName , toPx } from '../../utils' ;
1313import { DMask } from '../_mask' ;
1414import { DTransition } from '../_transition' ;
15+ import { DDrawerHeader } from './DrawerHeader' ;
1516
1617export interface DDrawerProps extends React . HTMLAttributes < HTMLDivElement > {
1718 dVisible : [ boolean , DUpdater < boolean > ?] ;
@@ -23,7 +24,7 @@ export interface DDrawerProps extends React.HTMLAttributes<HTMLDivElement> {
2324 dMask ?: boolean ;
2425 dMaskClosable ?: boolean ;
2526 dEscClosable ?: boolean ;
26- dHeader ?: React . ReactElement < DDrawerHeaderProps > ;
27+ dHeader ?: React . ReactElement < DDrawerHeaderProps > | string ;
2728 dFooter ?: React . ReactElement < DDrawerFooterProps > ;
2829 dChildDrawer ?: React . ReactElement < DDrawerProps > ;
2930 onClose ?: ( ) => void ;
@@ -205,6 +206,17 @@ export function DDrawer(props: DDrawerProps): JSX.Element | null {
205206 return null ;
206207 } ) ( ) ;
207208
209+ const headerNode = ( ( ) => {
210+ if ( dHeader ) {
211+ const node = isString ( dHeader ) ? < DDrawerHeader > { dHeader } </ DDrawerHeader > : dHeader ;
212+ return React . cloneElement < DDrawerHeaderPropsWithPrivate > ( node , {
213+ ...node . props ,
214+ __id : headerId ,
215+ __onClose : closeDrawer ,
216+ } ) ;
217+ }
218+ } ) ( ) ;
219+
208220 const drawerNode = (
209221 < >
210222 < DTransition
@@ -231,7 +243,7 @@ export function DDrawer(props: DDrawerProps): JSX.Element | null {
231243 } }
232244 role = "dialog"
233245 aria-modal = "true"
234- aria-labelledby = { dHeader ? headerId : undefined }
246+ aria-labelledby = { headerNode ? headerId : undefined }
235247 aria-describedby = { contentId }
236248 >
237249 { dMask && (
@@ -260,12 +272,7 @@ export function DDrawer(props: DDrawerProps): JSX.Element | null {
260272 }
261273 } }
262274 >
263- { dHeader &&
264- React . cloneElement < DDrawerHeaderPropsWithPrivate > ( dHeader , {
265- ...dHeader . props ,
266- __id : headerId ,
267- __onClose : closeDrawer ,
268- } ) }
275+ { headerNode }
269276 < div className = { `${ dPrefix } drawer__body` } > { children } </ div >
270277 { dFooter &&
271278 React . cloneElement < DDrawerFooterPropsWithPrivate > ( dFooter , {
0 commit comments