Prevent unloading of browser window when popups (like composer window) are open.

This commit is contained in:
djmaze 2021-08-31 16:17:20 +02:00
parent 8eaf9dc9c3
commit f2d172de7d
2 changed files with 7 additions and 1 deletions

View file

@ -72,7 +72,7 @@ import { LoginUserScreen } from 'Screen/User/Login';
import { MailBoxUserScreen } from 'Screen/User/MailBox';
import { SettingsUserScreen } from 'Screen/User/Settings';
import { startScreens, showScreenPopup } from 'Knoin/Knoin';
import { startScreens, showScreenPopup, arePopupsVisible } from 'Knoin/Knoin';
import { AbstractApp } from 'App/Abstract';
@ -851,6 +851,7 @@ class AppUser extends AbstractApp {
super.bootstart();
addEventListener('resize', () => leftPanelDisabled(ThemeStore.isMobile() || 1000 > innerWidth));
addEventListener('beforeunload', event => arePopupsVisible() && event.preventDefault() , {capture: true});
NotificationUserStore.populate();
AccountUserStore.populate();

View file

@ -4,6 +4,7 @@ import { doc, $htmlCL } from 'Common/Globals';
import { arrayLength, isFunction } from 'Common/Utils';
let currentScreen = null,
popupsVisible = 0,
defaultScreenName = '';
const SCREENS = {},
@ -60,6 +61,7 @@ const SCREENS = {},
vm.modalVisibility.subscribe(value => {
if (value) {
++popupsVisible;
vmDom.style.zIndex = 3000 + popupVisibilityNames().length + 10;
vmDom.hidden = false;
vm.storeAndSetScope();
@ -69,6 +71,7 @@ const SCREENS = {},
vmDom.classList.add('show'); // trigger the transitions
});
} else {
popupsVisible = Math.max(0, popupsVisible-1);
vm.onHide && vm.onHide();
vmDom.classList.remove('show');
vm.restoreScope();
@ -268,6 +271,8 @@ export const
}
},
arePopupsVisible = () => 0 < popupsVisible,
/**
* @param {Function} ViewModelClassToShow
* @returns {boolean}