在shinydashboardPlus中单击菜单项时自动弹出右侧边栏

在shinydashboardPlus中单击菜单项时自动弹出右侧边栏,r,shiny,shinydashboard,R,Shiny,Shinydashboard,我有一个闪亮的应用程序,我用shinydashboardPlus和shinydashboard制作,我希望当用户单击带有我的绘图的菜单项时,右边的边栏会自动打开 我已经试着找到了几个小时的答案,但我什么也没找到。我不确定这是否可能,但我想我会在这里问一下,看看是否有人对如何做到这一点有任何见解,如果可能的话 示例应用程序: 查看HTML,您可以看到css类“control sidebar open”在打开时添加到右侧边栏 只要在左侧边栏上选择plots菜单项,就可以使用shinyjs包在Shin

我有一个闪亮的应用程序,我用shinydashboardPlus和shinydashboard制作,我希望当用户单击带有我的绘图的菜单项时,右边的边栏会自动打开

我已经试着找到了几个小时的答案,但我什么也没找到。我不确定这是否可能,但我想我会在这里问一下,看看是否有人对如何做到这一点有任何见解,如果可能的话

示例应用程序:


查看HTML,您可以看到css类“control sidebar open”在打开时添加到右侧边栏

只要在左侧边栏上选择plots菜单项,就可以使用shinyjs包在Shinny中对此进行编程,以添加此类。首先,您需要为左侧边栏提供一个id,以便shiny知道选择了哪个选项卡,然后在选择/取消选择“plots”选项卡时使用shinyjs添加/删除类

工作代码如下

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)

header<-dashboardHeaderPlus(enable_rightsidebar = TRUE,
                            rightSidebarIcon = "bars")

sidebar<- dashboardSidebar(
  sidebarMenu(id = "left_sidebar",
    menuItem("Data",
             tabName = "data"),
    menuItem("Plots",
             tabName = "plots",
             icon = icon("bar-chart-o"))))

body<-dashboardBody(
  tabItems(
    tabItem(tabName = "data","DATA"),
    tabItem(tabName = "plots",
            box(plotOutput("plot1")))))

rightsidebar<-rightSidebar(
  background = "dark",
  rightSidebarTabContent(
    id=1,
    title = "Customize Plots",
    icon = "desktop",
    active = T,
    sliderInput("slider", "Number of observations:", 1, 100, 50)))

ui<- dashboardPagePlus(
  shinyjs::useShinyjs(),
  header = header,
  sidebar = sidebar,
  body = body,
  rightsidebar = rightsidebar,

)

server <- function(input,output,session){
  set.seed(122)
  histdata <- rnorm(500)

  observe({
    if (input$left_sidebar == "plots") {
      shinyjs::addClass(selector = "aside.control-sidebar", class = "control-sidebar-open")
    } else {
      shinyjs::removeClass(selector = "aside.control-sidebar", class = "control-sidebar-open")
    }
  })

  output$plot1<- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })

}
shinyApp(ui, server)

查看HTML,您可以看到css类“control sidebar open”在打开时添加到右侧边栏

只要在左侧边栏上选择plots菜单项,就可以使用shinyjs包在Shinny中对此进行编程,以添加此类。首先,您需要为左侧边栏提供一个id,以便shiny知道选择了哪个选项卡,然后在选择/取消选择“plots”选项卡时使用shinyjs添加/删除类

工作代码如下

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)

header<-dashboardHeaderPlus(enable_rightsidebar = TRUE,
                            rightSidebarIcon = "bars")

sidebar<- dashboardSidebar(
  sidebarMenu(id = "left_sidebar",
    menuItem("Data",
             tabName = "data"),
    menuItem("Plots",
             tabName = "plots",
             icon = icon("bar-chart-o"))))

body<-dashboardBody(
  tabItems(
    tabItem(tabName = "data","DATA"),
    tabItem(tabName = "plots",
            box(plotOutput("plot1")))))

rightsidebar<-rightSidebar(
  background = "dark",
  rightSidebarTabContent(
    id=1,
    title = "Customize Plots",
    icon = "desktop",
    active = T,
    sliderInput("slider", "Number of observations:", 1, 100, 50)))

ui<- dashboardPagePlus(
  shinyjs::useShinyjs(),
  header = header,
  sidebar = sidebar,
  body = body,
  rightsidebar = rightsidebar,

)

server <- function(input,output,session){
  set.seed(122)
  histdata <- rnorm(500)

  observe({
    if (input$left_sidebar == "plots") {
      shinyjs::addClass(selector = "aside.control-sidebar", class = "control-sidebar-open")
    } else {
      shinyjs::removeClass(selector = "aside.control-sidebar", class = "control-sidebar-open")
    }
  })

  output$plot1<- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })

}
shinyApp(ui, server)

非常感谢你!你是最棒的!非常感谢你!你是最棒的!