From d57d9c78cf84fc1146b15a6d91bae2141a0ceb90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Brand=C3=A9ho?= Date: Sun, 12 Feb 2023 18:24:55 +0100 Subject: [PATCH] Fix interactions between foreach and cond (#521) --- pynecone/components/layout/cond.py | 6 ++++++ pynecone/components/tags/iter_tag.py | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pynecone/components/layout/cond.py b/pynecone/components/layout/cond.py index d80f306f2..a77b6aaa0 100644 --- a/pynecone/components/layout/cond.py +++ b/pynecone/components/layout/cond.py @@ -38,8 +38,14 @@ class Cond(Component): Returns: The conditional component. """ + from pynecone.components.layout.foreach import Foreach + if comp2 is None: comp2 = Fragment.create() + if isinstance(comp1, Foreach): + comp1 = Fragment.create(comp1) + if isinstance(comp2, Foreach): + comp2 = Fragment.create(comp2) if isinstance(comp1, Cond): comp1.is_nested = True if isinstance(comp2, Cond): diff --git a/pynecone/components/tags/iter_tag.py b/pynecone/components/tags/iter_tag.py index a588eef54..9fe6f1d0f 100644 --- a/pynecone/components/tags/iter_tag.py +++ b/pynecone/components/tags/iter_tag.py @@ -58,6 +58,7 @@ class IterTag(Tag): The rendered component. """ # Import here to avoid circular imports. + from pynecone.components.layout.cond import Cond from pynecone.components.layout.foreach import Foreach from pynecone.components.layout.fragment import Fragment @@ -73,8 +74,8 @@ class IterTag(Tag): assert len(args) == 2 component = render_fn(arg, index) - # Nested foreach components must be wrapped in fragments. - if isinstance(component, Foreach): + # Nested foreach components or cond must be wrapped in fragments. + if isinstance(component, (Foreach, Cond)): component = Fragment.create(component) # Set the component key.