import { useEffect } from "react"; import { useRouter } from "next/router"; import { observer } from "mobx-react-lite"; // mobx store import { useMobxStore } from "lib/mobx/store-provider"; // ui import { CustomSearchSelect } from "components/ui"; // icons import { TableProperties } from "lucide-react"; // helpers import { renderEmoji } from "helpers/emoji.helper"; type Props = { onChange: (val: string | null) => void; projectId: string; value: string | null; }; export const ObjectsSelect: React.FC = observer(({ onChange, projectId, value }) => { const router = useRouter(); const { workspaceSlug } = router.query; const { customAttributes } = useMobxStore(); const options: | { value: any; query: string; content: JSX.Element; }[] | undefined = customAttributes.objects?.map((object) => ({ value: object.id, query: object.display_name, content: (
{object.icon ? renderEmoji(object.icon) : } {object.display_name}
), })); options?.unshift({ value: null, query: "default", content: (
Default
), }); useEffect(() => { if (!workspaceSlug) return; if (!customAttributes.objects) customAttributes.fetchObjects(workspaceSlug.toString(), projectId); }, [customAttributes, projectId, workspaceSlug]); const selectedObject = customAttributes.objects?.find((o) => o.id === value); return (
{selectedObject?.icon ? ( renderEmoji(selectedObject.icon) ) : ( )} {selectedObject?.display_name ?? "Default"}
} value={value} maxHeight="md" optionsClassName="!min-w-[10rem]" onChange={onChange} options={options} position="right" noChevron /> ); });