Skip to contents

Create a dropdown menu

Usage

dropdown(
  ...,
  style = "default",
  status = "default",
  size = "md",
  icon = NULL,
  label = NULL,
  tooltip = FALSE,
  right = FALSE,
  up = FALSE,
  width = NULL,
  animate = FALSE,
  inputId = NULL,
  block = FALSE,
  no_outline = TRUE
)

Arguments

...

List of tag to be displayed into the dropdown menu.

style

Style of the button, to choose between simple, bordered, minimal, stretch, jelly, gradient, fill, material-circle, material-flat, pill, float, unite.

status

Color of the button, see actionBttn().

size

Size of the button : xs,sm, md, lg.

icon

An optional icon to appear on the button.

label

The contents of the button, usually a text label.

tooltip

Put a tooltip on the button, you can customize tooltip with tooltipOptions().

right

Logical. The dropdown menu starts on the right.

up

Logical. Display the dropdown menu above.

width

Width of the dropdown menu content.

animate

Add animation on the dropdown, can be logical or result of animateOptions().

inputId

Optional, id for the button, the button act like an actionButton, and you can use the id to toggle the dropdown menu server-side.

block

Logical, full width button.

no_outline

Logical, don't show outline when navigating with keyboard/interact using mouse or touch.

Details

This function is similar to dropdownButton() but don't use Bootstrap, so you can use pickerInput() in it. Moreover you can add animations on the appearance / disappearance of the dropdown with animate.css.

See also

dropMenu() for a more robust alternative.

Examples

## Only run examples in interactive R sessions
if (interactive()) {

library("shiny")
library("shinyWidgets")

ui <- fluidPage(
  tags$h2("pickerInput in dropdown"),
  br(),
  dropdown(

    tags$h3("List of Input"),

    pickerInput(inputId = 'xcol2',
                label = 'X Variable',
                choices = names(iris),
                options = list(`style` = "btn-info")),

    pickerInput(inputId = 'ycol2',
                label = 'Y Variable',
                choices = names(iris),
                selected = names(iris)[[2]],
                options = list(`style` = "btn-warning")),

    sliderInput(inputId = 'clusters2',
                label = 'Cluster count',
                value = 3,
                min = 1, max = 9),

    style = "unite", icon = icon("gear"),
    status = "danger", width = "300px",
    animate = animateOptions(
      enter = animations$fading_entrances$fadeInLeftBig,
      exit = animations$fading_exits$fadeOutRightBig
    )
  ),

  plotOutput(outputId = 'plot2')
)

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

  selectedData2 <- reactive({
    iris[, c(input$xcol2, input$ycol2)]
  })

  clusters2 <- reactive({
    kmeans(selectedData2(), input$clusters2)
  })

  output$plot2 <- renderPlot({
    palette(c("#E41A1C", "#377EB8", "#4DAF4A",
              "#984EA3", "#FF7F00", "#FFFF33",
              "#A65628", "#F781BF", "#999999"))

    par(mar = c(5.1, 4.1, 0, 1))
    plot(selectedData2(),
         col = clusters2()$cluster,
         pch = 20, cex = 3)
    points(clusters2()$centers, pch = 4, cex = 4, lwd = 4)
  })

}

shinyApp(ui = ui, server = server)

}