|
|
|
@@ -0,0 +1,62 @@ |
|
|
|
#' @title Bulma Level |
|
|
|
#' @examples |
|
|
|
#' bulma_level("Home", "Menu", "Bulma", "Reservations", "Contact") |
|
|
|
#' bulma_level("Tweets" = 3456, Following = 123, Followers = "456K", Likes = 789, style = "header") |
|
|
|
#' @export |
|
|
|
bulma_level <- function( |
|
|
|
..., |
|
|
|
left = NULL, |
|
|
|
right = NULL, |
|
|
|
is_mobile = TRUE, |
|
|
|
style = "item" |
|
|
|
) { |
|
|
|
level_item_f <- switch( |
|
|
|
match.arg(style, c("item", "header")), |
|
|
|
item = level_item, |
|
|
|
header = level_item_header |
|
|
|
) |
|
|
|
htmltools::tags$div( |
|
|
|
class = paste("level", if (is_mobile) "is-mobile"), |
|
|
|
level_side(left), |
|
|
|
level_item_f(...), |
|
|
|
level_side(right) |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|
level_item <- function(...) { |
|
|
|
x <- apply_tag(..., tag = "div", class = "level-item") |
|
|
|
tagList(x) |
|
|
|
} |
|
|
|
|
|
|
|
level_side <- function(x, side = "left") { |
|
|
|
if (is.null(x)) return(NULL) |
|
|
|
match.arg(side, c("left", "right")) |
|
|
|
lapply(x, function(item) { |
|
|
|
htmltools::tags$div( |
|
|
|
class = paste0("level-", side), |
|
|
|
level_item(x) |
|
|
|
) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
#' @title Bulma Level Items With Headers |
|
|
|
level_item_header <- function(..., item_class = "has-text-centered", heading_class = NULL, title_class = NULL) { |
|
|
|
items <- list(...) |
|
|
|
x <- mapply(level_item_header_, names(items), items, |
|
|
|
MoreArgs = list(item_class = item_class, |
|
|
|
heading_class = heading_class, |
|
|
|
title_class = title_class), |
|
|
|
SIMPLIFY = FALSE) |
|
|
|
tagList(x) |
|
|
|
} |
|
|
|
|
|
|
|
#' @importFrom htmltools tag |
|
|
|
level_item_header_ <- function(item_name, item_body, item_class = NULL, heading_class = NULL, title_class = NULL) { |
|
|
|
tag("div", list( |
|
|
|
class = paste("level-item", item_class), |
|
|
|
list(tag("div", list( |
|
|
|
tag("p", list(class = paste("heading", heading_class), item_name)), |
|
|
|
tag("p", list(class = paste("title", title_class), item_body)) |
|
|
|
))) |
|
|
|
)) |
|
|
|
} |