Mercurial > libervia-templates
diff sat_templates/default/input/field.html @ 153:b84d20af0ed3
macros (field, form, textbox): general improvments:
- use a generic "field" macro for most fields
- added "required" class on input labels if suitable
- extra kw args are used as input field attributes. Same thing for forms
- better handling of id if label is missing
- added blog_text macro in textbox for basic text blog input
- textbox is more customisable (class and textarea class can be specified)
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 21 Jun 2018 01:09:00 +0200 |
parents | 33c7ce833d3f |
children |
line wrap: on
line diff
--- a/sat_templates/default/input/field.html Thu Jun 21 01:02:33 2018 +0200 +++ b/sat_templates/default/input/field.html Thu Jun 21 01:09:00 2018 +0200 @@ -1,43 +1,70 @@ +{# 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 choices(name, choices_list, checked=none) %} {% for choice, label in choices_list %} - <div class="form_input"> + <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) %} - <span class="form_input"> - <label for="{{name|next_gidx}}">{{label}}</label><input id="{{name|cur_gidx}}" type="number" name="{{name}}" value="{{init}}" step="1" min="0"> - </span> + {{ 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) %} - {# single line text field - additional kwargs will be passed as attributes #} - <span class="form_input"> - <label for="{{name|next_gidx}}">{{label}}</label><input id="{{name|cur_gidx}}" type="text" name="{{name}}" placeholder="{{placeholder}}" {{"required" if required}} {{kwargs|xmlattr}}> - </span> + {{ field("text", name=name, label=label, required=required, placeholder=placeholder, **kwargs) }} {% endmacro %} {% macro password(name, label="", required=false) %} - {# password field - additional kwargs will be passed as attributes #} - <span class="form_input"> - <label for="{{name|next_gidx}}">{{label}}</label><input id="{{name|cur_gidx}}" type="password" name="{{name}}" {{"required" if required}} {{kwargs|xmlattr}}> - </span> + {{ field("password", name=name, label=label, required=required, **kwargs) }} {% endmacro %} {% macro email(name, label="", required=false) %} - {# email field - additional kwargs will be passed as attributes #} - <span class="form_input"> - <label for="{{name|next_gidx}}">{{label}}</label><input id="{{name|cur_gidx}}" type="email" name="{{name}}" {{"required" if required}} {{kwargs|xmlattr}}> - </span> + {{ 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 textarea(name, rows=10, cols=50, placeholder='', required=false) %} - <textarea name="{{name}}" rows="{{rows}}" cols="{{cols}}" placeholder="{{placeholder}}" {{"required" if required}}></textarea> +{% 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) %} @@ -45,5 +72,5 @@ {% endmacro %} {% macro submit(text=_("Send")) %} - <input class="form_submit button" type="submit" value="{{text}}"> + <input class="form_submit button" type="submit" value="{{text}}" class="{{kwargs.pop('class', '')}}"> {% endmacro %}