No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

63 líneas
1.7KB

  1. #' @title Bulma Level
  2. #' @examples
  3. #' bulma_level("Home", "Menu", "Bulma", "Reservations", "Contact")
  4. #' bulma_level("Tweets" = 3456, Following = 123, Followers = "456K", Likes = 789, style = "header")
  5. #' @export
  6. bulma_level <- function(
  7. ...,
  8. left = NULL,
  9. right = NULL,
  10. is_mobile = TRUE,
  11. style = "item"
  12. ) {
  13. level_item_f <- switch(
  14. match.arg(style, c("item", "header")),
  15. item = level_item,
  16. header = level_item_header
  17. )
  18. htmltools::tags$div(
  19. class = paste("level", if (is_mobile) "is-mobile"),
  20. level_side(left),
  21. level_item_f(...),
  22. level_side(right)
  23. )
  24. }
  25. level_item <- function(...) {
  26. x <- apply_tag(..., tag = "div", class = "level-item")
  27. tagList(x)
  28. }
  29. level_side <- function(x, side = "left") {
  30. if (is.null(x)) return(NULL)
  31. match.arg(side, c("left", "right"))
  32. lapply(x, function(item) {
  33. htmltools::tags$div(
  34. class = paste0("level-", side),
  35. level_item(x)
  36. )
  37. })
  38. }
  39. #' @title Bulma Level Items With Headers
  40. level_item_header <- function(..., item_class = "has-text-centered", heading_class = NULL, title_class = NULL) {
  41. items <- list(...)
  42. x <- mapply(level_item_header_, names(items), items,
  43. MoreArgs = list(item_class = item_class,
  44. heading_class = heading_class,
  45. title_class = title_class),
  46. SIMPLIFY = FALSE)
  47. tagList(x)
  48. }
  49. #' @importFrom htmltools tag
  50. level_item_header_ <- function(item_name, item_body, item_class = NULL, heading_class = NULL, title_class = NULL) {
  51. tag("div", list(
  52. class = paste("level-item", item_class),
  53. list(tag("div", list(
  54. tag("p", list(class = paste("heading", heading_class), item_name)),
  55. tag("p", list(class = paste("title", title_class), item_body))
  56. )))
  57. ))
  58. }