From 95e2ee15675d6f378a97c3e8f34b00fb81cbf5aa Mon Sep 17 00:00:00 2001 From: xiaoxu Date: Mon, 27 Jan 2025 21:39:11 +0800 Subject: [PATCH 1/2] feat: add marathon disable popup --- components/Marathon/ApplyClosePopup.jsx | 60 ++++++++++++++++++++ components/Marathon/SignUp/ConfirmForm.jsx | 13 ++++- components/Marathon/SignUp/MarathonForm.jsx | 13 ++++- pages/learning-marathon/index.jsx | 14 ++++- public/assets/marathon-apply-close.png | Bin 0 -> 17015 bytes 5 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 components/Marathon/ApplyClosePopup.jsx create mode 100644 public/assets/marathon-apply-close.png diff --git a/components/Marathon/ApplyClosePopup.jsx b/components/Marathon/ApplyClosePopup.jsx new file mode 100644 index 00000000..8bd50c87 --- /dev/null +++ b/components/Marathon/ApplyClosePopup.jsx @@ -0,0 +1,60 @@ +import { useState, forwardRef, useImperativeHandle } from 'react'; +import Image from "next/image"; + +const ApplyClosePopup = forwardRef((props, ref) => { + const [isVisible, setIsVisible] = useState(false); + + const popupContent = { + title: '活動申請已截止', + description: '本次活動申請已截止,歡迎關注下次時間。', + content: '預計是7月初開放申請,8月底申請截止,歡迎追蹤社群媒體與訂閱電子報,接收最新訊息。', + }; + + useImperativeHandle(ref, () => ({ + showPopup: () => { + console.log('showPopup called'); + setIsVisible(true); + }, + hidePopup: () => { + setIsVisible(false); + }, + })); + + if (!isVisible) return null; + return ( +
+
+
+

{popupContent.title}

+ +

{popupContent.description}

+ +

+ {popupContent.content} +

+
+ +
+ Registration closed illustration +
+ +
+ +
+
+
+ ); +}); + +export default ApplyClosePopup; diff --git a/components/Marathon/SignUp/ConfirmForm.jsx b/components/Marathon/SignUp/ConfirmForm.jsx index 19047383..46b4b1b4 100644 --- a/components/Marathon/SignUp/ConfirmForm.jsx +++ b/components/Marathon/SignUp/ConfirmForm.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useRef } from 'react'; import styled from '@emotion/styled'; import { EDUCATION_STEP, ROLE } from '@/constants/member'; import toast from 'react-hot-toast'; @@ -26,6 +26,7 @@ import { StyledGroup } from './Edit.styled'; import MilestoneGroup from './MilestoneGroup'; +import ApplyClosePopup from '../ApplyClosePopup'; const StyledMarathonTitleSection = styled(Box)` padding: 10px; @@ -225,6 +226,7 @@ export default function ConfirmForm({ education: "", avatar: "" }); + const popupRef = useRef(null); const onPrevStep = () => { setCurrentStep(currentStep - 1); @@ -268,11 +270,13 @@ export default function ConfirmForm({ } }, [userState, openLoginModal]); const onSubmit = async () => { - const isSignupEnabled = true; + const isSignupEnabled = false; if (!isSignupEnabled) { - alert('申請已截止'); + popupRef.current.showPopup(); return; + } else { + popupRef.current.hidePopup(); } if (!marathonState) { console.error('no data to submit'); @@ -523,6 +527,9 @@ export default function ConfirmForm({ {marathonState._id ? '更新報名資料' : '提交申請'} + ); } diff --git a/components/Marathon/SignUp/MarathonForm.jsx b/components/Marathon/SignUp/MarathonForm.jsx index be9aa532..385a8be4 100644 --- a/components/Marathon/SignUp/MarathonForm.jsx +++ b/components/Marathon/SignUp/MarathonForm.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useReducer } from 'react'; +import { useState, useEffect, useReducer, useRef } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import toast from 'react-hot-toast'; import { @@ -26,6 +26,7 @@ import { } from './Edit.styled'; import MultiSelectDropdown from './MultiSelectDropdown'; import PricingForm from './PricingForm'; +import ApplyClosePopup from '../ApplyClosePopup'; const marathonFormReducer = (state, action) => { const { key, value } = action.payload; @@ -76,6 +77,7 @@ export default function MarathonForm({ const reduxDispatch = useDispatch(); const [hasLoaded, setHasLoaded] = useState(false); const [errors, setErrors] = useState({}); + const popupRef = useRef(null); const marathonState = useSelector((state) => { return state.marathon; }); const localStorgeStored = window.localStorage.getItem('newMarathon'); const editingMarathon = localStorgeStored ? JSON.parse(localStorgeStored) : null; @@ -234,11 +236,13 @@ export default function MarathonForm({ }; const onNextStep = () => { - const isSignupEnabled = true; + const isSignupEnabled = false; if (!isSignupEnabled) { - alert('申請已截止'); + popupRef.current.showPopup(); return; + } else { + popupRef.current.hidePopup(); } const isValid = handleValidateAll(); if (!isValid) { @@ -685,6 +689,9 @@ export default function MarathonForm({ 下一步 + ); diff --git a/pages/learning-marathon/index.jsx b/pages/learning-marathon/index.jsx index b4a31e27..78780cbf 100644 --- a/pages/learning-marathon/index.jsx +++ b/pages/learning-marathon/index.jsx @@ -1,5 +1,5 @@ import Link from 'next/link'; -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useState, useRef } from 'react'; import styled from '@emotion/styled'; import { useRouter } from 'next/router'; import SEOConfig from '@/shared/components/SEO'; @@ -20,6 +20,7 @@ import { useAuth, useAuthDispatch } from '@/contexts/Auth'; import { cn } from '@/utils/cn'; import Banner from '@/components/Banner'; import { logEvent } from '@/utils/analytics'; +import ApplyClosePopup from '@/components/Marathon/ApplyClosePopup'; const StyledBannerButton = styled(Button)` &.MuiButton-root { @@ -261,6 +262,7 @@ const List = ({ className, children }) => ( const LearningMarathon = () => { const { openLoginModal } = useAuthDispatch(); const { isLoggedIn, isTemporary } = useAuth(); + const popupRef = useRef(null); const router = useRouter(); const SEOData = useMemo( () => ({ @@ -295,12 +297,15 @@ const LearningMarathon = () => { ); const handleClickSignupButton = () => { - const isSignupEnabled = true; + const isSignupEnabled = false; if (!isSignupEnabled) { - alert('申請已截止'); + popupRef.current.showPopup(); return; + } else { + popupRef.current.hidePopup(); } + logEvent('Learning Marathon', 'Signup Button Clicked', { user_logged_in: isLoggedIn, user_temporary: isTemporary @@ -520,6 +525,9 @@ const LearningMarathon = () => { 立即申請 + ); }; diff --git a/public/assets/marathon-apply-close.png b/public/assets/marathon-apply-close.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ecb7871cb76c82e19872a24d6ee9b473de7588 GIT binary patch literal 17015 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 literal 0 HcmV?d00001 From e7dde4057cc847f420f02695ff4cc8fedfb4ab86 Mon Sep 17 00:00:00 2001 From: xiaoxu Date: Mon, 27 Jan 2025 21:53:49 +0800 Subject: [PATCH 2/2] fix: adjust img tag from next to vanilla --- components/Marathon/ApplyClosePopup.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/Marathon/ApplyClosePopup.jsx b/components/Marathon/ApplyClosePopup.jsx index 8bd50c87..b91d4184 100644 --- a/components/Marathon/ApplyClosePopup.jsx +++ b/components/Marathon/ApplyClosePopup.jsx @@ -1,5 +1,4 @@ import { useState, forwardRef, useImperativeHandle } from 'react'; -import Image from "next/image"; const ApplyClosePopup = forwardRef((props, ref) => { const [isVisible, setIsVisible] = useState(false); @@ -35,7 +34,7 @@ const ApplyClosePopup = forwardRef((props, ref) => {
-