禁止在选项卡之间行走闪亮

Disable walking between tabs Shiny

我有几个选项卡的闪亮应用程序。 问题是我想用按钮在选项卡之间移动,而不是通过单击选项卡。我如何禁止点击选项卡? 小代码示例:

ui <- navbarPage('Test App', id = "inTabset",
                 tabPanel(title = "Panel 1", value = "panel1", 
                          actionButton('jumpToP2', 'Jump to Secon Tab')),
                 tabPanel(title = "Panel 2", value = "panel2", 
                          actionButton('jumpToP1', 'Jump to First Tab'))
)

server <- function(input, output, session) {
  observeEvent(input$jumpToP2, {
    updateTabsetPanel(session, "inTabset",
                      selected = "panel2")
  })

  observeEvent(input$jumpToP1, {
    updateTabsetPanel(session, "inTabset",
                      selected = "panel1")
  })

}

shinyApp(ui, server)

这是一个可能的解决方法。我们可以使用 shinyjs 禁用 navbar 按钮,并添加一些 CSS 将鼠标悬停在导航栏时将光标更改为默认值。

可能还有我不知道的更简单的方法,所以我很想看看其他可能的解决方法:)希望这对您有所帮助!

library(shiny)
library(shinyjs)

ui <- navbarPage('Test App', id = "inTabset",
                 tabPanel(title = "Panel 1", value = "panel1", 
                          actionButton('jumpToP2', 'Jump to Secon Tab')),
                 tabPanel(title = "Panel 2", value = "panel2", 
                          actionButton('jumpToP1', 'Jump to First Tab')),
                 useShinyjs(),
                 tags$head(tags$style(HTML('.navbar-nav a {cursor: default}')))
)

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

  shinyjs::disable(selector = '.navbar-nav a')

  observeEvent(input$jumpToP2, {
    updateTabsetPanel(session, "inTabset",
                      selected = "panel2")
  })

  observeEvent(input$jumpToP1, {
    updateTabsetPanel(session, "inTabset",
                      selected = "panel1")
  })

}

shinyApp(ui, server)