From 53828ce4d0db57cbb56b4df78a601e67d93b763f Mon Sep 17 00:00:00 2001 From: ameer2468 <33054370+ameer2468@users.noreply.github.com> Date: Mon, 4 Sep 2023 14:17:16 +0300 Subject: [PATCH] [ENG-1070] Dialog form button submit disabled if form is not valid (#1292) * Feedback dialog cleanup, disable submit button of dialog if form not valid * ts * Update FeedbackDialog.tsx --- .../Layout/Sidebar/FeedbackDialog.tsx | 15 ++++++--------- .../library/locations/AddLocationDialog.tsx | 7 +++++-- .../settings/library/tags/CreateDialog.tsx | 3 ++- packages/ui/src/Dialog.tsx | 4 +++- packages/ui/src/Input.tsx | 2 +- packages/ui/src/forms/TextAreaField.tsx | 18 ++++++++++++++++++ packages/ui/src/forms/index.ts | 1 + 7 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 packages/ui/src/forms/TextAreaField.tsx diff --git a/interface/app/$libraryId/Layout/Sidebar/FeedbackDialog.tsx b/interface/app/$libraryId/Layout/Sidebar/FeedbackDialog.tsx index be12166ba..4e567d613 100644 --- a/interface/app/$libraryId/Layout/Sidebar/FeedbackDialog.tsx +++ b/interface/app/$libraryId/Layout/Sidebar/FeedbackDialog.tsx @@ -1,10 +1,10 @@ import clsx from 'clsx'; import { useState } from 'react'; import { useZodForm } from '@sd/client'; -import { Dialog, TextArea, UseDialogProps, toast, useDialog, z } from '@sd/ui'; +import { Dialog, TextAreaField, UseDialogProps, toast, useDialog, z } from '@sd/ui'; const schema = z.object({ - feedback: z.string().min(1), + feedback: z.string().min(1, { message: 'Feedback is required' }), emoji: z.string().emoji().max(2).optional() }); @@ -12,7 +12,7 @@ const EMOJIS = ['🤩', '😀', '🙁', '😭']; const FEEDBACK_URL = 'https://spacedrive.com/api/feedback'; export default function FeedbackDialog(props: UseDialogProps) { - const form = useZodForm({ schema }); + const form = useZodForm({ schema, mode: 'onBlur' }); const [emojiSelected, setEmojiSelected] = useState(undefined); const emojiSelectHandler = (index: number) => { @@ -36,8 +36,6 @@ export default function FeedbackDialog(props: UseDialogProps) { } }); - const watchForm = form.watch(); - return ( +
{EMOJIS.map((emoji, i) => (
emojiSelectHandler(i)} @@ -65,10 +62,10 @@ export default function FeedbackDialog(props: UseDialogProps) {
} > -