diff --git a/index.html b/index.html index 9657c68..551d91d 100644 --- a/index.html +++ b/index.html @@ -91,7 +91,7 @@ * To disable suggestions, remove all influencers. */ suggestionInfluencers: [ - { name: 'Default', limit: 4, minChars: 1 }, + { name: 'Default', limit: 4 }, { name: 'History', limit: 4, minChars: 2 }, { name: 'DuckDuckGo', limit: 4, minChars: 2 }, ], @@ -828,8 +828,6 @@ } getSuggestions({ raw }) { - if (this._isTooShort(raw)) return Promise.resolve([]); - return new Promise((resolve) => resolve((this._suggestionDefaults[raw] || []).slice(0, this._limit)) ); @@ -843,7 +841,7 @@ getSuggestions(parsedQuery) { const { query } = parsedQuery; - if (this._isTooShort(query) || !query) return Promise.resolve([]); + if (this._isTooShort(query)) return Promise.resolve([]); return new Promise((resolve) => { window.autocompleteCallback = (res) => @@ -874,8 +872,8 @@ localStorage.clear(); } - addItem(query) { - if (query.length < 2) return; + addItem({ query }) { + if (query.length < this._minChars) return; let exists; const history = this._getHistory().map(([item, count]) => { @@ -893,20 +891,24 @@ this._setHistory(sorted); } - getSuggestions({ raw }) { - if (this._isTooShort(raw)) return Promise.resolve([]); + getSuggestions(parsedQuery) { + const { query } = parsedQuery; + if (this._isTooShort(query)) return Promise.resolve([]); return new Promise((resolve) => resolve( - this._getHistory() - .map(([item]) => item) - .filter( - (item) => - raw && - item.toLowerCase() !== raw.toLowerCase() && - item.toLowerCase().indexOf(raw.toLowerCase()) !== -1 - ) - .slice(0, this._limit) + this._addSearchPrefix( + this._getHistory() + .map(([item]) => item) + .filter( + (item) => + query && + item.toLowerCase() !== query.toLowerCase() && + item.toLowerCase().includes(query.toLowerCase()) + ) + .slice(0, this._limit), + parsedQuery + ) ) ); } @@ -955,8 +957,8 @@ this._onUnhighlight = callback; } - success(query) { - this._influencers.forEach((i) => i.addItem(query)); + success(parsedQuery) { + this._influencers.forEach((i) => i.addItem(parsedQuery)); this._clearSuggestions(); } @@ -1357,17 +1359,16 @@ _submitForm(e) { if (e) e.preventDefault(); - const query = this._inputEl.value; - if (this._suggester) this._suggester.success(query); - this.hide(); - const res = this._parseQuery(query); + const parsedQuery = this._parseQuery(this._inputEl.value); - if (res.length) { - res.forEach((r) => this._redirect(r.redirect, true)); - return; + if (parsedQuery.length) { + parsedQuery.forEach((r) => this._redirect(r.redirect, true)); + } else { + this._redirect(parsedQuery.redirect); } - this._redirect(res.redirect); + this._suggester.success(parsedQuery); + this.hide(); } _submitWithValue(value) {