12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- -module(element_select).
- %%-author('Maxim Sokhatsky').
- -include_lib("nitro/include/nitro.hrl").
- -compile([export_all, nowarn_export_all]).
- render_element(Record = #select{}) ->
- ID = case Record#select.id of
- undefined -> nitro:temp_id();
- I -> I
- end,
- case Record#select.postback of
- undefined -> skip;
- Postback ->
- nitro:wire( #event{type = change,
- target = ID,
- postback = Postback,
- source = [ nitro:to_atom(ID) ],
- delegate = Record#select.delegate} )
- end,
- Props = [
- {<<"id">>, ID},
- {<<"class">>, Record#select.class},
- {<<"style">>, Record#select.style},
- {<<"name">>, Record#select.name},
- {<<"onchange">>, Record#select.onchange},
- {<<"title">>, Record#select.title},
- {<<"required">>,
- case Record#select.required of
- true -> <<"required">>;
- _-> undefined
- end},
-
- {<<"disabled">>,
- case Record#select.disabled of
- true -> <<"disabled">>;
- _-> undefined
- end},
-
- {<<"multiple">>,
- case Record#select.multiple of
- true -> <<"multiple">>;
- _-> undefined
- end} | Record#select.data_fields
- ],
- wf_tags:emit_tag(<<"select">>, nitro:render(Record#select.body), Props);
- render_element(Group = #optgroup{}) ->
- wf_tags:emit_tag(<<"optgroup">>, nitro:render(Group#optgroup.body), [
- {<<"disabled">>,
- case Group#optgroup.disabled of
- true -> <<"disabled">>;
- _-> undefined
- end},
-
- {<<"label">>, Group#optgroup.label}
- ]);
- render_element(O = #option{}) ->
- wf_tags:emit_tag(<<"option">>, nitro:render(O#option.body), [
- {<<"id">>, O#option.id},
- {<<"disabled">>,
- case O#option.disabled of
- true -> <<"disabled">>;
- _-> undefined
- end},
-
- {<<"label">>, O#option.label},
- {<<"title">>, O#option.title},
- {<<"selected">>,
- case O#option.selected of
- true -> <<"selected">>;
- _-> undefined
- end},
-
- {<<"value">>, O#option.value} | O#option.data_fields
- ]).
|