单击按钮调整 bs4Dash 控制栏的大小

Resize bs4Dash controlbar on button click

我想在单击按钮时调整 bs4Dash 控制栏的大小 - 特别是在单击 controlbaritem 按钮时。我似乎无法让 updateControlbar() 以我想要的方式工作(例如,将控制栏的大小从 350 像素调整为 600 像素)。我的要求可以吗?

library(shiny)
library(bs4Dash)

shinyApp(
  ui = dashboardPage(
    header = dashboardHeader(),
    sidebar = dashboardSidebar(uiOutput("sidebar")),
    body = dashboardBody(),
    controlbar = dashboardControlbar(
      id = "controlbar",
      wdth = 350,
      pinned = TRUE,
      controlbarMenu(
        id = "menu",
        type = "pills",
        controlbarItem(id = "button1", title = "button1"),
        controlbarItem(id = "button2", title="button2")
      )
    )
  ),
  server = function(input, output, session) {
    output$sidebar <- renderMenu({
      sidebarMenu(id = "main_menu",
                  menuItem(text = "First page", tabName = "tab1"),
                  menuItem(text = "Second page", tabName = "tab2")
      )
    })
    
    observeEvent(input$button2, {
      updateControlbar(id = "controlbar", session=session, width = 600)
    })
    
  }
)

感觉 updateControlbar 不允许您更改宽度,我阅读了帮助文件,似乎更新宽度不是一个选项(如果我错了请纠正我)。

这里我给大家提供一个替代方案,使用UI中的javascript直接更新UI。您需要做的就是将以下行添加到您的 body,

tags$script('$(function(){$(\'[data-value="button2"]\').click(function(){$("#controlbar").css("width", "600px")})})')

像这样

 body = dashboardBody(tags$script('$(function(){$(\'[data-value="button2"]\').click(function(){$("#controlbar").css("width", "600px")})})')),

600px 更改为您想要的任何宽度。