Skip to content

Commit

Permalink
feat(jsx): improve input attribute types based on react (#3302)
Browse files Browse the repository at this point in the history
  • Loading branch information
ssssota committed Aug 21, 2024
1 parent 331b3d8 commit 2646696
Showing 1 changed file with 63 additions and 3 deletions.
66 changes: 63 additions & 3 deletions src/jsx/intrinsic-elements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ export namespace JSX {
datetime?: string | undefined
}

type HTMLInputTypeAttribute =
type HTMLInputTypeAttribute = StringLiteralUnion<
| 'button'
| 'checkbox'
| 'color'
Expand All @@ -370,12 +370,72 @@ export namespace JSX {
| 'time'
| 'url'
| 'week'
| string
>
type AutoFillAddressKind = 'billing' | 'shipping'
type AutoFillBase = '' | 'off' | 'on'
type AutoFillContactField =
| 'email'
| 'tel'
| 'tel-area-code'
| 'tel-country-code'
| 'tel-extension'
| 'tel-local'
| 'tel-local-prefix'
| 'tel-local-suffix'
| 'tel-national'
type AutoFillContactKind = 'home' | 'mobile' | 'work'
type AutoFillCredentialField = 'webauthn'
type AutoFillNormalField =
| 'additional-name'
| 'address-level1'
| 'address-level2'
| 'address-level3'
| 'address-level4'
| 'address-line1'
| 'address-line2'
| 'address-line3'
| 'bday-day'
| 'bday-month'
| 'bday-year'
| 'cc-csc'
| 'cc-exp'
| 'cc-exp-month'
| 'cc-exp-year'
| 'cc-family-name'
| 'cc-given-name'
| 'cc-name'
| 'cc-number'
| 'cc-type'
| 'country'
| 'country-name'
| 'current-password'
| 'family-name'
| 'given-name'
| 'honorific-prefix'
| 'honorific-suffix'
| 'name'
| 'new-password'
| 'one-time-code'
| 'organization'
| 'postal-code'
| 'street-address'
| 'transaction-amount'
| 'transaction-currency'
| 'username'
type OptionalPrefixToken<T extends string> = `${T} ` | ''
type OptionalPostfixToken<T extends string> = ` ${T}` | ''
type AutoFillField =
| AutoFillNormalField
| `${OptionalPrefixToken<AutoFillContactKind>}${AutoFillContactField}`
type AutoFillSection = `section-${string}`
type AutoFill =
| AutoFillBase
| `${OptionalPrefixToken<AutoFillSection>}${OptionalPrefixToken<AutoFillAddressKind>}${AutoFillField}${OptionalPostfixToken<AutoFillCredentialField>}`

interface InputHTMLAttributes extends HTMLAttributes {
accept?: string | undefined
alt?: string | undefined
autocomplete?: string | undefined
autocomplete?: StringLiteralUnion<AutoFill> | undefined
capture?: boolean | 'user' | 'environment' | undefined // https://www.w3.org/TR/html-media-capture/#the-capture-attribute
checked?: boolean | undefined
disabled?: boolean | undefined
Expand Down

0 comments on commit 2646696

Please sign in to comment.