open StdLabels open Brr open Brr_note type button_actions = { edit : El.t * (unit Note.event) } let populate_menu () = match Blog.Sidebar.get () with | None -> None | Some element -> let () = Blog.Sidebar.clean element in let uri = Brr.Window.location Brr.G.window in let edit_button = El.button ~at:At.[ class' (Jstr.v "action-button") ] [ El.i [] ~at:At.[ class' (Jstr.v "fa") ; class' (Jstr.v "fa-2x") ; class' (Jstr.v "fa-pen") ] ] in let edit_event = Evr.on_el Ev.click Evr.unit edit_button in let pages = List.map (Storage.get_ids ()) ~f:(fun name -> let target = Jstr.( (Brr.Uri.path uri) + (Jstr.v "?page=") + name) in El.li [ El.a ~at:[At.href target] [ El.txt name ] ] ) in let childs = [ El.button ~at:At.[class' (Jstr.v "action-button")] [ El.i [] ~at:At.[ class' (Jstr.v "fa") ; class' (Jstr.v "fa-2x") ; class' (Jstr.v "fa-home") ] ] ; edit_button ; El.button ~at:At.[class' (Jstr.v "action-button")] [ El.i [] ~at:At.[ class' (Jstr.v "fa") ; class' (Jstr.v "fa-2x") ; class' (Jstr.v "fa-plus") ] ] ; El.button ~at:At.[class' (Jstr.v "action-button")] [ El.i [] ~at:At.[ class' (Jstr.v "fa") ; class' (Jstr.v "fa-2x") ; class' (Jstr.v "fa-download") ] ] ; El.button ~at:At.[class' (Jstr.v "action-button")] [ El.i [] ~at:At.[ class' (Jstr.v "fa") ; class' (Jstr.v "fa-2x") ; class' (Jstr.v "fa-trash") ] ] ; El.button ~at:At.[class' (Jstr.v "action-button")] [ El.i [] ~at:At.[ class' (Jstr.v "fa") ; class' (Jstr.v "fa-2x") ; class' (Jstr.v "fa-cog") ] ] ; El.hr () ; El.ul pages ] in let () = El.append_children element childs in Some { edit = (edit_button, edit_event) }