diff --git a/ts/components/UserDetailsDialog.tsx b/ts/components/UserDetailsDialog.tsx index e52f49713..437059274 100644 --- a/ts/components/UserDetailsDialog.tsx +++ b/ts/components/UserDetailsDialog.tsx @@ -18,6 +18,8 @@ interface Props { } export class UserDetailsDialog extends React.Component { + private modalRef: any; + constructor(props: any) { super(props); @@ -25,6 +27,15 @@ export class UserDetailsDialog extends React.Component { this.onKeyUp = this.onKeyUp.bind(this); this.onClickStartConversation = this.onClickStartConversation.bind(this); window.addEventListener('keyup', this.onKeyUp); + this.modalRef = React.createRef(); + } + + public componentWillMount() { + document.addEventListener('mousedown', this.handleClick, false); + } + + public componentWillUnmount() { + document.removeEventListener('mousedown', this.handleClick, false); } public render() { @@ -34,25 +45,27 @@ export class UserDetailsDialog extends React.Component { const startConversation = i18n('startConversation'); return ( -
-
-
{this.renderAvatar()}
-
-
{this.props.profileName}
-
{this.props.pubkey}
- -
- - - +
(this.modalRef = element)}> +
+
+
{this.renderAvatar()}
+
+
{this.props.profileName}
+
{this.props.pubkey}
+ +
+ + + +
); @@ -98,4 +111,11 @@ export class UserDetailsDialog extends React.Component { this.props.onStartConversation(); this.closeDialog(); } + + private readonly handleClick = (e: any) => { + if (this.modalRef.contains(e.target)) { + return; + } + this.closeDialog(); + }; }