{% macro input(name, label, type, opt) %} <div class="mb-3"> {% if label -%} <label for="{{ name }}" class="form-label {% if opt.hide_label|default(false) %}sr-only{% endif %}">{{ label }}</label> {%- endif %} <input type="{{ type|default('text') }}" class="form-control" id="{{ name }}" name="{{ name }}" value="{{ opt.value|default('')|escape('html_attr') }}" {%- if opt.min is defined %} minlength="{{ opt.min }}"{% endif %} {%- if opt.required|default(false) %} required {%- endif -%} {%- if opt.disabled|default(false) %} disabled {%- endif -%} {%- if opt.readonly|default(false) %} readonly {%- endif -%} > </div> {%- endmacro %} {% macro textarea(name, label, opt) %} <div class="mb-3"> {% if label -%} <label class="form-label" for="{{ name }}">{{ label }}</label> {%- endif %} <textarea class="form-control" id="{{ name }}" name="{{ name }}" {%- if opt.required|default(false) %} required {%- endif -%} {%- if opt.rows|default(0) %} rows="{{ opt.rows }}" {%- endif -%} >{{ opt.value|default('') }}</textarea> </div> {%- endmacro %} {% macro select(name, data, label, selected) %} <div class="mb-3"> {% if label -%} <label class="form-label" for="{{ name }}">{{ label }}</label> {% endif %} <select id="{{ name }}" name="{{ name }}" class="form-control"> {% for value,decription in data -%} <option value="{{ value }}"{% if value == selected %} selected{% endif %}>{{ decription }}</option> {% endfor %} </select> </div> {%- endmacro %} {% macro checkbox(name, label, checked, value, disabled) %} <div class="form-check mb-3"> <label> <input type="checkbox" id="{{ name }}" name="{{ name }}" value="{{ value|default('1') }}" class="form-check-input" {%- if checked|default(false) %} checked{% endif %} {%- if disabled|default(false) %} disabled{% endif %} > {{ label }} </label> </div> {%- endmacro %} {% macro hidden(name, value) %} <input type="hidden" id="{{ name }}" name="{{ name }}" value="{{ value|escape('html_attr') }}"> {%- endmacro %} {% macro button(label, opt) %} <button class="btn btn-{{ opt.btn_type|default('secondary') }} {%- if opt.size is defined %} btn-{{ opt.size }}{% endif %}" {%- if opt.type is defined %} type="{{ opt.type }}"{% endif %} {%- if opt.name is defined %} name="{{ opt.name }}"{% endif %} {%- if opt.title is defined %} title="{{ opt.title }}"{% endif %} {%- if opt.value is defined or opt.name is defined %} value="{{ opt.value|default('1') }}"{% endif -%} > {{ label }} </button> {%- endmacro %} {% macro submit(label, opt) %} {{ _self.button(label|default(__('form.submit')), {'type': 'submit', 'btn_type': 'primary'}|merge(opt|default({}))) }} {%- endmacro %} {% macro switch(name, label, checked, opt) %} <div class="form-check form-switch mb-3"> <input class="form-check-input" type="checkbox" id="{{ name }}" name="{{ name }}" value="{{ opt.value|default('1') }}" {%- if checked|default(false) %} checked{% endif %} {%- if opt.disabled|default(false) %} disabled{% endif %} > <label class="form-check-label" for="{{ name }}">{{ label }}</label> </div> {%- endmacro %}