2025-03-13 17:55:37 +01:00

59 lines
2.1 KiB
Python

from __future__ import annotations
from typing import Literal
from gradio_client.documentation import document
from gradio.blocks import BlockContext
from gradio.component_meta import ComponentMeta
from gradio.events import Events
@document()
class Sidebar(BlockContext, metaclass=ComponentMeta):
"""
Sidebar is a collapsible panel that renders child components on the left side of the screen within a Blocks layout.
Example:
with gr.Blocks() as demo:
with gr.Sidebar():
gr.Textbox()
gr.Button()
Guides: controlling-layout
"""
EVENTS = [Events.expand, Events.collapse]
def __init__(
self,
label: str | None = None,
*,
open: bool = True,
visible: bool = True,
elem_id: str | None = None,
elem_classes: list[str] | str | None = None,
render: bool = True,
width: int | str = 320,
position: Literal["left", "right"] = "left",
):
"""
Parameters:
label: name of the sidebar. Not displayed to the user.
open: if True, sidebar is open by default.
elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.
elem_classes: An optional string or list of strings that are assigned as the class of this component in the HTML DOM. Can be used for targeting CSS styles.
render: If False, this layout will not be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.
width: The width of the sidebar, specified in pixels if a number is passed, or in CSS units if a string is passed.
position: The position of the sidebar in the layout, either "left" or "right". Defaults to "left".
"""
self.label = label
self.open = open
self.width = width
self.position = position
BlockContext.__init__(
self,
visible=visible,
elem_id=elem_id,
elem_classes=elem_classes,
render=render,
)