summaryrefslogtreecommitdiff
path: root/assets/js/components/keyboard-shortcuts.js
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-12-30 20:14:36 -0500
committerFrederic Guillot <fred@kanboard.net>2016-12-30 20:14:36 -0500
commitff79ec72c16f4a9ad1b36601172a32e48c8b21d1 (patch)
tree3225f91a9cbcd9b3a74e184c929fe62aaa66863f /assets/js/components/keyboard-shortcuts.js
parente1344e3e449430ac13ef79b03bfcaa2c0c82d150 (diff)
Remove dependency on Mousetrap
Diffstat (limited to 'assets/js/components/keyboard-shortcuts.js')
-rw-r--r--assets/js/components/keyboard-shortcuts.js109
1 files changed, 105 insertions, 4 deletions
diff --git a/assets/js/components/keyboard-shortcuts.js b/assets/js/components/keyboard-shortcuts.js
index 49524a76..22859bd6 100644
--- a/assets/js/components/keyboard-shortcuts.js
+++ b/assets/js/components/keyboard-shortcuts.js
@@ -1,4 +1,105 @@
-// Open board selector: "b"
-KB.onKey(98, function () {
- KB.trigger('board.selector.open');
-});
+KB.keyboardShortcuts = function () {
+ function goToLink (selector) {
+ var element = KB.find(selector);
+
+ if (element !== null) {
+ window.location = element.attr('href');
+ }
+ }
+
+ function submitForm() {
+ var forms = $("form");
+
+ if (forms.length == 1) {
+ forms.submit();
+ } else if (forms.length > 1) {
+ if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
+ $(document.activeElement).parents("form").submit();
+ } else if (_KB.get("Popover").isOpen()) {
+ $("#popover-container form").submit();
+ }
+ }
+ }
+
+ KB.onKey('?', function () {
+ _KB.get("Popover").open($("body").data("keyboard-shortcut-url"));
+ });
+
+ KB.onKey('Escape', function () {
+ if (! KB.exists('#suggest-menu')) {
+ _KB.get("Popover").close();
+ _KB.get("Dropdown").close();
+ }
+ });
+
+ KB.onKey('Meta+Enter', submitForm, true);
+ KB.onKey('Control+Enter', submitForm, true);
+
+ KB.onKey('b', function () {
+ KB.trigger('board.selector.open');
+ });
+
+ if (KB.exists('#board')) {
+ KB.onKey('c', function () {
+ _KB.get('BoardHorizontalScrolling').toggle();
+ });
+
+ KB.onKey('s', function () {
+ _KB.get('BoardCollapsedMode').toggle();
+ });
+
+ KB.onKey('n', function () {
+ _KB.get("Popover").open($("#board").data("task-creation-url"));
+ });
+ }
+
+ if (KB.exists('#task-view')) {
+ KB.onKey('e', function () {
+ _KB.get("Popover").open(KB.find('#task-view').data('editUrl'));
+ });
+
+ KB.onKey('c', function () {
+ _KB.get("Popover").open(KB.find('#task-view').data('commentUrl'));
+ });
+
+ KB.onKey('s', function () {
+ _KB.get("Popover").open(KB.find('#task-view').data('subtaskUrl'));
+ });
+
+ KB.onKey('l', function () {
+ _KB.get("Popover").open(KB.find('#task-view').data('internalLinkUrl'));
+ });
+ }
+
+ KB.onKey('f', function () {
+ KB.focus('#form-search');
+ });
+
+ KB.onKey('r', function () {
+ var reset = $(".filter-reset").data("filter");
+ var input = $("#form-search");
+
+ input.val(reset);
+ $("form.search").submit();
+ });
+
+ KB.onKey('v+o', function () {
+ goToLink('a.view-overview');
+ });
+
+ KB.onKey('v+b', function () {
+ goToLink('a.view-board');
+ });
+
+ KB.onKey('v+c', function () {
+ goToLink('a.view-calendar');
+ });
+
+ KB.onKey('v+l', function () {
+ goToLink('a.view-listing');
+ });
+
+ KB.onKey('v+g', function () {
+ goToLink('a.view-gantt');
+ });
+};