Skip to content

Commit b6edc08

Browse files
committed
Merge branch 'master' of github.com:/reasonml/reason-react into Upgrade-bs-platform-to-902
* 'master' of github.com:/reasonml/reason-react: Add ocaml lsp editor (#699) Add all aria attributes (#697) Update Drag.dataTransfer to Js.t (#701) Add drag event API binding (#641) Added `as` property to DOM props (#603)
2 parents 72e43ad + 6306c20 commit b6edc08

File tree

3 files changed

+94
-16
lines changed

3 files changed

+94
-16
lines changed

src/ReactDOM.re

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ module Props = {
207207
[@bs.optional]
208208
itemType: string, /* uri */
209209
/* tag-specific html attributes */
210+
[@bs.optional] [@bs.as "as"]
211+
as_: string,
210212
[@bs.optional]
211213
accept: string,
212214
[@bs.optional]
@@ -443,21 +445,21 @@ module Props = {
443445
[@bs.optional]
444446
onDoubleClick: ReactEvent.Mouse.t => unit,
445447
[@bs.optional]
446-
onDrag: ReactEvent.Mouse.t => unit,
448+
onDrag: ReactEvent.Drag.t => unit,
447449
[@bs.optional]
448-
onDragEnd: ReactEvent.Mouse.t => unit,
450+
onDragEnd: ReactEvent.Drag.t => unit,
449451
[@bs.optional]
450-
onDragEnter: ReactEvent.Mouse.t => unit,
452+
onDragEnter: ReactEvent.Drag.t => unit,
451453
[@bs.optional]
452-
onDragExit: ReactEvent.Mouse.t => unit,
454+
onDragExit: ReactEvent.Drag.t => unit,
453455
[@bs.optional]
454-
onDragLeave: ReactEvent.Mouse.t => unit,
456+
onDragLeave: ReactEvent.Drag.t => unit,
455457
[@bs.optional]
456-
onDragOver: ReactEvent.Mouse.t => unit,
458+
onDragOver: ReactEvent.Drag.t => unit,
457459
[@bs.optional]
458-
onDragStart: ReactEvent.Mouse.t => unit,
460+
onDragStart: ReactEvent.Drag.t => unit,
459461
[@bs.optional]
460-
onDrop: ReactEvent.Mouse.t => unit,
462+
onDrop: ReactEvent.Drag.t => unit,
461463
[@bs.optional]
462464
onMouseDown: ReactEvent.Mouse.t => unit,
463465
[@bs.optional]
@@ -1234,6 +1236,8 @@ module Props = {
12341236
[@bs.optional]
12351237
itemType: string, /* uri */
12361238
/* tag-specific html attributes */
1239+
[@bs.optional] [@bs.as "as"]
1240+
as_: string,
12371241
[@bs.optional]
12381242
accept: string,
12391243
[@bs.optional]
@@ -1468,21 +1472,21 @@ module Props = {
14681472
[@bs.optional]
14691473
onDoubleClick: ReactEvent.Mouse.t => unit,
14701474
[@bs.optional]
1471-
onDrag: ReactEvent.Mouse.t => unit,
1475+
onDrag: ReactEvent.Drag.t => unit,
14721476
[@bs.optional]
1473-
onDragEnd: ReactEvent.Mouse.t => unit,
1477+
onDragEnd: ReactEvent.Drag.t => unit,
14741478
[@bs.optional]
1475-
onDragEnter: ReactEvent.Mouse.t => unit,
1479+
onDragEnter: ReactEvent.Drag.t => unit,
14761480
[@bs.optional]
1477-
onDragExit: ReactEvent.Mouse.t => unit,
1481+
onDragExit: ReactEvent.Drag.t => unit,
14781482
[@bs.optional]
1479-
onDragLeave: ReactEvent.Mouse.t => unit,
1483+
onDragLeave: ReactEvent.Drag.t => unit,
14801484
[@bs.optional]
1481-
onDragOver: ReactEvent.Mouse.t => unit,
1485+
onDragOver: ReactEvent.Drag.t => unit,
14821486
[@bs.optional]
1483-
onDragStart: ReactEvent.Mouse.t => unit,
1487+
onDragStart: ReactEvent.Drag.t => unit,
14841488
[@bs.optional]
1485-
onDrop: ReactEvent.Mouse.t => unit,
1489+
onDrop: ReactEvent.Drag.t => unit,
14861490
[@bs.optional]
14871491
onMouseDown: ReactEvent.Mouse.t => unit,
14881492
[@bs.optional]

src/ReactEvent.re

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,36 @@ module Mouse = {
134134
[@bs.get] external shiftKey: t => bool = "shiftKey";
135135
};
136136

137+
module Drag = {
138+
type tag;
139+
type t = synthetic(tag);
140+
include MakeEventWithType({
141+
type nonrec t = t;
142+
});
143+
144+
// MouseEvent
145+
[@bs.get] external altKey: t => bool = "altKey";
146+
[@bs.get] external button: t => int = "button";
147+
[@bs.get] external buttons: t => int = "buttons";
148+
[@bs.get] external clientX: t => int = "clientX";
149+
[@bs.get] external clientY: t => int = "clientY";
150+
[@bs.get] external ctrlKey: t => bool = "ctrlKey";
151+
[@bs.send]
152+
external getModifierState: (t, string) => bool = "getModifierState";
153+
[@bs.get] external metaKey: t => bool = "metaKey";
154+
[@bs.get] external movementX: t => int = "movementX";
155+
[@bs.get] external movementY: t => int = "movementY";
156+
[@bs.get] external pageX: t => int = "pageX";
157+
[@bs.get] external pageY: t => int = "pageY";
158+
[@bs.get] [@bs.return nullable]
159+
external relatedTarget: t => option(Js.t({..})) = "relatedTarget"; /* Should return Dom.eventTarget */
160+
[@bs.get] external screenX: t => int = "screenX";
161+
[@bs.get] external screenY: t => int = "screenY";
162+
[@bs.get] external shiftKey: t => bool = "shiftKey";
163+
164+
[@bs.get] external dataTransfer: t => Js.t({..}) = "dataTransfer"; /* Should return Dom.dataTransfer */
165+
};
166+
137167
module Pointer = {
138168
type tag;
139169
type t = synthetic(tag);

src/ReactEvent.rei

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,50 @@ module Composition: {
111111
[@bs.get] external data: t => string = "data";
112112
};
113113

114+
module Drag: {
115+
type tag;
116+
type t = synthetic(tag);
117+
118+
// SyntheticEvent
119+
[@bs.get] external bubbles: t => bool = "bubbles";
120+
[@bs.get] external cancelable: t => bool = "cancelable";
121+
[@bs.get] external currentTarget: t => Js.t({..}) = "currentTarget";
122+
[@bs.get] external defaultPrevented: t => bool = "defaultPrevented";
123+
[@bs.get] external eventPhase: t => int = "eventPhase";
124+
[@bs.get] external isTrusted: t => bool = "isTrusted";
125+
[@bs.get] external nativeEvent: t => Js.t({..}) = "nativeEvent";
126+
[@bs.send] external preventDefault: t => unit = "preventDefault";
127+
[@bs.send] external isDefaultPrevented: t => bool = "isDefaultPrevented";
128+
[@bs.send] external stopPropagation: t => unit = "stopPropagation";
129+
[@bs.send] external isPropagationStopped: t => bool = "isPropagationStopped";
130+
[@bs.get] external target: t => Js.t({..}) = "target";
131+
[@bs.get] external timeStamp: t => float = "timeStamp";
132+
[@bs.get] external type_: t => string = "type";
133+
[@bs.send] external persist: t => unit = "persist";
134+
135+
// MouseEvent
136+
[@bs.get] external altKey: t => bool = "altKey";
137+
[@bs.get] external button: t => int = "button";
138+
[@bs.get] external buttons: t => int = "buttons";
139+
[@bs.get] external clientX: t => int = "clientX";
140+
[@bs.get] external clientY: t => int = "clientY";
141+
[@bs.get] external ctrlKey: t => bool = "ctrlKey";
142+
[@bs.send]
143+
external getModifierState: (t, string) => bool = "getModifierState";
144+
[@bs.get] external metaKey: t => bool = "metaKey";
145+
[@bs.get] external movementX: t => int = "movementX";
146+
[@bs.get] external movementY: t => int = "movementY";
147+
[@bs.get] external pageX: t => int = "pageX";
148+
[@bs.get] external pageY: t => int = "pageY";
149+
[@bs.get] [@bs.return nullable]
150+
external relatedTarget: t => option(Js.t({..})) = "relatedTarget"; /* Should return Dom.eventTarget */
151+
[@bs.get] external screenX: t => int = "screenX";
152+
[@bs.get] external screenY: t => int = "screenY";
153+
[@bs.get] external shiftKey: t => bool = "shiftKey";
154+
155+
[@bs.get] external dataTransfer: t => Js.t({..}) = "dataTransfer"; /* Should return Dom.dataTransfer */
156+
};
157+
114158
module Keyboard: {
115159
type tag;
116160
type t = synthetic(tag);

0 commit comments

Comments
 (0)