R/bulma-media.R

Defines functions bulma_media_content bulma_media_left bulma_media_right bulma_media

Documented in bulma_media bulma_media_content bulma_media_left bulma_media_right

#' @title
#' Bulma Media Object
#'
#' @description
#' The famous media object prevalent in social media interfaces, but useful in
#' any context. The media object is a UI element perfect for repeatable and
#' nestable content. You can include any Bulma component inside the media
#' object. You can nest media objects up to 3 levels deep.
#'
#' [Media Object](https://bulma.io/documentation/layout/media-object/)
#'
#' @family Bulma Layouts
#' @name bulma_media
NULL

#' @describeIn bulma_media main container; should contain `bulma_media_right()`,
#' `bulma_media_left()`, `bulma_media_content()`.
#'
#' @param ... (tags) content
#' @param tag (fn) default HTML content
#'
#' @export
bulma_media <- function(..., tag = tags$div) {

  assert_function(tag)
  walk(tagList(...), assert_multi_class, c("bulma_media_right",
                                           "bulma_media_left",
                                           "bulma_media_content"))

  tag(class = "media", ...) %>%
    add_class("bulma_media")

}

#' @describeIn bulma_media right section of media
#' @export
bulma_media_right <- function(..., tag = tags$div) {

  assert_function(tag)

  tag(class = "media-right", ...) %>%
    add_class("bulma_media_right")
}

#' @describeIn bulma_media left section of the media
#' @export
bulma_media_left <- function(..., tag = tags$div) {

  assert_function(tag)

  tag(class = "media-left", ...) %>%
    add_class("bulma_media_left")
}

#' @describeIn bulma_media middle content section ofthe media
#' @export
bulma_media_content <- function(..., tag = tags$div) {

  assert_function(tag)

  tag(class = "media-content", ...) %>%
    add_class("bulma_media_content")

}
tjpalanca/bulma.R documentation built on Dec. 23, 2021, 10:58 a.m.