From 7c197271681eb14d29989ae3f6ab8d4263e98a8c Mon Sep 17 00:00:00 2001 From: Sayam Samal Date: Tue, 27 May 2025 21:42:52 +0530 Subject: [PATCH] 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. --- web/src/stream_list.ts | 14 ++++-------- web/styles/left_sidebar.css | 39 ++++++++++---------------------- web/templates/left_sidebar.hbs | 9 +++----- web/tests/stream_search.test.cjs | 6 +---- 4 files changed, 21 insertions(+), 47 deletions(-) diff --git a/web/src/stream_list.ts b/web/src/stream_list.ts index f02eb5899f..32d418f373 100644 --- a/web/src/stream_list.ts +++ b/web/src/stream_list.ts @@ -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(); diff --git a/web/styles/left_sidebar.css b/web/styles/left_sidebar.css index cfa9ced618..ea00230d68 100644 --- a/web/styles/left_sidebar.css +++ b/web/styles/left_sidebar.css @@ -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 { diff --git a/web/templates/left_sidebar.hbs b/web/templates/left_sidebar.hbs index 26516edc6f..cc2f7cac9c 100644 --- a/web/templates/left_sidebar.hbs +++ b/web/templates/left_sidebar.hbs @@ -211,12 +211,9 @@ - + {{#> input input_type="filter-input" custom_classes="notdisplayed stream_search_section" icon="search" input_button_icon="close"}} + + {{/input}}
{{t 'Back to channels' }} diff --git a/web/tests/stream_search.test.cjs b/web/tests/stream_search.test.cjs index 023afd4e53..96e3353ac5 100644 --- a/web/tests/stream_search.test.cjs +++ b/web/tests/stream_search.test.cjs @@ -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();