How to apply a class to a Shiny actionButton?

Viewed 1017

I am using a bootstrap theme for my application in shiny.

This theme provides some button styles, which are associated with a certain class. For example:

<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-link">Link</button>

However, when I create a new button with:

shiny::actionButton(ns("btn_wuser"),
                    class = "btn btn-link",
                    label = "Button")

I am unable to indicate which class the button should be linked to. I've tried also:

   shiny::actionButton(ns("btn_wuser"),
                       style = "class: 'btn btn-link;'")

Minimal reproducible example:

library(shiny)
library(bslib)

ui <- navbarPage(
  theme = bslib::bs_theme_update(bslib::bs_theme(),
                      base_font = bslib::font_google("Montserrat"),
                      code_font = bslib::font_google("Montserrat"),
                      bootswatch = "lumen",
                      bg = "#ecf0f5",
                      fg = "#000000"),
   collapsible = TRUE,

   shiny::actionButton("btn_wuser",
                       class = "btn btn-link",
                       label = "Button"
                       )
)

server <- function(input, output, session) {
}

shinyApp(ui = ui, server = server)

Could someone help me?

1 Answers

I cleaned your example a little bit to better utilize the navbarPage layout. I believe the button example that you posted had the btn-link class already. Here is an example that shows all 4 classes that you mentioned. For each one, class could be written as either btn btn-name or btn-name.

library(shiny)
library(bslib)

ui <- navbarPage(
  title = "My button gallery",
  theme = bslib::bs_theme_update(bslib::bs_theme(),
                                 base_font = bslib::font_google("Montserrat"),
                                 code_font = bslib::font_google("Montserrat"),
                                 bootswatch = "lumen",
                                 bg = "#ecf0f5",
                                 fg = "#000000"),
  collapsible = TRUE,
  tabPanel("Tab A",
           fluidRow(
             column(12,
                    shiny::actionButton("btn_wuser",
                                        class = "btn btn-link",
                                        label = "Button Link"
                    ),
                    br(),
                    
                    shiny::actionButton("btn_wuser2",
                                        class = "btn-link",
                                        label = "Button Link"
                    ),
                    br(),
                    
                    shiny::actionButton("btn_wuser3",
                                        class = "btn btn-success",
                                        label = "Button Success"
                    ),
                    br(),
                    
                    shiny::actionButton("btn_wuser4",
                                        class = "btn-success",
                                        label = "Button Success"
                    ),
                    br(),
                    
                    shiny::actionButton("btn_wuser5",
                                        class = "btn btn-primary",
                                        label = "Button Primary"
                    ),
                    br(),
                    
                    shiny::actionButton("btn_wuser6",
                                        class = "btn-primary",
                                        label = "Button Primary"
                    ),
                    br(),
                    
                    shiny::actionButton("btn_wuser7",
                                        class = "btn btn-secondary",
                                        label = "Button Secondary"
                    ),
                    br(),
                    
                    shiny::actionButton("btn_wuser8",
                                        class = "btn-secondary",
                                        label = "Button Secondary"
                    )
                  
                    
              )
           )
  )
  
  
)

server <- function(input, output, session) {
}

shinyApp(ui = ui, server = server)
Related