From 5f816b4cff372a087a1073f7fb0cef1ce8080315 Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Thu, 7 Dec 2023 22:56:55 +0100 Subject: [PATCH 1/2] fix: incorrect oninput + onsubmit type --- src/jsx.d.ts | 18 ++++++++++++++---- test/ts/preact.tsx | 9 ++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/jsx.d.ts b/src/jsx.d.ts index 1ebd557c3b..00fab95e37 100644 --- a/src/jsx.d.ts +++ b/src/jsx.d.ts @@ -1441,6 +1441,10 @@ export namespace JSXInternal { Target, FocusEvent >; + export type TargetedInputEvent = TargetedEvent< + Target, + InputEvent + >; export type TargetedKeyboardEvent = TargetedEvent< Target, KeyboardEvent @@ -1495,6 +1499,9 @@ export namespace JSXInternal { export type GenericEventHandler = EventHandler< TargetedEvent >; + export type InputEventHandler = EventHandler< + TargetedInputEvent + >; export type KeyboardEventHandler = EventHandler< TargetedKeyboardEvent >; @@ -1504,6 +1511,9 @@ export namespace JSXInternal { export type PointerEventHandler = EventHandler< TargetedPointerEvent >; + export type SubmitEventHandler = EventHandler< + TargetedSubmitEvent + >; export type TouchEventHandler = EventHandler< TargetedTouchEvent >; @@ -1563,14 +1573,14 @@ export namespace JSXInternal { // Form Events onChange?: GenericEventHandler | undefined; onChangeCapture?: GenericEventHandler | undefined; - onInput?: GenericEventHandler | undefined; - onInputCapture?: GenericEventHandler | undefined; + onInput?: InputEventHandler | undefined; + onInputCapture?: InputEventHandler | undefined; onBeforeInput?: GenericEventHandler | undefined; onBeforeInputCapture?: GenericEventHandler | undefined; onSearch?: GenericEventHandler | undefined; onSearchCapture?: GenericEventHandler | undefined; - onSubmit?: TargetedSubmitEvent | undefined; - onSubmitCapture?: TargetedSubmitEvent | undefined; + onSubmit?: SubmitEventHandler | undefined; + onSubmitCapture?: SubmitEventHandler | undefined; onInvalid?: GenericEventHandler | undefined; onInvalidCapture?: GenericEventHandler | undefined; onReset?: GenericEventHandler | undefined; diff --git a/test/ts/preact.tsx b/test/ts/preact.tsx index 757cf3f655..5e2a1e4ea0 100644 --- a/test/ts/preact.tsx +++ b/test/ts/preact.tsx @@ -362,7 +362,14 @@ createElement(RefComponentTest, { ref: functionRef }, 'hi'); h(RefComponentTest, { ref: functionRef }, 'hi'); // Should accept onInput -const onInput = (e: h.JSX.TargetedEvent) => {}; +const onInput = (e: h.JSX.TargetedInputEvent) => {}; ; + e.currentTarget.value} />; createElement('input', { onInput: onInput }); h('input', { onInput: onInput }); + +// Should accept onSubmit +const onSubmit = (e: h.JSX.TargetedSubmitEvent) => {}; +
e.currentTarget.elements} />; +createElement('form', { onSubmit: onSubmit }); +h('form', { onSubmit: onSubmit }); From 0c7fd521c4bb0cbab9217494acd97411d96aff8b Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Thu, 7 Dec 2023 23:14:02 +0100 Subject: [PATCH 2/2] fix: onBeforeInput event type --- src/jsx.d.ts | 4 ++-- test/ts/preact.tsx | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/jsx.d.ts b/src/jsx.d.ts index 00fab95e37..a87297d97c 100644 --- a/src/jsx.d.ts +++ b/src/jsx.d.ts @@ -1575,8 +1575,8 @@ export namespace JSXInternal { onChangeCapture?: GenericEventHandler | undefined; onInput?: InputEventHandler | undefined; onInputCapture?: InputEventHandler | undefined; - onBeforeInput?: GenericEventHandler | undefined; - onBeforeInputCapture?: GenericEventHandler | undefined; + onBeforeInput?: InputEventHandler | undefined; + onBeforeInputCapture?: InputEventHandler | undefined; onSearch?: GenericEventHandler | undefined; onSearchCapture?: GenericEventHandler | undefined; onSubmit?: SubmitEventHandler | undefined; diff --git a/test/ts/preact.tsx b/test/ts/preact.tsx index 5e2a1e4ea0..bbc905d541 100644 --- a/test/ts/preact.tsx +++ b/test/ts/preact.tsx @@ -368,7 +368,12 @@ const onInput = (e: h.JSX.TargetedInputEvent) => {}; createElement('input', { onInput: onInput }); h('input', { onInput: onInput }); -// Should accept onSubmit +// Should accept onBeforeInput +const onBeforeInput = (e: h.JSX.TargetedInputEvent) => {}; + e.currentTarget.value} />; +createElement('input', { onBeforeInput: onBeforeInput }); +h('input', { onBeforeInput: onBeforeInput }); + const onSubmit = (e: h.JSX.TargetedSubmitEvent) => {}; e.currentTarget.elements} />; createElement('form', { onSubmit: onSubmit });