library(shiny) library(bsplus) lorem_ipsum <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." ui <- fluidPage( tags$style(HTML(' /* Icon when the collapsible content is shown */ .collbtn:after { content: "-"; float: right; margin-left: 10px; } /* Icon when the collapsible content is hidden */ .collbtn.collapsed:after { content: "+"; } ')), titlePanel("bs_attach_collapse with custom classes"), fluidPage( column( width = 4, bs_button("show = TRUE, class lost", class = "collbtn") %>% bs_attach_collapse("panel-A"), bs_collapse("panel-A", show = TRUE, wellPanel(lorem_ipsum)) ), column( width = 4, bs_button("show = TRUE, class added", class = "collbtn") %>% bs_attach_collapse("panel-B") %>% tagAppendAttributes(class = "collbtn"), bs_collapse("panel-B", show = TRUE, wellPanel(lorem_ipsum)) ), column( width = 4, bs_button("show = FALSE, class added", class = "collbtn collapsed") %>% bs_attach_collapse("panel-C") %>% tagAppendAttributes(class = "collbtn collapsed"), bs_collapse("panel-C", show = FALSE, wellPanel(lorem_ipsum)) ) ) ) server <- function(input, output) {} shinyApp(ui = ui, server = server)