diff --git a/src/shared/components/ComboFormModal.js b/src/shared/components/ComboFormModal.js index a671930..d80732d 100644 --- a/src/shared/components/ComboFormModal.js +++ b/src/shared/components/ComboFormModal.js @@ -86,6 +86,9 @@ export default function ComboFormModal({ isOpen, combo, onClose, onSave, activeP const handleAddModel = (model) => { if (!models.includes(model.value)) setModels([...models, model.value]); }; + const handleDeselectModel = (model) => { + setModels(models.filter((m) => m !== model.value)); + }; const handleRemoveModel = (i) => setModels(models.filter((_, idx) => idx !== i)); const handleMoveUp = (i) => { if (i === 0) return; @@ -164,8 +167,10 @@ export default function ComboFormModal({ isOpen, combo, onClose, onSave, activeP setShowModelSelect(false)} - onSelect={handleAddModel} activeProviders={activeProviders} modelAliases={modelAliases} - title="Add Model to Combo" kindFilter={kindFilter} /> + onSelect={handleAddModel} onDeselect={handleDeselectModel} + activeProviders={activeProviders} modelAliases={modelAliases} + title="Add Model to Combo" kindFilter={kindFilter} + addedModelValues={models} closeOnSelect={false} /> ); } diff --git a/src/shared/components/ModelSelectModal.js b/src/shared/components/ModelSelectModal.js index 3d364b8..b7b682a 100644 --- a/src/shared/components/ModelSelectModal.js +++ b/src/shared/components/ModelSelectModal.js @@ -3,6 +3,7 @@ import { useState, useMemo, useEffect } from "react"; import PropTypes from "prop-types"; import Modal from "./Modal"; +import Button from "./Button"; import { getModelsByProviderId } from "@/shared/constants/models"; import { OAUTH_PROVIDERS, APIKEY_PROVIDERS, FREE_PROVIDERS, FREE_TIER_PROVIDERS, AI_PROVIDERS, isOpenAICompatibleProvider, isAnthropicCompatibleProvider, getProviderAlias } from "@/shared/constants/providers"; @@ -370,6 +371,19 @@ export default function ModelSelectModal({ title={title} size="md" className="p-4!" + footer={ + !closeOnSelect ? ( + + ) : null + } > {/* Search - compact */}