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