feat: basic select layout

This commit is contained in:
Hazel 2024-05-24 13:21:07 +02:00
parent b5a5559f7b
commit c0fbd16929

View File

@ -451,10 +451,27 @@ class Option:
This could represent a data object, a string or a page. This could represent a data object, a string or a page.
""" """
def __init__(self, value: Any, text: Optional[str] = None, keys: Set[str] = None): def __init__(self, value: Any, text: Optional[str] = None, keys: Set[str] = None, hidden: bool = False):
self.value = value self.value = value
self.text = text or str(value) self.text = text or str(value)
self.hidden = hidden
self.keys = keys or set() self.keys = keys or set()
self.keys.add(self.text) self.keys.add(self.text)
class SelectOption:
def __init__(self, options: List[Option] = None):
self._key_to_option: Dict[Any, Option] = dict()
self._options: List[Option] = options
self.extend(options or [])
def append(self, option: Option):
self._options.append(option)
for key in option.keys:
self._key_to_option[key] = option
def extend(self, options: List[Option]):
for option in options:
self.append(option)