summaryrefslogtreecommitdiff
path: root/editor/ui.ml
diff options
context:
space:
mode:
Diffstat (limited to 'editor/ui.ml')
-rwxr-xr-xeditor/ui.ml67
1 files changed, 63 insertions, 4 deletions
diff --git a/editor/ui.ml b/editor/ui.ml
index 001ae98..a4f5416 100755
--- a/editor/ui.ml
+++ b/editor/ui.ml
@@ -1,8 +1,67 @@
open Brr
+open Brr_note
module Js = Js_of_ocaml.Js
let popup
- : unit -> El.t
- = fun () ->
- El.div
- []
+ : title:Jstr.t -> ?form:Forms.Events.t option -> 'a option Note.E.send -> El.t
+ = fun ~title ?(form = None) send ->
+ let _ = send in
+
+ let close_btn =
+ El.span
+ ~at:At.[class' (Jstr.v "modal-close")]
+ [ El.txt' "×"] in
+
+ Evr.endless_listen
+ (El.as_target close_btn)
+ Ev.click
+ (fun _ -> send None);
+
+ let container = match form with
+ | None -> El.div
+ | Some _ -> El.form
+
+ and body = match form with
+ | None -> El.div []
+ | Some (_, content) -> content
+
+
+ and footer = match form with
+ | None -> El.txt Jstr.empty
+ | Some (values, _) ->
+
+
+ let log = Note.S.log values (fun _ -> ()) in
+
+ let btn = El.input ()
+ ~at:At.[type' (Jstr.v "submit")] in
+
+ Evr.endless_listen
+ (El.as_target btn)
+ Ev.click
+ (fun _ -> Note.Logr.force log
+ ; send (Some (Note.S.value values)));
+
+ El.div ~at:At.[class' (Jstr.v "row")]
+ [ btn ]
+ in
+
+ let el = El.div
+ ~at:At.[class' (Jstr.v "modal")]
+ [ container
+ ~at:At.[class' (Jstr.v "modal-content")]
+ [ El.div
+ ~at:At.[class' (Jstr.v "modal-header")]
+ [ close_btn
+ ; El.h3
+ [ El.txt title ]]
+ ; El.div
+ ~at:At.[class' (Jstr.v "modal-body")]
+ [ body ]
+ ; El.div
+ ~at:At.[class' (Jstr.v "modal-footer")]
+ [ footer ]]] in
+
+ El.append_children (Document.body G.document)
+ [ el ]
+ ; el