diff --git a/assets/js/flexsearch.js b/assets/js/flexsearch.js index 44f6cf4..3fba458 100644 --- a/assets/js/flexsearch.js +++ b/assets/js/flexsearch.js @@ -79,7 +79,7 @@ const result = resultsElement.querySelector('.active'); if (!result) return { result: undefined, index: -1 }; - const index = parseInt(result.getAttribute('data-index')); + const index = parseInt(result.dataset.index, 10); return { result, index }; } @@ -101,7 +101,7 @@ function getResultsLength() { const { resultsElement } = getActiveSearchElement(); if (!resultsElement) return 0; - return resultsElement.querySelectorAll('li').length; + return resultsElement.dataset.count; } // Finish the search by hiding the results and clearing the input. @@ -304,6 +304,7 @@ return; } + // Highlight the query in the result text. function highlightMatches(text, query) { const escapedQuery = query.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); const regex = new RegExp(escapedQuery, 'gi'); @@ -349,5 +350,6 @@ fragment.appendChild(li); } resultsElement.appendChild(fragment); + resultsElement.dataset.count = results.length; } })(); diff --git a/assets/js/tabs.js b/assets/js/tabs.js index 08a10d5..0d0912b 100644 --- a/assets/js/tabs.js +++ b/assets/js/tabs.js @@ -2,19 +2,19 @@ document.querySelectorAll('.tabs-toggle').forEach(function (button) { button.addEventListener('click', function (e) { // set parent tabs to unselected const tabs = Array.from(e.target.parentElement.querySelectorAll('.tabs-toggle')); - tabs.map(tab => tab.setAttribute('data-state', '')); + tabs.map(tab => tab.dataset.state = ''); // set current tab to selected - e.target.setAttribute('data-state', 'selected'); + e.target.dataset.state = 'selected'; // set all panels to unselected const panelsContainer = e.target.parentElement.nextElementSibling; Array.from(panelsContainer.children).forEach(function (panel) { - panel.setAttribute('data-state', ''); + panel.dataset.state = ''; }); const panelId = e.target.getAttribute('aria-controls'); const panel = panelsContainer.querySelector(`#${panelId}`); - panel.setAttribute('data-state', 'selected'); + panel.dataset.state = 'selected'; }); }); diff --git a/exampleSite/hugo.yaml b/exampleSite/hugo.yaml index e3fcb6b..a4ff6c6 100644 --- a/exampleSite/hugo.yaml +++ b/exampleSite/hugo.yaml @@ -72,3 +72,13 @@ menu: params: displayUpdatedDate: true dateFormat: "January 2, 2006" + + toc: + disabled: false + + search: + disabled: false + + editURL: + disabled: false + base: "https://github.com/imfing/hextra/edit/dev/exampleSite/content" diff --git a/i18n/en.yaml b/i18n/en.yaml index 2b11b83..322124e 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -1,2 +1,3 @@ article: on_this_page: "On this page" + edit_this_page: "Edit this page on GitHub →" diff --git a/layouts/_default/_markup/render-link.html b/layouts/_default/_markup/render-link.html index 935bb3e..0307f8e 100644 --- a/layouts/_default/_markup/render-link.html +++ b/layouts/_default/_markup/render-link.html @@ -1 +1,3 @@ -{{ .Text | safeHTML }} +{{- with . -}} + {{ .Text | safeHTML }} +{{- end -}} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index ff5f5b2..55636a7 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -1,6 +1,11 @@
+ {{ if hugo.IsProduction -}} + + {{ else -}} + + {{ end -}} {{ partialCached "favicons.html" . }}