mirror of
https://github.com/empayre/fleet.git
synced 2024-11-07 01:15:22 +00:00
efb35b537a
* 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
39 lines
1.1 KiB
JavaScript
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;
|
|
};
|