'show tab only when clicked on action button

Is there a way to trigger the tab only when the user clicks on action button . Example shown below. So tab2 is hidden, but when the user clicks on action button, the tab should pop up

library(shiny)

ui <- fluidPage(
  tabsetPanel(id = "tabs",
              tabPanel(value = "tab1", title = "Tab 1",
                       tableOutput("myTable"),
                       actionButton("sub","Submit")
              ),
              uiOutput("show_tab1")
              # tabPanel(value = "tab2", title = "Tab 2",
              #          plotOutput("myPlot")
              # )
  )
)

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

  observeEvent(input$sub,{
    output$show_tab1 <- renderUI({
      tabPanel(value = "tab2", title = "Tab 2",
               plotOutput("myPlot")
      )
    })
  })
  
}

shinyApp(ui, server)


Solution 1:[1]

Maybe this:

library(shiny)

ui <- fluidPage(
  tabsetPanel(id = "tabs",
              tabPanel(value = "tab1", title = "Tab 1",
                       tableOutput("myTable"),
                       actionButton("sub","Submit")
              ),
              tabPanel(value = "tab2", title = "Tab 2",plotOutput("myPlot"))
  )
)

server <- function(input, output, session) {
  
  observe({
    hideTab(inputId = "tabs", target = "tab2")
  })
  
  observeEvent(input$sub,{
    showTab(inputId = "tabs", target = "tab2")
  })
  
}

shinyApp(ui, server)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pork Chop