// react import React, { useState } from "react"; // next import { useRouter } from "next/router"; // swr import useSWR from "swr"; // icons import { ChevronDownIcon } from "@heroicons/react/24/outline"; // services import stateService from "services/state.service"; // fetch key import { STATES_LIST } from "constants/fetch-keys"; // components import { getStateGroupIcon } from "components/icons"; import { WebViewModal } from "./web-view-modal"; // helpers import { getStatesList } from "helpers/state.helper"; type Props = { value: any; onChange: (value: any) => void; disabled?: boolean; }; export const StateSelect: React.FC = (props) => { const { value, onChange, disabled = false } = props; const [isOpen, setIsOpen] = useState(false); const router = useRouter(); const { workspaceSlug, projectId } = router.query; const { data: stateGroups } = useSWR( workspaceSlug && projectId ? STATES_LIST(projectId as string) : null, workspaceSlug && projectId ? () => stateService.getStates(workspaceSlug as string, projectId as string) : null ); const states = getStatesList(stateGroups); const selectedState = states?.find((s) => s.id === value); return ( <> { setIsOpen(false); }} > ({ label: state.name, value: state.id, checked: state.id === selectedState?.id, icon: getStateGroupIcon(state.group, "16", "16", state.color), onClick: () => { setIsOpen(false); if (disabled) return; onChange(state.id); }, })) || [] } /> ); };