feat: deals filters
This commit is contained in:
53
src/app/deals/hooks/useDealsFilters.ts
Normal file
53
src/app/deals/hooks/useDealsFilters.ts
Normal 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;
|
||||
Reference in New Issue
Block a user