From 77ce22d8e5b53d59654410259de7e8657580e3d9 Mon Sep 17 00:00:00 2001 From: Ricardo Silva Date: Wed, 18 Nov 2020 16:17:20 +0000 Subject: [PATCH] put filters inside a dropdown in mobile devices --- pages/search.tsx | 380 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 307 insertions(+), 73 deletions(-) diff --git a/pages/search.tsx b/pages/search.tsx index 2b272e265..bbac97382 100644 --- a/pages/search.tsx +++ b/pages/search.tsx @@ -1,6 +1,7 @@ import cn from 'classnames' import type { GetStaticPropsContext, InferGetStaticPropsType } from 'next' import Link from 'next/link' +import { useState } from 'react' import { useRouter } from 'next/router' import { getConfig } from '@bigcommerce/storefront-data-hooks/api' import getAllPages from '@bigcommerce/storefront-data-hooks/api/operations/get-all-pages' @@ -43,6 +44,9 @@ export default function Search({ categories, brands, }: InferGetStaticPropsType) { + const [activeFilter, setActiveFilter] = useState('') + const [toggleFilter, setToggleFilter] = useState(false) + const router = useRouter() const { asPath } = router const { q, sort } = router.query @@ -66,60 +70,222 @@ export default function Search({ sort: typeof sort === 'string' ? sort : '', }) + const handleClick = (event: any, filter: string) => { + if (filter !== activeFilter) { + setToggleFilter(true) + } else { + setToggleFilter(!toggleFilter) + } + + setActiveFilter(filter) + } + return ( -
-
-
    -
  • - - All Categories - -
  • - {categories.map((cat) => ( -
  • - +
    + {/* Categories */} +
    +
    + +
  • - ))} -
-
    -
  • - - All Designers - -
  • - {brands.flatMap(({ node }) => ( -
  • - + + + + +
+
+ +
+
+ + {/* Designs */} +
+
+ + + +
+
+ +
+
-
+ {/* Products */} +
{(q || activeCategory || activeBrand) && (
{data ? ( @@ -190,31 +356,99 @@ export default function Search({ )}
-
-
    -
  • Sort
  • -
  • +
    +
    + + + +
    +
    - - Relevance - -
  • - {SORT.map(([key, text]) => ( -
  • - - {text} - -
  • - ))} -
+ +
+