Shiny by RStudio

Create a modal dialog UI

modalDialog(..., title = NULL, footer = modalButton("Dismiss"),
  size = c("m", "s", "l"), easyClose = FALSE, fade = TRUE)

Arguments

... UI elements for the body of the modal dialog box.
title An optional title for the dialog.
footer UI for footer. Use NULL for no footer.
size One of "s" for small, "m" (the default) for medium, or "l" for large.
easyClose If TRUE, the modal dialog can be dismissed by clicking outside the dialog box, or be pressing the Escape key. If FALSE (the default), the modal dialog can't be dismissed in those ways; instead it must be dismissed by clicking on the dismiss button, or from a call to removeModal on the server.
fade If FALSE, the modal dialog will have no fade-in animation (it will simply appear rather than fade in to view).

Description

This creates the UI for a modal dialog, using Bootstrap's modal class. Modals are typically used for showing important messages, or for presenting UI that requires input from the user, such as a username and password input.

Examples

if (interactive()) { # Display an important message that can be dismissed only by clicking the # dismiss button. shinyApp( ui = basicPage( actionButton("show", "Show modal dialog") ), server = function(input, output) { observeEvent(input$show, { showModal(modalDialog( title = "Important message", "This is an important message!" )) }) } ) # Display a message that can be dismissed by clicking outside the modal dialog, # or by pressing Esc. shinyApp( ui = basicPage( actionButton("show", "Show modal dialog") ), server = function(input, output) { observeEvent(input$show, { showModal(modalDialog( title = "Somewhat important message", "This is a somewhat important message.", easyClose = TRUE, footer = NULL )) }) } ) # Display a modal that requires valid input before continuing. shinyApp( ui = basicPage( actionButton("show", "Show modal dialog"), verbatimTextOutput("dataInfo") ), server = function(input, output) { # reactiveValues object for storing current data set. vals <- reactiveValues(data = NULL) # Return the UI for a modal dialog with data selection input. If 'failed' is # TRUE, then display a message that the previous value was invalid. dataModal <- function(failed = FALSE) { modalDialog( textInput("dataset", "Choose data set", placeholder = 'Try "mtcars" or "abc"' ), span('(Try the name of a valid data object like "mtcars", ', 'then a name of a non-existent object like "abc")'), if (failed) div(tags$b("Invalid name of data object", style = "color: red;")), footer = tagList( modalButton("Cancel"), actionButton("ok", "OK") ) ) } # Show modal when button is clicked. observeEvent(input$show, { showModal(dataModal()) }) # When OK button is pressed, attempt to load the data set. If successful, # remove the modal. If not show another modal, but this time with a failure # message. observeEvent(input$ok, { # Check that data object exists and is data frame. if (!is.null(input$dataset) && nzchar(input$dataset) && exists(input$dataset) && is.data.frame(get(input$dataset))) { vals$data <- get(input$dataset) removeModal() } else { showModal(dataModal(failed = TRUE)) } }) # Display information about selected data output$dataInfo <- renderPrint({ if (is.null(vals$data)) "No data selected" else summary(vals$data) }) } ) }