mirror of
https://github.com/rstudio/shiny.git
synced 2026-01-12 16:38:06 -05:00
49 lines
1.4 KiB
R
49 lines
1.4 KiB
R
#' Create a numeric input control
|
|
#'
|
|
#' Create an input control for entry of numeric values
|
|
#'
|
|
#' @inheritParams textInput
|
|
#' @param min Minimum allowed value
|
|
#' @param max Maximum allowed value
|
|
#' @param step Interval to use when stepping between min and max
|
|
#' @return A numeric input control that can be added to a UI definition.
|
|
#'
|
|
#' @family input elements
|
|
#' @seealso \code{\link{updateNumericInput}}
|
|
#'
|
|
#' @examples
|
|
#' ## Only run examples in interactive R sessions
|
|
#' if (interactive()) {
|
|
#'
|
|
#' ui <- fluidPage(
|
|
#' numericInput("obs", "Observations:", 10, min = 1, max = 100),
|
|
#' verbatimTextOutput("value")
|
|
#' )
|
|
#' server <- function(input, output) {
|
|
#' output$value <- renderText({ input$obs })
|
|
#' }
|
|
#' shinyApp(ui, server)
|
|
#' }
|
|
#' @export
|
|
numericInput <- function(inputId, label, value, min = NA, max = NA, step = NA,
|
|
width = NULL) {
|
|
|
|
value <- restoreInput(id = inputId, default = value)
|
|
|
|
# build input tag
|
|
inputTag <- tags$input(id = inputId, type = "number", class="form-control",
|
|
value = formatNoSci(value))
|
|
if (!is.na(min))
|
|
inputTag$attribs$min = min
|
|
if (!is.na(max))
|
|
inputTag$attribs$max = max
|
|
if (!is.na(step))
|
|
inputTag$attribs$step = step
|
|
|
|
div(class = "form-group shiny-input-container",
|
|
style = if (!is.null(width)) paste0("width: ", validateCssUnit(width), ";"),
|
|
label %AND% tags$label(label, `for` = inputId),
|
|
inputTag
|
|
)
|
|
}
|