From 7b67935768283a6bc3500a5e5d1176b43bfdd346 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Thu, 18 Dec 2025 16:20:36 +0800 Subject: [PATCH] refactor(ui): clean code --- ui/src/components/access/AccessSelect.tsx | 15 +++++++------ .../forms/AccessConfigFieldsProviderAzure.tsx | 4 +++- .../AccessConfigFieldsProviderOVHcloud.tsx | 4 +++- .../provider/ACMEDns01ProviderSelect.tsx | 19 ++++++++-------- .../provider/ACMEHttp01ProviderSelect.tsx | 19 ++++++++-------- .../provider/AccessProviderSelect.tsx | 18 +++++++++------ .../components/provider/CAProviderSelect.tsx | 22 ++++++++++--------- .../provider/DeploymentProviderSelect.tsx | 19 ++++++++-------- .../provider/NotificationProviderSelect.tsx | 19 ++++++++-------- ui/src/components/provider/_shared.ts | 3 +-- .../designer/forms/BizApplyNodeConfigForm.tsx | 6 +++-- 11 files changed, 82 insertions(+), 66 deletions(-) diff --git a/ui/src/components/access/AccessSelect.tsx b/ui/src/components/access/AccessSelect.tsx index ba9ed42f..0047be41 100644 --- a/ui/src/components/access/AccessSelect.tsx +++ b/ui/src/components/access/AccessSelect.tsx @@ -7,8 +7,7 @@ import { accessProvidersMap } from "@/domain/provider"; import { useZustandShallowSelector } from "@/hooks"; import { useAccessesStore } from "@/stores/access"; -export interface AccessTypeSelectProps - extends Omit { +export interface AccessTypeSelectProps extends Omit { onFilter?: (value: string, option: AccessModel) => boolean; } @@ -56,11 +55,14 @@ const AccessSelect = ({ onFilter, ...props }: AccessTypeSelectProps) => { return ( { - if (!option) return false; - if (!option.label) return false; - if (!option.value) return false; - - const value = inputValue.toLowerCase(); - return String(option.value).toLowerCase().includes(value) || String(option.label).toLowerCase().includes(value); - }} labelRender={({ value }) => { if (value != null) { return renderOption(value as string); @@ -72,9 +64,18 @@ const ACMEDns01ProviderSelect = ({ showAvailability, onFilter, ...props }: ACMED return {props.placeholder}; }} options={options} - optionFilterProp={void 0} optionLabelProp={void 0} optionRender={(option) => renderOption(option.data.value as string)} + showSearch={{ + filterOption: (inputValue, option) => { + if (!option) return false; + if (!option.label) return false; + if (!option.value) return false; + + const value = inputValue.toLowerCase(); + return String(option.value).toLowerCase().includes(value) || String(option.label).toLowerCase().includes(value); + }, + }} /> ); }; diff --git a/ui/src/components/provider/ACMEHttp01ProviderSelect.tsx b/ui/src/components/provider/ACMEHttp01ProviderSelect.tsx index a91c8c5a..5d6bace4 100644 --- a/ui/src/components/provider/ACMEHttp01ProviderSelect.tsx +++ b/ui/src/components/provider/ACMEHttp01ProviderSelect.tsx @@ -56,14 +56,6 @@ const ACMEHttp01ProviderSelect = ({ showAvailability, onFilter, ...props }: ACME return ( { - if (!option) return false; - - const value = inputValue.toLowerCase(); - return option.value.toLowerCase().includes(value) || option.label.toLowerCase().includes(value); - }} labelRender={({ value }) => { if (value != null) { return renderOption(value as string); @@ -98,9 +92,19 @@ const AccessProviderSelect = ({ showOptionTags, onFilter, ...props }: AccessProv return {props.placeholder}; }} options={options} - optionFilterProp={void 0} optionLabelProp={void 0} optionRender={(option) => renderOption(option.data.value)} + showSearch={{ + filterOption: (inputValue, option) => { + if (!option) return false; + if (!option.label) return false; + if (!option.value) return false; + + const value = inputValue.toLowerCase(); + return String(option.value).toLowerCase().includes(value) || String(option.label).toLowerCase().includes(value); + }, + optionFilterProp: "label", + }} /> ); }; diff --git a/ui/src/components/provider/CAProviderSelect.tsx b/ui/src/components/provider/CAProviderSelect.tsx index 7b4d078b..37c3c9f4 100644 --- a/ui/src/components/provider/CAProviderSelect.tsx +++ b/ui/src/components/provider/CAProviderSelect.tsx @@ -90,15 +90,6 @@ const CAProviderSelect = ({ showAvailability, showDefault, onFilter, ...props }: return ( { - if (!option) return false; - if (!option.label) return false; - if (!option.value) return false; - - const value = inputValue.toLowerCase(); - return String(option.value).toLowerCase().includes(value) || String(option.label).toLowerCase().includes(value); - }} labelRender={({ value }) => { if (value != null) { return renderOption(value as string); @@ -72,9 +64,18 @@ const DeploymentProviderSelect = ({ showAvailability = false, onFilter, ...props return {props.placeholder}; }} options={options} - optionFilterProp={void 0} optionLabelProp={void 0} optionRender={(option) => renderOption(option.data.value as string)} + showSearch={{ + filterOption: (inputValue, option) => { + if (!option) return false; + if (!option.label) return false; + if (!option.value) return false; + + const value = inputValue.toLowerCase(); + return String(option.value).toLowerCase().includes(value) || String(option.label).toLowerCase().includes(value); + }, + }} /> ); }; diff --git a/ui/src/components/provider/NotificationProviderSelect.tsx b/ui/src/components/provider/NotificationProviderSelect.tsx index 8a8a0c71..659382bb 100644 --- a/ui/src/components/provider/NotificationProviderSelect.tsx +++ b/ui/src/components/provider/NotificationProviderSelect.tsx @@ -56,14 +56,6 @@ const NotificationProviderSelect = ({ showAvailability = false, onFilter, ...pro return (