import { useEffect } from "react"; import { useRouter } from "next/router"; // mobx import { observer } from "mobx-react-lite"; import { useMobxStore } from "lib/mobx/store-provider"; // ui import { CustomSearchSelect } from "components/ui"; import { renderEmoji } from "helpers/emoji.helper"; import { TableProperties } from "lucide-react"; 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: customAttributesStore } = useMobxStore(); const { entities, fetchEntities } = customAttributesStore; const options: | { value: any; query: string; content: JSX.Element; }[] | undefined = entities?.map((entity) => ({ value: entity.id, query: entity.display_name, content: (
{entity.icon ? renderEmoji(entity.icon) : } {entity.display_name}
), })); options?.unshift({ value: null, query: "default", content: (
Default
), }); useEffect(() => { if (!workspaceSlug) return; if (!entities) fetchEntities(workspaceSlug.toString(), projectId); }, [entities, fetchEntities, projectId, workspaceSlug]); const selectedEntity = entities?.find((e) => e.id === value); return (
{selectedEntity?.icon ? ( renderEmoji(selectedEntity.icon) ) : ( )} {selectedEntity?.display_name ?? "Default"}
} value={value} maxHeight="md" optionsClassName="!min-w-[10rem]" onChange={onChange} options={options} position="right" noChevron /> ); });