Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit 6b0b54e

Browse files
committed
Support adding beforeunload event listener
tests and comment fix comment
1 parent b3bbe0e commit 6b0b54e

File tree

4 files changed

+10
-0
lines changed

4 files changed

+10
-0
lines changed

Diff for: src/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent.re

+5
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ include Webapi__Dom__Event.Impl({ type nonrec t = t; });
66
[@bs.new] external makeWithOptions : (string, Js.t({..})) => t = "BeforeUnloadEvent";
77

88
[@bs.get] external returnValue : t => string = "";
9+
/**
10+
* returnValue cannot be unset because BS cannot (afaik) bind `delete e['returnValue'];`
11+
* Setting the value to undefined does not cause expected behavior.
12+
*/
13+
[@bs.set] external setReturnValue: (t, string) => unit = "returnValue";

Diff for: src/Webapi/Dom/Webapi__Dom__Window.re

+2
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ module Impl = (T: {type t;}) => {
9494

9595
[@bs.send.pipe : t_window] external addPopStateEventListener : ([@bs.as "popstate"] _, Dom.popStateEvent => unit) => unit = "addEventListener";
9696
[@bs.send.pipe : t_window] external removePopStateEventListener : ([@bs.as "popstate"] _, Dom.popStateEvent => unit) => unit= "removeEventListener";
97+
[@bs.send.pipe : t_window] external addBeforeUnloadEventListener : ([@bs.as "beforeunload"] _, Dom.beforeUnloadEvent => unit) => unit = "addEventListener";
98+
[@bs.send.pipe : t_window] external removeBeforeUnloadEventListener : ([@bs.as "beforeunload"] _, Dom.beforeUnloadEvent => unit) => unit= "removeEventListener";
9799

98100
[@bs.set] external setOnLoad : (t_window, unit => unit) => unit = "onload"; /* use addEventListener instead? */
99101
};

Diff for: tests/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent__test.re

+1
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ stopPropagation(event);
2121

2222
/* BeforeUnloadEvent */
2323
let _ = returnValue(event);
24+
setReturnValue(event, "Test");

Diff for: tests/Webapi/Dom/Webapi__Dom__Window__test.re

+2
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,7 @@ let _ = Window.resizeTo(120, 300, window);
7070
let _ = Window.scroll(0.0, 0.0, window);
7171
let _ = Window.scrollBy(10.0, (-10.0), window);
7272
let _ = Window.scrollTo(120.5, 300.3, window);
73+
Window.addBeforeUnloadEventListener((_: BeforeUnloadEvent.t) => (), window);
74+
Window.removeBeforeUnloadEventListener((_: BeforeUnloadEvent.t) => (), window);
7375
Window.stop(window);
7476
Window.setOnLoad(window, () => print_endline("load"));

0 commit comments

Comments
 (0)