diff --git a/tools/test-js-with-node b/tools/test-js-with-node index c8c4f4b166..3dc45a4d96 100755 --- a/tools/test-js-with-node +++ b/tools/test-js-with-node @@ -72,7 +72,6 @@ EXEMPT_FILES = make_set( "web/src/compose_closed_ui.ts", "web/src/compose_fade.ts", "web/src/compose_notifications.ts", - "web/src/compose_popovers.ts", "web/src/compose_recipient.ts", "web/src/compose_reply.ts", "web/src/compose_send_menu_popover.js", diff --git a/web/src/click_handlers.ts b/web/src/click_handlers.ts index 7046760c02..69e8708a25 100644 --- a/web/src/click_handlers.ts +++ b/web/src/click_handlers.ts @@ -733,7 +733,7 @@ export function initialize(): void { function handle_compose_click(e: JQuery.ClickEvent): void { const $target = $(e.target); // Emoji clicks should be handled by their own click handler in emoji_picker.js - if ($target.is(".emoji_map, img.emoji, .drag, .compose_gif_icon, .compose_control_menu")) { + if ($target.is(".emoji_map, img.emoji, .drag, .compose_gif_icon")) { return; } diff --git a/web/src/compose_popovers.ts b/web/src/compose_popovers.ts deleted file mode 100644 index bd78ade664..0000000000 --- a/web/src/compose_popovers.ts +++ /dev/null @@ -1,46 +0,0 @@ -import $ from "jquery"; -import assert from "minimalistic-assert"; - -import render_compose_control_buttons_popover from "../templates/popovers/compose_control_buttons/compose_control_buttons_popover.hbs"; - -import * as giphy_state from "./giphy_state.ts"; -import * as popover_menus from "./popover_menus.ts"; -import * as popovers from "./popovers.ts"; -import * as rows from "./rows.ts"; -import {parse_html} from "./ui_util.ts"; - -export function initialize(): void { - // Click event handlers for it are handled in `compose_ui` and - // we don't want to close this popover on click inside it but - // only if user clicked outside it. - popover_menus.register_popover_menu(".compose_control_menu_wrapper", { - placement: "top", - onShow(instance) { - assert(instance.reference instanceof HTMLElement); - const parent_row = rows.get_closest_row($(instance.reference)); - let preview_mode_on; - // If the popover is opened from a message edit form, we want to - // infer the preview mode from that row, else from the compose box. - if (parent_row.length > 0) { - preview_mode_on = parent_row.hasClass("preview_mode"); - } else { - preview_mode_on = $("#compose").hasClass("preview_mode"); - } - instance.setContent( - parse_html( - render_compose_control_buttons_popover({ - giphy_enabled: giphy_state.is_giphy_enabled(), - preview_mode_on, - inside_popover: true, - }), - ), - ); - popover_menus.popover_instances.compose_control_buttons = instance; - popovers.hide_all(); - }, - onHidden(instance) { - instance.destroy(); - popover_menus.popover_instances.compose_control_buttons = null; - }, - }); -} diff --git a/web/src/compose_setup.js b/web/src/compose_setup.js index 4fb5f7333a..13e9d8c5bf 100644 --- a/web/src/compose_setup.js +++ b/web/src/compose_setup.js @@ -390,12 +390,12 @@ export function initialize() { let $target_textarea; let edit_message_id; - const compose_click_target = compose_ui.get_compose_click_target(this); - if ($(compose_click_target).parents(".message_edit_form").length === 1) { - edit_message_id = rows.id($(compose_click_target).parents(".message_row")); + const $compose_click_target = $(this); + 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"); + $target_textarea = $compose_click_target.closest("form").find("textarea"); } if (!flatpickr.is_open()) { @@ -405,7 +405,7 @@ export function initialize() { }; flatpickr.show_flatpickr( - $(compose_click_target)[0], + $compose_click_target[0], on_timestamp_selection, get_timestamp_for_flatpickr(), { @@ -523,7 +523,7 @@ export function initialize() { }); $("body").on("click", ".formatting_button", function (e) { - const $compose_click_target = $(compose_ui.get_compose_click_target(this)); + const $compose_click_target = $(this); const $textarea = $compose_click_target.closest("form").find("textarea"); const format_type = $(this).attr("data-format-type"); compose_ui.format_text($textarea, format_type); diff --git a/web/src/compose_ui.ts b/web/src/compose_ui.ts index 9e52bba6d3..c326ff23cb 100644 --- a/web/src/compose_ui.ts +++ b/web/src/compose_ui.ts @@ -21,7 +21,6 @@ import {$t, $t_html} from "./i18n.ts"; import * as loading from "./loading.ts"; import * as markdown from "./markdown.ts"; import * as people from "./people.ts"; -import * as popover_menus from "./popover_menus.ts"; import {postprocess_content} from "./postprocess_content.ts"; import * as rendered_markdown from "./rendered_markdown.ts"; import * as rtl from "./rtl.ts"; @@ -1215,17 +1214,6 @@ export function show_compose_spinner(): void { $(".compose-submit-button").addClass("compose-button-disabled"); } -export function get_compose_click_target(element: HTMLElement): Element { - const compose_control_buttons_popover = popover_menus.get_compose_control_buttons_popover(); - if ( - compose_control_buttons_popover && - $(compose_control_buttons_popover.popper).has(element).length > 0 - ) { - return compose_control_buttons_popover.reference; - } - return element; -} - export function render_and_show_preview( $preview_spinner: JQuery, $preview_content_box: JQuery, diff --git a/web/src/emoji_picker.ts b/web/src/emoji_picker.ts index e76bc18632..44499f1fb7 100644 --- a/web/src/emoji_picker.ts +++ b/web/src/emoji_picker.ts @@ -814,16 +814,15 @@ function register_click_handlers(): void { e.preventDefault(); e.stopPropagation(); - const compose_click_target = compose_ui.get_compose_click_target(this); - if ($(compose_click_target).parents(".message_edit_form").length === 1) { + if ($(this).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. - assert(compose_click_target instanceof HTMLElement); - edit_message_id = rows.get_message_id(compose_click_target); + assert(this instanceof HTMLElement); + edit_message_id = rows.get_message_id(this); } else { edit_message_id = null; } - toggle_emoji_popover(compose_click_target); + toggle_emoji_popover(this); }); $("#main_div").on( diff --git a/web/src/popover_menus.ts b/web/src/popover_menus.ts index 99c2ca7909..f6aba373b3 100644 --- a/web/src/popover_menus.ts +++ b/web/src/popover_menus.ts @@ -119,10 +119,6 @@ export function is_scheduled_messages_popover_displayed(): boolean { return popover_instances.send_later?.state.isVisible ?? false; } -export function get_compose_control_buttons_popover(): tippy.Instance | null { - return popover_instances.compose_control_buttons; -} - export function get_starred_messages_popover(): tippy.Instance | null { return popover_instances.starred_messages; } diff --git a/web/src/ui_init.js b/web/src/ui_init.js index 7ef8dd2061..ef71512757 100644 --- a/web/src/ui_init.js +++ b/web/src/ui_init.js @@ -26,7 +26,6 @@ import * as compose from "./compose.js"; import * as compose_closed_ui from "./compose_closed_ui.ts"; import * as compose_notifications from "./compose_notifications.ts"; import * as compose_pm_pill from "./compose_pm_pill.ts"; -import * as compose_popovers from "./compose_popovers.ts"; import * as compose_recipient from "./compose_recipient.ts"; import * as compose_reply from "./compose_reply.ts"; import * as compose_send_menu_popover from "./compose_send_menu_popover.js"; @@ -444,7 +443,6 @@ export function initialize_everything(state_data) { scheduled_messages.initialize(state_data.scheduled_messages); scheduled_messages_ui.initialize(); popover_menus.initialize(); - compose_popovers.initialize(); left_sidebar_navigation_area_popovers.initialize(); user_topic_popover.initialize(); topic_popover.initialize(); diff --git a/web/styles/compose.css b/web/styles/compose.css index 954a1fc27b..d66a72d51a 100644 --- a/web/styles/compose.css +++ b/web/styles/compose.css @@ -1248,38 +1248,6 @@ textarea.new_message_textarea { top: -0.7px; } - .compose_control_menu { - padding: 0 1px; - /* 18px at 14px/1em */ - font-size: 1.2857em; - /* Constrain icon font to a perfect - box (18px at 14px/1em) */ - line-height: 1; - /* Coordinate with the value of - --compose-formatting-buttons-row-height */ - /* 28px at 18px/1em */ - height: 1.5556em; - } - - .compose_control_menu_wrapper { - /* Since `compose_control_menu_wrapper` is the reference for the tippy popover, it is - important to set it's display correctly so that tippy knows when to hide / show popover - on window resize. */ - display: none; - opacity: 0.7; - padding: 0; - margin: 0; - - &:hover { - opacity: 1; - } - - .compose_control_menu { - opacity: 1; - display: none; - } - } - .divider { margin: 0 5px; /* Coordinate with the value of @@ -1311,69 +1279,10 @@ textarea.new_message_textarea { font-size: 20px; line-height: 17px; } - - .show_popover_buttons { - display: flex; - align-items: center; - padding: 0; - margin: 0; - } - - .show_popover_buttons_2 { - display: flex; - align-items: center; - padding: 0; - margin: 0; - } - - &.show_in_popover { - display: none; - } } .less-dense-mode { .compose-control-buttons-container { - .compose_control_menu_wrapper { - /* The media query below handles the hiding and showing of the - vdot menu icon, so that it is hidden when all compose buttons fit - in the main row below the compose box. So, this is the same as - the media query for .show_popover_buttons. */ - @media (((width < 1418px) and (width >= $xl_min)) or (width < 1178px)) { - display: block; - - .compose_control_menu { - display: flex; - } - } - } - - .show_popover_buttons { - /* We use this class for the div containing those compose buttons, which - we hide and show in a popover instead when they no longer fit in a - single row. The media query below handles the hiding and showing of the - buttons from the main row of compose buttons below the compose box. */ - @media (((width < 1418px) and (width >= $xl_min)) or (width < 1178px)) { - display: none; - } - } - - .show_popover_buttons_2 { - /* This is similar to show_popover_buttons, but it's only for those - compose buttons that we hide, and show in the popover only when the - screen gets extremely narrow. */ - @media ((width < 596px) or ((width < 939px) and (width >= $md_min))) { - display: none; - } - } - - &.show_in_popover { - /* This is to show the popover 2 buttons in the popover, only when - they are hidden in the main row below the compose box. */ - @media ((width < 596px) or ((width < 939px) and (width >= $md_min))) { - display: flex; - } - } - .compose_control_button { /* Slightly reduce width so that buttons don't overflow the available space at mobile widths */ @@ -1384,38 +1293,6 @@ textarea.new_message_textarea { } } -.more-dense-mode { - .compose-control-buttons-container { - .compose_control_menu_wrapper { - @media (((width < $cb1_min) and (width >= $xl_min)) or ((width < $cb2_min) and (width >= $md_min)) or (width < $cb4_min)) { - display: block; - - .compose_control_menu { - display: flex; - } - } - } - - .show_popover_buttons { - @media (((width < $cb1_min) and (width >= $xl_min)) or ((width < $cb2_min) and (width >= $md_min)) or (width < $cb4_min)) { - display: none; - } - } - - .show_popover_buttons_2 { - @media ((width < $cb5_min) or ((width < $cb3_min) and (width >= $md_min))) { - display: none; - } - } - - &.show_in_popover { - @media ((width < $cb5_min) or ((width < $cb3_min) and (width >= $md_min))) { - display: flex; - } - } - } -} - .message-send-controls { display: flex; diff --git a/web/templates/compose_control_buttons.hbs b/web/templates/compose_control_buttons.hbs index e5bd47a5ae..8063aa1185 100644 --- a/web/templates/compose_control_buttons.hbs +++ b/web/templates/compose_control_buttons.hbs @@ -32,15 +32,23 @@
- diff --git a/web/templates/popovers/compose_control_buttons/compose_control_buttons_in_popover.hbs b/web/templates/popovers/compose_control_buttons/compose_control_buttons_in_popover.hbs deleted file mode 100644 index 08ebd7f702..0000000000 --- a/web/templates/popovers/compose_control_buttons/compose_control_buttons_in_popover.hbs +++ /dev/null @@ -1,11 +0,0 @@ - - diff --git a/web/templates/popovers/compose_control_buttons/compose_control_buttons_in_popover_2.hbs b/web/templates/popovers/compose_control_buttons/compose_control_buttons_in_popover_2.hbs deleted file mode 100644 index 02c66483e9..0000000000 --- a/web/templates/popovers/compose_control_buttons/compose_control_buttons_in_popover_2.hbs +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/web/templates/popovers/compose_control_buttons/compose_control_buttons_popover.hbs b/web/templates/popovers/compose_control_buttons/compose_control_buttons_popover.hbs deleted file mode 100644 index 7147b6a183..0000000000 --- a/web/templates/popovers/compose_control_buttons/compose_control_buttons_popover.hbs +++ /dev/null @@ -1,4 +0,0 @@ -