R/bulma-breadcrumb.R

Defines functions bulma_breadcrumb_item bulma_breadcrumb

Documented in bulma_breadcrumb bulma_breadcrumb_item

#' @title
#' Bulma Breadcrumb
#'
#' @description
#' A simple breadcrumb component to improve your navigation experience.
#'
#' [Breadcrumb](https://bulma.io/documentation/components/breadcrumb/)
#'
#' @family Bulma Components
#' @name bulma_breadcrumb
NULL

#' @describeIn bulma_breadcrumb main container
#' @param align     (str) For alternative alignments, use the `is-centered`
#'                  and `is-right` modifiers on the breadcrumb container.
#' @param separator (str) choose between 4 additional separators: `arrow`,
#'                  `bullet`, `dot`, `succeeds`.
#' @param size      (str) `small`, `medium`, or `large`
#' @param ...       (tag) content
#' @param outer_tag,inner_tag (fun) container
#' @param outer_tag_content   (tag) content to be added to the outer tag.
#' @export
bulma_breadcrumb <- function(...,
                             outer_tag_content = list(),
                             align = c("left", "centered", "right"),
                             separator = c("arrow", "bullet",
                                           "dot", "succeeds"),
                             size = c("small", "medium", "large"),
                             outer_tag = tags$nav,
                             inner_tag = tags$ul) {

  walk(tagList(...), assert_class, "bulma_breadcrumb_item")
  assert_function(outer_tag)
  assert_function(inner_tag)
  separator <- match_arg(separator)

  exec(
    outer_tag,
    class = "breadcrumb",
    !!!outer_tag_content,
    inner_tag(...)
  ) %>%
    bulma_align(align) %>%
    bulma_size(size) %>%
    when(!is.null(separator), bulma_has(., glue("{separator}-separator"))) %>%
    add_class("bulma_breadcrumb")

}

#' @describeIn bulma_breadcrumb breadcrumb item
#' @param active (flag) whether or not this item is active
#' @param value  (string) shiny input value
#' @export
bulma_breadcrumb_item <- function(...,
                                  value = NULL,
                                  active = FALSE,
                                  outer_tag = tags$li,
                                  inner_tag = tags$a) {

  assert_flag(active)
  assert_function(outer_tag)
  assert_function(inner_tag)
  assert_string(value, null.ok = TRUE)

  outer_tag(
    class = "breadcrumb-item",
    inner_tag(..., value = value)
  ) %>%
    when(active, bulma_is(., "active")) %>%
    add_class("bulma_breadcrumb_item")

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