-module(coldstrap). -include_lib("nitrogen_core/include/wf.hrl"). -include("records.hrl"). -export([ modal/1, modal/2, modal/3, modal/4, confirm/1, confirm/2, confirm/3, confirm/4, close_modal/0, format_close_button/1 ]). confirm(Body) -> confirm(Body, "OK"). confirm(Body, CloseText) -> confirm(Body, [], CloseText). confirm(Body, Buttons, CloseText) -> confirm("", Body, Buttons, CloseText). confirm(Title, Body, Buttons, CloseText) -> Footer = [ format_buttons(Buttons), format_close_button(CloseText) ], modal(Title, Body, Footer, []). format_buttons(Buttons) -> [format_button(B) || B <- Buttons]. format_button({Label, Postback}) -> #btn{type=primary, text=Label, postback=Postback}; format_button({Label, Delegate, Postback}) -> #btn{type=primary, text=Label, delegate=Delegate, postback=Postback}; format_button(Btn) -> Btn. format_close_button(undefined) -> ""; format_close_button(<<>>) -> ""; format_close_button("") -> ""; format_close_button(Label) -> #btn{type=default, text=Label, data_fields=[{dismiss, modal}]}. close_modal() -> wf:wire("$('#coldstrap_modal').modal('hide')"). modal(Body) -> modal("", Body). modal(Title, Body) -> modal(Title, Body, ""). modal(Title, Body, Footer) -> modal(Title, Body, Footer, []). modal(Title, Body, Footer, Options) -> Modalid = "coldstrap_modal", %Modalid = wf:to_binary(wf:temp_id()), ModalBody = modal_body(Modalid, Title, Body, Footer, Options), wf:insert_bottom("body", ModalBody), JsonOpt = wf:json_encode(Options), Sel = ["'#",Modalid,"'"], wf:wire(["$(",Sel,").modal(",JsonOpt,").on('hidden.bs.modal', function(e) { $(",Sel,").remove() })"]). modal_body(Modalid, Title0, Body0, Footer0, Options) -> HasXButton = proplists:get_value(has_x_button, Options, false), XButton = format_x_button(HasXButton), Title = modal_header(Title0), Footer = modal_footer(Footer0), [<< "