diff --git a/docs/fields.rst b/docs/fields.rst index 40773cd0..c695caae 100644 --- a/docs/fields.rst +++ b/docs/fields.rst @@ -380,6 +380,8 @@ Convenience Fields {{ form.textarea(rows=7, cols=90) }} +.. autoclass:: ColorField(default field arguments) + Field Enclosures ---------------- diff --git a/src/wtforms/fields/simple.py b/src/wtforms/fields/simple.py index 8feff4f5..910ff96e 100644 --- a/src/wtforms/fields/simple.py +++ b/src/wtforms/fields/simple.py @@ -14,6 +14,7 @@ "TelField", "URLField", "EmailField", + "ColorField", ) @@ -162,3 +163,11 @@ class EmailField(StringField): """ widget = widgets.EmailInput() + + +class ColorField(StringField): + """ + Represents an ````. + """ + + widget = widgets.ColorInput() diff --git a/tests/fields/test_color.py b/tests/fields/test_color.py new file mode 100644 index 00000000..c563e881 --- /dev/null +++ b/tests/fields/test_color.py @@ -0,0 +1,16 @@ +from wtforms import widgets +from wtforms.fields import ColorField +from wtforms.form import Form + + +class F(Form): + a = ColorField( + widget=widgets.ColorInput(), default="#ff0000" + ) + b = ColorField(default="#00ff00") + + +def test_color_field(): + form = F() + assert form.a() == """""" + assert form.b() == """""" diff --git a/tests/test_widgets.py b/tests/test_widgets.py index a9b7cd30..93ee5351 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -2,6 +2,7 @@ from markupsafe import Markup from wtforms.widgets.core import CheckboxInput +from wtforms.widgets.core import ColorInput from wtforms.widgets.core import FileInput from wtforms.widgets.core import HiddenInput from wtforms.widgets.core import html_params @@ -147,6 +148,14 @@ def test_file(self, basic_widget_dummy_field): == '' ) + def test_color_input(self, basic_widget_dummy_field): + assert 'type="color"' in ColorInput()(basic_widget_dummy_field) + assert 'value="foo"' in ColorInput()(basic_widget_dummy_field) + basic_widget_dummy_field.data = "#ff0000" + assert 'value="#ff0000"' in ColorInput()( + basic_widget_dummy_field + ) + class TestSelect: def test_select(self, select_dummy_field):