From aeb94c32b939d467e8c315c14bec5c9826452009 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 19 Sep 2022 11:11:27 -0400 Subject: [PATCH] feat: j and k hotkeys in topic to navigate through it quickly --- public/src/client/topic.js | 40 ++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/public/src/client/topic.js b/public/src/client/topic.js index 8f052bab2b..961fcd74c3 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -73,19 +73,39 @@ define('forum/topic', [ }; function handleTopicSearch() { - if (config.topicSearchEnabled) { - require(['mousetrap', 'search'], function (mousetrap, search) { - mousetrap.bind(['command+f', 'ctrl+f'], function (e) { - e.preventDefault(); - $('#search-fields input').val('in:topic-' + ajaxify.data.tid + ' '); - search.showAndFocusInput(); - }); + require(['mousetrap'], (mousetrap) => { + if (config.topicSearchEnabled) { + require(['search'], function (search) { + mousetrap.bind(['command+f', 'ctrl+f'], function (e) { + e.preventDefault(); + $('#search-fields input').val('in:topic-' + ajaxify.data.tid + ' '); + search.showAndFocusInput(); + }); - hooks.onPage('action:ajaxify.cleanup', () => { - mousetrap.unbind(['command+f', 'ctrl+f']); + hooks.onPage('action:ajaxify.cleanup', () => { + mousetrap.unbind(['command+f', 'ctrl+f']); + }); }); + } + + mousetrap.bind('j', () => { + const index = navigator.getIndex(); + const count = navigator.getCount(); + if (index === count) { + return; + } + + navigator.scrollToIndex(index, true, 0); }); - } + + mousetrap.bind('k', () => { + const index = navigator.getIndex(); + if (index === 1) { + return; + } + navigator.scrollToIndex(index - 2, true, 0); + }); + }); } Topic.toTop = function () {