Home > OS >  Move from one menuItem to another usung actionButton() when the name of it can be changed in a shiny
Move from one menuItem to another usung actionButton() when the name of it can be changed in a shiny

Time:11-29

I have the shiny app below in which I would like to set the name of the second menuItem() by typing in the textInput() of the first menuItem(). And then move to it by clicking an actionButton(). Also why the textOutput() I use is dispalyed under the icon and not next it like the first one?

## app.R ##
library(shiny)
library(shinydashboard)



ui <- dashboardPage(
  dashboardHeader(
   
    
  ),
  dashboardSidebar(
    collapsed = TRUE,
    sidebarMenu(
      id="inTabset",
      menuItem("Workspace", tabName = "workspace", icon = icon("upload")),
      
      menuItemOutput("tab2")
      
      
      
      
    )
  ),
  dashboardBody(
    
    tabItems(
      # First tab content
      tabItem(tabName = "workspace",
              fluidRow(
              
                         
                        
                           
                           textInput("name", "", value = "Process model", placeholder = NULL),
                           actionButton("nextt","Next", icon("paper-plane") 
                                        )

                         
                       )
                       
                )
                
      ),
      
     
      tabItem(
        tabName = "Process model",
        
    )
  )

)

server <- function(input, output,session) {
  output$tab2 <- renderMenu({
    menuItem(text = input$name, tabName = "Process model", icon = icon("diagram-project"))  
  })
  observeEvent(input$nextt, {
    updateTabItems(session, "inTabset", selected = "Process model")
  })
  
  
  
  output$tabtitle <- renderText({
    if (input$name == "") {
      "Process model"
    } else {
      paste(input$name)
    }
  })
  
  observeEvent(input$nextt, {
    updateTabItems(session, "inTabset", selected = "Process model")
  })
  
  
  
}


shinyApp(ui, server) 

CodePudding user response:

To dynamically create and name a menuItem you could use renderMenu and menuItemOutput.

library(shinydashboard)
library(shiny)

ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(
    sidebarMenu(
      id = "inTabset",
      menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
      menuItemOutput("tab2")
    )
  ),
  dashboardBody(
    tabItems(
      tabItem(
        tabName = "dashboard",
        textInput("name", "Create a name for your process", value = "", placeholder = NULL),
        actionButton("nextt", "Next")
      ),
      tabItem(
        tabName = "widgets"
      )
    )
  )
)

server <- function(input, output, session) {
  observeEvent(input$nextt, {
    updateTabItems(session, "inTabset", selected = "widgets")
  })
  
  output$tab2 <- renderMenu({
    menuItem(text = input$name, tabName = "widgets", icon = icon("th"))  
  })
  
  output$tabtitle <- renderText({
    if (input$name == "") {
      "Name of process"
    } else {
      paste(input$name)
    }
  })
  
  observeEvent(input$nextt, {
    updateTabItems(session, "inTabset", selected = "widgets")
  })
}

shinyApp(ui, server)

enter image description here

  • Related