diff --git a/app/assets/javascripts/discourse/widgets/search-menu-results.js.es6 b/app/assets/javascripts/discourse/widgets/search-menu-results.js.es6
index d057d196e..4db6f5af3 100644
--- a/app/assets/javascripts/discourse/widgets/search-menu-results.js.es6
+++ b/app/assets/javascripts/discourse/widgets/search-menu-results.js.es6
@@ -71,6 +71,10 @@ createWidget('search-menu-results', {
tagName: 'div.results',
html(attrs) {
+ if (attrs.invalidTerm) {
+ return h('div.no-results', I18n.t('search.too_short'));
+ }
+
if (attrs.noResults) {
return h('div.no-results', I18n.t('search.no_results'));
}
diff --git a/app/assets/javascripts/discourse/widgets/search-menu.js.es6 b/app/assets/javascripts/discourse/widgets/search-menu.js.es6
index 700bcc6f5..090b96d28 100644
--- a/app/assets/javascripts/discourse/widgets/search-menu.js.es6
+++ b/app/assets/javascripts/discourse/widgets/search-menu.js.es6
@@ -8,7 +8,8 @@ const searchData = {
results: {},
noResults: false,
term: undefined,
- typeFilter: null
+ typeFilter: null,
+ invalidTerm: false
};
// Helps with debouncing and cancelling promises
@@ -45,8 +46,11 @@ const SearchHelper = {
searchData.noResults = true;
searchData.results = [];
searchData.loading = false;
+ searchData.invalidTerm = true;
+
widget.scheduleRerender();
} else {
+ searchData.invalidTerm = false;
this._activeSearch = searchForTerm(term, { typeFilter, searchContext, fullSearchUrl });
this._activeSearch.then(content => {
searchData.noResults = content.resultTypes.length === 0;
@@ -98,7 +102,8 @@ export default createWidget('search-menu', {
} else {
results.push(this.attach('search-menu-results', { term: searchData.term,
noResults: searchData.noResults,
- results: searchData.results }));
+ results: searchData.results,
+ invalidTerm: searchData.invalidTerm }));
}
return results;
@@ -130,13 +135,9 @@ export default createWidget('search-menu', {
triggerSearch() {
searchData.noResults = false;
- if (isValidSearchTerm(searchData.term)) {
- this.searchService().set('highlightTerm', searchData.term);
- searchData.loading = true;
- Ember.run.debounce(SearchHelper, SearchHelper.perform, this, 400);
- } else {
- searchData.results = [];
- }
+ this.searchService().set('highlightTerm', searchData.term);
+ searchData.loading = true;
+ Ember.run.debounce(SearchHelper, SearchHelper.perform, this, 400);
},
moreOfType(type) {
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 8883d52f2..95ab9bb2b 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -1185,7 +1185,7 @@ en:
most_liked: "Most Liked"
select_all: "Select All"
clear_all: "Clear All"
- too_short: "Sorry, your search term is too short. Please try a longer query."
+ too_short: "Your search term is too short."
result_count:
one: "1 result for \"{{term}}\""
other: "{{count}} results for \"{{term}}\""