{% load form_helpers %}
{% load helpers %}
{% load i18n %}

<div class="row mb-3{% if field.errors %} has-errors{% endif %}">

  {# Render the field label (if any), except for checkboxes #}
  {% if label and not field|widget_type == 'checkboxinput' %}
    <div class="col-sm-3 text-lg-end">
      <label for="{{ field.id_for_label }}" class="col-form-label d-inline-block{% if field.field.required %} required{% endif %}">
        {{ label }}
      </label>
    </div>
  {% endif %}

  {# Render the field itself #}
  <div class="col{% if field|widget_type == 'checkboxinput' %} offset-3{% endif %}">
    {# Include the "regenerate" button on slug fields #}
    {% if field|widget_type == 'slugwidget' %}
      <div class="input-group">
        {% render_field_with_aria field %}
        <button type="button" title="{% trans "Regenerate Slug" %}" aria-label="{% trans "Regenerate Slug" %}" class="btn reslug">
          <i class="mdi mdi-reload" aria-hidden="true"></i>
        </button>
      </div>
    {# Render checkbox labels to the right of the field #}
    {% elif field|widget_type == 'checkboxinput' %}
      <div class="form-check mb-0">
        {% render_field_with_aria field %}
        <label for="{{ field.id_for_label }}" class="form-check-label">
          {{ label }}
        </label>
        {% if field.help_text %}
          <span class="form-text" id="{{ field.auto_id }}_helptext">{{ field.help_text|safe }}</span>
        {% endif %}
      </div>
    {# Include a copy-to-clipboard button #}
    {% elif 'data-clipboard' in field.field.widget.attrs %}
      <div class="input-group">
        {% render_field_with_aria field %}
        <button type="button" title="{% trans "Copy to clipboard" %}" aria-label="{% trans "Copy to clipboard" %}" class="btn copy-content" data-clipboard-target="#{{ field.id_for_label }}">
          <i class="mdi mdi-content-copy" aria-hidden="true"></i>
        </button>
      </div>
    {# Default field rendering #}
    {% else %}
      {% render_field_with_aria field %}
    {% endif %}

    {# Display any error messages #}
    {% if field.errors %}
      <div class="form-text text-danger" id="{{ field.auto_id }}_errors" role="alert">
        {% for error in field.errors %}{{ error }}{% if not forloop.last %}<br />{% endif %}{% endfor %}
      </div>
    {% endif %}

    {# Help text #}
    {% if field.help_text and field|widget_type != 'checkboxinput' %}
      <span class="form-text" id="{{ field.auto_id }}_helptext">{{ field.help_text|safe }}</span>
    {% endif %}

    {# For bulk edit forms, include an option to nullify the field #}
    {% if bulk_nullable %}
      <div class="form-check my-1">
        <input type="checkbox" class="form-check-input" name="_nullify" value="{{ field.name }}" id="nullify_{{ field.id_for_label }}" />
        <label for="nullify_{{ field.id_for_label }}" class="form-check-label">{% trans "Set Null" %}</label>
      </div>
    {% endif %}

  </div>

</div>
