diff --git a/ui/src/components/access/AccessEditDrawer.tsx b/ui/src/components/access/AccessEditDrawer.tsx index a7d1d47e..48002af7 100644 --- a/ui/src/components/access/AccessEditDrawer.tsx +++ b/ui/src/components/access/AccessEditDrawer.tsx @@ -64,7 +64,7 @@ const AccessEditDrawer = ({ data, loading, trigger, scene, range, afterSubmit, . values = await updateAccess({ ...data, ...values }); } else { - throw "Invalid props: `preset`"; + throw "Invalid props: `scene`"; } afterSubmit?.(values); diff --git a/ui/src/components/provider/AccessProviderSelect.tsx b/ui/src/components/provider/AccessProviderSelect.tsx index 9a35ed6e..fbb4099f 100644 --- a/ui/src/components/provider/AccessProviderSelect.tsx +++ b/ui/src/components/provider/AccessProviderSelect.tsx @@ -31,16 +31,16 @@ const AccessProviderSelect = ({ filter, showOptionTags, ...props }: AccessProvid ); }, [filter]); - const showOptionTagsForDNS = useMemo(() => { + const showOptionTagForDNS = useMemo(() => { return typeof showOptionTags === "object" ? !!showOptionTags[ACCESS_USAGES.DNS] : !!showOptionTags; }, [showOptionTags]); - const showOptionTagsForHosting = useMemo(() => { + const showOptionTagForHosting = useMemo(() => { return typeof showOptionTags === "object" ? !!showOptionTags[ACCESS_USAGES.HOSTING] : !!showOptionTags; }, [showOptionTags]); - const showOptionTagsForCA = useMemo(() => { + const showOptionTagForCA = useMemo(() => { return typeof showOptionTags === "object" ? !!showOptionTags[ACCESS_USAGES.CA] : !!showOptionTags; }, [showOptionTags]); - const showOptionTagsForNotification = useMemo(() => { + const showOptionTagForNotification = useMemo(() => { return typeof showOptionTags === "object" ? !!showOptionTags[ACCESS_USAGES.NOTIFICATION] : !!showOptionTags; }, [showOptionTags]); @@ -56,16 +56,16 @@ const AccessProviderSelect = ({ filter, showOptionTags, ...props }: AccessProvid {showOptionTags && (
- + {t("access.props.provider.usage.dns")} - + {t("access.props.provider.usage.hosting")} - + {t("access.props.provider.usage.ca")} - + {t("access.props.provider.usage.notification")}
diff --git a/ui/src/components/provider/ApplyDNSProviderPicker.tsx b/ui/src/components/provider/ApplyDNSProviderPicker.tsx index 10fa39ff..bcf65965 100644 --- a/ui/src/components/provider/ApplyDNSProviderPicker.tsx +++ b/ui/src/components/provider/ApplyDNSProviderPicker.tsx @@ -1,4 +1,4 @@ -import { memo, useEffect, useRef, useState } from "react"; +import { memo, useEffect, useMemo, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { Avatar, Card, Col, Empty, Flex, Input, type InputRef, Row, Typography } from "antd"; @@ -24,15 +24,16 @@ const ApplyDNSProviderPicker = ({ className, style, autoFocus, placeholder, onSe } }, []); - const providers = Array.from(applyDNSProvidersMap.values()); - const filteredProviders = providers.filter((provider) => { - if (keyword) { - const value = keyword.toLowerCase(); - return provider.type.toLowerCase().includes(value) || t(provider.name).toLowerCase().includes(value); - } + const providers = useMemo(() => { + return Array.from(applyDNSProvidersMap.values()).filter((provider) => { + if (keyword) { + const value = keyword.toLowerCase(); + return provider.type.toLowerCase().includes(value) || t(provider.name).toLowerCase().includes(value); + } - return true; - }); + return true; + }); + }, [keyword]); const handleProviderTypeSelect = (value: string) => { onSelect?.(value); @@ -40,12 +41,12 @@ const ApplyDNSProviderPicker = ({ className, style, autoFocus, placeholder, onSe return (
- setKeyword(e.target.value.trim())} /> + setKeyword(e.target.value.trim())} />
- 0} fallback={}> + 0} fallback={}> - {filteredProviders.map((provider, index) => { + {providers.map((provider, index) => { return ( { const { t } = useTranslation(); + const [category, setCategory] = useState(DEPLOY_CATEGORIES.ALL); + const [keyword, setKeyword] = useState(); const keywordInputRef = useRef(null); useEffect(() => { @@ -24,26 +26,24 @@ const DeployProviderPicker = ({ className, style, autoFocus, placeholder, onSele } }, []); - const [category, setCategory] = useState(DEPLOY_CATEGORIES.ALL); - const providers = useMemo(() => { return Array.from(deployProvidersMap.values()) + .filter((provider) => { + if (category && category !== DEPLOY_CATEGORIES.ALL) { + return provider.category === category; + } + + return true; + }) .filter((provider) => { if (keyword) { const value = keyword.toLowerCase(); return provider.type.toLowerCase().includes(value) || t(provider.name).toLowerCase().includes(value); } - return true; - }) - .filter((provider) => { - if (category && category !== DEPLOY_CATEGORIES.ALL) { - return provider.category === category; - } - return true; }); - }, [keyword, category]); + }, [category, keyword]); const handleProviderTypeSelect = (value: string) => { onSelect?.(value); @@ -51,7 +51,7 @@ const DeployProviderPicker = ({ className, style, autoFocus, placeholder, onSele return (
- setKeyword(e.target.value.trim())} /> + setKeyword(e.target.value.trim())} />
diff --git a/ui/src/i18n/locales/en/nls.common.json b/ui/src/i18n/locales/en/nls.common.json index c9e671ce..1e0b5e12 100644 --- a/ui/src/i18n/locales/en/nls.common.json +++ b/ui/src/i18n/locales/en/nls.common.json @@ -16,6 +16,7 @@ "common.text.operation_succeeded": "Operation succeeded", "common.text.operation_failed": "Operation failed", "common.text.request_error": "Request error", + "common.text.search": "Search ...", "common.menu.theme": "Change theme", "common.menu.locale": "Change language", diff --git a/ui/src/i18n/locales/zh/nls.common.json b/ui/src/i18n/locales/zh/nls.common.json index 7e9b9036..f2b95469 100644 --- a/ui/src/i18n/locales/zh/nls.common.json +++ b/ui/src/i18n/locales/zh/nls.common.json @@ -16,6 +16,7 @@ "common.text.operation_succeeded": "操作成功", "common.text.operation_failed": "操作失败", "common.text.request_error": "请求错误", + "common.text.search": "搜索 ……", "common.menu.theme": "切换主题", "common.menu.locale": "切换语言",