From 2d8d478e2c825cf78f0c148957c6b6e5065dfbdf Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 6 Mar 2025 23:27:10 +0800 Subject: [PATCH] feat: Improve model group management UI in EditModelsPopup - Add dynamic group management button that changes based on group's current state - Simplify group add/remove logic with a single button - Enhance visual feedback for group-level model management --- .../ProviderSettings/EditModelsPopup.tsx | 117 +++++++++--------- .../ProviderSettings/ProviderSetting.tsx | 10 +- 2 files changed, 70 insertions(+), 57 deletions(-) diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx index 7bf68eca..aa338a30 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx @@ -169,62 +169,67 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { /> - {Object.keys(modelGroups).map((group) => ( -
- - {group} -
-
-
- {modelGroups[group].map((model) => { - return ( - - - - {model?.name?.[0]?.toUpperCase()} - - - - {model.name} - - - {!isEmpty(model.description) && ( - - - - )} - - - {isModelInProvider(provider, model.id) ? ( -
- ))} + {Object.keys(modelGroups).map((group) => { + const isAllInProvider = modelGroups[group].every((model) => isModelInProvider(provider, model.id)) + return ( +
+ + {group} +
+
+
+ {modelGroups[group].map((model) => { + return ( + + + + {model?.name?.[0]?.toUpperCase()} + + + + {model.name} + + + {!isEmpty(model.description) && ( + + + + )} + + + {isModelInProvider(provider, model.id) ? ( +
+ ) + })} {isEmpty(list) && }
diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index e9be9492..3124c04d 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -317,7 +317,7 @@ const ProviderSetting: FC = ({ provider: _provider }) => { title={group} extra={ - modelGroups[group] .filter((model) => provider.models.some((m) => m.id === model.id)) @@ -409,6 +409,14 @@ const RemoveIcon = styled(MinusCircleOutlined)` transition: all 0.2s ease-in-out; ` +const HoveredRemoveIcon = styled(RemoveIcon)` + opacity: 0; + margin-top: 2px; + &:hover { + opacity: 1; + } +` + const SettingIcon = styled(SettingOutlined)` margin-left: 2px; color: var(--color-text);