Ich habe eine Shiny-App - vereinfachtes Beispiel hier - und möchte, dass die Seitenleiste dynamisch ausgeblendet wird, wenn ich in Tab-Elementen navigiere. In der Tat werden Nutzer sich hauptsächlich mit ihrem Handy mit der App verbinden.R Shiny - Blendet die Seitenleiste automatisch aus, wenn Sie in Tab-Einträge navigieren
Mit Hilfe der Post Hide sidebar in default in shinydashboard kann ich standardmäßig die Seitenleiste ausblenden, wenn Sie in der App ankommen, aber nach der Seitenleiste wird immer angezeigt.
Hier ist mein eigentlicher Code:
### Load librairies
library(shiny) ; library(shinydashboard) ; library(shinyjs)
library(dplyr)
### Load data
Weather <- c("cold", "rain", "snow","heat","sun")
Answer <- c("Take a coat","Take an umbrella","Take gloves","Take a swimsuit","Take solair cream")
Mydata <- data.frame(Weather, Answer, stringsAsFactors = FALSE)
remove(Weather, Answer)
### Shiny
Entete <- dashboardHeader(title = "My app")
BarreLaterale <- dashboardSidebar(
sidebarMenu(menuItem(text = "Home", tabName = "MyHome", icon = icon("home"))),
sidebarMenu(menuItem(text = "My search", tabName = "Search", icon = icon("search")))
)
Corps <- dashboardBody(
useShinyjs(),
tabItems(
tabItem(tabName = "MyHome",
fluidPage("Hello, welcome to the home page")
),
tabItem(tabName = "Search",
fluidRow(
box(title = "Weather choice", width = 6, solidHeader = TRUE, status = "danger",
selectInput(inputId = "WeatherChoice", label = NULL, choices = unique(Mydata$Weather))),
box(title = "Answer", width = 6, solidHeader = TRUE, status = "danger",
textOutput("ReturnAnswer"))
)
)
)
)
Interface <- dashboardPage(Entete, BarreLaterale, Corps, skin = "red")
### Server R
Serveur <- function(input, output, session) {
output$ReturnAnswer <- renderText({
as.character(Mydata %>% filter(Weather == input$WeatherChoice) %>% select(Answer))
})
addClass(selector = "body", class = "sidebar-collapse")
}
### Application
shinyApp(Interface, Serveur)
Zusätzlicher Kommentar: Nachdem ich meine App veröffentlicht habe, ist das Verhalten gut, wenn ich einen Browser von meinem PC verwende, aber nicht, wenn ich einen Browser von meinem Handy verwende. Irgendeine Idee ? https://salsapedia.shinyapps.io/TestApp/ – Kumpelka
Ich habe die Seite in einem mobilen Browser untersucht und es scheint, dass die verwendeten Klassen von der Breite des Browsers abhängen. Also habe ich die Zeile 'removeClass (selector =" body ", class =" sidebar-open ")' hinzugefügt, um mit kleinen Browsern umgehen zu können. Ich hoffe, dass dies Ihr Problem löst. – Florian