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