import { memo, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Avatar, Select, type SelectProps, Space, Typography } from "antd"; import { type ApplyCAProvider, applyCAProvidersMap } from "@/domain/provider"; export type ApplyCAProviderSelectProps = Omit< SelectProps, "filterOption" | "filterSort" | "labelRender" | "options" | "optionFilterProp" | "optionLabelProp" | "optionRender" > & { filter?: (record: ApplyCAProvider) => boolean; }; const ApplyCAProviderSelect = ({ filter, ...props }: ApplyCAProviderSelectProps) => { const { t } = useTranslation(); const [options, setOptions] = useState>([]); useEffect(() => { const allItems = Array.from(applyCAProvidersMap.values()); const filteredItems = filter != null ? allItems.filter(filter) : allItems; setOptions([ { key: "", value: "", label: "provider.default_ca_provider.label", data: {} as ApplyCAProvider, }, ...filteredItems.map((item) => ({ key: item.type, value: item.type, label: t(item.name), data: item, })), ]); }, [filter]); const renderOption = (key: string) => { if (key === "") { return ( {t("provider.default_ca_provider.label")} ); } const provider = applyCAProvidersMap.get(key); return ( {t(provider?.name ?? "")} ); }; return (