{% macro render_field(field, label=None, label_visible=true, right_url=None, right_label=None) -%}
    <div class="da-form-group {% if field.errors %}da-group-has-error{% endif %}{{ kwargs.pop('class_', '') }}">
        {% if field.type != 'HiddenField' and label_visible %}
            {% if not label %}{% set label=field.label.text %}{% endif %}
        <label for="{{ field.id }}" class="form-label">{{ label|safe }}</label>
        {% endif %}
        {{ field(class_='form-control', **kwargs) }}
        {% if field.errors %}
            {% for e in field.errors %}
        <div class="invalid-feedback d-block">{{ e }}</div>
            {% endfor %}
        {% endif %}
    </div>
{%- endmacro %}
 
{% macro render_checkbox_field(field, label=None) -%}
    {% if not label %}{% set label=field.label.text %}{% endif %}
    <div class="form-check">
        {{ field(type='checkbox', class_='form-check-input', **kwargs) }}
        <label class="form-check-label" for="{{ field.id }}">
            {{ label }}
        </label>
    </div>
{%- endmacro %}
 
{% macro render_radio_field(field) -%}
    {% for value, label, checked in field.iter_choices() %}
    <div class="form-check">
        <input class="form-check-input" type="radio" name="{{ field.id }}" id="{{ field.id }}" value="{{ value }}"{% if checked %} checked{% endif %}>
        <label class="form-check-label" for="{{ field.id }}">
            {{ label }}
        </label>
    </div>
    {% endfor %}
{%- endmacro %}

{% macro render_submit_field(field, label=None, tabindex=None) -%}
    {% if not label %}{% set label=field.label.text %}{% endif %}
    <input type="submit" class="btn {{ config['BUTTON_CLASS'] }} {{ config['BUTTON_STYLE'] }}primary" value="{{ label }}" {% if tabindex %}tabindex="{{ tabindex }}"{% endif %}>
{%- endmacro %}
