feat(ui): add loading spinners to async buttons in dialogs and forms
Signed-off-by: Noa Virellia <noa@requiem.garden>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import type { ServiceUserUserInfoData } from '@/client';
|
||||
import { useForm } from '@tanstack/react-form';
|
||||
import { Loader2 } from 'lucide-react';
|
||||
import {
|
||||
useEffect,
|
||||
useState,
|
||||
@@ -164,9 +165,11 @@ export function EditProfileDialogView({ user, updateProfile }: { user: ServiceUs
|
||||
<Button variant="outline">取消</Button>
|
||||
</DialogClose>
|
||||
<form.Subscribe
|
||||
selector={state => [state.canSubmit]}
|
||||
children={([canSubmit]) => (
|
||||
<Button type="submit" disabled={!canSubmit}>保存</Button>
|
||||
selector={state => [state.canSubmit, state.isSubmitting]}
|
||||
children={([canSubmit, isSubmitting]) => (
|
||||
<Button type="submit" disabled={!canSubmit}>
|
||||
{isSubmitting ? <Loader2 className="animate-spin" /> : '保存'}
|
||||
</Button>
|
||||
)}
|
||||
/>
|
||||
</DialogFooter>
|
||||
|
||||
Reference in New Issue
Block a user