From 226eabc995051e29d35e612f07d972328975e604 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 2 Mar 2023 19:13:25 +0800 Subject: [PATCH] Mobile filter menu stuff --- .../web/components/elements/CloseButton.tsx | 56 +++++++++++++++++++ .../templates/homeFeed/HomeFeedContainer.tsx | 15 +++-- .../templates/homeFeed/LibraryFilterMenu.tsx | 31 ++++++++++ .../templates/homeFeed/LibraryHeader.tsx | 30 ++++++---- 4 files changed, 117 insertions(+), 15 deletions(-) create mode 100644 packages/web/components/elements/CloseButton.tsx diff --git a/packages/web/components/elements/CloseButton.tsx b/packages/web/components/elements/CloseButton.tsx new file mode 100644 index 000000000..b10d0508e --- /dev/null +++ b/packages/web/components/elements/CloseButton.tsx @@ -0,0 +1,56 @@ +import { X } from 'phosphor-react' +import { useState } from 'react' +import { Button } from './Button' +import { Box } from './LayoutPrimitives' + +type CloseButtonProps = { + close: () => void +} + +export function CloseButton(props: CloseButtonProps): JSX.Element { + const [hover, setHover] = useState(false) + + return ( + setHover(true)} + onMouseOut={() => setHover(false)} + > + + + ) +} diff --git a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx index dfc91924b..12ebb8cd6 100644 --- a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx +++ b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx @@ -732,6 +732,8 @@ function HomeFeedGrid(props: HomeFeedContentProps): JSX.Element { props.reloadItems() } + const [showFilterMenu, setShowFilterMenu] = useState(false) + return ( diff --git a/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx b/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx index 5cae94edb..2086a945f 100644 --- a/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx +++ b/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx @@ -7,6 +7,9 @@ import { CaretRight, Circle, DotsThree, Plus } from 'phosphor-react' import { useGetSubscriptionsQuery } from '../../../lib/networking/queries/useGetSubscriptionsQuery' import { useGetLabelsQuery } from '../../../lib/networking/queries/useGetLabelsQuery' import { Label } from '../../../lib/networking/fragments/labelFragment' +import { CloseButton } from '../../elements/CloseButton' +import { MenuHeaderButton } from './LibraryHeader' +import { LayoutType } from './HomeFeedContainer' export const LIBRARY_LEFT_MENU_WIDTH = '300px' @@ -15,6 +18,8 @@ type LibraryFilterMenuProps = { searchTerm: string | undefined applySearchQuery: (searchTerm: string) => void + + setShowFilterMenu: (show: boolean) => void } export function LibraryFilterMenu(props: LibraryFilterMenuProps): JSX.Element { @@ -34,8 +39,28 @@ export function LibraryFilterMenu(props: LibraryFilterMenuProps): JSX.Element { '&::-webkit-scrollbar': { display: 'none', }, + '@mdDown': { + top: '50px', + width: '100%', + zIndex: 6, // Above the header + }, + transform: 'translateX(0)', }} > + {/* + + props.setShowFilterMenu(false)} /> + */} @@ -51,6 +76,9 @@ export function LibraryFilterMenu(props: LibraryFilterMenuProps): JSX.Element { minWidth: LIBRARY_LEFT_MENU_WIDTH, height: '100%', bg: '$grayBase', + '@mdDown': { + display: 'none', + }, }} > @@ -206,6 +234,8 @@ type FilterButtonProps = { filterTerm: string searchTerm: string | undefined applySearchQuery: (searchTerm: string) => void + + setShowFilterMenu: (show: boolean) => void } function FilterButton(props: FilterButtonProps): JSX.Element { @@ -249,6 +279,7 @@ function FilterButton(props: FilterButtonProps): JSX.Element { }} onClick={(e) => { props.applySearchQuery(props.filterTerm) + props.setShowFilterMenu(false) e.preventDefault() }} > diff --git a/packages/web/components/templates/homeFeed/LibraryHeader.tsx b/packages/web/components/templates/homeFeed/LibraryHeader.tsx index 965886ee4..374ef65ad 100644 --- a/packages/web/components/templates/homeFeed/LibraryHeader.tsx +++ b/packages/web/components/templates/homeFeed/LibraryHeader.tsx @@ -11,11 +11,7 @@ import { GridSelectorIcon } from '../../elements/images/GridSelectorIcon' import { LayoutType } from './HomeFeedContainer' import { PrimaryDropdown } from '../PrimaryDropdown' import { LogoBox } from '../../elements/LogoBox' -import { - OmnivoreLogoIcon, - OmnivoreNameLogo, - OmnivoreSmallLogo, -} from '../../elements/images/OmnivoreNameLogo' +import { OmnivoreSmallLogo } from '../../elements/images/OmnivoreNameLogo' type LibraryHeaderProps = { layout: LayoutType @@ -23,6 +19,9 @@ type LibraryHeaderProps = { searchTerm: string | undefined applySearchQuery: (searchQuery: string) => void + + showFilterMenu: boolean + setShowFilterMenu: (show: boolean) => void } const FOCUSED_BOXSHADOW = '0px 0px 2px 2px rgba(255, 234, 159, 0.56)' @@ -108,7 +107,7 @@ function SmallHeaderLayout(props: LibraryHeaderProps): JSX.Element { }, }} > - + void +} + +export function MenuHeaderButton(props: MenuHeaderButtonProps): JSX.Element { return ( { + props.setShowFilterMenu(!props.showFilterMenu) + }} >