react-onclickoutside
Advanced tools
Comparing version 5.8.4 to 5.9.0
16
index.js
@@ -55,6 +55,13 @@ /** | ||
/** | ||
* Check if the browser scrollbar was clicked | ||
*/ | ||
var clickedScrollbar = function(evt) { | ||
return document.documentElement.clientWidth <= evt.clientX; | ||
}; | ||
/** | ||
* Generate the event handler that checks whether a clicked DOM node | ||
* is inside of, or lives outside of, our Component's node tree. | ||
*/ | ||
var generateOutsideCheck = function(componentNode, componentInstance, eventHandler, ignoreClass, preventDefault, stopPropagation) { | ||
var generateOutsideCheck = function(componentNode, componentInstance, eventHandler, ignoreClass, excludeScrollbar, preventDefault, stopPropagation) { | ||
return function(evt) { | ||
@@ -68,3 +75,3 @@ if (preventDefault) { | ||
var current = evt.target; | ||
if(findHighest(current, componentNode, ignoreClass) !== document) { | ||
if((excludeScrollbar && clickedScrollbar(evt)) || (findHighest(current, componentNode, ignoreClass) !== document)) { | ||
return; | ||
@@ -166,2 +173,3 @@ } | ||
this.props.outsideClickIgnoreClass || IGNORE_CLASS, | ||
this.props.excludeScrollbar || false, | ||
this.props.preventDefault || false, | ||
@@ -248,3 +256,5 @@ this.props.stopPropagation || false | ||
Object.keys(this.props).forEach(function(key) { | ||
props[key] = passedProps[key]; | ||
if (key !== 'excludeScrollbar') { | ||
props[key] = passedProps[key]; | ||
} | ||
}); | ||
@@ -251,0 +261,0 @@ if (Component.prototype.isReactComponent) { |
{ | ||
"name": "react-onclickoutside", | ||
"version": "5.8.4", | ||
"version": "5.9.0", | ||
"description": "An onClickOutside wrapper for React components", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -193,2 +193,20 @@ # An onClickOutside wrapper for React components | ||
## Regulate whether or not to listen to scrollbar clicks | ||
By default this HOC will listen for "clicks inside the document", which may include clicks that occur on the scrollbar. Quite often clicking on the scrollbar *should* close whatever is open but in case your project invalidates that assumption you can use the `excludeScrollbar` property to explicitly tell the HOC that clicks on the scrollbar should be ignored: | ||
```js | ||
var onClickOutside = require('react-onclickoutside'); | ||
var MyComponent = onClickOutside(React.createClass({ | ||
... | ||
})); | ||
var Container = React.createClass({ | ||
render: function(evt) { | ||
return <MyComponent excludeScrollbar={true} /> | ||
} | ||
}); | ||
``` | ||
## Regulating `evt.preventDefault()` and `evt.stopPropagation()` | ||
@@ -195,0 +213,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
25483
274
278