Skip to content

Commit 1b45817

Browse files
Added disabled submit button
1 parent b7e8185 commit 1b45817

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/web/components/ApiKeyManagement/KeyDisableDialog.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function KeyDisableDialog({ onDisable, triggerButton, apiKey, setApiKey }: KeyDi
3939
<br />
4040
Type the Key ID to confirm: <b>{apiKey.key_id}</b>
4141
</p>
42-
<Form onSubmit={onSubmit} submitButtonText='Disable Key'>
42+
<Form onSubmit={onSubmit} submitButtonText='Disable Key' disableSubmitWhenInvalid>
4343
<TextInput
4444
inputName='Key Id'
4545
placeholder={apiKey.key_id}

src/web/components/Core/Form.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type FormProps<T extends FieldValues> = {
1717
children: ReactNode;
1818
onError?: (error: unknown) => void;
1919
defaultValues?: DeepPartial<T>;
20+
disableSubmitWhenInvalid?: boolean;
2021
submitButtonText?: string;
2122
customizeSubmit?: boolean;
2223
id?: string;
@@ -33,6 +34,7 @@ export function Form<T extends FieldValues>({
3334
onError,
3435
defaultValues,
3536
children,
37+
disableSubmitWhenInvalid,
3638
submitButtonText,
3739
customizeSubmit,
3840
}: FormProps<T>) {
@@ -42,7 +44,7 @@ export function Form<T extends FieldValues>({
4244
const {
4345
handleSubmit,
4446
setError,
45-
formState: { errors, isSubmitting },
47+
formState: { errors, isSubmitting, isDirty, isValid },
4648
} = methods;
4749
const submit = useCallback(
4850
async (formData: T) => {
@@ -75,7 +77,11 @@ export function Form<T extends FieldValues>({
7577
{children}
7678
{!customizeSubmit && (
7779
<div className='form-footer'>
78-
<button type='submit' disabled={isSubmitting} className='primary-button'>
80+
<button
81+
type='submit'
82+
disabled={isSubmitting || (disableSubmitWhenInvalid && (!isDirty || !isValid))}
83+
className='primary-button'
84+
>
7985
{submitButtonText ?? 'Submit'}
8086
</button>
8187
</div>

0 commit comments

Comments
 (0)