#----
{#
== 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 %}