fix(theme): preserve sidebar height on collapse (#8328)

This commit is contained in:
Danny Kim 2022-11-24 08:49:28 -05:00 committed by GitHub
parent 6be3beb8c9
commit 1bf058979e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 16 deletions

View file

@ -7,10 +7,11 @@
@media (min-width: 997px) { @media (min-width: 997px) {
.expandButton { .expandButton {
position: sticky; position: absolute;
top: 0; top: 0;
right: 0;
width: 100%;
height: 100%; height: 100%;
max-height: 100vh;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;

View file

@ -60,15 +60,20 @@ export default function DocRootLayoutSidebar({
} }
}}> }}>
<ResetOnSidebarChange> <ResetOnSidebarChange>
<div
className={clsx(
styles.sidebarViewport,
hiddenSidebar && styles.sidebarViewportHidden,
)}>
<DocSidebar <DocSidebar
sidebar={sidebar} sidebar={sidebar}
path={pathname} path={pathname}
onCollapse={toggleSidebar} onCollapse={toggleSidebar}
isHidden={hiddenSidebar} isHidden={hiddenSidebar}
/> />
</ResetOnSidebarChange>
{hiddenSidebar && <ExpandButton toggleSidebar={toggleSidebar} />} {hiddenSidebar && <ExpandButton toggleSidebar={toggleSidebar} />}
</div>
</ResetOnSidebarChange>
</aside> </aside>
); );
} }

View file

@ -29,4 +29,11 @@
width: var(--doc-sidebar-hidden-width); width: var(--doc-sidebar-hidden-width);
cursor: pointer; cursor: pointer;
} }
.sidebarViewport {
top: 0;
position: sticky;
height: 100%;
max-height: 100vh;
}
} }

View file

@ -9,13 +9,9 @@
.sidebar { .sidebar {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
max-height: 100vh;
height: 100%; height: 100%;
position: sticky;
top: 0;
padding-top: var(--ifm-navbar-height); padding-top: var(--ifm-navbar-height);
width: var(--doc-sidebar-width); width: var(--doc-sidebar-width);
transition: opacity 50ms ease;
} }
.sidebarWithHideableNavbar { .sidebarWithHideableNavbar {
@ -24,8 +20,6 @@
.sidebarHidden { .sidebarHidden {
opacity: 0; opacity: 0;
height: 0;
overflow: hidden;
visibility: hidden; visibility: hidden;
} }