diff --git a/src/components/Modal.js b/src/components/Modal.js index 0786f355..9467f7f2 100644 --- a/src/components/Modal.js +++ b/src/components/Modal.js @@ -55,7 +55,8 @@ export default class Modal extends Component { parentSelector: PropTypes.func, aria: PropTypes.object, role: PropTypes.string, - contentLabel: PropTypes.string.isRequired + contentLabel: PropTypes.string.isRequired, + shouldCloseOnEsc: PropTypes.bool }; /* eslint-enable react/no-unused-prop-types */ diff --git a/src/components/ModalPortal.js b/src/components/ModalPortal.js index f77b9cc3..2991cdbd 100644 --- a/src/components/ModalPortal.js +++ b/src/components/ModalPortal.js @@ -18,6 +18,7 @@ const ESC_KEY = 27; export default class ModalPortal extends Component { static defaultProps = { + shouldCloseOnEsc: true, style: { overlay: {}, content: {} @@ -52,7 +53,8 @@ export default class ModalPortal extends Component { role: PropTypes.string, contentLabel: PropTypes.string, aria: PropTypes.object, - children: PropTypes.node + children: PropTypes.node, + shouldCloseOnEsc: PropTypes.bool }; constructor(props) { @@ -196,7 +198,8 @@ export default class ModalPortal extends Component { if (event.keyCode === TAB_KEY) { scopeTab(this.content, event); } - if (event.keyCode === ESC_KEY) { + + if (this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) { event.preventDefault(); this.requestClose(event); }