"use client"; import React from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; import { Ban } from "lucide-react"; // plane ui import { EUserPermissions } from "@plane/constants"; import { Avatar, CustomSearchSelect } from "@plane/ui"; // helpers import { getFileURL } from "@/helpers/file.helper"; // hooks import { useMember } from "@/hooks/store"; type Props = { value: any; onChange: (val: string) => void; isDisabled?: boolean; }; export const MemberSelect: React.FC = observer((props) => { const { value, onChange, isDisabled = false } = props; // router const { projectId } = useParams(); // store hooks const { project: { projectMemberIds, getProjectMemberDetails }, } = useMember(); const options = projectMemberIds ?.map((userId) => { const memberDetails = projectId ? getProjectMemberDetails(userId, projectId.toString()) : null; if (!memberDetails?.member) return; const isGuest = memberDetails.role === EUserPermissions.GUEST; if (isGuest) return; return { value: `${memberDetails?.member.id}`, query: `${memberDetails?.member.display_name}`, content: (
{memberDetails?.member.display_name}
), }; }) .filter((option) => !!option) as | { value: string; query: string; content: React.JSX.Element; }[] | undefined; const selectedOption = projectId ? getProjectMemberDetails(value, projectId.toString()) : null; return ( {selectedOption && ( )} {selectedOption ? ( selectedOption.member?.display_name ) : (
None
)} } buttonClassName="!px-3 !py-2" options={ options && options && [ ...options, { value: "none", query: "none", content: (
None
), }, ] } maxHeight="md" onChange={onChange} disabled={isDisabled} /> ); });