]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
types(jsx): Allow modifiers to jSX event
authorCarlos Rodrigues <carlos@hypermob.co.uk>
Fri, 3 Nov 2023 15:41:36 +0000 (15:41 +0000)
committerCarlos Rodrigues <carlos@hypermob.co.uk>
Fri, 3 Nov 2023 15:41:36 +0000 (15:41 +0000)
packages/dts-test/tsx.test-d.tsx
packages/runtime-dom/src/jsx.ts

index 04915a9673f4f95477171831b9cd2a41f76b9ca8..56f8d2f73bbbeaa80808b2d51c6c74cb3131cc67 100644 (file)
@@ -30,6 +30,18 @@ expectType<JSX.Element>(
       // infer correct event type
       expectType<EventTarget | null>(e.target)
     }}
+    onInputCapture={e => {
+      expectType<EventTarget | null>(e.target)
+    }}
+    onInputOnce={e => {
+      expectType<EventTarget | null>(e.target)
+    }}
+    onInputOnceCapture={e => {
+      expectType<EventTarget | null>(e.target)
+    }}
+    onInputCaptureOnce={e => {
+      expectType<EventTarget | null>(e.target)
+    }}
   />
 )
 
index 7769418653edd731ded61d972495abfba6892250..3de06672382d98a4074ba8f0b2e76ce43002d055 100644 (file)
@@ -1235,7 +1235,7 @@ export interface IntrinsicElementAttributes {
   view: SVGAttributes
 }
 
-export interface Events {
+export interface BaseEvents {
   // clipboard events
   onCopy: ClipboardEvent
   onCut: ClipboardEvent
@@ -1351,6 +1351,12 @@ export interface Events {
   onTransitionstart: TransitionEvent
 }
 
+type EventModifiers = 'Capture' | 'Once' | `OnceCapture` | 'CaptureOnce'
+
+type Events = BaseEvents & {
+  [K in keyof BaseEvents as `${K & string}${EventModifiers}`]: BaseEvents[K]
+}
+
 type EventHandlers<E> = {
   [K in keyof E]?: E[K] extends (...args: any) => any
     ? E[K]