Skip to content

Commit 3c4bc69

Browse files
committed
add toggleAdditionalOptions action
1 parent 2621eb6 commit 3c4bc69

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/MosaicWindow.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export interface MosaicWindowProps<T extends MosaicKey> {
3333
additionalControls?: React.ReactNode;
3434
additionalControlButtonText?: string;
3535
onAdditionalControlsToggle?: (toggle: boolean) => void;
36+
closeAdditionalControlsOnClickBody?: boolean;
3637
draggable?: boolean;
3738
createNode?: CreateNode<T>;
3839
renderPreview?: (props: MosaicWindowProps<T>) => JSX.Element;
@@ -98,6 +99,7 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
9899
connectDropTarget,
99100
connectDragPreview,
100101
draggedMosaicId,
102+
closeAdditionalControlsOnClickBody,
101103
} = this.props;
102104

103105
return (
@@ -112,7 +114,11 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
112114
>
113115
{this.renderToolbar()}
114116
<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+
}} />
116122
<div className="mosaic-window-additional-actions-bar">{additionalControls}</div>
117123
{connectDragPreview(renderPreview!(this.props))}
118124
<div className="drop-target-container">
@@ -226,6 +232,12 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
226232
this.props.onAdditionalControlsToggle?.(additionalControlsOpen);
227233
};
228234

235+
private toggleAdditionalControlsOpen = () => {
236+
const additionalControlsOpen = !this.state.additionalControlsOpen;
237+
this.setState({ additionalControlsOpen });
238+
this.props.onAdditionalControlsToggle?.(additionalControlsOpen);
239+
};
240+
229241
private getPath = () => this.props.path;
230242

231243
private connectDragSource = (connectedElements: React.ReactElement<any>) => {
@@ -239,6 +251,7 @@ export class InternalMosaicWindow<T extends MosaicKey> extends React.Component<
239251
split: this.split,
240252
replaceWithNew: this.swap,
241253
setAdditionalControlsOpen: this.setAdditionalControlsOpen,
254+
toggleAdditionalControlsOpen: this.toggleAdditionalControlsOpen,
242255
getPath: this.getPath,
243256
connectDragSource: this.connectDragSource,
244257
},

src/contextTypes.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ export interface MosaicWindowActions {
7979
* Sets the open state for the tray that holds additional controls
8080
*/
8181
setAdditionalControlsOpen: (open: boolean) => void;
82+
/**
83+
* Sets the open state for the tray that holds additional controls
84+
*/
85+
toggleAdditionalControlsOpen: () => void;
8286
/**
8387
* Returns the path to this window
8488
*/

0 commit comments

Comments
 (0)