|
@@ -31,6 +31,7 @@
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
// ============================================================
|
|
// ============================================================
|
|
|
|
|
+
|
|
|
|
|
|
|
|
// ======================= toggle theme =======================
|
|
// ======================= toggle theme =======================
|
|
|
var root = document.getElementById('root');
|
|
var root = document.getElementById('root');
|
|
@@ -300,44 +301,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
// ========================== search ==========================
|
|
// ========================== search ==========================
|
|
|
- var baseurl = null;
|
|
|
|
|
- {{ $siteBaseURL:= .Site.BaseURL }}
|
|
|
|
|
- var siteBaseURL = JSON.parse({{ $siteBaseURL | jsonify }});
|
|
|
|
|
- var siteBaseChecker = /\/\w+\//i;
|
|
|
|
|
- var isSlug = siteBaseChecker.test(siteBaseURL);
|
|
|
|
|
- var isThemeSite = location.origin.includes('themes.gohugo.io');
|
|
|
|
|
-
|
|
|
|
|
- {{ if .Site.IsMultiLingual }}
|
|
|
|
|
- if (isThemeSite) {
|
|
|
|
|
- baseurl = "{{.Site.BaseURL}}{{.Site.LanguagePrefix}}";
|
|
|
|
|
- } else {
|
|
|
|
|
- var hasLangPostfix = location.pathname.includes("/{{.Site.Language.Lang}}");
|
|
|
|
|
- if (hasLangPostfix) {
|
|
|
|
|
- if (isSlug) {
|
|
|
|
|
- baseurl = location.origin + siteBaseURL.match(siteBaseChecker)[0] + "{{.Site.Language.Lang}}";
|
|
|
|
|
- } else {
|
|
|
|
|
- baseurl = location.origin + "/{{.Site.Language.Lang}}";
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- if (isSlug) {
|
|
|
|
|
- baseurl = location.origin + siteBaseURL.match(siteBaseChecker)[0];
|
|
|
|
|
- } else {
|
|
|
|
|
- baseurl = location.origin;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- {{ else }}
|
|
|
|
|
- if (isThemeSite) {
|
|
|
|
|
- baseurl = "{{.Site.BaseURL}}";
|
|
|
|
|
- } else {
|
|
|
|
|
- if (isSlug) {
|
|
|
|
|
- baseurl = location.origin + siteBaseURL.match(siteBaseChecker)[0];
|
|
|
|
|
- } else {
|
|
|
|
|
- baseurl = location.origin;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- {{ end }}
|
|
|
|
|
-
|
|
|
|
|
|
|
+ {{ $permalink:= .Permalink }}
|
|
|
|
|
+ var permalink = JSON.parse({{ $permalink | jsonify }});
|
|
|
var searchResults = null;
|
|
var searchResults = null;
|
|
|
var searchMenu = null;
|
|
var searchMenu = null;
|
|
|
var searchText = null;
|
|
var searchText = null;
|
|
@@ -347,17 +312,9 @@
|
|
|
|
|
|
|
|
var fuse = null;
|
|
var fuse = null;
|
|
|
|
|
|
|
|
- function endsWith(str, suffix) {
|
|
|
|
|
- return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- function initFuse() {
|
|
|
|
|
- if (!endsWith(baseurl, "/")) {
|
|
|
|
|
- baseurl = baseurl + '/';
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
|
|
+ (function initFuse() {
|
|
|
var xhr = new XMLHttpRequest();
|
|
var xhr = new XMLHttpRequest();
|
|
|
- xhr.open('GET', baseurl + "index.json");
|
|
|
|
|
|
|
+ xhr.open('GET', permalink + "index.json");
|
|
|
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
|
|
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
|
|
|
xhr.onload = function () {
|
|
xhr.onload = function () {
|
|
|
if (xhr.status === 200) {
|
|
if (xhr.status === 200) {
|
|
@@ -377,29 +334,119 @@
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
xhr.send();
|
|
xhr.send();
|
|
|
|
|
+ })();
|
|
|
|
|
+
|
|
|
|
|
+ function makeLi(ulElem, obj) {
|
|
|
|
|
+ var li = document.createElement('li');
|
|
|
|
|
+ li.className = 'search-result__item';
|
|
|
|
|
+
|
|
|
|
|
+ var a = document.createElement('a');
|
|
|
|
|
+ a.innerHTML = obj.title;
|
|
|
|
|
+ a.setAttribute('class', 'search-result__item--title');
|
|
|
|
|
+ a.setAttribute('href', obj.permalink);
|
|
|
|
|
+
|
|
|
|
|
+ var descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ if (obj.description) {
|
|
|
|
|
+ descDiv.innerHTML = obj.description;
|
|
|
|
|
+ } else if (obj.content) {
|
|
|
|
|
+ descDiv.innerHTML = obj.content.substring(0, 80);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ li.appendChild(a);
|
|
|
|
|
+ li.appendChild(descDiv);
|
|
|
|
|
+ ulElem.appendChild(li);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function makeHighlightLi(ulElem, obj) {
|
|
|
|
|
+ var li = document.createElement('li');
|
|
|
|
|
+ li.className = 'search-result__item';
|
|
|
|
|
+ var descDiv = null;
|
|
|
|
|
+
|
|
|
|
|
+ var a = document.createElement('a');
|
|
|
|
|
+ a.innerHTML = obj.item.title;
|
|
|
|
|
+ a.setAttribute('class', 'search-result__item--title');
|
|
|
|
|
+ a.setAttribute('href', obj.item.uri);
|
|
|
|
|
+
|
|
|
|
|
+ if (obj.matches && obj.matches.length) {
|
|
|
|
|
+ for (var i = 0; i < obj.matches.length; i++) {
|
|
|
|
|
+ if ('title' === obj.matches[i].key) {
|
|
|
|
|
+ a = document.createElement('a');
|
|
|
|
|
+ a.innerHTML = generateHighlightedText(obj.matches[i].value, obj.matches[i].indices);
|
|
|
|
|
+ a.setAttribute('class', 'search-result__item--title');
|
|
|
|
|
+ a.setAttribute('href', obj.item.uri);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ('description' === obj.matches[i].key) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = generateHighlightedText(obj.item.description, obj.matches[i].indices);
|
|
|
|
|
+ } else if ('content' === obj.matches[i].key) {
|
|
|
|
|
+ if (!descDiv) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = generateHighlightedText(obj.item.content.substring(0, 80), obj.matches[i].indices);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (obj.item.description) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = obj.item.description;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = obj.item.content.substring(0, 80);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ li.appendChild(a);
|
|
|
|
|
+ if (descDiv) {
|
|
|
|
|
+ li.appendChild(descDiv);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (li) {
|
|
|
|
|
+ ulElem.appendChild(li);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function renderSearchResults(results) { // [{}, {}, ...] or [{item: {}, matches: []}, ...]
|
|
|
|
|
|
|
+ function renderSearchResults(searchText, results) {
|
|
|
searchResults = document.getElementById('search-results');
|
|
searchResults = document.getElementById('search-results');
|
|
|
searchMenu = document.getElementById('search-menu');
|
|
searchMenu = document.getElementById('search-menu');
|
|
|
searchResults.setAttribute('class', 'dd is-active');
|
|
searchResults.setAttribute('class', 'dd is-active');
|
|
|
|
|
+
|
|
|
|
|
+ var ul = document.createElement('ul');
|
|
|
|
|
+ ul.setAttribute('class', 'dd-content search-content');
|
|
|
|
|
|
|
|
- var content = document.createElement('div');
|
|
|
|
|
- content.setAttribute('class', 'dd-content search-content');
|
|
|
|
|
-
|
|
|
|
|
- if (results.length > 0) {
|
|
|
|
|
|
|
+ if (results.length) {
|
|
|
results.forEach(function (result) {
|
|
results.forEach(function (result) {
|
|
|
- var item = document.createElement('a');
|
|
|
|
|
- item.setAttribute('href', result.uri);
|
|
|
|
|
- item.setAttribute('class', 'dd-item');
|
|
|
|
|
- item.innerHTML = `<div class="menu-item"><div class="menu-item__title">📄 ${result.title}</div><div class="menu-item__desc">${result.description ? result.description : result.content}</div></div>`;
|
|
|
|
|
- content.appendChild(item);
|
|
|
|
|
|
|
+ var li = document.createElement('li');
|
|
|
|
|
+ var a = document.createElement('a');
|
|
|
|
|
+ a.setAttribute('href', result.uri);
|
|
|
|
|
+ a.setAttribute('class', 'dd-item');
|
|
|
|
|
+ a.appendChild(li);
|
|
|
|
|
+
|
|
|
|
|
+ var titleDiv = document.createElement('div');
|
|
|
|
|
+ titleDiv.innerHTML = result.title;
|
|
|
|
|
+ titleDiv.setAttribute('class', 'search-result__item--title');
|
|
|
|
|
+
|
|
|
|
|
+ var descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ if (result.description) {
|
|
|
|
|
+ descDiv.innerHTML = result.description;
|
|
|
|
|
+ } else if (result.content) {
|
|
|
|
|
+ descDiv.innerHTML = result.content.substring(0, 80);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ li.appendChild(titleDiv);
|
|
|
|
|
+ li.appendChild(descDiv);
|
|
|
|
|
+ ul.appendChild(a);
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
- var item = document.createElement('span');
|
|
|
|
|
- item.setAttribute('class', 'dd-item');
|
|
|
|
|
- item.innerText = 'No results found';
|
|
|
|
|
- content.appendChild(item);
|
|
|
|
|
|
|
+ var li = document.createElement('li');
|
|
|
|
|
+ li.setAttribute('class', 'dd-item');
|
|
|
|
|
+ li.innerText = 'No results found';
|
|
|
|
|
+ ul.appendChild(li);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
while (searchMenu.hasChildNodes()) {
|
|
while (searchMenu.hasChildNodes()) {
|
|
@@ -407,30 +454,73 @@
|
|
|
searchMenu.lastChild
|
|
searchMenu.lastChild
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
- searchMenu.appendChild(content);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ searchMenu.appendChild(ul);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function renderSearchHighlightResults(results) {
|
|
|
|
|
|
|
+ function renderSearchHighlightResults(searchText, results) {
|
|
|
searchResults = document.getElementById('search-results');
|
|
searchResults = document.getElementById('search-results');
|
|
|
searchMenu = document.getElementById('search-menu');
|
|
searchMenu = document.getElementById('search-menu');
|
|
|
searchResults.setAttribute('class', 'dd is-active');
|
|
searchResults.setAttribute('class', 'dd is-active');
|
|
|
|
|
|
|
|
- var content = document.createElement('div');
|
|
|
|
|
- content.setAttribute('class', 'dd-content search-content');
|
|
|
|
|
|
|
+ var ul = document.createElement('ul');
|
|
|
|
|
+ ul.setAttribute('class', 'dd-content search-content');
|
|
|
|
|
|
|
|
- if (results.length > 0) {
|
|
|
|
|
|
|
+ if (results.length) {
|
|
|
results.forEach(function (result) {
|
|
results.forEach(function (result) {
|
|
|
- var item = document.createElement('a');
|
|
|
|
|
- item.setAttribute('href', result.item.uri);
|
|
|
|
|
- item.setAttribute('class', 'dd-item');
|
|
|
|
|
- item.innerHTML = `<div class="menu-item"><div class="menu-item__title">📄 ${generateHighlightedText(result.item.title, result.matches[0].indices)}</div><div class="menu-item__desc">${result.matches[1] ? generateHighlightedText(result.item.description, result.matches[1].indices) : result.matches[2] ? generateHighlightedText(result.item.content, result.matches[2].indices) : ''}</div></div>`;
|
|
|
|
|
- content.appendChild(item);
|
|
|
|
|
|
|
+ var li = document.createElement('li');
|
|
|
|
|
+ var a = document.createElement('a');
|
|
|
|
|
+ var descDiv = null;
|
|
|
|
|
+
|
|
|
|
|
+ a.setAttribute('href', result.item.uri);
|
|
|
|
|
+ a.setAttribute('class', 'dd-item');
|
|
|
|
|
+ a.appendChild(li);
|
|
|
|
|
+
|
|
|
|
|
+ var titleDiv = document.createElement('div');
|
|
|
|
|
+ titleDiv.innerHTML = result.item.title;
|
|
|
|
|
+ titleDiv.setAttribute('class', 'search-result__item--title');
|
|
|
|
|
+
|
|
|
|
|
+ if (result.matches && result.matches.length) {
|
|
|
|
|
+ for (var i = 0; i < result.matches.length; i++) {
|
|
|
|
|
+ if ('title' === result.matches[i].key) {
|
|
|
|
|
+ titleDiv.innerHTML = generateHighlightedText(result.matches[i].value, result.matches[i].indices);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ('description' === result.matches[i].key) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = generateHighlightedText(result.item.description, result.matches[i].indices);
|
|
|
|
|
+ } else if ('content' === result.matches[i].key) {
|
|
|
|
|
+ if (!descDiv) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = generateHighlightedText(result.item.content.substring(0, 80), result.matches[i].indices);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (result.item.description) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = result.item.description;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'search-result__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = result.item.content.substring(0, 80);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ li.appendChild(titleDiv);
|
|
|
|
|
+ if (descDiv) {
|
|
|
|
|
+ li.appendChild(descDiv);
|
|
|
|
|
+ }
|
|
|
|
|
+ ul.appendChild(a);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
- var item = document.createElement('span');
|
|
|
|
|
- item.setAttribute('class', 'dd-item');
|
|
|
|
|
- item.innerText = 'No results found';
|
|
|
|
|
- content.appendChild(item);
|
|
|
|
|
|
|
+ var li = document.createElement('li');
|
|
|
|
|
+ li.setAttribute('class', 'dd-item');
|
|
|
|
|
+ li.innerText = 'No results found';
|
|
|
|
|
+ ul.appendChild(li);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
while (searchMenu.hasChildNodes()) {
|
|
while (searchMenu.hasChildNodes()) {
|
|
@@ -438,10 +528,10 @@
|
|
|
searchMenu.lastChild
|
|
searchMenu.lastChild
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
- searchMenu.appendChild(content);
|
|
|
|
|
|
|
+ searchMenu.appendChild(ul);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function renderSearchResultsMobile(results) {
|
|
|
|
|
|
|
+ function renderSearchResultsMobile(searchText, results) {
|
|
|
searchResults = document.getElementById('search-mobile-results');
|
|
searchResults = document.getElementById('search-mobile-results');
|
|
|
|
|
|
|
|
var content = document.createElement('div');
|
|
var content = document.createElement('div');
|
|
@@ -451,7 +541,7 @@
|
|
|
results.forEach(function (result) {
|
|
results.forEach(function (result) {
|
|
|
var item = document.createElement('a');
|
|
var item = document.createElement('a');
|
|
|
item.setAttribute('href', result.uri);
|
|
item.setAttribute('href', result.uri);
|
|
|
- item.innerHTML = `<div class="mobile-search__item"><div class="mobile-search__item--title">📄 ${result.title}</div><div class="mobile-search__item--desc">${result.description ? result.description : result.content}</div></div>`;
|
|
|
|
|
|
|
+ item.innerHTML = '<div class="mobile-search__item"><div class="mobile-search__item--title">📄 ' + result.title + '</div><div class="mobile-search__item--desc">' + (result.description ? result.description : result.content) + '</div></div>';
|
|
|
content.appendChild(item);
|
|
content.appendChild(item);
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
@@ -466,29 +556,72 @@
|
|
|
searchResults.appendChild(content);
|
|
searchResults.appendChild(content);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function renderSearchHighlightResultsMobile(results) {
|
|
|
|
|
|
|
+ function renderSearchHighlightResultsMobile(searchText, results) {
|
|
|
searchResults = document.getElementById('search-mobile-results');
|
|
searchResults = document.getElementById('search-mobile-results');
|
|
|
|
|
|
|
|
- var content = document.createElement('div');
|
|
|
|
|
- content.setAttribute('class', 'mobile-search__content');
|
|
|
|
|
|
|
+ var ul = document.createElement('div');
|
|
|
|
|
+ ul.setAttribute('class', 'mobile-search__content');
|
|
|
|
|
|
|
|
- if (results.length > 0) {
|
|
|
|
|
|
|
+ if (results.length) {
|
|
|
results.forEach(function (result) {
|
|
results.forEach(function (result) {
|
|
|
- var item = document.createElement('a');
|
|
|
|
|
- item.setAttribute('href', result.item.uri);
|
|
|
|
|
- item.innerHTML = `<div class="mobile-search__item"><div class="mobile-search__item--title">📄 ${generateHighlightedText(result.item.title, result.matches[0].indices)}</div><div class="mobile-search__item--desc">${result.matches[1] ? generateHighlightedText(result.item.description, result.matches[1].indices) : result.matches[2] ? generateHighlightedText(result.item.content, result.matches[2].indices) : ''}</div></div>`;
|
|
|
|
|
- content.appendChild(item);
|
|
|
|
|
|
|
+ var li = document.createElement('li');
|
|
|
|
|
+ var a = document.createElement('a');
|
|
|
|
|
+ var descDiv = null;
|
|
|
|
|
+
|
|
|
|
|
+ a.setAttribute('href', result.item.uri);
|
|
|
|
|
+ a.appendChild(li);
|
|
|
|
|
+ li.setAttribute('class', 'mobile-search__item');
|
|
|
|
|
+
|
|
|
|
|
+ var titleDiv = document.createElement('div');
|
|
|
|
|
+ titleDiv.innerHTML = result.item.title;
|
|
|
|
|
+ titleDiv.setAttribute('class', 'mobile-search__item--title');
|
|
|
|
|
+
|
|
|
|
|
+ if (result.matches && result.matches.length) {
|
|
|
|
|
+ for (var i = 0; i < result.matches.length; i++) {
|
|
|
|
|
+ if ('title' === result.matches[i].key) {
|
|
|
|
|
+ titleDiv.innerHTML = generateHighlightedText(result.matches[i].value, result.matches[i].indices);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ('description' === result.matches[i].key) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'mobile-search__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = generateHighlightedText(result.item.description, result.matches[i].indices);
|
|
|
|
|
+ } else if ('content' === result.matches[i].key) {
|
|
|
|
|
+ if (!descDiv) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'mobile-search__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = generateHighlightedText(result.item.content.substring(0, 150), result.matches[i].indices);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (result.item.description) {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'mobile-search__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = result.item.description;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ descDiv = document.createElement('div');
|
|
|
|
|
+ descDiv.setAttribute('class', 'mobile-search__item--desc');
|
|
|
|
|
+ descDiv.innerHTML = result.item.content.substring(0, 150);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ li.appendChild(titleDiv);
|
|
|
|
|
+ if (descDiv) {
|
|
|
|
|
+ li.appendChild(descDiv);
|
|
|
|
|
+ }
|
|
|
|
|
+ ul.appendChild(a);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
var item = document.createElement('span');
|
|
var item = document.createElement('span');
|
|
|
- content.appendChild(item);
|
|
|
|
|
|
|
+ ul.appendChild(item);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
let wrap = document.getElementById('search-mobile-results');
|
|
let wrap = document.getElementById('search-mobile-results');
|
|
|
while (wrap.firstChild) {
|
|
while (wrap.firstChild) {
|
|
|
wrap.removeChild(wrap.firstChild)
|
|
wrap.removeChild(wrap.firstChild)
|
|
|
}
|
|
}
|
|
|
- searchResults.appendChild(content);
|
|
|
|
|
|
|
+ searchResults.appendChild(ul);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function generateHighlightedText(text, regions) {
|
|
function generateHighlightedText(text, regions) {
|
|
@@ -517,67 +650,70 @@
|
|
|
return content;
|
|
return content;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- initFuse();
|
|
|
|
|
-
|
|
|
|
|
var searchElem = document.getElementById('search');
|
|
var searchElem = document.getElementById('search');
|
|
|
var searchMobile = document.getElementById('search-mobile');
|
|
var searchMobile = document.getElementById('search-mobile');
|
|
|
|
|
+ var searchResultsContainer = document.getElementById('search-results');
|
|
|
|
|
|
|
|
|
|
+ searchElem ?
|
|
|
searchElem.addEventListener('input', function(e) {
|
|
searchElem.addEventListener('input', function(e) {
|
|
|
- if (!e.target.value) {
|
|
|
|
|
- document.getElementById('search-results').setAttribute('class', 'dd');
|
|
|
|
|
- return null;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (window.innerWidth < 770) {
|
|
|
|
|
|
|
+ if (!e.target.value | window.innerWidth < 770) {
|
|
|
|
|
+ searchResultsContainer ? searchResultsContainer.setAttribute('class', 'dd') : null;
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
searchText = e.target.value;
|
|
searchText = e.target.value;
|
|
|
-
|
|
|
|
|
var results = fuse.search(e.target.value);
|
|
var results = fuse.search(e.target.value);
|
|
|
|
|
+
|
|
|
if (enableSearchHighlight) {
|
|
if (enableSearchHighlight) {
|
|
|
- renderSearchHighlightResults(results);
|
|
|
|
|
|
|
+ renderSearchHighlightResults(searchText, results);
|
|
|
} else {
|
|
} else {
|
|
|
- renderSearchResults(results);
|
|
|
|
|
|
|
+ renderSearchResults(searchText, results);
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
|
|
|
|
|
+ var dropdownItems = searchResultsContainer.querySelectorAll('.dd-item');
|
|
|
|
|
+ dropdownItems ? dropdownItems.forEach(function (item) {
|
|
|
|
|
+ item.addEventListener('mousedown', function (e) {
|
|
|
|
|
+ console.log('mousedown');
|
|
|
|
|
+ e.target.click();
|
|
|
|
|
+ });
|
|
|
|
|
+ }) : null;
|
|
|
|
|
+ }) : null;
|
|
|
|
|
+
|
|
|
|
|
+ searchElem ?
|
|
|
searchElem.addEventListener('blur', function() {
|
|
searchElem.addEventListener('blur', function() {
|
|
|
if (window.innerWidth < 770) {
|
|
if (window.innerWidth < 770) {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
- setTimeout(function () {
|
|
|
|
|
- document.getElementById('search-results').setAttribute('class', 'dd');
|
|
|
|
|
- }, 100);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ searchResultsContainer ? searchResultsContainer.setAttribute('class', 'dd') : null;
|
|
|
|
|
+ }) : null;
|
|
|
|
|
|
|
|
|
|
+ searchElem ?
|
|
|
searchElem.addEventListener('click', function(e) {
|
|
searchElem.addEventListener('click', function(e) {
|
|
|
if (window.innerWidth < 770) {
|
|
if (window.innerWidth < 770) {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
if (!e.target.value) {
|
|
if (!e.target.value) {
|
|
|
- document.getElementById('search-results').setAttribute('class', 'dd');
|
|
|
|
|
|
|
+ searchResultsContainer ? searchResultsContainer.setAttribute('class', 'dd') : null;
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
searchText = e.target.value;
|
|
searchText = e.target.value;
|
|
|
var results = fuse.search(e.target.value);
|
|
var results = fuse.search(e.target.value);
|
|
|
|
|
+
|
|
|
if (enableSearchHighlight) {
|
|
if (enableSearchHighlight) {
|
|
|
- renderSearchHighlightResults(results);
|
|
|
|
|
|
|
+ renderSearchHighlightResults(searchText, results);
|
|
|
} else {
|
|
} else {
|
|
|
- renderSearchResults(results);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- function indexInParent(node) {
|
|
|
|
|
- var children = node.parentNode.childNodes;
|
|
|
|
|
- var num = 0;
|
|
|
|
|
- for (var i = 0; i < children.length; i++) {
|
|
|
|
|
- if (children[i] == node) return num;
|
|
|
|
|
- if (children[i].nodeType == 1) num++;
|
|
|
|
|
|
|
+ renderSearchResults(searchText, results);
|
|
|
}
|
|
}
|
|
|
- return -1;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
+ var dropdownItems = searchResultsContainer.querySelectorAll('.dd-item');
|
|
|
|
|
+ dropdownItems ? dropdownItems.forEach(function (item) {
|
|
|
|
|
+ item.addEventListener('mousedown', function (e) {
|
|
|
|
|
+ console.log('mousedown');
|
|
|
|
|
+ e.target.click();
|
|
|
|
|
+ });
|
|
|
|
|
+ }) : null;
|
|
|
|
|
+ }) : null;
|
|
|
|
|
|
|
|
var searchMenuElem = document.getElementById("search-menu");
|
|
var searchMenuElem = document.getElementById("search-menu");
|
|
|
var activeItem = document.querySelector('#search-menu .dd-item.is-active');
|
|
var activeItem = document.querySelector('#search-menu .dd-item.is-active');
|
|
@@ -637,6 +773,7 @@
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ searchMobile ?
|
|
|
searchMobile.addEventListener('input', function(e) {
|
|
searchMobile.addEventListener('input', function(e) {
|
|
|
if (!e.target.value) {
|
|
if (!e.target.value) {
|
|
|
let wrap = document.getElementById('search-mobile-results');
|
|
let wrap = document.getElementById('search-mobile-results');
|
|
@@ -648,13 +785,21 @@
|
|
|
|
|
|
|
|
searchText = e.target.value;
|
|
searchText = e.target.value;
|
|
|
var results = fuse.search(e.target.value);
|
|
var results = fuse.search(e.target.value);
|
|
|
- renderSearchResultsMobile(results);
|
|
|
|
|
|
|
+
|
|
|
if (enableSearchHighlight) {
|
|
if (enableSearchHighlight) {
|
|
|
- renderSearchHighlightResultsMobile(results);
|
|
|
|
|
|
|
+ renderSearchHighlightResultsMobile(searchText, results);
|
|
|
} else {
|
|
} else {
|
|
|
- renderSearchResultsMobile(results);
|
|
|
|
|
|
|
+ renderSearchResultsMobile(searchText, results);
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+
|
|
|
|
|
+ var dropdownItems = searchResultsContainer.querySelectorAll('.dd-item');
|
|
|
|
|
+ dropdownItems ? dropdownItems.forEach(function (item) {
|
|
|
|
|
+ item.addEventListener('mousedown', function (e) {
|
|
|
|
|
+ console.log('mousedown');
|
|
|
|
|
+ e.target.click();
|
|
|
|
|
+ });
|
|
|
|
|
+ }) : null;
|
|
|
|
|
+ }) : null;
|
|
|
// ============================================================
|
|
// ============================================================
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|