Skip to content

Commit acd7525

Browse files
feat: type currentTarget in on function (#17370)
* feat: type `currentTarget` in `on` function * `EventTarget &` is redundant, `Element` already extends `EventTarget` * no need for optional chaining * add currentTarget for other overloads * update changeset --------- Co-authored-by: Rich Harris <[email protected]>
1 parent 95a895a commit acd7525

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

.changeset/bumpy-radios-live.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: type `currentTarget` in `on` function

packages/svelte/src/events/public.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
export function on<Type extends keyof WindowEventMap>(
99
window: Window,
1010
type: Type,
11-
handler: (this: Window, event: WindowEventMap[Type]) => any,
11+
handler: (this: Window, event: WindowEventMap[Type] & { currentTarget: Window }) => any,
1212
options?: AddEventListenerOptions | undefined
1313
): () => void;
1414
/**
@@ -19,7 +19,7 @@ export function on<Type extends keyof WindowEventMap>(
1919
export function on<Type extends keyof DocumentEventMap>(
2020
document: Document,
2121
type: Type,
22-
handler: (this: Document, event: DocumentEventMap[Type]) => any,
22+
handler: (this: Document, event: DocumentEventMap[Type] & { currentTarget: Document }) => any,
2323
options?: AddEventListenerOptions | undefined
2424
): () => void;
2525
/**
@@ -30,7 +30,7 @@ export function on<Type extends keyof DocumentEventMap>(
3030
export function on<Element extends HTMLElement, Type extends keyof HTMLElementEventMap>(
3131
element: Element,
3232
type: Type,
33-
handler: (this: Element, event: HTMLElementEventMap[Type]) => any,
33+
handler: (this: Element, event: HTMLElementEventMap[Type] & { currentTarget: Element }) => any,
3434
options?: AddEventListenerOptions | undefined
3535
): () => void;
3636
/**
@@ -41,7 +41,7 @@ export function on<Element extends HTMLElement, Type extends keyof HTMLElementEv
4141
export function on<Element extends MediaQueryList, Type extends keyof MediaQueryListEventMap>(
4242
element: Element,
4343
type: Type,
44-
handler: (this: Element, event: MediaQueryListEventMap[Type]) => any,
44+
handler: (this: Element, event: MediaQueryListEventMap[Type] & { currentTarget: Element }) => any,
4545
options?: AddEventListenerOptions | undefined
4646
): () => void;
4747
/**

packages/svelte/tests/types/events.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ on(window, 'click', (e) => e.button);
88

99
on(document, 'click', (e) => e.button);
1010

11+
on(document.createElement('input'), 'input', (e) => e.currentTarget.value);
12+
1113
on(
1214
document.body,
1315
'clidck',

packages/svelte/types/index.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2810,7 +2810,7 @@ declare module 'svelte/events' {
28102810
export function on<Type extends keyof WindowEventMap>(
28112811
window: Window,
28122812
type: Type,
2813-
handler: (this: Window, event: WindowEventMap[Type]) => any,
2813+
handler: (this: Window, event: WindowEventMap[Type] & { currentTarget: Window }) => any,
28142814
options?: AddEventListenerOptions | undefined
28152815
): () => void;
28162816
/**
@@ -2821,7 +2821,7 @@ declare module 'svelte/events' {
28212821
export function on<Type extends keyof DocumentEventMap>(
28222822
document: Document,
28232823
type: Type,
2824-
handler: (this: Document, event: DocumentEventMap[Type]) => any,
2824+
handler: (this: Document, event: DocumentEventMap[Type] & { currentTarget: Document }) => any,
28252825
options?: AddEventListenerOptions | undefined
28262826
): () => void;
28272827
/**
@@ -2832,7 +2832,7 @@ declare module 'svelte/events' {
28322832
export function on<Element extends HTMLElement, Type extends keyof HTMLElementEventMap>(
28332833
element: Element,
28342834
type: Type,
2835-
handler: (this: Element, event: HTMLElementEventMap[Type]) => any,
2835+
handler: (this: Element, event: HTMLElementEventMap[Type] & { currentTarget: Element }) => any,
28362836
options?: AddEventListenerOptions | undefined
28372837
): () => void;
28382838
/**
@@ -2843,7 +2843,7 @@ declare module 'svelte/events' {
28432843
export function on<Element extends MediaQueryList, Type extends keyof MediaQueryListEventMap>(
28442844
element: Element,
28452845
type: Type,
2846-
handler: (this: Element, event: MediaQueryListEventMap[Type]) => any,
2846+
handler: (this: Element, event: MediaQueryListEventMap[Type] & { currentTarget: Element }) => any,
28472847
options?: AddEventListenerOptions | undefined
28482848
): () => void;
28492849
/**

0 commit comments

Comments
 (0)