diff --git a/dev/External/ko.js b/dev/External/ko.js index 06a8ef5d0..53425caa9 100644 --- a/dev/External/ko.js +++ b/dev/External/ko.js @@ -28,6 +28,11 @@ export const dispose = disposable => isFunction(disposable?.dispose) && disposable.dispose(), + onEvent = (element, event, fn) => { + element.addEventListener(event, fn); + ko.utils.domNodeDisposal.addDisposeCallback(element, () => element.removeEventListener(event, fn)); + }, + onKey = (key, element, fValueAccessor, fAllBindings, model) => { let fn = event => { if (key == event.key) { @@ -36,8 +41,7 @@ export const fValueAccessor().call(model); } }; - element.addEventListener('keydown', fn); - ko.utils.domNodeDisposal.addDisposeCallback(element, () => element.removeEventListener('keydown', fn)); + onEvent(element, 'keydown', fn); }, // With this we don't need delegateRunOnDestroy @@ -82,6 +86,15 @@ Object.assign(ko.bindingHandlers, { onKey(' ', element, fValueAccessor, fAllBindings, model) }, + toggle: { + init: (element, fValueAccessor) => { + let observable = fValueAccessor(), + fn = () => observable(!observable()); + onEvent(element, 'click', fn); + onEvent(element, 'keydown', event => ' ' == event.key && fn()); + } + }, + i18nUpdate: { update: (element, fValueAccessor) => { ko.unwrap(fValueAccessor()); diff --git a/dev/View/User/Login.js b/dev/View/User/Login.js index 3cde435cc..044813049 100644 --- a/dev/View/User/Login.js +++ b/dev/View/User/Login.js @@ -92,10 +92,6 @@ export class LoginUserView extends AbstractViewLogin { this.submitError(''); } - toggleSignMe() { - this.signMe(!this.signMe()); - } - submitCommand(self, event) { const email = this.email().trim(); this.email(email); diff --git a/snappymail/v/0.0.0/app/templates/Views/User/Login.html b/snappymail/v/0.0.0/app/templates/Views/User/Login.html index f5e626ef9..e1dfbbf3d 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/Login.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/Login.html @@ -25,7 +25,7 @@