Skip to content

Commit 336a63d

Browse files
fix: element render for each level
1 parent 9abf9a9 commit 336a63d

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

Home.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,5 @@
5353
with ui.element("card", key="base_ele2") as card2:
5454
card2.add_child(ui.element("input", key="nst2_input", label="Value"))
5555
card2.add_child(ui.element("button", key="nst2_btn", text="Nest Submmit", variant="outline"))
56-
card.add_child(card2)
56+
card.add_child(card2)
5757
card.add_child(ui.element("button", key="nst_btn", text="Hello World"))
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import streamlit as st
2+
3+
def get_context():
4+
if (st.session_state.get("_shadcn_ui_context", None) is None):
5+
st.session_state["_shadcn_ui_context"] = {
6+
"in_render": False,
7+
}
8+
ctx = st.session_state.get("_shadcn_ui_context")
9+
return ctx

streamlit_shadcn_ui/py_components/base/element.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from streamlit_shadcn_ui.py_components.utils.declare import declare_component
2-
2+
from .context import get_context
33
component_func = declare_component("element_renderer", release=False)
44

55
class UIElement:
@@ -8,6 +8,7 @@ def __init__(self, name: str, props=None, key=None):
88
self.props = props
99
self.name = name
1010
self.children = []
11+
self.is_root = False
1112

1213
def renderTree(self, tree):
1314
c = component_func(comp="element_renderer", props={
@@ -27,11 +28,19 @@ def render(self):
2728
return tree
2829

2930
def __enter__(self):
31+
ctx = get_context()
32+
if (ctx["in_render"] is False):
33+
ctx["in_render"] = True
34+
self.is_root = True
3035
return self
3136

3237
def __exit__(self, exc_type, exc_val, exc_tb):
3338
tree = self.render()
34-
return self.renderTree(tree)
39+
ctx = get_context()
40+
if (self.is_root):
41+
ctx["in_render"] = False
42+
return self.renderTree(tree)
43+
return
3544

3645
def add_child(self, child):
3746
self.children.append(child)

0 commit comments

Comments
 (0)