Skip to content

Commit 9fc013f

Browse files
authored
Fix(oppia#23651): Trigger library search on filter change (oppia#23779)
* fix(library): Fix filter test and trigger search on dropdown close * fix(library): Fix filter test and trigger search on dropdown close * Fix(library): Rename dropdown method, fix HTML indentation and update tests * Fix HTML indentation and line length * Fix HTML indentation and line length * Resolve merge conflict: Update CSS to float-start
1 parent ac5a652 commit 9fc013f

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

core/templates/pages/library-page/search-bar/search-bar.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<div [ngClass]="{'open' : activeMenuName === 'category', 'dropup' : enableDropup}"
2727
ngbDropdown
2828
autoClose="outside"
29+
(openChange)="triggerSearchOnDropdownClose($event)"
2930
class="search-bar-float-start oppia-navbar-button-container oppia-search-bar-category-selector e2e-test-search-bar-category-selector dropdown">
3031
<button ngbDropdownToggle
3132
type="button"
@@ -125,6 +126,7 @@
125126
<div ngbDropdown
126127
autoClose="outside"
127128
[ngClass]="{'open' : activeMenuName === 'language', 'dropup' : enableDropup}"
129+
(openChange)="triggerSearchOnDropdownClose($event)"
128130
class="search-bar-float-start oppia-navbar-button-container oppia-search-bar-language-selector e2e-test-search-bar-language-selector dropdown">
129131
<button ngbDropdownToggle
130132
type="button"

core/templates/pages/library-page/search-bar/search-bar.component.spec.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,14 @@ describe('Search bar component', () => {
296296
expect(component.refreshSearchBarLabels).toHaveBeenCalled();
297297
});
298298

299+
it('should trigger search query only when dropdown is closed', () => {
300+
spyOn(component, 'onSearchQueryChangeExec');
301+
component.triggerSearchOnDropdownClose(true);
302+
expect(component.onSearchQueryChangeExec).not.toHaveBeenCalled();
303+
component.triggerSearchOnDropdownClose(false);
304+
expect(component.onSearchQueryChangeExec).toHaveBeenCalled();
305+
});
306+
299307
it('should deselectAll', () => {
300308
spyOn(component, 'updateSelectionDetails');
301309
spyOn(component, 'refreshSearchBarLabels');

core/templates/pages/library-page/search-bar/search-bar.component.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,22 @@ export class SearchBarComponent implements OnInit, OnDestroy {
185185
this.updateSelectionDetails(itemsType);
186186
this.refreshSearchBarLabels();
187187
}
188-
189188
deselectAll(itemsType: string): void {
190189
this.selectionDetails[itemsType].selections = {};
191190
this.updateSelectionDetails(itemsType);
192191
this.refreshSearchBarLabels();
193192
}
194193

194+
/**
195+
* Triggers a search query when the dropdown menu is closed.
196+
* @param {boolean} isOpen - The new open state of the dropdown.
197+
*/
198+
triggerSearchOnDropdownClose(isOpen: boolean): void {
199+
if (!isOpen) {
200+
this.onSearchQueryChangeExec();
201+
}
202+
}
203+
195204
onSearchQueryChangeExec(): void {
196205
let searchUrlQueryString = this.searchService.getSearchUrlQueryString(
197206
this.searchQuery,

0 commit comments

Comments
 (0)