compose: Extract method to get compose click target.

This commit is contained in:
Aman Agrawal
2021-12-03 06:19:24 +00:00
committed by Tim Abbott
parent 9d330365fc
commit b4c2c97ffd
4 changed files with 26 additions and 39 deletions

View File

@@ -21,7 +21,6 @@ import * as markdown from "./markdown";
import * as notifications from "./notifications";
import {page_params} from "./page_params";
import * as people from "./people";
import * as popover_menus from "./popover_menus";
import * as reminder from "./reminder";
import * as rendered_markdown from "./rendered_markdown";
import * as resize from "./resize";
@@ -623,14 +622,12 @@ export function initialize() {
let target_textarea;
let edit_message_id;
const compose_control_buttons_popover = popover_menus.get_compose_control_buttons_popover();
if (compose_control_buttons_popover) {
target_textarea = $(compose_control_buttons_popover.reference)
.closest("form")
.find("textarea");
} else if ($(e.target).parents(".message_edit_form").length === 1) {
edit_message_id = rows.id($(e.target).parents(".message_row"));
const compose_click_target = compose_ui.get_compose_click_target(e);
if ($(compose_click_target).parents(".message_edit_form").length === 1) {
edit_message_id = rows.id($(compose_click_target).parents(".message_row"));
target_textarea = $(`#edit_form_${CSS.escape(edit_message_id)} .message_edit_content`);
} else {
target_textarea = $(compose_click_target).closest("form").find("textarea");
}
if (!instance.calendarContainer) {
@@ -640,7 +637,7 @@ export function initialize() {
};
instance = composebox_typeahead.show_flatpickr(
$(e.target)[0],
$(compose_click_target)[0],
on_timestamp_selection,
new Date(),
{
@@ -706,19 +703,9 @@ export function initialize() {
});
$("body").on("click", ".formatting_button", (e) => {
const $elt = $(e.target);
const compose_control_buttons_popover = popover_menus.get_compose_control_buttons_popover();
let textarea;
if (compose_control_buttons_popover) {
textarea = $(compose_control_buttons_popover.reference)
.closest("form")
.find("textarea");
} else {
textarea = $elt.closest("form").find("textarea");
}
const format_type = $elt.attr("data-format-type");
const $compose_click_target = $(compose_ui.get_compose_click_target(e));
const textarea = $compose_click_target.closest("form").find("textarea");
const format_type = $(e.target).attr("data-format-type");
compose_ui.format_text(textarea, format_type);
textarea.trigger("focus");
e.preventDefault();

View File

@@ -6,6 +6,7 @@ import * as common from "./common";
import {$t} from "./i18n";
import * as loading from "./loading";
import * as people from "./people";
import * as popover_menus from "./popover_menus";
import * as rtl from "./rtl";
import * as settings_data from "./settings_data";
import * as user_status from "./user_status";
@@ -401,3 +402,11 @@ export function show_compose_spinner() {
$("#compose-send-button span").hide();
$("#compose-send-button").addClass("disable-btn");
}
export function get_compose_click_target(e) {
const compose_control_buttons_popover = popover_menus.get_compose_control_buttons_popover();
if (compose_control_buttons_popover) {
return compose_control_buttons_popover.reference;
}
return e.target;
}

View File

@@ -12,7 +12,6 @@ import * as blueslip from "./blueslip";
import * as compose_ui from "./compose_ui";
import * as message_lists from "./message_lists";
import * as message_store from "./message_store";
import * as popover_menus from "./popover_menus";
import * as popovers from "./popovers";
import * as reactions from "./reactions";
import * as rows from "./rows";
@@ -701,22 +700,19 @@ export function register_click_handlers() {
hide_emoji_popover();
});
$("body").on("click", ".emoji_map", function (e) {
$("body").on("click", ".emoji_map", (e) => {
e.preventDefault();
e.stopPropagation();
const compose_control_buttons_popover = popover_menus.get_compose_control_buttons_popover();
if (compose_control_buttons_popover) {
e.target = compose_control_buttons_popover.reference;
}
if ($(e.target).parents(".message_edit_form").length === 1) {
const compose_click_target = compose_ui.get_compose_click_target(e);
if ($(compose_click_target).parents(".message_edit_form").length === 1) {
// Store message id in global variable edit_message_id so that
// its value can be further used to correctly find the message textarea element.
edit_message_id = rows.get_message_id(e.target);
edit_message_id = rows.get_message_id(compose_click_target);
} else {
edit_message_id = null;
}
toggle_emoji_popover(this);
toggle_emoji_popover(compose_click_target);
});
$("#main_div").on("click", ".reaction_button", function (e) {

View File

@@ -8,7 +8,6 @@ import * as blueslip from "./blueslip";
import * as compose_ui from "./compose_ui";
import {media_breakpoints_num} from "./css_variables";
import {page_params} from "./page_params";
import * as popover_menus from "./popover_menus";
import * as popovers from "./popovers";
import * as rows from "./rows";
import * as ui_util from "./ui_util";
@@ -221,19 +220,15 @@ export function initialize() {
e.preventDefault();
e.stopPropagation();
const compose_control_buttons_popover = popover_menus.get_compose_control_buttons_popover();
if (compose_control_buttons_popover) {
e.target = compose_control_buttons_popover.reference;
}
if (active_popover_element && active_popover_element.get()[0] === e.target) {
const compose_click_target = compose_ui.get_compose_click_target(e);
if (active_popover_element && active_popover_element.get()[0] === compose_click_target) {
// Hide giphy popover if already active.
hide_giphy_popover();
return;
}
popovers.hide_all();
const $elt = $(e.target);
const $elt = $(compose_click_target);
if ($elt.parents(".message_edit_form").length === 1) {
// Store message id in global variable edit_message_id so that
// its value can be further used to correctly find the message textarea element.