import React, { Component } from 'react'
import PropTypes from 'prop-types'
class ClickOutside extends Component {
componentDidMount () {
document.addEventListener('click', this.handle, true)
}
componentWillUnmount () {
document.removeEventListener('click', this.handle, true)
}
handle = e => {
const { onClickOutside, delayClick = 0 } = this.props
if (!this.container.contains(e.target)) {
setTimeout(onClickOutside, delayClick)
}
}
render () {
const { children } = this.props
return (
<div ref={node => { this.container = node }}>
{children}
</div>
)
}
}
ClickOutside.propTypes = {
onClickOutside: PropTypes.func.isRequired,
delayClick: PropTypes.number
}
export { ClickOutside }
|