Must click OK on pop-up before accessing app

Hi there,

I'm trying to create a pop-up that appears when a app is loaded on shinyapps.io, that requires clicking OK before accessing app.

My app already has authentication but I need to show terms & conditions before people see the data.

The examples I've tried all bring up an action button that when pressed creates a pop-up whereas I want the pop-up to just appear when app is loaded.

Any thoughts?

Thanks in advance!

Have you tried using showModal and modalDialog with the easyClose argument set to FALSE? They are available as functions in shiny.

Yes sorry I should have said getting the pop-up to disappear only when OK clicked isn't the problem but having the pop-up appear when the app is loaded and without a button is where I am struggling.

Here is a simple example. I created an application using File -> New -> Shiny Web App in RStudio and added the modalDialog in lines 21-26. The modal appears as soon as the app is loaded.

library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(
   
   # Application title
   titlePanel("Old Faithful Geyser Data"),
   
   # Sidebar with a slider input for number of bins 
   sidebarLayout(
      sidebarPanel(
         sliderInput("bins",
                     "Number of bins:",
                     min = 1,
                     max = 50,
                     value = 30)
      ),
      
      # Show a plot of the generated distribution
      mainPanel(
         modalDialog(
           h3("Terms of Service"),
           title = "Terms of Service",
           size = "l",
           easyClose = FALSE
         ),
         plotOutput("distPlot")
      )
   )
)

# Define server logic required to draw a histogram
server <- function(input, output) {
   
   output$distPlot <- renderPlot({
      # generate bins based on input$bins from ui.R
      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')
   })
}

# Run the application 
shinyApp(ui = ui, server = server)
2 Likes

Thank you so much that worked for me!

This topic was automatically closed 54 days after the last reply. New replies are no longer allowed.