Create a dropdown menu with Bootstrap where you can put input elements.
dropdownButton(
...,
circle = TRUE,
status = "default",
size = "default",
icon = NULL,
label = NULL,
tooltip = FALSE,
right = FALSE,
up = FALSE,
width = NULL,
margin = "10px",
inline = FALSE,
inputId = NULL
)List of tag to be displayed into the dropdown menu.
Logical. Use a circle button
Add a class to the buttons, you can use Bootstrap status like 'info', 'primary', 'danger', 'warning' or 'success'.
Or use an arbitrary strings to add a custom class, e.g. : with status = 'myClass', buttons will have class btn-myClass.
Size of the button : default, lg, sm, xs.
An icon to appear on the button.
Label to appear on the button. If circle = TRUE and tooltip = TRUE, label is used in tooltip.
Put a tooltip on the button, you can customize tooltip with tooltipOptions.
Logical. The dropdown menu starts on the right.
Logical. Display the dropdown menu above.
Width of the dropdown menu content.
Value of the dropdown margin-right and margin-left menu content.
use an inline (span()) or block container (div()) for the output.
Optional, id for the button, the button act like an actionButton,
and you can use the id to toggle the dropdown menu server-side with toggleDropdownButton.
It is possible to know if a dropdown is open or closed server-side with input$<inputId>_state.
pickerInput doesn't work inside dropdownButton because that's also a
dropdown and you can't nest them. Instead use dropdown,
it has similar features but is built differently so it works.
## Only run examples in interactive R sessions
if (interactive()) {
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
dropdownButton(
inputId = "mydropdown",
label = "Controls",
icon = icon("sliders"),
status = "primary",
circle = FALSE,
sliderInput(
inputId = "n",
label = "Number of observations",
min = 10, max = 100, value = 30
),
prettyToggle(
inputId = "na",
label_on = "NAs keeped",
label_off = "NAs removed",
icon_on = icon("check"),
icon_off = icon("xmark")
)
),
tags$div(style = "height: 140px;"), # spacing
verbatimTextOutput(outputId = "out"),
verbatimTextOutput(outputId = "state")
)
server <- function(input, output, session) {
output$out <- renderPrint({
cat(
" # n\n", input$n, "\n",
"# na\n", input$na
)
})
output$state <- renderPrint({
cat("Open:", input$mydropdown_state)
})
}
shinyApp(ui, server)
}