From a8e876ada5f1d213c7b48c297a02cc36fee9896c Mon Sep 17 00:00:00 2001 From: 777genius Date: Sat, 25 Apr 2026 19:22:31 +0300 Subject: [PATCH] feat(runtime-provider-management): expose provider directory search --- .../ui/RuntimeProviderManagementPanelView.tsx | 93 ++++++++++++++----- 1 file changed, 72 insertions(+), 21 deletions(-) diff --git a/src/features/runtime-provider-management/renderer/ui/RuntimeProviderManagementPanelView.tsx b/src/features/runtime-provider-management/renderer/ui/RuntimeProviderManagementPanelView.tsx index 3b9347e2..11361880 100644 --- a/src/features/runtime-provider-management/renderer/ui/RuntimeProviderManagementPanelView.tsx +++ b/src/features/runtime-provider-management/renderer/ui/RuntimeProviderManagementPanelView.tsx @@ -1100,6 +1100,8 @@ export function RuntimeProviderManagementPanelView({ ) ? state.selectedProviderId : (filteredProviders[0]?.providerId ?? state.selectedProviderId ?? null); + const canSearchDirectory = + state.directorySupported && providerQuery.length >= 2 && filteredProviders.length === 0; return (
@@ -1138,7 +1140,32 @@ export function RuntimeProviderManagementPanelView({
) : null} - {state.providers.length > 0 ? ( + {state.directoryOpen ? ( + + ) : null} + + {!state.directoryOpen && state.directorySupported ? ( + + ) : null} + + {!state.directoryOpen && state.providers.length > 0 ? (
actions.setProviderQuery(event.target.value)} + onKeyDown={(event) => { + if (event.key === 'Enter' && state.providerQuery.trim().length >= 2) { + actions.searchAllProviders(state.providerQuery.trim()); + } + }} placeholder="Search providers" className="h-9 pr-3 text-sm" style={{ paddingLeft: 40 }} @@ -1153,26 +1185,45 @@ export function RuntimeProviderManagementPanelView({
) : null} -
- {state.loading && state.providers.length === 0 ? ( - - ) : null} - {filteredProviders.map((provider) => ( - - ))} -
+ {!state.directoryOpen && canSearchDirectory ? ( + + ) : null} - {!state.loading && state.providers.length > 0 && filteredProviders.length === 0 ? ( + {!state.directoryOpen ? ( +
+ {state.loading && state.providers.length === 0 ? ( + + ) : null} + {filteredProviders.map((provider) => ( + + ))} +
+ ) : null} + + {!state.directoryOpen && + !state.loading && + state.providers.length > 0 && + filteredProviders.length === 0 ? (
) : null} - {!state.loading && state.providers.length === 0 ? ( + {!state.directoryOpen && !state.loading && state.providers.length === 0 ? (