1
0
Эх сурвалжийг харах

convert text inside list_item to span and set icon display to inline (#2860)

* convert text inside list_item to span and set icon display to inline

* fix props

* add comment for reflex-web
Thomas Brandého 1 жил өмнө
parent
commit
1048f86dd3

+ 31 - 4
reflex/components/radix/themes/layout/list.py

@@ -5,6 +5,8 @@ from typing import Iterable, Literal, Optional, Union
 from reflex.components.component import Component, ComponentNamespace
 from reflex.components.component import Component, ComponentNamespace
 from reflex.components.core.foreach import Foreach
 from reflex.components.core.foreach import Foreach
 from reflex.components.el.elements.typography import Li
 from reflex.components.el.elements.typography import Li
+from reflex.components.lucide.icon import Icon
+from reflex.components.radix.themes.typography.text import Text
 from reflex.style import Style
 from reflex.style import Style
 from reflex.vars import Var
 from reflex.vars import Var
 
 
@@ -39,12 +41,16 @@ LiteralListStyleTypeOrdered = Literal[
 class BaseList(Flex, LayoutComponent):
 class BaseList(Flex, LayoutComponent):
     """Base class for ordered and unordered lists."""
     """Base class for ordered and unordered lists."""
 
 
+    # The style of the list. Default to "none".
+    list_style_type: Var[
+        Union[LiteralListStyleTypeUnordered, LiteralListStyleTypeOrdered]
+    ]
+
     @classmethod
     @classmethod
     def create(
     def create(
         cls,
         cls,
         *children,
         *children,
         items: Optional[Union[Var[Iterable], Iterable]] = None,
         items: Optional[Union[Var[Iterable], Iterable]] = None,
-        list_style_type: str = "",
         **props,
         **props,
     ):
     ):
         """Create a list component.
         """Create a list component.
@@ -52,21 +58,23 @@ class BaseList(Flex, LayoutComponent):
         Args:
         Args:
             *children: The children of the component.
             *children: The children of the component.
             items: A list of items to add to the list.
             items: A list of items to add to the list.
-            list_style_type: The style of the list.
             **props: The properties of the component.
             **props: The properties of the component.
 
 
         Returns:
         Returns:
             The list component.
             The list component.
+
         """
         """
+        list_style_type = props.pop("list_style_type", "none")
         if not children and items is not None:
         if not children and items is not None:
             if isinstance(items, Var):
             if isinstance(items, Var):
                 children = [Foreach.create(items, ListItem.create)]
                 children = [Foreach.create(items, ListItem.create)]
             else:
             else:
                 children = [ListItem.create(item) for item in items]
                 children = [ListItem.create(item) for item in items]
-        props["list_style_type"] = list_style_type
+        # props["list_style_type"] = list_style_type
         props["direction"] = "column"
         props["direction"] = "column"
         style = props.setdefault("style", {})
         style = props.setdefault("style", {})
         style["list_style_position"] = "outside"
         style["list_style_position"] = "outside"
+        style["list_style_type"] = list_style_type
         if "gap" in props:
         if "gap" in props:
             style["gap"] = props["gap"]
             style["gap"] = props["gap"]
         return super().create(*children, **props)
         return super().create(*children, **props)
@@ -102,6 +110,7 @@ class UnorderedList(BaseList):
 
 
         Returns:
         Returns:
             The list component.
             The list component.
+
         """
         """
         return super().create(
         return super().create(
             *children, items=items, list_style_type=list_style_type, **props
             *children, items=items, list_style_type=list_style_type, **props
@@ -129,6 +138,7 @@ class OrderedList(BaseList):
 
 
         Returns:
         Returns:
             The list component.
             The list component.
+
         """
         """
         return super().create(
         return super().create(
             *children, items=items, list_style_type=list_style_type, **props
             *children, items=items, list_style_type=list_style_type, **props
@@ -138,7 +148,24 @@ class OrderedList(BaseList):
 class ListItem(Li):
 class ListItem(Li):
     """Display an item of an ordered or unordered list."""
     """Display an item of an ordered or unordered list."""
 
 
-    ...
+    @classmethod
+    def create(cls, *children, **props):
+        """Create a list item component.
+
+        Args:
+            *children: The children of the component.
+            **props: The properties of the component.
+
+        Returns:
+            The list item component.
+
+        """
+        for child in children:
+            if isinstance(child, Text):
+                child.as_ = "span"
+            elif isinstance(child, Icon) and "display" not in child.style:
+                child.style["display"] = "inline"
+        return super().create(*children, **props)
 
 
 
 
 class List(ComponentNamespace):
 class List(ComponentNamespace):

+ 53 - 9
reflex/components/radix/themes/layout/list.pyi

@@ -11,6 +11,8 @@ from typing import Iterable, Literal, Optional, Union
 from reflex.components.component import Component, ComponentNamespace
 from reflex.components.component import Component, ComponentNamespace
 from reflex.components.core.foreach import Foreach
 from reflex.components.core.foreach import Foreach
 from reflex.components.el.elements.typography import Li
 from reflex.components.el.elements.typography import Li
+from reflex.components.lucide.icon import Icon
+from reflex.components.radix.themes.typography.text import Text
 from reflex.style import Style
 from reflex.style import Style
 from reflex.vars import Var
 from reflex.vars import Var
 from .base import LayoutComponent
 from .base import LayoutComponent
@@ -41,7 +43,50 @@ class BaseList(Flex, LayoutComponent):
         cls,
         cls,
         *children,
         *children,
         items: Optional[Union[Union[Var[Iterable], Iterable], Iterable]] = None,
         items: Optional[Union[Union[Var[Iterable], Iterable], Iterable]] = None,
-        list_style_type: Optional[str] = "",
+        list_style_type: Optional[
+            Union[
+                Var[
+                    Union[
+                        Literal["none", "disc", "circle", "square"],
+                        Literal[
+                            "none",
+                            "decimal",
+                            "decimal-leading-zero",
+                            "lower-roman",
+                            "upper-roman",
+                            "lower-greek",
+                            "lower-latin",
+                            "upper-latin",
+                            "armenian",
+                            "georgian",
+                            "lower-alpha",
+                            "upper-alpha",
+                            "hiragana",
+                            "katakana",
+                        ],
+                    ]
+                ],
+                Union[
+                    Literal["none", "disc", "circle", "square"],
+                    Literal[
+                        "none",
+                        "decimal",
+                        "decimal-leading-zero",
+                        "lower-roman",
+                        "upper-roman",
+                        "lower-greek",
+                        "lower-latin",
+                        "upper-latin",
+                        "armenian",
+                        "georgian",
+                        "lower-alpha",
+                        "upper-alpha",
+                        "hiragana",
+                        "katakana",
+                    ],
+                ],
+            ]
+        ] = None,
         as_child: Optional[Union[Var[bool], bool]] = None,
         as_child: Optional[Union[Var[bool], bool]] = None,
         direction: Optional[
         direction: Optional[
             Union[
             Union[
@@ -257,7 +302,7 @@ class BaseList(Flex, LayoutComponent):
         Args:
         Args:
             *children: The children of the component.
             *children: The children of the component.
             items: A list of items to add to the list.
             items: A list of items to add to the list.
-            list_style_type: The style of the list.
+            list_style_type: The style of the list. Default to "none".
             as_child: Change the default rendered element for the one passed as a child, merging their props and behavior.
             as_child: Change the default rendered element for the one passed as a child, merging their props and behavior.
             direction: How child items are layed out: "row" | "column" | "row-reverse" | "column-reverse"
             direction: How child items are layed out: "row" | "column" | "row-reverse" | "column-reverse"
             align: Alignment of children along the main axis: "start" | "center" | "end" | "baseline" | "stretch"
             align: Alignment of children along the main axis: "start" | "center" | "end" | "baseline" | "stretch"
@@ -306,6 +351,7 @@ class BaseList(Flex, LayoutComponent):
 
 
         Returns:
         Returns:
             The list component.
             The list component.
+
         """
         """
         ...
         ...
 
 
@@ -581,6 +627,7 @@ class UnorderedList(BaseList):
 
 
         Returns:
         Returns:
             The list component.
             The list component.
+
         """
         """
         ...
         ...
 
 
@@ -873,12 +920,11 @@ class OrderedList(BaseList):
 
 
         Returns:
         Returns:
             The list component.
             The list component.
+
         """
         """
         ...
         ...
 
 
 class ListItem(Li):
 class ListItem(Li):
-    ...
-
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -977,7 +1023,7 @@ class ListItem(Li):
         ] = None,
         ] = None,
         **props
         **props
     ) -> "ListItem":
     ) -> "ListItem":
-        """Create the component.
+        """Create a list item component.
 
 
         Args:
         Args:
             *children: The children of the component.
             *children: The children of the component.
@@ -1003,13 +1049,11 @@ class ListItem(Li):
             class_name: The class name for the component.
             class_name: The class name for the component.
             autofocus: Whether the component should take the focus once the page is loaded
             autofocus: Whether the component should take the focus once the page is loaded
             custom_attrs: custom attribute
             custom_attrs: custom attribute
-            **props: The props of the component.
+            **props: The properties of the component.
 
 
         Returns:
         Returns:
-            The component.
+            The list item component.
 
 
-        Raises:
-            TypeError: If an invalid child is passed.
         """
         """
         ...
         ...