summaryrefslogtreecommitdiff
path: root/assets/js/components/keyboard-shortcuts.js
blob: 02d62119103a0a3bb0afbcbc107465d0d89fe4a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
KB.keyboardShortcuts = function () {
    function goToLink (selector) {
        if (! KB.modal.isOpen()) {
            var element = KB.find(selector);

            if (element !== null) {
                window.location = element.attr('href');
            }
        }
    }

    function submitForm() {
        if (KB.modal.isOpen()) {
            KB.modal.submitForm();
        } else {
            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();
                }
            }
        }
    }

    KB.onKey('?', function () {
        if (! KB.modal.isOpen()) {
            KB.modal.open(KB.find('body').data('keyboardShortcutUrl'));
        }
    });

    KB.onKey('Escape', function () {
        if (! KB.exists('#suggest-menu')) {
            KB.trigger('modal.close');
            _KB.get("Dropdown").close();
        }
    });

    KB.onKey('Enter', submitForm, true, true);
    KB.onKey('Enter', submitForm, true, false, true);

    KB.onKey('b', function () {
        if (! KB.modal.isOpen()) {
            KB.trigger('board.selector.open');
        }
    });

    if (KB.exists('#board')) {
        KB.onKey('c', function () {
            if (! KB.modal.isOpen()) {
                _KB.get('BoardHorizontalScrolling').toggle();
            }
        });

        KB.onKey('s', function () {
            if (! KB.modal.isOpen()) {
                _KB.get('BoardCollapsedMode').toggle();
            }
        });

        KB.onKey('n', function () {
            if (! KB.modal.isOpen()) {
                KB.modal.open(KB.find('#board').data('taskCreationUrl'), 'large', false);
            }
        });
    }

    if (KB.exists('#task-view')) {
        KB.onKey('e', function () {
            if (! KB.modal.isOpen()) {
                KB.modal.open(KB.find('#task-view').data('editUrl'), 'large', false);
            }
        });

        KB.onKey('c', function () {
            if (! KB.modal.isOpen()) {
                KB.modal.open(KB.find('#task-view').data('commentUrl'), 'medium', false);
            }
        });

        KB.onKey('s', function () {
            if (! KB.modal.isOpen()) {
                KB.modal.open(KB.find('#task-view').data('subtaskUrl'), 'medium', false);
            }
        });

        KB.onKey('l', function () {
            if (! KB.modal.isOpen()) {
                KB.modal.open(KB.find('#task-view').data('internalLinkUrl'), 'medium', false);
            }
        });
    }

    KB.onKey('f', function () {
        if (! KB.modal.isOpen()) {
            KB.focus('#form-search');
        }
    });

    KB.onKey('r', function () {
        if (! KB.modal.isOpen()) {
            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+l', function () {
        goToLink('a.view-listing');
    });
};