Socket
Socket
Sign inDemoInstall

@reach/dialog

Package Overview
Dependencies
Maintainers
2
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@reach/dialog - npm Package Compare versions

Comparing version 0.2.9 to 0.3.0-alpha.0

LICENSE

148

es/index.js

@@ -1,4 +0,4 @@

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }

@@ -16,13 +16,16 @@ import React from "react";

var rootNodes = [];
Array.prototype.forEach.call(document.querySelectorAll("body > *"), function (node) {
var portalNode = dialogNode.parentNode.parentNode.parentNode;
if (node === portalNode) {
return;
}
var attr = node.getAttribute("aria-hidden");
var alreadyHidden = attr !== null && attr !== "false";
if (alreadyHidden) {
return;
}
originalValues.push(attr);

@@ -32,6 +35,6 @@ rootNodes.push(node);

});
return function () {
rootNodes.forEach(function (node, index) {
var originalValue = originalValues[index];
if (originalValue === null) {

@@ -58,75 +61,65 @@ node.removeAttribute("aria-hidden");

var refs = _ref.refs;
refs.disposeAriaHider();
};
}; // eslint-disable-next-line no-unused-vars
var FocusContext = React.createContext();
var DialogOverlay = React.forwardRef(function (_ref2, forwardedRef) {
var _ref2$isOpen = _ref2.isOpen,
isOpen = _ref2$isOpen === undefined ? true : _ref2$isOpen,
isOpen = _ref2$isOpen === void 0 ? true : _ref2$isOpen,
_ref2$onDismiss = _ref2.onDismiss,
onDismiss = _ref2$onDismiss === undefined ? k : _ref2$onDismiss,
onDismiss = _ref2$onDismiss === void 0 ? k : _ref2$onDismiss,
onMouseDown = _ref2.onMouseDown,
initialFocusRef = _ref2.initialFocusRef,
onClick = _ref2.onClick,
onKeyDown = _ref2.onKeyDown,
props = _objectWithoutProperties(_ref2, ["isOpen", "onDismiss", "initialFocusRef", "onClick", "onKeyDown"]);
props = _objectWithoutPropertiesLoose(_ref2, ["isOpen", "onDismiss", "onMouseDown", "initialFocusRef", "onClick", "onKeyDown"]);
return React.createElement(
Component,
{ didMount: checkDialogStyles },
isOpen ? React.createElement(
Portal,
{ "data-reach-dialog-wrapper": true },
React.createElement(
Component,
{
refs: { overlayNode: null },
didMount: function didMount(_ref3) {
var refs = _ref3.refs;
portalDidMount(refs);
},
willUnmount: contentWillUnmount
},
function (_ref4) {
var refs = _ref4.refs;
return React.createElement(
FocusLock,
{
returnFocus: true,
onActivation: function onActivation() {
if (initialFocusRef) {
initialFocusRef.current.focus();
}
}
},
React.createElement(
RemoveScroll,
null,
React.createElement("div", _extends({
"data-reach-dialog-overlay": true,
onClick: wrapEvent(onClick, function (event) {
event.stopPropagation();
onDismiss();
}),
onKeyDown: wrapEvent(onKeyDown, function (event) {
if (event.key === "Escape") {
event.stopPropagation();
onDismiss();
}
}),
ref: function ref(node) {
refs.overlayNode = node;
assignRef(forwardedRef, node);
}
}, props))
)
);
return React.createElement(Component, {
didMount: checkDialogStyles
}, isOpen ? React.createElement(Portal, {
"data-reach-dialog-wrapper": true
}, React.createElement(Component, {
refs: {
overlayNode: null,
mouseDownTarget: null
},
didMount: function didMount(_ref3) {
var refs = _ref3.refs;
portalDidMount(refs);
},
willUnmount: contentWillUnmount
}, function (_ref4) {
var refs = _ref4.refs;
return React.createElement(FocusLock, {
returnFocus: true,
onActivation: function onActivation() {
if (initialFocusRef) {
initialFocusRef.current.focus();
}
)
) : null
);
}
}, React.createElement(RemoveScroll, null, React.createElement("div", _extends({
"data-reach-dialog-overlay": true,
onClick: wrapEvent(onClick, function (event) {
if (refs.mouseDownTarget === event.target) {
event.stopPropagation();
onDismiss(event);
}
}),
onMouseDown: wrapEvent(onMouseDown, function (event) {
refs.mouseDownTarget = event.target;
}),
onKeyDown: wrapEvent(onKeyDown, function (event) {
if (event.key === "Escape") {
event.stopPropagation();
onDismiss(event);
}
}),
ref: function ref(node) {
refs.overlayNode = node;
assignRef(forwardedRef, node);
}
}, props))));
})) : null);
});
DialogOverlay.propTypes = {

@@ -143,3 +136,3 @@ initialFocusRef: function initialFocusRef() {}

onKeyDown = _ref5.onKeyDown,
props = _objectWithoutProperties(_ref5, ["onClick", "onKeyDown"]);
props = _objectWithoutPropertiesLoose(_ref5, ["onClick", "onKeyDown"]);

@@ -160,22 +153,17 @@ return React.createElement("div", _extends({

_ref6$onDismiss = _ref6.onDismiss,
onDismiss = _ref6$onDismiss === undefined ? k : _ref6$onDismiss,
onDismiss = _ref6$onDismiss === void 0 ? k : _ref6$onDismiss,
initialFocusRef = _ref6.initialFocusRef,
props = _objectWithoutProperties(_ref6, ["isOpen", "onDismiss", "initialFocusRef"]);
props = _objectWithoutPropertiesLoose(_ref6, ["isOpen", "onDismiss", "initialFocusRef"]);
return React.createElement(
DialogOverlay,
{
isOpen: isOpen,
onDismiss: onDismiss,
initialFocusRef: initialFocusRef
},
React.createElement(DialogContent, props)
);
return React.createElement(DialogOverlay, {
isOpen: isOpen,
onDismiss: onDismiss,
initialFocusRef: initialFocusRef
}, React.createElement(DialogContent, props));
};
process.env.NODE_ENV !== "production" ? Dialog.propTypes = {
Dialog.propTypes = {
isOpen: bool,
onDismiss: func
} : void 0;
};
export { DialogOverlay, DialogContent, Dialog };
"use strict";
exports.__esModule = true;
exports.Dialog = exports.DialogContent = exports.DialogOverlay = undefined;
exports.Dialog = exports.DialogContent = exports.DialogOverlay = void 0;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = _interopRequireDefault(require("react"));
var _react = require("react");
var _componentComponent = _interopRequireDefault(require("@reach/component-component"));
var _react2 = _interopRequireDefault(_react);
var _portal = _interopRequireDefault(require("@reach/portal"));
var _componentComponent = require("@reach/component-component");
var _componentComponent2 = _interopRequireDefault(_componentComponent);
var _portal = require("@reach/portal");
var _portal2 = _interopRequireDefault(_portal);
var _utils = require("@reach/utils");
var _reactFocusLock = require("react-focus-lock");
var _reactFocusLock = _interopRequireDefault(require("react-focus-lock"));
var _reactFocusLock2 = _interopRequireDefault(_reactFocusLock);
var _reactRemoveScroll = require("react-remove-scroll");

@@ -30,20 +20,25 @@

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
var createAriaHider = function createAriaHider(dialogNode) {
var originalValues = [];
var rootNodes = [];
Array.prototype.forEach.call(document.querySelectorAll("body > *"), function (node) {
var portalNode = dialogNode.parentNode.parentNode.parentNode;
if (node === portalNode) {
return;
}
var attr = node.getAttribute("aria-hidden");
var alreadyHidden = attr !== null && attr !== "false";
if (alreadyHidden) {
return;
}
originalValues.push(attr);

@@ -53,6 +48,6 @@ rootNodes.push(node);

});
return function () {
rootNodes.forEach(function (node, index) {
var originalValue = originalValues[index];
if (originalValue === null) {

@@ -79,75 +74,68 @@ node.removeAttribute("aria-hidden");

var refs = _ref.refs;
refs.disposeAriaHider();
};
}; // eslint-disable-next-line no-unused-vars
var FocusContext = _react2.default.createContext();
var DialogOverlay = _react2.default.forwardRef(function (_ref2, forwardedRef) {
var FocusContext = _react["default"].createContext();
var DialogOverlay = _react["default"].forwardRef(function (_ref2, forwardedRef) {
var _ref2$isOpen = _ref2.isOpen,
isOpen = _ref2$isOpen === undefined ? true : _ref2$isOpen,
isOpen = _ref2$isOpen === void 0 ? true : _ref2$isOpen,
_ref2$onDismiss = _ref2.onDismiss,
onDismiss = _ref2$onDismiss === undefined ? k : _ref2$onDismiss,
onDismiss = _ref2$onDismiss === void 0 ? k : _ref2$onDismiss,
onMouseDown = _ref2.onMouseDown,
initialFocusRef = _ref2.initialFocusRef,
onClick = _ref2.onClick,
onKeyDown = _ref2.onKeyDown,
props = _objectWithoutProperties(_ref2, ["isOpen", "onDismiss", "initialFocusRef", "onClick", "onKeyDown"]);
props = _objectWithoutPropertiesLoose(_ref2, ["isOpen", "onDismiss", "onMouseDown", "initialFocusRef", "onClick", "onKeyDown"]);
return _react2.default.createElement(
_componentComponent2.default,
{ didMount: checkDialogStyles },
isOpen ? _react2.default.createElement(
_portal2.default,
{ "data-reach-dialog-wrapper": true },
_react2.default.createElement(
_componentComponent2.default,
{
refs: { overlayNode: null },
didMount: function didMount(_ref3) {
var refs = _ref3.refs;
portalDidMount(refs);
},
willUnmount: contentWillUnmount
},
function (_ref4) {
var refs = _ref4.refs;
return _react2.default.createElement(
_reactFocusLock2.default,
{
returnFocus: true,
onActivation: function onActivation() {
if (initialFocusRef) {
initialFocusRef.current.focus();
}
}
},
_react2.default.createElement(
_reactRemoveScroll.RemoveScroll,
null,
_react2.default.createElement("div", _extends({
"data-reach-dialog-overlay": true,
onClick: (0, _utils.wrapEvent)(onClick, function (event) {
event.stopPropagation();
onDismiss();
}),
onKeyDown: (0, _utils.wrapEvent)(onKeyDown, function (event) {
if (event.key === "Escape") {
event.stopPropagation();
onDismiss();
}
}),
ref: function ref(node) {
refs.overlayNode = node;
(0, _utils.assignRef)(forwardedRef, node);
}
}, props))
)
);
return _react["default"].createElement(_componentComponent["default"], {
didMount: checkDialogStyles
}, isOpen ? _react["default"].createElement(_portal["default"], {
"data-reach-dialog-wrapper": true
}, _react["default"].createElement(_componentComponent["default"], {
refs: {
overlayNode: null,
mouseDownTarget: null
},
didMount: function didMount(_ref3) {
var refs = _ref3.refs;
portalDidMount(refs);
},
willUnmount: contentWillUnmount
}, function (_ref4) {
var refs = _ref4.refs;
return _react["default"].createElement(_reactFocusLock["default"], {
returnFocus: true,
onActivation: function onActivation() {
if (initialFocusRef) {
initialFocusRef.current.focus();
}
)
) : null
);
}
}, _react["default"].createElement(_reactRemoveScroll.RemoveScroll, null, _react["default"].createElement("div", _extends({
"data-reach-dialog-overlay": true,
onClick: (0, _utils.wrapEvent)(onClick, function (event) {
if (refs.mouseDownTarget === event.target) {
event.stopPropagation();
onDismiss(event);
}
}),
onMouseDown: (0, _utils.wrapEvent)(onMouseDown, function (event) {
refs.mouseDownTarget = event.target;
}),
onKeyDown: (0, _utils.wrapEvent)(onKeyDown, function (event) {
if (event.key === "Escape") {
event.stopPropagation();
onDismiss(event);
}
}),
ref: function ref(node) {
refs.overlayNode = node;
(0, _utils.assignRef)(forwardedRef, node);
}
}, props))));
})) : null);
});
exports.DialogOverlay = DialogOverlay;
DialogOverlay.propTypes = {

@@ -161,8 +149,8 @@ initialFocusRef: function initialFocusRef() {}

var DialogContent = _react2.default.forwardRef(function (_ref5, forwardedRef) {
var DialogContent = _react["default"].forwardRef(function (_ref5, forwardedRef) {
var onClick = _ref5.onClick,
onKeyDown = _ref5.onKeyDown,
props = _objectWithoutProperties(_ref5, ["onClick", "onKeyDown"]);
props = _objectWithoutPropertiesLoose(_ref5, ["onClick", "onKeyDown"]);
return _react2.default.createElement("div", _extends({
return _react["default"].createElement("div", _extends({
"aria-modal": "true",

@@ -178,27 +166,22 @@ "data-reach-dialog-content": true,

exports.DialogContent = DialogContent;
var Dialog = function Dialog(_ref6) {
var isOpen = _ref6.isOpen,
_ref6$onDismiss = _ref6.onDismiss,
onDismiss = _ref6$onDismiss === undefined ? k : _ref6$onDismiss,
onDismiss = _ref6$onDismiss === void 0 ? k : _ref6$onDismiss,
initialFocusRef = _ref6.initialFocusRef,
props = _objectWithoutProperties(_ref6, ["isOpen", "onDismiss", "initialFocusRef"]);
props = _objectWithoutPropertiesLoose(_ref6, ["isOpen", "onDismiss", "initialFocusRef"]);
return _react2.default.createElement(
DialogOverlay,
{
isOpen: isOpen,
onDismiss: onDismiss,
initialFocusRef: initialFocusRef
},
_react2.default.createElement(DialogContent, props)
);
return _react["default"].createElement(DialogOverlay, {
isOpen: isOpen,
onDismiss: onDismiss,
initialFocusRef: initialFocusRef
}, _react["default"].createElement(DialogContent, props));
};
process.env.NODE_ENV !== "production" ? Dialog.propTypes = {
exports.Dialog = Dialog;
Dialog.propTypes = {
isOpen: _propTypes.bool,
onDismiss: _propTypes.func
} : void 0;
exports.DialogOverlay = DialogOverlay;
exports.DialogContent = DialogContent;
exports.Dialog = Dialog;
};
{
"name": "@reach/dialog",
"version": "0.2.9",
"version": "0.3.0-alpha.0",
"description": "Accessible React Modal Dialog.",

@@ -10,3 +10,2 @@ "author": "Ryan Florence <@ryanflorence>",

"scripts": {
"test": "jest",
"build": "node ../../shared/build-package",

@@ -16,7 +15,8 @@ "lint": "eslint . --max-warnings=0"

"dependencies": {
"@reach/component-component": "^0.1.3",
"@reach/portal": "^0.2.1",
"@reach/utils": "^0.2.3",
"react-focus-lock": "^1.17.7",
"react-remove-scroll": "^1.0.2"
"@reach/component-component": "^0.3.0-alpha.0",
"@reach/portal": "^0.3.0-alpha.0",
"@reach/utils": "^0.3.0-alpha.0",
"prop-types": "^15.7.2",
"react-focus-lock": "^2.1.0",
"react-remove-scroll": "^2.0.4"
},

@@ -28,10 +28,6 @@ "peerDependencies": {

"devDependencies": {
"jest": "^23.4.2",
"@reach/menu-button": "^0.3.0-alpha.0",
"react": "^16.8.0",
"react-test-renderer": "^16.8.0"
},
"jest": {
"testRegex": ".+\\.test\\.js$",
"testURL": "http://localhost"
},
"files": [

@@ -43,3 +39,4 @@ "es",

"styles.css"
]
],
"gitHead": "3234e9cf2a55f51c31ac5a7d883d34d6be6f033d"
}

@@ -52,2 +52,3 @@ import React from "react";

// eslint-disable-next-line no-unused-vars
let FocusContext = React.createContext();

@@ -60,2 +61,3 @@

onDismiss = k,
onMouseDown,
initialFocusRef,

@@ -67,49 +69,56 @@ onClick,

forwardedRef
) => (
<Component didMount={checkDialogStyles}>
{isOpen ? (
<Portal data-reach-dialog-wrapper>
<Component
refs={{ overlayNode: null }}
didMount={({ refs }) => {
portalDidMount(refs);
}}
willUnmount={contentWillUnmount}
>
{({ refs }) => (
<FocusLock
returnFocus
onActivation={() => {
if (initialFocusRef) {
initialFocusRef.current.focus();
}
}}
>
<RemoveScroll>
<div
data-reach-dialog-overlay
onClick={wrapEvent(onClick, event => {
event.stopPropagation();
onDismiss();
})}
onKeyDown={wrapEvent(onKeyDown, event => {
if (event.key === "Escape") {
event.stopPropagation();
onDismiss();
}
})}
ref={node => {
refs.overlayNode = node;
assignRef(forwardedRef, node);
}}
{...props}
/>
</RemoveScroll>
</FocusLock>
)}
</Component>
</Portal>
) : null}
</Component>
)
) => {
return (
<Component didMount={checkDialogStyles}>
{isOpen ? (
<Portal data-reach-dialog-wrapper>
<Component
refs={{ overlayNode: null, mouseDownTarget: null }}
didMount={({ refs }) => {
portalDidMount(refs);
}}
willUnmount={contentWillUnmount}
>
{({ refs }) => (
<FocusLock
returnFocus
onActivation={() => {
if (initialFocusRef) {
initialFocusRef.current.focus();
}
}}
>
<RemoveScroll>
<div
data-reach-dialog-overlay
onClick={wrapEvent(onClick, event => {
if (refs.mouseDownTarget === event.target) {
event.stopPropagation();
onDismiss(event);
}
})}
onMouseDown={wrapEvent(onMouseDown, event => {
refs.mouseDownTarget = event.target;
})}
onKeyDown={wrapEvent(onKeyDown, event => {
if (event.key === "Escape") {
event.stopPropagation();
onDismiss(event);
}
})}
ref={node => {
refs.overlayNode = node;
assignRef(forwardedRef, node);
}}
{...props}
/>
</RemoveScroll>
</FocusLock>
)}
</Component>
</Portal>
) : null}
</Component>
);
}
);

@@ -116,0 +125,0 @@

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc