Skip to content

Commit 0b35ebd

Browse files
committed
more bootstrap 4: validation et al
1 parent a763b90 commit 0b35ebd

File tree

1 file changed

+19
-27
lines changed

1 file changed

+19
-27
lines changed

src/yafowil/bootstrap/bs4.py

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
from yafowil.base import factory
2-
3-
4-
def bs_field_class(widget, data):
5-
if data.errors:
6-
return "form-group has-error"
7-
return "form-group"
2+
from yafowil.utils import attr_value
83

94

105
def configure_factory():
116
# set theme
127
factory.theme = "bootstrap4"
138

14-
# common defaults
15-
factory.defaults["text.class"] = "text form-control"
16-
17-
factory.defaults["textarea.class"] = "textarea form-control"
9+
# wrapper div for one input
10+
factory.defaults["field.class"] = "form-group"
1811

19-
factory.defaults["lines.class"] = "lines form-control"
12+
# label required marker (plone)
13+
factory.defaults["label.required_class"] = "required"
2014

21-
factory.defaults["password.class"] = "password form-control"
15+
# common defaults
16+
# form-control:
17+
# errors: https://getbootstrap.com/docs/4.4/components/forms/#how-it-works
18+
bs4_input_blueprints = [
19+
"text", "textarea", "lines", "password", "select", "email", "url", "search"
20+
]
21+
for blueprint_name in bs4_input_blueprints:
22+
factory.defaults["{0}.class".format(blueprint_name)] = "form-control"
23+
factory.defaults["{0}.error_class".format(blueprint_name)] = "is-invalid"
24+
factory.defaults["{0}.valid_class".format(blueprint_name)] = "is-valid"
2225

2326
factory.defaults["select.class"] = "select"
2427
factory.defaults["select.block_class"] = "form-control"
@@ -28,22 +31,11 @@ def configure_factory():
2831
factory.defaults["submit.class"] = "btn btn-primary"
2932
factory.defaults["button.class"] = "btn btn-primary"
3033

31-
factory.defaults["email.class"] = "email form-control"
32-
33-
factory.defaults["url.class"] = "url form-control"
34-
35-
factory.defaults["search.class"] = "search form-control"
36-
37-
factory.defaults["number.class"] = "number form-control"
38-
39-
factory.defaults["label.class"] = "col-form-label"
40-
41-
factory.defaults["field.class"] = bs_field_class
42-
4334
factory.defaults["error.position"] = "after"
44-
factory.defaults["error.tag"] = "span"
45-
factory.defaults["error.class"] = "help-block"
46-
factory.defaults["error.message_class"] = "text-danger"
35+
factory.defaults["error.tag"] = "div"
36+
factory.defaults["error.class"] = "invalid-feedback"
37+
factory.defaults["error.message_class"] = None
38+
factory.defaults['error.message_tag'] = None
4739

4840
factory.defaults["help.position"] = "after"
4941
factory.defaults["help.tag"] = "small"

0 commit comments

Comments
 (0)