From d937e32409db42d6dab3c1b5d7b0fc5d442edea5 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Thu, 27 Jan 2022 11:50:16 +0100 Subject: [PATCH] Differentiate between page height for mobile & desktop Signed-off-by: Philipp Hugenroth --- .../core-components/src/layout/Page/Page.tsx | 17 ++++++++++------- .../src/layout/Sidebar/MobileSidebar.tsx | 12 +++++++++++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/packages/core-components/src/layout/Page/Page.tsx b/packages/core-components/src/layout/Page/Page.tsx index b013affee3..055fb25b40 100644 --- a/packages/core-components/src/layout/Page/Page.tsx +++ b/packages/core-components/src/layout/Page/Page.tsx @@ -14,34 +14,37 @@ * limitations under the License. */ -import React, { PropsWithChildren } from 'react'; +import React, { useContext } from 'react'; import { BackstageTheme } from '@backstage/theme'; import { makeStyles, ThemeProvider } from '@material-ui/core/styles'; +import { SidebarPinStateContext } from '..'; export type PageClassKey = 'root'; -const useStyles = makeStyles( +const useStyles = makeStyles( () => ({ - root: { + root: ({ isMobile }) => ({ display: 'grid', gridTemplateAreas: "'pageHeader pageHeader pageHeader' 'pageSubheader pageSubheader pageSubheader' 'pageNav pageContent pageSidebar'", gridTemplateRows: 'max-content auto 1fr', gridTemplateColumns: 'auto 1fr auto', - height: '100%', + height: isMobile ? '100%' : '100vh', overflowY: 'auto', - }, + }), }), { name: 'BackstagePage' }, ); type Props = { themeId: string; + children?: React.ReactNode; }; -export function Page(props: PropsWithChildren) { +export function Page(props: Props) { const { themeId, children } = props; - const classes = useStyles(); + const { isMobile } = useContext(SidebarPinStateContext); + const classes = useStyles({ isMobile }); return ( ({ diff --git a/packages/core-components/src/layout/Sidebar/MobileSidebar.tsx b/packages/core-components/src/layout/Sidebar/MobileSidebar.tsx index 95947f9274..6734d4b53a 100644 --- a/packages/core-components/src/layout/Sidebar/MobileSidebar.tsx +++ b/packages/core-components/src/layout/Sidebar/MobileSidebar.tsx @@ -93,6 +93,10 @@ const useStyles = makeStyles(theme => ({ overlayHeaderClose: { color: theme.palette.bursts.fontColor, }, + + marginMobileSidebar: { + marginBottom: `${sidebarConfig.mobileSidebarHeight}px`, + }, })); const sortSidebarGroupsForPriority = (children: React.ReactElement[]) => @@ -117,7 +121,13 @@ const OverlayMenu = ({ anchor="bottom" open={open} onClose={onClose} - classes={{ paperAnchorBottom: classes.overlay }} + ModalProps={{ + BackdropProps: { classes: { root: classes.marginMobileSidebar } }, + }} + classes={{ + root: classes.marginMobileSidebar, + paperAnchorBottom: classes.overlay, + }} > {label}