R: Buttons

Buttons {shinyBS} | R Documentation

## Buttons

### Description

Twitter Bootstrap gives many options for styling buttons that aren't made available by standard Shiny. Use shinyBS to create buttons of different sizes, shapes, and colors.

### Details

Create a button in the UI with `bsButton`. If `type = "action"` the button will behave like the standard `actionButton` in shiny. If `type = "toggle"` the button will behave like a `checkboxInput` with an on and off state. It will return `TRUE` or `FALSE` to the Server depending on its state.

You can update the style and state of a `bsButton` from the Server logic with `updateButton`. For example, a button could be set to `disabled = TRUE` until the user has made some other selections, then once those selections have been made, an observer on the Server could use `updateButton` to enable the button allowing the user to proceed. Alternatively, you could set the button to `style = "success"` to let them know that the button is ready to be clicked.

### Components

There are two functions in the Buttons family:

`bsButton`

  Used in the UI to create a button. Buttons can be of the type `action` or `toggle`.

`updateButton`

  Used in the Server logic to modify the state of a button created with `bsButton`

### Changes

`bsActionButton` and `bsToggleButton` were replaced with just `bsButton` with a `type` argument.

`icon` was added to allow placing an icon in the button.

### Note

Run `bsExample("Buttons")` for an example of `Buttons` functionality.

### See Also

Twitter Bootstrap 3

Other Buttons: `bsButton`; `updateButton`

### Examples

    library(shiny)
    library(shinyBS)
    app = shinyApp(
     ui =
       fluidPage(
         sidebarLayout(
           sidebarPanel(
             sliderInput("bins",
                         "Move the slider to see its effect on the button below:",
                         min = 1,
                         max = 50,
                         value = 1),
             bsButton("actTwo", label = "Click me if you dare!", icon = icon("ban")),
             tags$p("Clicking the first button below changes the disabled state of the second button."),
             bsButton("togOne", label = "Toggle button disabled status",
                      block = TRUE, type = "toggle", value = TRUE),
             bsButton("actOne", label = "Block Action Button", block = TRUE)

           ),
           mainPanel(
             textOutput("exampleText")
           )
         )
       ),
     server =
       function(input, output, session) {
         observeEvent(input$togOne, ({
           updateButton(session, "actOne", disabled = !input$togOne)
         }))
         observeEvent(input$bins, ({

           b <- input$bins
           disabled = NULL
           style = "default"
           icon = ""

           if(b < 5) {
             disabled = TRUE
             icon <- icon("ban")
           } else {
             disabled = FALSE
           }

           if(b < 15 | b > 35) {
             style = "danger"
           } else if(b < 20 | b > 30) {
             style = "warning"
           } else {
             style = "default"
             icon = icon("check")
           }

           updateButton(session, "actTwo", disabled = disabled, style = style, icon = icon)

         }))

         output$exampleText <- renderText({
           input$actTwo
           b <- isolate(input$bins)
           txt = ""
           if((b > 5 & b < 15) | b > 35) {
             txt = "That was dangerous."
           } else if((b > 5 & b < 20) | b > 30) {
             txt = "I warned you about that."
           } else if(b >= 20 &  b <= 30) {
             txt = "You have chosen... wisely."
           }
           return(txt)
         })
       }
    )
    ## Not run:
     runApp(app)

    ## End(Not run)

[Package shinyBS version 0.61 Index]