Collapse panels allow you to reduce clutter in your Shiny app by making panels of information that open and close with a user's click. Any type of content can go in a collapse panel. Standard Bootstrap styling options are available.
list("tabsetPanel") in their implementation.
Start with bsCollapse to create a panel group, then fill it with panels
using bsCollapsePanel.
bsCollapse acts as an input, so you can retrieve which panels are open
from the input object passed to the function in list("shinyServer").
updateCollapse can be used within your server logic to open/close
collapse panels or to change their style.
bsCollapse is used in your UI to create a collapse panel group. Use
list("bsCollapsePanel") to populate this object with panels.
bsCollapse(..., id = NULL, multiple = FALSE, open = NULL)
idinput$id in your Server logic to
determine which panels are open, and list("updateCollapse") to open/close
panels.multipleFALSE.openvalue, (or if none was supplied, the title) of
the panel(s) you want open on load....list("bsCollapsePanel") elements to include in the Collapse.
bsCollapsePanel creates individual panels within a list("bsCollapse") object.
bsCollapsePanel(title, ..., value = title, style = NULL)
titlevaluetitle.styleprimary, danger, warning, info, or success)...
updateCollapse is used within the Server logic of your Shiny app to
modify a Collapse after load.
updateCollapse(session, id, open = NULL, close = NULL, style = NULL)
sessionidopenvalue (or title if no value was
provided) values identifying the panels you want to open.closevalue (or title if no value was
provided) values identifying the panels you want to close.styleprimary, danger, info,
warning, success, or default). The names should correspond
to the value (or title if no value was provided) of the
list("bsCollapsePanel") you want to change.
style is a new option that wasn't available in previous versions of
shinyBS.
library(shiny)
library(shinyBS)
shinyApp(
ui =
fluidPage(
sidebarLayout(
sidebarPanel(HTML("This button will open Panel 1 using updateCollapse."),
actionButton("p1Button", "Push Me!"),
selectInput("styleSelect", "Select style for Panel 1",
c("default", "primary", "danger", "warning", "info", "success"))
),
mainPanel(
bsCollapse(id = "collapseExample", open = "Panel 2",
bsCollapsePanel("Panel 1", "This is a panel with just text ",
"and has the default style. You can change the style in ",
"the sidebar.", style = "info"),
bsCollapsePanel("Panel 2", "This panel has a generic plot. ",
"and a 'success' style.", plotOutput("genericPlot"), style = "success")
)
)
)
),
server =
function(input, output, session) {
output$genericPlot <- renderPlot(plot(rnorm(100)))
observeEvent(input$p1Button, ({
updateCollapse(session, "collapseExample", open = "Panel 1")
}))
observeEvent(input$styleSelect, ({
updateCollapse(session, "collapseExample", style = list("Panel 1" = input$styleSelect))
}))
}
)