Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 2x 2x 2x 2x 2x 15x 15x 2x 2x 2x 15x 1x 1x 1x 1x 1x 15x 4x 4x 15x 1x 1x 1x 16x | import React, { ChangeEvent, FormEvent, forwardRef, RefObject } from "react"
import { useRouter } from "next/router"
import SearchIcon from "./icons/SearchIcon"
import ClearIcon from "./icons/ClearIcon"
interface InputSearchProps {
inputSearchState: string
setInputSearchState: Function
gameListRef: RefObject<HTMLDivElement>
classes: string
}
const InputSearch = forwardRef(
(
{
inputSearchState,
setInputSearchState,
gameListRef,
classes,
}: InputSearchProps,
ref: any
) => {
const router = useRouter()
const clearSearch = () => {
setInputSearchState("")
router.push("/", undefined, { shallow: false })
gameListRef.current?.scrollTo(0, 0)
}
const onSearch = (e: FormEvent) => {
e.preventDefault()
const { value: searchString } = ref?.current as HTMLInputElement
setInputSearchState(searchString)
router.push(`/?search=${searchString}`, undefined, {
shallow: false,
})
gameListRef.current?.scrollTo(0, 0)
}
const onChangeSearchInput = (e: ChangeEvent<HTMLInputElement>) => {
const { value: searchString } = e.target
if (!searchString.length) clearSearch()
}
const onClearSearchBtn = () => {
clearSearch()
ref.current.value = ""
}
return (
<form
name="search-form"
onSubmit={(e) => onSearch(e)}
className={classes}
>
<label htmlFor="search">
<div className="relative w-[350px] sm:w-[400px]">
<input
ref={ref}
id="search"
type="text"
onChange={onChangeSearchInput}
autoComplete="off"
className="block p-[11px] pl-12 w-full text-md text-black bg-gray-50
rounded-lg border border-gray-300"
placeholder="Search Game (eg. Poker, Slots, Blackjack)"
/>
<div
className="flex absolute inset-y-0 left-0 items-center
pl-[17px] pointer-events-none"
>
<SearchIcon />
</div>
{inputSearchState !== "" && (
<div
onClick={onClearSearchBtn}
title="Clear Search"
className="text-white absolute right-2.5 bottom-2.5
hover:bg-gray-200 hover:cursor-pointer
rounded-lg"
>
<ClearIcon />
</div>
)}
</div>
</label>
</form>
)
}
)
export default InputSearch
|