wasm_react/props/
h_events.rs

1use super::{HtmlTag, H};
2use wasm_bindgen::intern;
3use web_sys::{
4  AnimationEvent, DragEvent, Event, FocusEvent, KeyboardEvent, MouseEvent,
5  PointerEvent, TransitionEvent, UiEvent, WheelEvent,
6};
7
8use crate::Callback;
9
10macro_rules! impl_event {
11  { $( $on_event:ident, $on_event_str:literal => $E:ty; )* } => {
12    $(
13      #[allow(missing_docs)]
14      pub fn $on_event(self, f: &Callback<$E>) -> Self {
15        self.attr_callback(intern($on_event_str), f)
16      }
17    )*
18  };
19}
20
21/// Provides auto-completion for DOM events on [`H`].
22impl H<HtmlTag<'_>> {
23  impl_event! {
24    on_focus, "onFocus" => FocusEvent;
25    on_focus_capture, "onFocusCapture" => FocusEvent;
26    on_blur, "onBlur" => FocusEvent;
27    on_blur_capture, "onBlurCapture" => FocusEvent;
28
29    on_change, "onChange" => Event;
30    on_change_capture, "onChangeCapture" => Event;
31    on_beforeinput, "onBeforeInput" => Event;
32    on_beforeinput_capture, "onBeforeInputCapture" => Event;
33    on_input, "onInput" => Event;
34    on_input_capture, "onInputCapture" => Event;
35    on_reset, "onReset" => Event;
36    on_reset_capture, "onResetCapture" => Event;
37    on_submit, "onSubmit" => Event;
38    on_submit_capture, "onSubmitCapture" => Event;
39    on_invalid, "onInvalid" => Event;
40    on_invalid_capture, "onInvalidCapture" => Event;
41    on_select, "onSelect" => UiEvent;
42    on_select_capture, "onSelectCapture" => UiEvent;
43
44    on_load, "onLoad" => Event;
45    on_load_capture, "onLoadCapture" => Event;
46
47    on_keydown, "onKeyDown" => KeyboardEvent;
48    on_keydown_capture, "onKeyDownCapture" => KeyboardEvent;
49    on_keypress, "onKeyPress" => KeyboardEvent;
50    on_keypress_capture, "onKeyPressCapture" => KeyboardEvent;
51    on_keyup, "onKeyUp" => KeyboardEvent;
52    on_keyup_capture, "onKeyUpCapture" => KeyboardEvent;
53
54    on_abort, "onAbort" => Event;
55    on_abort_capture, "onAbortCapture" => Event;
56    on_canplay, "onCanPlay" => Event;
57    on_canplay_capture, "onCanPlayCapture" => Event;
58    on_canplay_through, "onCanPlayThrough" => Event;
59    on_canplay_through_capture, "onCanPlayThroughCapture" => Event;
60    on_duration_change, "onDurationChange" => Event;
61    on_duration_change_capture, "onDurationChangeCapture" => Event;
62    on_emptied, "onEmptied" => Event;
63    on_emptied_capture, "onEmptiedCapture" => Event;
64    on_encrypted, "onEncrypted" => Event;
65    on_encrypted_capture, "onEncryptedCapture" => Event;
66    on_ended, "onEnded" => Event;
67    on_ended_capture, "onEndedCapture" => Event;
68    on_loadeddata, "onLoadedData" => Event;
69    on_loadeddata_capture, "onLoadedDataCapture" => Event;
70    on_loadedmetadata, "onLoadedMetadata" => Event;
71    on_loadedmetadata_capture, "onLoadedMetadataCapture" => Event;
72    on_loadstart, "onLoadStart" => Event;
73    on_loadstart_capture, "onLoadStartCapture" => Event;
74    on_pause, "onPause" => Event;
75    on_pause_capture, "onPauseCapture" => Event;
76    on_play, "onPlay" => Event;
77    on_play_capture, "onPlayCapture" => Event;
78    on_playing, "onPlaying" => Event;
79    on_playing_capture, "onPlayingCapture" => Event;
80    on_progress, "onProgress" => Event;
81    on_progress_capture, "onProgressCapture" => Event;
82    on_ratechange, "onRateChange" => Event;
83    on_ratechange_capture, "onRateChangeCapture" => Event;
84    on_seeked, "onSeeked" => Event;
85    on_seeked_capture, "onSeekedCapture" => Event;
86    on_seeking, "onSeeking" => Event;
87    on_seeking_capture, "onSeekingCapture" => Event;
88    on_stalled, "onStalled" => Event;
89    on_stalled_capture, "onStalledCapture" => Event;
90    on_suspend, "onSuspend" => Event;
91    on_suspend_capture, "onSuspendCapture" => Event;
92    on_timeupdate, "onTimeUpdate" => Event;
93    on_timeupdate_capture, "onTimeUpdateCapture" => Event;
94    on_volumechange, "onVolumeChange" => Event;
95    on_volumechange_capture, "onVolumeChangeCapture" => Event;
96    on_waiting, "onWaiting" => Event;
97    on_waiting_capture, "onWaitingCapture" => Event;
98
99    on_auxclick, "onAuxClick" => MouseEvent;
100    on_auxclick_capture, "onAuxClickCapture" => MouseEvent;
101    on_click, "onClick" => MouseEvent;
102    on_click_capture, "onClickCapture" => MouseEvent;
103    on_context_menu, "onContextMenu" => MouseEvent;
104    on_context_menu_capture, "onContextMenuCapture" => MouseEvent;
105    on_doubleclick, "onDoubleClick" => MouseEvent;
106    on_doubleclick_capture, "onDoubleClickCapture" => MouseEvent;
107    on_mousedown, "onMouseDown" => MouseEvent;
108    on_mousedown_capture, "onMouseDownCapture" => MouseEvent;
109    on_mouseenter, "onMouseEnter" => MouseEvent;
110    on_mouseleave, "onMouseLeave" => MouseEvent;
111    on_mousemove, "onMouseMove" => MouseEvent;
112    on_mousemove_capture, "onMouseMoveCapture" => MouseEvent;
113    on_mouseout, "onMouseOut" => MouseEvent;
114    on_mouseout_capture, "onMouseOutCapture" => MouseEvent;
115    on_mouseover, "onMouseOver" => MouseEvent;
116    on_mouseover_capture, "onMouseOverCapture" => MouseEvent;
117    on_mouseup, "onMouseUp" => MouseEvent;
118    on_mouseup_capture, "onMouseUpCapture" => MouseEvent;
119
120    on_pointerdown, "onPointerDown" => PointerEvent;
121    on_pointerdown_capture, "onPointerDownCapture" => PointerEvent;
122    on_pointermove, "onPointerMove" => PointerEvent;
123    on_pointermove_capture, "onPointerMoveCapture" => PointerEvent;
124    on_pointerup, "onPointerUp" => PointerEvent;
125    on_pointerup_capture, "onPointerUpCapture" => PointerEvent;
126    on_pointercancel, "onPointerCancel" => PointerEvent;
127    on_pointercancel_capture, "onPointerCancelCapture" => PointerEvent;
128    on_pointerenter, "onPointerEnter" => PointerEvent;
129    on_pointerenter_capture, "onPointerEnterCapture" => PointerEvent;
130    on_pointerleave, "onPointerLeave" => PointerEvent;
131    on_pointerleave_capture, "onPointerLeaveCapture" => PointerEvent;
132    on_pointerover, "onPointerOver" => PointerEvent;
133    on_pointerover_capture, "onPointerOverCapture" => PointerEvent;
134    on_pointerout, "onPointerOut" => PointerEvent;
135    on_pointerout_capture, "onPointerOutCapture" => PointerEvent;
136    on_gotpointer_capture, "onGotPointerCapture" => PointerEvent;
137    on_gotpointer_capture_capture, "onGotPointerCaptureCapture" => PointerEvent;
138    on_lostpointer_capture, "onLostPointerCapture" => PointerEvent;
139    on_lostpointer_capture_capture, "onLostPointerCaptureCapture" => PointerEvent;
140
141    on_drag, "onDrag" => DragEvent;
142    on_dragcapture, "onDragCapture" => DragEvent;
143    on_dragend, "onDragEnd" => DragEvent;
144    on_dragend_capture, "onDragEndCapture" => DragEvent;
145    on_dragenter, "onDragEnter" => DragEvent;
146    on_dragenter_capture, "onDragEnterCapture" => DragEvent;
147    on_dragexit, "onDragExit" => DragEvent;
148    on_dragexit_capture, "onDragExitCapture" => DragEvent;
149    on_dragleave, "onDragLeave" => DragEvent;
150    on_dragleave_capture, "onDragLeaveCapture" => DragEvent;
151    on_dragover, "onDragOver" => DragEvent;
152    on_dragover_capture, "onDragOverCapture" => DragEvent;
153    on_dragstart, "onDragStart" => DragEvent;
154    on_dragstart_capture, "onDragStartCapture" => DragEvent;
155    on_drop, "onDrop" => DragEvent;
156    on_drop_capture, "onDropCapture" => DragEvent;
157
158    on_scroll, "onScroll" => UiEvent;
159    on_scroll_capture, "onScrollCapture" => UiEvent;
160    on_wheel, "onWheel" => WheelEvent;
161    on_wheel_capture, "onWheelCapture" => WheelEvent;
162
163    on_animationstart, "onAnimationStart" => AnimationEvent;
164    on_animationstart_capture, "onAnimationStartCapture" => AnimationEvent;
165    on_animationend, "onAnimationEnd" => AnimationEvent;
166    on_animationend_capture, "onAnimationEndCapture" => AnimationEvent;
167    on_animationiteration, "onAnimationIteration" => AnimationEvent;
168    on_animationiteration_capture, "onAnimationIterationCapture" => AnimationEvent;
169    on_transition_end, "onTransitionEnd" => TransitionEvent;
170    on_transition_end_capture, "onTransitionEndCapture" => TransitionEvent;
171  }
172}