Current section

Files

Jump to
nitrogen_core src handlers modal modal_handler.erl
Raw

src/handlers/modal/modal_handler.erl

% vim: sw=4 ts=4 et ft=erlang
% Nitrogen Web Framework for Erlang
% Copyright (c) 2025 Jesse Gumm
% See MIT-LICENSE for licensing information.
-module(modal_handler).
-include("wf.hrl").
-export ([
process_open_action/1,
render_open_action/1,
process_close_action/1,
render_close_action/1,
open/1,
close/1
]).
%% using "process" instead of "render" since "render" implies the return value is something that be pumped through `wf:wire`
-callback init( handler_config(),
handler_state()) -> {ok, handler_state()}.
-callback finish( handler_config(),
handler_state()) -> {ok, handler_state()}.
-callback process_open_action(#modal{},
handler_config(),
handler_state()) -> {ok, id(), script()}.
-callback process_close_action(#close_modal{},
handler_config(),
handler_state()) -> {ok, id(), script()}.
-spec process_open_action(#modal{}) -> {ok, id(), script()}.
process_open_action(Rec = #modal{}) ->
wf_handler:call_readonly(modal_handler, process_open_action, [Rec]).
-spec process_close_action(#close_modal{}) -> {ok, id(), script()}.
process_close_action(Rec = #close_modal{}) ->
wf_handler:call_readonly(modal_handler, process_close_action, [Rec]).
-spec render_open_action(#modal{}) -> script().
render_open_action(Rec = #modal{}) ->
{ok, _ID, Action} = process_open_action(Rec),
Action.
-spec open(#modal{}) -> id().
open(Rec = #modal{}) ->
{ok, ID, Action} = process_open_action(Rec),
wf:wire(Action),
ID.
-spec render_close_action(#close_modal{}) -> script().
render_close_action(Rec = #close_modal{}) ->
{ok, _ID, Action} = process_close_action(Rec),
Action.
-spec close(#close_modal{}) -> id().
close(Rec = #close_modal{}) ->
{ok, ID, Action} = process_close_action(Rec),
wf:wire(Action),
ID.
%open(Body) ->
%
%open(Body, CloseButton) ->
%
%