@tempots/dom 37.3.0 → 37.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tempots/dom",
3
- "version": "37.3.0",
3
+ "version": "37.4.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "./index.cjs",
@@ -1,6 +1,6 @@
1
1
  import { Prop } from '@tempots/core';
2
2
  import { Renderable } from '../types/domain';
3
- import { on } from './on';
3
+ import { HTMLEvents } from '../types/html-events';
4
4
  /**
5
5
  * Binds a `Date` property to an input element. The binding is two-way.
6
6
  * Changes to the input element will update the property but will only be
@@ -10,7 +10,7 @@ import { on } from './on';
10
10
  * @returns A Renderable.
11
11
  * @public
12
12
  */
13
- export declare const BindDate: (prop: Prop<Date>, handler?: keyof typeof on) => Renderable;
13
+ export declare const BindDate: (prop: Prop<Date>, handler?: keyof HTMLEvents) => Renderable;
14
14
  /**
15
15
  * Binds a `Date` property to an input element. The binding is two-way.
16
16
  * @param prop - The `Date` property to bind.
@@ -18,7 +18,7 @@ export declare const BindDate: (prop: Prop<Date>, handler?: keyof typeof on) =>
18
18
  * @returns A Renderable.
19
19
  * @public
20
20
  */
21
- export declare const BindDateTime: (prop: Prop<Date>, handler?: keyof typeof on) => Renderable;
21
+ export declare const BindDateTime: (prop: Prop<Date>, handler?: keyof HTMLEvents) => Renderable;
22
22
  /**
23
23
  * Binds a `number` property to an input element. The binding is two-way.
24
24
  * @param prop - The `number` property to bind.
@@ -26,7 +26,7 @@ export declare const BindDateTime: (prop: Prop<Date>, handler?: keyof typeof on)
26
26
  * @returns A Renderable.
27
27
  * @public
28
28
  */
29
- export declare const BindNumber: (prop: Prop<number>, handler?: keyof typeof on) => Renderable;
29
+ export declare const BindNumber: (prop: Prop<number>, handler?: keyof HTMLEvents) => Renderable;
30
30
  /**
31
31
  * Binds a `string` property to an input element. The binding is two-way.
32
32
  * @param prop - The `string` property to bind.
@@ -34,7 +34,7 @@ export declare const BindNumber: (prop: Prop<number>, handler?: keyof typeof on)
34
34
  * @returns A Renderable.
35
35
  * @public
36
36
  */
37
- export declare const BindText: (prop: Prop<string>, handler?: keyof typeof on) => Renderable;
37
+ export declare const BindText: (prop: Prop<string>, handler?: keyof HTMLEvents) => Renderable;
38
38
  /**
39
39
  * Binds a `boolean` property to the checked value of an input element. The binding is two-way.
40
40
  * @param prop - The `boolean` property to bind.
@@ -1,17 +1,24 @@
1
1
  import { Renderable } from '../types/domain';
2
- import { DOMContext } from '../dom/dom-context';
2
+ import { HTMLEvents } from '../types/html-events';
3
+ import { DOMContext, HandlerOptions } from '../dom/dom-context';
3
4
  /**
4
5
  * Attaches an event handler to the 'click' event that triggers when a checkbox is checked or unchecked.
5
6
  * @param fn - The callback function to be executed when the checkbox is clicked.
6
7
  * @alpha
7
8
  */
8
9
  export declare const OnChecked: (fn: (event: boolean, ctx: DOMContext) => void) => Renderable;
10
+ type EventHandlerMap = {
11
+ [EN in keyof HTMLEvents]: (handler: (event: HTMLEvents[EN], ctx: DOMContext) => void, options?: HandlerOptions) => Renderable;
12
+ };
9
13
  /**
10
14
  * Provides type-safe event handlers for all HTML events.
11
15
  *
12
16
  * The `on` object is a proxy that provides access to all standard HTML events with proper
13
17
  * TypeScript typing. Each event handler receives the native event object and the DOM context.
14
18
  *
19
+ * Use `on.document` to attach listeners to `document` and `on.window` to attach listeners
20
+ * to `window`. These listeners are automatically removed when the component is disposed.
21
+ *
15
22
  * @example
16
23
  * ```typescript
17
24
  * // Basic click handler
@@ -60,131 +67,43 @@ export declare const OnChecked: (fn: (event: boolean, ctx: DOMContext) => void)
60
67
  * )
61
68
  * ```
62
69
  *
70
+ * @example
71
+ * ```typescript
72
+ * // Global keyboard shortcut scoped to a component's lifetime
73
+ * html.div(
74
+ * on.document.keydown((event) => {
75
+ * if (event.key === 'Escape') {
76
+ * console.log('Escape pressed anywhere!')
77
+ * }
78
+ * }),
79
+ * 'Press Escape anywhere'
80
+ * )
81
+ * ```
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * // Window resize listener scoped to a component's lifetime
86
+ * html.div(
87
+ * on.window.resize(() => {
88
+ * console.log('Window resized!')
89
+ * }),
90
+ * 'Resize the window'
91
+ * )
92
+ * ```
93
+ *
63
94
  * @public
64
95
  */
65
- export declare const on: {
66
- abort: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
67
- afterprint: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
68
- animationcancel: (handler: (event: AnimationEvent, ctx: DOMContext) => void) => Renderable;
69
- animationend: (handler: (event: AnimationEvent, ctx: DOMContext) => void) => Renderable;
70
- animationiteration: (handler: (event: AnimationEvent, ctx: DOMContext) => void) => Renderable;
71
- animationstart: (handler: (event: AnimationEvent, ctx: DOMContext) => void) => Renderable;
72
- auxclick: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
73
- beforeinput: (handler: (event: InputEvent, ctx: DOMContext) => void) => Renderable;
74
- beforeprint: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
75
- beforeunload: (handler: (event: BeforeUnloadEvent, ctx: DOMContext) => void) => Renderable;
76
- blur: (handler: (event: FocusEvent, ctx: DOMContext) => void) => Renderable;
77
- cancel: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
78
- canplay: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
79
- canplaythrough: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
80
- change: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
81
- click: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
82
- close: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
83
- compositionend: (handler: (event: CompositionEvent, ctx: DOMContext) => void) => Renderable;
84
- compositionstart: (handler: (event: CompositionEvent, ctx: DOMContext) => void) => Renderable;
85
- compositionupdate: (handler: (event: CompositionEvent, ctx: DOMContext) => void) => Renderable;
86
- contextmenu: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
87
- copy: (handler: (event: ClipboardEvent, ctx: DOMContext) => void) => Renderable;
88
- cuechange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
89
- cut: (handler: (event: ClipboardEvent, ctx: DOMContext) => void) => Renderable;
90
- dblclick: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
91
- drag: (handler: (event: DragEvent, ctx: DOMContext) => void) => Renderable;
92
- dragend: (handler: (event: DragEvent, ctx: DOMContext) => void) => Renderable;
93
- dragenter: (handler: (event: DragEvent, ctx: DOMContext) => void) => Renderable;
94
- dragexit: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
95
- dragleave: (handler: (event: DragEvent, ctx: DOMContext) => void) => Renderable;
96
- dragover: (handler: (event: DragEvent, ctx: DOMContext) => void) => Renderable;
97
- dragstart: (handler: (event: DragEvent, ctx: DOMContext) => void) => Renderable;
98
- drop: (handler: (event: DragEvent, ctx: DOMContext) => void) => Renderable;
99
- durationchange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
100
- emptied: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
101
- ended: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
102
- error: (handler: (event: ErrorEvent, ctx: DOMContext) => void) => Renderable;
103
- focus: (handler: (event: FocusEvent, ctx: DOMContext) => void) => Renderable;
104
- focusin: (handler: (event: FocusEvent, ctx: DOMContext) => void) => Renderable;
105
- focusout: (handler: (event: FocusEvent, ctx: DOMContext) => void) => Renderable;
106
- formdata: (handler: (event: FormDataEvent, ctx: DOMContext) => void) => Renderable;
107
- fullscreenchange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
108
- fullscreenerror: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
109
- gotpointercapture: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
110
- hashchange: (handler: (event: HashChangeEvent, ctx: DOMContext) => void) => Renderable;
111
- input: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
112
- invalid: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
113
- keydown: (handler: (event: KeyboardEvent, ctx: DOMContext) => void) => Renderable;
114
- keypress: (handler: (event: KeyboardEvent, ctx: DOMContext) => void) => Renderable;
115
- keyup: (handler: (event: KeyboardEvent, ctx: DOMContext) => void) => Renderable;
116
- languagechange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
117
- load: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
118
- loadeddata: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
119
- loadedmetadata: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
120
- loadend: (handler: (event: ProgressEvent<EventTarget>, ctx: DOMContext) => void) => Renderable;
121
- loadstart: (handler: (event: ProgressEvent<EventTarget>, ctx: DOMContext) => void) => Renderable;
122
- lostpointercapture: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
123
- message: (handler: (event: MessageEvent<any>, ctx: DOMContext) => void) => Renderable;
124
- messageerror: (handler: (event: MessageEvent<any>, ctx: DOMContext) => void) => Renderable;
125
- mousedown: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
126
- mouseenter: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
127
- mouseleave: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
128
- mousemove: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
129
- mouseout: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
130
- mouseover: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
131
- mouseup: (handler: (event: MouseEvent, ctx: DOMContext) => void) => Renderable;
132
- offline: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
133
- online: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
134
- orientationchange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
135
- pagehide: (handler: (event: PageTransitionEvent, ctx: DOMContext) => void) => Renderable;
136
- pageshow: (handler: (event: PageTransitionEvent, ctx: DOMContext) => void) => Renderable;
137
- paste: (handler: (event: ClipboardEvent, ctx: DOMContext) => void) => Renderable;
138
- pause: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
139
- play: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
140
- playing: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
141
- pointercancel: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
142
- pointerdown: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
143
- pointerenter: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
144
- pointerleave: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
145
- pointerlockchange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
146
- pointerlockerror: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
147
- pointermove: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
148
- pointerout: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
149
- pointerover: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
150
- pointerrawupdate: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
151
- pointerup: (handler: (event: PointerEvent, ctx: DOMContext) => void) => Renderable;
152
- popstate: (handler: (event: PopStateEvent, ctx: DOMContext) => void) => Renderable;
153
- progress: (handler: (event: ProgressEvent<EventTarget>, ctx: DOMContext) => void) => Renderable;
154
- ratechange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
155
- readystatechange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
156
- rejectionhandled: (handler: (event: PromiseRejectionEvent, ctx: DOMContext) => void) => Renderable;
157
- reset: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
158
- resize: (handler: (event: UIEvent, ctx: DOMContext) => void) => Renderable;
159
- scroll: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
160
- scrollend: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
161
- securitypolicyviolation: (handler: (event: SecurityPolicyViolationEvent, ctx: DOMContext) => void) => Renderable;
162
- seeked: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
163
- seeking: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
164
- select: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
165
- selectionchange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
166
- selectstart: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
167
- slotchange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
168
- stalled: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
169
- storage: (handler: (event: StorageEvent, ctx: DOMContext) => void) => Renderable;
170
- submit: (handler: (event: SubmitEvent, ctx: DOMContext) => void) => Renderable;
171
- suspend: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
172
- timeupdate: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
173
- toggle: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
174
- touchcancel: (handler: (event: TouchEvent, ctx: DOMContext) => void) => Renderable;
175
- touchend: (handler: (event: TouchEvent, ctx: DOMContext) => void) => Renderable;
176
- touchmove: (handler: (event: TouchEvent, ctx: DOMContext) => void) => Renderable;
177
- touchstart: (handler: (event: TouchEvent, ctx: DOMContext) => void) => Renderable;
178
- transitioncancel: (handler: (event: TransitionEvent, ctx: DOMContext) => void) => Renderable;
179
- transitionend: (handler: (event: TransitionEvent, ctx: DOMContext) => void) => Renderable;
180
- transitionrun: (handler: (event: TransitionEvent, ctx: DOMContext) => void) => Renderable;
181
- transitionstart: (handler: (event: TransitionEvent, ctx: DOMContext) => void) => Renderable;
182
- unhandledrejection: (handler: (event: PromiseRejectionEvent, ctx: DOMContext) => void) => Renderable;
183
- unload: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
184
- visibilitychange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
185
- volumechange: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
186
- waiting: (handler: (event: Event, ctx: DOMContext) => void) => Renderable;
187
- wheel: (handler: (event: WheelEvent, ctx: DOMContext) => void) => Renderable;
96
+ export declare const on: EventHandlerMap & {
97
+ /**
98
+ * Attaches event listeners to `document`. The listener is automatically
99
+ * removed when the component is disposed.
100
+ */
101
+ document: EventHandlerMap;
102
+ /**
103
+ * Attaches event listeners to `window`. The listener is automatically
104
+ * removed when the component is disposed.
105
+ */
106
+ window: EventHandlerMap;
188
107
  };
189
108
  /**
190
109
  * Options for event handlers.
@@ -377,3 +296,4 @@ export declare const emitValueAsNullableDateTime: (fn: (date: Date | null, event
377
296
  * @public
378
297
  */
379
298
  export declare const emitChecked: (fn: (checked: boolean, event: Event) => void, options?: EmitOptions) => (event: Event) => void;
299
+ export {};