From e8f209640353b26489cfa4fb9f25d248873e2675 Mon Sep 17 00:00:00 2001 From: Kelly McLaughlin Date: Wed, 6 May 2009 00:46:55 +0800 Subject: [PATCH] An expandable menu element for nitrogen. Signed-off-by: Andreas Stenius --- element_menu.erl | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 element_menu.erl diff --git a/element_menu.erl b/element_menu.erl new file mode 100644 index 0000000..1a2aeb4 --- /dev/null +++ b/element_menu.erl @@ -0,0 +1,27 @@ +-module (element_menu). +-compile(export_all). + +-include_lib("lib/nitrogen/include/wf.inc"). +-record(menu, {?ELEMENT_BASE(element_menu), text="", body=[]}). + +% desc: Provides a collapsable menu. The menu options are specified +% as listitem elements in the body. + +reflect() -> record_info(fields, menu). + +render(ControlID, Record) -> + Script = wf:f("$('#~s ul').hide();~n$('#~s li a').click(~nfunction() {~n$(this).next().slideToggle('normal');~n}~n);", [ControlID, ControlID]), + wf:wire(Script), + Title = wf:render(Record#menu.text), + Content = wf:render(Record#menu.body), + wf_tags:emit_tag(ul, + wf_tags:emit_tag(li, + Title++wf_tags:emit_tag(ul, Content, []), + []), + [ + {id, ControlID}, + {class, Record#menu.class}, + {style, Record#menu.style} + ] + ). +