@@ -33,6 +33,7 @@ export interface MosaicWindowProps<T extends MosaicKey> {
33
33
additionalControls ?: React . ReactNode ;
34
34
additionalControlButtonText ?: string ;
35
35
onAdditionalControlsToggle ?: ( toggle : boolean ) => void ;
36
+ closeAdditionalControlsOnClickBody ?: boolean ;
36
37
draggable ?: boolean ;
37
38
createNode ?: CreateNode < T > ;
38
39
renderPreview ?: ( props : MosaicWindowProps < T > ) => JSX . Element ;
@@ -98,6 +99,7 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
98
99
connectDropTarget,
99
100
connectDragPreview,
100
101
draggedMosaicId,
102
+ closeAdditionalControlsOnClickBody,
101
103
} = this . props ;
102
104
103
105
return (
@@ -112,7 +114,11 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
112
114
>
113
115
{ this . renderToolbar ( ) }
114
116
< div className = "mosaic-window-body" > { this . props . children } </ div >
115
- < div className = "mosaic-window-body-overlay" onClick = { ( ) => this . setAdditionalControlsOpen ( false ) } />
117
+ < div className = "mosaic-window-body-overlay" onClick = { ( ) => {
118
+ if ( closeAdditionalControlsOnClickBody !== false ) {
119
+ this . setAdditionalControlsOpen ( false ) ;
120
+ }
121
+ } } />
116
122
< div className = "mosaic-window-additional-actions-bar" > { additionalControls } </ div >
117
123
{ connectDragPreview ( renderPreview ! ( this . props ) ) }
118
124
< div className = "drop-target-container" >
@@ -226,6 +232,12 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
226
232
this . props . onAdditionalControlsToggle ?.( additionalControlsOpen ) ;
227
233
} ;
228
234
235
+ private toggleAdditionalControlsOpen = ( ) => {
236
+ const additionalControlsOpen = ! this . state . additionalControlsOpen ;
237
+ this . setState ( { additionalControlsOpen } ) ;
238
+ this . props . onAdditionalControlsToggle ?.( additionalControlsOpen ) ;
239
+ } ;
240
+
229
241
private getPath = ( ) => this . props . path ;
230
242
231
243
private connectDragSource = ( connectedElements : React . ReactElement < any > ) => {
@@ -239,6 +251,7 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
239
251
split : this . split ,
240
252
replaceWithNew : this . swap ,
241
253
setAdditionalControlsOpen : this . setAdditionalControlsOpen ,
254
+ toggleAdditionalControlsOpen : this . toggleAdditionalControlsOpen ,
242
255
getPath : this . getPath ,
243
256
connectDragSource : this . connectDragSource ,
244
257
} ,
0 commit comments