diff --git a/.changeset/bumpy-radios-live.md b/.changeset/bumpy-radios-live.md new file mode 100644 index 000000000000..f5aa4129c761 --- /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 ff42e523b3e1..bf7b20c10812 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 77891952bef4..a334cb54930e 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 9ace341e1609..f1ee18f607b6 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -2801,7 +2801,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; /** @@ -2812,7 +2812,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; /** @@ -2823,7 +2823,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; /** @@ -2834,7 +2834,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; /**