feat: deals filters

This commit is contained in:
2025-09-01 17:54:31 +04:00
parent ab7ef1e753
commit 48d539154c
24 changed files with 489 additions and 306 deletions

View File

@ -0,0 +1,53 @@
import { Dispatch, SetStateAction, useState } from "react";
import { useDebouncedValue } from "@mantine/hooks";
import { BoardSchema, SortDir, StatusSchema } from "@/lib/client";
export type DealsFilters = {
id?: number;
debouncedId?: number;
setId: Dispatch<SetStateAction<number | undefined>>;
name?: string;
debouncedName?: string;
setName: Dispatch<SetStateAction<string | undefined>>;
board: BoardSchema | null;
setBoard: Dispatch<SetStateAction<BoardSchema | null>>;
status: StatusSchema | null;
setStatus: Dispatch<SetStateAction<StatusSchema | null>>;
sortingField: string;
setSortingField: Dispatch<SetStateAction<string>>;
sortingDirection: SortDir;
setSortingDirection: Dispatch<SetStateAction<SortDir>>;
};
const useDealsFilters = (): DealsFilters => {
const [id, setId] = useState<number>();
const [debouncedId] = useDebouncedValue(id, 300);
const [name, setName] = useState<string>();
const [debouncedName] = useDebouncedValue(name, 300);
const [board, setBoard] = useState<BoardSchema | null>(null);
const [status, setStatus] = useState<StatusSchema | null>(null);
const [sortingField, setSortingField] = useState("createdAt");
const [sortingDirection, setSortingDirection] = useState<SortDir>("asc");
return {
id,
setId,
debouncedId,
name,
setName,
debouncedName,
board,
setBoard,
status,
setStatus,
sortingField,
setSortingField,
sortingDirection,
setSortingDirection,
};
};
export default useDealsFilters;