forked from dreamRs/shinyWidgets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
panel.R
82 lines (76 loc) · 1.82 KB
/
panel.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#' @title Create a panel
#'
#' @description Create a panel (box) with basic border and padding,
#' you can use Bootstrap status to style the panel,
#' see \url{http://getbootstrap.com/components/#panels}.
#'
#' @param ... UI elements to include inside the panel.
#' @param heading Title for the panel in a plain header.
#' @param footer Footer for the panel.
#' @param status Bootstrap status for contextual alternative.
#'
#' @return A UI definition.
#' @export
#'
#' @importFrom htmltools tags
#'
#' @examples
#' \dontrun{
#'
#' if (interactive()) {
#' library("shiny")
#' library("shinyWidgets")
#'
#' ui <- fluidPage(
#'
#' # Default
#' panel(
#' "Content goes here",
#' checkboxInput(inputId = "id1", label = "Label")
#' ),
#'
#' # With header and footer
#' panel(
#' "Content goes here",
#' checkboxInput(inputId = "id2", label = "Label"),
#' heading = "My title",
#' footer = "Something"
#' ),
#'
#' # With status
#' panel(
#' "Content goes here",
#' checkboxInput(inputId = "id3", label = "Label"),
#' heading = "My title",
#' status = "primary"
#' )
#' )
#'
#' server <- function(input, output, session) {
#'
#' }
#'
#' shinyApp(ui = ui, server = server)
#' }
#'
#' }
panel <- function(..., heading = NULL, footer = NULL, status = "default") {
status <- match.arg(
arg = status,
choices = c("default", "primary", "success", "info", "warning", "danger")
)
if (!is.null(heading)) {
heading <- htmltools::tags$div(
class="panel-heading",
if (is.character(heading))
htmltools::tags$h3(class="panel-title", heading)
else
heading
)
}
htmltools::tags$div(
class=paste0("panel panel-", status), heading,
htmltools::tags$div(class="panel-body", ...),
if (!is.null(footer)) htmltools::tags$div(class="panel-footer", footer)
)
}