snappymail/dev/Knoin/AbstractViewNext.js
RainLoop Team 17669b7be0 es5 -> es2015 (last stage)
Signature plugin fixes
Add view decorator
A large number of fixes
2016-08-20 20:30:16 +03:00

64 lines
1.4 KiB
JavaScript

import ko from 'ko';
import {delegateRun, inFocus} from 'Common/Utils';
import {KeyState, EventKeyCode} from 'Common/Enums';
import {$win, keyScope} from 'Common/Globals';
class AbstractViewNext
{
constructor() {
this.bDisabeCloseOnEsc = false;
this.sDefaultKeyScope = KeyState.None;
this.sCurrentKeyScope = this.sDefaultKeyScope;
this.viewModelVisibility = ko.observable(false);
this.modalVisibility = ko.observable(false).extend({rateLimit: 0});
this.viewModelName = '';
this.viewModelNames = [];
this.viewModelDom = null;
}
/**
* @returns {void}
*/
storeAndSetKeyScope() {
this.sCurrentKeyScope = keyScope();
keyScope(this.sDefaultKeyScope);
}
/**
* @returns {void}
*/
restoreKeyScope() {
keyScope(this.sCurrentKeyScope);
}
/**
* @returns {void}
*/
registerPopupKeyDown() {
$win.on('keydown', (event) => {
if (event && this.modalVisibility && this.modalVisibility())
{
if (!this.bDisabeCloseOnEsc && EventKeyCode.Esc === event.keyCode)
{
delegateRun(this, 'cancelCommand');
return false;
}
else if (EventKeyCode.Backspace === event.keyCode && !inFocus())
{
return false;
}
}
return true;
});
}
cancelCommand() {} // eslint-disable-line no-empty-function
closeCommand() {} // eslint-disable-line no-empty-function
}
export {AbstractViewNext, AbstractViewNext as default};