Skip to content

Commit 7bab7c7

Browse files
add clear filter button
1 parent f9ae84b commit 7bab7c7

4 files changed

Lines changed: 52 additions & 26 deletions

File tree

packages/web/src/app/(app)/repos/components/reposTable.test.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,19 @@ describe("ReposTable", () => {
133133
);
134134
});
135135

136+
test.each(["search=first", "status=warning"])(
137+
"shows clear filters in the toolbar for %s",
138+
(searchParams) => {
139+
navigation.searchParams = searchParams;
140+
141+
renderTable([repos[1]]);
142+
143+
expect(
144+
screen.getByRole("button", { name: "Clear filters" }),
145+
).toBeTruthy();
146+
},
147+
);
148+
136149
test("does not offer to clear filters in the unfiltered empty state", () => {
137150
renderTable([]);
138151

packages/web/src/app/(app)/repos/components/reposTable.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
getCoreRowModel,
2828
useReactTable,
2929
} from "@tanstack/react-table";
30-
import { ArrowDown, ArrowUp, Check, Loader2, Search } from "lucide-react";
30+
import { ArrowDown, ArrowUp, Check, CircleX, Loader2, Search } from "lucide-react";
3131
import Image from "next/image";
3232
import Link from "next/link";
3333
import { AnimatePresence, motion, useReducedMotion } from "motion/react";
@@ -842,6 +842,17 @@ export const ReposTable = ({
842842
<SelectItem value="warning">Warning</SelectItem>
843843
</SelectContent>
844844
</Select>
845+
{hasActiveFilters && (
846+
<Button
847+
variant="outline"
848+
size="sm"
849+
className="h-9"
850+
onClick={clearFilters}
851+
>
852+
<CircleX className="h-4 w-4" />
853+
Clear filters
854+
</Button>
855+
)}
845856
</div>
846857
<div className="rounded-md border">
847858
<Table className="table-fixed">
@@ -897,18 +908,7 @@ export const ReposTable = ({
897908
colSpan={columns.length}
898909
className="h-28 text-center text-sm text-muted-foreground"
899910
>
900-
<div className="flex flex-col items-center gap-3">
901-
<p>{emptyMessage}</p>
902-
{hasActiveFilters && (
903-
<Button
904-
variant="outline"
905-
size="sm"
906-
onClick={clearFilters}
907-
>
908-
Clear filters
909-
</Button>
910-
)}
911-
</div>
911+
<p>{emptyMessage}</p>
912912
</TableCell>
913913
</TableRow>
914914
)}

packages/web/src/app/(app)/settings/connections/components/connectionsTable.test.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,19 @@ describe("ConnectionsTable", () => {
151151
);
152152
});
153153

154+
test.each(["search=github", "status=warning"])(
155+
"shows clear filters in the toolbar for %s",
156+
(searchParams) => {
157+
navigation.searchParams = searchParams;
158+
159+
renderTable({ data: [connections[0]] });
160+
161+
expect(
162+
screen.getByRole("button", { name: "Clear filters" }),
163+
).toBeTruthy();
164+
},
165+
);
166+
154167
test("uses URL-driven server pagination", () => {
155168
renderTable({ totalCount: 29 });
156169

packages/web/src/app/(app)/settings/connections/components/connectionsTable.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
getCoreRowModel,
3434
useReactTable,
3535
} from "@tanstack/react-table";
36-
import { ArrowDown, ArrowUp, Loader2, Search } from "lucide-react";
36+
import { ArrowDown, ArrowUp, CircleX, Loader2, Search } from "lucide-react";
3737
import Image from "next/image";
3838
import { usePathname, useRouter, useSearchParams } from "next/navigation";
3939
import {
@@ -594,6 +594,17 @@ export const ConnectionsTable = ({
594594
<SelectItem value="warning">Warning</SelectItem>
595595
</SelectContent>
596596
</Select>
597+
{hasActiveFilters && (
598+
<Button
599+
variant="outline"
600+
size="sm"
601+
className="h-9"
602+
onClick={clearFilters}
603+
>
604+
<CircleX className="h-4 w-4" />
605+
Clear filters
606+
</Button>
607+
)}
597608
</div>
598609
<div className="rounded-md border">
599610
<Table className="table-fixed">
@@ -649,18 +660,7 @@ export const ConnectionsTable = ({
649660
colSpan={columns.length}
650661
className="h-28 text-center text-sm text-muted-foreground"
651662
>
652-
<div className="flex flex-col items-center gap-3">
653-
<p>{emptyMessage}</p>
654-
{hasActiveFilters && (
655-
<Button
656-
variant="outline"
657-
size="sm"
658-
onClick={clearFilters}
659-
>
660-
Clear filters
661-
</Button>
662-
)}
663-
</div>
663+
<p>{emptyMessage}</p>
664664
</TableCell>
665665
</TableRow>
666666
)}

0 commit comments

Comments
 (0)