compose_tooltip: Remove delay for invalid messages.

Does what 714def080f
was trying to do without the side effects.
Fixes: 714def080f
This commit is contained in:
Apoorva Pendse
2025-03-11 08:36:32 +05:30
committed by Tim Abbott
parent 58f16468ca
commit 54fd02b173
8 changed files with 35 additions and 28 deletions

View File

@@ -146,7 +146,7 @@ function clear_box(): void {
"disabled-on-hover",
);
// Reset send button status.
$(".message-send-controls").removeClass("disabled-message-send-controls");
$("#compose-send-button").removeClass("disabled-message-send-controls");
}
let autosize_callback_opts: ComposeActionsStartOpts;

View File

@@ -76,7 +76,7 @@ export function initialize() {
compose_validate.update_send_button_status();
});
$("#compose-send-button").on("mouseleave", () => {
$(".message-send-controls").removeClass("disabled-message-send-controls");
$("#compose-send-button").removeClass("disabled-message-send-controls");
});
$("textarea#compose-textarea").on("input propertychange", () => {

View File

@@ -209,7 +209,7 @@ export function initialize(): void {
});
tippy.delegate("body", {
target: "#compose-send-button",
target: "#compose-send-button:not(.disabled-message-send-controls)",
delay: EXTRA_LONG_HOVER_DELAY,
// By default, tippyjs uses a trigger value of "mouseenter focus",
// but by specifying "mouseenter", this will prevent showing the
@@ -217,18 +217,11 @@ export function initialize(): void {
trigger: "mouseenter",
appendTo: () => document.body,
onShow(instance) {
// Don't show send-area tooltips if the popover is displayed or if the send button is disabled.
// Don't show send-area tooltips if the popover is displayed.
if (popover_menus.is_scheduled_messages_popover_displayed()) {
return false;
}
if ($(".message-send-controls").hasClass("disabled-message-send-controls")) {
instance.setContent(
compose_recipient.get_posting_policy_error_message() ||
compose_validate.get_disabled_send_tooltip(),
);
return undefined;
} else if (user_settings.enter_sends) {
if (user_settings.enter_sends) {
instance.setContent(parse_html($("#send-enter-tooltip-template").html()));
} else {
instance.setContent(parse_html($("#send-ctrl-enter-tooltip-template").html()));
@@ -237,6 +230,22 @@ export function initialize(): void {
},
});
tippy.delegate("body", {
target: "#compose-send-button.disabled-message-send-controls",
// 350px at 14px/1em
maxWidth: "25em",
onShow(instance) {
instance.setContent(
compose_recipient.get_posting_policy_error_message() ||
compose_validate.get_disabled_send_tooltip(),
);
},
appendTo: () => document.body,
onHidden(instance) {
instance.destroy();
},
});
tippy.delegate("body", {
target: ".narrow_to_compose_recipients",
delay: LONG_HOVER_DELAY,

View File

@@ -104,7 +104,7 @@ export function set_recipient_disallowed(status: boolean): void {
export function update_send_button_status(): void {
const recipient_type = compose_state.get_message_type();
$(".message-send-controls").toggleClass(
$("#compose-send-button").toggleClass(
"disabled-message-send-controls",
upload_in_progress ||
no_channel_selected ||

View File

@@ -381,7 +381,7 @@ function handle_keydown(
e.preventDefault();
if (
compose_validate.validate_message_length($("#send_message_form")) &&
!$(".message-send-controls").hasClass("disabled-message-send-controls")
!$("#compose-send-button").hasClass("disabled-message-send-controls")
) {
on_enter_send();
}

View File

@@ -1455,18 +1455,16 @@ textarea.new_message_textarea {
flex-direction: column-reverse;
}
&.disabled-message-send-controls {
& button {
cursor: default;
opacity: 0.5;
}
}
.compose-button-disabled {
pointer-events: none;
}
}
#compose-send-button.disabled-message-send-controls {
cursor: default;
opacity: 0.5;
}
.drag {
display: none;
height: 18px;

View File

@@ -146,7 +146,7 @@ class FakeComposeBox {
assert.ok(this.$content_textarea.hasClass("textarea-over-limit"));
assert.ok($(".message-limit-indicator").hasClass("textarea-over-limit"));
assert.ok(!$(".message-send-controls").hasClass("disabled-message-send-controls"));
assert.ok(!$("#compose-send-button").hasClass("disabled-message-send-controls"));
}
assert_message_size_is_under_the_limit(desired_html) {
@@ -161,7 +161,7 @@ class FakeComposeBox {
assert.ok(!this.$content_textarea.hasClass("textarea-over-limit"));
assert.ok(!$(".message-limit-indicator").hasClass("textarea-over-limit"));
assert.ok(!$(".message-send-controls").hasClass("disabled-message-send-controls"));
assert.ok(!$("#compose-send-button").hasClass("disabled-message-send-controls"));
}
}

View File

@@ -154,7 +154,7 @@ test("show_error_message", ({mock_template}) => {
$("#compose-send-button").prop("disabled", true);
upload.show_error_message(upload.compose_config, "Error message");
assert.ok(!$(".message-send-controls").hasClass("disabled-message-send-controls"));
assert.ok(!$("#compose-send-button").hasClass("disabled-message-send-controls"));
assert.ok(banner_shown);
mock_template("compose_banner/upload_banner.hbs", false, (data) => {
@@ -198,9 +198,9 @@ test("upload_files", async ({mock_template, override, override_rewire}) => {
assert.equal(config.mode, "compose");
});
const config = upload.compose_config;
$(".message-send-controls").removeClass("disabled-message-send-controls");
$("#compose-send-button").removeClass("disabled-message-send-controls");
await upload.upload_files(uppy, config, []);
assert.ok(!$(".message-send-controls").hasClass("disabled-message-send-controls"));
assert.ok(!$("#compose-send-button").hasClass("disabled-message-send-controls"));
let banner_shown = false;
mock_template("compose_banner/upload_banner.hbs", false, (data) => {
@@ -239,7 +239,7 @@ test("upload_files", async ({mock_template, override, override_rewire}) => {
$("#compose .undo_markdown_preview").on("click", () => {
markdown_preview_hide_button_clicked = true;
});
$(".message-send-controls").removeClass("disabled-message-send-controls");
$("#compose-send-button").removeClass("disabled-message-send-controls");
$("#compose_banners .upload_banner").remove();
$("#compose .undo_markdown_preview").show();
@@ -250,7 +250,7 @@ test("upload_files", async ({mock_template, override, override_rewire}) => {
});
override(compose_state, "get_message_type", () => "stream");
await upload.upload_files(uppy, config, files);
assert.ok($(".message-send-controls").hasClass("disabled-message-send-controls"));
assert.ok($("#compose-send-button").hasClass("disabled-message-send-controls"));
assert.ok(banner_shown);
assert.ok(compose_ui_insert_syntax_and_focus_called);
assert.ok(compose_ui_autosize_textarea_called);