View source: R/shiny-compoundInput2.R
compoundInput2 | R Documentation |
Compound input that combines and extends shiny inputs
compoundInput2(
inputId,
label = "Group",
components = shiny::tagList(),
initial_ncomp = 1,
min_ncomp = 0,
max_ncomp = 10,
value = NULL,
label_color = NA,
max_height = NULL,
...
)
inputId |
character, shiny input ID |
label |
character, will show on each groups |
components |
'HTML' tags that defines and combines HTML components within groups |
initial_ncomp |
numeric initial number of groups to show, non-negative |
min_ncomp |
minimum number of groups, default is 0, non-negative |
max_ncomp |
maximum number of groups, default is 10, greater or equal
than |
value |
list of lists, initial values of each inputs, see examples. |
label_color |
integer or characters, length of 1 or |
max_height |
maximum height of the widget |
... |
will be ignored |
'HTML' tags
updateCompoundInput2
for how to update inputs
library(shiny); library(dipsaus)
compoundInput2(
'input_id', 'Group',
div(
textInput('text', 'Text Label'),
sliderInput('sli', 'Slider Selector', value = 0, min = 1, max = 1)
),
label_color = 1:10,
value = list(
list(text = '1'), # Set text first group to be "1"
list(), # no settings for second group
list(sli = 0.2) # sli = 0.2 for the third group
))
# Source - system.file('demo/example-compountInput2.R', package='dipsaus')
# demo('example-compountInput2', package='dipsaus')
library(shiny)
library(dipsaus)
ui <- fluidPage(
fluidRow(
column(
width = 4,
compoundInput2(
'compound', 'Group Label', label_color = c(NA,1:9),
components = div(
textInput('txt', 'Text'),
selectInput('sel', 'Select', choices = 1:10, multiple = TRUE),
sliderInput('sli', 'Slider', max=1, min=0, val=0.5)
),
value = list(
list(txt = '1'), # Set text first group to be "1"
'', # no settings for second group
list(sli = 0.2) # sli = 0.2 for the third group
)
),
hr(),
actionButton('action', 'Update compound input')
)
)
)
server <- function(input, output, session) {
observe({
print(input$compound)
})
observe({
# Getting specific input at group 1
print(input$compound_txt_1)
})
observeEvent(input$action, {
updateCompoundInput2(
session, 'compound',
# Update values for each components
value = lapply(1:5, function(ii){
list(
txt = sample(LETTERS, 1),
sel = sample(1:10, 3),
sli = runif(1)
)
}), ncomp = NULL, txt = list(label = as.character(Sys.time())))
})
}
if( interactive() ){
shinyApp(ui, server, options = list(launch.browser = TRUE))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.