Skip to content

Commit f69910a

Browse files
committed
on_focus, on_blur events to all input controls
1 parent f3bd45e commit f69910a

11 files changed

Lines changed: 245 additions & 2 deletions

File tree

examples/combobox.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from cProfile import label
2+
13
import pglet
24
from pglet import ComboBox, combobox
35

@@ -7,6 +9,9 @@
79
ComboBox(
810
label="Your favorite color",
911
value="c",
12+
on_focus=lambda e: print("on_focus!"),
13+
on_blur=lambda e: print("on_blur!"),
14+
on_change=lambda e: print("on_change!"),
1015
options=[
1116
combobox.Option("RGB", item_type="header"),
1217
combobox.Option("red"),
@@ -40,17 +45,20 @@
4045
multi_select=False,
4146
width="50%",
4247
allow_free_form=True,
48+
on_focus=lambda e: print("on_focus!"),
49+
on_blur=lambda e: print("on_blur!"),
4350
options=[
4451
combobox.Option("One"),
4552
combobox.Option("Two"),
4653
combobox.Option("Five"),
4754
],
4855
),
4956
ComboBox(
50-
label="Allows free form with multi-select",
57+
label="Allows free form with multi-select and error message",
5158
multi_select=True,
5259
width="50%",
5360
allow_free_form=True,
61+
error_message="This field cannot be left blank!",
5462
options=[
5563
combobox.Option("Red"),
5664
combobox.Option("Green"),

pglet/button.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Optional
2+
23
from beartype import beartype
4+
35
from pglet.control import Control
46

57

@@ -22,6 +24,8 @@ def __init__(
2224
focused=None,
2325
data=None,
2426
on_click=None,
27+
on_focus=None,
28+
on_blur=None,
2529
menu_items=None,
2630
width=None,
2731
height=None,
@@ -56,6 +60,8 @@ def __init__(
5660
self.icon_color = icon_color
5761
self.focused = focused
5862
self.on_click = on_click
63+
self.on_focus = on_focus
64+
self.on_blur = on_blur
5965
self.__menu_items = []
6066
if menu_items != None:
6167
for item in menu_items:
@@ -209,6 +215,24 @@ def focused(self):
209215
def focused(self, value: Optional[bool]):
210216
self._set_attr("focused", value)
211217

218+
# on_focus
219+
@property
220+
def on_focus(self):
221+
return self._get_event_handler("focus")
222+
223+
@on_focus.setter
224+
def on_focus(self, handler):
225+
self._add_event_handler("focus", handler)
226+
227+
# on_blur
228+
@property
229+
def on_blur(self):
230+
return self._get_event_handler("blur")
231+
232+
@on_blur.setter
233+
def on_blur(self, handler):
234+
self._add_event_handler("blur", handler)
235+
212236

213237
class MenuItem(Control):
214238
def __init__(

pglet/choicegroup.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Optional
2+
23
from beartype import beartype
4+
35
from pglet.control import Control
46

57

@@ -17,6 +19,8 @@ def __init__(
1719
margin=None,
1820
focused=None,
1921
on_change=None,
22+
on_focus=None,
23+
on_blur=None,
2024
visible=None,
2125
disabled=None,
2226
):
@@ -35,6 +39,8 @@ def __init__(
3539
self.label = label
3640
self.focused = focused
3741
self.on_change = on_change
42+
self.on_focus = on_focus
43+
self.on_blur = on_blur
3844
self.__options = []
3945
if options != None:
4046
for option in options:
@@ -92,6 +98,24 @@ def focused(self):
9298
def focused(self, value: Optional[bool]):
9399
self._set_attr("focused", value)
94100

101+
# on_focus
102+
@property
103+
def on_focus(self):
104+
return self._get_event_handler("focus")
105+
106+
@on_focus.setter
107+
def on_focus(self, handler):
108+
self._add_event_handler("focus", handler)
109+
110+
# on_blur
111+
@property
112+
def on_blur(self):
113+
return self._get_event_handler("blur")
114+
115+
@on_blur.setter
116+
def on_blur(self, handler):
117+
self._add_event_handler("blur", handler)
118+
95119

96120
class Option(Control):
97121
def __init__(self, key=None, text=None, icon=None, icon_color=None):

pglet/combobox.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def __init__(
1616
placeholder=None,
1717
error_message=None,
1818
on_change=None,
19+
on_focus=None,
20+
on_blur=None,
1921
options=None,
2022
width=None,
2123
height=None,
@@ -49,6 +51,8 @@ def __init__(
4951
self.allow_free_form = allow_free_form
5052
self.auto_complete = auto_complete
5153
self.on_change = on_change
54+
self.on_focus = on_focus
55+
self.on_blur = on_blur
5256
self.__options = []
5357
if options != None:
5458
for option in options:
@@ -159,6 +163,24 @@ def auto_complete(self):
159163
def auto_complete(self, value: Optional[bool]):
160164
self._set_attr("autocomplete", value)
161165

166+
# on_focus
167+
@property
168+
def on_focus(self):
169+
return self._get_event_handler("focus")
170+
171+
@on_focus.setter
172+
def on_focus(self, handler):
173+
self._add_event_handler("focus", handler)
174+
175+
# on_blur
176+
@property
177+
def on_blur(self):
178+
return self._get_event_handler("blur")
179+
180+
@on_blur.setter
181+
def on_blur(self, handler):
182+
self._add_event_handler("blur", handler)
183+
162184

163185
class Option(Control):
164186
def __init__(self, key=None, text=None, item_type: ITEM_TYPE = None, disabled=None):

pglet/datepicker.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import date, datetime
22
from typing import Optional
3+
34
from beartype import beartype
45

56
from pglet.control import Control
@@ -18,6 +19,8 @@ def __init__(
1819
borderless=None,
1920
focused=None,
2021
on_change=None,
22+
on_focus=None,
23+
on_blur=None,
2124
width=None,
2225
visible=None,
2326
disabled=None,
@@ -32,6 +35,8 @@ def __init__(
3235
self.required = required
3336
self.focused = focused
3437
self.on_change = on_change
38+
self.on_focus = on_focus
39+
self.on_blur = on_blur
3540

3641
def _get_control_name(self):
3742
return "datepicker"
@@ -129,3 +134,21 @@ def on_change(self):
129134
@on_change.setter
130135
def on_change(self, handler):
131136
self._add_event_handler("change", handler)
137+
138+
# on_focus
139+
@property
140+
def on_focus(self):
141+
return self._get_event_handler("focus")
142+
143+
@on_focus.setter
144+
def on_focus(self, handler):
145+
self._add_event_handler("focus", handler)
146+
147+
# on_blur
148+
@property
149+
def on_blur(self):
150+
return self._get_event_handler("blur")
151+
152+
@on_blur.setter
153+
def on_blur(self, handler):
154+
self._add_event_handler("blur", handler)

pglet/dropdown.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def __init__(
1616
placeholder=None,
1717
error_message=None,
1818
on_change=None,
19+
on_focus=None,
20+
on_blur=None,
1921
options=None,
2022
width=None,
2123
height=None,
@@ -43,6 +45,8 @@ def __init__(
4345
self.error_message = error_message
4446
self.focused = focused
4547
self.on_change = on_change
48+
self.on_focus = on_focus
49+
self.on_blur = on_blur
4650
self.__options = []
4751
if options != None:
4852
for option in options:
@@ -118,6 +122,24 @@ def focused(self):
118122
def focused(self, value: Optional[bool]):
119123
self._set_attr("focused", value)
120124

125+
# on_focus
126+
@property
127+
def on_focus(self):
128+
return self._get_event_handler("focus")
129+
130+
@on_focus.setter
131+
def on_focus(self, handler):
132+
self._add_event_handler("focus", handler)
133+
134+
# on_blur
135+
@property
136+
def on_blur(self):
137+
return self._get_event_handler("blur")
138+
139+
@on_blur.setter
140+
def on_blur(self, handler):
141+
self._add_event_handler("blur", handler)
142+
121143

122144
class Option(Control):
123145
def __init__(self, key=None, text=None, item_type: ITEM_TYPE = None, disabled=None):

pglet/searchbox.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Optional
2+
23
from beartype import beartype
4+
35
from pglet.control import Control
46

57

@@ -16,6 +18,8 @@ def __init__(
1618
on_search=None,
1719
on_clear=None,
1820
on_change=None,
21+
on_focus=None,
22+
on_blur=None,
1923
width=None,
2024
height=None,
2125
padding=None,
@@ -46,6 +50,8 @@ def __init__(
4650
self.on_search = on_search
4751
self.on_clear = on_clear
4852
self.on_change = on_change
53+
self.on_focus = on_focus
54+
self.on_blur = on_blur
4955

5056
def _get_control_name(self):
5157
return "searchbox"
@@ -136,3 +142,21 @@ def focused(self):
136142
@beartype
137143
def focused(self, value: Optional[bool]):
138144
self._set_attr("focused", value)
145+
146+
# on_focus
147+
@property
148+
def on_focus(self):
149+
return self._get_event_handler("focus")
150+
151+
@on_focus.setter
152+
def on_focus(self, handler):
153+
self._add_event_handler("focus", handler)
154+
155+
# on_blur
156+
@property
157+
def on_blur(self):
158+
return self._get_event_handler("blur")
159+
160+
@on_blur.setter
161+
def on_blur(self, handler):
162+
self._add_event_handler("blur", handler)

pglet/slider.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Optional, Union
2+
23
from beartype import beartype
4+
35
from pglet.control import Control
46

57

@@ -18,6 +20,8 @@ def __init__(
1820
focused=None,
1921
data=None,
2022
on_change=None,
23+
on_focus=None,
24+
on_blur=None,
2125
width=None,
2226
height=None,
2327
padding=None,
@@ -46,6 +50,8 @@ def __init__(
4650
self.vertical = vertical
4751
self.focused = focused
4852
self.on_change = on_change
53+
self.on_focus = on_focus
54+
self.on_blur = on_blur
4955

5056
def _get_control_name(self):
5157
return "slider"
@@ -146,3 +152,21 @@ def focused(self):
146152
@beartype
147153
def focused(self, value: Optional[bool]):
148154
self._set_attr("focused", value)
155+
156+
# on_focus
157+
@property
158+
def on_focus(self):
159+
return self._get_event_handler("focus")
160+
161+
@on_focus.setter
162+
def on_focus(self, handler):
163+
self._add_event_handler("focus", handler)
164+
165+
# on_blur
166+
@property
167+
def on_blur(self):
168+
return self._get_event_handler("blur")
169+
170+
@on_blur.setter
171+
def on_blur(self, handler):
172+
self._add_event_handler("blur", handler)

0 commit comments

Comments
 (0)