mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	left_sidebar: Standardize channel list filter input.
This follow-up commit replaces the current left sidebar channel list filter input implementation with the redesigned input component. Note: This commit removes `clear_search` method from `stream_list.ts`, since the `.input-button` onclick handler over at `inputs.ts` handles the clearing of the filter input fields by sending an empty text input event. This input event triggers the filter update handler of the module, in this case the `update_streams_for_search` function and resets the filter list, eliminating the need for a separate per-module input clearing/resetting workflow. Fixes part of #34476.
This commit is contained in:
		@@ -973,13 +973,14 @@ export function set_event_handlers({
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    $("#clear_search_stream_button").on("click", clear_search);
 | 
			
		||||
 | 
			
		||||
    $("#streams_header")
 | 
			
		||||
        .expectOne()
 | 
			
		||||
        .on("click", (e) => {
 | 
			
		||||
            e.preventDefault();
 | 
			
		||||
            if (e.target.id === "streams_inline_icon") {
 | 
			
		||||
            if (
 | 
			
		||||
                e.target.id === "streams_inline_icon" ||
 | 
			
		||||
                $(e.target).parent().hasClass("input-button")
 | 
			
		||||
            ) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            toggle_filter_displayed(e);
 | 
			
		||||
@@ -1054,13 +1055,8 @@ export function searching(): boolean {
 | 
			
		||||
    return $(".stream-list-filter").expectOne().is(":focus");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function clear_search(e: JQuery.ClickEvent): void {
 | 
			
		||||
    e.stopPropagation();
 | 
			
		||||
export function test_clear_search(): void {
 | 
			
		||||
    const $filter = $(".stream-list-filter").expectOne();
 | 
			
		||||
    if ($filter.val() === "") {
 | 
			
		||||
        clear_and_hide_search();
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    $filter.val("");
 | 
			
		||||
    $filter.trigger("blur");
 | 
			
		||||
    update_streams_for_search();
 | 
			
		||||
 
 | 
			
		||||
@@ -1320,11 +1320,6 @@ li.top_left_scheduled_messages {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.direct-messages-list-filter {
 | 
			
		||||
    grid-area: filter-box;
 | 
			
		||||
    padding-right: var(--line-height-sidebar-row-prominent);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.topic-list-filter {
 | 
			
		||||
    grid-area: filter-box;
 | 
			
		||||
    padding-right: var(--line-height-sidebar-row-prominent);
 | 
			
		||||
@@ -1832,23 +1827,6 @@ li.topic-list-item {
 | 
			
		||||
        grid-area: filter-box;
 | 
			
		||||
        white-space: nowrap;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .stream-list-filter {
 | 
			
		||||
        grid-area: filter-box;
 | 
			
		||||
        padding-right: var(--line-height-sidebar-row-prominent);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.stream_search_section,
 | 
			
		||||
.direct-messages-search-section {
 | 
			
		||||
    .direct-messages-list-filter:placeholder-shown
 | 
			
		||||
        + #clear-direct-messages-search-button {
 | 
			
		||||
        visibility: hidden;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .stream-list-filter:placeholder-shown + #clear_search_stream_button {
 | 
			
		||||
        visibility: hidden;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Prepare an adjusted grid for the logged-out state,
 | 
			
		||||
@@ -1914,11 +1892,18 @@ li.topic-list-item {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.direct-messages-list-filter,
 | 
			
		||||
.stream-list-filter {
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
    text-overflow: ellipsis;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
.direct-messages-search-section {
 | 
			
		||||
    .direct-messages-list-filter {
 | 
			
		||||
        grid-area: filter-box;
 | 
			
		||||
        padding-right: var(--line-height-sidebar-row-prominent);
 | 
			
		||||
        white-space: nowrap;
 | 
			
		||||
        text-overflow: ellipsis;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
 | 
			
		||||
        &:placeholder-shown + #clear-direct-messages-search-button {
 | 
			
		||||
            visibility: hidden;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.zero_count {
 | 
			
		||||
 
 | 
			
		||||
@@ -211,12 +211,9 @@
 | 
			
		||||
                    </span>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <div class="notdisplayed stream_search_section left-sidebar-filter-row">
 | 
			
		||||
                    <input class="stream-list-filter home-page-input filter_text_input" type="text" autocomplete="off" placeholder="{{t 'Filter channels' }}" />
 | 
			
		||||
                    <button type="button" class="clear_search_button" id="clear_search_stream_button">
 | 
			
		||||
                        <i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
                {{#> input input_type="filter-input" custom_classes="notdisplayed stream_search_section" icon="search" input_button_icon="close"}}
 | 
			
		||||
                    <input type="text" class="input-element stream-list-filter home-page-input" autocomplete="off" placeholder="{{t 'Filter channels' }}" />
 | 
			
		||||
                {{/input}}
 | 
			
		||||
            </div>
 | 
			
		||||
            <div id="topics_header">
 | 
			
		||||
                <a class="show-all-streams" tabindex="0">{{t 'Back to channels' }}</a> <span class="unread_count quiet-count"></span>
 | 
			
		||||
 
 | 
			
		||||
@@ -57,7 +57,7 @@ function toggle_filter() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function clear_search_input() {
 | 
			
		||||
    stream_list.clear_search({stopPropagation: noop});
 | 
			
		||||
    stream_list.test_clear_search();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
run_test("basics", ({override, override_rewire}) => {
 | 
			
		||||
@@ -135,10 +135,6 @@ run_test("basics", ({override, override_rewire}) => {
 | 
			
		||||
    verify_expanded();
 | 
			
		||||
    verify_focused();
 | 
			
		||||
 | 
			
		||||
    // Clear an empty search.
 | 
			
		||||
    clear_search_input();
 | 
			
		||||
    verify_collapsed();
 | 
			
		||||
 | 
			
		||||
    // Expand the widget.
 | 
			
		||||
    toggle_filter();
 | 
			
		||||
    stream_list.initiate_search();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user