feat: add more search where filters

This commit is contained in:
Kentai Radiquum 2024-11-21 22:27:28 +05:00
parent f4d4d6a773
commit c9a1ec5324
Signed by: Radiquum
GPG key ID: 858E8EE696525EED

View file

@ -70,6 +70,15 @@ const TagMapping = {
}, },
}; };
const WhereMapping = {
releases: "Релизах",
list: "Списках",
history: "Истории",
favorites: "Избранном",
collections: "Коллекциях",
profiles: "Профилях",
};
export function SearchPage() { export function SearchPage() {
const router = useRouter(); const router = useRouter();
const searchParams = useSearchParams(); const searchParams = useSearchParams();
@ -318,8 +327,13 @@ const FiltersModal = (props: {
Params.delete("list"); Params.delete("list");
} }
Params.set("searchBy", searchBy); if (!["profiles", "collections"].includes(where)) {
props.setSearchBy(searchBy); Params.set("searchBy", searchBy);
props.setSearchBy(searchBy);
} else {
Params.delete("searchBy");
props.setSearchBy("name");
}
const url = new URL(`/search?${Params.toString()}`, window.location.origin); const url = new URL(`/search?${Params.toString()}`, window.location.origin);
router.push(url.toString()); router.push(url.toString());
@ -332,27 +346,27 @@ const FiltersModal = (props: {
<div className="my-4"> <div className="my-4">
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<p className="font-bold dark:text-white">Искать в</p> <p className="font-bold dark:text-white">Искать в</p>
<Button.Group> <Dropdown label={WhereMapping[where]} color="blue">
<Button {Object.keys(WhereMapping).map((item) => {
color={where == "releases" ? "blue" : "gray"} if (
onClick={() => setWhere("releases")} ["list", "history", "collections", "favorites"].includes(
> item
Релизах ) &&
</Button> !props.isAuth
<Button ) {
color={where == "list" ? "blue" : "gray"} return <></>;
disabled={!props.isAuth} } else {
onClick={() => setWhere("list")} return (
> <Dropdown.Item
Списках onClick={() => setWhere(item)}
</Button> key={`where--${item}`}
{/* <Button >
color={false ? "blue" : "gray"} {WhereMapping[item]}
// onClick={() => setMode("dark")} </Dropdown.Item>
> );
Пользователях }
</Button> */} })}
</Button.Group> </Dropdown>
</div> </div>
</div> </div>
{props.isAuth && {props.isAuth &&
@ -378,23 +392,27 @@ const FiltersModal = (props: {
) : ( ) : (
"" ""
)} )}
<div className="my-4"> {!["profiles", "collections"].includes(where) ? (
<div className="flex items-center justify-between"> <div className="my-4">
<p className="font-bold dark:text-white">Искать по</p> <div className="flex items-center justify-between">
<Dropdown label={TagMapping[searchBy].name} color="blue"> <p className="font-bold dark:text-white">Искать по</p>
{Object.keys(TagMapping).map((item) => { <Dropdown label={TagMapping[searchBy].name} color="blue">
return ( {Object.keys(TagMapping).map((item) => {
<Dropdown.Item return (
onClick={() => setSearchBy(item)} <Dropdown.Item
key={`tag--${item}`} onClick={() => setSearchBy(item)}
> key={`tag--${item}`}
{TagMapping[item].name} >
</Dropdown.Item> {TagMapping[item].name}
); </Dropdown.Item>
})} );
</Dropdown> })}
</Dropdown>
</div>
</div> </div>
</div> ) : (
""
)}
</Modal.Body> </Modal.Body>
<Modal.Footer> <Modal.Footer>
<div className="flex justify-end w-full gap-2"> <div className="flex justify-end w-full gap-2">