Изменить фон для bsModal в приложении Shiny - PullRequest
0 голосов
/ 16 мая 2018

Я занимаюсь разработкой приложения Shiny, и мне нужно убедиться, что конечные пользователи случайно не закроют bsModal, потому что на нем есть несколько кнопок действий.Я провел некоторое исследование и узнал, что мне нужно перезаписать параметры фона и клавиатуры, но, хотя я видел некоторые предложения, я понятия не имею, где именно это должно находиться в моем коде.Я не очень хорошо разбираюсь в JavaScript и плохо знаком с Shiny, поэтому, хотя это кажется простой задачей, я не могу понять это правильно.

На случай, если кому-то это понадобится, приведу немного фиктивного кода, который открывает модальноеокно после нажатия кнопки;Мне нужно, чтобы люди не закрывали его, случайно щелкая по фону или нажимая клавишу esc.

    library(shiny)
    library(shinyBS)

    ui <- fluidPage(

      sidebarLayout(

        sidebarPanel(
            actionButton("go", "Go")
            ,bsModal("window", "Window", "go"
                    ,textOutput("print"))
          )
        ,mainPanel()
      )

    )

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

      output$print = renderText("This is a test")

    }

    shinyApp(ui, server)

Я пытался объединить решения, представленные в этих двух потоках:

Есть лиспособ скрыть / отключить кнопку `Закрыть` в окне` bsModal`?

Предотвращение исчезновения модального Bootstrap при щелчке снаружи или нажатии escape?

сделать что-то подобное (в нескольких разных комбинациях), но это не сработало:

            actionButton("go", "Go")
            ,bsModal("window", "Window", "go"
                    ,textOutput("print")
                    ,tags$head(tags$style("#window .modal{backdrop: 'static'}")))
          )

Любая помощь будет очень признательна!

1 Ответ

0 голосов
/ 28 мая 2018

Это будет сделано:

bsModalNoClose <-function(...) {
  b = bsModal(...)
  b[[2]]$`data-backdrop` = "static"
  b[[2]]$`data-keyboard` = "false"
  return(b)
}

И затем вы можете также закрыть верхний и нижний колонтитулы, чтобы предотвратить их закрытие:

bsModalNoClose("window", "Window", "go"
               ,textOutput("print"),
               tags$head(tags$style("#window .modal-footer{display:none}
                                             .modal-header{display:none}")))
...