fix menu items= API (#1905)

This commit is contained in:
Thomas Brandého 2023-10-03 02:42:36 +02:00 committed by GitHub
parent 53d205ad9f
commit c131f76e33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,7 @@
"""Menu components.""" """Menu components."""
from __future__ import annotations from __future__ import annotations
from typing import Any, List, Union from typing import Any, List, Optional, Union
from reflex.components.component import Component from reflex.components.component import Component
from reflex.components.libs.chakra import ChakraComponent from reflex.components.libs.chakra import ChakraComponent
@ -74,7 +74,13 @@ class Menu(ChakraComponent):
} }
@classmethod @classmethod
def create(cls, *children, button=None, items=None, **props) -> Component: def create(
cls,
*children,
button: Optional[Component] = None,
items: Optional[List] = None,
**props,
) -> Component:
"""Create a menu component. """Create a menu component.
Args: Args:
@ -117,6 +123,24 @@ class MenuList(ChakraComponent):
tag = "MenuList" tag = "MenuList"
@classmethod
def create(cls, *children, **props) -> ChakraComponent:
"""Create a MenuList component, and automatically wrap in MenuItem if not already one.
Args:
*children: The children of the component.
**props: The properties of the component.
Returns:
The MenuList component.
"""
if len(children) != 0:
children = [
child if isinstance(child, MenuItem) else MenuItem.create(child)
for child in children
]
return super().create(*children, **props)
class MenuItem(ChakraComponent): class MenuItem(ChakraComponent):
"""The trigger that handles menu selection. Must be a direct child of a MenuList.""" """The trigger that handles menu selection. Must be a direct child of a MenuList."""