33
44from beartype import beartype
55
6- from flet import margin , padding
6+ from flet import border_radius , margin , padding
77from flet .alignment import Alignment
8+ from flet .border import Border
9+ from flet .border_radius import BorderRadius
810from flet .constrained_control import ConstrainedControl
911from flet .control import BorderStyle , Control , MarginValue , OptionalNumber , PaddingValue
12+ from flet .embed_json_encoder import EmbedJsonEncoder
1013from flet .ref import Ref
1114
1215try :
@@ -34,10 +37,8 @@ def __init__(
3437 margin : MarginValue = None ,
3538 alignment : Alignment = None ,
3639 bgcolor : str = None ,
37- border_color : str = None ,
38- border_width : OptionalNumber = None ,
39- border_style : BorderStyle = None ,
40- border_radius : OptionalNumber = None ,
40+ border : Border = None ,
41+ border_radius : BorderRadius = None ,
4142 ):
4243 ConstrainedControl .__init__ (
4344 self ,
@@ -56,9 +57,7 @@ def __init__(
5657 self .margin = margin
5758 self .alignment = alignment
5859 self .bgcolor = bgcolor
59- self .border_color = border_color
60- self .border_width = border_width
61- self .border_style = border_style
60+ self .border = border
6261 self .border_radius = border_radius
6362
6463 def _get_control_name (self ):
@@ -92,7 +91,9 @@ def padding(self, value: PaddingValue):
9291 self .__padding = value
9392 if value and isinstance (value , (int , float )):
9493 value = padding .all (value )
95- self ._set_attr ("padding" , json .dumps (value , default = vars ) if value else None )
94+ self ._set_attr (
95+ "padding" , json .dumps (value , cls = EmbedJsonEncoder ) if value else None
96+ )
9697
9798 # margin
9899 @property
@@ -105,7 +106,9 @@ def margin(self, value: MarginValue):
105106 self .__margin = value
106107 if value and isinstance (value , (int , float )):
107108 value = margin .all (value )
108- self ._set_attr ("margin" , json .dumps (value , default = vars ) if value else None )
109+ self ._set_attr (
110+ "margin" , json .dumps (value , cls = EmbedJsonEncoder ) if value else None
111+ )
109112
110113 # bgcolor
111114 @property
@@ -116,43 +119,33 @@ def bgcolor(self):
116119 def bgcolor (self , value ):
117120 self ._set_attr ("bgColor" , value )
118121
119- # border_color
122+ # border
120123 @property
121- def border_color (self ):
122- return self ._get_attr ( "borderColor" )
124+ def border (self ):
125+ return self .__border
123126
124- @border_color .setter
125- def border_color (self , value ):
126- self ._set_attr ("borderColor" , value )
127-
128- # border_width
129- @property
130- def border_width (self ) -> OptionalNumber :
131- return self ._get_attr ("borderWidth" )
132-
133- @border_width .setter
127+ @border .setter
134128 @beartype
135- def border_width (self , value : OptionalNumber ):
136- self ._set_attr ("borderWidth" , value )
137-
138- # border_style
139- @property
140- def border_style (self ):
141- return self ._get_attr ("borderStyle" )
142-
143- @border_style .setter
144- @beartype
145- def border_style (self , value : BorderStyle ):
146- self ._set_attr ("borderStyle" , value )
129+ def border (self , value : Optional [Border ]):
130+ self .__border = value
131+ self ._set_attr (
132+ "border" , json .dumps (value , cls = EmbedJsonEncoder ) if value else None
133+ )
147134
148135 # border_radius
149136 @property
150137 def border_radius (self ):
151- return self ._get_attr ( "borderRadius" )
138+ return self .__border_radius
152139
153140 @border_radius .setter
154- def border_radius (self , value ):
155- self ._set_attr ("borderRadius" , value )
141+ @beartype
142+ def border_radius (self , value : Optional [BorderRadius ]):
143+ self .__border_radius = value
144+ if value and isinstance (value , (int , float )):
145+ value = border_radius .all (value )
146+ self ._set_attr (
147+ "borderRadius" , json .dumps (value , cls = EmbedJsonEncoder ) if value else None
148+ )
156149
157150 # content
158151 @property
0 commit comments