From b9913a1bcc0f5960e65e5efc0668fd1fc1b52a50 Mon Sep 17 00:00:00 2001 From: Katalina Okano Date: Sat, 3 Apr 2021 19:06:36 -0400 Subject: [PATCH] use css media queries rather than JS media queries --- packages/backend-emulator/package.json | 2 +- .../atoms/breakpoints/BreakpointProvider.tsx | 1 + .../atoms/quick-nav/QuickNav.styled.ts | 21 ++++++++++++++-- .../atoms/quick-nav/QuickNav.tsx | 24 +++++++++---------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/packages/backend-emulator/package.json b/packages/backend-emulator/package.json index e904068..0e7e59e 100644 --- a/packages/backend-emulator/package.json +++ b/packages/backend-emulator/package.json @@ -15,6 +15,6 @@ "level": "^7.0.0", "minimist": "^1.2.5", "node-fetch": "^2.6.1", - "webpack": "^4.x" + "webpack": "4.44.2" } } diff --git a/packages/design-system/atoms/breakpoints/BreakpointProvider.tsx b/packages/design-system/atoms/breakpoints/BreakpointProvider.tsx index 8d53cc3..1f3dcf0 100644 --- a/packages/design-system/atoms/breakpoints/BreakpointProvider.tsx +++ b/packages/design-system/atoms/breakpoints/BreakpointProvider.tsx @@ -31,6 +31,7 @@ export const BreakpointsProvider = (props: { children: React.ReactNode }) => { }; updateScreenSize(); + setImmediate(() => updateScreenSize()); mediaQueries.onDesktop.addEventListener('change', updateScreenSize); mediaQueries.onTablet.addEventListener('change', updateScreenSize); diff --git a/packages/design-system/atoms/quick-nav/QuickNav.styled.ts b/packages/design-system/atoms/quick-nav/QuickNav.styled.ts index 7b4fd2e..4c2dd25 100644 --- a/packages/design-system/atoms/quick-nav/QuickNav.styled.ts +++ b/packages/design-system/atoms/quick-nav/QuickNav.styled.ts @@ -1,6 +1,22 @@ +import { onSmallScreen } from '@roleypoly/design-system/atoms/breakpoints'; +import { palette } from '@roleypoly/design-system/atoms/colors'; +import { transitions } from '@roleypoly/design-system/atoms/timings'; import styled, { css } from 'styled-components'; -import { palette } from '../colors'; -import { transitions } from '../timings'; + +export const HideIfSmall = styled.div` + display: initial; + + ${onSmallScreen(css` + display: none; + `)} +`; +export const HideIfNotSmall = styled.div` + display: none; + + ${onSmallScreen(css` + display: initial; + `)} +`; export const NavItem = styled.div<{ selected: boolean }>` padding: 7px; @@ -35,6 +51,7 @@ export const DropdownNavOpener = styled.div` cursor: pointer; border-radius: 2px; transition: background-color ${transitions.actionable}s ease-in-out; + width: 98vw; &:hover { background-color: ${palette.taupe300}; diff --git a/packages/design-system/atoms/quick-nav/QuickNav.tsx b/packages/design-system/atoms/quick-nav/QuickNav.tsx index 8971e15..fb76094 100644 --- a/packages/design-system/atoms/quick-nav/QuickNav.tsx +++ b/packages/design-system/atoms/quick-nav/QuickNav.tsx @@ -1,6 +1,5 @@ // thing should be everything visible on desktop/tablet and a popover when small -import { useBreakpointContext } from '@roleypoly/design-system/atoms/breakpoints'; import { Popover } from '@roleypoly/design-system/atoms/popover'; import { useState } from 'react'; import { GoChevronDown } from 'react-icons/go'; @@ -8,6 +7,8 @@ import { DropdownNavCurrent, DropdownNavIcon, DropdownNavOpener, + HideIfNotSmall, + HideIfSmall, NavItem, } from './QuickNav.styled'; @@ -18,18 +19,17 @@ export type QuickNavProps = { }; export const QuickNav = (props: QuickNavProps) => { - const breakpoints = useBreakpointContext(); - - if (breakpoints.screenSize.onSmallScreen) { - return ; - } - - return ; + return ( + <> + + + + ); }; export const QuickNavExpanded = (props: QuickNavProps) => { return ( -
+ {props.navItems.map((navItem) => ( props.onNavChange?.(navItem)} @@ -39,7 +39,7 @@ export const QuickNavExpanded = (props: QuickNavProps) => { {navItem} ))} -
+ ); }; @@ -47,7 +47,7 @@ export const QuickNavCollapsed = (props: QuickNavProps) => { const [popoverState, setPopoverState] = useState(false); return ( -
+ {popoverState ? ( Server Editor} @@ -80,6 +80,6 @@ export const QuickNavCollapsed = (props: QuickNavProps) => { {props.currentNavItem} )} -
+ ); };