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(); }} /> ),
