This is an automated email from the ASF dual-hosted git repository.

msyavuz pushed a commit to branch msyavuz/fix/clear-database-form-errors
in repository https://gitbox.apache.org/repos/asf/superset.git

commit fcaf8bfd12c51c4a32ba74d797c3857a2fc84b2e
Author: Mehmet Salih Yavuz <[email protected]>
AuthorDate: Mon Dec 29 12:59:52 2025 +0300

    fix: Database connection errors
---
 .../src/features/databases/DatabaseModal/index.tsx | 58 ++++++++++++++--------
 1 file changed, 36 insertions(+), 22 deletions(-)

diff --git a/superset-frontend/src/features/databases/DatabaseModal/index.tsx 
b/superset-frontend/src/features/databases/DatabaseModal/index.tsx
index da3d432dc7..6a81479a4c 100644
--- a/superset-frontend/src/features/databases/DatabaseModal/index.tsx
+++ b/superset-frontend/src/features/databases/DatabaseModal/index.tsx
@@ -776,7 +776,7 @@ const DatabaseModal: FunctionComponent<DatabaseModalProps> 
= ({
     setValidationErrors(null);
     setHasValidated(false);
     clearError();
-  }, [setValidationErrors, setHasValidated]);
+  }, [setValidationErrors, setHasValidated, clearError]);
 
   const handleParametersChange = useCallback(
     ({ target }: { target: HTMLInputElement }) => {
@@ -1756,28 +1756,31 @@ const DatabaseModal: 
FunctionComponent<DatabaseModalProps> = ({
         onAddTableCatalog={() => {
           setDB({ type: ActionType.AddTableCatalogSheet });
         }}
-        onQueryChange={({ target }: { target: HTMLInputElement }) =>
+        onQueryChange={({ target }: { target: HTMLInputElement }) => {
           onChange(ActionType.QueryChange, {
             name: target.name,
             value: target.value,
-          })
-        }
-        onExtraInputChange={({ target }: { target: HTMLInputElement }) =>
+          });
+          handleClearValidationErrors();
+        }}
+        onExtraInputChange={({ target }: { target: HTMLInputElement }) => {
           onChange(ActionType.ExtraInputChange, {
             name: target.name,
             value: target.value,
-          })
-        }
+          });
+          handleClearValidationErrors();
+        }}
         onEncryptedExtraInputChange={({
           target,
         }: {
           target: HTMLInputElement;
-        }) =>
+        }) => {
           onChange(ActionType.EncryptedExtraInputChange, {
             name: target.name,
             value: target.value,
-          })
-        }
+          });
+          handleClearValidationErrors();
+        }}
         onRemoveTableCatalog={(idx: number) => {
           setDB({
             type: ActionType.RemoveTableCatalogSheet,
@@ -1785,12 +1788,13 @@ const DatabaseModal: 
FunctionComponent<DatabaseModalProps> = ({
           });
         }}
         onParametersChange={handleParametersChange}
-        onChange={({ target }: { target: HTMLInputElement }) =>
+        onChange={({ target }: { target: HTMLInputElement }) => {
           onChange(ActionType.TextChange, {
             name: target.name,
             value: target.value,
-          })
-        }
+          });
+          handleClearValidationErrors();
+        }}
         getValidation={() => getValidation(db)}
         validationErrors={validationErrors}
         getPlaceholder={getPlaceholder}
@@ -1818,16 +1822,19 @@ const DatabaseModal: 
FunctionComponent<DatabaseModalProps> = ({
               checked: 'checked' in target ? target.checked : false,
               value: target.value,
             });
+            handleClearValidationErrors();
           }}
-          onTextChange={({ target }: { target: HTMLTextAreaElement }) =>
+          onTextChange={({ target }: { target: HTMLTextAreaElement }) => {
             onChange(ActionType.TextChange, {
               name: target.name,
               value: target.value,
-            })
-          }
-          onEditorChange={(payload: { name: string; json: any }) =>
-            onChange(ActionType.EditorChange, payload)
-          }
+            });
+            handleClearValidationErrors();
+          }}
+          onEditorChange={(payload: { name: string; json: any }) => {
+            onChange(ActionType.EditorChange, payload);
+            handleClearValidationErrors();
+          }}
           onExtraInputChange={(
             e: CheckboxChangeEvent | React.ChangeEvent<HTMLInputElement>,
           ) => {
@@ -1838,10 +1845,12 @@ const DatabaseModal: 
FunctionComponent<DatabaseModalProps> = ({
               checked: 'checked' in target ? target.checked : false,
               value: target.value,
             });
+            handleClearValidationErrors();
+          }}
+          onExtraEditorChange={(payload: { name: string; json: any }) => {
+            onChange(ActionType.ExtraEditorChange, payload);
+            handleClearValidationErrors();
           }}
-          onExtraEditorChange={(payload: { name: string; json: any }) =>
-            onChange(ActionType.ExtraEditorChange, payload)
-          }
         />
       );
     }
@@ -2065,15 +2074,18 @@ const DatabaseModal: 
FunctionComponent<DatabaseModalProps> = ({
                     checked: target.checked,
                     value: target.value,
                   });
+                  handleClearValidationErrors();
                 }}
                 onTextChange={({ target }: { target: HTMLTextAreaElement }) => 
{
                   onChange(ActionType.TextChange, {
                     name: target.name,
                     value: target.value,
                   });
+                  handleClearValidationErrors();
                 }}
                 onEditorChange={(payload: { name: string; json: any }) => {
                   onChange(ActionType.EditorChange, payload);
+                  handleClearValidationErrors();
                 }}
                 onExtraInputChange={(
                   e: React.ChangeEvent<HTMLInputElement> | CheckboxChangeEvent,
@@ -2085,9 +2097,11 @@ const DatabaseModal: 
FunctionComponent<DatabaseModalProps> = ({
                     checked: target.checked,
                     value: target.value,
                   });
+                  handleClearValidationErrors();
                 }}
                 onExtraEditorChange={(payload: { name: string; json: any }) => 
{
                   onChange(ActionType.ExtraEditorChange, payload);
+                  handleClearValidationErrors();
                 }}
               />
             ),

Reply via email to