view sat_templates/templates/default/input/field.html @ 295:1de599c5a68f

bulma (base): loading screen: when the `loading_screen` variable is set before extending `base/base.html`, a loading modal is shown (and must be removed via JavaScript). This avoids the user to try to use an interface which is not reactive or working normally because JS is not fully loaded yet.
author Goffi <goffi@goffi.org>
date Fri, 27 Nov 2020 12:24:03 +0100
parents aa37750c2617
children
line wrap: on
line source

{# macros to create form fields #}

{% macro field(type, name, label="", required=false) %}
    {# generic field
       "class" keyword can be used to add classes
       additional kwargs will be passed as attributes #}
    <span class="form_input {{kwargs.pop('class', '')}}">
        {% set cur_id = name|next_gidx %}
        {% if label %}
            <label for="{{cur_id}}" {{'class="required"'|safe if required}}>{{label}}</label>
        {% endif %}
        <input id="{{cur_id}}" type="{{type}}" name="{{name}}" {{"required" if required}} {{kwargs|xmlattr}}>
    </span>
{% endmacro %}

{% macro select(name, options_list, selected=none, required=false, multiple=false) %}
    {# selection of elements with <select>

    @param name: name of the field
    @param options_list(list[str, str]): list of name, label of options
    @param selected(none, list): list of select elements
    @param required(bool): true this field is required
    @param multiple(bool): true is multiple selection is possible
    #}
    <select name="{{name}}" class="form_input {{kwargs.pop('class', '')}}" {{"required" if required}}>
    {% for value, label in options_list %}
         <option value="{{value}}" {{'selected' if selected and value in selected}}>{{label}}</option>
    {% endfor %}
    </select>
{% endmacro %}

{% macro choices(name, choices_list, checked=none) %}
    {% for choice, label in choices_list %}
        <div class="form_input {{kwargs.pop('class', '')}}">
            <input id="{{name|next_gidx}}" type="radio" name="{{name}}" value="{{choice}}"{{" checked" if checked==choice}}><label for="{{name|cur_gidx}}">{{label}}</label>
        </div>
    {% endfor %}
{% endmacro %}

{% macro int(name, label="", init=0) %}
    {{ field("number", name=name, label=label, value=init, step=1, min=0, **kwargs) }}
{% endmacro %}

{% macro checkbox(name, label="", checked=false) %}
    {% if checked %}
        {{ field("checkbox", name=name, label=label, checked="checked", **kwargs) }}
    {% else %}
        {{ field("checkbox", name=name, label=label, **kwargs) }}
    {% endif %}
{% endmacro %}

{% macro text(name, label="", placeholder="", required=false) %}
    {{ field("text", name=name, label=label, required=required, placeholder=placeholder, **kwargs) }}
{% endmacro %}

{% macro password(name, label="", required=false) %}
    {{ field("password", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro email(name, label="", required=false) %}
    {{ field("email", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro date(name, label="", required=false) %}
    {{ field("date", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro url(name, label="", required=false) %}
    {{ field("url", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro file(name, label="", required=false) %}
    {{ field("file", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro textarea(name, label="", rows=10, cols=50, placeholder='', required=false) %}
    <div class="form_input {{kwargs.pop('class', '')}}">
        {% set cur_id = name|next_gidx %}
        {% if label %}
            <label for="{{cur_id}}" {{'class="required"'|safe if required}}>{{label}}</label>
        {% endif %}
        <textarea id="{{cur_id}}" name="{{name}}" rows="{{rows}}" cols="{{cols}}" placeholder="{{placeholder}}" {{"required" if required}} class="{{kwargs.pop('class', '')}}"></textarea>
    </div>
{% endmacro %}

{% macro meta(name, value) %}
    <input type="hidden" name="{{name}}" value="{{value}}">
{% endmacro %}

{% macro submit(text=_("Send"), id=none) %}
    {# submit button

    @param text(str): label of the button
    @param id(none, str): id of the element
    #}
    <input {{ 'id="{id}"'.format(id=id)|safe if id }} class="form_submit btn {{kwargs.pop('class', '')}}" type="submit" value="{{text}}">
{% endmacro %}