refactor: Extract new function `show_preview_area` for the compose box.

The code responsible for switching from edit mode to preview mode from
`compose_setup.js` is now extracted into a new function in `compose.js`,
to facilitate reuse.

This is a prep commit for introducing a hotkey to toggle between edit
and preview mode for the compose box.
This commit is contained in:
N-Shar-ma 2024-01-17 01:39:38 +05:30 committed by Tim Abbott
parent a53aee714d
commit 536ab78587
2 changed files with 21 additions and 17 deletions

View File

@ -58,6 +58,26 @@ export function clear_preview_area() {
$("#compose .preview_mode_disabled .compose_control_button").attr("tabindex", 0); $("#compose .preview_mode_disabled .compose_control_button").attr("tabindex", 0);
} }
export function show_preview_area() {
// Disable unneeded compose_control_buttons as we don't
// need them in preview mode.
$("#compose").addClass("preview_mode");
$("#compose .preview_mode_disabled .compose_control_button").attr("tabindex", -1);
const content = $("textarea#compose-textarea").val();
$("textarea#compose-textarea").hide();
$("#compose .markdown_preview").hide();
$("#compose .undo_markdown_preview").show();
$("#compose .undo_markdown_preview").trigger("focus");
$("#compose .preview_message_area").show();
render_and_show_preview(
$("#compose .markdown_preview_spinner"),
$("#compose .preview_content"),
content,
);
}
export function create_message_object() { export function create_message_object() {
// Topics are optional, and we provide a placeholder if one isn't given. // Topics are optional, and we provide a placeholder if one isn't given.
let topic = compose_state.topic(); let topic = compose_state.topic();

View File

@ -389,23 +389,7 @@ export function initialize() {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
// Disable unneeded compose_control_buttons as we don't compose.show_preview_area();
// need them in preview mode.
$("#compose").addClass("preview_mode");
$("#compose .preview_mode_disabled .compose_control_button").attr("tabindex", -1);
const content = $("textarea#compose-textarea").val();
$("textarea#compose-textarea").hide();
$("#compose .markdown_preview").hide();
$("#compose .undo_markdown_preview").show();
$("#compose .undo_markdown_preview").trigger("focus");
$("#compose .preview_message_area").show();
compose.render_and_show_preview(
$("#compose .markdown_preview_spinner"),
$("#compose .preview_content"),
content,
);
}); });
$("#compose").on("click", ".undo_markdown_preview", (e) => { $("#compose").on("click", ".undo_markdown_preview", (e) => {