Skip to content

Commit abc1266

Browse files
navoritedummdidumm
andauthored
fix: add types for popover attributes and events (#10041)
closes #10036, this also moves the HTMLDetailsElement toggle event to its interface as it was conflicting with HTMLElement popover toggle event. --------- Co-authored-by: Simon H <[email protected]>
1 parent d56223b commit abc1266

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

.changeset/orange-dingos-poke.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: add types for popover attributes and events

packages/svelte/elements.d.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export type WheelEventHandler<T extends EventTarget> = EventHandler<WheelEvent,
5959
export type AnimationEventHandler<T extends EventTarget> = EventHandler<AnimationEvent, T>;
6060
export type TransitionEventHandler<T extends EventTarget> = EventHandler<TransitionEvent, T>;
6161
export type MessageEventHandler<T extends EventTarget> = EventHandler<MessageEvent, T>;
62+
export type ToggleEventHandler<T extends EventTarget> = EventHandler<ToggleEvent, T>;
6263

6364
//
6465
// DOM Attributes
@@ -136,10 +137,13 @@ export interface DOMAttributes<T extends EventTarget> {
136137
onerror?: EventHandler | undefined | null; // also a Media Event
137138
onerrorcapture?: EventHandler | undefined | null; // also a Media Event
138139

139-
// Detail Events
140-
'on:toggle'?: EventHandler<Event, T> | undefined | null;
141-
ontoggle?: EventHandler<Event, T> | undefined | null;
142-
ontogglecapture?: EventHandler<Event, T> | undefined | null;
140+
// Popover Events
141+
'on:beforetoggle'?: ToggleEventHandler<T> | undefined | null;
142+
onbeforetoggle?: ToggleEventHandler<T> | undefined | null;
143+
onbeforetogglecapture?: ToggleEventHandler<T> | undefined | null;
144+
'on:toggle'?: ToggleEventHandler<T> | undefined | null;
145+
ontoggle?: ToggleEventHandler<T> | undefined | null;
146+
ontogglecapture?: ToggleEventHandler<T> | undefined | null;
143147

144148
// Keyboard Events
145149
'on:keydown'?: KeyboardEventHandler<T> | undefined | null;
@@ -727,6 +731,7 @@ export interface HTMLAttributes<T extends EventTarget> extends AriaAttributes, D
727731
title?: string | undefined | null;
728732
translate?: 'yes' | 'no' | '' | undefined | null;
729733
inert?: boolean | undefined | null;
734+
popover?: 'auto' | 'manual' | '' | undefined | null;
730735

731736
// Unknown
732737
radiogroup?: string | undefined | null; // <command>, <menuitem>
@@ -873,6 +878,8 @@ export interface HTMLButtonAttributes extends HTMLAttributes<HTMLButtonElement>
873878
name?: string | undefined | null;
874879
type?: 'submit' | 'reset' | 'button' | undefined | null;
875880
value?: string | string[] | number | undefined | null;
881+
popovertarget?: string | undefined | null;
882+
popovertargetaction?: 'toggle' | 'show' | 'hide' | undefined | null;
876883
}
877884

878885
export interface HTMLCanvasAttributes extends HTMLAttributes<HTMLCanvasElement> {
@@ -897,6 +904,10 @@ export interface HTMLDetailsAttributes extends HTMLAttributes<HTMLDetailsElement
897904
open?: boolean | undefined | null;
898905

899906
'bind:open'?: boolean | undefined | null;
907+
908+
'on:toggle'?: EventHandler<Event, HTMLDetailsElement> | undefined | null;
909+
ontoggle?: EventHandler<Event, HTMLDetailsElement> | undefined | null;
910+
ontogglecapture?: EventHandler<Event, HTMLDetailsElement> | undefined | null;
900911
}
901912

902913
export interface HTMLDelAttributes extends HTMLAttributes<HTMLModElement> {

0 commit comments

Comments
 (0)