如何在闪亮的应用程序中折叠sidebarPanel?

nee*_*elp 5 r shiny shinyjs

我有一个闪亮的应用程序,在navbarPage中的tabPanel内有一个mainPanel和一个sidebarPanel.我需要一个隐藏sidebarPanel的选项,类似于:隐藏在shinydashboard中的侧边栏https://github.com/daattali/shinyjs/issues/43.

actionButton应控制是否显示sidebarPanel或折叠.

这是代码:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  navbarPage("",
             tabPanel("tab",
                      sidebarPanel(
                        useShinyjs()
                      ),

                      mainPanel(actionButton("showSidebar", "Show sidebar"),
                                actionButton("hideSidebar", "Hide sidebar")
                      )
             )
  )
)

server <-function(input, output, session) {
  observeEvent(input$showSidebar, {
    shinyjs::removeClass(selector = "body", class = "sidebarPanel-collapse")
  })
  observeEvent(input$hideSidebar, {
    shinyjs::addClass(selector = "body", class = "sidebarPanel-collapse")
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮忙:)

SBi*_*sta 8

我已修改您的代码以隐藏并显示侧边栏.要创建idfor,sidebarPanel我已将其包含在div中并给予它id = Sidebar.为了显示和隐藏侧栏,我使用了shinyjs函数showhideid作为Sidebar.

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  navbarPage("",
             tabPanel("tab",
                      div( id ="Sidebar",sidebarPanel(
                      )),


                      mainPanel(actionButton("showSidebar", "Show sidebar"),
                                actionButton("hideSidebar", "Hide sidebar")
                      )
             )
  )
)

server <-function(input, output, session) {
  observeEvent(input$showSidebar, {
    shinyjs::show(id = "Sidebar")
  })
  observeEvent(input$hideSidebar, {
    shinyjs::hide(id = "Sidebar")
  })
}

shinyApp(ui, server)  
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!


Har*_*son 5

之前评论中建议的切换选项的示例。

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  navbarPage("",
             tabPanel("tab",
                      div( id ="Sidebar",sidebarPanel(
                      )),


                      mainPanel(actionButton("toggleSidebar", "Toggle sidebar")
                      )
             )
  )
)

server <-function(input, output, session) {
  observeEvent(input$toggleSidebar, {
    shinyjs::toggle(id = "Sidebar")
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)