rstudio / shinydashboard

Shiny Dashboarding framework
https://rstudio.github.io/shinydashboard/
Other
893 stars 298 forks source link

Feature request: allow NULL menu items in the UI #362

Open daattali opened 3 years ago

daattali commented 3 years ago

This comes up when you want to include a conditional.

For example

library(shiny)
library(shinydashboard)

show_tab_2 <- FALSE

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(
    sidebarMenu(
      menuItem("tab1", tabName = "tab1"),
      if (show_tab_2) menuItem("tab2", tabName = "tab2")
    )
  ),
  dashboardBody(
    tabItems(
      tabItem("tab1", "tab1"),
      if (show_tab_2) tabItem("tab2", "tab2")
    )
  )
)
server <- function(input, output) {}
shinyApp(ui, server)

This results in an error since the if statement results in a NULL ui item. It would be useful if shinydashboard knew to just ignore NULL items

daattali commented 3 years ago

The problems seems to be with the tabItems() rather than sidebarMenu()

ismirsehregal commented 3 years ago

This would be useful!

For those interested in a workaround:

library(shiny)
library(shinydashboard)

show_tab_2 <- FALSE

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(
    sidebarMenu(
      menuItem("tab1", tabName = "tab1"),
      if (show_tab_2){menuItem("tab2", tabName = "tab2")}
    )
  ),
  dashboardBody(
    tabItems(
      tabItem("tab1", "tab1"),
      if (show_tab_2){tabItem("tab2", "tab2")} else {
        div(class = 'tab-pane')
      }
    )
  )
)
server <- function(input, output) {}
shinyApp(ui, server)