Add address field and schema

This commit is contained in:
abefernan 2024-07-22 12:30:35 +02:00
parent 56a4c93cc1
commit 045bded8b1
No known key found for this signature in database

View File

@ -0,0 +1,39 @@
import { FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { useChains } from "@/context/ChainsContext";
import { exampleAddress } from "@/lib/displayHelpers";
import { prettyFieldName } from "@/lib/form";
import * as z from "zod";
import type { FieldProps, FieldSchemaInput } from "./types";
export const getFieldAddressSchema = ({ chain }: FieldSchemaInput) => {
if (!chain) {
throw new Error("Could not get field address schema because of missing chain parameter");
}
return z
.string({ invalid_type_error: "Must be a string", required_error: "Required" })
.trim()
.min(1, "Required")
.startsWith(chain.addressPrefix, `Invalid prefix for ${chain.chainDisplayName}`);
};
export default function FieldAddress({ form, fieldFormName }: FieldProps) {
const { chain } = useChains();
return (
<FormField
control={form.control}
name={fieldFormName}
render={({ field }) => (
<FormItem>
<FormLabel>{prettyFieldName(fieldFormName)}</FormLabel>
<FormControl>
<Input placeholder={`E.g. "${exampleAddress(0, chain.addressPrefix)}"`} {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
);
}