{%- macro form_start(content, method, action, enctype) -%}
{{ content }} {%- endmacro %} {%- macro form_errors(errors) -%} {%- if errors -%} {%- call ui.util.call(ui.alert, **ui.util.augment_attrs(kwargs, {"style": "danger"}, key=none)) -%} {{ _("The form contains invalid entries:") }} {%- endcall %} {%- endif %} {%- endmacro %} {%- macro form_annotation(content=_("Required field")) -%}
{{ content }}
{%- endmacro %} {%- macro form_actions(content) -%}
{{- content -}}
{%- endmacro %} {%- macro field_errors(errors) -%} {%- if errors -%} {{ errors|join(", ") }} {%- endif %} {%- endmacro %} {%- macro field_info(content) -%} {{ content }} {%- endmacro %} {%- macro fieldset(content, legend, description) -%}
{%- if legend -%} {{ legend }} {{ description }} {%- endif %} {{ content }}
{%- endmacro %} {%- macro file_input(content, name, label, id, errors, required, accept, capture, multiple, button_label=_("Select file")) -%} {%- set id = id or (name and "field-" ~ name) or ui.util.id() -%} {%- set defaults = { "id": id, "type": "file", "class": "nsw-file-upload__input", "name": name, "aria-invalid": "true" if errors else "false", } -%} {%- if multiple -%} {%- do defaults.update({"multiple": ""}) -%} {%- endif %} {%- if accept -%} {%- do defaults.update({"accept": accept}) -%} {%- endif %} {%- if capture -%} {%- do defaults.update({"capture": capture}) -%} {%- endif %} {%- set input_kwargs = kwargs -%} {%- call ui.util.call(_input_block, label=label, required=required, id=id) -%} {{ content }} {%- if errors -%} {{ errors | join(", ") }} {%- endif %}
{%- endcall %} {%- endmacro %} {%- macro _input_block(content, label, required, id) -%}
{%- if label -%} {%- endif %} {{- content -}}
{%- endmacro %} {%- macro input(content, name, id, label, value, required, placeholder, button, icon_button, type="text", errors=[]) -%} {%- set id = id or (name and "field-" ~ name) or (label and ui.util.id()) or "" -%} {%- set defaults = { "class": "nsw-form__input", "type": type, "id": id, "name": name, "value": value, "placeholder": placeholder, "aria-invalid": "true" if errors else "false", } -%} {%- set input_kwargs = kwargs -%} {%- if button or icon_button -%}
{%- if label -%} {%- endif %} {{ button or icon_button }}
{{ ui.field_errors(errors) }}
{%- else -%} {%- call ui.util.call(_input_block, label=label, id=id, required=required) -%} {{ content }} {{ ui.field_errors(errors) }} {%- endcall %} {%- endif %} {%- endmacro %} {%- macro textarea(content, name, id, label, value, required, placeholder, errors=[]) -%} {%- set id = id or (name and "field-" ~ name) or (label and ui.util.id()) or "" -%} {%- set defaults = { "class": "nsw-form__input", "id": id, "name": name, "placeholder": placeholder, "aria-invalid": "true" if errors else "false", } -%} {%- set input_kwargs = kwargs -%} {%- call ui.util.call(_input_block, label=label, id=id, required=required) -%} {{ content }} {{ ui.field_errors(errors) }} {%- endcall %} {%- endmacro %} {%- macro markdown(content, name, id, label, value, required, placeholder, errors=[]) -%} {%- set popover_id = ui.util.id() -%} {%- set id = id or (name and "field-" ~ name) or (label and ui.util.id()) or "" -%} {%- set defaults = { "class": "nsw-form__input", "id": id, "name": name, "placeholder": placeholder, "aria-invalid": "true" if errors else "false", } -%} {%- set input_kwargs = kwargs -%} {%- call ui.util.call(_input_block, label=label, id=id, required=required) -%} {{ content }} {%- call ui.util.call(ui.field_info) -%} This field supports {{ ui.popover_handle("markdown", id=popover_id) }} {%- endcall %} {{ ui.field_errors(errors) }} {%- endcall %} {{ _markdown_popover(popover_id) }} {%- endmacro %} {%- macro _markdown_popover(id, title=_("Markdown quick reference")) -%} {%- call ui.util.call(ui.popover, title=title, id=id, **kwargs) -%} {%- if content -%} {{ content }} {%- else -%} {%- trans -%}

__Bold text__ or _italic text_

# title
## secondary title
### etc

* list
* of
* items

http://auto.link.ed/

Full markdown syntax

Please note: HTML tags are stripped out for security reasons

{%- endtrans %} {%- endif %} {%- endcall -%} {%- endmacro %} {%- macro select(content, options, selected) -%} {%- set selected_values = selected if selected is not string and selected is iterable else [selected or ""] %} {%- call ui.util.call(ui.select_box, nested_content=content, **kwargs) -%} {% for option in options %} {{ ui.select_option(option.text or option.value, value=option.value, selected=option.value in selected_values) }} {% endfor %} {%- endcall %} {%- endmacro %} {%- macro select_box(content, nested_content, name, id, label, multiple, required, autocomplete, placeholder, multi_select_text, n_multi_select, errors=[], group_class="form-group") -%} {%- set id = id or (name and "field-" ~ name) or (label and ui.util.id()) or "" -%} {%- set defaults = { "id": id, "name": name, "class": "nsw-form__select", "multiple": multiple, "aria-invalid": "true" if errors else "false", } -%} {%- set input_kwargs = kwargs -%} {%- set multi_attrs = { "class": "nsw-multi-select js-multi-select", "data-select-text": placeholder, "data-multi-select-text": multi_select_text, "data-n-multi-select": n_multi_select } -%} {%- call ui.util.call(_input_block, label=label, required=required, id=id) -%} {{ nested_content }} {%- call ui.util.call(ui.util.tag, "div" if multiple else "", attrs=multi_attrs) -%} {%- endcall %} {{ ui.field_errors(errors) }} {%- endcall %} {%- endmacro %} {%- macro checkbox(content, name, id, checked, label, required, value, errors=[]) -%} {%- set id = id or (name and "field-" ~ name) or (label and ui.util.id()) or "" -%} {%- set defaults = { "class": "nsw-form__checkbox-input", "type": "checkbox", "id": id, "name": name, "value": value, "aria-invalid": "true" if errors else "false", } -%} {%- if checked -%} {%- do defaults.update({"checked": none}) -%} {%- endif %}
{{ content }} {%- if label -%} {%- endif %} {{ ui.field_errors(errors) }}
{%- endmacro %} {%- macro radio(content, name, id, checked, label, required, value, errors=[]) -%} {%- set id = id or (name and "field-" ~ name) or (label and ui.util.id()) or "" -%} {%- set defaults = { "class": "nsw-form__radio-input", "type": "radio", "id": id, "name": name, "value": value, "checked": checked, } -%}
{{ content }} {%- if label -%} {%- endif %} {{ ui.field_errors(errors) }}
{%- endmacro %} {%- macro range_input(content, min_value, max_value, step) -%} {%- set defaults = {"class": "nsw-width-100"} -%} {%- if min_value is defined -%} {%- do defaults.update({"min": min_value}) -%} {%- endif %} {%- if max_value is defined -%} {%- do defaults.update({"max": max_value}) -%} {%- endif %} {%- if step is defined -%} {%- do defaults.update({"step": step}) -%} {%- endif %} {%- do ui.util.augment_attrs(kwargs, defaults) -%} {{ ui.input(content, type="range", **kwargs) }} {%- endmacro %} {%- macro extra_field(content, index=0, data={}, errors={}, name_template='extras__{index}__') -%} {%- set prefix = name_template.format(index=index) -%} {%- set id = 'field-extras-{}'.format(index+1) -%} {%- set error_list = errors[prefix~'key'] or errors[prefix~'value'] -%} {# control-custom class is is used by custom-fields module #}
{{ ui.input(name=prefix~"key", label="Key", value=data.key) }} {{ ui.input(name=prefix~"value", label="Value", value=data.value) }} {% if data.key or data.value or error_list %} {% endif %} {{ content }} {{ ui.field_errors(error_list) if error_list }}
{%- endmacro %} {%- macro extra_fields_collection(extras=[], errors={}, limit=3) -%}
{% for extra in extras %} {{ ui.extra_field(index=loop.index0, data=extra, errors=errors) }} {% endfor %} {# Add a max of 3 empty columns #} {% set total_extras = extras|count %} {% set empty_extras = (limit or 3) - total_extras %} {% if empty_extras <= 0 %}{% set empty_extras = 1 %}{% endif %} {% for extra in range(total_extras, total_extras + empty_extras) %} {{ ui.extra_field(index=loop.index0 + (extras|count), data=extra, errors=errors) }} {% endfor %}
{%- endmacro %}