fix: keep input elements aligned when displaying error message

This commit is contained in:
Riccardo
2023-12-17 21:03:41 +01:00
parent 9a43e25659
commit 24ee55131e
3 changed files with 62 additions and 53 deletions

View File

@@ -80,10 +80,11 @@ export default function Home() {
} }
return ( return (
<div className='h-12 align-top'>
<Form {...form}> <Form {...form}>
<form <form
onSubmit={form.handleSubmit(handleSubmit)} onSubmit={form.handleSubmit(handleSubmit)}
className='flex items-center justify-center space-x-4' className='flex space-x-4'
> >
<FormField <FormField
control={form.control} control={form.control}
@@ -97,9 +98,12 @@ export default function Home() {
</FormItem> </FormItem>
)} )}
/> />
<div className='align-top'>
<Button type='submit'>Submit</Button> <Button type='submit'>Submit</Button>
</div>
</form> </form>
</Form> </Form>
</div>
); );
} }

View File

@@ -80,10 +80,11 @@ export default function Unsubscribe() {
} }
return ( return (
<div className='h-12 align-top'>
<Form {...form}> <Form {...form}>
<form <form
onSubmit={form.handleSubmit(handleSubmit)} onSubmit={form.handleSubmit(handleSubmit)}
className='flex items-center justify-center space-x-4' className='flex space-x-4'
> >
<FormField <FormField
control={form.control} control={form.control}
@@ -97,9 +98,12 @@ export default function Unsubscribe() {
</FormItem> </FormItem>
)} )}
/> />
<div className='align-top'>
<Button type='submit'>Submit</Button> <Button type='submit'>Submit</Button>
</div>
</form> </form>
</Form> </Form>
</div>
); );
} }

View File

@@ -133,7 +133,7 @@ const FormDescription = React.forwardRef<
<p <p
ref={ref} ref={ref}
id={formDescriptionId} id={formDescriptionId}
className={cn('text-muted-foreground text-sm', className)} className={cn('text-sm text-muted-foreground', className)}
{...props} {...props}
/> />
); );
@@ -147,21 +147,22 @@ const FormMessage = React.forwardRef<
const { error, formMessageId } = useFormField(); const { error, formMessageId } = useFormField();
const body = error ? String(error?.message) : children; const body = error ? String(error?.message) : children;
if (!body) {
return null;
}
return ( return (
<>
{!body ? null : (
<p <p
ref={ref} ref={ref}
id={formMessageId} id={formMessageId}
className={cn('text-destructive text-sm font-medium', className)} className={cn('text-sm font-medium text-destructive', className)}
{...props} {...props}
> >
{body} {body}
</p> </p>
)}
</>
); );
}); });
FormMessage.displayName = 'FormMessage'; FormMessage.displayName = 'FormMessage';
export { export {