mirror of
https://github.com/thelounge/thelounge
synced 2024-11-22 20:13:07 +00:00
Scroll to newly joined/activated channels
Add a new utility function for scrolling elements into view with the same, consistent options, and use it for both the new channel scrolling behavior and the existing userlist scroll code. Implements & resolves #2062
This commit is contained in:
parent
d1648823c3
commit
e5a6417a82
3 changed files with 11 additions and 1 deletions
|
@ -375,6 +375,7 @@ $(function() {
|
|||
utils.toggleNotificationMarkers(false);
|
||||
}
|
||||
|
||||
utils.scrollIntoViewNicely(self[0]);
|
||||
slideoutMenu.toggle(false);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ const fuzzy = require("fuzzy");
|
|||
const Mousetrap = require("mousetrap");
|
||||
|
||||
const templates = require("../views");
|
||||
const utils = require("./utils");
|
||||
|
||||
const chat = $("#chat");
|
||||
|
||||
|
@ -93,7 +94,7 @@ exports.handleKeybinds = function(input) {
|
|||
}
|
||||
|
||||
// Adjust scroll when active item is outside of the visible area
|
||||
userlist.find(".user.active")[0].scrollIntoView(false);
|
||||
utils.scrollIntoViewNicely(userlist.find(".user.active")[0]);
|
||||
});
|
||||
|
||||
// When pressing Enter, open the context menu (emit a click) on the active
|
||||
|
|
|
@ -14,6 +14,7 @@ module.exports = {
|
|||
lastMessageId,
|
||||
confirmExit,
|
||||
forceFocus,
|
||||
scrollIntoViewNicely,
|
||||
hasRoleInChannel,
|
||||
move,
|
||||
resetHeight,
|
||||
|
@ -58,6 +59,13 @@ function forceFocus() {
|
|||
input.trigger("click").trigger("focus");
|
||||
}
|
||||
|
||||
// Reusable scrollIntoView parameters for channel list / user list
|
||||
function scrollIntoViewNicely(el) {
|
||||
// Ideally this would use behavior: "smooth", but that does not consistently work in e.g. Chrome
|
||||
// https://github.com/iamdustan/smoothscroll/issues/28#issuecomment-364061459
|
||||
el.scrollIntoView({block: "nearest", inline: "nearest"});
|
||||
}
|
||||
|
||||
function collapse() {
|
||||
$(".chan.active .toggle-button.toggle-preview.opened").click();
|
||||
return true;
|
||||
|
|
Loading…
Reference in a new issue