diff --git a/src/components/Selects/ClientSelect/ClientSelect.tsx b/src/components/Selects/ClientSelect/ClientSelect.tsx index 76ba206..cc35847 100644 --- a/src/components/Selects/ClientSelect/ClientSelect.tsx +++ b/src/components/Selects/ClientSelect/ClientSelect.tsx @@ -1,75 +1,23 @@ -import { FC, ReactNode, useEffect, useState } from "react"; -import { Select, Text } from "@mantine/core"; +import { FC } from "react"; import { ClientSchema } from "../../../client"; import useClientsList from "../../../pages/ClientsPage/hooks/useClientsList.tsx"; +import ObjectSelect, { ObjectSelectProps } from "../../ObjectSelect/ObjectSelect.tsx"; -type Props = { - value?: ClientSchema; - onChange: (client: ClientSchema) => void; - withLabel?: boolean; - error?: string; - inputContainer?: (children: ReactNode) => ReactNode; - disabled?: boolean; -}; +type Props = Omit< + ObjectSelectProps, + "data" | "getLabelFn" | "getValueFn" +>; -type Option = { - label: string; - value: string; -}; - -const ClientSelect: FC = ({ value, onChange, error, inputContainer, withLabel = false, disabled = false }) => { +const ClientSelect: FC = (props: Props) => { const { clients } = useClientsList({ all: true }); - const [options, setOptions] = useState([]); - const [deletedClientIds, setDeletedClientIds] = useState>(new Set()); - const [errorMsg, setErrorMsg] = useState(""); - useEffect(() => { - const options = clients - .filter(client => !client.isDeleted) - .map(client => ({ - label: client.name, - value: client.id.toString(), - })); - setOptions(options); - - const deletedClientIds = clients.filter(client => client.isDeleted).map(client => client.id); - setDeletedClientIds(new Set(deletedClientIds)); - }, [options]); - - useEffect(() => { - if (value && deletedClientIds.has(value.id)) { - setErrorMsg("Выбран удаленный клиент"); - } else { - setErrorMsg(""); - } - }, [value, deletedClientIds]); return ( - <> -