我下面有一个发光的仪表板,我想在其中隐藏标题左侧部分的图标,如果按下该图标,则该图标会隐藏或显示左侧边栏。只有在“前台”标签中的Im时才可以隐藏它吗?
# app.R ##
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(DT)
library(shinyWidgets)
library(shinyjs)
dbHeader <- dashboardHeaderPlus(
enable_rightsidebar = TRUE,
rightSidebarIcon = "gears",
fixed = T
)
ui <- dashboardPagePlus(
dbHeader,
dashboardSidebar(),
dashboardBody(
useShinyjs(),
tags$hr(),
tabsetPanel(
id ="tabA",
type = "tabs",
tabPanel("Front",icon = icon("accusoft")),
tabPanel("Data", icon = icon("table")
)
)
),
rightsidebar = rightSidebar()
)
server <- function(input, output) {
observe({
if (input$tabA == "Front") {
hide(selector = "body > div.wrapper > header > nav > div:nth-child(4) > ul")
addClass(selector = "body", class = "sidebar-collapse")
removeClass(selector = "body", class = "control-sidebar-open")
} else {
show(selector = "body > div.wrapper > header > nav > div:nth-child(4) > ul")
removeClass(selector = "body", class = "sidebar-collapse")
addClass(selector = "body", class = "control-sidebar-open")
}
})
}
shinyApp(ui = ui, server = server)
如果只想隐藏图标,则可以借助一些Javascript代码来完成。为了在Shiny中插入JS代码,必须使用tags$script()
。
因此,为了隐藏图标,在dashboardBody()
内插入下面的代码>
# Note: 'sidebar-toggle' is a class name (i.e. HTML class attribute) of Shiny icon
tags$script("document.getElementsByClassName('sidebar-toggle')[0].style.visibility = 'hidden';"),
有关在Shiny中插入JS的更多信息,请参见:https://shiny.rstudio.com/articles/packaging-javascript.html