From 95967f843b1b046e8bbf04ffe926b5890325c010 Mon Sep 17 00:00:00 2001 From: Shachar Zidon Date: Sat, 8 Nov 2025 16:19:33 +0200 Subject: [PATCH 1/5] Fix inaccurate InputElementProps type for text/select fields --- packages/kit/src/exports/public.d.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 3516689dce67..62b90c94c6e9 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -1865,7 +1865,14 @@ type InputElementProps = T extends 'checkbox' | 'r get files(): FileList | null; set files(v: FileList | null); } - : { + : T extends "select" | "select multiple" | "text" + ? { + name: string; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + }; + : { name: string; type: T; 'aria-invalid': boolean | 'false' | 'true' | undefined; From 88e64e517b8d4e038d9d9e7ad56c8b1d815011bd Mon Sep 17 00:00:00 2001 From: Shachar Zidon Date: Sat, 8 Nov 2025 16:27:36 +0200 Subject: [PATCH 2/5] add another case for the multiple attribute --- packages/kit/src/exports/public.d.ts | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 62b90c94c6e9..0a5e51f6ced8 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -1865,20 +1865,28 @@ type InputElementProps = T extends 'checkbox' | 'r get files(): FileList | null; set files(v: FileList | null); } - : T extends "select" | "select multiple" | "text" + : T extends "select" | "select multiple" ? { name: string; + multiple: T extends "select" ? false : true; 'aria-invalid': boolean | 'false' | 'true' | undefined; get value(): string | number; set value(v: string | number); - }; - : { - name: string; - type: T; - 'aria-invalid': boolean | 'false' | 'true' | undefined; - get value(): string | number; - set value(v: string | number); - }; + } + : T extends "text" + ? { + name: string; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } + : { + name: string; + type: T; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + }; type RemoteFormFieldMethods = { /** The values that will be submitted */ From 3234b79acfd6e787cd005e704e2a2455277509a7 Mon Sep 17 00:00:00 2001 From: theonlytails Date: Sun, 9 Nov 2025 17:56:01 +0200 Subject: [PATCH 3/5] format --- packages/kit/src/exports/public.d.ts | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 0a5e51f6ced8..39174438f805 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -1865,28 +1865,28 @@ type InputElementProps = T extends 'checkbox' | 'r get files(): FileList | null; set files(v: FileList | null); } - : T extends "select" | "select multiple" + : T extends 'select' | 'select multiple' ? { - name: string; - multiple: T extends "select" ? false : true; - 'aria-invalid': boolean | 'false' | 'true' | undefined; - get value(): string | number; - set value(v: string | number); - } - : T extends "text" - ? { name: string; + multiple: T extends 'select' ? false : true; 'aria-invalid': boolean | 'false' | 'true' | undefined; get value(): string | number; set value(v: string | number); } + : T extends 'text' + ? { + name: string; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } : { - name: string; - type: T; - 'aria-invalid': boolean | 'false' | 'true' | undefined; - get value(): string | number; - set value(v: string | number); - }; + name: string; + type: T; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + }; type RemoteFormFieldMethods = { /** The values that will be submitted */ From 018eb7c274ac423d8ee9cb11b0115c78658819f1 Mon Sep 17 00:00:00 2001 From: theonlytails Date: Thu, 13 Nov 2025 17:05:05 +0200 Subject: [PATCH 4/5] generate types --- packages/kit/types/index.d.ts | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 0ddf7ca08844..548bc7a78d83 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1841,13 +1841,28 @@ declare module '@sveltejs/kit' { get files(): FileList | null; set files(v: FileList | null); } - : { - name: string; - type: T; - 'aria-invalid': boolean | 'false' | 'true' | undefined; - get value(): string | number; - set value(v: string | number); - }; + : T extends 'select' | 'select multiple' + ? { + name: string; + multiple: T extends 'select' ? false : true; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } + : T extends 'text' + ? { + name: string; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + } + : { + name: string; + type: T; + 'aria-invalid': boolean | 'false' | 'true' | undefined; + get value(): string | number; + set value(v: string | number); + }; type RemoteFormFieldMethods = { /** The values that will be submitted */ From 2cba65baf89319268ad7439e23c9a22d40b53b8a Mon Sep 17 00:00:00 2001 From: theonlytails Date: Thu, 13 Nov 2025 17:24:40 +0200 Subject: [PATCH 5/5] added changeset --- .changeset/upset-tires-retire.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/upset-tires-retire.md diff --git a/.changeset/upset-tires-retire.md b/.changeset/upset-tires-retire.md new file mode 100644 index 000000000000..18cac46acf20 --- /dev/null +++ b/.changeset/upset-tires-retire.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: improved the accuracy of the types of the output of `field.as('...')`