Skip to content

Commit

Permalink
[#536] make filtering and sorting actions reusable
Browse files Browse the repository at this point in the history
  • Loading branch information
j-dyczka committed Mar 26, 2024
1 parent 7f9e84c commit 4368909
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 17 deletions.
18 changes: 15 additions & 3 deletions govtool/frontend/src/components/molecules/DataActionsBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Dispatch, FC, SetStateAction } from "react";
import { Box, InputBase } from "@mui/material";
import Search from "@mui/icons-material/Search";

import { GovernanceActionsFilters, GovernanceActionsSorting } from "@molecules";
import { DataActionsFilters, DataActionsSorting } from "@molecules";
import { OrderActionsChip } from "./OrderActionsChip";
import { theme } from "@/theme";

Expand All @@ -12,6 +12,10 @@ type DataActionsBarProps = {
chosenSorting: string;
closeFilters?: () => void;
closeSorts: () => void;
filterOptions?: {
key: string;
label: string;
}[];
filtersOpen?: boolean;
isFiltering?: boolean;
searchText: string;
Expand All @@ -22,6 +26,10 @@ type DataActionsBarProps = {
setSortOpen: Dispatch<SetStateAction<boolean>>;
sortingActive: boolean;
sortOpen: boolean;
sortOptions?: {
key: string;
label: string;
}[];
};

export const DataActionsBar: FC<DataActionsBarProps> = ({ ...props }) => {
Expand All @@ -31,6 +39,7 @@ export const DataActionsBar: FC<DataActionsBarProps> = ({ ...props }) => {
chosenSorting,
closeFilters = () => {},
closeSorts,
filterOptions = [],
filtersOpen,
isFiltering = true,
searchText,
Expand All @@ -41,6 +50,7 @@ export const DataActionsBar: FC<DataActionsBarProps> = ({ ...props }) => {
setSortOpen,
sortingActive,
sortOpen,
sortOptions = [],
} = props;
const {
palette: { boxShadow2 },
Expand Down Expand Up @@ -87,17 +97,19 @@ export const DataActionsBar: FC<DataActionsBarProps> = ({ ...props }) => {
sortOpen={sortOpen}
>
{filtersOpen && (
<GovernanceActionsFilters
<DataActionsFilters
chosenFilters={chosenFilters}
setChosenFilters={setChosenFilters}
closeFilters={closeFilters}
options={filterOptions}
/>
)}
{sortOpen && (
<GovernanceActionsSorting
<DataActionsSorting
chosenSorting={chosenSorting}
setChosenSorting={setChosenSorting}
closeSorts={closeSorts}
options={sortOptions}
/>
)}
</OrderActionsChip>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,23 @@ import {
Typography,
} from "@mui/material";

import { GOVERNANCE_ACTIONS_FILTERS } from "@consts";
import { useOnClickOutside, useScreenDimension, useTranslation } from "@hooks";

interface Props {
chosenFilters: string[];
setChosenFilters: Dispatch<SetStateAction<string[]>>;
closeFilters: () => void;
options: {
key: string;
label: string;
}[];
}

export const GovernanceActionsFilters = ({
export const DataActionsFilters = ({
chosenFilters,
setChosenFilters,
closeFilters,
options
}: Props) => {
const handleFilterChange = useCallback(
(e: React.ChangeEvent<HTMLInputElement>) => {
Expand Down Expand Up @@ -70,7 +74,7 @@ export const GovernanceActionsFilters = ({
>
{t("govActions.filterTitle")}
</FormLabel>
{GOVERNANCE_ACTIONS_FILTERS.map((item) => (
{options.map((item) => (
<Box
key={item.key}
paddingX="20px"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,23 @@ import {
Typography,
} from "@mui/material";

import { GOVERNANCE_ACTIONS_SORTING } from "@consts";
import { useTranslation, useOnClickOutside } from "@hooks";

interface Props {
chosenSorting: string;
setChosenSorting: Dispatch<SetStateAction<string>>;
closeSorts: () => void;
options: {
key: string;
label: string;
}[];
}

export const GovernanceActionsSorting = ({
export const DataActionsSorting = ({
chosenSorting,
setChosenSorting,
closeSorts,
options,
}: Props) => {
const { t } = useTranslation();

Expand Down Expand Up @@ -63,7 +67,7 @@ export const GovernanceActionsSorting = ({
setChosenSorting(e.target.value);
}}
>
{GOVERNANCE_ACTIONS_SORTING.map((item) => (
{options.map((item) => (
<FormControlLabel
sx={[
{
Expand Down
4 changes: 2 additions & 2 deletions govtool/frontend/src/components/molecules/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ export * from "./CenteredBoxBottomButtons";
export * from "./CenteredBoxPageWrapper";
export * from "./DashboardActionCard";
export * from "./DataActionsBar";
export * from "./DataActionsFilters";
export * from "./DataActionsSorting";
export * from "./DataMissingInfoBox";
export * from "./DRepInfoCard";
export * from "./Field";
Expand All @@ -19,8 +21,6 @@ export * from "./GovernanceActionDetailsCardVotes";
export * from "./GovernanceActionDetailsCardHeader";
export * from "./GovernanceActionDetailsCardOnChainData";
export * from "./GovernanceActionsDatesBox";
export * from "./GovernanceActionsFilters";
export * from "./GovernanceActionsSorting";
export * from "./GovernanceVotedOnCard";
export * from "./LinkWithIcon";
export * from "./OrderActionsChip";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { useState, useEffect } from "react";
import { Box, CircularProgress, Tab, Tabs, styled } from "@mui/material";
import { useLocation } from "react-router-dom";

import { GOVERNANCE_ACTIONS_FILTERS } from "@consts";
import { GOVERNANCE_ACTIONS_FILTERS, GOVERNANCE_ACTIONS_SORTING } from "@consts";
import { useCardano } from "@context";
import {
useDataActionsBar,
Expand Down Expand Up @@ -103,7 +103,11 @@ export const DashboardGovernanceActions = () => {
flexDirection="column"
>
<>
<DataActionsBar {...dataActionsBarProps} />
<DataActionsBar
{...dataActionsBarProps}
filterOptions={GOVERNANCE_ACTIONS_FILTERS}
sortOptions={GOVERNANCE_ACTIONS_SORTING}
/>
{!proposals || !voter || isEnableLoading || isProposalsLoading ? (
<Box
alignItems="center"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { generatePath, useNavigate, useParams } from "react-router-dom";
import { Box, CircularProgress, Link } from "@mui/material";

import { Background, Typography } from "@atoms";
import { ICONS, PATHS } from "@consts";
import { GOVERNANCE_ACTIONS_SORTING, ICONS, PATHS } from "@consts";
import { useCardano } from "@context";
import { DataActionsBar, GovernanceActionCard } from "@molecules";
import {
Expand Down Expand Up @@ -95,6 +95,7 @@ export const DashboardGovernanceActionsCategory = () => {
<DataActionsBar
{...dataActionsBarProps}
isFiltering={false}
sortOptions={GOVERNANCE_ACTIONS_SORTING}
/>
<Typography
variant="title2"
Expand Down
8 changes: 6 additions & 2 deletions govtool/frontend/src/pages/GovernanceActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { useNavigate } from "react-router-dom";
import { Box, CircularProgress, Divider } from "@mui/material";

import { Background, ScrollToManage, Typography } from "@atoms";
import { GOVERNANCE_ACTIONS_FILTERS, PATHS } from "@consts";
import { GOVERNANCE_ACTIONS_FILTERS, GOVERNANCE_ACTIONS_SORTING, PATHS } from "@consts";
import { useCardano } from "@context";
import {
useDataActionsBar,
Expand Down Expand Up @@ -69,7 +69,11 @@ export const GovernanceActions = () => {
/>
)}
<Box flex={1} px={pagePadding}>
<DataActionsBar {...dataActionsBarProps} />
<DataActionsBar
{...dataActionsBarProps}
filterOptions={GOVERNANCE_ACTIONS_FILTERS}
sortOptions={GOVERNANCE_ACTIONS_SORTING}
/>
<Box height={isMobile ? 60 : 80} />
{!proposals || isProposalsLoading ? (
<Box
Expand Down
3 changes: 2 additions & 1 deletion govtool/frontend/src/pages/GovernanceActionsCategory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { useNavigate, useParams } from "react-router-dom";
import { Box, CircularProgress, Link } from "@mui/material";

import { Background, Typography } from "@atoms";
import { ICONS, PATHS } from "@consts";
import { GOVERNANCE_ACTIONS_SORTING, ICONS, PATHS } from "@consts";
import { useCardano } from "@context";
import { DataActionsBar, GovernanceActionCard } from "@molecules";
import { Footer, TopNav } from "@organisms";
Expand Down Expand Up @@ -105,6 +105,7 @@ export const GovernanceActionsCategory = () => {
<DataActionsBar
{...dataActionsBarProps}
isFiltering={false}
sortOptions={GOVERNANCE_ACTIONS_SORTING}
/>
<Typography
variant="title2"
Expand Down

0 comments on commit 4368909

Please sign in to comment.