From dce4dec2f5388571636d25f54c694d417e60d53f Mon Sep 17 00:00:00 2001 From: AlexSserb Date: Thu, 4 Sep 2025 12:19:51 +0400 Subject: [PATCH] refactor: moved logic from columns to table --- .../desktop/DealsTable/DealsTable.tsx | 35 ++++++++++++++++--- .../DealsTable/useDealsTableColumns.tsx | 32 ++++------------- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/app/deals/components/desktop/DealsTable/DealsTable.tsx b/src/app/deals/components/desktop/DealsTable/DealsTable.tsx index 07e44b1..ac016fb 100644 --- a/src/app/deals/components/desktop/DealsTable/DealsTable.tsx +++ b/src/app/deals/components/desktop/DealsTable/DealsTable.tsx @@ -1,14 +1,41 @@ -import { FC } from "react"; +import { FC, useCallback } from "react"; import { IconMoodSad } from "@tabler/icons-react"; import { Group, Pagination, Stack, Text } from "@mantine/core"; import useDealsTableColumns from "@/app/deals/components/desktop/DealsTable/useDealsTableColumns"; import { useDealsContext } from "@/app/deals/contexts/DealsContext"; +import { useProjectsContext } from "@/app/deals/contexts/ProjectsContext"; import BaseTable from "@/components/ui/BaseTable/BaseTable"; +import { useDrawersContext } from "@/drawers/DrawersContext"; +import { DealSchema } from "@/lib/client"; const DealsTable: FC = () => { - const { deals, paginationInfo, page, setPage, dealsFiltersForm } = - useDealsContext(); - const columns = useDealsTableColumns(); + const { + deals, + paginationInfo, + page, + setPage, + dealsFiltersForm, + dealsCrud, + } = useDealsContext(); + const { selectedProject } = useProjectsContext(); + const { openDrawer } = useDrawersContext(); + + const onEditClick = useCallback( + (deal: DealSchema) => { + if (!selectedProject) return; + openDrawer({ + key: "dealEditorDrawer", + props: { + deal, + dealsCrud, + project: selectedProject, + }, + }); + }, + [openDrawer, dealsCrud] + ); + + const columns = useDealsTableColumns({ onEditClick }); return ( { - const { selectedProject } = useProjectsContext(); - const { dealsCrud } = useDealsContext(); - const { openDrawer } = useDrawersContext(); - - const onEditDeal = useCallback( - (deal: DealSchema) => { - if (!selectedProject) return; - openDrawer({ - key: "dealEditorDrawer", - props: { - deal, - dealsCrud, - project: selectedProject, - }, - }); - }, - [openDrawer, dealsCrud] - ); +type Props = { + onEditClick: (deal: DealSchema) => void; +}; +const useDealsTableColumns = ({ onEditClick }: Props) => { return useMemo( () => [ @@ -42,7 +24,7 @@ const useDealsTableColumns = () => { onEditDeal(deal)} + onClick={() => onEditClick(deal)} variant={"default"}> @@ -65,7 +47,7 @@ const useDealsTableColumns = () => { sortable: true, }, ] as DataTableColumn[], - [onEditDeal] + [onEditClick] ); };