mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
compose_closed_ui: Change mobile "+" button behavior.
This commit removes the popover from the "+" button shown in the closed compose UI at mobile widths, and instead performs compose actions directly on-click. The "+" button now opens the compose box with the channel picker open (even if the user is in a topic or channel view). This reduces the number of clicks required to start a new message from the closed compose UI in mobile views, and makes the behavior more consistent across all the views. Fixes #30634.
This commit is contained in:
@@ -152,6 +152,18 @@ export function initialize(): void {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("body").on("click", ".compose_mobile_button", () => {
|
||||||
|
// Remove the channel and topic context, since on mobile widths,
|
||||||
|
// the "+" button should open the compose box with the channel
|
||||||
|
// picker open (even if the user is in a topic or channel view).
|
||||||
|
compose_actions.start({
|
||||||
|
message_type: "stream",
|
||||||
|
stream_id: undefined,
|
||||||
|
topic: "",
|
||||||
|
keep_composebox_empty: true,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
$("body").on("click", ".compose_new_direct_message_button", () => {
|
$("body").on("click", ".compose_new_direct_message_button", () => {
|
||||||
compose_actions.start({
|
compose_actions.start({
|
||||||
message_type: "private",
|
message_type: "private",
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
import $ from "jquery";
|
import $ from "jquery";
|
||||||
import assert from "minimalistic-assert";
|
import assert from "minimalistic-assert";
|
||||||
import * as tippy from "tippy.js";
|
|
||||||
|
|
||||||
import render_compose_control_buttons_popover from "../templates/popovers/compose_control_buttons/compose_control_buttons_popover.hbs";
|
import render_compose_control_buttons_popover from "../templates/popovers/compose_control_buttons/compose_control_buttons_popover.hbs";
|
||||||
import render_mobile_message_buttons_popover from "../templates/popovers/mobile_message_buttons_popover.hbs";
|
|
||||||
|
|
||||||
import * as compose_actions from "./compose_actions";
|
|
||||||
import * as giphy_state from "./giphy_state";
|
import * as giphy_state from "./giphy_state";
|
||||||
import * as popover_menus from "./popover_menus";
|
import * as popover_menus from "./popover_menus";
|
||||||
import * as popovers from "./popovers";
|
import * as popovers from "./popovers";
|
||||||
@@ -13,50 +10,6 @@ import * as rows from "./rows";
|
|||||||
import {parse_html} from "./ui_util";
|
import {parse_html} from "./ui_util";
|
||||||
|
|
||||||
export function initialize(): void {
|
export function initialize(): void {
|
||||||
// compose box buttons popover shown on mobile widths.
|
|
||||||
// We want this click event to propagate and hide other popovers
|
|
||||||
// that could possibly obstruct user from using this popover.
|
|
||||||
tippy.delegate("body", {
|
|
||||||
...popover_menus.default_popover_props,
|
|
||||||
// Attach the click event to `.mobile_button_container`, since
|
|
||||||
// the button (`.compose_mobile_button`) already has a hover
|
|
||||||
// action attached, for showing the keyboard shortcut,
|
|
||||||
// and Tippy cannot handle events that trigger two different
|
|
||||||
// actions
|
|
||||||
target: ".mobile_button_container",
|
|
||||||
placement: "top",
|
|
||||||
theme: "popover-menu",
|
|
||||||
onShow(instance) {
|
|
||||||
popover_menus.popover_instances.compose_mobile_button = instance;
|
|
||||||
popover_menus.on_show_prep(instance);
|
|
||||||
instance.setContent(parse_html(render_mobile_message_buttons_popover()));
|
|
||||||
},
|
|
||||||
onMount(instance) {
|
|
||||||
const $popper = $(instance.popper);
|
|
||||||
$popper.one("click", ".compose_mobile_stream_button", (e) => {
|
|
||||||
compose_actions.start({
|
|
||||||
message_type: "stream",
|
|
||||||
trigger: "clear topic button",
|
|
||||||
});
|
|
||||||
e.stopPropagation();
|
|
||||||
popover_menus.hide_current_popover_if_visible(instance);
|
|
||||||
});
|
|
||||||
$popper.one("click", ".compose_mobile_direct_message_button", (e) => {
|
|
||||||
compose_actions.start({
|
|
||||||
message_type: "private",
|
|
||||||
});
|
|
||||||
e.stopPropagation();
|
|
||||||
popover_menus.hide_current_popover_if_visible(instance);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
onHidden(instance) {
|
|
||||||
// Destroy instance so that event handlers
|
|
||||||
// are destroyed too.
|
|
||||||
instance.destroy();
|
|
||||||
popover_menus.popover_instances.compose_mobile_button = null;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// Click event handlers for it are handled in `compose_ui` and
|
// Click event handlers for it are handled in `compose_ui` and
|
||||||
// we don't want to close this popover on click inside it but
|
// we don't want to close this popover on click inside it but
|
||||||
// only if user clicked outside it.
|
// only if user clicked outside it.
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ type PopoverName =
|
|||||||
| "top_left_sidebar"
|
| "top_left_sidebar"
|
||||||
| "message_actions"
|
| "message_actions"
|
||||||
| "stream_settings"
|
| "stream_settings"
|
||||||
| "compose_mobile_button"
|
|
||||||
| "topics_menu"
|
| "topics_menu"
|
||||||
| "send_later"
|
| "send_later"
|
||||||
| "change_visibility_policy"
|
| "change_visibility_policy"
|
||||||
@@ -40,7 +39,6 @@ export const popover_instances: Record<PopoverName, tippy.Instance | null> = {
|
|||||||
top_left_sidebar: null,
|
top_left_sidebar: null,
|
||||||
message_actions: null,
|
message_actions: null,
|
||||||
stream_settings: null,
|
stream_settings: null,
|
||||||
compose_mobile_button: null,
|
|
||||||
topics_menu: null,
|
topics_menu: null,
|
||||||
send_later: null,
|
send_later: null,
|
||||||
change_visibility_policy: null,
|
change_visibility_policy: null,
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
<div class="popover-menu" data-simplebar data-simplebar-tab-index="-1">
|
|
||||||
<ul role="menu" class="popover-menu-list">
|
|
||||||
<li role="none" class="link-item popover-menu-list-item">
|
|
||||||
<a role="menuitem" class="compose_mobile_stream_button popover-menu-link" tabindex="0">
|
|
||||||
<i class="popover-menu-icon zulip-icon zulip-icon-square-plus" aria-hidden="true"></i>
|
|
||||||
<span class="popover-menu-label">{{t "Start new conversation" }}</span>
|
|
||||||
{{popover_hotkey_hints "C"}}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li role="none" class="link-item popover-menu-list-item">
|
|
||||||
<a role="menuitem" class="compose_mobile_direct_message_button popover-menu-link" tabindex="0">
|
|
||||||
<i class="popover-menu-icon zulip-icon zulip-icon-user" aria-hidden="true"></i>
|
|
||||||
<span class="popover-menu-label">{{t "New direct message" }}</span>
|
|
||||||
{{popover_hotkey_hints "X"}}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@@ -19,8 +19,7 @@
|
|||||||
{{tooltip_hotkey_hints "R"}}
|
{{tooltip_hotkey_hints "R"}}
|
||||||
</template>
|
</template>
|
||||||
<template id="left_bar_compose_mobile_button_tooltip_template">
|
<template id="left_bar_compose_mobile_button_tooltip_template">
|
||||||
{{t 'New message' }}
|
{{t 'Start new conversation' }}
|
||||||
{{tooltip_hotkey_hints "C"}}
|
|
||||||
</template>
|
</template>
|
||||||
<template id="new_topic_message_button_tooltip_template">
|
<template id="new_topic_message_button_tooltip_template">
|
||||||
{{t 'New topic' }}
|
{{t 'New topic' }}
|
||||||
|
|||||||
Reference in New Issue
Block a user