Is there a way to hide/disable the `Close` button

2019-02-24 12:09发布

问题:

A bsModal window in shiny app comes with a default Close button. Is there a way that can be disabled? I tried to look up on SO for similar questions, but didn't find one matching my requirements. I think, if a user can close the window using the top right corner X button, there is not really a need for another Close button. Please advise. Following reproducible code will generate a sample bsModal window to understand my question.

library(shiny)
library(shinyBS)

if(interactive()){
  shinyApp(
    ui <- fluidPage(
      actionButton("open", "Open"), #action button to trigger the modal window.
      bsModal("id1", "Box 1", "open", size = "small",
              HTML(paste("A simple modal window."))
              )
      ),

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

    }
  )
}

回答1:

This should do it

library(shiny)
library(shinyBS)

if(interactive()){
  shinyApp(
    ui <- fluidPage(
      actionButton("open", "Open"), #action button to trigger the modal window.
      bsModal("id1", "Box 1", "open", size = "small",
              HTML(paste("A simple modal window.")),
              tags$head(tags$style("#id1 .modal-footer{ display:none}"))
      )
    ),

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

    }
  )
}


回答2:

Alternatively to @PorkChop's solution, you can write the modal without shinyBS:

library(shiny)

shinyApp(
  ui <- fluidPage(
    tags$button(class="btn btn-default", 
                "data-toggle"="modal", "data-target"="#simplemodal",
                "Open modal"),
    tags$div(
      id = "simplemodal",
      class="modal fade", role="dialog",
      tags$div(
        class="modal-dialog",
        tags$div(
          class="modal-content",
          #### Header ####
          tags$div(
            class="modal-header",
            tags$button(
              type="button", class="close", "data-dismiss"="modal",
              HTML("&times;")
            )
          ),
          #### Body ####
          tags$div(
            class="modal-body",
            HTML("A simple modal window")
          ),
          #### Footer (remove it if you want) ####
          tags$div(
            class="modal-footer",
            tags$button(
              type="button", class="btn btn-default", "data-dismiss"="modal",
              "Close"
            )
          )
        )
      )
    )
  ),

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

  }
)