Add keyboard motions for onboarding

This commit is contained in:
Arnaud 2024-11-11 09:44:05 +07:00
parent 05578deec4
commit 2261f322fc
No known key found for this signature in database
GPG Key ID: 69D6CE281FCAE663
3 changed files with 50 additions and 4 deletions

View File

@ -1,5 +1,5 @@
import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { useState } from "react";
import { useEffect, useState } from "react";
import { Modal } from "@codex-storage/marketplace-ui-components";
import { ArrowRight } from "lucide-react";
import { OnBoardingLayout } from "../components/OnBoarding/OnBoardingLayout";
@ -26,6 +26,19 @@ function Index() {
const onNextStep = () => navigate({ to: "/onboarding-name" });
useEffect(() => {
const onKeyPress = (event: Event) => {
const e = event as KeyboardEvent;
if (e.key === "ArrowRight") {
navigate({ to: "/onboarding-name" });
}
};
document.addEventListener("keydown", onKeyPress);
return () => document.removeEventListener("keydown", onKeyPress);
}, [navigate]);
return (
<>
<OnBoardingLayout defaultIsStepValid={false} step={0}>
@ -56,7 +69,10 @@ function Index() {
Lets get started <ArrowRight></ArrowRight>
</a>
<Modal onClose={onLegalDisclaimerClose} open={modal}>
<Modal
onClose={onLegalDisclaimerClose}
open={modal}
className="disclaimer">
<h1>Disclaimer</h1>
<p>

View File

@ -1,5 +1,5 @@
import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { useState } from "react";
import { useEffect, useState } from "react";
import { attributes } from "../utils/attributes";
import ArrowRightCircle from "../assets/icons/arrow-circle.svg?react";
import { OnBoardingLayout } from "../components/OnBoarding/OnBoardingLayout";
@ -14,6 +14,21 @@ const OnBoardingChecks = () => {
const [isStepValid, setIsStepValid] = useState(false);
const navigate = useNavigate({ from: "/onboarding-checks" });
useEffect(() => {
const onKeyPress = (event: Event) => {
const e = event as KeyboardEvent;
if (e.key === "ArrowRight" && isStepValid) {
navigate({ to: "/dashboard" });
} else if (e.key === "ArrowLeft") {
navigate({ to: "/onboarding-name" });
}
};
document.addEventListener("keydown", onKeyPress);
return () => document.removeEventListener("keydown", onKeyPress);
}, [navigate, isStepValid]);
const onNextStep = () => {
if (isStepValid) {
navigate({ to: "/dashboard" });

View File

@ -1,5 +1,5 @@
import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { useState } from "react";
import { useEffect, useState } from "react";
import { OnBoardingLayout } from "../components/OnBoarding/OnBoardingLayout";
import { attributes } from "../utils/attributes";
import ArrowRightCircle from "../assets/icons/arrow-circle.svg?react";
@ -21,6 +21,21 @@ const OnBoardingName = () => {
}
};
useEffect(() => {
const onKeyPress = (event: Event) => {
const e = event as KeyboardEvent;
if (e.key === "ArrowRight") {
navigate({ to: "/onboarding-checks" });
} else if (e.key === "ArrowLeft") {
navigate({ to: "/" });
}
};
document.addEventListener("keydown", onKeyPress);
return () => document.removeEventListener("keydown", onKeyPress);
}, [navigate]);
return (
<OnBoardingLayout defaultIsStepValid={false} step={1}>
<>