mirror of https://github.com/zulip/zulip.git
popovers: Enable keyboard support for user info popovers.
This commit enables keyboard support for user info popovers for navigating through popover options using up/down keys. We add get_user_info_popover_items function, whose implementation is different from other similar functions. Instead of using popover_data.$tip we directly use $("div.user-info-popover") because when we open the popover of bot owner from the bot popover, the element which opens the popover is removed from DOM and popover_data is undefined.
This commit is contained in:
parent
7525642507
commit
4dc3e5f96f
|
@ -210,6 +210,7 @@ run_test("basic_chars", () => {
|
|||
actions_popped: return_false,
|
||||
message_info_popped: return_false,
|
||||
user_sidebar_popped: return_false,
|
||||
user_info_popped: return_false,
|
||||
});
|
||||
set_global("stream_popover", {
|
||||
stream_popped: return_false,
|
||||
|
|
|
@ -306,6 +306,11 @@ exports.process_enter_key = function (e) {
|
|||
return true;
|
||||
}
|
||||
|
||||
if (popovers.user_info_popped()) {
|
||||
popovers.user_info_popover_handle_keyboard("enter");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (stream_popover.stream_popped()) {
|
||||
stream_popover.stream_sidebar_menu_handle_keyboard("enter");
|
||||
return true;
|
||||
|
@ -524,7 +529,7 @@ exports.process_hotkey = function (e, hotkey) {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (overlays.settings_open()) {
|
||||
if (overlays.settings_open() && !popovers.user_info_popped()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -579,6 +584,11 @@ exports.process_hotkey = function (e, hotkey) {
|
|||
return true;
|
||||
}
|
||||
|
||||
if (popovers.user_info_popped()) {
|
||||
popovers.user_info_popover_handle_keyboard(event_name);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (popovers.user_sidebar_popped()) {
|
||||
popovers.user_sidebar_popover_handle_keyboard(event_name);
|
||||
return true;
|
||||
|
|
|
@ -388,6 +388,21 @@ function get_user_info_popover_for_message_items() {
|
|||
return $("li:not(.divider):visible a", popover_data.$tip);
|
||||
}
|
||||
|
||||
function get_user_info_popover_items() {
|
||||
const popover_elt = $("div.user-info-popover");
|
||||
if (!current_user_info_popover_elem || !popover_elt.length) {
|
||||
blueslip.error("Trying to get menu items when action popover is closed.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (popover_elt.length >= 2) {
|
||||
blueslip.error("More than one user info popovers cannot be opened at same time.");
|
||||
return;
|
||||
}
|
||||
|
||||
return $("li:not(.divider):visible a", popover_elt);
|
||||
}
|
||||
|
||||
function fetch_group_members(member_ids) {
|
||||
return member_ids
|
||||
.map((m) => people.get_by_user_id(m))
|
||||
|
@ -745,6 +760,11 @@ exports.user_info_popover_for_message_handle_keyboard = function (key) {
|
|||
exports.popover_items_handle_keyboard(key, items);
|
||||
};
|
||||
|
||||
exports.user_info_popover_handle_keyboard = function (key) {
|
||||
const items = get_user_info_popover_items();
|
||||
exports.popover_items_handle_keyboard(key, items);
|
||||
};
|
||||
|
||||
exports.show_sender_info = function () {
|
||||
const $message = $(".selected_message");
|
||||
const $sender = $message.find(".sender_info_hover");
|
||||
|
|
Loading…
Reference in New Issue