From 701798acaeb28f657bd1420d06253d350eb41b96 Mon Sep 17 00:00:00 2001 From: Factiven Date: Tue, 12 Sep 2023 21:45:30 +0700 Subject: initial v4 commit --- components/searchBar.js | 155 ------------------------------------------------ 1 file changed, 155 deletions(-) delete mode 100644 components/searchBar.js (limited to 'components/searchBar.js') diff --git a/components/searchBar.js b/components/searchBar.js deleted file mode 100644 index 20d2d7c..0000000 --- a/components/searchBar.js +++ /dev/null @@ -1,155 +0,0 @@ -import { useState, useEffect, useRef } from "react"; -import { motion as m, AnimatePresence } from "framer-motion"; -import { MagnifyingGlassIcon } from "@heroicons/react/24/outline"; -import { useAniList } from "../lib/anilist/useAnilist"; -import Image from "next/image"; -import Link from "next/link"; -import { useRouter } from "next/router"; - -const SearchBar = () => { - const [isOpen, setIsOpen] = useState(false); - const searchBoxRef = useRef(null); - - const router = useRouter(); - - const { aniAdvanceSearch } = useAniList(); - const [data, setData] = useState(null); - const [query, setQuery] = useState(""); - - const [lang, setLang] = useState("en"); - - useEffect(() => { - if (isOpen) { - searchBoxRef.current.querySelector("input").focus(); - } - const handleKeyDown = (e) => { - if (e.ctrlKey && e.code === "Space") { - setIsOpen((prev) => !prev); - setData(null); - setQuery(""); - } - }; - - document.addEventListener("keydown", handleKeyDown); - - const handleClick = (e) => { - if (searchBoxRef.current && !searchBoxRef.current.contains(e.target)) { - setIsOpen(false); - } - }; - document.addEventListener("click", handleClick); - - return () => { - document.removeEventListener("keydown", handleKeyDown); - document.removeEventListener("click", handleClick); - }; - }, [isOpen]); - - async function search() { - const data = await aniAdvanceSearch({ - search: query, - type: "ANIME", - perPage: 10, - }); - setData(data); - } - - useEffect(() => { - if (query) { - search(); - } - }, [query]); - - useEffect(() => { - const lang = localStorage.getItem("lang") || "id"; - if (lang === "en" || lang === null) { - setLang("en"); - } else if (lang === "id") { - setLang("id"); - } - }, []); - - function handleSubmit(e) { - e.preventDefault(); - if (data?.media.length) { - router.push(`${lang}/anime/${data?.media[0].id}`); - } - } - - return ( - - {isOpen && ( - -
-
- setQuery(e.target.value)} - /> -
-
- {data?.media.map((i) => ( - - search results -
-
-

{i.title.userPreferred}

-
- {i.status - ?.toLowerCase() - .replace(/^\w/, (c) => c.toUpperCase())}{" "} - {i.status && i.season && <>·}{" "} - {i.season - ?.toLowerCase() - .replace(/^\w/, (c) => c.toUpperCase())}{" "} - {(i.status || i.season) && i.episodes && <>·}{" "} - {i.episodes || 0} Episodes -
-
-
-

- {i.type - ?.toLowerCase() - .replace(/^\w/, (c) => c.toUpperCase())} -

-
-
- - ))} -
- {query && ( - - )} -
-
- )} -
- ); -}; - -export default SearchBar; -- cgit v1.2.3