breaking(text-input): use native bind:value, dispatch instead of forward change, input events (#1065)

Use the native `bind:value` to fix two-way reactivity. As a result, "type" is read through `$$restProps` because it cannot be dynamic when using `bind:value`.

Extend value type to include `null` for the "number" type. This is similar to how `NumberInput` works; `null` represents "no value."
This commit is contained in:
metonym 2022-02-09 19:52:10 -08:00 committed by GitHub
commit 989e0f4c65
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 92 additions and 72 deletions

View file

@ -10,16 +10,13 @@ export interface TextInputProps
size?: "sm" | "xl";
/**
* Specify the input value
* Specify the input value.
*
* `value` will be set to `null` if type="number"
* and the value is empty.
* @default ""
*/
value?: number | string;
/**
* Specify the input type
* @default ""
*/
type?: string;
value?: null | number | string;
/**
* Specify the placeholder text
@ -121,12 +118,12 @@ export interface TextInputProps
export default class TextInput extends SvelteComponentTyped<
TextInputProps,
{
change: CustomEvent<null | number | string>;
input: CustomEvent<null | number | string>;
click: WindowEventMap["click"];
mouseover: WindowEventMap["mouseover"];
mouseenter: WindowEventMap["mouseenter"];
mouseleave: WindowEventMap["mouseleave"];
change: WindowEventMap["change"];
input: WindowEventMap["input"];
keydown: WindowEventMap["keydown"];
keyup: WindowEventMap["keyup"];
focus: WindowEventMap["focus"];