diff --git a/framework/core/js/src/forum/components/Search.tsx b/framework/core/js/src/forum/components/Search.tsx index e5c455807e..3f6cb19495 100644 --- a/framework/core/js/src/forum/components/Search.tsx +++ b/framework/core/js/src/forum/components/Search.tsx @@ -94,7 +94,7 @@ export default class Search extends Compone const searchLabel = extractText(app.translator.trans('core.forum.header.search_placeholder')); return ( -
+
; + /** * An array of SearchSources. */ @@ -62,6 +64,7 @@ export default class SearchModal { - this.searchState.setValue(value); + this.query(value); this.inputScroll(this.inputElement()[0]?.scrollLeft ?? 0); }} inputAttrs={{ className: 'SearchModal-input' }} @@ -142,10 +145,10 @@ export default class SearchModal(); const loading = this.loadingSources.includes(this.activeSource().resource); - const shouldShowResults = !!this.searchState.getValue() && !loading; + const shouldShowResults = !!this.query() && !loading; const gambits = this.gambits(); - const fullPageLink = this.activeSource().fullPage(this.searchState.getValue()); - const results = this.activeSource()?.view(this.searchState.getValue()); + const fullPageLink = this.activeSource().fullPage(this.query()); + const results = this.activeSource()?.view(this.query()); if (shouldShowResults && fullPageLink) { items.add( @@ -205,7 +208,7 @@ export default class SearchModal gambit.enabled()); - const query = this.searchState.getValue(); + const query = this.query(); // We group the boolean gambits together to produce an initial item of // is:unread,sticky,locked, etc. @@ -357,10 +360,10 @@ export default class SearchModal; - const query = this.searchState.getValue(); + const query = this.query(); const replaced = query.slice(0, start) + text + query.slice(start + fromTyped.length); - this.searchState.setValue(replaced); + this.query(replaced); $input[0].focus(); setTimeout(() => { $input[0].setSelectionRange(start + text.length, start + text.length); @@ -375,7 +378,7 @@ export default class SearchModal `lorem ipsum is:unread dolor` */ gambifyInput(): Mithril.Children { - const query = this.searchState.getValue(); + const query = this.query(); let marked = query; app.search.gambits.match(this.activeSource().resource, query, (gambit: IGambit, matches: string[], negate: boolean, bit: string) => { @@ -439,6 +442,11 @@ export default class SearchModal) { + this.searchState.setValue(this.query()); + super.onremove(vnode); + } + search(query: string) { if (!query) return; @@ -484,7 +492,9 @@ export default class SearchModal