diff --git a/static/js/components/backToTop.js b/static/js/components/backToTop.js
index 6d95feb..7d92f76 100644
--- a/static/js/components/backToTop.js
+++ b/static/js/components/backToTop.js
@@ -1,23 +1,33 @@
// Back to Top Button Component
class BackToTopButton extends HTMLElement {
- connectedCallback() {
- this.innerHTML = `
-
- `;
- const btn = this.querySelector('#backToTopBtn');
- window.addEventListener('scroll', () => {
- btn.style.display = window.scrollY > 300 ? 'block' : 'none';
- });
- btn.addEventListener('click', () => {
- window.scrollTo({ top: 0, behavior: 'smooth' });
- });
- }
+ connectedCallback() {
+ this.innerHTML = `
+
+ `;
+
+ const btn = this.querySelector('#backToTopBtn');
+
+ let previousScrollY = window.scrollY;
+
+ window.addEventListener('scroll', () => {
+ const currentScrollY = window.scrollY;
+ const isScrollingUp = currentScrollY < previousScrollY;
+ const shouldShowButton = currentScrollY > 300 && isScrollingUp;
+
+ btn.style.display = shouldShowButton ? 'block' : 'none';
+ previousScrollY = currentScrollY;
+ });
+
+ btn.addEventListener('click', () => {
+ window.scrollTo({ top: 0, behavior: 'smooth' });
+ });
+ }
}
export function registerBackToTopButton() {
- if (!customElements.get('back-to-top')) {
- customElements.define('back-to-top', BackToTopButton);
- }
+ if (!customElements.get('back-to-top')) {
+ customElements.define('back-to-top', BackToTopButton);
+ }
}