diff --git a/.changeset/bumpy-radios-live.md b/.changeset/bumpy-radios-live.md new file mode 100644 index 0000000000..f5aa4129c7 --- /dev/null +++ b/.changeset/bumpy-radios-live.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: type `currentTarget` in `on` function diff --git a/packages/svelte/src/events/public.d.ts b/packages/svelte/src/events/public.d.ts index ff42e523b3..bf7b20c108 100644 --- a/packages/svelte/src/events/public.d.ts +++ b/packages/svelte/src/events/public.d.ts @@ -8,7 +8,7 @@ export function on( window: Window, type: Type, - handler: (this: Window, event: WindowEventMap[Type]) => any, + handler: (this: Window, event: WindowEventMap[Type] & { currentTarget: Window }) => any, options?: AddEventListenerOptions | undefined ): () => void; /** @@ -19,7 +19,7 @@ export function on( export function on( document: Document, type: Type, - handler: (this: Document, event: DocumentEventMap[Type]) => any, + handler: (this: Document, event: DocumentEventMap[Type] & { currentTarget: Document }) => any, options?: AddEventListenerOptions | undefined ): () => void; /** @@ -30,7 +30,7 @@ export function on( export function on( element: Element, type: Type, - handler: (this: Element, event: HTMLElementEventMap[Type]) => any, + handler: (this: Element, event: HTMLElementEventMap[Type] & { currentTarget: Element }) => any, options?: AddEventListenerOptions | undefined ): () => void; /** @@ -41,7 +41,7 @@ export function on( element: Element, type: Type, - handler: (this: Element, event: MediaQueryListEventMap[Type]) => any, + handler: (this: Element, event: MediaQueryListEventMap[Type] & { currentTarget: Element }) => any, options?: AddEventListenerOptions | undefined ): () => void; /** diff --git a/packages/svelte/tests/types/events.ts b/packages/svelte/tests/types/events.ts index 77891952be..a334cb5493 100644 --- a/packages/svelte/tests/types/events.ts +++ b/packages/svelte/tests/types/events.ts @@ -8,6 +8,8 @@ on(window, 'click', (e) => e.button); on(document, 'click', (e) => e.button); +on(document.createElement('input'), 'input', (e) => e.currentTarget.value); + on( document.body, 'clidck', diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index d276b2a628..c0b89d8736 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -2810,7 +2810,7 @@ declare module 'svelte/events' { export function on( window: Window, type: Type, - handler: (this: Window, event: WindowEventMap[Type]) => any, + handler: (this: Window, event: WindowEventMap[Type] & { currentTarget: Window }) => any, options?: AddEventListenerOptions | undefined ): () => void; /** @@ -2821,7 +2821,7 @@ declare module 'svelte/events' { export function on( document: Document, type: Type, - handler: (this: Document, event: DocumentEventMap[Type]) => any, + handler: (this: Document, event: DocumentEventMap[Type] & { currentTarget: Document }) => any, options?: AddEventListenerOptions | undefined ): () => void; /** @@ -2832,7 +2832,7 @@ declare module 'svelte/events' { export function on( element: Element, type: Type, - handler: (this: Element, event: HTMLElementEventMap[Type]) => any, + handler: (this: Element, event: HTMLElementEventMap[Type] & { currentTarget: Element }) => any, options?: AddEventListenerOptions | undefined ): () => void; /** @@ -2843,7 +2843,7 @@ declare module 'svelte/events' { export function on( element: Element, type: Type, - handler: (this: Element, event: MediaQueryListEventMap[Type]) => any, + handler: (this: Element, event: MediaQueryListEventMap[Type] & { currentTarget: Element }) => any, options?: AddEventListenerOptions | undefined ): () => void; /**