Skip to content

Commit 982b1fb

Browse files
committed
Add form options
1 parent 01ac2c4 commit 982b1fb

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

wtforms_bootstrap5/context.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,22 @@
1111
from .registry import RendererRegistry
1212

1313

14+
@dataclasses.dataclass(frozen=True)
15+
class FormOptions:
16+
# Form method to use
17+
method: typing.Optional[str] = "POST"
18+
# Form action (target URL)
19+
action: typing.Optional[str] = None
20+
# Form encoding type
21+
enctype: typing.Optional[str] = None
22+
# class for form
23+
form_class: typing.Optional[str] = None
24+
# extra attributes for form
25+
form_attrs: typing.Dict[str, str] = dataclasses.field(default_factory=dict)
26+
# Enable form or not
27+
form_enabled: bool = True
28+
29+
1430
@dataclasses.dataclass(frozen=True)
1531
class FieldOptions:
1632
# class for row div
@@ -90,23 +106,29 @@ class RendererContext:
90106
def __init__(
91107
self,
92108
registry: RendererRegistry = DEFAULT_REGISTRY,
93-
default_field_option: FieldOptions = FieldOptions(),
109+
default_form_options: FormOptions = FormOptions(),
110+
default_field_options: FieldOptions = FieldOptions(),
94111
):
95-
self.default_field_option = default_field_option
112+
self.form_options = default_form_options
113+
self.default_field_options = default_field_options
96114
self.registry = registry
97115
self.field_options: typing.Dict[str, FieldOptions] = {}
98116

117+
def form(self, **kwargs) -> RendererContext:
118+
old_options = dataclasses.asdict(self.form_options)
119+
self.form_options = FormOptions(old_options | kwargs)
120+
99121
def field(self, *names: str, **kwargs: str) -> RendererContext:
100122
for name in names:
101123
old_options = dataclasses.asdict(
102-
self.field_options.get(name, self.default_field_option)
124+
self.field_options.get(name, self.default_field_options)
103125
)
104126
self.field_options[name] = FieldOptions(**(old_options | kwargs))
105127
return self
106128

107129
def default_field(self, **kwargs: str) -> RendererContext:
108-
self.default_field_option = FieldOptions(
109-
**(dataclasses.asdict(self.default_field_option) | kwargs)
130+
self.default_field_options = FieldOptions(
131+
**(dataclasses.asdict(self.default_field_options) | kwargs)
110132
)
111133
return self
112134

wtforms_bootstrap5/renderers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818

1919
def _field_option(context: RendererContext, name: str) -> FieldOptions:
20-
return context.field_options.get(name, context.default_field_option)
20+
return context.field_options.get(name, context.default_field_options)
2121

2222

2323
def html_params(**kwargs) -> str:

0 commit comments

Comments
 (0)