Fix: Resolved issue where the default model could not be deleted. (#17755)

This commit is contained in:
chanx
2026-08-04 10:37:20 +08:00
committed by GitHub
parent d236fc4437
commit 190b903311
4 changed files with 30 additions and 7 deletions

View File

@@ -115,6 +115,24 @@ interface DynamicFormProps<T extends FieldValues> {
// updatedField: Partial<FormFieldConfig>,
// ) => void;
labelClassName?: string;
/**
* Options forwarded to `form.reset()` when `defaultValues` change.
* Pass `{ keepDirtyValues: true }` to preserve user edits during
* background refetches / lazy detail loads. Defaults to `{}`
* (hard reset) to preserve the original behavior for existing
* consumers.
*/
resetOptions?: {
keepValues?: boolean;
keepDefaultValues?: boolean;
keepErrors?: boolean;
keepDirty?: boolean;
keepDirtyValues?: boolean;
keepIsSubmitted?: boolean;
keepTouched?: boolean;
keepIsValid?: boolean;
keepSubmitCount?: boolean;
};
}
// Form ref interface
@@ -643,6 +661,7 @@ const DynamicForm = {
defaultValues: formDefaultValues = {} as DefaultValues<T>,
// onFieldUpdate,
labelClassName,
resetOptions,
}: DynamicFormProps<T>,
ref: React.Ref<any>,
) => {
@@ -876,12 +895,15 @@ const DynamicForm = {
(form as any).filterActiveValues = filterActiveValues;
useEffect(() => {
if (formDefaultValues && Object.keys(formDefaultValues).length > 0) {
form.reset({
...generateDefaultValues(fields),
...formDefaultValues,
});
form.reset(
{
...generateDefaultValues(fields),
...formDefaultValues,
},
resetOptions,
);
}
}, [form, formDefaultValues, fields]);
}, [form, formDefaultValues, fields, resetOptions]);
// Submit handler
// const handleSubmit = form.handleSubmit(onSubmit);

View File

@@ -73,6 +73,7 @@ export function DraftModeCard({
onSubmit={() => undefined}
defaultValues={formDefaultValues}
labelClassName="font-normal"
resetOptions={{ keepDirtyValues: true }}
/>
{providerName === LLMFactory.AIMLAPI && (

View File

@@ -190,12 +190,13 @@ export function SavedModeCard({
<CollapsibleContent forceMount className="data-[state=closed]:hidden">
<div className="pb-4 flex flex-col gap-4">
<DynamicForm.Root
key={`${providerName}-${instanceName}-false-${instanceDetailsLoaded ? 'loaded' : 'pending'}`}
key={`${providerName}-${instanceName}-false`}
ref={formRef as RefObject<DynamicFormRef>}
fields={formFields}
onSubmit={() => undefined}
defaultValues={formDefaultValues}
labelClassName="font-normal"
resetOptions={{ keepDirtyValues: true }}
/>
<div className="pt-3">

View File

@@ -92,7 +92,6 @@ function SystemSetting() {
async (field: string, value: string) => {
const modelType = FieldToModelType[field];
if (!modelType) return;
if (!value) return;
const parsed = parseModelValue(value);
if (parsed) {
await setDefaultModel({ ...parsed, model_type: modelType });