Package Exports
- react-outside-click-handler
- react-outside-click-handler/esm/OutsideClickHandler
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-outside-click-handler) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-outside-click-handler
A React component for handling outside clicks
Usage
import OutsideClickHandler from 'react-outside-click-handler';
function MyComponent() {
return (
<OutsideClickHandler
onOutsideClick={() => {
alert('You clicked outside of this component!!!');
}}
>
Hello World
</OutsideClickHandler>
);
}Props
children: PropTypes.node.isRequired
Since the OutsideClickHandler specifically handles clicks outside a specific subtree, children is expected to be defined. A consumer should also not render the OutsideClickHandler in the case that children are not defined.
Note that if you use a Portal (native or react-portal) of any sort in the children, the OutsideClickHandler will not behave as expected.
onOutsideClick: PropTypes.func.isRequired
The onOutsideClick prop is also required as without it, the OutsideClickHandler is basically a heavy-weight <div />. It takes the relevant clickevent as an arg and gets triggered when the user clicks anywhere outside of the subtree generated by the DOM node.
disabled: PropTypes.bool
If the disabled prop is true, outside clicks will not be registered. This can be utilized to temporarily disable interaction without unmounting/remounting the entire tree.
useCapture: PropTypes.bool
See https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture for more information on event bubbling vs. capture.
If useCapture is true, the event will be registered in the capturing phase and thus, propagated top-down instead of bottom-up as is the default.
display: PropTypes.oneOf(['block', 'flex', 'inline-block', 'inline', 'contents'])
By default, the OutsideClickHandler renders a display: block <div /> to wrap the subtree defined by children. If desired, the display can be set to inline-block, inline, flex, or contents instead. There is no way not to render a wrapping <div />.