diff options
| author | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-10-14 09:03:10 +0700 |
|---|---|---|
| committer | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-10-14 09:03:10 +0700 |
| commit | 7ada2eab1773629a3f74fe1a16ba78227953f912 (patch) | |
| tree | 5a6237093db529f694789e2fed448ecb18483493 /src/core/components | |
| parent | 26cee59f3abad5a9c45821ebdccc8ccb819c930b (diff) | |
add fillterby brand di kolom pencarian
Diffstat (limited to 'src/core/components')
| -rw-r--r-- | src/core/components/elements/Navbar/Search.jsx | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/src/core/components/elements/Navbar/Search.jsx b/src/core/components/elements/Navbar/Search.jsx index f4a8ab3a..e4f89103 100644 --- a/src/core/components/elements/Navbar/Search.jsx +++ b/src/core/components/elements/Navbar/Search.jsx @@ -3,12 +3,18 @@ import { MagnifyingGlassIcon } from '@heroicons/react/24/outline' import { useCallback, useEffect, useRef, useState } from 'react' import Link from '../Link/Link' import { useRouter } from 'next/router' +import { getIdFromSlug, getNameFromSlug } from '@/core/utils/slug' const Search = () => { const router = useRouter() const queryRef = useRef() + const { slug = '' } = router.query const [query, setQuery] = useState(router.query.q || '') const [suggestions, setSuggestions] = useState([]) + const [segment, setSegment] = useState(null) + const [optionSegment, setOptionSegment] = useState(null) + const [optoinSelected, setOptionSelected] = useState(getNameFromSlug(slug) || 'default') + const [pathSegments, setPathSegments] = useState(router?.asPath.split('/') || []) const loadSuggestion = useCallback(() => { if (query && document.activeElement == queryRef.current) { @@ -26,14 +32,29 @@ const Search = () => { } else { setSuggestions([]) } + setFilterSearch() }, [loadSuggestion, query]) const handleSubmit = (e) => { e.preventDefault() - if (query) { - router.push(`/shop/search?q=${query}`) + if (optionSegment && optoinSelected !== 'default' && optoinSelected) { + router.push(`/shop/${segment}/${slug}?q=${query}`) } else { - queryRef.current.focus() + if (query) { + router.push(`/shop/search?q=${query}`) + } else { + queryRef.current.focus() + } + } + } + + const handleSelectChange = async (e) => { + await setOptionSelected(e.target.value) + } + const setFilterSearch = async () => { + if (router.pathname.includes('brands') && pathSegments[3]) { + await setSegment(pathSegments[2]) + await setOptionSegment(getNameFromSlug(slug)) } } @@ -46,10 +67,23 @@ const Search = () => { return ( <> <form onSubmit={handleSubmit} className='flex-1 flex relative'> + {segment && ( + <select + value={optoinSelected} + onChange={handleSelectChange} + className='form-select p-3 rounded-l-sm bg-white border border-gray_r-6 border-r-0 capitalize' + > + <option value='default'>Di Indoteknik</option> + <option value={optionSegment}>Di {optionSegment}</option> + </select> + )} + <input type='text' ref={queryRef} - className='form-input p-3 rounded-r-none border-r-0 focus:border-gray_r-6' + className={`form-input p-3 ${ + segment ? 'rounded-l-none border-l-0' : '' + } rounded-r-none border-r-0 focus:border-gray_r-6`} placeholder='Ketik nama, part number, merk' value={query} onChange={(e) => setQuery(e.target.value)} |
