daattali / shinyalert

🗯️ Easily create pretty popup messages (modals) in Shiny
https://daattali.com/shiny/shinyalert-demo/
Other
241 stars 26 forks source link

chaining modals - consecutive modals not displayed when user clicks 'OK' quite fast #66

Closed karolinakamuda closed 2 years ago

karolinakamuda commented 2 years ago

In "Chaining modals" approach, when a button triggering modal is clicked quickly, consecutive modals are not being displayed. Below a sample of code that can serve as an example.

library(shiny)
library(shinyalert)

ui <- fluidPage(
    actionButton("run", "Run")
)

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

observeEvent(input$run, {
    shinyalert(
        title = "Do you accept element A?",
        showCancelButton =  TRUE,
        callbackR = function(value) {
            ifelse(value == TRUE,
                   shinyalert(title = "Do you accept element B?",
                              showCancelButton =  TRUE,
                              callbackR = function(value) {
                                  ifelse(value == TRUE, shinyalert(title = "Do you accept element C?",
                                                                   showCancelButton =  TRUE,
                                                                   callbackR = function(value) {
                                                                       ifelse(value == TRUE, shinyalert(title = "Do you accept element D?",
                                             showCancelButton =  TRUE, callbackR = function(value) {
                                                 ifelse(value == TRUE,
                                                        shinyalert(title = "Do you accept element E?",
                                                                   showCancelButton =  TRUE), decision <<- "STOP")}), decision <<- "STOP")}), decision <<- "STOP")}), decision <<- "STOP")}
    )
})
}

shinyApp(ui = ui, server = server)
daattali commented 2 years ago

I believe this is a duplicate of #48 - a known issue (the return value is similar to an input)