diff --git a/src/app/deals/components/shared/DealsGroup/DealsGroup.tsx b/src/app/deals/components/shared/DealsGroup/DealsGroup.tsx index 6d9f511..d4088e2 100644 --- a/src/app/deals/components/shared/DealsGroup/DealsGroup.tsx +++ b/src/app/deals/components/shared/DealsGroup/DealsGroup.tsx @@ -1,9 +1,10 @@ -import { FC, useEffect, useState } from "react"; +import React, { FC, useEffect, useState } from "react"; +import { IconCheckbox, IconTrash } from "@tabler/icons-react"; import classNames from "classnames"; +import { useContextMenu } from "mantine-contextmenu"; import { Flex, Stack, TextInput } from "@mantine/core"; import { useDebouncedValue } from "@mantine/hooks"; import DealCard from "@/app/deals/components/shared/DealCard/DealCard"; -import GroupMenu from "@/app/deals/components/shared/GroupMenu/GroupMenu"; import { useDealsContext } from "@/app/deals/contexts/DealsContext"; import GroupWithDealsSchema from "@/types/GroupWithDealsSchema"; import styles from "./DealsGroup.module.css"; @@ -16,12 +17,29 @@ const DealsGroup: FC = ({ group }) => { const [groupName, setGroupName] = useState(group.name ?? ""); const [debouncedGroupName] = useDebouncedValue(groupName, 600); const { groupsCrud, groupDealsSelection } = useDealsContext(); + const { showContextMenu } = useContextMenu(); useEffect(() => { if (debouncedGroupName === group.name) return; groupsCrud.onUpdate(group.id, { name: debouncedGroupName }); }, [debouncedGroupName]); + const dealContextMenu = [ + { + key: "delete", + onClick: () => groupsCrud.onDelete(group.id), + title: "Удалить группу", + icon: , + }, + { + key: "startDealsSelecting", + onClick: () => + groupDealsSelection.startSelectingWithExistingGroup(group), + title: "Добавить/удалить сделки", + icon: , + }, + ]; + return ( = ({ group }) => { )} gap={"xs"} bdrs={"lg"} - p={"xs"}> + p={"xs"} + onContextMenu={showContextMenu(dealContextMenu)}> @@ -41,13 +60,6 @@ const DealsGroup: FC = ({ group }) => { variant={"unstyled"} onKeyDown={e => e.stopPropagation()} /> - {group.items.map(deal => ( void; - onStartDealsSelecting: (group: GroupWithDealsSchema) => void; -}; - -const GroupMenu: FC = ({ group, onDelete, onStartDealsSelecting }) => { - return ( - - - e.stopPropagation()}> - - - - - - - onDelete(group.id)} - icon={} - label={"Удалить"} - /> - onStartDealsSelecting(group)} - icon={} - label={"Добавить/удалить сделки"} - /> - - - ); -}; - -export default GroupMenu;