From 88aa32ddeb0072e5bbafc6b107f65c12c752da27 Mon Sep 17 00:00:00 2001 From: Yana Date: Tue, 6 May 2025 16:15:23 +0300 Subject: [PATCH] Fix advanced filtering UI --- .../components/nodeTable/AdvancedFilters.tsx | 127 +++++++++++------- .../nodeTable/NodeTableWithAction.tsx | 22 +-- 2 files changed, 81 insertions(+), 68 deletions(-) diff --git a/explorer-v2/src/components/nodeTable/AdvancedFilters.tsx b/explorer-v2/src/components/nodeTable/AdvancedFilters.tsx index 96a8a29693..4245ded4e4 100644 --- a/explorer-v2/src/components/nodeTable/AdvancedFilters.tsx +++ b/explorer-v2/src/components/nodeTable/AdvancedFilters.tsx @@ -14,6 +14,7 @@ import FilterAltIcon from "@mui/icons-material/FilterAlt"; import AccessTimeIcon from "@mui/icons-material/AccessTime"; import PieChartIcon from "@mui/icons-material/PieChart"; import PercentIcon from "@mui/icons-material/Percent"; +import NodeFilterButtonGroup from "../toggleButton/NodeFilterButtonGroup"; type AdvancedFiltersProps = { uptime: [number, number]; @@ -24,8 +25,9 @@ type AdvancedFiltersProps = { setProfitMargin: (value: [number, number]) => void; open?: boolean; setOpen?: (open: boolean) => void; - onlyPanel?: boolean; maxSaturation?: number; + activeFilter: "all" | "mixnodes" | "gateways"; + setActiveFilter: (filter: "all" | "mixnodes" | "gateways") => void; }; export default function AdvancedFilters({ @@ -37,8 +39,9 @@ export default function AdvancedFilters({ setProfitMargin, open, setOpen, - onlyPanel, maxSaturation = 100, + activeFilter, + setActiveFilter, }: AdvancedFiltersProps) { const theme = useTheme(); const green = "#14e76f"; // from theme colours @@ -52,7 +55,7 @@ export default function AdvancedFilters({ const panel = ( - + @@ -126,13 +129,13 @@ export default function AdvancedFilters({ /> - + @@ -179,13 +182,13 @@ export default function AdvancedFilters({ /> - + @@ -236,53 +239,81 @@ export default function AdvancedFilters({ ); - if (onlyPanel) return panel; - return ( - + background: "none", + fontWeight: 500, + fontSize: 20, + "&:hover, &:focus": { + background: + theme.palette.mode === "light" + ? "rgba(0,0,0,0.04)" + : "rgba(255,255,255,0.05)", + borderColor: + theme.palette.mode === "light" + ? theme.palette.grey[400] + : theme.palette.common.white, + }, + }} + > + Advanced Filters + + {panel} diff --git a/explorer-v2/src/components/nodeTable/NodeTableWithAction.tsx b/explorer-v2/src/components/nodeTable/NodeTableWithAction.tsx index c086083f1d..bc72980730 100644 --- a/explorer-v2/src/components/nodeTable/NodeTableWithAction.tsx +++ b/explorer-v2/src/components/nodeTable/NodeTableWithAction.tsx @@ -7,7 +7,6 @@ import { fetchEpochRewards, fetchNSApiNodes } from "../../app/api"; import type { ExplorerData, NS_NODE } from "../../app/api/types"; import { countryName } from "../../utils/countryName"; import NodeTable from "./NodeTable"; -import NodeFilterButtonGroup from "../toggleButton/NodeFilterButtonGroup"; import { useState, useEffect } from "react"; import AdvancedFilters from "./AdvancedFilters"; @@ -191,25 +190,6 @@ const NodeTableWithAction = () => { return ( - { profitMargin={profitMargin} setProfitMargin={setProfitMargin} maxSaturation={maxSaturation} + activeFilter={activeFilter} + setActiveFilter={setActiveFilter} />