## ----include = FALSE, echo=FALSE----------------------------------------------

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)


## ----setup, echo=FALSE--------------------------------------------------------
library(shiny)
library(dipsaus)

## ----eval=FALSE---------------------------------------------------------------
# 
# # UI function
# actionButtonStyled(inputId, label, icon = NULL, width = NULL,
#                    btn_type = "button", type = "primary", class = "", ...)
# 
# # Update function
# updateActionButtonStyled(session, inputId, label = NULL, icon = NULL,
#                          type = NULL, disabled = NULL, ...)

## ----results="asis", echo=FALSE-----------------------------------------------

btypes <- c("default", "primary", "info", "success", "warning", "danger")
btypes <- rbind(btypes, stringr::str_to_title(btypes))

tags$table(
  class = "table table-bordered text-center",
  tags$tbody(
    tags$tr(tagList(
      apply(btypes, 2, function(x) {
        tags$th(x[2], br(), tags$small(paste0('type="', x[1], '"')))
      }),
      tags$th("")
    )),
    tags$tr(
      apply(btypes, 2, function(x) {
        tags$td(actionButtonStyled("btn", x[2], type = x[1], btn_type = "a", width = "100%"))
      }),
      tags$td("[default]")
    ),
    tags$tr(
      apply(btypes, 2, function(x) {
        tags$td(actionButtonStyled("btn", x[2], type = x[1], btn_type = "a", 
                                   width = "100%", class = "btn-lg"))
      }),
      tags$td('class="btn-lg"')
    ),
    tags$tr(
      apply(btypes, 2, function(x) {
        tags$td(actionButtonStyled("btn", x[2], type = x[1], btn_type = "a", 
                                   width = "100%", class = "btn-sm"))
      }),
      tags$td('class="btn-sm"')
    ),
    tags$tr(
      apply(btypes, 2, function(x) {
        tags$td(actionButtonStyled("btn", x[2], type = x[1], btn_type = "a", 
                                   width = "100%", class = "btn-xs"))
      }),
      tags$td('class="btn-xs"')
    ),
    tags$tr(
      apply(btypes, 2, function(x) {
        tags$td(actionButtonStyled("btn", x[2], type = x[1], btn_type = "a", 
                                   width = "100%", disabled = TRUE))
      }),
      tags$td("disabled=TRUE")
    )
  )
)



## ----eval=FALSE---------------------------------------------------------------
# compoundInput2(
#   "compound", "Group Label", label_color = 1:10,
#   components = div(
#     textInput("txt", "Text"),
#     selectInput("sel", "Select", choices = 1:10, multiple = TRUE),
#     sliderInput("sli",
#                 "Slider",
#                 max = 1,
#                 min = 0,
#                 val = 0.5)
#   ), max_ncomp = 10, min_ncomp = 0, initial_ncomp = 1
# )

## ----eval = FALSE-------------------------------------------------------------
# # Bad example
# observeEvent(input$A, {
#   updateSliderInput(session, "B", value = input$A)
# })
# observeEvent(input$B, {
#   updateTextInput(session, "A", value = input$B)
# })

## ----eval = FALSE-------------------------------------------------------------
# sync_shiny_inputs(
#   input,
#   session,
#   inputIds = c("A", "B"),
#   uniform = list(function(a) {
#     as.numeric(a)
#   }, function(b) {
#     b
#   }),
#   updates = list(function(a) {
#     updateTextInput(session, "A", value = a)
#   }, function(b) {
#     updateSliderInput(session, "B", value = b)
#   })
# )

