fleet/frontend/components/ClickOutside/ClickOutside.jsx
Gabe Hernandez efb35b537a
add prettier and have it format all fleet application code (#625)
* add prettier and have it format all js code except website:
:

* trying running prettier check in CI

* fix runs on in CI

* change CI job name

* fix prettier erros and fix CI
2021-04-12 14:32:25 +01:00

39 lines
1.1 KiB
JavaScript

import React, { Component } from "react";
import { noop } from "lodash";
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 ClickOutside;
};