Added checks in ModalBase, PopoverBase if page goes back/forward to dismiss

• Added:
- checks in ModalBase, PopoverBase if page goes back/forward (popstate) to dismiss the modal, popover
This commit is contained in:
Developer 2021-02-18 17:22:11 -05:00
parent 7000902ecb
commit bec3360b66
2 changed files with 6 additions and 2 deletions

View File

@ -23,10 +23,10 @@ class ModalBase extends React.PureComponent {
} }
} }
handleOnClose = (e) => { handleOnClose = (e, force) => {
const { onOpenModal, composeText, composeId, onClose, intl, type, onCancelReplyCompose } = this.props const { onOpenModal, composeText, composeId, onClose, intl, type, onCancelReplyCompose } = this.props
if (!!e && this.dialog !== e.target) return if ((!!e && this.dialog !== e.target) && !force) return
if (!composeId && composeText && type === 'COMPOSE') { if (!composeId && composeText && type === 'COMPOSE') {
onOpenModal('CONFIRM', { onOpenModal('CONFIRM', {
@ -42,6 +42,7 @@ class ModalBase extends React.PureComponent {
componentDidMount() { componentDidMount() {
window.addEventListener('keyup', this.handleKeyUp, false) window.addEventListener('keyup', this.handleKeyUp, false)
window.addEventListener('popstate', (e) => this.handleOnClose(e, true), false);
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
@ -73,6 +74,7 @@ class ModalBase extends React.PureComponent {
componentWillUnmount() { componentWillUnmount() {
window.removeEventListener('keyup', this.handleKeyUp) window.removeEventListener('keyup', this.handleKeyUp)
window.removeEventListener('popstate', this.handleOnClose, false);
} }
getSiblings = () => { getSiblings = () => {

View File

@ -19,12 +19,14 @@ class PopoverBase extends ImmutablePureComponent {
document.addEventListener('click', this.handleDocumentClick, false) document.addEventListener('click', this.handleDocumentClick, false)
document.addEventListener('keydown', this.handleKeyDown, false) document.addEventListener('keydown', this.handleKeyDown, false)
document.addEventListener('touchend', this.handleDocumentClick, listenerOptions) document.addEventListener('touchend', this.handleDocumentClick, listenerOptions)
window.addEventListener('popstate', this.handleClose, false);
} }
componentWillUnmount() { componentWillUnmount() {
document.removeEventListener('click', this.handleDocumentClick, false) document.removeEventListener('click', this.handleDocumentClick, false)
document.removeEventListener('keydown', this.handleKeyDown, false) document.removeEventListener('keydown', this.handleKeyDown, false)
document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions) document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions)
window.removeEventListener('hashchange', this.handleClose);
} }
handleDocumentClick = (e) => { handleDocumentClick = (e) => {