Changes in version 0.1.0
Bootstrap upgrade
The package now targets Bootstrap 5.3 (5.3.8, the runtime bslib actually
ships) instead of 5.2, resolving the former 5.2-markup / 5.3-runtime
split.
- Colour modes: bs_page() / bs_page_fluid() / bs_page_fillable() gain
color_mode (initial data-bs-theme on the page body) and the new
set_bs_color_mode() switches it from the server. The dark variants
of navbar (theme = "dark"), dropdown and carousel (dark = TRUE) and
the close button (white = TRUE) now emit data-bs-theme="dark" —
their 5.2-era classes (.navbar-dark, .dropdown-menu-dark,
.carousel-dark, .btn-close-white) are deprecated in 5.3.
- Progress uses the 5.3 markup: role="progressbar" and the aria-value*
attributes live on the .progress track (which now carries the id),
the inner .progress-bar is purely visual, and passing several bars
to bs_progress() renders a .progress-stacked group.
bs_progress_bar() gains aria_label.
- New 5.3 surface: bs_nav() / bs_tabset() accept type = "underline",
bs_img() gains object_fit (.object-fit-*), bs_icon_link() renders
the icon-link helper, and bs_navbar(bg =) accepts "body",
"body-secondary", "body-tertiary", "white", "black", "transparent".
- 5.3 reference markup details: bs_card_subtitle() uses
text-body-secondary (.text-muted is deprecated), bs_modal_title() is
an
again, tab panes carry
tabindex="0", tooltips/popovers use data-bs-title (no more
native-tooltip flash), and help = text is wired to its control via
aria-describedby.
Breaking changes
- bs_page_fillable() loses its fillable argument:
bslib::page_fillable() has no such parameter, so the value leaked
into the page markup as an invalid fillable HTML attribute and
controlled nothing.
- bs_modal(backdrop = FALSE) now renders a modal with no backdrop
(data-bs-backdrop="false"), matching Bootstrap and bs_offcanvas().
Use backdrop = "static" for a backdrop that does not dismiss on
outside click (the previous behaviour of FALSE).
- bs_input_group() and bs_floating_label() now raise an error when
given an input whose Shiny binding lives on its container
(bs_date_input(), bs_date_range_input(), bs_file_input(),
bs_radio_input(), bs_checkbox_group_input()). Previously they
silently emitted a dead control with no id, binding, or
dependencies.
- Layout constructors now validate their scales instead of emitting
non-existent classes: bs_col() spans (1-12, "auto", TRUE),
bs_row(cols=) (1-6, "auto"), gutters and stack gap (0-5), offset
(0-11), order (0-5, "first", "last"), heading levels (1-6),
bs_pagination_numbered(current=) (1..n), bs_color_input(value=)
(#rrggbb), and bs_tabset(selected=) must match a panel value.
- bs_notify_toast() requires plain-text body/title (they are rendered
via textContent; tags now raise an error instead of displaying raw
markup or [object Object]), and its ... must be empty.
Bug fixes
- Named arguments in ... are now applied to the documented element:
the bs_dropdown() wrapper (they were rendered as visible page text),
the bs_modal() root (they landed on .modal-body), and the
bs_navbar()