import React from "react"; import { useRouter } from "next/router"; // mobx import { observer } from "mobx-react-lite"; import { useMobxStore } from "lib/mobx/store-provider"; // headless ui import { Disclosure, Transition } from "@headlessui/react"; // ui import { CustomMenu } from "components/ui"; // icons import { ChevronDownIcon, RectangleGroupIcon, XMarkIcon, PlusIcon, PencilIcon, TrashIcon, } from "@heroicons/react/24/outline"; // types import { ICurrentUserResponse, IIssueLabels } from "types"; type Props = { label: IIssueLabels; labelChildren: IIssueLabels[]; addLabelToGroup: (parentLabel: IIssueLabels) => void; editLabel: (label: IIssueLabels) => void; handleLabelDelete: (label: IIssueLabels) => void; user: ICurrentUserResponse | undefined; }; export const SingleLabelGroup: React.FC = observer( ({ label, labelChildren, addLabelToGroup, editLabel, handleLabelDelete, user }) => { const router = useRouter(); const { workspaceSlug, projectId } = router.query; const { label: labelStore } = useMobxStore(); const { updateLabel } = labelStore; const removeFromGroup = (label: IIssueLabels) => { if (!workspaceSlug || !projectId || !user) return; updateLabel( workspaceSlug.toString(), projectId.toString(), label.id, { parent: null, }, user ); }; return ( {({ open }) => ( <>
{label.name}
addLabelToGroup(label)}> Add more labels editLabel(label)}> Edit label handleLabelDelete(label)}> Delete label
{labelChildren.map((child) => (
{child.name}
removeFromGroup(child)}> Remove from group editLabel(child)}> Edit label handleLabelDelete(child)}> Delete label
))}
)}
); } );