Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
1.3 kB ยท 45 lines
TSX
12345678910111213141516171819202122232425262728293031323334353637383940414243444546"use client";
import { Close } from "@openstatus/icons";import { Button } from "@openstatus/ui/components/ui/button";import { useRouter, useSearchParams } from "next/navigation";
export function ButtonReset({ only }: { only?: string[] }) { const searchParams = useSearchParams(); const router = useRouter();
// Determine if at least one parameter that should be reset is present (or any parameter if `only` is undefined) const hasParamsToReset = only ? only.some((key) => searchParams.has(key)) : !!searchParams.toString();
if (!hasParamsToReset) return null;
const handleClick = () => { // Clone the current search params so we can mutate them const params = new URLSearchParams(searchParams.toString());
if (only && only.length > 0) { // Remove only the specified keys only.forEach((key) => params.delete(key)); const query = params.toString(); router.push( query ? `${window.location.pathname}?${query}` : window.location.pathname, ); } else { // No `only` prop provided โ remove all query parameters router.push(window.location.pathname); } };
if (!hasParamsToReset) return null;
return ( <Button variant="ghost" size="sm" onClick={handleClick}> <Close /> Reset </Button> );}