diff --git a/resources/img/graphic-assets/arrow-scroll-top.svg b/resources/img/graphic-assets/arrow-scroll-top.svg new file mode 100644 index 0000000..564f8fd --- /dev/null +++ b/resources/img/graphic-assets/arrow-scroll-top.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/resources/js/app.js b/resources/js/app.js index a3eea2e..224d594 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -6,11 +6,13 @@ import taxonomyThematiqueFaqInit from './taxonomy-thematique-(faq)'; import archiveNewsInit from './archive-template-news'; import filterPublicationsInit from './archive-template-publications'; import accordeonInit from './accordeon'; +import scrollerTopInit from './scrollerTop'; // window.addEventListener('load', function () {}); window.addEventListener('DOMContentLoaded', (event) => { menuInit(); SchemaBulletPointsInit(); + scrollerTopInit(); singleConseil(); editorInit(); accordeonInit(); diff --git a/resources/js/scrollerTop.js b/resources/js/scrollerTop.js new file mode 100644 index 0000000..9aafe85 --- /dev/null +++ b/resources/js/scrollerTop.js @@ -0,0 +1,26 @@ +function handleScrollButonDisplay() { + const scrollerTop = document.querySelector('#scroller-top'); + + if ( + document.body.scrollTop > window.innerHeight / 2 || + document.documentElement.scrollTop > window.innerHeight / 2 + ) { + scrollerTop.removeAttribute('aria-hidden'); + } else { + scrollerTop.setAttribute('aria-hidden', 'true'); + } +} +function scrollTop() { + window.scrollTo({ + top: 0, + behavior: 'smooth', + }); +} + +export default function scrollerTopInit() { + const scrollerTop = document.querySelector('#scroller-top'); + if (!scrollerTop) return; + + window.addEventListener('scroll', handleScrollButonDisplay); + scrollerTop.addEventListener('click', scrollTop); +} diff --git a/template-components/header/page-scroller.php b/template-components/header/page-scroller.php new file mode 100644 index 0000000..4cb3410 --- /dev/null +++ b/template-components/header/page-scroller.php @@ -0,0 +1,6 @@ + + + \ No newline at end of file