mirror of
https://github.com/rstudio/shiny.git
synced 2026-04-29 03:00:45 -04:00
Squashed commit of the following: commit a823dd5d7da6fafba69f783e112d71d9dcd09c5f Author: Winston Chang <winston@stdout.org> Date: Mon Oct 12 12:59:41 2020 -0500 Remove trailing whitespace commit ae55b519fb0f7d97f559e2f487063366926aa41d Author: Winston Chang <winston@stdout.org> Date: Mon Oct 12 12:52:04 2020 -0500 Move NEWS item to correct location commit aa89abc247be1bf5cdf093ff7fe7c51711821438 Merge:ee98773fa1ff7652Author: Winston Chang <winston@stdout.org> Date: Mon Oct 12 12:47:21 2020 -0500 Merge branch 'master' into shrektan-textarea-style commitee98773f1dAuthor: shrektan <shrektan@126.com> Date: Sat Aug 24 10:35:23 2019 +0800 correct the NEWS entry commitb468d8f013Author: shrektan <shrektan@126.com> Date: Sat Aug 24 10:32:52 2019 +0800 the width of textarea should be specified in the parent div. commit5abdcf9260Merge:03079f0ab07e553bAuthor: shrektan <shrektan@126.com> Date: Sat Aug 24 09:54:27 2019 +0800 resolve conflicts Merge remote-tracking branch 'origin/master' into textarea-style # Conflicts: # R/input-textarea.R commit03079f0a14Author: shrektan <shrektan@126.com> Date: Mon May 7 16:08:05 2018 +0800 Fixed a bug that `textAreaInput()` doesn't work as expected for relative `width`.
78 lines
2.6 KiB
R
78 lines
2.6 KiB
R
#' Create a textarea input control
|
|
#'
|
|
#' Create a textarea input control for entry of unstructured text values.
|
|
#'
|
|
#' @inheritParams textInput
|
|
#' @param height The height of the input, e.g. `'400px'`, or `'100%'`; see
|
|
#' [validateCssUnit()].
|
|
#' @param cols Value of the visible character columns of the input, e.g. `80`.
|
|
#' This argument will only take effect if there is not a CSS `width` rule
|
|
#' defined for this element; such a rule could come from the `width` argument
|
|
#' of this function or from a containing page layout such as
|
|
#' [fluidPage()].
|
|
#' @param rows The value of the visible character rows of the input, e.g. `6`.
|
|
#' If the `height` argument is specified, `height` will take precedence in the
|
|
#' browser's rendering.
|
|
#' @param resize Which directions the textarea box can be resized. Can be one of
|
|
#' `"both"`, `"none"`, `"vertical"`, and `"horizontal"`. The default, `NULL`,
|
|
#' will use the client browser's default setting for resizing textareas.
|
|
#' @return A textarea input control that can be added to a UI definition.
|
|
#'
|
|
#' @family input elements
|
|
#' @seealso [updateTextAreaInput()]
|
|
#'
|
|
#' @examples
|
|
#' ## Only run examples in interactive R sessions
|
|
#' if (interactive()) {
|
|
#'
|
|
#' ui <- fluidPage(
|
|
#' textAreaInput("caption", "Caption", "Data Summary", width = "1000px"),
|
|
#' verbatimTextOutput("value")
|
|
#' )
|
|
#' server <- function(input, output) {
|
|
#' output$value <- renderText({ input$caption })
|
|
#' }
|
|
#' shinyApp(ui, server)
|
|
#'
|
|
#' }
|
|
#'
|
|
#' @section Server value:
|
|
#' A character string of the text input. The default value is `""`
|
|
#' unless `value` is provided.
|
|
#'
|
|
#' @export
|
|
textAreaInput <- function(inputId, label, value = "", width = NULL, height = NULL,
|
|
cols = NULL, rows = NULL, placeholder = NULL, resize = NULL) {
|
|
|
|
value <- restoreInput(id = inputId, default = value)
|
|
|
|
if (!is.null(resize)) {
|
|
resize <- match.arg(resize, c("both", "none", "vertical", "horizontal"))
|
|
}
|
|
|
|
style <- paste(
|
|
# The width is specified on the parent div.
|
|
if (!is.null(width)) paste0("width: ", "100%", ";"),
|
|
if (!is.null(height)) paste0("height: ", validateCssUnit(height), ";"),
|
|
if (!is.null(resize)) paste0("resize: ", resize, ";")
|
|
)
|
|
|
|
# Workaround for tag attribute=character(0) bug:
|
|
# https://github.com/rstudio/htmltools/issues/65
|
|
if (length(style) == 0) style <- NULL
|
|
|
|
div(class = "form-group shiny-input-container",
|
|
shinyInputLabel(inputId, label),
|
|
style = if (!is.null(width)) paste0("width: ", validateCssUnit(width), ";"),
|
|
tags$textarea(
|
|
id = inputId,
|
|
class = "form-control",
|
|
placeholder = placeholder,
|
|
style = style,
|
|
rows = rows,
|
|
cols = cols,
|
|
value
|
|
)
|
|
)
|
|
}
|