diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2021-05-14 14:02:53 +0200 |
---|---|---|
committer | Sébastien Dailly <sebastien@dailly.me> | 2022-02-07 16:43:33 +0100 |
commit | 97f3ac8054de22b94e4ae169dae33ed5b1b41a52 (patch) | |
tree | 845aa35a85b5e670c249ccf0ed4e1087328e0c35 /editor/forms/add_page.ml | |
parent | bf94695abeda0d7bb296ae4cd0f9a53782587d4a (diff) |
Update popin events in editor
Diffstat (limited to 'editor/forms/add_page.ml')
-rwxr-xr-x | editor/forms/add_page.ml | 53 |
1 files changed, 31 insertions, 22 deletions
diff --git a/editor/forms/add_page.ml b/editor/forms/add_page.ml index ac45824..9786f47 100755 --- a/editor/forms/add_page.ml +++ b/editor/forms/add_page.ml @@ -3,10 +3,29 @@ open Brr_note open Note module Js = Js_of_ocaml.Js -type t = { title : Jstr.t } -type Events.kind += - | AddPage of t [@@unboxed] +module Handler = struct + + type t = { title : Jstr.t } + + let key_of_title + : Jstr.t -> Jstr.t + = fun title -> + title + + let on_close + : t -> State.t -> State.t + = fun {title} state -> + let page_id = key_of_title title in + let new_date = (new%js Js.date_now)##getTime in + let content_obj = object%js + val content = Js.null + val title = Js.some title + val date = Js.some new_date + end in + State.load_page (Some page_id) state content_obj + +end let create : unit -> Events.t @@ -17,13 +36,19 @@ let create ~at:At.[type' (Jstr.v "text")] in + let init = + Events.Event + ( Handler.{ title = Jstr.empty } + , (module Handler : Events.Handler with type t = Handler.t)) in + let state = - S.hold (AddPage { title = Jstr.empty }) + S.hold init @@ Evr.on_el (Ev.input) (fun _ -> - AddPage { title = El.prop El.Prop.value input } - ) + Events.Event + ( Handler.{ title = El.prop El.Prop.value input } + , (module Handler : Events.Handler with type t = Handler.t)) ) input in ( state @@ -38,19 +63,3 @@ let create ] ] ) -let key_of_title - : Jstr.t -> Jstr.t - = fun title -> - title - -let on_close - : t -> State.t -> State.t - = fun {title} state -> - let page_id = key_of_title title in - let new_date = (new%js Js.date_now)##getTime in - let content_obj = object%js - val content = Js.null - val title = Js.some title - val date = Js.some new_date - end in - State.load_page (Some page_id) state content_obj |