fleet/frontend/components/ClickOutside/ClickOutside.jsx
Mike Stone 1acd011ca9 Show hosts page (#311)
* Adds manage hosts page and improves side bar functionality

* API client get hosts

* Adds hosts to redux state

* Adds host details component

* Manage hosts page renders host details

* ElipsisMenu component

* Add ElipsisMenu to HostDetails

* Adds HOC to detect clicks outside component

* clicks outside ElipsisMenu close the tooltip

* Adds icons to host details component
2016-10-17 14:55:03 -04:00

36 lines
1.1 KiB
JavaScript

import React, { Component } from 'react';
import { noop } from 'lodash';
import radium from 'radium';
import { handleClickOutside } from './helpers';
export default (WrappedComponent, { onOutsideClick = noop, getDOMNode = noop }) => {
class ClickOutside extends Component {
componentDidMount () {
const { componentInstance } = this;
const clickHandler = onOutsideClick(componentInstance);
const componentNode = getDOMNode(componentInstance);
this.handleAction = handleClickOutside(clickHandler, componentNode);
global.document.addEventListener('mousedown', this.handleAction);
global.document.addEventListener('touchStart', this.handleAction);
}
componentWillUnmount () {
global.document.removeEventListener('mousedown', this.handleAction);
global.document.removeEventListener('touchStart', this.handleAction);
}
setInstance = (instance) => {
this.componentInstance = instance;
}
render () {
const { setInstance } = this;
return <WrappedComponent {...this.props} ref={setInstance} />;
}
}
return radium(ClickOutside);
};