Skip to content

Commit 4a8825b

Browse files
committed
Nav example
1 parent 1b4af04 commit 4a8825b

3 files changed

Lines changed: 301 additions & 3 deletions

File tree

examples/nav.py

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
import pglet
2+
from pglet import Message, Nav, Stack, Text, nav
3+
4+
5+
def navs(page):
6+
7+
nav1 = None
8+
9+
def menu_item_expanded(e):
10+
page.controls.insert(
11+
0, Message(value=f'Menu item "{e.data}" was expanded', dismiss=True)
12+
)
13+
page.update()
14+
15+
def menu_item_collapsed(e):
16+
page.controls.insert(
17+
0, Message(value=f'Menu item "{e.data}" was collapsed', dismiss=True)
18+
)
19+
page.update()
20+
21+
def menu_item_changed(e):
22+
page.controls.insert(
23+
0, Message(value=f'Menu item was changed to "{nav1.value}"', dismiss=True)
24+
)
25+
page.update()
26+
27+
nav1 = Nav(
28+
on_collapse=menu_item_collapsed,
29+
on_expand=menu_item_expanded,
30+
on_change=menu_item_changed,
31+
items=[
32+
nav.Item(
33+
expanded=False,
34+
text="Actions",
35+
items=[
36+
nav.Item(
37+
expanded=True,
38+
text="New",
39+
items=[
40+
nav.Item(key="email", text="Email message", icon="Mail"),
41+
nav.Item(
42+
key="calendar",
43+
text="Calendar event",
44+
icon="Calendar",
45+
icon_color="salmon",
46+
),
47+
],
48+
),
49+
nav.Item(
50+
text="Share",
51+
items=[
52+
nav.Item(
53+
disabled=True,
54+
key="share",
55+
text="Share to Facebook",
56+
icon="Share",
57+
),
58+
nav.Item(key="twitter", text="Share to Twitter"),
59+
],
60+
),
61+
nav.Item(
62+
text="Links",
63+
items=[
64+
nav.Item(
65+
text="Pglet website",
66+
icon="NavigateExternalInline",
67+
url="https://pglet.io",
68+
new_window=True,
69+
),
70+
nav.Item(
71+
text="Google website",
72+
icon="NavigateExternalInline",
73+
url="https://google.com",
74+
new_window=True,
75+
),
76+
],
77+
),
78+
],
79+
),
80+
nav.Item(
81+
expanded=True,
82+
text="Settings",
83+
items=[
84+
nav.Item(
85+
expanded=True,
86+
text="New",
87+
items=[
88+
nav.Item(key="email", text="Email message", icon="Mail"),
89+
nav.Item(
90+
key="calendar",
91+
text="Calendar event",
92+
icon="Calendar",
93+
icon_color="salmon",
94+
),
95+
],
96+
),
97+
nav.Item(
98+
text="Share",
99+
items=[
100+
nav.Item(
101+
disabled=True,
102+
key="share",
103+
text="Share to Facebook",
104+
icon="Share",
105+
),
106+
nav.Item(key="twitter", text="Share to Twitter"),
107+
],
108+
),
109+
nav.Item(
110+
text="Links",
111+
items=[
112+
nav.Item(
113+
text="Pglet website",
114+
icon="NavigateExternalInline",
115+
url="https://pglet.io",
116+
new_window=True,
117+
),
118+
nav.Item(
119+
text="Google website",
120+
icon="NavigateExternalInline",
121+
url="https://google.com",
122+
new_window=True,
123+
),
124+
],
125+
),
126+
],
127+
),
128+
],
129+
)
130+
131+
nav2 = Nav(
132+
items=[
133+
nav.Item(
134+
items=[
135+
nav.Item(
136+
expanded=True,
137+
text="New",
138+
items=[
139+
nav.Item(key="email", text="Email message", icon="Mail"),
140+
nav.Item(
141+
key="calendar", text="Calendar event", icon="Calendar"
142+
),
143+
nav.Item(
144+
text="More options",
145+
items=[
146+
nav.Item(
147+
key="option",
148+
text="Web component",
149+
icon="WebComponents",
150+
)
151+
],
152+
),
153+
],
154+
),
155+
nav.Item(
156+
expanded=True,
157+
text="Share",
158+
items=[
159+
nav.Item(
160+
key="facebook", text="Share on Facebook", icon="Share"
161+
),
162+
nav.Item(
163+
key="twitter", text="Share to Twitter", icon="Share"
164+
),
165+
],
166+
),
167+
]
168+
)
169+
]
170+
)
171+
172+
return Stack(
173+
gap=30,
174+
controls=[
175+
Stack(
176+
controls=[
177+
Text(
178+
"Nav with groups and Expand, Collapse and Change events",
179+
size="xLarge",
180+
),
181+
nav1,
182+
]
183+
),
184+
Stack(controls=[Text("Nav without groups", size="xLarge"), nav2]),
185+
],
186+
)
187+
188+
189+
def main(page):
190+
191+
page.title = "Nav control samples"
192+
page.update()
193+
page.add(navs(page))
194+
195+
196+
pglet.app("python-nav", target=main)

examples/searchbox.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import pglet
2+
from pglet import SearchBox, Stack, Text
3+
4+
5+
def searchboxes():
6+
return Stack(
7+
gap=20,
8+
controls=[
9+
Stack(
10+
horizontal=True,
11+
gap=25,
12+
controls=[
13+
Stack(
14+
controls=[
15+
Text("Default searchbox", size="xLarge"),
16+
SearchBox(),
17+
]
18+
),
19+
Stack(
20+
controls=[
21+
Text("Underlined SearchBox", size="xLarge"),
22+
SearchBox(
23+
underlined=True, placeholder="Search files and folders"
24+
),
25+
]
26+
),
27+
],
28+
),
29+
Stack(
30+
horizontal=True,
31+
gap=25,
32+
controls=[
33+
Stack(
34+
controls=[
35+
Text("Disabled SearchBox", size="xLarge"),
36+
SearchBox(disabled=True, placeholder="Search something..."),
37+
SearchBox(
38+
underlined=True,
39+
disabled=True,
40+
placeholder="Search something...",
41+
),
42+
]
43+
),
44+
Stack(
45+
controls=[
46+
Text("SearchBox with custom icon", size="xLarge"),
47+
SearchBox(
48+
placeholder="Filter something by",
49+
icon="Filter",
50+
icon_color="red",
51+
),
52+
]
53+
),
54+
],
55+
),
56+
Text("SearchBox with Search, Clear and Escape events", size="xLarge"),
57+
searchbox_with_search_clear_escape(),
58+
Text("SearchBox with Change event", size="xLarge"),
59+
searchbox_with_change(),
60+
],
61+
)
62+
63+
64+
def searchbox_with_search_clear_escape():
65+
def enter_clicked(e):
66+
messages.controls.append(Text(f"You have searched for {sb.value}."))
67+
sb.value = ""
68+
stack.update()
69+
70+
def clear_or_esc_clicked(e):
71+
messages.controls.append(Text("You have cleared the box."))
72+
stack.update()
73+
74+
sb = SearchBox(
75+
placeholder="Search something and click Enter, X or Esc",
76+
on_search=enter_clicked,
77+
on_clear=clear_or_esc_clicked,
78+
)
79+
messages = Stack()
80+
stack = Stack(controls=[sb, messages])
81+
return stack
82+
83+
84+
def searchbox_with_change():
85+
def searchbox_changed(e):
86+
t.value = f"You have searched for {sb.value}."
87+
stack.update()
88+
89+
sb = SearchBox(placeholder="Search something...", on_change=searchbox_changed)
90+
t = Text()
91+
stack = Stack(controls=[sb, t])
92+
return stack
93+
94+
95+
def main(page):
96+
97+
page.title = "Searchbox control samples"
98+
page.update()
99+
page.add(searchboxes())
100+
101+
102+
pglet.app("python-searchbox", target=main)

pglet/page.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,7 @@ def signin(self):
380380
return self._get_attr("signin")
381381

382382
@signin.setter
383-
@beartype
384-
def signin(self, value: Optional[bool]):
383+
def signin(self, value):
385384
self._set_attr("signin", value)
386385

387386
# signin_allow_dismiss
@@ -400,7 +399,8 @@ def signin_groups(self):
400399
return self._get_attr("signinGroups")
401400

402401
@signin_groups.setter
403-
def signin_groups(self, value):
402+
@beartype
403+
def signin_groups(self, value: Optional[bool]):
404404
self._set_attr("signinGroups", value)
405405

406406
# user_auth_provider

0 commit comments

Comments
 (0)