Skip to content

Commit 66de71b

Browse files
authored
Fix inaccurate InputElementProps type for text/select fields (#14908)
* Fix inaccurate InputElementProps type for text/select fields * add another case for the multiple attribute * format * Merge branch 'main' into patch-2 * generate types * Merge branch 'patch-2' of https://github.com/TheOnlyTails/kit into patch-2 * added changeset * Merge branch 'main' into patch-2
1 parent a9d5595 commit 66de71b

File tree

3 files changed

+49
-14
lines changed

3 files changed

+49
-14
lines changed

.changeset/upset-tires-retire.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
fix: improved the accuracy of the types of the output of `field.as('...')`

packages/kit/src/exports/public.d.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1865,13 +1865,28 @@ type InputElementProps<T extends keyof InputTypeMap> = T extends 'checkbox' | 'r
18651865
get files(): FileList | null;
18661866
set files(v: FileList | null);
18671867
}
1868-
: {
1869-
name: string;
1870-
type: T;
1871-
'aria-invalid': boolean | 'false' | 'true' | undefined;
1872-
get value(): string | number;
1873-
set value(v: string | number);
1874-
};
1868+
: T extends 'select' | 'select multiple'
1869+
? {
1870+
name: string;
1871+
multiple: T extends 'select' ? false : true;
1872+
'aria-invalid': boolean | 'false' | 'true' | undefined;
1873+
get value(): string | number;
1874+
set value(v: string | number);
1875+
}
1876+
: T extends 'text'
1877+
? {
1878+
name: string;
1879+
'aria-invalid': boolean | 'false' | 'true' | undefined;
1880+
get value(): string | number;
1881+
set value(v: string | number);
1882+
}
1883+
: {
1884+
name: string;
1885+
type: T;
1886+
'aria-invalid': boolean | 'false' | 'true' | undefined;
1887+
get value(): string | number;
1888+
set value(v: string | number);
1889+
};
18751890

18761891
type RemoteFormFieldMethods<T> = {
18771892
/** The values that will be submitted */

packages/kit/types/index.d.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,13 +1841,28 @@ declare module '@sveltejs/kit' {
18411841
get files(): FileList | null;
18421842
set files(v: FileList | null);
18431843
}
1844-
: {
1845-
name: string;
1846-
type: T;
1847-
'aria-invalid': boolean | 'false' | 'true' | undefined;
1848-
get value(): string | number;
1849-
set value(v: string | number);
1850-
};
1844+
: T extends 'select' | 'select multiple'
1845+
? {
1846+
name: string;
1847+
multiple: T extends 'select' ? false : true;
1848+
'aria-invalid': boolean | 'false' | 'true' | undefined;
1849+
get value(): string | number;
1850+
set value(v: string | number);
1851+
}
1852+
: T extends 'text'
1853+
? {
1854+
name: string;
1855+
'aria-invalid': boolean | 'false' | 'true' | undefined;
1856+
get value(): string | number;
1857+
set value(v: string | number);
1858+
}
1859+
: {
1860+
name: string;
1861+
type: T;
1862+
'aria-invalid': boolean | 'false' | 'true' | undefined;
1863+
get value(): string | number;
1864+
set value(v: string | number);
1865+
};
18511866

18521867
type RemoteFormFieldMethods<T> = {
18531868
/** The values that will be submitted */

0 commit comments

Comments
 (0)