Skip to content

Commit 3a9b9b7

Browse files
authored
Cleanup nav style and add back nav collapse on mobile (#1035)
* Cleanup nav style and add back nav collapse on mobile * fix comment
1 parent 3f96742 commit 3a9b9b7

File tree

3 files changed

+69
-40
lines changed

3 files changed

+69
-40
lines changed
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* Hides the navbar when scrolling down on mobile, and causes it to reappear when scrolling back up.
3+
*/
4+
@jsx.component
5+
let make = (~children, ~isEnabled) => {
6+
let scrollDir = Hooks.useScrollDirection()
7+
if isEnabled {
8+
<div
9+
className={switch scrollDir {
10+
| Up(_) => "group nav-appear"
11+
12+
| Down(_) => "group nav-disappear"
13+
}}>
14+
children
15+
</div>
16+
} else {
17+
children
18+
}
19+
}

src/components/Navigation.res

+4-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ let make = (~fixed=true, ~isOverlayOpen: bool, ~setOverlayOpen: (bool => bool) =
8080
let url = router.route->Url.parse
8181
let version = url->Url.getVersionString
8282

83-
let toggleOverlay = () => setOverlayOpen(prev => !prev)
83+
let toggleOverlay = () => {
84+
setOverlayOpen(prev => !prev)
85+
}
8486

8587
let fixedNav = fixed ? "fixed top-0" : "relative"
8688

@@ -169,7 +171,7 @@ let make = (~fixed=true, ~isOverlayOpen: bool, ~setOverlayOpen: (bool => bool) =
169171
{isDocRoute(~route)
170172
? <nav
171173
id="docs-subnav"
172-
className="bg-white z-50 px-4 w-full h-12 shadow text-gray-60 text-12 md:text-14 transition duration-300 ease-out group-[.nav-disappear]:-translate-y-16 md:group-[.nav-disappear]:transform-none">
174+
className="bg-white z-50 px-4 w-full h-12 shadow text-gray-60 text-12 md:text-14 transition duration-300 ease-out group-[.nav-disappear]:-translate-y-32 md:group-[.nav-disappear]:transform-none">
173175
<div
174176
className="pl-30 flex gap-6 lg:gap-10 items-center h-full w-full max-w-1280 m-auto">
175177
<Link

src/layouts/SidebarLayout.res

+46-38
Original file line numberDiff line numberDiff line change
@@ -136,24 +136,26 @@ module Sidebar = {
136136
<>
137137
<div
138138
id="sidebar"
139+
style={{
140+
marginTop: "112px",
141+
}}
139142
className={(
140143
isOpen ? "fixed w-full left-0 h-full z-20 min-w-320" : "hidden "
141144
) ++ " overflow-x-hidden md:block md:w-48 md:-ml-4 lg:w-1/5 md:h-auto md:relative overflow-y-visible bg-white"}>
142145
<aside
143146
id="sidebar-content"
144147
className="relative top-0 px-4 w-full block md:top-16 md:pt-4 md:sticky border-r border-gray-20 overflow-y-auto pb-24"
145148
style={ReactDOMStyle.make(~height="calc(100vh - 4.5rem", ())}>
149+
<button
150+
onClick={evt => {
151+
ReactEvent.Mouse.preventDefault(evt)
152+
toggle()
153+
}}
154+
className="md:hidden h-16 flex pt-2 right-4 absolute">
155+
<Icon.Close />
156+
</button>
146157
<div className="flex justify-between">
147158
<div className="w-3/4 md:w-full"> toplevelNav </div>
148-
<button
149-
style={{paddingTop: "72px"}}
150-
onClick={evt => {
151-
ReactEvent.Mouse.preventDefault(evt)
152-
toggle()
153-
}}
154-
className="md:hidden h-16">
155-
<Icon.Close />
156-
</button>
157159
</div>
158160
preludeSection
159161
/* Firefox ignores padding in scroll containers, so we need margin
@@ -202,7 +204,7 @@ module BreadCrumbs = {
202204
module MobileDrawerButton = {
203205
@react.component
204206
let make = (~hidden: bool, ~onClick) =>
205-
<button className={(hidden ? "hidden" : "") ++ " md:hidden mr-3"} onMouseDown=onClick>
207+
<button className={(hidden ? "hidden " : "") ++ "md:hidden mr-3"} onMouseDown=onClick>
206208
<img className="h-4" src="/static/ic_sidebar_drawer.svg" />
207209
</button>
208210
}
@@ -222,6 +224,7 @@ let make = (
222224
~children,
223225
) => {
224226
let (isNavOpen, setNavOpen) = React.useState(() => false)
227+
225228
let router = Next.Router.useRouter()
226229
let version = Url.parse(router.route).version
227230

@@ -234,8 +237,11 @@ let make = (
234237

235238
let breadcrumbs = breadcrumbs->Option.mapOr(React.null, crumbs => <BreadCrumbs crumbs />)
236239

237-
let (_isSidebarOpen, setSidebarOpen) = sidebarState
238-
let toggleSidebar = () => setSidebarOpen(prev => !prev)
240+
let (isSidebarOpen, setSidebarOpen) = sidebarState
241+
242+
let toggleSidebar = () => {
243+
setSidebarOpen(prev => !prev)
244+
}
239245

240246
React.useEffect(() => {
241247
open Next.Router.Events
@@ -304,36 +310,38 @@ let make = (
304310

305311
<>
306312
<Meta title=metaTitle version />
307-
<div className={"mt-16 min-w-320 " ++ theme}>
308-
<div className="w-full">
309-
<Navigation isOverlayOpen=isNavOpen setOverlayOpen=setNavOpen />
310-
<div className="flex lg:justify-center">
311-
<div className="flex w-full max-w-1280 md:mx-8">
312-
sidebar
313-
<main className="px-4 w-full pt-20 md:ml-12 lg:mr-8 mb-32 md:max-w-576 lg:max-w-740">
314-
//width of the right content part
315-
<div
316-
className={"z-10 fixed border-b shadow top-[112px] left-0 pl-4 bg-white w-full py-4 md:relative md:border-none md:shadow-none md:p-0 md:top-auto flex items-center transition duration-300 ease-out group-[.nav-disappear]:-translate-y-32 md:group-[.nav-disappear]:transform-none"}>
317-
<MobileDrawerButton hidden=isNavOpen onClick={handleDrawerButtonClick} />
313+
<EnableCollapsibleNavbar isEnabled={!isSidebarOpen && !isNavOpen}>
314+
<div className={"mt-16 min-w-320 " ++ theme}>
315+
<div className="w-full">
316+
<Navigation isOverlayOpen=isNavOpen setOverlayOpen=setNavOpen />
317+
<div className="flex lg:justify-center">
318+
<div className="flex w-full max-w-1280 md:mx-8">
319+
sidebar
320+
<main className="px-4 w-full pt-20 md:ml-12 lg:mr-8 mb-32 md:max-w-576 lg:max-w-740">
321+
//width of the right content part
318322
<div
319-
className="truncate overflow-x-auto touch-scroll flex items-center space-x-4 md:justify-between mr-4 w-full">
320-
breadcrumbs
321-
editLinkEl
323+
className={"z-10 fixed border-b shadow top-[112px] left-0 pl-4 bg-white w-full py-4 md:relative md:border-none md:shadow-none md:p-0 md:top-auto flex items-center transition duration-300 ease-out group-[.nav-disappear]:-translate-y-64 md:group-[.nav-disappear]:transform-none"}>
324+
<MobileDrawerButton hidden=isNavOpen onClick={handleDrawerButtonClick} />
325+
<div
326+
className="truncate overflow-x-auto touch-scroll flex items-center space-x-4 md:justify-between mr-4 w-full">
327+
breadcrumbs
328+
editLinkEl
329+
</div>
322330
</div>
323-
</div>
324-
<div className={hasBreadcrumbs ? "mt-10" : "mt-6 md:-mt-4"}>
325-
<MdxProvider components> children </MdxProvider>
326-
</div>
327-
pagination
328-
</main>
329-
{switch rightSidebar {
330-
| Some(ele) => ele
331-
| None => React.null
332-
}}
331+
<div className={hasBreadcrumbs ? "mt-10" : "mt-6 md:-mt-4"}>
332+
<MdxProvider components> children </MdxProvider>
333+
</div>
334+
pagination
335+
</main>
336+
{switch rightSidebar {
337+
| Some(ele) => ele
338+
| None => React.null
339+
}}
340+
</div>
333341
</div>
334342
</div>
343+
<Footer />
335344
</div>
336-
<Footer />
337-
</div>
345+
</EnableCollapsibleNavbar>
338346
</>
339347
}

0 commit comments

Comments
 (0)