mirror of
https://github.com/rstudio/shiny.git
synced 2026-02-07 05:04:58 -05:00
140 lines
5.3 KiB
R
140 lines
5.3 KiB
R
% Generated by roxygen2: do not edit by hand
|
|
% Please edit documentation in R/input-select.R
|
|
\name{selectInput}
|
|
\alias{selectInput}
|
|
\alias{selectizeInput}
|
|
\title{Create a select list input control}
|
|
\usage{
|
|
selectInput(inputId, label, choices = NULL, selected = NULL,
|
|
multiple = FALSE, selectize = TRUE, width = NULL, size = NULL,
|
|
choiceNames = NULL, choiceValues = NULL)
|
|
|
|
selectizeInput(inputId, ..., options = NULL, width = NULL)
|
|
}
|
|
\arguments{
|
|
\item{inputId}{The \code{input} slot that will be used to access the value.}
|
|
|
|
\item{label}{Display label for the control, or \code{NULL} for no label.}
|
|
|
|
\item{choices}{List of values to select from. If elements of the list are
|
|
named, then that name rather than the value is displayed to the user.
|
|
This can also be a named list whose elements are (either named or
|
|
unnamed) lists or vectors. If this is the case, the outermost names
|
|
will be used as the "optgroup" label for the elements in the respective
|
|
sublist. This allows you to group and label similar choices. See the
|
|
example section for a small demo of this feature.}
|
|
|
|
\item{selected}{The initially selected value (or multiple values if
|
|
\code{multiple = TRUE}). If not specified then defaults to the first value
|
|
for single-select lists and no values for multiple select lists.}
|
|
|
|
\item{multiple}{Is selection of multiple items allowed?}
|
|
|
|
\item{selectize}{Whether to use \pkg{selectize.js} or not.}
|
|
|
|
\item{width}{The width of the input, e.g. \code{'400px'}, or \code{'100\%'};
|
|
see \code{\link{validateCssUnit}}.}
|
|
|
|
\item{size}{Number of items to show in the selection box; a larger number
|
|
will result in a taller box. Not compatible with \code{selectize=TRUE}.
|
|
Normally, when \code{multiple=FALSE}, a select input will be a drop-down
|
|
list, but when \code{size} is set, it will be a box instead.}
|
|
|
|
\item{choiceNames, choiceValues}{List of names and values, respectively,
|
|
that are displayed to the user in the app and correspond to the each
|
|
choice (for this reason, \code{choiceNames} and \code{choiceValues}
|
|
must have the same length). If either of these arguments is
|
|
provided, then the other \emph{must} be provided and \code{choices}
|
|
\emph{must not} be provided. For \code{selectInput} and \code{selectizeInput},
|
|
there isn't any particular advantage to using both of these over
|
|
a named list for \code{choices} and it is simply a matter of preference
|
|
(this is not always the case; for example, \code{\link{radioButtons}} and
|
|
\code{\link{checkboxGroupInput}} can use \code{choiceNames} to pass HTML
|
|
code, instead of simple text).}
|
|
|
|
\item{...}{Arguments passed to \code{selectInput()}.}
|
|
|
|
\item{options}{A list of options. See the documentation of \pkg{selectize.js}
|
|
for possible options (character option values inside \code{\link[base]{I}()} will
|
|
be treated as literal JavaScript code; see \code{\link{renderDataTable}()}
|
|
for details).}
|
|
}
|
|
\value{
|
|
A select list control that can be added to a UI definition.
|
|
}
|
|
\description{
|
|
Create a select list that can be used to choose a single or multiple items
|
|
from a list of values.
|
|
}
|
|
\details{
|
|
By default, \code{selectInput()} and \code{selectizeInput()} use the
|
|
JavaScript library \pkg{selectize.js}
|
|
(\url{https://github.com/selectize/selectize.js}) to instead of the basic
|
|
select input element. To use the standard HTML select input element, use
|
|
\code{selectInput()} with \code{selectize=FALSE}.
|
|
|
|
In selectize mode, if the first element in \code{choices} has a value of
|
|
\code{""}, its name will be treated as a placeholder prompt. For example:
|
|
\code{selectInput("letter", "Letter", c("Choose one" = "", LETTERS))}
|
|
}
|
|
\note{
|
|
The selectize input created from \code{selectizeInput()} allows
|
|
deletion of the selected option even in a single select input, which will
|
|
return an empty string as its value. This is the default behavior of
|
|
\pkg{selectize.js}. However, the selectize input created from
|
|
\code{selectInput(..., selectize = TRUE)} will ignore the empty string
|
|
value when it is a single choice input and the empty string is not in the
|
|
\code{choices} argument. This is to keep compatibility with
|
|
\code{selectInput(..., selectize = FALSE)}.
|
|
}
|
|
\examples{
|
|
## Only run examples in interactive R sessions
|
|
if (interactive()) {
|
|
|
|
# basic example
|
|
shinyApp(
|
|
ui = fluidPage(
|
|
selectInput("variable", "Variable:",
|
|
c("Cylinders" = "cyl",
|
|
"Transmission" = "am",
|
|
"Gears" = "gear")),
|
|
tableOutput("data")
|
|
),
|
|
server = function(input, output) {
|
|
output$data <- renderTable({
|
|
mtcars[, c("mpg", input$variable), drop = FALSE]
|
|
}, rownames = TRUE)
|
|
}
|
|
)
|
|
|
|
# demoing optgroup support in the `choices` arg
|
|
shinyApp(
|
|
ui = fluidPage(
|
|
selectInput("state", "Choose a state:",
|
|
list(`East Coast` = c("NY", "NJ", "CT"),
|
|
`West Coast` = c("WA", "OR", "CA"),
|
|
`Midwest` = c("MN", "WI", "IA"))
|
|
),
|
|
textOutput("result")
|
|
),
|
|
server = function(input, output) {
|
|
output$result <- renderText({
|
|
paste("You chose", input$state)
|
|
})
|
|
}
|
|
)
|
|
}
|
|
}
|
|
\seealso{
|
|
\code{\link{updateSelectInput}}
|
|
|
|
Other input elements: \code{\link{actionButton}},
|
|
\code{\link{checkboxGroupInput}},
|
|
\code{\link{checkboxInput}}, \code{\link{dateInput}},
|
|
\code{\link{dateRangeInput}}, \code{\link{fileInput}},
|
|
\code{\link{numericInput}}, \code{\link{passwordInput}},
|
|
\code{\link{radioButtons}}, \code{\link{sliderInput}},
|
|
\code{\link{submitButton}}, \code{\link{textAreaInput}},
|
|
\code{\link{textInput}}
|
|
}
|