reflex/integration/loadtesting/sandbox/components/drawer.py
2024-09-03 03:12:46 +05:30

61 lines
1.7 KiB
Python

import reflex as rx
from sandbox.states.queries import QueryAPI
def render_data(data: tuple[str, str]):
return rx.vstack(
rx.text(data[0], weight="bold"),
rx.input(
value=data[1],
width="100%",
on_change=lambda value: QueryAPI.update_data(value, data),
),
width="100%",
spacing="2",
)
def render_drawer_buttons(name: str, color: str, function: callable):
return rx.badge(
rx.text(name, width="100%", text_align="center"),
color_scheme=color,
on_click=function,
variant="surface",
padding="0.75em 1.25em",
width="100%",
cursor="pointer",
)
def render_drawer():
return rx.drawer.root(
rx.drawer.overlay(z_index="5"),
rx.drawer.portal(
rx.drawer.content(
rx.vstack(
rx.foreach(QueryAPI.selected_entry, render_data),
rx.vstack(
render_drawer_buttons(
"Commit", "grass", QueryAPI.commit_changes
),
render_drawer_buttons("Close", "ruby", QueryAPI.delta_drawer),
padding="1em 0.5em",
width="inherit",
),
bg=rx.color_mode_cond("#faf9fb", "#1a181a"),
height="100%",
width="100%",
padding="1.25em",
),
top="auto",
left="auto",
height="100%",
width="25em",
on_interact_outside=QueryAPI.delta_drawer(),
),
),
direction="right",
open=QueryAPI.is_open,
)