UNPKG

@kiwicom/orbit-components

Version:

<div align="center"> <a href="https://orbit.kiwi" target="_blank"> <img alt="orbit-components" src="https://orbit.kiwi/wp-content/uploads/2018/08/orbit-components.png" srcset="https://orbit.kiwi/wp-content/uploads/2018/08/orbit-components@2x.png 2x"

44 lines (35 loc) 976 B
import * as React from "react"; import styled from "styled-components"; const Inner = styled.div.withConfig({ displayName: "ClickOutside__Inner" })(["width:100%;"]); class ClickOutside extends React.PureComponent { constructor(...args) { var _temp; return _temp = super(...args), this.handleClickOutside = ev => { const { onClickOutside } = this.props; if (onClickOutside && this.node && ev.target instanceof Node && !this.node.contains(ev.target)) { onClickOutside(ev); } }, _temp; } componentDidMount() { document.addEventListener("click", this.handleClickOutside, true); } componentWillUnmount() { document.removeEventListener("click", this.handleClickOutside, true); } render() { const { children } = this.props; return React.createElement( Inner, { innerRef: node => { this.node = node; } }, children ); } } export default ClickOutside;