Create a tabset that contains tabPanel() elements. Tabsets are
useful for dividing output into multiple independently viewable sections.
tabsetPanel(
...,
id = NULL,
selected = NULL,
type = c("tabs", "pills", "hidden"),
header = NULL,
footer = NULL
)tabPanel() elements to include in the tabset
If provided, you can use input$id in your
server logic to determine which of the current tabs is active. The value
will correspond to the value argument that is passed to
tabPanel().
The value (or, if none was supplied, the title)
of the tab that should be selected by default. If NULL, the first
tab will be selected.
"tabs"Standard tab look
"pills"Selected tabs use the background fill color
"hidden"Hides the selectable tabs. Use type = "hidden" in
conjunction with tabPanelBody() and updateTabsetPanel() to control the
active tab via other input controls. (See example below)
Tag or list of tags to display as a common header above all tabPanels.
Tag or list of tags to display as a common footer below all tabPanels
A tabset that can be passed to mainPanel()
# Show a tabset that includes a plot, summary, and
# table view of the generated distribution
mainPanel(
tabsetPanel(
tabPanel("Plot", plotOutput("plot")),
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", tableOutput("table"))
)
)
#> <div class="col-sm-8" role="main">
#> <div class="tabbable">
#> <ul class="nav nav-tabs" data-tabsetid="3933">
#> <li class="active">
#> <a href="#tab-3933-1" data-toggle="tab" data-bs-toggle="tab" data-value="Plot">Plot</a>
#> </li>
#> <li>
#> <a href="#tab-3933-2" data-toggle="tab" data-bs-toggle="tab" data-value="Summary">Summary</a>
#> </li>
#> <li>
#> <a href="#tab-3933-3" data-toggle="tab" data-bs-toggle="tab" data-value="Table">Table</a>
#> </li>
#> </ul>
#> <div class="tab-content" data-tabsetid="3933">
#> <div class="tab-pane active" data-value="Plot" id="tab-3933-1">
#> <div class="shiny-plot-output html-fill-item" id="plot" style="width:100%;height:400px;"></div>
#> </div>
#> <div class="tab-pane" data-value="Summary" id="tab-3933-2">
#> <pre class="shiny-text-output noplaceholder" id="summary"></pre>
#> </div>
#> <div class="tab-pane" data-value="Table" id="tab-3933-3">
#> <div id="table" class="shiny-html-output shiny-table-output"></div>
#> </div>
#> </div>
#> </div>
#> </div>
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
radioButtons("controller", "Controller", 1:3, 1)
),
mainPanel(
tabsetPanel(
id = "hidden_tabs",
# Hide the tab values.
# Can only switch tabs by using `updateTabsetPanel()`
type = "hidden",
tabPanelBody("panel1", "Panel 1 content"),
tabPanelBody("panel2", "Panel 2 content"),
tabPanelBody("panel3", "Panel 3 content")
)
)
)
)
server <- function(input, output, session) {
observeEvent(input$controller, {
updateTabsetPanel(session, "hidden_tabs", selected = paste0("panel", input$controller))
})
}
if (interactive()) {
shinyApp(ui, server)
}