#---- {# == Form Helpers == Macros to create form input, select, radio, checkbox, textarea compatible to BS3 ::Input: @value {{ f.tag('input', 'name', value='John') }} -> {{ f.tag('input', 'fileSelect', type='file') }} -> ::Hidden: @value {{ f.tag('hidden', 'name', value='John') }} -> ::Textarea: @value {{ f.tag('textarea', 'feedback', value='Irving') }} -> :: Button: @type, @value {{ f.tag('button', 'my_button', type='submit', value='Save')}} -> {{ f.tag('button', 'submit', type='submit')}} -> :: Checkbox: @options=[[k, v], [k, v]], @checked=[] {{ f.tag('checkbox', 'test', options=[[1,'Male'], [2,'Female']], checked=[1]) }}
:: Radio: @options=[[k, v], [k, v]], @checked=[] {{ f.tag('radio', 'test', options=[[1,'Male'], [2,'Female']], checked=[1]) }}
:: Select: @options=[[k, v], [k, v]], @selected {{ f.tag('select', 'gender', options=[['m', 'Male'], ['f', 'Female']], selected='f') }} :: Select-group: @options=[[k, v], [k, v]], @selected {{ f.tag('select-group', 'gender', options={"List of genders": [['m', 'Male'], ['f', 'Female']], ...}, selected='f') }} #} {% macro tag(_tag, name) -%} {% set _class = kwargs.pop('class', 'form-control') %} {# input or hidden field #} {%- if _tag == "input" or _tag == "hidden" -%} {%- set _type = kwargs.pop('type', 'text') %} {# Hidden field #} {% if _tag == "hidden" %} {% set _type = "hidden" %} {% endif %} {# textarea: @value #} {% elif _tag == "textarea" -%} {% set value = kwargs.pop('value', '') %} {# button: @text=str, @type=str #} {% elif _tag == "button" -%} {% set _type = kwargs.pop('type', 'button') %} {% set value = kwargs.pop('text', '') %} {# radio|checkbox: @checked=[], @options=[[k, v], [k,v]], @display_inline=bool #} {% elif _tag in ['radio', 'checkbox'] -%} {% set checked = kwargs.pop('checked', []) %} {% set options = kwargs.pop('options', []) %} {% set display_inline = kwargs.pop('display_inline', False) %} {% for item in options %}
{% endfor %} {# select: @options=[[k, v], [k, v]], @selected=str #} {%- elif _tag == "select" -%} {% set selected = kwargs.pop('selected', '') %} {% set options = kwargs.pop('options', []) %} {# select-group: @options={"group_name":[[k, v], [k, v]], ... }, @selected=str #} {%- elif _tag == "select-group" -%} {% set selected = kwargs.pop('selected', '') %} {% set groups = kwargs.pop('options', {}) %} {%- endif -%} {%- endmacro %} {#:: Label {{ f.label('name', 'First name') }} -> {{ f.label('name') }} -> {{ f.label('name', class='label', id='name-label') }} -> #} {% macro label(for_name, title) %} {% endmacro %} {#:: Form-Group Same as tag, except it wrap it in from-group #} {% macro group(_tag, name) %} {% set _label = kwargs.pop('label', '') %}
{{ label(name, _label) }} {{ tag(_tag, name, **kwargs) }}
{% endmacro %}