From 34609040aa89f7d66a3f6873a53ee4316f4c21ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20=C5=9Eafak?= Date: Fri, 22 Sep 2023 15:15:34 -0700 Subject: [PATCH 1/2] Add FormValidation to Field.config.schema's type --- .gitignore | 1 + package.json | 2 +- src/lib/components/form-description.svelte | 2 +- src/lib/components/form-field.svelte | 5 +++-- src/lib/components/form.svelte | 3 ++- src/lib/internal/form-field/create-field.ts | 4 ++-- src/lib/internal/types.ts | 2 +- tests/RefinedValidation.svelte | 21 +++++++++++++++++++++ 8 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 tests/RefinedValidation.svelte diff --git a/.gitignore b/.gitignore index 3bb20ca..3db54ec 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ node_modules /dist /.svelte-kit /package +.cache .env .env.* !.env.example diff --git a/package.json b/package.json index 4041e1c..b74e97e 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ ], "peerDependencies": { "svelte": "^4.0.0", - "sveltekit-superforms": "^1.6.1", + "sveltekit-superforms": "^1.7.1", "zod": "^3.22.2" }, "devDependencies": { diff --git a/src/lib/components/form-description.svelte b/src/lib/components/form-description.svelte index 25ee14a..25a14e7 100644 --- a/src/lib/components/form-description.svelte +++ b/src/lib/components/form-description.svelte @@ -1,6 +1,6 @@ @@ -64,7 +65,7 @@ capture } = superFrm; - const config = { + const config: Form = { form: superFrm, schema }; diff --git a/src/lib/internal/form-field/create-field.ts b/src/lib/internal/form-field/create-field.ts index b4a5a80..cf39a03 100644 --- a/src/lib/internal/form-field/create-field.ts +++ b/src/lib/internal/form-field/create-field.ts @@ -32,7 +32,7 @@ export function createFormField< const setValue = (v: unknown) => { //@ts-expect-error - do we leave this as is, or do we want to force the type to match the schema? - // Pros: we don't have to deal with type narrowing inside the `setValue` function and we're runtime validating the type with zod anyways. + // Pros: we don't have to deal with type narrowing inside the `setValue` function, and we're runtime validating the type with zod anyways. // Cons: we're not forcing the type to match the schema so more issues could occur. value.set(v); }; @@ -65,7 +65,7 @@ export function createFormField< return { "aria-invalid": errors ? true : undefined, "aria-describedby": describedBy, - "aria-required": constraints?.required ? true : false, + "aria-required": !!constraints?.required, "data-invalid": errors ? true : undefined, "data-valid": errors ? undefined : true, name, diff --git a/src/lib/internal/types.ts b/src/lib/internal/types.ts index 5a87e36..a88fbf7 100644 --- a/src/lib/internal/types.ts +++ b/src/lib/internal/types.ts @@ -21,7 +21,7 @@ export type ExpandDeep = T extends object export type Form = { schema: T; - form: SuperForm; + form: SuperForm; }; export type Arrayable = T | T[]; diff --git a/tests/RefinedValidation.svelte b/tests/RefinedValidation.svelte new file mode 100644 index 0000000..234ebff --- /dev/null +++ b/tests/RefinedValidation.svelte @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file From 51ab7e1d50f784dcca7efd7871c50440dfbe50a6 Mon Sep 17 00:00:00 2001 From: Hunter Johnston <64506580+huntabyte@users.noreply.github.com> Date: Thu, 28 Sep 2023 22:03:22 -0400 Subject: [PATCH 2/2] add changeset --- .changeset/hip-eggs-wave.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/hip-eggs-wave.md diff --git a/.changeset/hip-eggs-wave.md b/.changeset/hip-eggs-wave.md new file mode 100644 index 0000000..90abd08 --- /dev/null +++ b/.changeset/hip-eggs-wave.md @@ -0,0 +1,5 @@ +--- +"formsnap": patch +--- + +Add FormValidation to Field.config.schema's type