Khaleel Al-Adhami 4 месяцев назад
Родитель
Сommit
b7579f4d8d

+ 1 - 9
reflex/components/component.py

@@ -932,7 +932,6 @@ class Component(BaseComponent, ABC):
         """
         from reflex.components.base.bare import Bare
         from reflex.components.base.fragment import Fragment
-        from reflex.components.core.cond import Cond
         from reflex.components.core.foreach import Foreach
 
         no_valid_parents_defined = all(child._valid_parents == [] for child in children)
@@ -944,7 +943,7 @@ class Component(BaseComponent, ABC):
             return
 
         comp_name = type(self).__name__
-        allowed_components = [comp.__name__ for comp in (Fragment, Foreach, Cond)]
+        allowed_components = [comp.__name__ for comp in (Fragment, Foreach)]
 
         def validate_child(child):
             child_name = type(child).__name__
@@ -954,10 +953,6 @@ class Component(BaseComponent, ABC):
                 for c in child.children:
                     validate_child(c)
 
-            if isinstance(child, Cond):
-                validate_child(child.comp1)
-                validate_child(child.comp2)
-
             if (
                 isinstance(child, Bare)
                 and child.contents is not None
@@ -2063,13 +2058,10 @@ class StatefulComponent(BaseComponent):
             The Var from the child component or the child itself (for regular cases).
         """
         from reflex.components.base.bare import Bare
-        from reflex.components.core.cond import Cond
         from reflex.components.core.foreach import Foreach
 
         if isinstance(child, Bare):
             return child.contents
-        if isinstance(child, Cond):
-            return child.cond
         if isinstance(child, Foreach):
             return child.iterable
         return child

+ 1 - 1
reflex/components/core/__init__.py

@@ -21,7 +21,7 @@ _SUBMOD_ATTRS: dict[str, list[str]] = {
     "colors": [
         "color",
     ],
-    "cond": ["Cond", "color_mode_cond", "cond"],
+    "cond": ["color_mode_cond", "cond"],
     "debounce": ["DebounceInput", "debounce_input"],
     "foreach": [
         "foreach",

+ 0 - 1
reflex/components/core/__init__.pyi

@@ -17,7 +17,6 @@ from .breakpoints import set_breakpoints as set_breakpoints
 from .clipboard import Clipboard as Clipboard
 from .clipboard import clipboard as clipboard
 from .colors import color as color
-from .cond import Cond as Cond
 from .cond import color_mode_cond as color_mode_cond
 from .cond import cond as cond
 from .debounce import DebounceInput as DebounceInput

+ 2 - 101
reflex/components/core/cond.py

@@ -2,115 +2,16 @@
 
 from __future__ import annotations
 
-from typing import Any, Dict, Optional, overload
+from typing import Any, overload
 
 from reflex.components.base.fragment import Fragment
-from reflex.components.component import BaseComponent, Component, MemoizationLeaf
-from reflex.components.tags import CondTag, Tag
-from reflex.constants import Dirs
+from reflex.components.component import BaseComponent, Component
 from reflex.style import LIGHT_COLOR_MODE, resolved_color_mode
-from reflex.utils.imports import ImportDict, ImportVar
 from reflex.utils.types import infallible_issubclass
-from reflex.vars import VarData
 from reflex.vars.base import LiteralVar, ReflexCallable, Var
 from reflex.vars.function import ArgsFunctionOperation
 from reflex.vars.number import ternary_operation
 
-_IS_TRUE_IMPORT: ImportDict = {
-    f"$/{Dirs.STATE_PATH}": [ImportVar(tag="isTrue")],
-}
-
-
-class Cond(MemoizationLeaf):
-    """Render one of two components based on a condition."""
-
-    # The cond to determine which component to render.
-    cond: Var[Any]
-
-    # The component to render if the cond is true.
-    comp1: BaseComponent = None  # type: ignore
-
-    # The component to render if the cond is false.
-    comp2: BaseComponent = None  # type: ignore
-
-    @classmethod
-    def create(
-        cls,
-        cond: Var,
-        comp1: BaseComponent,
-        comp2: Optional[BaseComponent] = None,
-    ) -> Component:
-        """Create a conditional component.
-
-        Args:
-            cond: The cond to determine which component to render.
-            comp1: The component to render if the cond is true.
-            comp2: The component to render if the cond is false.
-
-        Returns:
-            The conditional component.
-        """
-        # Wrap everything in fragments.
-        if type(comp1).__name__ != "Fragment":
-            comp1 = Fragment.create(comp1)
-        if comp2 is None or type(comp2).__name__ != "Fragment":
-            comp2 = Fragment.create(comp2) if comp2 else Fragment.create()
-        return Fragment.create(
-            cls(
-                cond=cond,
-                comp1=comp1,
-                comp2=comp2,
-                children=[comp1, comp2],
-            )
-        )
-
-    def _get_props_imports(self):
-        """Get the imports needed for component's props.
-
-        Returns:
-            The imports for the component's props of the component.
-        """
-        return []
-
-    def _render(self) -> Tag:
-        return CondTag(
-            cond=self.cond,
-            true_value=self.comp1.render(),
-            false_value=self.comp2.render(),
-        )
-
-    def render(self) -> Dict:
-        """Render the component.
-
-        Returns:
-            The dictionary for template of component.
-        """
-        tag = self._render()
-        return dict(
-            tag.add_props(
-                **self.event_triggers,
-                key=self.key,
-                sx=self.style,
-                id=self.id,
-                class_name=self.class_name,
-            ).set(
-                props=tag.format_props(),
-            ),
-            cond_state=f"isTrue({self.cond!s})",
-        )
-
-    def add_imports(self) -> ImportDict:
-        """Add imports for the Cond component.
-
-        Returns:
-            The import dict for the component.
-        """
-        var_data = VarData.merge(self.cond._get_all_var_data())
-
-        imports = var_data.old_school_imports() if var_data else {}
-
-        return {**imports, **_IS_TRUE_IMPORT}
-
 
 @overload
 def cond(condition: Any, c1: Component, c2: Any = None) -> Component: ...

+ 4 - 4
reflex/components/radix/themes/color_mode.py

@@ -40,7 +40,7 @@ DEFAULT_LIGHT_ICON: Icon = Icon.create(tag="sun")
 DEFAULT_DARK_ICON: Icon = Icon.create(tag="moon")
 
 
-def icon(
+def color_mode_icon(
     light_component: BaseComponent | None = None,
     dark_component: BaseComponent | None = None,
 ):
@@ -145,7 +145,7 @@ class ColorModeIconButton(IconButton):
             return dropdown_menu.root(
                 dropdown_menu.trigger(
                     super().create(
-                        icon(),
+                        color_mode_icon(),
                     ),
                     **props,
                 ),
@@ -156,7 +156,7 @@ class ColorModeIconButton(IconButton):
                 ),
             )
         return IconButton.create(
-            icon(),
+            color_mode_icon(),
             on_click=toggle_color_mode,
             **props,
         )
@@ -190,7 +190,7 @@ class ColorModeSwitch(Switch):
 class ColorModeNamespace(Var):
     """Namespace for color mode components."""
 
-    icon = icon
+    icon = color_mode_icon
     button = staticmethod(ColorModeIconButton.create)
     switch = staticmethod(ColorModeSwitch.create)
 

+ 1 - 2
reflex/components/tags/iter_tag.py

@@ -114,7 +114,6 @@ class IterTag(Tag):
         """
         # Import here to avoid circular imports.
         from reflex.components.base.fragment import Fragment
-        from reflex.components.core.cond import Cond
         from reflex.components.core.foreach import Foreach
 
         # Get the render function arguments.
@@ -132,7 +131,7 @@ class IterTag(Tag):
             component = self.render_fn(arg, index)
 
         # Nested foreach components or cond must be wrapped in fragments.
-        if isinstance(component, (Foreach, Cond, Var)):
+        if isinstance(component, (Foreach, Var)):
             component = Fragment.create(component)
 
         # Set the component key.

+ 0 - 1
tests/units/components/test_component.py

@@ -1445,7 +1445,6 @@ def test_instantiate_all_components():
     # These components all have required arguments and cannot be trivially instantiated.
     untested_components = {
         "Card",
-        "Cond",
         "DebounceInput",
         "Foreach",
         "FormControl",

+ 0 - 5
tests/units/test_app.py

@@ -31,7 +31,6 @@ from reflex.app import (
 )
 from reflex.components import Component
 from reflex.components.base.fragment import Fragment
-from reflex.components.core.cond import Cond
 from reflex.components.radix.themes.typography.text import Text
 from reflex.event import Event, EventHandler
 from reflex.middleware import HydrateMiddleware
@@ -1228,10 +1227,6 @@ def test_overlay_component(
         assert app.overlay_component is not None
         generated_component = app._generate_component(app.overlay_component)  # type: ignore
         assert isinstance(generated_component, OverlayFragment)
-        assert isinstance(
-            generated_component.children[0],
-            Cond,  # ConnectionModal is a Cond under the hood
-        )
     else:
         assert app.overlay_component is not None
         assert isinstance(