import { memo, useState } from "react"; import { useTranslation } from "react-i18next"; import { Avatar, Card, Col, Empty, Flex, Input, Row, Typography } from "antd"; import Show from "@/components/Show"; import { deployProvidersMap } from "@/domain/provider"; export type DeployProviderPickerProps = { className?: string; style?: React.CSSProperties; placeholder?: string; onSelect?: (value: string) => void; }; const DeployProviderPicker = ({ className, style, placeholder, onSelect }: DeployProviderPickerProps) => { const { t } = useTranslation(); const [keyword, setKeyword] = useState(); const providers = Array.from(deployProvidersMap.values()); const filteredProviders = providers.filter((provider) => { if (keyword) { const value = keyword.toLowerCase(); return provider.type.toLowerCase().includes(value) || provider.name.toLowerCase().includes(value); } return true; }); const handleProviderTypeSelect = (value: string) => { onSelect?.(value); }; return (
setKeyword(e.target.value.trim())} />
0} fallback={}> {filteredProviders.map((provider, index) => { return ( { handleProviderTypeSelect(provider.type); }} > {t(provider.name)} ); })}
); }; export default memo(DeployProviderPicker);