Переключение значков на кнопках действий для приложения R Shiny - PullRequest
0 голосов
/ 15 марта 2019

У меня есть боковая панель в блестящем приложении, в которой есть несколько пунктов меню, которые мне не нужно показывать всегда.Поэтому я хочу иметь кнопку, которая будет расширять и сворачивать боковую панель панели.На данный момент я могу сделать это двумя разными кнопками.Можно ли показать только одну кнопку, которая переключает свои значки на стрелку вправо, когда она свернута, и стрелку влево, когда она развернута.

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  navbarPage("",
             tabPanel("tab",
                      div( id ="Sidebar",sidebarPanel(div(
                        id = "tab1-scrollspy",
                        class = "potential-scrollspy",
                        tags$ul(
                          class = "nav nav-pills nav-stacked",

                          tags$li(tags$a(href = "#section1-1", "Apple")),
                          tags$li(tags$a(href = "#section1-2", "Bananas")),
                          tags$li(tags$a(href = "#section1-3", "Oranges")),
                          tags$li(tags$a(href = "#section1-4", "Cherries"))
                        )
                      )
                      )),
                      mainPanel(actionButton("showSidebar", "", icon = icon("arrow-alt-circle-right")),
                                actionButton("hideSidebar", "", icon = icon("arrow-alt-circle-left"))
                      )
             )
  )
)

server <-function(input, output, session) {
  observeEvent(input$showSidebar, {
    shinyjs::show(id = "Sidebar")
  })
  observeEvent(input$hideSidebar, {
    shinyjs::hide(id = "Sidebar")
  })
}

shinyApp(ui, server)  

1 Ответ

2 голосов
/ 16 марта 2019
library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  navbarPage("",
             tabPanel("tab",
                      div( id ="Sidebar",sidebarPanel(div(
                        id = "tab1-scrollspy",
                        class = "potential-scrollspy",
                        tags$ul(
                          class = "nav nav-pills nav-stacked",

                          tags$li(tags$a(href = "#section1-1", "Apple")),
                          tags$li(tags$a(href = "#section1-2", "Bananas")),
                          tags$li(tags$a(href = "#section1-3", "Oranges")),
                          tags$li(tags$a(href = "#section1-4", "Cherries"))
                        )
                      )
                      )),
                      mainPanel(
                        actionButton("toggleSidebar", "", icon = icon("arrow-alt-circle-left"))
                      )
             )
  )
)

server <-function(input, output, session) {

  observeEvent(input$toggleSidebar, {
    shinyjs::toggle(id = "Sidebar")
    if(input$toggleSidebar %% 2 == 1){
      updateActionButton(session, "toggleSidebar", icon = icon("arrow-alt-circle-right"))
    }else{
      updateActionButton(session, "toggleSidebar", icon = icon("arrow-alt-circle-left"))
    }
  }, ignoreInit = TRUE)

}

shinyApp(ui, server)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...