From fe2cced55e1b44dbae57e55fe0f459c85e7369cb Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Mon, 7 Feb 2022 16:21:26 +0100 Subject: Application unification --- editor/forms/ui.ml | 58 +++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 27 deletions(-) (limited to 'editor/forms/ui.ml') diff --git a/editor/forms/ui.ml b/editor/forms/ui.ml index d8a259a..53039c4 100755 --- a/editor/forms/ui.ml +++ b/editor/forms/ui.ml @@ -3,8 +3,8 @@ open Brr_note module Js = Js_of_ocaml.Js let popup - : title:Jstr.t -> ?form:Events.t option -> Events.event option Note.E.send -> El.t - = fun ~title ?(form = None) send -> + : ?form:('a Note.signal * El.t) option -> title:Jstr.t -> 'a option Note.event + = fun ?(form = None) ~title -> (* Ensure we keep a track for the signal event. @@ -17,15 +17,10 @@ let popup let close_btn = El.span ~at:At.[class' (Jstr.v "modal-close")] - [ El.txt' "×"] in + [ El.txt' "×"] - Evr.endless_listen - (El.as_target close_btn) - Ev.click - (fun _ -> - Option.iter Note.Logr.destroy log_opt; - send None - ); + and submit_btn = El.input () + ~at:At.[type' (Jstr.v "submit")] in let container = match form with | None -> El.div @@ -37,23 +32,12 @@ let popup and footer = match form with | None -> El.txt Jstr.empty - | Some (values, _) -> + | Some _ -> - let btn = El.input () - ~at:At.[type' (Jstr.v "submit")] in - - Evr.endless_listen - (El.as_target btn) - Ev.click - (fun _ -> - Option.iter Note.Logr.force log_opt; - let form_content = (Note.S.value values) in - Option.iter Note.Logr.destroy log_opt; - send (Some form_content)); - - El.div [ btn ] + El.div [ submit_btn ] ~at:At.[class' (Jstr.v "row")] in + (* HTML Element creation *) let el = El.div ~at:At.[class' (Jstr.v "modal")] [ container @@ -70,6 +54,26 @@ let popup ~at:At.[class' (Jstr.v "modal-footer")] [ footer ]]] in - El.append_children (Document.body G.document) - [ el ] - ; el + let () = El.append_children (Document.body G.document) + [ el ] in + + (* Event handler *) + let close_event = Evr.on_el + Ev.click + (fun _ -> + El.remove el; + Option.iter Note.Logr.destroy log_opt; + None) + close_btn + + and submit_event = Evr.on_el + Ev.click + (fun _ -> + El.remove el; + Option.iter Note.Logr.destroy log_opt; + Option.map (fun v -> Note.S.value (fst v)) form) + submit_btn in + + Note.E.select + [ close_event + ; submit_event ] -- cgit v1.2.3