make showUserDetails modal close on click outside

pull/681/head
Audric Ackermann 5 years ago
parent a64df1c91c
commit b21b439092

@ -18,6 +18,8 @@ interface Props {
} }
export class UserDetailsDialog extends React.Component<Props> { export class UserDetailsDialog extends React.Component<Props> {
private modalRef: any;
constructor(props: any) { constructor(props: any) {
super(props); super(props);
@ -25,6 +27,15 @@ export class UserDetailsDialog extends React.Component<Props> {
this.onKeyUp = this.onKeyUp.bind(this); this.onKeyUp = this.onKeyUp.bind(this);
this.onClickStartConversation = this.onClickStartConversation.bind(this); this.onClickStartConversation = this.onClickStartConversation.bind(this);
window.addEventListener('keyup', this.onKeyUp); 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() { public render() {
@ -34,25 +45,27 @@ export class UserDetailsDialog extends React.Component<Props> {
const startConversation = i18n('startConversation'); const startConversation = i18n('startConversation');
return ( return (
<div className="content"> <div ref={element => (this.modalRef = element)}>
<div className="avatar-center"> <div className="content">
<div className="avatar-center-inner">{this.renderAvatar()}</div> <div className="avatar-center">
</div> <div className="avatar-center-inner">{this.renderAvatar()}</div>
<div className="profile-name">{this.props.profileName}</div> </div>
<div className="message">{this.props.pubkey}</div> <div className="profile-name">{this.props.profileName}</div>
<div className="message">{this.props.pubkey}</div>
<div className="buttons">
<button className="cancel" tabIndex={0} onClick={this.closeDialog}> <div className="buttons">
{cancelText} <button className="cancel" tabIndex={0} onClick={this.closeDialog}>
</button> {cancelText}
</button>
<button
className="ok" <button
tabIndex={0} className="ok"
onClick={this.onClickStartConversation} tabIndex={0}
> onClick={this.onClickStartConversation}
{startConversation} >
</button> {startConversation}
</button>
</div>
</div> </div>
</div> </div>
); );
@ -98,4 +111,11 @@ export class UserDetailsDialog extends React.Component<Props> {
this.props.onStartConversation(); this.props.onStartConversation();
this.closeDialog(); this.closeDialog();
} }
private readonly handleClick = (e: any) => {
if (this.modalRef.contains(e.target)) {
return;
}
this.closeDialog();
};
} }

Loading…
Cancel
Save