From 6da5a4f3200baf7504086c6efd0320db5b2391a6 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 27 Jan 2023 21:35:08 -0800 Subject: [PATCH] Add toast on copy link It animates in and out too --- components/Header/index.tsx | 99 +++++++++++++++++++++++-------------- components/Toast/index.scss | 23 ++++++++- components/Toast/index.tsx | 18 ++++--- pages/_app.tsx | 2 +- styles/globals.scss | 27 ++++++++++ 5 files changed, 122 insertions(+), 47 deletions(-) diff --git a/components/Header/index.tsx b/components/Header/index.tsx index 55b49649..d2d8ed4c 100644 --- a/components/Header/index.tsx +++ b/components/Header/index.tsx @@ -33,6 +33,7 @@ import Link from 'next/link' import LoginModal from '~components/LoginModal' import SignupModal from '~components/SignupModal' import AccountModal from '~components/AccountModal' +import Toast from '~components/Toast' const Header = () => { // Localization @@ -42,7 +43,7 @@ const Header = () => { const router = useRouter() // State management - const [open, setOpen] = useState(false) + const [copyToastOpen, setCopyToastOpen] = useState(false) const [leftMenuOpen, setLeftMenuOpen] = useState(false) const [rightMenuOpen, setRightMenuOpen] = useState(false) @@ -50,6 +51,14 @@ const Header = () => { const { account } = useSnapshot(accountState) const { party } = useSnapshot(appState) + function handleCopyToastOpenChanged(open: boolean) { + setCopyToastOpen(open) + } + + function handleCopyToastCloseClicked() { + setCopyToastOpen(false) + } + function handleLeftMenuButtonClicked() { setLeftMenuOpen(!leftMenuOpen) } @@ -58,10 +67,6 @@ const Header = () => { setRightMenuOpen(!rightMenuOpen) } - function onClickOutsideMenu() { - setOpen(false) - } - function handleLeftMenuOpenChange(open: boolean) { setLeftMenuOpen(open) } @@ -86,11 +91,15 @@ const Header = () => { el.select() document.execCommand('copy') el.remove() + + setCopyToastOpen(true) } - function newParty() { + function handleNewParty(event: React.MouseEvent, path: string) { + event.preventDefault() + // Push the root URL - router.push('/') + router.push(path) // Clean state const resetState = clonedeep(initialAppState) @@ -100,6 +109,9 @@ const Header = () => { // Set party to be editable appState.party.editable = true + + // Close right menu + closeRightMenu() } function logout() { @@ -141,7 +153,7 @@ const Header = () => { else console.error('Failed to unsave team: No party ID') } - const title = () => { + const pageTitle = () => { let title = '' let hasAccessory = false @@ -178,22 +190,7 @@ const Header = () => { ) } - const saveButton = () => { - return ( -