31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
# dashboard/callbacks/ui_callbacks.py
|
|
|
|
from dash import Input, Output, State, callback
|
|
from components.sidebar import Sidebar
|
|
|
|
# 1) Toggle-Callback: Umschalten von collapsed = False ↔ True
|
|
@callback(
|
|
Output("sidebar-state", "data"),
|
|
Input("btn-toggle-sidebar", "n_clicks"),
|
|
State("sidebar-state", "data"),
|
|
prevent_initial_call=True
|
|
)
|
|
def toggle_sidebar(n_clicks, state):
|
|
# Wenn der Button geklickt wurde, invertiere den collapsed-Wert
|
|
collapsed = state.get("collapsed", False)
|
|
return {"collapsed": not collapsed}
|
|
|
|
|
|
# 2) Render-Callback: Zeichnet die Sidebar neu und setzt die CSS-Klasse
|
|
@callback(
|
|
[Output("sidebar", "children"), Output("sidebar", "className")],
|
|
Input("sidebar-state", "data")
|
|
)
|
|
def render_sidebar(state):
|
|
collapsed = state.get("collapsed", False)
|
|
sidebar_class = "sidebar collapsed" if collapsed else "sidebar"
|
|
|
|
# Sidebar() gibt jetzt nur den Inhalt zurück
|
|
sidebar_content = Sidebar(collapsed=collapsed)
|
|
|
|
return sidebar_content, sidebar_class |