mirror of
https://github.com/moparisthebest/mail
synced 2024-08-13 16:43:47 -04:00
51 lines
1.8 KiB
JavaScript
51 lines
1.8 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var ngModule = angular.module('woDirectives');
|
||
|
|
||
|
ngModule.directive('woKeyShortcuts', function($timeout) {
|
||
|
return function(scope, elm) {
|
||
|
elm.bind('keydown', function(e) {
|
||
|
// global state is not yet set, ignore keybaord shortcuts
|
||
|
if (!scope.state) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var modifier = e.ctrlKey || e.metaKey;
|
||
|
|
||
|
if (modifier && e.keyCode === 78 && scope.state.lightbox !== 'write') {
|
||
|
// n -> new mail
|
||
|
e.preventDefault();
|
||
|
scope.state.writer.write();
|
||
|
scope.$apply();
|
||
|
|
||
|
} else if (modifier && e.keyCode === 70 && scope.state.lightbox !== 'write') {
|
||
|
// f -> find
|
||
|
e.preventDefault();
|
||
|
scope.state.mailList.searching = true;
|
||
|
$timeout(function() {
|
||
|
scope.state.mailList.searching = false;
|
||
|
}, 200);
|
||
|
scope.$apply();
|
||
|
|
||
|
} else if (modifier && e.keyCode === 82 && scope.state.lightbox !== 'write' && scope.state.mailList.selected) {
|
||
|
// r -> reply
|
||
|
e.preventDefault();
|
||
|
scope.state.writer.write(scope.state.mailList.selected);
|
||
|
scope.$apply();
|
||
|
|
||
|
} else if (e.keyCode === 27 && scope.state.lightbox !== undefined) {
|
||
|
// escape -> close current lightbox
|
||
|
e.preventDefault();
|
||
|
scope.state.lightbox = undefined;
|
||
|
scope.$apply();
|
||
|
|
||
|
} else if (e.keyCode === 27 && scope.state.nav.open) {
|
||
|
// escape -> close nav view
|
||
|
e.preventDefault();
|
||
|
scope.state.nav.toggle(false);
|
||
|
scope.$apply();
|
||
|
}
|
||
|
|
||
|
});
|
||
|
};
|
||
|
});
|