61 lines
1.7 KiB
Python
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,
|
|
)
|