diff --git a/src/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent.re b/src/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent.re index 180c80a8..ff63d2a8 100644 --- a/src/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent.re +++ b/src/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent.re @@ -3,6 +3,4 @@ type t = Dom.beforeUnloadEvent; include Webapi__Dom__Event.Impl({ type nonrec t = t; }); [@bs.new] external make : string => t = "BeforeUnloadEvent"; -[@bs.new] external makeWithOptions : (string, Js.t({..})) => t = "BeforeUnloadEvent"; - -[@bs.get] external returnValue : t => string = ""; +[@bs.new] external makeWithOptions : (string, Js.t({..})) => t = "BeforeUnloadEvent"; \ No newline at end of file diff --git a/src/Webapi/Dom/Webapi__Dom__Event.re b/src/Webapi/Dom/Webapi__Dom__Event.re index 7f7ccae0..974b1223 100644 --- a/src/Webapi/Dom/Webapi__Dom__Event.re +++ b/src/Webapi/Dom/Webapi__Dom__Event.re @@ -5,6 +5,7 @@ module Impl = (T: {type t;}) => { [@bs.get] external currentTarget : T.t => Dom.eventTarget = ""; [@bs.get] external defaultPrevented : T.t => bool = ""; [@bs.get] external eventPhase : T.t => int /* eventPhase enum */ = ""; + [@bs.get] external returnValue : T.t => string = ""; let eventPhase: T.t => Webapi__Dom__Types.EventPhase.t = (self) => Webapi__Dom__Types.EventPhase.decode(eventPhase(self)); @@ -17,6 +18,9 @@ module Impl = (T: {type t;}) => { [@bs.send.pipe : T.t] external preventDefault : unit = ""; [@bs.send.pipe : T.t] external stopImmediatePropagation : unit = ""; [@bs.send.pipe : T.t] external stopPropagation : unit = ""; + + [@bs.set] external setReturnValue: (T.t, string) => unit = "returnValue"; + let deleteReturnValue: T.t => unit = [%raw {| event => delete event['returnValue'] |}]; }; type t = Dom.event; diff --git a/src/Webapi/Dom/Webapi__Dom__Window.re b/src/Webapi/Dom/Webapi__Dom__Window.re index a7eb609d..dcf4912b 100644 --- a/src/Webapi/Dom/Webapi__Dom__Window.re +++ b/src/Webapi/Dom/Webapi__Dom__Window.re @@ -94,6 +94,8 @@ module Impl = (T: {type t;}) => { [@bs.send.pipe : t_window] external addPopStateEventListener : ([@bs.as "popstate"] _, Dom.popStateEvent => unit) => unit = "addEventListener"; [@bs.send.pipe : t_window] external removePopStateEventListener : ([@bs.as "popstate"] _, Dom.popStateEvent => unit) => unit= "removeEventListener"; + [@bs.send.pipe : t_window] external addBeforeUnloadEventListener : ([@bs.as "beforeunload"] _, Dom.beforeUnloadEvent => unit) => unit = "addEventListener"; + [@bs.send.pipe : t_window] external removeBeforeUnloadEventListener : ([@bs.as "beforeunload"] _, Dom.beforeUnloadEvent => unit) => unit= "removeEventListener"; [@bs.set] external setOnLoad : (t_window, unit => unit) => unit = "onload"; /* use addEventListener instead? */ }; diff --git a/tests/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent__test.re b/tests/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent__test.re index d4b08d85..bba22b58 100644 --- a/tests/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent__test.re +++ b/tests/Webapi/Dom/Webapi__Dom__BeforeUnloadEvent__test.re @@ -14,10 +14,9 @@ let _ = target(event); let _ = timeStamp(event); let _ = type_(event); let _ = isTrusted(event); +let _ = returnValue(event); preventDefault(event); stopImmediatePropagation(event); stopPropagation(event); - -/* BeforeUnloadEvent */ -let _ = returnValue(event); +setReturnValue(event, "Test"); \ No newline at end of file diff --git a/tests/Webapi/Dom/Webapi__Dom__Event__test.re b/tests/Webapi/Dom/Webapi__Dom__Event__test.re index fd4832fb..20f79fee 100644 --- a/tests/Webapi/Dom/Webapi__Dom__Event__test.re +++ b/tests/Webapi/Dom/Webapi__Dom__Event__test.re @@ -14,7 +14,10 @@ let _ = target(event); let _ = timeStamp(event); let _ = type_(event); let _ = isTrusted(event); +let _ = returnValue(event); preventDefault(event); stopImmediatePropagation(event); stopPropagation(event); +setReturnValue(event, "Test"); +deleteReturnValue(event); \ No newline at end of file diff --git a/tests/Webapi/Dom/Webapi__Dom__Window__test.re b/tests/Webapi/Dom/Webapi__Dom__Window__test.re index 57d495d5..93b2c181 100644 --- a/tests/Webapi/Dom/Webapi__Dom__Window__test.re +++ b/tests/Webapi/Dom/Webapi__Dom__Window__test.re @@ -70,5 +70,7 @@ let _ = Window.resizeTo(120, 300, window); let _ = Window.scroll(0.0, 0.0, window); let _ = Window.scrollBy(10.0, (-10.0), window); let _ = Window.scrollTo(120.5, 300.3, window); +Window.addBeforeUnloadEventListener((_: BeforeUnloadEvent.t) => (), window); +Window.removeBeforeUnloadEventListener((_: BeforeUnloadEvent.t) => (), window); Window.stop(window); Window.setOnLoad(window, () => print_endline("load"));