feat: deals filters indicator and refactoring

This commit is contained in:
2025-09-01 18:50:29 +04:00
parent 48d539154c
commit a6d8948e9d
6 changed files with 81 additions and 69 deletions

View File

@ -6,7 +6,7 @@ import { useDealsContext } from "@/app/deals/contexts/DealsContext";
import BaseTable from "@/components/ui/BaseTable/BaseTable";
const DealsTable: FC = () => {
const { deals, paginationInfo, page, setPage, dealsFilters } =
const { deals, paginationInfo, page, setPage, dealsFiltersForm } =
useDealsContext();
const columns = useDealsTableColumns();
@ -18,12 +18,18 @@ const DealsTable: FC = () => {
records={[...deals]}
columns={columns}
sortStatus={{
columnAccessor: dealsFilters.sortingField,
direction: dealsFilters.sortingDirection,
columnAccessor: dealsFiltersForm.values.sortingField ?? "",
direction: dealsFiltersForm.values.sortingDirection,
}}
onSortStatusChange={sorting => {
dealsFilters.setSortingField(sorting.columnAccessor);
dealsFilters.setSortingDirection(sorting.direction);
dealsFiltersForm.setFieldValue(
"sortingField",
sorting.columnAccessor
);
dealsFiltersForm.setFieldValue(
"sortingDirection",
sorting.direction
);
}}
emptyState={
<Group

View File

@ -1,7 +1,7 @@
"use client";
import { IconEdit, IconFilter, IconPlus } from "@tabler/icons-react";
import { Flex, Group } from "@mantine/core";
import { Flex, Group, Indicator } from "@mantine/core";
import { modals } from "@mantine/modals";
import ToolPanelAction from "@/app/deals/components/desktop/ToolPanelAction/ToolPanelAction";
import ViewSelector from "@/app/deals/components/desktop/ViewSelector/ViewSelector";
@ -14,7 +14,7 @@ import { useDrawersContext } from "@/drawers/DrawersContext";
import useIsMobile from "@/hooks/utils/useIsMobile";
const TopToolPanel = () => {
const { dealsFilters } = useDealsContext();
const { dealsFiltersForm, isChangedFilters } = useDealsContext();
const { view } = useViewContext();
const { projects, setSelectedProjectId, selectedProject, projectsCrud } =
useProjectsContext();
@ -52,11 +52,16 @@ const TopToolPanel = () => {
gap={"sm"}>
<DealsTableFiltersModal
getOpener={onFiltersClick => (
<ToolPanelAction onClick={onFiltersClick}>
<IconFilter />
</ToolPanelAction>
<Indicator
disabled={!isChangedFilters}
offset={3}
size={8}>
<ToolPanelAction onClick={onFiltersClick}>
<IconFilter />
</ToolPanelAction>
</Indicator>
)}
filters={dealsFilters}
filtersForm={dealsFiltersForm}
selectedProject={selectedProject}
boardAndStatusEnabled={view === "table"}
/>