diff --git a/assets/js/theme/design-system/search.js b/assets/js/theme/design-system/search.js index a7c674f1bff288488d10d4e5675e4f8eabc500b4..1b4d3d0642dfa113327aa0151b6df8dd1fbe6757 100644 --- a/assets/js/theme/design-system/search.js +++ b/assets/js/theme/design-system/search.js @@ -1,3 +1,11 @@ +// const pagefind = await import("/pagefind/pagefind.js"); +// await pagefind.options({ +// baseUrl: "/", +// // ... more search options +// }); + +// console.log(pagefind) + class Search { constructor(button, pageFind) { this.button = button; @@ -5,7 +13,6 @@ class Search { this.closeButton = this.element.querySelector('.search__close'); this.searchInstance = pageFind; - if (!this.element) { return; } @@ -82,17 +89,20 @@ class Search { } // Selectors -window.addEventListener('DOMContentLoaded', (event) => { +window.addEventListener('DOMContentLoaded', () => { const pageFindSearch = document.querySelector("#search"); - + + if (typeof PagefindUI == "undefined") return; + if (pageFindSearch) { - let pageFind = new PagefindUI({ element: pageFindSearch, showSubResults: true }); + let pageFind = new PagefindUI({ + element: pageFindSearch, + showSubResults: true + }); (function () { const searchButton = document.querySelector(".pagefind-ui__toggle"); new Search(searchButton, pageFind); })(); - } - else { - return; } + }); diff --git a/layouts/partials/head/csp.html b/layouts/partials/head/csp.html index ac8482b0a467a6049ead337d5a328474a0d393e6..de1b2d9420f69d64cc252834bb4d1a716339b2f9 100644 --- a/layouts/partials/head/csp.html +++ b/layouts/partials/head/csp.html @@ -1,10 +1,8 @@ {{- with site.Data.website.external_domains -}} -<meta http-equiv="-Content-Security-Policy" +<meta http-equiv="Content-Security-Policy" content=" - default-src 'self' {{ delimit . " " }} {{ if not hugo.IsProduction }}'unsafe-inline'{{ end }}; - {{ if site.Params.search.active }} - script-src 'unsafe-eval'; - img-src * 'self' data: https:; - {{ end }} + default-src 'self' {{ delimit . " " }} + {{ if not hugo.IsProduction }}'unsafe-inline'{{ end }} + {{ if site.Params.search.active }}'wasm-unsafe-eval'{{ end }}; " /> -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/layouts/partials/header/search.html b/layouts/partials/header/search.html index d9fbe7563bb9ff074ee845450019e83bcb1a2be2..067d517622bc85f58c4f58ce34d22b2cfef8bff9 100644 --- a/layouts/partials/header/search.html +++ b/layouts/partials/header/search.html @@ -3,6 +3,7 @@ </button> <script src="/pagefind/pagefind-ui.js"></script> + <div id="search" class="search__modal" aria-hidden="true" aria-modal="true" role="dialog"> <button class="search__close" aria-label="{{ i18n "commons.search.close" }}"> {{ i18n "commons.search.close" }} diff --git a/package.json b/package.json index 79b8a0a42bfaecd545d6a2b9cced2361924d7d5b..66b60b9b6f8e93e768ebd4f287838bc297e33688 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,12 @@ "arnaudlevy <arnaud.levy@noesya.coop>" ], "license": "MIT", - "devDependencies": { - "shelljs": "^0.8.5" - }, "dependencies": { "@splidejs/splide": "^3.6.12", "glightbox": "^3.1.0", "intersection-observer": "^0.12.0", "leaflet": "^1.9.4", + "shelljs": "^0.8.5", "pagefind": "^1.0.3" }, "bin": "./bin/osuny.js"