blob: 9786f4756ba8622b17dac1de6eb4486e2a111fa7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
open Brr
open Brr_note
open Note
module Js = Js_of_ocaml.Js
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
= fun () ->
(* The element which contains the information *)
let input = El.input ()
~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 init
@@ Evr.on_el
(Ev.input)
(fun _ ->
Events.Event
( Handler.{ title = El.prop El.Prop.value input }
, (module Handler : Events.Handler with type t = Handler.t)) )
input in
( state
, El.div
[ El.div ~at:At.[class' (Jstr.v "row")]
[ El.div ~at:At.[class' (Jstr.v "col-25")]
[ El.label [ El.txt' "Titre"]
~at:[At.for' (Jstr.v "title")]
]
; El.div ~at:At.[class' (Jstr.v "col-75")]
[ input ]
]
] )
|