From cc36116ae468cfb172309f8592dfb95805769c1b Mon Sep 17 00:00:00 2001 From: sonnguyenkieio Date: Mon, 6 Sep 2021 14:09:17 +0700 Subject: [PATCH] :sparkles: feat: Account Navigation --- .../AccountNavigation/AccountNavigation.tsx | 39 ++++++++++++++----- .../components/AccountNavigationItem.tsx | 7 ++-- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/components/modules/account/AccountNavigation/AccountNavigation.tsx b/src/components/modules/account/AccountNavigation/AccountNavigation.tsx index fd289edc9..15ecd3a31 100644 --- a/src/components/modules/account/AccountNavigation/AccountNavigation.tsx +++ b/src/components/modules/account/AccountNavigation/AccountNavigation.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react" +import React, { useState, useRef, RefObject, useEffect } from "react" import s from './AccountNavigation.module.scss' import AccountNavigationItem from './components/AccountNavigationItem' @@ -10,39 +10,58 @@ interface AccountNavigationProps { const AccountNavigation = ({ } : AccountNavigationProps) => { const active = "active", unActive = ""; - const [item1Active, setItem1Active] = useState(active); - const [item2Active, setItem2Active] = useState(unActive); + const [item1Active, setItem1Active] = useState(unActive); + const [item2Active, setItem2Active] = useState(active); const [item3Active, setItem3Active] = useState(unActive); + const item1 = useRef(null); + const item2 = useRef(null); + const item3 = useRef(null); + const slider = useRef(null); + + function slide(ref: RefObject) { + const top = ref.current.offsetTop; + slider.current.style.top = top.toString()+"px"; + } + function toggleItem1():void { setItem1Active(active) setItem2Active(unActive) setItem3Active(unActive) + slide(item1); } function toggleItem2():void { setItem2Active(active) setItem1Active(unActive) setItem3Active(unActive) + slide(item2); } function toggleItem3():void { setItem3Active(active) setItem1Active(unActive) setItem2Active(unActive) + slide(item3); } + + useEffect(() => { + slide(item2); + }, []) + return (
-
- Customer Information -
-
- Your Orders +
+ Customer Information
-
- Favourites +
+ Your Orders
+
+ Favourites +
+
) } diff --git a/src/components/modules/account/AccountNavigation/components/AccountNavigationItem.tsx b/src/components/modules/account/AccountNavigation/components/AccountNavigationItem.tsx index 47cd537f0..8bb18cb58 100644 --- a/src/components/modules/account/AccountNavigation/components/AccountNavigationItem.tsx +++ b/src/components/modules/account/AccountNavigation/components/AccountNavigationItem.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { RefObject } from "react"; import classNames from "classnames"; import s from './AccountNavigationItem.module.scss' @@ -6,11 +6,12 @@ interface AccountNavigationItemProps { children?: string; active?: string; target?: string; + onClick: () => void; } -const AccountNavigationItem = ({ children, active="" } : AccountNavigationItemProps) => { +const AccountNavigationItem = ({ children, active="", onClick } : AccountNavigationItemProps) => { return ( -
{children}