13
votes

I used shinydashboard to create my app. I would like to hide the sidedar in default on desktop environment (e.g. windows), but not to disable it. On the mobile device, the sidebar is hide in default. I think I need to change the css class, but don't know how to do it.

Thanks for any suggestions.

This is my playing codes:

library(shiny)

library(shinydashboard)
ui <- shinyUI(dashboardPage(
    dashboardHeader(),
    dashboardSidebar(),
    dashboardBody()
))

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

shinyApp(ui = ui, server = server)
4
@NicE Thanks. I only want to hide the sidebar, not to disable it.Bangyou
dashboardSidebar also now has an argument collapsed. If True, the sidebar will be collapsed by default.jhilliar

4 Answers

34
votes

if you do a ?dashboardSidebar you probably see the usage, like this

dashboardSidebar(..., disable = FALSE, width = NULL, collapsed = FALSE)

So this should work

sidebar <- dashboardSidebar(
  collapsed = TRUE,
  sidebarMenu()
)

i'm not sure if this depends on your shinydashboard version but you could check/change that as well.

21
votes

This is very similar to my answer from another SO thread: "disabling/enabling sidebar from server side"

Here's code that can do what you want by hiding the sidebar when the app starts (using the package shinyjs)

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

ui <- shinyUI(dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    useShinyjs()
  )
))

server <- shinyServer(function(input, output, session) {
  addClass(selector = "body", class = "sidebar-collapse")
})

shinyApp(ui = ui, server = server)
1
votes

Add

dashboardSidebar(collapsed = TRUE)

instead of

dashboardSidebar()

in UI page.

0
votes

Or simply

ui <- shinyUI(dashboardPage(
  dashboardHeader(),
  dashboardSidebar(collapsed = TRUE),
  dashboardBody()
))