R: Modals

Modals {shinyBS} | R Documentation

## Modals

### Description

Modal windows are similar to popups but are rendered within the original window. They can contain any combination of shiny inputs, shiny outputs, and html. Possible uses include extra controls that you don't want cluttering up the main app display or help pages to explain your apps operation.

### Details

Use `bsModal` in your UI to create a modal window. It works like `Collapses` or `tabPanel`, any non-named arguments will be passed as content for the modal.

Create a button or link and assign its `inputId` as the `trigger` in `bsModal`.

### Components

There are only two functions in the Modals family:

`bsModal`

  Used in the UI to create a modal window.

`toggleModal`

  Used in the Server logic to open or close a modal window programmatically.

### Changes

There is now a `toggle` argument in `toggleModal` that allows you to specify whether you want the modal to open or close.

The `size` argument in `bsModal` allows you to specify the size of the modal window. Either `small` or `large`.

### Note

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

### See Also

Twitter Bootstrap 3

Other Modals: `bsModal`; `toggleModal`

### Examples

    library(shiny)
    library(shinyBS)

    app = shinyApp(
     ui =
     fluidPage(
       sidebarLayout(
         sidebarPanel(
           sliderInput("bins",
                       "Number of bins:",
                       min = 1,
                       max = 50,
                       value = 30),
           actionButton("tabBut", "View Table")
         ),

         mainPanel(
           plotOutput("distPlot"),
           bsModal("modalExample", "Data Table", "tabBut", size = "large",
             dataTableOutput("distTable"))
         )
       )
     ),
     server =
     function(input, output, session) {

       output$distPlot <- renderPlot({

         x    <- faithful[, 2]
         bins <- seq(min(x), max(x), length.out = input$bins + 1)

         # draw the histogram with the specified number of bins
         hist(x, breaks = bins, col = 'darkgray', border = 'white')

       })

       output$distTable <- renderDataTable({

         x    <- faithful[, 2]
         bins <- seq(min(x), max(x), length.out = input$bins + 1)

         # draw the histogram with the specified number of bins
         tab <- hist(x, breaks = bins, plot = FALSE)
         tab$breaks <- sapply(seq(length(tab$breaks) - 1), function(i) {
           paste0(signif(tab$breaks[i], 3), "-", signif(tab$breaks[i+1], 3))
         })
         tab <- as.data.frame(do.call(cbind, tab))
         colnames(tab) <- c("Bins", "Counts", "Density")
         return(tab[, 1:3])

       }, options = list(pageLength=10))

     }
    )
    ## Not run:
     runApp(app)

    ## End(Not run)

[Package shinyBS version 0.61 Index]