mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	compose: Move cursor to end of topic input after stream selection.
Fixes #25321.
This commit is contained in:
		@@ -231,6 +231,7 @@ EXEMPT_FILES = make_set(
 | 
				
			|||||||
        "web/src/zulip.js",
 | 
					        "web/src/zulip.js",
 | 
				
			||||||
        "web/src/zulip_test.js",
 | 
					        "web/src/zulip_test.js",
 | 
				
			||||||
        "web/tests/lib/mdiff.js",
 | 
					        "web/tests/lib/mdiff.js",
 | 
				
			||||||
 | 
					        "web/tests/lib/zjquery_element.js",
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,7 @@ import {page_params} from "./page_params";
 | 
				
			|||||||
import * as settings_config from "./settings_config";
 | 
					import * as settings_config from "./settings_config";
 | 
				
			||||||
import * as stream_bar from "./stream_bar";
 | 
					import * as stream_bar from "./stream_bar";
 | 
				
			||||||
import * as stream_data from "./stream_data";
 | 
					import * as stream_data from "./stream_data";
 | 
				
			||||||
 | 
					import * as ui_util from "./ui_util";
 | 
				
			||||||
import * as util from "./util";
 | 
					import * as util from "./util";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export let compose_recipient_widget;
 | 
					export let compose_recipient_widget;
 | 
				
			||||||
@@ -191,7 +192,7 @@ export function on_compose_select_recipient_update(new_value) {
 | 
				
			|||||||
        // Always move focus to the topic input even if it's not empty,
 | 
					        // Always move focus to the topic input even if it's not empty,
 | 
				
			||||||
        // since it's likely the user will want to update the topic
 | 
					        // since it's likely the user will want to update the topic
 | 
				
			||||||
        // after updating the stream.
 | 
					        // after updating the stream.
 | 
				
			||||||
        $("#stream_message_recipient_topic").trigger("focus").trigger("select");
 | 
					        ui_util.place_caret_at_end($("#stream_message_recipient_topic")[0]);
 | 
				
			||||||
        check_stream_posting_policy_for_compose_box(new_value);
 | 
					        check_stream_posting_policy_for_compose_box(new_value);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    update_on_recipient_change();
 | 
					    update_on_recipient_change();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,7 +56,6 @@ const compose_state = zrequire("compose_state");
 | 
				
			|||||||
const compose = zrequire("compose");
 | 
					const compose = zrequire("compose");
 | 
				
			||||||
const echo = zrequire("echo");
 | 
					const echo = zrequire("echo");
 | 
				
			||||||
const people = zrequire("people");
 | 
					const people = zrequire("people");
 | 
				
			||||||
const stream_bar = zrequire("stream_bar");
 | 
					 | 
				
			||||||
const stream_data = zrequire("stream_data");
 | 
					const stream_data = zrequire("stream_data");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function reset_jquery() {
 | 
					function reset_jquery() {
 | 
				
			||||||
@@ -305,10 +304,9 @@ test_ui("send_message", ({override, override_rewire, mock_template}) => {
 | 
				
			|||||||
test_ui("enter_with_preview_open", ({override, override_rewire}) => {
 | 
					test_ui("enter_with_preview_open", ({override, override_rewire}) => {
 | 
				
			||||||
    mock_banners();
 | 
					    mock_banners();
 | 
				
			||||||
    $("#compose-textarea").toggleClass = noop;
 | 
					    $("#compose-textarea").toggleClass = noop;
 | 
				
			||||||
    override_rewire(stream_bar, "decorate", noop);
 | 
					 | 
				
			||||||
    mock_stream_header_colorblock();
 | 
					    mock_stream_header_colorblock();
 | 
				
			||||||
    compose_recipient.open_compose_stream_dropup = noop;
 | 
					    compose_recipient.open_compose_stream_dropup = noop;
 | 
				
			||||||
    override_rewire(compose_recipient, "update_on_recipient_change", noop);
 | 
					    override_rewire(compose_recipient, "on_compose_select_recipient_update", noop);
 | 
				
			||||||
    let stream_value = "";
 | 
					    let stream_value = "";
 | 
				
			||||||
    compose_recipient.compose_recipient_widget = {
 | 
					    compose_recipient.compose_recipient_widget = {
 | 
				
			||||||
        value() {
 | 
					        value() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,7 +66,6 @@ const compose_state = zrequire("compose_state");
 | 
				
			|||||||
const compose_actions = zrequire("compose_actions");
 | 
					const compose_actions = zrequire("compose_actions");
 | 
				
			||||||
const message_lists = zrequire("message_lists");
 | 
					const message_lists = zrequire("message_lists");
 | 
				
			||||||
const stream_data = zrequire("stream_data");
 | 
					const stream_data = zrequire("stream_data");
 | 
				
			||||||
const stream_bar = zrequire("stream_bar");
 | 
					 | 
				
			||||||
const compose_recipient = zrequire("compose_recipient");
 | 
					const compose_recipient = zrequire("compose_recipient");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let stream_value = "";
 | 
					let stream_value = "";
 | 
				
			||||||
@@ -129,9 +128,8 @@ test("start", ({override, override_rewire}) => {
 | 
				
			|||||||
    override_rewire(compose_actions, "complete_starting_tasks", () => {});
 | 
					    override_rewire(compose_actions, "complete_starting_tasks", () => {});
 | 
				
			||||||
    override_rewire(compose_actions, "blur_compose_inputs", () => {});
 | 
					    override_rewire(compose_actions, "blur_compose_inputs", () => {});
 | 
				
			||||||
    override_rewire(compose_actions, "clear_textarea", () => {});
 | 
					    override_rewire(compose_actions, "clear_textarea", () => {});
 | 
				
			||||||
    override_rewire(compose_recipient, "update_on_recipient_change", () => {});
 | 
					    override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
 | 
				
			||||||
    override_rewire(compose_recipient, "check_stream_posting_policy_for_compose_box", () => {});
 | 
					    override_rewire(compose_recipient, "check_stream_posting_policy_for_compose_box", () => {});
 | 
				
			||||||
    stream_bar.decorate = () => {};
 | 
					 | 
				
			||||||
    mock_stream_header_colorblock();
 | 
					    mock_stream_header_colorblock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let compose_defaults;
 | 
					    let compose_defaults;
 | 
				
			||||||
@@ -294,6 +292,7 @@ test("reply_with_mention", ({override, override_rewire}) => {
 | 
				
			|||||||
    mock_banners();
 | 
					    mock_banners();
 | 
				
			||||||
    mock_stream_header_colorblock();
 | 
					    mock_stream_header_colorblock();
 | 
				
			||||||
    compose_state.set_message_type("stream");
 | 
					    compose_state.set_message_type("stream");
 | 
				
			||||||
 | 
					    override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
 | 
				
			||||||
    override_rewire(compose_actions, "complete_starting_tasks", () => {});
 | 
					    override_rewire(compose_actions, "complete_starting_tasks", () => {});
 | 
				
			||||||
    override_rewire(compose_actions, "clear_textarea", () => {});
 | 
					    override_rewire(compose_actions, "clear_textarea", () => {});
 | 
				
			||||||
    override_private_message_recipient({override});
 | 
					    override_private_message_recipient({override});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,6 @@ const compose_pm_pill = mock_esm("../src/compose_pm_pill");
 | 
				
			|||||||
const compose_state = zrequire("compose_state");
 | 
					const compose_state = zrequire("compose_state");
 | 
				
			||||||
const compose_fade = zrequire("compose_fade");
 | 
					const compose_fade = zrequire("compose_fade");
 | 
				
			||||||
const compose_recipient = zrequire("compose_recipient");
 | 
					const compose_recipient = zrequire("compose_recipient");
 | 
				
			||||||
const stream_bar = zrequire("stream_bar");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
const noop = () => {};
 | 
					const noop = () => {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -43,7 +42,7 @@ run_test("has_full_recipient", ({override, override_rewire}) => {
 | 
				
			|||||||
    $(`#compose_banners .topic_resolved`).remove = noop;
 | 
					    $(`#compose_banners .topic_resolved`).remove = noop;
 | 
				
			||||||
    compose_fade.update_all = noop;
 | 
					    compose_fade.update_all = noop;
 | 
				
			||||||
    $(".narrow_to_compose_recipients").toggleClass = noop;
 | 
					    $(".narrow_to_compose_recipients").toggleClass = noop;
 | 
				
			||||||
    override_rewire(stream_bar, "decorate", noop);
 | 
					    override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let emails;
 | 
					    let emails;
 | 
				
			||||||
    override(compose_pm_pill, "set_from_emails", (value) => {
 | 
					    override(compose_pm_pill, "set_from_emails", (value) => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,6 @@ const typeahead_helper = zrequire("typeahead_helper");
 | 
				
			|||||||
const muted_users = zrequire("muted_users");
 | 
					const muted_users = zrequire("muted_users");
 | 
				
			||||||
const people = zrequire("people");
 | 
					const people = zrequire("people");
 | 
				
			||||||
const user_groups = zrequire("user_groups");
 | 
					const user_groups = zrequire("user_groups");
 | 
				
			||||||
const stream_bar = zrequire("stream_bar");
 | 
					 | 
				
			||||||
const stream_data = zrequire("stream_data");
 | 
					const stream_data = zrequire("stream_data");
 | 
				
			||||||
const stream_list_sort = zrequire("stream_list_sort");
 | 
					const stream_list_sort = zrequire("stream_list_sort");
 | 
				
			||||||
const compose = zrequire("compose");
 | 
					const compose = zrequire("compose");
 | 
				
			||||||
@@ -1764,8 +1763,7 @@ test("PM recipients sorted according to stream / topic being viewed", ({override
 | 
				
			|||||||
    );
 | 
					    );
 | 
				
			||||||
    mock_stream_header_colorblock();
 | 
					    mock_stream_header_colorblock();
 | 
				
			||||||
    mock_banners();
 | 
					    mock_banners();
 | 
				
			||||||
    override_rewire(stream_bar, "decorate", noop);
 | 
					    override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
 | 
				
			||||||
    override_rewire(compose_recipient, "update_on_recipient_change", noop);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // When viewing no stream, sorting is alphabetical
 | 
					    // When viewing no stream, sorting is alphabetical
 | 
				
			||||||
    compose_state.set_stream_name("");
 | 
					    compose_state.set_stream_name("");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,6 @@ const compose_fade = zrequire("compose_fade");
 | 
				
			|||||||
const compose_state = zrequire("compose_state");
 | 
					const compose_state = zrequire("compose_state");
 | 
				
			||||||
const compose_recipient = zrequire("compose_recipient");
 | 
					const compose_recipient = zrequire("compose_recipient");
 | 
				
			||||||
const sub_store = zrequire("sub_store");
 | 
					const sub_store = zrequire("sub_store");
 | 
				
			||||||
const stream_bar = zrequire("stream_bar");
 | 
					 | 
				
			||||||
const stream_data = zrequire("stream_data");
 | 
					const stream_data = zrequire("stream_data");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let stream_value = "";
 | 
					let stream_value = "";
 | 
				
			||||||
@@ -167,8 +166,8 @@ test("draft_model delete", ({override}) => {
 | 
				
			|||||||
test("snapshot_message", ({override_rewire}) => {
 | 
					test("snapshot_message", ({override_rewire}) => {
 | 
				
			||||||
    override_rewire(user_pill, "get_user_ids", () => [aaron.user_id]);
 | 
					    override_rewire(user_pill, "get_user_ids", () => [aaron.user_id]);
 | 
				
			||||||
    override_rewire(compose_pm_pill, "set_from_emails", noop);
 | 
					    override_rewire(compose_pm_pill, "set_from_emails", noop);
 | 
				
			||||||
 | 
					    override_rewire(compose_recipient, "on_compose_select_recipient_update", () => {});
 | 
				
			||||||
    mock_banners();
 | 
					    mock_banners();
 | 
				
			||||||
    override_rewire(stream_bar, "decorate", noop);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stream_data.get_sub = (stream_name) => {
 | 
					    stream_data.get_sub = (stream_name) => {
 | 
				
			||||||
        assert.equal(stream_name, "stream");
 | 
					        assert.equal(stream_name, "stream");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ const $ = require("./zjquery");
 | 
				
			|||||||
exports.mock_stream_header_colorblock = () => {
 | 
					exports.mock_stream_header_colorblock = () => {
 | 
				
			||||||
    const $stream_selection_dropdown = $("#compose_recipient_selection_dropdown");
 | 
					    const $stream_selection_dropdown = $("#compose_recipient_selection_dropdown");
 | 
				
			||||||
    const $stream_header_colorblock = $(".stream_header_colorblock");
 | 
					    const $stream_header_colorblock = $(".stream_header_colorblock");
 | 
				
			||||||
    $(".stream_header_colorblock").css = () => {};
 | 
					    $("#compose_recipient_selection_dropdown .stream_header_colorblock").css = () => {};
 | 
				
			||||||
    $stream_selection_dropdown.set_find_results(
 | 
					    $stream_selection_dropdown.set_find_results(
 | 
				
			||||||
        ".stream_header_colorblock",
 | 
					        ".stream_header_colorblock",
 | 
				
			||||||
        $stream_header_colorblock,
 | 
					        $stream_header_colorblock,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user