Skip to contents

This function creates various types of survey questions for use in a Surveydown survey.

Usage

sd_question(
  type,
  id,
  label,
  cols = "80",
  direction = "horizontal",
  status = "default",
  width = "100%",
  height = NULL,
  selected = NULL,
  label_select = "Choose an option...",
  grid = TRUE,
  individual = TRUE,
  justified = FALSE,
  force_edges = TRUE,
  option = NULL,
  placeholder = NULL,
  resize = NULL,
  row = NULL
)

Arguments

type

Specifies the type of question. Possible values are "select", "mc", "mc_multiple", "mc_buttons", "mc_multiple_buttons", "text", "textarea", "numeric", "slider", "date", "daterange", and "matrix".

id

A unique identifier for the question, which will be used as the variable name in the resulting survey data.

label

Character string. The label for the UI element, which can be formatted with markdown.

cols

Integer. Number of columns for the textarea input. Defaults to 80.

direction

Character string. The direction for button groups ("horizontal" or "vertical"). Defaults to "horizontal".

status

Character string. The status for button groups. Defaults to "default".

width

Character string. The width of the UI element. Defaults to "100%".

height

Character string. The height of the textarea input. Defaults to "100px".

selected

Value. The selected value(s) for certain input elements.

label_select

Character string. The label for the select input. Defaults to "Choose an option...".

grid

Logical. Whether to show a grid for slider input. Defaults to TRUE.

individual

Logical. Whether buttons in a group should be individually styled. Defaults to TRUE.

justified

Logical. Whether buttons in a group should fill the width of the parent div. Defaults to FALSE.

force_edges

Logical. Whether to force edges for slider input. Defaults to TRUE.

option

List. Options for the select, radio, checkbox, and slider inputs.

placeholder

Character string. Placeholder text for text and textarea inputs.

resize

Character string. Resize option for textarea input. Defaults to NULL.

row

List. Used for "matrix" type questions. Contains the row labels and their corresponding IDs.

Value

A 'shiny' UI element wrapped in a div with a data attribute for question ID.

Details

The function supports various question types:

  • "select": A dropdown selection

  • "mc": Multiple choice (single selection)

  • "mc_multiple": Multiple choice (multiple selections allowed)

  • "mc_buttons": Multiple choice with button-style options (single selection)

  • "mc_multiple_buttons": Multiple choice with button-style options (multiple selections allowed)

  • "text": Single-line text input

  • "textarea": Multi-line text input

  • "numeric": Numeric input

  • "slider": Slider input

  • "date": Date input

  • "daterange": Date range input

  • "matrix": Matrix-style question with rows and columns

For "matrix" type questions, use the row parameter to define the rows of the matrix. Each element in the row list should have a name (used as the row ID) and a value (used as the row label).

Examples

if (interactive()) {
  library(surveydown)

  # Get path to example survey file
  survey_path <- system.file("examples", "basic_survey.qmd",
                             package = "surveydown")

  # Copy to a temporary directory
  temp_dir <- tempdir()
  file.copy(survey_path, file.path(temp_dir, "survey.qmd"))
  orig_dir <- getwd()
  setwd(temp_dir)

  # Define a minimal server
  server <- function(input, output, session) {
    sd_server()
  }

  # Run the app
  shiny::shinyApp(ui = sd_ui(), server = server)

  # Clean up
  setwd(orig_dir)
}