diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index ba053022..fad66ed2 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -111,7 +111,21 @@ Raymer * @version 1.0.0 */
-

Record something given by:

+
- -
@@ -436,6 +441,8 @@ export default class HomeView extends Vue { userAgentInfo = new UAParser(); // see https://docs.uaparser.js.org/v2/api/ua-parser-js/get-os.html selectedImage = ""; isImageViewerOpen = false; + isScrolled = false; + scrollHandler?: () => void; /** * CRITICAL VUE REACTIVITY BUG WORKAROUND @@ -536,11 +543,44 @@ export default class HomeView extends Vue { this.numNewOffersToUser + this.numNewOffersToUserProjects > 0, }, }); + + // Add scroll listener for button collapse + // Note: Scrolling happens on #app element, not window (see tailwind.css) + const appElement = document.getElementById("app"); + const scrollElement = appElement || window; + + this.scrollHandler = () => { + const scrollTop = appElement + ? appElement.scrollTop + : window.pageYOffset || document.documentElement.scrollTop || 0; + const shouldBeScrolled = scrollTop > 100; + if (this.isScrolled !== shouldBeScrolled) { + this.isScrolled = shouldBeScrolled; + } + }; + + // Set initial state + this.scrollHandler(); + // Listen on scroll element (prefer #app, fallback to window) + scrollElement.addEventListener("scroll", this.scrollHandler, { + passive: true, + }); } catch (err: unknown) { this.handleError(err); } } + /** + * Cleanup scroll listener on component unmount + */ + beforeUnmount() { + if (this.scrollHandler) { + const appElement = document.getElementById("app"); + const scrollElement = appElement || window; + scrollElement.removeEventListener("scroll", this.scrollHandler); + } + } + /** * Watch for changes in the current activeDid * Reload settings when user switches identities