Skip to content

Commit efb6975

Browse files
committed
refactor: Enhance form and button label flexibility
- Make submit and cancel button labels optional in form and widgets - Refactor chatmark header construction for conditional button labels - Implement assertion for Radio widget's default_selected option
1 parent d3b6f59 commit efb6975

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

libs/chatmark/form.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ def __init__(
1414
self,
1515
components: List[Union[Widget, str]],
1616
title: Optional[str] = None,
17-
submit_button_name="Submit",
18-
cancel_button_name="Cancel",
17+
submit_button_name: Optional[str] = None,
18+
cancel_button_name: Optional[str] = None
1919
):
2020
"""
2121
components: components in the form, can be widgets (except Button) or strings
@@ -78,8 +78,12 @@ def render(self):
7878

7979
self._rendered = True
8080

81+
chatmark_header = "```chatmark"
82+
chatmark_header += f" submit={self._submit}" if self._submit else ""
83+
chatmark_header += f" cancel={self._cancel}" if self._cancel else ""
84+
8185
lines = [
82-
f"```chatmark submit={self._submit} cancel={self._cancel}",
86+
chatmark_header,
8387
self._in_chatmark(),
8488
"```",
8589
]

libs/chatmark/widgets.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Widget(ABC):
99
Abstract base class for widgets
1010
"""
1111

12-
def __init__(self, submit: Optional[str] = None, cancel: str = "Cancel"):
12+
def __init__(self, submit: Optional[str] = None, cancel: Optional[str] = None):
1313
self._rendered = False
1414
# Prefix for IDs/keys in the widget
1515
self._id_prefix = self.gen_id_prefix()
@@ -42,10 +42,9 @@ def render(self) -> None:
4242

4343
self._rendered = True
4444

45-
if self._submit is None:
46-
chatmark_header = "```chatmark"
47-
else:
48-
chatmark_header = f"```chatmark submit={self._submit} cancel={self._cancel}"
45+
chatmark_header = "```chatmark"
46+
chatmark_header += f" submit={self._submit}" if self._submit else ""
47+
chatmark_header += f" cancel={self._cancel}" if self._cancel else ""
4948

5049
lines = [
5150
chatmark_header,
@@ -261,9 +260,8 @@ def __init__(
261260
default_selected: index of the option to be selected by default, default to None
262261
title: title of the widget
263262
"""
264-
# TODO: implement default_selected after the design is ready
265-
# if default_selected is not None:
266-
# assert 0 <= default_selected < len(options)
263+
if default_selected is not None:
264+
assert 0 <= default_selected < len(options)
267265

268266
super().__init__(submit_button_name, cancel_button_name)
269267

@@ -299,7 +297,7 @@ def _in_chatmark(self) -> str:
299297
for idx, option in enumerate(self._options):
300298
key = self.gen_id(self._id_prefix, idx)
301299
if self._selection is not None and self._selection == idx:
302-
lines.append(f"> X ({key}) {option}")
300+
lines.append(f"> x ({key}) {option}")
303301
else:
304302
lines.append(f"> - ({key}) {option}")
305303

0 commit comments

Comments
 (0)