ui.accordion
ui.accordion(
    *args,
    id=None,
    open=None,
    multiple=True,
    class_=None,
    width=None,
    height=None,
    **kwargs,
)Create a vertically collapsing accordion.
Parameters
- *args : AccordionPanel | TagAttrs = ()
- 
AccordionPanel objects returned from accordion_panel. Or tag attributes that are supplied to the returned Tag object. 
- id : Optional[str] = None
- 
If provided, you can use input.id()in your server logic to determine which of the accordion_panels are currently active. The value will correspond to the accordion_panel’svalueargument.
- open : Optional[bool | str |- list[str]] = None
- 
A list of accordion_panel values to open (i.e., show) by default. The default value of Nonewill open the first accordion_panel. Use a value ofTrueto open all (orFalseto open none) of the items. It’s only possible to open more than one panel whenmultiple=True.
- multiple : bool = True
- 
Whether multiple accordion_panel can be open at once. 
- class_ : Optional[str] = None
- 
Additional CSS classes to include on the accordion div. 
- width : Optional[CssUnit] = None
- 
Any valid CSS unit; for example, height=“100%”. 
- height : Optional[CssUnit] = None
- 
Any valid CSS unit; for example, height=“100%”. 
- ****kwargs** : TagAttrValue = {}
- 
Attributes to this tag. 
Returns
- : Tag
- 
Accordion panel Tag object. 
References
See Also
Examples
#| '!! shinylive warning !!': |
#|   shinylive does not work in self-contained HTML documents.
#|   Please set `embed-resources: false` in your metadata.
#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400
## file: app.py
from shiny import App, Inputs, Outputs, Session, render, ui
def make_items():
    return [
        ui.accordion_panel(f"Section {letter}", f"Some narrative for section {letter}")
        for letter in "ABCDE"
    ]
# # First shown by default
# ui.accordion(*make_items())
# # Nothing shown by default
# ui.accordion(*make_items(), open=False)
# # Everything shown by default
# ui.accordion(*make_items(), open=True)
# # Show particular sections
# ui.accordion(*make_items(), open="Section B")
# ui.accordion(*make_items(), open=["Section A", "Section B"])
app_ui = ui.page_fluid(
    ui.markdown("#### Accordion: (`multiple=False`)"),
    # Provide an id to create a shiny input binding
    ui.accordion(*make_items(), id="acc_single", multiple=False),
    ui.output_text_verbatim("acc_single_val", placeholder=True),
    ui.tags.br(),
    ui.markdown("#### Accordion: (`multiple=True`)"),
    ui.accordion(*make_items(), id="acc_multiple"),
    ui.output_text_verbatim("acc_multiple_val", placeholder=True),
)
def server(input: Inputs, output: Outputs, session: Session):
    @render.text
    def acc_single_val():
        return "input.acc_single(): " + str(input.acc_single())
    @render.text
    def acc_multiple_val():
        return "input.acc_multiple(): " + str(input.acc_multiple())
app = App(app_ui, server)