From c22789176da34b04d97cf4a16b1c3b801acc6293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Benegas?= Date: Wed, 21 Oct 2020 18:32:32 -0300 Subject: [PATCH] sticky nav, better dropdown exit --- components/core/Layout/Layout.tsx | 32 +++++++++++++-- components/core/UserNav/UserNav.tsx | 40 ++++++++++++++++--- .../ProductView/ProductView.module.css | 2 +- tailwind.config.js | 4 ++ 4 files changed, 67 insertions(+), 11 deletions(-) diff --git a/components/core/Layout/Layout.tsx b/components/core/Layout/Layout.tsx index e6e45fb26..f2deda1ee 100644 --- a/components/core/Layout/Layout.tsx +++ b/components/core/Layout/Layout.tsx @@ -1,4 +1,4 @@ -import { FC, useState } from 'react' +import { FC, useEffect, useState } from 'react' import cn from 'classnames' import type { Page } from '@lib/bigcommerce/api/operations/get-all-pages' import { CommerceProvider } from '@lib/bigcommerce' @@ -18,13 +18,37 @@ interface Props { const Layout: FC = ({ children, pageProps }) => { const { displaySidebar, closeSidebar } = useUI() const [acceptedCookies, setAcceptedCookies] = useState(false) + const [hasScrolled, setHasScrolled] = useState(false) + + useEffect(() => { + const offset = 0 + function handleScroll() { + const { scrollTop } = document.documentElement + if (scrollTop > offset) setHasScrolled(true) + else setHasScrolled(false) + } + document.addEventListener('scroll', handleScroll) + + return () => { + document.removeEventListener('scroll', handleScroll) + } + }, []) return (
- - - +
+ + + +
{children}