From 3c531daa91815a4f41d58f3c7e4c1550f39a9e16 Mon Sep 17 00:00:00 2001 From: seaznCode Date: Wed, 14 Jan 2026 18:46:39 +0100 Subject: [PATCH] feat: add validation for required fields and reset editor fields after saving --- .../components/contractEditor.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/app/admin/contract-management/components/contractEditor.tsx b/src/app/admin/contract-management/components/contractEditor.tsx index 7f3bdbc..2b9a68f 100644 --- a/src/app/admin/contract-management/components/contractEditor.tsx +++ b/src/app/admin/contract-management/components/contractEditor.tsx @@ -24,6 +24,13 @@ export default function ContractEditor({ onSaved }: Props) { const { uploadTemplate, updateTemplateState } = useContractManagement(); + const resetEditorFields = () => { + setName(''); + setHtmlCode(''); + setDescription(''); + setIsPreview(false); + }; + // Build a full HTML doc if user pasted only a snippet const wrapIfNeeded = (src: string) => { const hasDoc = /]/i.test(src); @@ -100,7 +107,6 @@ export default function ContractEditor({ onSaved }: Props) { const canSave = Boolean( name.trim() && htmlCode.trim() && - description.trim() && type && (type === 'contract' ? contractType : true) && userType && @@ -111,7 +117,7 @@ export default function ContractEditor({ onSaved }: Props) { const html = htmlCode.trim(); // NEW: validate all fields if (!canSave) { - setStatusMsg('Please fill all required fields (name, HTML, type, user type, language, description).'); + setStatusMsg('Please fill all required fields (name, HTML, type, user type, language).'); return; } @@ -137,8 +143,8 @@ export default function ContractEditor({ onSaved }: Props) { setStatusMsg(publish ? 'Template created and activated.' : 'Template created.'); if (onSaved) onSaved(); - // Optionally clear fields - // setName(''); setHtmlCode(''); setDescription(''); setType('contract'); setLang('en'); + // Reset so another template can be created immediately + resetEditorFields(); } catch (e: any) { setStatusMsg(e?.message || 'Save failed.'); } finally { @@ -225,7 +231,6 @@ export default function ContractEditor({ onSaved }: Props) { placeholder="Description (optional)" value={description} onChange={(e) => setDescription(e.target.value)} - required className="w-full rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm text-gray-900 outline-none focus:ring-2 focus:ring-indigo-500/50 shadow" />