From 6722caca0a45a50b8e24f4ac1f57abe8d8160b5d Mon Sep 17 00:00:00 2001 From: Liyang Zhu <1184997399@qq.com> Date: Mon, 13 Jun 2022 18:26:47 +0800 Subject: [PATCH] feat: add swiper --- src/routes/onboarding/index.js | 32 ++++++++++++++++++++----- src/routes/onboarding/styled.js | 6 +++++ src/routes/onboarding/useServerSetup.js | 22 +++++++++++++---- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/routes/onboarding/index.js b/src/routes/onboarding/index.js index 42c6d344..990a9a2f 100644 --- a/src/routes/onboarding/index.js +++ b/src/routes/onboarding/index.js @@ -1,5 +1,7 @@ import React from "react"; import { Helmet } from "react-helmet"; +import { Swiper, SwiperSlide } from "swiper/react"; +import "swiper/css"; import WelcomePage from "./steps/welcomePage"; import ServerName from "./steps/serverName"; import AdminAccount from "./steps/adminAccount"; @@ -51,12 +53,30 @@ export default function OnboardingPage() { - {serverSetup.step === "welcomePage" && } - {serverSetup.step === "serverName" && } - {serverSetup.step === "adminAccount" && } - {serverSetup.step === "whoCanSignUp" && } - {serverSetup.step === "inviteLink" && } - {serverSetup.step === "donePage" && } + serverSetup.setSwiper(swiper)} + > + + + + + + + + + + + + + + + + + + + ); diff --git a/src/routes/onboarding/styled.js b/src/routes/onboarding/styled.js index b7a430b7..1e91c3d5 100644 --- a/src/routes/onboarding/styled.js +++ b/src/routes/onboarding/styled.js @@ -11,6 +11,7 @@ const StyledOnboardingPage = styled.div` display: flex; justify-content: center; gap: 8px; + z-index: 10; > .node, > .arrow { @@ -19,6 +20,7 @@ const StyledOnboardingPage = styled.div` line-height: 28px; color: #101828; cursor: default; + transition: all 150ms ease-in-out; &.disabled { color: #d0d5dd; @@ -37,6 +39,10 @@ const StyledOnboardingPage = styled.div` } } } + + > .swiper { + height: 100%; + } `; export default StyledOnboardingPage; diff --git a/src/routes/onboarding/useServerSetup.js b/src/routes/onboarding/useServerSetup.js index 29c18686..56d3fe90 100644 --- a/src/routes/onboarding/useServerSetup.js +++ b/src/routes/onboarding/useServerSetup.js @@ -31,18 +31,32 @@ const steps = [ ]; export default function useServerSetup() { + const [swiper, setSwiper] = useState(null); + const [index, setIndex] = useState(0); const step = steps[index].name; - const setStep = useCallback((name) => { - setIndex(steps.map((step) => step.name).indexOf(name)); - }, []); + const setStep = useCallback( + (name) => { + const newIndex = steps.map((step) => step.name).indexOf(name); + setIndex(newIndex); + if (swiper !== null) { + swiper.slideTo(newIndex); + } + }, + [swiper] + ); const nextStep = useCallback(() => { setIndex((prev) => prev + 1); - }, []); + if (swiper !== null) { + swiper.slideNext(500); + } + }, [swiper]); const [serverName, setServerName] = useState(""); return { + swiper, + setSwiper, step, setStep, nextStep,