11
11
12
12
13
13
class CSSContainer :
14
- def __init__ (self , css_styles , error_styles ):
15
- self . css_styles = css_styles .copy ()
16
- self . error_styles = error_styles . copy ( )
14
+ def __init__ (self , css_styles ):
15
+ for key , value in css_styles .items ():
16
+ setattr ( self , key , value )
17
17
18
- def get_input_class (self , field ):
18
+ def get_field_class (self , field ):
19
19
widget_cls = field .field .widget .__class__ .__name__
20
20
key = camel_to_snake (widget_cls )
21
- css_classes = getattr (self , "css_styles" , {}). get ( key , "" )
21
+ css_classes = getattr (self , key , "" )
22
22
return css_classes
23
23
24
- def get_error_class (self , field ):
25
- widget_cls = field .field .widget .__class__ .__name__
26
- key = camel_to_snake (widget_cls )
27
- error_classes = getattr (self , "error_styles" , {}).get (key , "" )
28
- return error_classes
29
-
30
24
31
25
class FormifyHelper :
32
26
"""
@@ -66,13 +60,19 @@ class FormifyHelper:
66
60
"time_input" : common_style ,
67
61
"date_time_input" : common_style ,
68
62
"clearable_file_input" : "w-full overflow-clip rounded-lg border border-gray-300 bg-gray-50/50 text-gray-600 file:mr-4 file:cursor-pointer file:border-none file:bg-gray-50 file:px-4 file:py-2 file:font-medium file:text-gray-900 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black disabled:cursor-not-allowed disabled:opacity-75 dark:border-gray-700 dark:bg-gray-900/50 dark:text-gray-300 dark:file:bg-gray-900 dark:file:text-white dark:focus-visible:outline-white" ,
63
+ "radio_select_option_label" : "inline-flex items-center gap-2 text-gray-700" ,
64
+ "checkbox_label" : "inline-flex items-center gap-2 text-gray-700" ,
69
65
}
70
66
71
67
default_error_styles = {
72
68
# border-red-300
73
69
"clearable_file_input" : "w-full overflow-clip rounded-lg border border-red-300 bg-gray-50/50 text-gray-600 file:mr-4 file:cursor-pointer file:border-none file:bg-gray-50 file:px-4 file:py-2 file:font-medium file:text-gray-900 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black disabled:cursor-not-allowed disabled:opacity-75 dark:border-gray-700 dark:bg-gray-900/50 dark:text-gray-300 dark:file:bg-gray-900 dark:file:text-white dark:focus-visible:outline-white" ,
74
70
}
75
71
72
+ css_container = None
73
+
74
+ error_css_container = None
75
+
76
76
################################################################################
77
77
# label
78
78
################################################################################
@@ -96,10 +96,11 @@ class FormifyHelper:
96
96
layout = None
97
97
98
98
def __init__ (self ):
99
- self .css_container = self . get_css_container ()
99
+ self .prepare_css_container ()
100
100
101
- def get_css_container (self ):
102
- return CSSContainer (self .default_styles , self .default_error_styles )
101
+ def prepare_css_container (self ):
102
+ self .css_container = CSSContainer (self .default_styles )
103
+ self .error_css_container = CSSContainer (self .default_error_styles )
103
104
104
105
def get_context_data (self , context_data ) -> Context :
105
106
if isinstance (context_data , Context ):
@@ -267,12 +268,11 @@ def render_as_tailwind_field(self, context):
267
268
# if class is not set, then add additional css classes
268
269
269
270
# add default input class
270
- css_container = self .css_container
271
- css = " " + css_container .get_input_class (field )
271
+ css = " " + self .css_container .get_field_class (field )
272
272
css_class += css
273
273
274
274
if field .errors :
275
- error_css = css_container . get_error_class (field )
275
+ error_css = self . error_css_container . get_field_class (field )
276
276
if error_css :
277
277
css_class = error_css
278
278
else :
0 commit comments