Socket
Socket
Sign inDemoInstall

react-outer-click

Package Overview
Dependencies
11
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.3.1 to 3.4.0

21

CHANGELOG.md
# Changelog
## v3.4.0 - 2020-10-25
### Added
- Added type checking of `refs` parameter in `useOuterClick` hook.
### Changed
- Updated `handler` parameter of `useOuterClick` hook to allow `null`.
- Updated `propTypes` to only be defined in non-production environments.
- Updated devDependencies.
- Updated React import to avoid using default import.
### Removed
- Removed `defaultProps` in favour of default values in object destructuring.
## v3.3.1 - 2020-08-26

@@ -92,3 +109,3 @@

- Additional props are now passed to wrapper div inside `OuterClick` component.
- Additional props are now passed to wrapper div inside `OuterClick` component.

@@ -106,3 +123,3 @@ ## v2.0.0 - 2019-06-02

- **BREAKING** `OuterClick` component renders a wrapper `div` element (instead of using [`findDOMNode()`](https://reactjs.org/docs/react-dom.html#finddomnode).)
- **BREAKING** Updated `children` prop-type of `OuterClick` component to be required.
- **BREAKING** Updated `children` prop-type of `OuterClick` component to be required.
- Bumped up version of [prop-types](https://www.npmjs.com/package/prop-types) to v15.7.2.

@@ -109,0 +126,0 @@ - Changed `OuterClick` component to be functional and use hooks internally.

61

lib/index.cjs.js

@@ -17,3 +17,2 @@ 'use strict';

var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var useComposedRef__default = /*#__PURE__*/_interopDefaultLegacy(useComposedRef);

@@ -27,8 +26,16 @@ var useLatest__default = /*#__PURE__*/_interopDefaultLegacy(useLatest);

var useOuterClick = function useOuterClick(refs, handler) {
if (handler === void 0) {
handler = function handler() {};
}
if (process.env.NODE_ENV !== 'production') {
if (Array.isArray(refs)) {
refs.forEach(function (ref, i) {
if (typeof ref !== 'object' || ref === null) {
throw new TypeError("Expected `refs[" + i + "]` to be of type `object`, but received type `" + typeof ref + "`");
}
});
} else if (typeof refs !== 'object' || refs === null) {
throw new TypeError("Expected `refs` to be of type `array` or `object`, but received type `" + typeof refs + "`");
}
if (process.env.NODE_ENV !== 'production' && typeof handler !== 'function') {
throw new TypeError("Expected \"handler\" to be a function, not " + typeof handler + ".");
if (typeof handler !== 'function' && handler != null) {
throw new TypeError("Expected `handler` to be of type `function`, but received type `" + typeof handler + "`");
}
}

@@ -42,3 +49,3 @@

return ref.current && ref.current !== event.target && !ref.current.contains(event.target);
})) {
}) && handerRef.current != null) {
handerRef.current(event);

@@ -54,29 +61,31 @@ }

};
}, []);
}, []); // eslint-disable-line react-hooks/exhaustive-deps
};
var OuterClick = /*#__PURE__*/React__default['default'].forwardRef(function (props, outerRef) {
var Element = props.as,
children = props.children,
onOuterClick = props.onOuterClick,
rest = _objectWithoutPropertiesLoose__default['default'](props, ["as", "children", "onOuterClick"]);
var OuterClick = /*#__PURE__*/React.forwardRef(function OuterClick(_ref, userRef) {
var _ref$as = _ref.as,
Element = _ref$as === void 0 ? 'div' : _ref$as,
_ref$children = _ref.children,
children = _ref$children === void 0 ? null : _ref$children,
_ref$onOuterClick = _ref.onOuterClick,
onOuterClick = _ref$onOuterClick === void 0 ? null : _ref$onOuterClick,
rest = _objectWithoutPropertiesLoose__default['default'](_ref, ["as", "children", "onOuterClick"]);
var innerRef = React.useRef();
var ref = useComposedRef__default['default'](innerRef, outerRef);
useOuterClick(innerRef, onOuterClick);
return /*#__PURE__*/React__default['default'].createElement(Element, _extends__default['default']({}, rest, {
var libRef = React.useRef();
var ref = useComposedRef__default['default'](libRef, userRef);
useOuterClick(libRef, onOuterClick);
return /*#__PURE__*/React.createElement(Element, _extends__default['default']({}, rest, {
ref: ref
}), children);
});
OuterClick.defaultProps = {
as: 'div',
children: null
};
OuterClick.propTypes = {
as: PropTypes__default['default'].elementType,
children: PropTypes__default['default'].node,
onOuterClick: PropTypes__default['default'].func.isRequired
};
if (process.env.NODE_ENV !== 'production') {
OuterClick.propTypes = {
as: PropTypes__default['default'].elementType,
children: PropTypes__default['default'].node,
onOuterClick: PropTypes__default['default'].func
};
}
exports.OuterClick = OuterClick;
exports.useOuterClick = useOuterClick;
import _extends from '@babel/runtime/helpers/extends';
import _objectWithoutPropertiesLoose from '@babel/runtime/helpers/objectWithoutPropertiesLoose';
import PropTypes from 'prop-types';
import React, { useEffect, useRef } from 'react';
import { useEffect, forwardRef, useRef, createElement } from 'react';
import useComposedRef from 'use-composed-ref';

@@ -13,8 +13,16 @@ import useLatest from 'use-latest';

var useOuterClick = function useOuterClick(refs, handler) {
if (handler === void 0) {
handler = function handler() {};
}
if (process.env.NODE_ENV !== 'production') {
if (Array.isArray(refs)) {
refs.forEach(function (ref, i) {
if (typeof ref !== 'object' || ref === null) {
throw new TypeError("Expected `refs[" + i + "]` to be of type `object`, but received type `" + typeof ref + "`");
}
});
} else if (typeof refs !== 'object' || refs === null) {
throw new TypeError("Expected `refs` to be of type `array` or `object`, but received type `" + typeof refs + "`");
}
if (process.env.NODE_ENV !== 'production' && typeof handler !== 'function') {
throw new TypeError("Expected \"handler\" to be a function, not " + typeof handler + ".");
if (typeof handler !== 'function' && handler != null) {
throw new TypeError("Expected `handler` to be of type `function`, but received type `" + typeof handler + "`");
}
}

@@ -28,3 +36,3 @@

return ref.current && ref.current !== event.target && !ref.current.contains(event.target);
})) {
}) && handerRef.current != null) {
handerRef.current(event);

@@ -40,28 +48,30 @@ }

};
}, []);
}, []); // eslint-disable-line react-hooks/exhaustive-deps
};
var OuterClick = /*#__PURE__*/React.forwardRef(function (props, outerRef) {
var Element = props.as,
children = props.children,
onOuterClick = props.onOuterClick,
rest = _objectWithoutPropertiesLoose(props, ["as", "children", "onOuterClick"]);
var OuterClick = /*#__PURE__*/forwardRef(function OuterClick(_ref, userRef) {
var _ref$as = _ref.as,
Element = _ref$as === void 0 ? 'div' : _ref$as,
_ref$children = _ref.children,
children = _ref$children === void 0 ? null : _ref$children,
_ref$onOuterClick = _ref.onOuterClick,
onOuterClick = _ref$onOuterClick === void 0 ? null : _ref$onOuterClick,
rest = _objectWithoutPropertiesLoose(_ref, ["as", "children", "onOuterClick"]);
var innerRef = useRef();
var ref = useComposedRef(innerRef, outerRef);
useOuterClick(innerRef, onOuterClick);
return /*#__PURE__*/React.createElement(Element, _extends({}, rest, {
var libRef = useRef();
var ref = useComposedRef(libRef, userRef);
useOuterClick(libRef, onOuterClick);
return /*#__PURE__*/createElement(Element, _extends({}, rest, {
ref: ref
}), children);
});
OuterClick.defaultProps = {
as: 'div',
children: null
};
OuterClick.propTypes = {
as: PropTypes.elementType,
children: PropTypes.node,
onOuterClick: PropTypes.func.isRequired
};
if (process.env.NODE_ENV !== 'production') {
OuterClick.propTypes = {
as: PropTypes.elementType,
children: PropTypes.node,
onOuterClick: PropTypes.func
};
}
export { OuterClick, useOuterClick };
{
"name": "react-outer-click",
"version": "3.3.1",
"version": "3.4.0",
"description": "React component and hook which detect mouse clicks outside of itself.",

@@ -12,6 +12,8 @@ "main": "lib/index.cjs.js",

"build": "rollup -c",
"coverage": "jest --coverage",
"lint": "eslint .",
"format": "prettier --write .",
"prepare": "npm run build",
"test": "echo \"Error: no test specified\" && exit 1"
"prepublishOnly": "npm run test",
"test": "jest"
},

@@ -48,5 +50,8 @@ "repository": {

"@rollup/plugin-babel": "^5.2.0",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^10.4.9",
"babel-eslint": "^10.1.0",
"eslint": "^7.7.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-jest": "^23.20.0",
"eslint-plugin-prettier": "^3.1.4",

@@ -56,9 +61,12 @@ "eslint-plugin-react": "^7.20.6",

"husky": "^4.2.5",
"jest": "^26.4.2",
"lint-staged": "^10.2.13",
"prettier": "^2.1.0",
"rollup": "^2.26.5"
"prettier": "^2.1.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"rollup": "^2.26.7"
},
"peerDependencies": {
"react": "^16.8.0"
"react": ">=16.8.0"
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc