如何在鼠标悬停时展开/折叠闪亮的仪表板侧栏?

时间:2020-02-11 12:47:57

标签: javascript jquery css r shiny

在“光泽仪表板”中,我希望鼠标悬停在迷你侧边栏上以展开它。当鼠标离开侧边栏时,它会自动恢复为原始状态(迷你侧边栏)。

我现在得到的最接近的答案是使用扩展/折叠默认按钮功能以及使用JQuery的鼠标悬停(请参见下面的代码),但是我希望这种效果可以扩展到整个侧边栏(感谢{{ 3}})

我想一种方法是通过在侧边栏鼠标悬停上触发a.sidebar-toggle点击动作,但是我一直找不到侧边栏对象类来观察其上的鼠标悬停。

tags$head(tags$script(HTML("$(function() { $('the sidebar object') .mouseover(function(e) { $( a.sidebar-toggle ).click()})});")))

最小示例:

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
shinyApp(
  ui = dashboardPagePlus(
    header = dashboardHeaderPlus(
      enable_rightsidebar = TRUE,
      rightSidebarIcon = "gears"
    ),
    sidebar = dashboardSidebar(
      sidebarMenu(
        menuItem("DASHBOARD1", tabName = "Spectrum", icon = icon("table")
        ), #menuItem
        menuItem("DASHBOARD2", tabName = "LTE", icon = icon("mobile-alt"))        
      )),
    body = dashboardBody(),
    title = "TEST",
    tags$head(tags$script(HTML("$(function() { $('a.sidebar-toggle').mouseover(function(e) { $(this).click()})});"))),

  ),
  server = function(input, output) { }
)

1 个答案:

答案 0 :(得分:2)

这是一个library(shinyjs)解决方案:

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

shinyApp(
  ui = dashboardPagePlus(
    header = dashboardHeaderPlus(enable_rightsidebar = TRUE,
                                 rightSidebarIcon = "gears"),
    sidebar = dashboardSidebar(
      sidebarMenu(
        id = "sidebar_id",
        menuItem("DASHBOARD1", tabName = "Spectrum", icon = icon("table")),
        menuItem("DASHBOARD2", tabName = "LTE", icon = icon("mobile-alt"))
      )
    ),
    body = dashboardBody(
      useShinyjs()
      ),
    title = "TEST"
  ),
  server = function(input, output, session) {
    onevent("mouseenter", "sidebarCollapsed", shinyjs::removeCssClass(selector = "body", class = "sidebar-collapse"))
    onevent("mouseleave", "sidebarCollapsed", shinyjs::addCssClass(selector = "body", class = "sidebar-collapse"))
  }
)

Result