Show content for menuItem when menuSubItems exist in Shiny Dashboard

后端 未结 2 449
無奈伤痛
無奈伤痛 2020-12-31 20:20

Is there a way of actually showing content in the content pane of a Shiny Dashboard for a menuItem with existing menuSubItems. In the example: I tried to add \"tabName = \"c

2条回答
  •  情深已故
    2020-12-31 21:11

    Coming from here. This is an alternative approach showing a hidden menuItem once the childful menuItem is expanded.

    Two advantages over @PorkChop's current solution are, that input$sidebarItemExpanded remains functional (doesn't get updated when using convertMenuItem) and there is no second click needed to expand the menu.

    library(shiny)
    library(shinydashboard)
    library(shinyjs)
    
    ui <- dashboardPage(
      dashboardHeader(), 
      dashboardSidebar(
        sidebarMenu(
          id = "sidebarID",
          menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
          menuItem("Widgets", icon = icon("th"), tabName = "widgets"),
          menuItem("Charts", id = "chartsID", tabName = "charts", icon = icon("bar-chart-o"), expandedName = "CHARTS",
                                   menuSubItem("Sub-item 1", tabName = "subitem1"),
                                   menuSubItem("Sub-item 2", tabName = "subitem2")
          ),
          hidden(menuItem("hiddenCharts", tabName = "hiddenCharts"))
        )
      ),
      dashboardBody(
        useShinyjs(),
        tabItems(
          tabItem("dashboard", "Dashboard tab content"),
          tabItem("widgets", "Widgets tab content"),
          tabItem("hiddenCharts", "Charts Tab"),
          tabItem("subitem1", "Sub-item 1 tab content"),
          tabItem("subitem2", "Sub-item 2 tab content") 
        )
      )
    )
    
    server <- function(input, output, session) {
      observeEvent(input$sidebarItemExpanded, {
        if(input$sidebarItemExpanded == "CHARTS"){
          updateTabItems(session, "sidebarID", selected = "hiddenCharts")
        }
      })
    }
    
    shinyApp(ui, server)
    

提交回复
热议问题