mirror of
https://github.com/zulip/zulip.git
synced 2025-11-11 09:27:43 +00:00
left_sidebar: Add popover to make different views default.
Fixes #27324
This commit is contained in:
@@ -2,6 +2,7 @@ import $ from "jquery";
|
|||||||
|
|
||||||
import * as resize from "./resize";
|
import * as resize from "./resize";
|
||||||
import * as scheduled_messages from "./scheduled_messages";
|
import * as scheduled_messages from "./scheduled_messages";
|
||||||
|
import * as settings_config from "./settings_config";
|
||||||
import * as ui_util from "./ui_util";
|
import * as ui_util from "./ui_util";
|
||||||
|
|
||||||
let last_mention_count = 0;
|
let last_mention_count = 0;
|
||||||
@@ -141,6 +142,22 @@ export function highlight_inbox_view() {
|
|||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function handle_home_view_changed(new_default_view) {
|
||||||
|
const $recent_view_sidebar_menu_icon = $(".recent-view-sidebar-menu-icon");
|
||||||
|
const $all_messages_sidebar_menu_icon = $(".all-messages-sidebar-menu-icon");
|
||||||
|
if (new_default_view === settings_config.default_view_values.all_messages.code) {
|
||||||
|
$recent_view_sidebar_menu_icon.removeClass("hide");
|
||||||
|
$all_messages_sidebar_menu_icon.addClass("hide");
|
||||||
|
} else if (new_default_view === settings_config.default_view_values.recent_topics.code) {
|
||||||
|
$recent_view_sidebar_menu_icon.addClass("hide");
|
||||||
|
$all_messages_sidebar_menu_icon.removeClass("hide");
|
||||||
|
} else {
|
||||||
|
// Inbox is default view.
|
||||||
|
$recent_view_sidebar_menu_icon.removeClass("hide");
|
||||||
|
$all_messages_sidebar_menu_icon.removeClass("hide");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function initialize() {
|
export function initialize() {
|
||||||
update_scheduled_messages_row();
|
update_scheduled_messages_row();
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import $ from "jquery";
|
import $ from "jquery";
|
||||||
|
|
||||||
import render_drafts_sidebar_actions from "../templates/drafts_sidebar_action.hbs";
|
import render_drafts_sidebar_actions from "../templates/drafts_sidebar_action.hbs";
|
||||||
|
import render_left_sidebar_all_messages_popover from "../templates/popovers/left_sidebar_all_messages_popover.hbs";
|
||||||
import render_left_sidebar_condensed_views_popover from "../templates/popovers/left_sidebar_condensed_views_popover.hbs";
|
import render_left_sidebar_condensed_views_popover from "../templates/popovers/left_sidebar_condensed_views_popover.hbs";
|
||||||
import render_left_sidebar_inbox_popover from "../templates/popovers/left_sidebar_inbox_popover.hbs";
|
import render_left_sidebar_inbox_popover from "../templates/popovers/left_sidebar_inbox_popover.hbs";
|
||||||
|
import render_left_sidebar_recent_view_popover from "../templates/popovers/left_sidebar_recent_view_popover.hbs";
|
||||||
import render_starred_messages_sidebar_actions from "../templates/starred_messages_sidebar_actions.hbs";
|
import render_starred_messages_sidebar_actions from "../templates/starred_messages_sidebar_actions.hbs";
|
||||||
|
|
||||||
import * as channel from "./channel";
|
import * as channel from "./channel";
|
||||||
@@ -130,6 +132,50 @@ export function initialize() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// All messages popover
|
||||||
|
popover_menus.register_popover_menu(".all-messages-sidebar-menu-icon", {
|
||||||
|
...popover_menus.left_sidebar_tippy_options,
|
||||||
|
onShow(instance) {
|
||||||
|
popover_menus.popover_instances.left_sidebar_all_messages_popover = instance;
|
||||||
|
popovers.hide_all();
|
||||||
|
const view_code = settings_config.default_view_values.all_messages.code;
|
||||||
|
instance.setContent(
|
||||||
|
parse_html(
|
||||||
|
render_left_sidebar_all_messages_popover({
|
||||||
|
is_default_view: user_settings.default_view === view_code,
|
||||||
|
view_code,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
onHidden(instance) {
|
||||||
|
instance.destroy();
|
||||||
|
popover_menus.popover_instances.left_sidebar_all_messages_popover = undefined;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Recent view popover
|
||||||
|
popover_menus.register_popover_menu(".recent-view-sidebar-menu-icon", {
|
||||||
|
...popover_menus.left_sidebar_tippy_options,
|
||||||
|
onShow(instance) {
|
||||||
|
popover_menus.popover_instances.left_sidebar_recent_view_popover = instance;
|
||||||
|
popovers.hide_all();
|
||||||
|
const view_code = settings_config.default_view_values.recent_topics.code;
|
||||||
|
instance.setContent(
|
||||||
|
parse_html(
|
||||||
|
render_left_sidebar_recent_view_popover({
|
||||||
|
is_default_view: user_settings.default_view === view_code,
|
||||||
|
view_code,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
onHidden(instance) {
|
||||||
|
instance.destroy();
|
||||||
|
popover_menus.popover_instances.left_sidebar_recent_view_popover = undefined;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
popover_menus.register_popover_menu(".left-sidebar-navigation-menu-icon", {
|
popover_menus.register_popover_menu(".left-sidebar-navigation-menu-icon", {
|
||||||
...popover_menus.left_sidebar_tippy_options,
|
...popover_menus.left_sidebar_tippy_options,
|
||||||
onShow(instance) {
|
onShow(instance) {
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ export const popover_instances = {
|
|||||||
starred_messages: null,
|
starred_messages: null,
|
||||||
drafts: null,
|
drafts: null,
|
||||||
left_sidebar_inbox_popover: null,
|
left_sidebar_inbox_popover: null,
|
||||||
|
left_sidebar_all_messages_popover: null,
|
||||||
|
left_sidebar_recent_view_popover: null,
|
||||||
top_left_sidebar: null,
|
top_left_sidebar: null,
|
||||||
message_actions: null,
|
message_actions: null,
|
||||||
stream_settings: null,
|
stream_settings: null,
|
||||||
|
|||||||
@@ -721,19 +721,22 @@ export function dispatch_normal_event(event) {
|
|||||||
// present in the backend/Jinja2 templates.
|
// present in the backend/Jinja2 templates.
|
||||||
settings_display.set_default_language_name(event.language_name);
|
settings_display.set_default_language_name(event.language_name);
|
||||||
}
|
}
|
||||||
if (
|
if (event.property === "default_view") {
|
||||||
event.property === "default_view" && // If current hash is empty (default view), and the
|
left_sidebar_navigation_area.handle_home_view_changed(event.value);
|
||||||
|
|
||||||
|
// If current hash is empty (default view), and the
|
||||||
// user changes the default view while in settings,
|
// user changes the default view while in settings,
|
||||||
// then going back to an empty hash on closing the
|
// then going back to an empty hash on closing the
|
||||||
// overlay will not match the view currently displayed
|
// overlay will not match the view currently displayed
|
||||||
// under settings, so we set the hash to the previous
|
// under settings, so we set the hash to the previous
|
||||||
// value of the default view.
|
// value of the default view.
|
||||||
!browser_history.state.hash_before_overlay &&
|
if (!browser_history.state.hash_before_overlay && overlays.settings_open()) {
|
||||||
overlays.settings_open()
|
|
||||||
) {
|
|
||||||
browser_history.state.hash_before_overlay =
|
browser_history.state.hash_before_overlay =
|
||||||
"#" +
|
"#" +
|
||||||
(original_default_view === "recent_topics" ? "recent" : original_default_view);
|
(original_default_view === "recent_topics"
|
||||||
|
? "recent"
|
||||||
|
: original_default_view);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (event.property === "twenty_four_hour_time") {
|
if (event.property === "twenty_four_hour_time") {
|
||||||
// Rerender the whole message list UI
|
// Rerender the whole message list UI
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ import * as scroll_util from "./scroll_util";
|
|||||||
import * as search from "./search";
|
import * as search from "./search";
|
||||||
import * as server_events from "./server_events";
|
import * as server_events from "./server_events";
|
||||||
import * as settings from "./settings";
|
import * as settings from "./settings";
|
||||||
|
import * as settings_config from "./settings_config";
|
||||||
import * as settings_data from "./settings_data";
|
import * as settings_data from "./settings_data";
|
||||||
import * as settings_display from "./settings_display";
|
import * as settings_display from "./settings_display";
|
||||||
import * as settings_notifications from "./settings_notifications";
|
import * as settings_notifications from "./settings_notifications";
|
||||||
@@ -163,6 +164,10 @@ function initialize_left_sidebar() {
|
|||||||
const rendered_sidebar = render_left_sidebar({
|
const rendered_sidebar = render_left_sidebar({
|
||||||
is_guest: page_params.is_guest,
|
is_guest: page_params.is_guest,
|
||||||
development_environment: page_params.development_environment,
|
development_environment: page_params.development_environment,
|
||||||
|
is_all_messages_default_view:
|
||||||
|
user_settings.default_view === settings_config.default_view_values.all_messages.code,
|
||||||
|
is_recent_view_default_view:
|
||||||
|
user_settings.default_view === settings_config.default_view_values.recent_topics.code,
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#left-sidebar-container").html(rendered_sidebar);
|
$("#left-sidebar-container").html(rendered_sidebar);
|
||||||
|
|||||||
@@ -910,6 +910,10 @@ li.top_left_scheduled_messages {
|
|||||||
by .zulip-icon */
|
by .zulip-icon */
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
|
|
||||||
|
&.hide {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If you hover directly over the ellipsis itself,
|
If you hover directly over the ellipsis itself,
|
||||||
show it in black.
|
show it in black.
|
||||||
|
|||||||
@@ -68,6 +68,9 @@
|
|||||||
{{~!-- squash whitespace --~}}
|
{{~!-- squash whitespace --~}}
|
||||||
<span class="left-sidebar-navigation-label">{{t 'Recent conversations' }}</span>
|
<span class="left-sidebar-navigation-label">{{t 'Recent conversations' }}</span>
|
||||||
</a>
|
</a>
|
||||||
|
<span class="arrow sidebar-menu-icon recent-view-sidebar-menu-icon hidden-for-spectators {{#if is_recent_view_default_view}}hide{{/if}}">
|
||||||
|
<i class="zulip-icon zulip-icon-more-vertical" aria-hidden="true"></i>
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="top_left_all_messages top_left_row">
|
<li class="top_left_all_messages top_left_row">
|
||||||
<a href="#all_messages" class="home-link tippy-views-tooltip left-sidebar-navigation-label-container" data-tooltip-template-id="all-message-tooltip-template">
|
<a href="#all_messages" class="home-link tippy-views-tooltip left-sidebar-navigation-label-container" data-tooltip-template-id="all-message-tooltip-template">
|
||||||
@@ -77,6 +80,9 @@
|
|||||||
{{~!-- squash whitespace --~}}
|
{{~!-- squash whitespace --~}}
|
||||||
<span class="left-sidebar-navigation-label">{{t 'All messages' }}</span>
|
<span class="left-sidebar-navigation-label">{{t 'All messages' }}</span>
|
||||||
</a>
|
</a>
|
||||||
|
<span class="arrow sidebar-menu-icon all-messages-sidebar-menu-icon hidden-for-spectators {{#if is_all_messages_default_view}}hide{{/if}}">
|
||||||
|
<i class="zulip-icon zulip-icon-more-vertical" aria-hidden="true"></i>
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="top_left_mentions top_left_row hidden-for-spectators">
|
<li class="top_left_mentions top_left_row hidden-for-spectators">
|
||||||
<a class="left-sidebar-navigation-label-container" href="#narrow/is/mentioned">
|
<a class="left-sidebar-navigation-label-container" href="#narrow/is/mentioned">
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<ul class="nav nav-list">
|
||||||
|
<li>
|
||||||
|
<a tabindex="0" class="set-default-view" data-view-code="{{view_code}}">
|
||||||
|
<i class="fa fa-home" aria-hidden="true"></i>
|
||||||
|
{{t "Make all messages my home view" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<ul class="nav nav-list">
|
||||||
|
<li>
|
||||||
|
<a tabindex="0" class="set-default-view" data-view-code="{{view_code}}">
|
||||||
|
<i class="fa fa-home" aria-hidden="true"></i>
|
||||||
|
{{t "Make recent conversations my home view" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
@@ -79,6 +79,7 @@ const submessage = mock_esm("../src/submessage");
|
|||||||
mock_esm("../src/left_sidebar_navigation_area", {
|
mock_esm("../src/left_sidebar_navigation_area", {
|
||||||
update_starred_count() {},
|
update_starred_count() {},
|
||||||
update_scheduled_messages_row() {},
|
update_scheduled_messages_row() {},
|
||||||
|
handle_home_view_changed() {},
|
||||||
});
|
});
|
||||||
const typing_events = mock_esm("../src/typing_events");
|
const typing_events = mock_esm("../src/typing_events");
|
||||||
const unread_ops = mock_esm("../src/unread_ops");
|
const unread_ops = mock_esm("../src/unread_ops");
|
||||||
@@ -957,6 +958,13 @@ run_test("user_settings", ({override}) => {
|
|||||||
assert.equal(user_settings.default_view, "all_messages");
|
assert.equal(user_settings.default_view, "all_messages");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
event = event_fixtures.user_settings__default_view_inbox;
|
||||||
|
user_settings.default_view = "all_messages";
|
||||||
|
dispatch(event);
|
||||||
|
assert.equal(user_settings.default_view, "inbox");
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const stub = make_stub();
|
const stub = make_stub();
|
||||||
event = event_fixtures.user_settings__color_scheme_automatic;
|
event = event_fixtures.user_settings__color_scheme_automatic;
|
||||||
|
|||||||
@@ -920,6 +920,13 @@ exports.fixtures = {
|
|||||||
value: "all_messages",
|
value: "all_messages",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
user_settings__default_view_inbox: {
|
||||||
|
type: "user_settings",
|
||||||
|
op: "update",
|
||||||
|
property: "default_view",
|
||||||
|
value: "inbox",
|
||||||
|
},
|
||||||
|
|
||||||
user_settings__default_view_recent_topics: {
|
user_settings__default_view_recent_topics: {
|
||||||
type: "user_settings",
|
type: "user_settings",
|
||||||
op: "update",
|
op: "update",
|
||||||
|
|||||||
Reference in New Issue
Block a user