Skip to content

Commit

Permalink
Prepare for textarea
Browse files Browse the repository at this point in the history
  • Loading branch information
dyve committed Apr 18, 2021
1 parent 575b35d commit 8545403
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
7 changes: 5 additions & 2 deletions example/app/forms.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django import forms
from django.contrib.admin.widgets import AdminSplitDateTime
from django.forms import BaseFormSet, formset_factory
from django.forms import BaseFormSet, TextInput, formset_factory

from django_bootstrap5.widgets import RadioSelectButtonGroup

Expand All @@ -14,6 +14,8 @@
)




class TestForm(forms.Form):
"""Form with a variety of widgets to test django_bootstrap5 rendering."""

Expand All @@ -27,7 +29,7 @@ class TestForm(forms.Form):
)
xss_field = forms.CharField(label='XSS" onmouseover="alert(\'Hello, XSS\')" foo="', max_length=100)
password = forms.CharField(widget=forms.PasswordInput)
message = forms.CharField(required=False, help_text="<i>my_help_text</i>")
message = forms.CharField(required=False, help_text="<i>my_help_text</i>", widget=forms.Textarea)
sender = forms.EmailField(label="Sender © unicode", help_text='E.g., "me@example.com"')
secret = forms.CharField(initial=42, widget=forms.HiddenInput)
cc_myself = forms.BooleanField(
Expand All @@ -46,6 +48,7 @@ class TestForm(forms.Form):
choices=MEDIA_CHOICES, widget=forms.CheckboxSelectMultiple, help_text="Check as many as you like."
)
category5 = forms.ChoiceField(widget=RadioSelectButtonGroup, choices=MEDIA_CHOICES)
color = forms.CharField(widget=TextInput(attrs={"type": "color"}))
addon = forms.CharField(widget=forms.TextInput(attrs={"addon_before": "before", "addon_after": "after"}))

required_css_class = "django_bootstrap5-req"
Expand Down
14 changes: 12 additions & 2 deletions src/django_bootstrap5/renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,20 @@ def is_widget_form_control(self, widget):
"""Return whether given widget is of type `form-control`."""
return isinstance(widget, Input) and not isinstance(widget, CheckboxInput)

def get_widget_input_type(self, widget):
"""Return input type of widget, or None."""
return widget.input_type if isinstance(widget, Input) else None

def can_widget_float(self, widget):
"""Return whether given widget can be set to `form-floating` behavior."""
# TODO: Add support for Select widgets, within Bootstrap 5 restrictions
return self.is_widget_form_control(widget) and not isinstance(widget, FileInput)
# TODO: Add support for select widgets, within Bootstrap 5 restrictions
# TODO: Add support for textarea widgets
# TODO: Check support for date, time and other types
return (
not isinstance(widget, FileInput)
and self.is_widget_form_control(widget)
and self.get_widget_input_type(widget) != "color"
)

def add_widget_class_attrs(self, widget=None):
"""Add class attribute to widget."""
Expand Down

0 comments on commit 8545403

Please sign in to comment.