diff --git a/bootstrapform/templates/bootstrapform/field.html b/bootstrapform/templates/bootstrapform/field.html
index bfbdf64..ea7d607 100644
--- a/bootstrapform/templates/bootstrapform/field.html
+++ b/bootstrapform/templates/bootstrapform/field.html
@@ -44,6 +44,27 @@
{% endif %}
+ {% elif field|is_email and classes.domain %}
+ {% if field.auto_id %}
+
+ {% endif %}
+
+
+
+ {{ field }}
+ {{ classes.domain }}
+
+
+ {% for error in field.errors %}
+
{{ error }}
+ {% endfor %}
+
+ {% if field.help_text %}
+
+ {{ field.help_text|safe }}
+
+ {% endif %}
+
{% else %}
{% if field.auto_id %}
diff --git a/bootstrapform/templatetags/bootstrap.py b/bootstrapform/templatetags/bootstrap.py
index a8b96de..f4f8923 100644
--- a/bootstrapform/templatetags/bootstrap.py
+++ b/bootstrapform/templatetags/bootstrap.py
@@ -9,20 +9,26 @@
@register.filter
def bootstrap(element):
- markup_classes = {'label': '', 'value': '', 'single_value': ''}
+ markup_classes = {'label': '', 'value': '', 'single_value': '', 'domain': ''}
return render(element, markup_classes)
+@register.filter
+def bootstrap_email(element, domain='example.com'):
+ markup_classes = {'label': '', 'value': '', 'single_value': '', 'domain': domain}
+ element.field.widget.attrs.update({'aria-describedby' : element.id_for_label + '-addon'})
+ element.field.widget.attrs.update({'class' : 'form-control' })
+ return render(element, markup_classes)
@register.filter
def bootstrap_inline(element):
- markup_classes = {'label': 'sr-only', 'value': '', 'single_value': ''}
+ markup_classes = {'label': 'sr-only', 'value': '', 'single_value': '', 'domain': ''}
return render(element, markup_classes)
@register.filter
def bootstrap_horizontal(element, label_cols='col-sm-2 col-lg-2'):
- markup_classes = {'label': label_cols, 'value': '', 'single_value': ''}
+ markup_classes = {'label': label_cols, 'value': '', 'single_value': '', 'domain': ''}
for cl in label_cols.split(' '):
splitted_class = cl.split('-')
@@ -48,7 +54,8 @@ def bootstrap_horizontal(element, label_cols='col-sm-2 col-lg-2'):
@register.filter
def add_input_classes(field):
if not is_checkbox(field) and not is_multiple_checkbox(field) \
- and not is_radio(field) and not is_file(field):
+ and not is_radio(field) and not is_file(field) \
+ and not is_email(field):
field_classes = field.field.widget.attrs.get('class', '')
field_classes += ' form-control'
field.field.widget.attrs['class'] = field_classes
@@ -79,6 +86,10 @@ def render(element, markup_classes):
return template.render(context)
+@register.filter
+def is_email(field):
+ return isinstance(field.field.widget, forms.EmailInput)
+
@register.filter
def is_checkbox(field):