Глядя на HTML, вы видите, что класс css 'control-sidebar-open' добавляется к правой боковой панели при ее открытии.
Вы можете запрограммировать это на глянце, используя пакетосвету, чтобы добавлять этот класс всякий раз, когда на левой боковой панели выбирается пункт меню графиков.Сначала вам нужно присвоить левой боковой панели id
, чтобы блестящий затем знал, какая вкладка выбрана, а затем добавляйте / удаляйте класс с brightjs всякий раз, когда вкладка «Графики» выбрана / снята.
Рабочий код ниже.
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)