From ab3aedbb68acd5c32290c45197cef1aa10115ae0 Mon Sep 17 00:00:00 2001 From: abefernan <44572727+abefernan@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:38:03 +0200 Subject: [PATCH 1/2] Add amount field and schema --- .../forms/CreateTxForm/Fields/FieldAmount.tsx | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 components/forms/CreateTxForm/Fields/FieldAmount.tsx diff --git a/components/forms/CreateTxForm/Fields/FieldAmount.tsx b/components/forms/CreateTxForm/Fields/FieldAmount.tsx new file mode 100644 index 0000000..f6e12fe --- /dev/null +++ b/components/forms/CreateTxForm/Fields/FieldAmount.tsx @@ -0,0 +1,49 @@ +import { FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { prettyFieldName } from "@/lib/form"; +import * as z from "zod"; +import type { FieldProps } from "./types"; + +export const getFieldAmountSchema = () => + z.object({ + denom: z + .string({ invalid_type_error: "Must be a string", required_error: "Required" }) + .trim() + .min(1, "Required"), + amount: z + .number({ invalid_type_error: "Must be a number", required_error: "Required" }) + .positive("Must be positive"), + }); + +export default function FieldAmount({ form, fieldFormName }: FieldProps) { + return ( + <> + ( + + {"Denom" + prettyFieldName(fieldFormName)} + + + + + + )} + /> + ( + + {prettyFieldName(fieldFormName)} + + + + + + )} + /> + + ); +} From 32e828a60fb78af79327aeec1f2fea360ace9e5d Mon Sep 17 00:00:00 2001 From: abefernan <44572727+abefernan@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:38:17 +0200 Subject: [PATCH 2/2] Add amount field getters --- lib/form.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/form.ts b/lib/form.ts index e635a89..5bb4387 100644 --- a/lib/form.ts +++ b/lib/form.ts @@ -1,6 +1,9 @@ import FieldAddress, { getFieldAddressSchema, } from "@/components/forms/CreateTxForm/Fields/FieldAddress"; +import FieldAmount, { + getFieldAmountSchema, +} from "@/components/forms/CreateTxForm/Fields/FieldAmount"; import { FieldSchemaInput } from "@/components/forms/CreateTxForm/Fields/types"; import { z } from "zod"; @@ -18,6 +21,8 @@ export const getField = (fieldName: string) => { case "delegatorAddress": case "validatorAddress": return FieldAddress; + case "amount": + return FieldAmount; default: return () => null; } @@ -30,6 +35,8 @@ const getFieldSchema = (fieldName: string) => { case "delegatorAddress": case "validatorAddress": return getFieldAddressSchema; + case "amount": + return getFieldAmountSchema; default: throw new Error(`No schema found for ${fieldName} field`); }