test_that("sidebar(open =) ensures backwards compatibility of defaults", {
expect_equal(
sidebar(open = TRUE, id = "open"),
sidebar(open = "open", id = "open")
)
expect_equal(
sidebar(open = FALSE, id = "closed"),
sidebar(open = "closed", id = "closed")
)
expect_equal(
sidebar(open = NA, id = "always"),
sidebar(open = "always", id = "always")
)
})
test_that("sidebar() - assigns input binding class if `id` is provided", {
my_sidebar <- as.tags(sidebar(id = "my-id", open = sidebar_open_on()))
expect_match(
htmltools::tagGetAttribute(my_sidebar[[1]], "class"),
"bslib-sidebar-input"
)
expect_equal(
htmltools::tagGetAttribute(my_sidebar[[1]], "id"),
"my-id"
)
})
test_that("sidebar() - assigns a random `id` if collapsible and `id` not provided", {
sidebar_open <- as.tags(sidebar(open = "open"))
expect_match(
htmltools::tagGetAttribute(sidebar_open[[1]], "id"),
"bslib-sidebar-\\d+"
)
expect_equal(
htmltools::tagGetAttribute(sidebar_open[[2]], "aria-controls"),
htmltools::tagGetAttribute(sidebar_open[[1]], "id")
)
sidebar_closed <- as.tags(sidebar(open = "closed"))
expect_match(
htmltools::tagGetAttribute(sidebar_closed[[1]], "id"),
"bslib-sidebar-\\d+"
)
expect_equal(
htmltools::tagGetAttribute(sidebar_closed[[2]], "aria-controls"),
htmltools::tagGetAttribute(sidebar_closed[[1]], "id")
)
sidebar_desktop <- as.tags(sidebar(open = "desktop"))
expect_match(
htmltools::tagGetAttribute(sidebar_desktop[[1]], "id"),
"bslib-sidebar-\\d+"
)
expect_equal(
htmltools::tagGetAttribute(sidebar_desktop[[2]], "aria-controls"),
htmltools::tagGetAttribute(sidebar_desktop[[1]], "id")
)
expect_null(
htmltools::tagGetAttribute(sidebar(open = "always")[[1]], "id")
)
})
test_that("sidebar() - sets `aria-expanded` correctly on collapse toggle", {
get_sidebar_collapse_tag <- function(...) {
as.tags(sidebar(...))[[2]]
}
expect_equal(
htmltools::tagGetAttribute(get_sidebar_collapse_tag(open = "open"), "aria-expanded"),
"true"
)
expect_equal(
htmltools::tagGetAttribute(get_sidebar_collapse_tag(open = "closed"), "aria-expanded"),
"false"
)
expect_equal(
htmltools::tagGetAttribute(get_sidebar_collapse_tag(open = "desktop"), "aria-expanded"),
"true"
)
})
test_that("sidebar() - throws an error for invalid `open` values", {
expect_error(
sidebar(open = "bad")
)
expect_error(
sidebar(open = c("open", "closed"))
)
expect_error(
sidebar(open = 1)
)
expect_error(
sidebar(open = "OPEN")
)
expect_error(
sidebar(open = character())
)
})
test_that("sidebar() - warns if `max_height_mobile` used with `open != 'always'", {
expect_warning(
as.tags(sidebar(open = "open", max_height_mobile = "100px"))
)
expect_silent(
as.tags(sidebar(open = "always", max_height_mobile = "100px"))
)
})
test_that("layout_sidebar() - errors with unexpected border, border_radius input values", {
expect_error(
layout_sidebar(sidebar(), border = "1px solid blue")
)
expect_error(
layout_sidebar(sidebar(), border = c(TRUE, FALSE))
)
expect_error(
layout_sidebar(sidebar(), border_radius = c(TRUE, FALSE))
)
expect_error(
layout_sidebar(sidebar(), border = c(TRUE, NA))
)
expect_error(
layout_sidebar(sidebar(), border_radius = c(TRUE, NA))
)
expect_error(
layout_sidebar(sidebar(), border = NA)
)
expect_error(
layout_sidebar(sidebar(), border_radius = NA)
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.