#' Create an UIkit accordion
#'
#' Build an UIkit accordion which can contain UIkitAccordionItem.
#'
#' @param ... slot for UIkitAccordionItem.
#' @param multiple Whether to enable multiple collapsible events.
#'
#' @examples
#' if(interactive()){
#' library(shiny)
#'
#' shiny::shinyApp(
#' ui = UIkitPage(
#' title = "My UIkit application",
#' UIkitContainer(
#' size = "large",
#' UIkitGrid(
#' child_width = "1-2",
#' UIkitAccordion(
#' UIkitAccordionItem(
#' title = "Item 1",
#' opened = TRUE,
#' "Lorem ipsum dolor sit amet, consectetur
#' adipiscing elit, sed do eiusmod tempor
#' incididunt ut labore et dolore magna aliqua"
#' ),
#' UIkitAccordionItem(
#' title = "Item 2",
#' "Lorem ipsum dolor sit amet, consectetur
#' adipiscing elit, sed do eiusmod tempor
#' incididunt ut labore et dolore magna aliqua"
#' ),
#' UIkitAccordionItem(
#' title = "Item 3",
#' "Lorem ipsum dolor sit amet, consectetur
#' adipiscing elit, sed do eiusmod tempor
#' incididunt ut labore et dolore magna aliqua"
#' )
#' )
#' )
#' )
#' ),
#' server = function(input, output) {}
#' )
#' }
#'
#' @author David Granjon, \email{dgranjon@@ymail.com}
#'
#' @export
UIkitAccordion <- function(..., multiple = FALSE) {
accordionTag <- shiny::tags$ul(
...
)
accordionTag$attribs[["uk-accordion"]] <- NA
if (multiple) accordionTag$attribs[["uk-accordion"]] <- "multiple: true"
accordionTag
}
#' Create an UIkit accordion item
#'
#' Build an UIkit accordion item which can be embedded in an UIkitAccordion.
#'
#' @param ... Item content.
#' @param title Item title.
#' @param opened Whether to start with the item opened. FALSE by default.
#'
#' @author David Granjon, \email{dgranjon@@ymail.com}
#'
#' @export
UIkitAccordionItem <- function(..., title = NULL, opened = FALSE) {
shiny::tags$li(
class = if (opened) "uk-open" else NULL,
shiny::tags$a(
class = "uk-accordion-title",
href = "#",
title
),
shiny::tags$div(
class = "uk-accordion-content",
shiny::tags$p(...)
)
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.