From d5dedbaa94b4f5d23c2ec7e09ec2acfa8b84e528 Mon Sep 17 00:00:00 2001 From: Dilson's Pickles Date: Thu, 15 Feb 2024 14:14:41 +0900 Subject: [PATCH] Create dismissable beta banner window.onload had to be changed to event listener to allow both scripts to run simultaneously --- src/assets/js/cookieConsent.js | 4 +- src/components/banner/BetaBanner.jsx | 25 +++++++++ src/components/beta/banner.astro | 3 - src/components/beta/banner.jsx | 41 ++++++++++++++ src/components/navigation/NavigationReact.jsx | 2 +- src/layouts/BaseLayout.astro | 56 ++++++++++++++----- src/styles/icons.css | 6 +- src/styles/input.css | 4 -- 8 files changed, 117 insertions(+), 24 deletions(-) create mode 100644 src/components/banner/BetaBanner.jsx delete mode 100644 src/components/beta/banner.astro create mode 100644 src/components/beta/banner.jsx diff --git a/src/assets/js/cookieConsent.js b/src/assets/js/cookieConsent.js index 6717640..3b945dd 100644 --- a/src/assets/js/cookieConsent.js +++ b/src/assets/js/cookieConsent.js @@ -22,7 +22,7 @@ const saveAcceptToStorage = () => const saveRejectToStorage = () => storageType.setItem(consentPropertyName, false); -window.onload = () => { +window.addEventListener("load", function () { const consentPopup = document.getElementById("consent-popup"); const acceptBtn = document.getElementById("accept"); const rejectBtn = document.getElementById("reject"); @@ -52,4 +52,4 @@ window.onload = () => { consentPopup.classList.remove("hide"); }, 2000); } -}; +}); diff --git a/src/components/banner/BetaBanner.jsx b/src/components/banner/BetaBanner.jsx new file mode 100644 index 0000000..2fa2103 --- /dev/null +++ b/src/components/banner/BetaBanner.jsx @@ -0,0 +1,25 @@ +import React from "react"; +import "../../styles/icons.css"; + +function BetaBanner() { + return ( +
+
+

Beta testers needed!

+

Help us test our ‘Save to cloud’ feature

+
+ Join the beta + + + +
+ ); +} + +export default BetaBanner; diff --git a/src/components/beta/banner.astro b/src/components/beta/banner.astro deleted file mode 100644 index b17b82e..0000000 --- a/src/components/beta/banner.astro +++ /dev/null @@ -1,3 +0,0 @@ -
- A new beta is available! Try it now! -
\ No newline at end of file diff --git a/src/components/beta/banner.jsx b/src/components/beta/banner.jsx new file mode 100644 index 0000000..e283980 --- /dev/null +++ b/src/components/beta/banner.jsx @@ -0,0 +1,41 @@ +import React, { useState, useEffect } from "react"; + +function banner() { + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + if (!sessionStorage.getItem("bannerDismissed")) { + setIsVisible(true); + } + }, []); + + function onDismissBanner() { + sessionStorage.setItem("bannerDismissed", "true"); + setIsVisible(false); + } + + if (!isVisible) return null; + + return ( +
+
+ Beta testers needed!Help us test our ‘Save to cloud’ + feature +
+ + Join beta + + onDismissBanner()} + className="absolute right-8 flex h-10 w-10 items-center justify-center border-gray-900 hover:border-2 rounded-md" + > + + +
+ ); +} + +export default banner; diff --git a/src/components/navigation/NavigationReact.jsx b/src/components/navigation/NavigationReact.jsx index 08fba5d..654c4a1 100644 --- a/src/components/navigation/NavigationReact.jsx +++ b/src/components/navigation/NavigationReact.jsx @@ -63,7 +63,7 @@ function NavigationReact(props) { } return ( -