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": "切换语言",