Releases: twbs/bootstrap
Releases · twbs/bootstrap
v5.0.0
Highlights
#32155: Updated make-col()
mixin to generate equal columns when no size is specified
#32763: Added new color-scheme()
mixin
#33389: Dropdown menus now have option become clickable
#33453: Added new docs footer
#33548: Offcanvas header components are now vertically aligned
#33549: Added offcanvas-top modifier
#33634: Added support for .dropdown-item
s wrapped in <li>
s
#33626: Fix v5 regressions in tab dropdown functionality
🚀 Features
- #32763: Add
color-scheme
mixin - #33389: Dropdown — Add option to make the dropdown menu clickable
- #33549: Add offcanvas-top modifier
🎨 CSS
- #32155: Add equal column mixin
- #32763: Add
color-scheme
mixin - #33292: Make accordion icon rotation more natural
- #33411: Fix validation feedback icon in select multiple
- #33478: Make
.nav-link
color consistent when using buttons - #33482: Dropdown — Apply positioning only when Popper is not used
- #33548: Vertically align offcanvas header components
- #33549: Add offcanvas-top modifier
- #33550: Spinner alignment changes
- #33598: Hide validation icons from multiple selects
- #33600: Have $form-check-input-border's default derive from $black
- #33607: Reduce color-scheme complexity
- #33642: use
:read-only
css selector instead[readonly]
for consistency - #33658: fix: use list-group variable instead of alert
- #33736: accordion: fix
border-top
on Firefox
☕️ JavaScript
- #32439: Decouple BackDrop from modal
- #33245: Decouple Modal's scrollbar functionality
- #33249: Simplify Modal Config
- #33250: Simplify ScrollSpy config
- #33310: fix: make EventHandler better handle mouseenter/mouseleave events
- #33389: Dropdown — Add option to make the dropdown menu clickable
- #33429: Remove element event listeners through base component
- #33451: Add missing things in
hide
method of dropdown - #33456: Use our
isDisabled
util on dropdown - #33466: Refactor dropdown's hide functionality
- #33479: Fix dropdown escape propagation
- #33496: Use cached
noop
function - #33497: Use template literals instead of concatenation
- #33499: Fix wrong carousel transformation, direction to order
- #33545: Use the backdrop util in offcanvas, enforcing consistency
- #33586: Tab.js: Fixes on click handling
- #33589: refactor: make static
selectMenuItem
method private - #33612: tests: fix random BrowserStack failures in scrollbar
- #33626: Fix v5 regressions in tab dropdown functionality
- #33634: Dropdown: support
.dropdown-item
wrapped in<li>
tags - #33638: Fix toggle between modals example
- #33643: fix: clicking an item in navbar dropdown should not collapse the dropdown in firefox
- #33666: Modal.js: fix test for scrollbar
- #33677: Offcanvas.js: If scroll is allowed, should allow focus on other elements
- #33684: Don't change the value for
altBoundary
option - #33706: Scrollbar: respect the initial body overflow value
📖 Docs
- #33446: Make offcanvas example fully static
- #33453: Add new docs footer
- #33521: The spacing margin side identifiers 's' and 'e' may be intuitive for …
- #33522: Clarify docs accordion example
- #33543: Update parcel.md
- #33553: Add example: Panels stay open
- #33567: Fixed wrong method name _getInstance
- #33571: footer: fix
rel=noopener
attribute - #33583: docs: update clipboard.js to v2.0.8
- #33597: Docs: Fix wrong dark attribute in Table - Vertical Alignment
- #33632: Correct the heading for the States section
- #33638: Fix toggle between modals example
- #33664: Docs: fix W3C validation errors in list-group example
- #33668: Update anchor.js to v4.3.1.
- #33669: Change from preventOverflow to detectOverflow in
boundary
option - #33675: Fix typo
- #33676: Fix Grid System docs
- #33685: docs: fix the default value of Popper's
boundary
option - #33687: Fixes #33686 typo in RTL docs
- #33690: Add Bootstrap Icons to alerts docs
- #33726: Replace modal and scrollspy placeholder content
- #33733: Tooltip/Popover — Minor doc updates
- #33735: Clarify
boundary
option description - #33772: Improve overall new examples' accessibility
- #33782: Add new team members to the Teams page
- #33786: Docs: adding intro about web accessibility
- #33797: Update links to CCA, MQ5 prefers-reduced-motion, evergreen WCAG urls
- #33810: Tweak toast docs
- #33829: Update migration guide for some v5 changes
- #33832: Fix doc typo and Bootstrap Icons link
- #33833: refactor(docs): Added form file input variables
- #33834: Rewrite migration guide
Examples
- #33097: Update RTL examples
- #33759: fix: change margin breakpoints for bootstrap logo on double header
- #33681: Fixes signup form in Heroes example
- #33569: Improve responsiveness of Features examples
🌎 Accessibility
🏭 Tests
- #33578: Remove unnecessary
data-bs-backdrop="static"
from modal tests - #33612: tests: fix random BrowserStack failures in scrollbar
- #33666: Modal.js: fix test for scrollbar
- #33734: Add missing test for clicking select option in a dropdown
🧰 Misc
- #33720: JS tests: add Node.js 16
📦 Dependencies
v5.0.0-beta3
Highlights
- Added new offcanvas component for left, right, and bottom-aligned hidden content
- Added four new snippet-based examples: headers, heroes, features, and sidebars
- Updated the starter template example and a few other examples
- Added new Sass docs section to nearly every page to show variables, mixins, loops, and keyframes from our source code
- Added new
.list-group-numbered
variation to list groups that uses pseudo-elements for numbering list group items. - Removed explicit focus state suppression in Reboot
- Improved carousel swipe behaviors for RTL
- Updated accordions to improve transitions and borders when animating
- Updated Sass customization docs to show how to properly override default variables
- Fixed tooltips not appearing after rapid focus in and out
- Fixed dropdown events not bubbling and forms inside dropdowns not propagating
- Removed flip option from dropdowns
- Disabled select now render consistently in Chrome
- Button elements now grow in
.nav-fill
and.nav-justified
- JavaScript plugin constructors now accept CSS selectors
- De-duped the
.border-0
utility - Fixed event handler removal in dropdown/carousel dispose
- Added new Parcel guide to the docs
- Added input focus blur Sass variable
- Updated
.browserslistrc
to drop Android and add Safari/iOS 12 as the new minimum version (completing our two latest major releases guideline for supported browsers).
🚀 Features
- #29017: Offcanvas as component
- #32245: Allow constructors to accept a CSS selector
- #33068: Add
ol.list-group
with pseudo-element numbers
🎨 CSS
- #32747: Add Sass docs (variables, mixins, and loops) to most pages
- #32925: Clear duplicated class
border-0
- #33029: Remove explicit suppression of focus outline
- #33031: Add input focus blur variable
- #33068: Add
ol.list-group
with pseudo-element numbers - #33127: Reset
select:disabled
opacity for Chrome - #33149: Revamp accordion borders to fix pixel jumping
- #33154: Fix sibling card links in RTL
- #33210: Properly set
.list-group-item
color - #33211: Validated controls border in input-group
- #33213: Buttons should grow in nav-fill & nav-justified
- #33325: Remove duplicate text-decoration style for abbr[title]
- #33426: Fix flush accordion styles
☕️ JavaScript
- #30621: modal: don't add margin & padding when sticky is not full width
- #32180: refactor: use a Map instead of an Object in dom/data
- #32245: Allow constructors to accept a CSS selector
- #32446: util: change
isRTL
to a function - #32913: Fix carousel RTL and refactor code, fix rtl swipe issues
- #33000: Fix event handler removal in dropdown/carousel dispose
- #33056: modal: move common code to a new
isAnimated
method - #33120: Remove the default positioning from
.dropup
- #33136: Adjust
SAFE_URL_PATTERN
regex for use with test method of regexes. - #33198: Dropdown — Drop
flip
option - #33248: Accept data-bs-body option in the configuration object as well
- #33257: Dynamic tab should not show when triggered on
disabled
element - #33261: Change the name of the
Offcanvas
constructor - #33289: fix tooltips disappearing after trying to interact during their fade out animation
- #33382: Allow offcanvas to be initialized in open state
- #33385: Use more safe check for 'isDisabled' helper
- #33442: Allow data-toggle="dropdown" and form click events to bubble
📖 Docs
- #30909: Add Parcel Bundler doc
- #32747: Add Sass docs (variables, mixins, and loops) to most pages
- #33006: docs: add bootstrap5 zh-tw in translations
- #33049: Docs improvements after beta2
- #33081: Fix typo in nav-tabs docs
- #33123: Clarify docs around .navbar-brand
- #33207: Add an example of v4's media component in the flex utils docs
- #33246: Update the "Nonblocking files" section in the docs
- #33267: Grammatically update the doc
- #33300: Update modal's
show
method to acceptrelatedTarget
as an argument - #33301: Add example: toggle modal dialogs
- #33322: Fix Flex utilities documentation to add vertical space in example
- #33332: Mention .no-gutters removal in migration guide
- #33333: Fixes some copy around inline forms
- #33380: Utilities to Utilities API (Borders doc page)
- #33386: Update Customize > Sass docs to properly place default variable overrides
- #33430: Add link to new Parcel guide in starter template
- #33443: offcanvas-navbar: add missing redirect
🏭 Tests
- #32662: Unit tests for Popper V2
- #33045: Simplify karma.conf.js
- #33060: Add the missing expectations for touch events
- #33090: Add tests for
DATA_KEY
- #33167: visual tests: add missing base-component dist file
- #33398: BrowserStack: test on iPhone 12
🧰 Misc
- #33067: CI: skip release drafter if we are not on our repo
- #33100: linkinator: replace
--silent
with--verbosity
- #33129: Rename _gh_pages to _site.
- #33130: CodeQL: skip dependabot PRs too
- #33148: Improve change-version script
- #33192: Bundlewatch: stop ignoring dependabot branches
- #33326: Delete the unused build/ship.sh
- #33329: @rollup/plugin-replace: specify
preventAssignment: true
- #33397: .browserslistrc: remove the Edge workaround.
- #33399: .browserslistrc: remove Android and make Safari/iOS 12 the minimum
- #33401: README.md: use shields.io for the tests badge too
📦 Dependencies
Updated numerous devDependencies https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F34
v5.0.0-beta2
Highlights
- Dropdowns:
- Updated dropdown plugin to add
data-bs-popper="static"
via JS to the.dropdown-menu
when the trigger has adddata-bs-display="static"
anddata-bs-popper="none"
when in navbars. - Modified several selectors to separate our positioning styles from the Popper.js styles.
- Updated dropdown plugin to add
- Navbars:
- Added a new
.navbar-nav-scroll
class to enable vertical scrolling when a collapsed navbar is opened. It's customizable via Sass and a CSS variable. Read more in the docs. - We've re-added
flex-grow
to the.navbar-collapse
to restore the flexbox behaviors from v4 and prevent some content from being inadvertently squished.
- Added a new
- Forms:
- Removed
vertical-align
from.form-select
- Form validation mixin updated with additional parameters
- Fixed validation icon placement in
.form-select
- Checkboxes and radio buttons are aligned better in input groups
- Removed
- Buttons:
- Added variables for tinting and shading button state colors
- Suppressed the default focus outline for buttons in Chromium
- Toasts:
- Added
word-break
to.toast-body
- Added a live example to the docs to trigger a real toast
- Added
- Carousels:
- Updated docs examples to use
<button>
s wherever possible instead of<a>
elements. - CSS selectors changed for using
<button>
s as indicators (from.carousel-indicators li
to.carousel-indicators [data-bs-target]
).
- Updated docs examples to use
- Bundles:
- Added our helpers to the utilities CSS bundle
- JavaScript:
- Dropdown now emits events on the
.dropdown-toggle
instead of the.dropdown
. - Restored the offset option for dropdowns.
- Fixed modal toggling when clicking on
data-bs-toggle="modal"
. - We now build our base component as a separate
.js
file. - We now prevent
getSelector
from returning URLs as selector which caused errors in dropdown and scrollspy plugins. - Refactored components to use a utility function to define jQuery plugins
- Dropdown now emits events on the
🚀 Features
- #32037: Add
.navbar-nav-scroll
for vertical scrolling of navbar content - #32317: Add variables for modifying button state colours.
- #32376: Support Popper virtual elements
⚡ Performance Improvements
- #32348: Use box shadows instead of linear gradients to colorize tables
🎨 CSS
- #31757: Extended Form validation states capabilities
- #32037: Add
.navbar-nav-scroll
for vertical scrolling of navbar content - #32317: Add variables for modifying button state colours.
- #32318: Remove
vertical-align
from.form-select
- #32324: Add helpers to utilities bundle
- #32348: Use box shadows instead of linear gradients to colorize tables
- #32397: Utility API, RFS option: Only generate responsive classes when needed
- #32415: Reset Popper position in RTL
- #32419: Tweak
.form-select
padding - #32423: Add two new variables for pagination border-radius values
- #32436: RTL improvements
- #32440: Expand
visually-hidden-focusable
so it can be used on a container, … - #32492: Fix: variables collide with globals
- #32501:
.ratio
missing variable prefix - #32524: Remove the initial margin from dropdown/popover in favor of Popper
- #32575: docs(sidebar): invalid CSS value
- #32627: Carousel: use buttons, not links, for prev/next controls
- #32630: Dynamic tabs: use buttons rather than links
- #32631: Remove old/unnecessary reboot bug fix
- #32661: Make carousel indicators actual buttons
- #32670: Add word-break to
.toast-body
- #32689: Suppress focus outline for buttons when it shouldn't be visible in Chromium
- #32751: Consistently use
outline:0
rather thanoutline:none
- #32754: Darken dropdown item hover style
- #32761: Mention stretched-link constraints with table elements
- #32785: Lighten disabled dropdown text to
$gray-500
- #32787: Remove popover-arrow margin to fix alignment of the arrow
- #32793: Change
.form-check
background to$input-bg
and change transitions - #32819: Color utils docs
- #32899: Re-add
flex-grow
to.navbar-collapse
- #32912: Update checks and radios in input groups
- #32930: Fix hardcoded custom prop. in
.navbar-nav-scroll
- #32951: fix(accordion): ensure
.accordion-button
stays left-aligned - #32986: Dropdown menu alignment fixes
- #33003: Dropdown - Change the selector to check the use of Popper
- #33022: Ensure
.navbar-collapse
behaves as intended
☕️ JavaScript
- #32285: Refactor components to use a utility function to define jQuery plugins
- #32303: Use the ternary operator in a few more places
- #32309: tests: replace deprecated jQuery method
- #32313: build-plugins: build Base component too
- #32339: Remove
SelectorEngine.matches()
. - #32376: Support Popper virtual elements
- #32391: SelectorEngine: drop variable used once
- #32392: alert: rename variables for consistency
- #32393: carousel: switch to string constants
- #32394: Remove
TRANSITION_END
from utils - #32395: carousel: switch to
if/else
- #32405: Add Popper fallback behaviour
- #32420: Tooltip - check if tip and its parent node exist in dispose method
- #32436: RTL improvements
- #32437: Tooltip/popover - change the default value for
fallbackPlacements
- #32438: collapse: prevent url change if
A
nested tag is clicked - #32443: Restore offset option for dropdown component
- #32465: Tooltip - Add missing callback in async spec
- #32511: modal: move common code to reusable functions
- #32523: Tooltip refactoring
- #32524: Remove the initial margin from dropdown/popover in favor of Popper
- #32585: Throw a
TypeError
instead of the genericError
- #32586: Prevent
getSelector
from returning URLs as selector - #32603: Scrollspy - Remove unnecessary event argument
- #32625: Dropdown - Emit events on the
.dropdown-toggle
button - #32661: Make carousel indicators actual buttons
- #32691: Fix toggling modal when clicking on
data-bs-toggle="modal"
- #32750: Fix dropdown keys to open menu
- #32843: Remove custom
fallbackPlacements
from the dropdown - #32845: Fix Popper preventOverflow boundary config
- #32882: Add function type for
popperConfig
option - #32986: Dropdown menu alignment fixes
📖 Docs
- #32246: Replace Lorem Ipsum placeholder text with more representative (or at least english language) text
- #32259: docs: SVG consistency changes
- #32272: Add a callout for the sanitizer in popovers and tooltips
- #32284: docs: Add Korean translation
- #32287: Typo: show on xxl, if only xl should be hidden.
- #32316: carousel.md: fix
$carousel-transition-duration
reference - #32332: Move migration sidebar entry to sidebar.yml
- #32390: docs: Fix Popper-related docs
- #32398: Fix missed occurrencies of "Popper.js"
- #32399: Remove duplicated 'follow Bootstrap on Twitter' link in Getting Started
- #32401: cheatsheet: Drop redundant
(current)
text - #32437: Tooltip/popover - change the default value for
fallbackPlacements
- #32449: examples: Update font utility classes to new v5 versions
- #32455: docs: Add
system-ui
to the native font stack documentation - #32461: Docs: style clipboard button on
:focus
, not just:hover
- #32463: Straggler lorem ipsum text
- #32464: Add missing
has-validation
in checkout examples - #32478: Remove redundant
pointer-events: none
override for tooltip and popover disabled buttons - #32479: Clean up lorem ipsum text in popover examples
- #32483: docs: Remove unneeded
.form-group
class - #32489: Fix popover docs example
- #32490: Add keyboard-focusable elements for popover on disabled button
- #32512: Docs v5: Fix Sass rounding precision and state Sass implementation
- #32529: Tooltips: add missing space
- #32534: Documentation: added class selector "." to "dropend"
- #32543: API docs: add missing comma
- #32575: docs(sidebar): invalid CSS value
- #32589: Fix navbar docs - active
nav-link
- #32620: docs: work around Toast CSS conflict with utils
- #32627: Carousel: use buttons, not links, for prev/next controls
- #32630: Dynamic tabs: use buttons rather than links
- #32632: Docs: Tweak the wording for collapse to indicate button is preferred/more semantic
- #32634: Docs: Remove incorrect mention of dropdowns for dynamic tab behavior
- #32638: Add an actual
data-bs-touch="false"
example in the carousel docs - #32661: Make carousel indicators actual buttons
- #32684: Add functions and variables to the utilities API docs imports
- #32685: Clarify the
$enable-shadows
option in our docs - #32688: Tweak wording for no-touch carousel
- #32740: Fix typo
- #32744: Document size and multiple aren't supported on floating label selects
- #32745: Add a link to v4.x from the v5 homepage
- #32758: Migration: mention the removal of
.rounded-sm/lg
utilities - #32759: Add mention of CSPs and SVGs
- #32760: Add a live toast example to the docs
- #32761: Mention stretched-link constraints with table elements
- #32771: Improve docs regarding RTL migration
- #32778: Document some basic code conventions for us
- #32782: [docs] Update toasts.md
- #32788: Remove role="button" from CTA links in carousel examples
- #32795: Clarifies Sass variable defaults, adds bootstrap-npm-starter callout
- #32819: Color utils docs
- #32842: Docs: add v4.6.0
- #32846: docs: Fix navbar-nav-scroll description
- #32911: migration: mention
.form-text
changes - #32912: Update checks and radios in input groups
- #32940: Fix default value for
$enable-deprecation-messages
- #32979: Fix boundary config description for dropdown and popover
- #32995: Add a note to change the case type of option name
- #33017: Docs on enforcing HTTPS and avoiding mixed content
- #33027: Revamp sticky header offset to improve a11y
🌎 Accessibility
v4.6.0
Highlights
- Tooltips and popovers can have custom clases via
customClass
option. - Added new
.navbar-nav-scroll
class for scrolling expanded navbar contents on mobile devices. - For improved accessibiliy, spinners now slow down when
prefers-reduced-motion
is enabled. - v4.x docs are now built on Hugo for easier maintenance and backports from v5.x.
- Darkened
background-color
of.dropdown-item
for improved hover state contrast, and ligthened the disabled.dropdown-item
color
. - Improved alignment of form validation tooltips.
- File inputs no longer extend beyond their containers.
CSS
- #31557: Fix form validation tooltip alignment
- #31657: Handle the Ubuntu sans-serif case
- #31700: Suppress flexbox side effects in breadcrumb
- #31882: Slow down spinners when prefers-reduced-motion
- #31886: Fixed: Undefined mixin "deprecate" when importing "bootstrap-grid-scss"
- #32141: Use correct value order
- #32145: Avoid invisible real file input "spilling" out of container
- #32160: Add overflow suppression to custom file label
- #32211: Move negative margin-bottom from .nav-item to .nav-link
- #32212: Remove needless Stylelint disables
- #32833: Add
.navbar-nav-scroll
for vertical scrolling of navbar content - Add two new variables for pagination border-radius values; backport of #32423
- Remove old/unnecessary reboot bug fix; backport of #32631
- Suppress focus outline for buttons when it shouldn't be visible in Chromium; backport of #32689
- Consistently use
outline:0
rather thanoutline:none
; backport of #32751 - Darken dropdown item hover style; backport of #32754
- Lighten disabled dropdown text to
$gray-500
JS
- #31820: Check for data-interval on the first slide of carousel
- #31834/#32225: tooltip/popover: add a
customClass
option - #32001: Move
js/src/index.js
one folder up - #32045: tests: fix sanitizer test
- #32220: Don't hide modal when
config.keyboard
is false - #32312: build-plugins: switch to "bundled" for babel helpers
Docs
- #31861: Split up dropdown sizing docs to improve rendering
- #31892: Remove redundant visually hidden "(current)" from pagination controls
- #31893: manifest.json: Switch to relative URLs so that we don't need to change the path with every major/minor release
- #31898: switch to suggesting jsDelivr as a CDN
- #31904:
- docs(forms): use a legend for fieldset instead of aria-label
- docs(forms): fix incorrect legend nesting in fieldset
- #31936: forms: change inline custom radio name
- #31951: Update anchor-js to v4.3.0
- #31960: Explicitly mention emoji fonts, tweak sentence in typography
- #31981: list-group.md: fix snippet
- #32005: Remove
bugreport.apple.com
since it doesn't work - #32015: Fix redirects
- #32050: Make docs anchorjs links darker on keyboard focus
- #32054: Add callouts about using light colors ideally on a dark background
- #32077: Switch to Hugo
- #32083: mention "Liberation Sans"
- #32087: download.md: link to JS files comparison too
- #32094: Changes to navbar documentation/explanation
- #32106: Clarify JS bundle docs once more for v4
- #32137: input-group.md: fix wrong class
.visually-hidden
- #32138: navbar.md: remove
loading=lazy
from snippets - #32147: Fix caniuse.com redirects
- #32151: Mention user-select-all support in docs
- #32196: homepage: split snippets and show copy buttons
- #32203: Switch to jsDelivr for the remaining docs assets
- #32223: introduction: split comments
- #32247: Fix typos in tooltip/popover docs
- #32253: Add Russian translation
- #32363: Remove useless
.text-left
in Layout / Overview - #32399: Remove duplicated "follow Bootstrap on Twitter" link in Community section
- #32457: Add mention of the bs-custom-file-input plugin needed for the custom file input
- #32461: style clipboard button on
:focus
, not just:hover
- #32462: Replace Lorem Ipsum placeholder text with more representative (or at least english language) text
- #32634: Remove incorrect mention of dropdowns for dynamic tab behavior
- #32639: v4: Add an actual
data-touch="false"
example in the carousel docs - #32728: add v5.0 in versions
- #32761: Mention stretched-link constraints with table elements
- #32789: Remove
role="button"
from CTA links in carousel example - #32791: Docs v4: Sass implementation and rounding precision
- #32809:
- Clarify Sass import and customize docs for how to modify variable defaults
- Add an npm starter project callout to a few pages
- #32827: Add a live toast example to the docs
- #32759: Mention CSP and embedded SVGs in v4 docs
- docs(dropdowns): clarify where is
.show
applied - Require
.has-validation
for input groups with validation - Fix mobile menu jump & double border
- Remove double spaces from homepage SVGs
- browserconfig.xml: switch to relative image path
- Tweak the wording for collapse to indicate button is preferred/more semantic; backport of #32632
- Clarify the
$enable-shadows
option in our docs; backport of #32685
Examples
- #31979: v4 Examples/Floating-labels: fix bad behavior with autofill
- #32198: examples: add the version number in
title
Misc
- #29753: Improve build/generate-sri.js regex
- #32003: CI: switch to Node.js 14
- #32008: Update Edge's Rendering Engine on CONTRIBUTING.md
- #32486: BrowserStack: test on macOS Catalina instead of High Sierra
- #32756: Stylelint: disallow some property values
- Fix for npm 7.x package.json: move
version_short
variable under theconfig
object; backport of #32737 - Update build-examples script so that the resulting examples zip file includes only the needed files
- Various CI tweaks
- Updated devDependencies
v5.0.0-beta1
⚠ Please check our migration guide for more info!
🚀 Features
- #32280: Add toast positioning
- #30980: Add RTL support
- #32217: Ability to add custom class in tooltip/popover
- #31643: Add a state field to create utility pseudo-classes
🎨 CSS
- #31178: Update Popper to v2.x
- #31303: Keep rounded corners for the first
.btn
in vertical button group - #31643: Add a state field to create utility pseudo-classes
- #31735: Simplify
make-container()
- #32149: Rename
scale-color()
function toshift-color()
- #32201: fix(container): use
$variable-prefix
- #32213: _reboot.scss: remove needless Stylelint disable
- #32249: breadcrumb: simplify appearance, improve extensibility
- #32277: Remove default linear gradient
- #32280: Add toast positioning
☕️ JavaScript
- #28849: Accessibility: add
aria-label
for tooltips - #29370: create a base component
- #31178: Update Popper to v2.x
- #31827: Add namespace "bs" in the data attributes
- #32095: JS: use more "modern" APIs
- #32124: tooltip.js: deduplicate
_fixTitle()
- #32152: Fix
.close
instances - #32154: BrowserStack: test both on iPhone 7 and iPhone X
- #32173: Make the attribute methods bs specific
- #32178: Handle Chromium to run Karma
- #32179: Don't hide modal when
config.keyboard
is false - #32217: Ability to add custom class in tooltip/popover
- #32221: Add missing tags in unit tests
- #32224: Be consistent with Popper's name.
- #32233: Update bundle.js in tests/integration
- #32279: Remove the
show
config option from the modal plugin - #32310: Remove Polyfill leftovers
📖 Docs
- #31098: Docs: change sidebar collapse controls to actual button elements
- #31608: Add baseof.html layout to docs
- #32117: Update _syntax.scss
- #32131: application.js: remove non-existent selector
- #32134: Add hyphen between Sass and based
- #32135: Fix caniuse.com URLs to prevent redirects
- #32139: floating-labels.md: fix grammar error
- #32143: example.html: remove extra whitespace
- #32153: popovers.md: unbreak line
- #32158: Switch to jsDelivr for the remaining docs assets
- #32162: docs: Add missing
.has-validation
class for input group example - #32163: docs: update selector CodePen example
- #32174: Position Utilities Docs: Fix the marker SVG color to match the button
- #32175: skippy.html: reduce whitespace output
- #32176: docs: use
expanded
Sass output style for development - #32177: examples: fix
.btn-block
instances - #32187: Manually optimize SVGs
- #32189: docs(dropdowns): clarify where is
.show
applied - #32191: Correct block button breakpoint docs typo
- #32194: Docs: fix homepage npm install version
- #32198: examples: add the version number in
title
- #32204: Fix a few typos
- #32223: introduction: split comments
- #32224: Be consistent with Popper's name.
- #32226: docs: use
event
instead ofe
- #32258: homepage: fix wrong
alt
attribute - #32281: Add mention of link underline change to migration and typography
- #32335: cheatsheet.js: use
event
instead ofe
🌎 Accessibility
- #28849: Accessibility: add
aria-label
for tooltips
🧰 Misc
- #29753: Improve build/generate-sri.js regex
- #30986: Revisit our browserslist config
- #32125: Update codeql.yml
- #32154: BrowserStack: test both on iPhone 7 and iPhone X
- #32222: CI: specify
FORCE_COLOR:2
- #32232: npm scripts: run integration tests in parallel
- #32257: README: fix path to search.js
- #32310: Remove Polyfill leftovers
- #32326: Fix
css-prefix-examples-rtl
script
📦 Dependencies
v5.0.0-alpha3
Changes
🚀 Features
- #30449: v5: Floating labels
- #30571: v5: Add
.fs-*
utilities for font-size and rename font-weight/-style utilities - #31343: Adding overflow visible and scroll as utilities
- #31995: Replace
.btn-block
with utilities - #32013: Add dedicated accordion component
- #32066: Add
.d-grid
to our display utilities - #32074: Add
.gap
utilities
🎨 CSS
- #30449: v5: Floating labels
- #30571: v5: Add
.fs-*
utilities for font-size and rename font-weight/-style utilities - #30622: Colors rewrite
- #31343: Adding overflow visible and scroll as utilities
- #31651: Fix disabled checkbox toggle buttons
- #31657: Handle the Ubuntu sans-serif case
- #31684: Add Sass variable for CSS variable prefix
- #31687: Updated
.rounded
utilities - #31700: Suppress flexbox side effects in breadcrumb
- #31826: Alert: Add
z-index
for close button - #31839: docs: fix contrast color against
.bg-info
- #31877: Apply smooth-scroll when
prefers-reduced-motion: no-preference
- #31882: Slow down spinners when
prefers-reduced-motion: reduce
- #31953: Fix input group border radii
- #31955: Drop custom file upload plugin in favor of CSS solution
- #31964: Remove background-clip from .btn-close
- #31993: Remove explicit heights on form elements
- #31995: Replace
.btn-block
with utilities - #32013: Add dedicated accordion component
- #32020: Add
cursor:pointer
to color inputs - #32023: Fix color input heights
- #32031: Fix
.fw
utilities - #32064: Remove firefox workaround for
::file-selector-button
margin - #32066: Add
.d-grid
to our display utilities - #32074: Add
.gap
utilities - #32085: Add checks to fix color contrast issues
- #32121: Use correct value order
☕️ JavaScript
- #30740: karma: stop excluding polyfill.js from istanbul
- #31818: Check for data-interval on the first slide of carousel
- #31842: Remove
Manipulator.toggleClass
- #31951: Update anchor-js to v4.3.0.
- #32011: polyfill.js minor tweaks
- #32016: Streamline jQuery comment.
- #32021: Lint: stop ignoring package.js
- #32024: Fix TypeError when Bootstrap is included in
head
- #32026: toast.spec.js: fix typo
- #32036: ESLint: enable new-cap rule but ignore properties
- #32043: tests: switch to using
toContain()
to check for substring presence - #32045: tests: fix sanitizer test.
- #32046: tests: tweak Jasmine usage
- #32055: dropdown.js: simplify code
- #32093: karma.conf.js: break lines
- #32100: search.js: check for
search-input
element early - #32101: modal.html: use
textContent
📖 Docs
- #30044: Contrast colors added to theme-colors
- #30838: Explain the "dispose" method appropriately
- #31111: Update docs example on how to optimize JavaScript bundle
- #31583: docs(Modal): Add xxl fullscreen example
- #31679: Don't wrap the code snippets in our docs
- #31686: v5: Add disabled examples for .form-control, .form-select, and .form-range
- #31702: Add keyboard shortcut to focus search field
- #31775: Update social.html: use
article
og:type
when it's a page - #31791: docs: remove pixels from SVGs
- #31794: webpack.md: Replace "both of them" with "it"
- #31795: validation.md: fix _validation.scss file reference
- #31796: Update
.btn-close-white
docs tofilter
(notbackdrop-filter
) - #31802: Improve callout shortcode.
- #31803: Update bs-table shortcode
- #31806: docs: switch to fenced codeblocks
- #31809: carousel: add missing
to
description and fixnextwhenvisible
description - #31828: docs: Add Russian translation
- #31835: Move
href
attribute first - #31839: docs: fix contrast color against
.bg-info
- #31861: Split up dropdown sizing docs to improve rendering
- #31871: Revert "Improve callout shortcode."
- #31892: Remove redundant visually hidden "(current)" from pagination controls
- #31893: Update manifest.json
- #31894: docs: switch to suggesting jsDelivr as a CDN
- #31904: Drop useless text faking a label in horizontal forms example
- #31929: Mention spinners slow down in migration guide
- #31932: Small typo - remove the unnecessary "the"
- #31951: Update anchor-js to v4.3.0.
- #31960: Docs: Explicitly mention emoji fonts, tweak sentence in typography
- #31965: Rename Navs to Navs and Tabs
- #31981: Update list-group.md
- #31982: Fix git conflicts after #30571
- #31984: Add example with input group between two inputs
- #32009: Minor Markdown fixes
- #32015: Fix redirects
- #32031: Fix .fw utilities
- #32040: Add callouts about using light colors ideally on a dark background
- #32049: Update utilities API docs
- #32050: Make docs anchorjs links darker on keyboard focus
- #32058: Form file docs and overrides
- #32076: Partially revert "Move this to a partial to work around the stray
p
… - #32084: reboot.md: mention "Liberation Sans"
- #32086: config.yml: remove the unused "expo" parameter
- #32087: download.md: link to JS files comparison too
- #32090: [Docs] Changes to navbar documentation/explanation
- #32099: search.js: use the current v5.getbootstrap.com URL
- #32100: search.js: check for
search-input
element early - #32102: docs.html: replace backslashes with forward slashes
- #32105: Clarify JS bundle docs one more time
- #32116: browsers-devices: add
chomp
- #32126: Minor improvements to the Alpha 3 changelog
- #32129: masthead: add newlines in the snippets and reindent
🌎 Accessibility
- #30550: Bump
$dark
to$gray-900
- #31839: docs: fix contrast color against
.bg-info
- #31877: Apply smooth-scroll when
prefers-reduced-motion: no-preference
- #31882: Slow down spinners when
prefers-reduced-motion: reduce
- #31892: Remove redundant visually hidden "(current)" from pagination controls
- #31904: Drop useless text faking a label in horizontal forms example
- #32058: Form file docs and overrides
- #32090: [Docs] Changes to navbar documentation/explanation
🧰 Misc
- #30740: karma: stop excluding polyfill.js from istanbul
- #31728: Switch to dart-sass
- #31783: Update .gitignore
- #31878: CI: Allow skipping BrowserStack
- #31930: Update CodeQL action
- #32003: CI: switch to Node.js 14.
- #32005: Remove bugreport.apple.com url
- #32006: CI: Skip dependabot PR branches.
- #32008: Update Edge's Rendering Engine on CONTRIBUTING.md
- #32027: Clarify PRs section
- #32033: CODE_OF_CONDUCT.md: fix redirect
- #32036: ESLint: enable new-cap rule but ignore properties
- #32056: deps: move sirv-cli to npx
- #32063: stylelint: pass the
--rd
flag - #32097: package.json: fix clean-css level switch
📦 Dependencies
v4.5.3
CSS
- #31653: Add a comment to our
escape-svg
function to note that data URIs must be quoted. - #31693: Use the
custom-control
shadow variable instead of the genericinput-focus-box-shadow
. - #31793: Backport some v5 changes (improved
th
styling in Reboot, custom form field styling when printing, and improvements to.text-break
).- #29714: Keep custom check, radio, and switch theme when printing.
- #30781: Reboot's
th
updates: Inheritfont-weight: bold
that comes from user agent stylesheets. - #30932:
.text-break
changes to dropoverflow-wrap
and useword-wrap
once again - #31754: Improve versions page rendering (also reversed the order while I was here)
- #31846: Backports the z-index change to
.close
buttons in dismissible.alert
s.
JS
- #31000: Avoid multiple change event trigger in buttons plugin. Not applicable to v5 since our button JS plugin has been mostly replaced with pure CSS.
- #31673: Fix dropdown variable always evaluating to true.
- #31696: Ensure
hidePrevented.bs.modal
can be prevented. - #31718: Backports new
$dropdown-padding-x
variable from v5.
Docs
- #30811: Mention GPU acceleration fix in docs callout for popovers. Doesn't apply to v5 since we're updating to Popper v2.
- #30838: Explain the
dispose
method more appropriately. - #31706: Backports updated margins for code snippets for improved readability.
- #31769: Backports JS bundle guidance from v5.
- #31851: Backports mention of missing
to
andnextwhenvisible
methods.
Misc
- #31297: Switch to xo ESLint config
- Updated devDependencies versions
v5.0.0-alpha2
Changes
🚀 Features
- #30171: Add .dropdown-menu-dark
- #31280: Extra position utilities
- #31484: Add border width utility
- #31650: Carousel enhancements, including .carousel-dark
🎨 CSS
- #30171: Add .dropdown-menu-dark
- #30394:
box-shadow()
mixin: allow 'null' and drop support 'none' with multiple args - #30572: Add new toasts examples
- #30639: Easier disabled state customization for button variants
- #30781: reboot: table th
- #31035: Add null variables for nav-link
- #31120: Add missing comma in utils
- #31131: Darken dropdown divider
- #31132: Add padding to badges
- #31139: Rename
sr-only
/sr-only-focusable
tovisually-hidden
/visually-hidden-focusable
- #31151: Fix scrollable modal
- #31162: Fix table separator typo
- #31276: v5: Tweak some colors
- #31280: Extra position utilities
- #31338: Removed a broken reference
- #31346: Turn off scroll anchoring for accordions
- #31359: Cleanup/fix after the sr-only to visually-hidden renaming
- #31381: Remove overflow: hidden from toasts
- #31382: Update copy around breakpoint sizing
- #31383: Adjust sizing of checks and radios
- #31396: Add transition to Pagination buttons just like other Bootstrap buttons
- #31424: Mention that Edge Legacy also supports 'filling' their track
- #31439: Remove
flex: 1 0 100%
from rows - #31473: Give more priority to
.d-none
- #31484: Add border width utility
- #31500: Use next breakpoint when targetting xs only
- #31571: Add default parameters to each border radius mixin
- #31641: Revamp close button component
- #31649: Match container gutters with row gutters
- #31650: Carousel enhancements, including .carousel-dark
- #31653: Add a comment for escape-svg function
- #31659: Update Stylelint rules
- #31717: Updates responsive embeds with new class names and CSS variables
- #31718: Add new variable for $dropdown-padding-x
- #31729: Input group addon sass customization options
- #31746: Restore
rem
unit - #31772: _variables: change $btn-close-bg's attribute order
☕️ JavaScript
- #30326: Prevent overflowing static backdrop modal animation
- #30928: Fix tooltip when hovering a child element (
delegateTarget
) - #31066: Change "whitelist" to "allowlist"
- #31067: data: reword storage key in DOM
- #31073: Minor JS tweaks
- #31109: toasts: make default duration 5s
- #31115: fix tooltip hide method when already hidden
- #31125: BrowserStack: stop testing on latest Edge.
- #31155: Clear timeout before showing the toast
- #31212: Minor JS consistency changes
- #31358: Docs: Add accessibility note about dismissible alerts and focus
📖 Docs
- #30572: Add new toasts examples
- #30897: Prevent skip links from overlapping header
- #31036: Docs: Add top/bottom margin to highlighted code samples
- #31058: Update links to bug and feature request issue templates
- #31062: Fix Stack Overflow tag
- #31070: Docs: fix old/broken example capture and typo
- #31071: Docs: clarify rationale for button group on links
- #31075: Updated the command to install using yarn
- #31076: Typo fix: ocassions to occasions
- #31077: Several typo fixes
- #31078: Typo fix: individiual to individual
- #31079: Typo fix: depedending to depending
- #31081: Docs: add Gaël Poupard to the core team page
- #31082: Docs: tweak accessibility section
- #31090: Docs: rename form checks page to "Checks / radios"
- #31093: Docs: improve/expand button documentation
- #31102: Docs: Fix typo
- #31106: Docs: fix typo
- #31107: Correctly document how to add to Sass maps
- #31114: Docs: forms accessibility cleanup
- #31116: Fix links to gutters page
- #31119: v5: Adjust docs sidebar and navbar
- #31122: Update migration.md
- #31130: Add code to method/property tables
- #31133: Docs: screen reader helper/visibility utility tweaks
- #31134: Docs: clarify that pointer events classes don't affect keyboard interaction
- #31135: Docs: move color utility callouts to start of page
- #31137: Docs: (subjectively) nicer looking accordion example
- #31165: Remove backdrop-filter from docs subnav and toasts
- #31190: Fix spelling mistake
- #31192: Docs: Fix vertical align link
- #31194: Minor doc tweaks
- #31196: Fixed typo in docs v5 (Utilities/API) page
- #31201: Docs: separate button group out of checks/radios, expand button groups page
- #31211: homepage: Fix wrong indentation
- #31213: Fix generated example code for RFS
- #31232: Fix sidebar jump
- #31240: Single line example for inline forms
- #31248: v5: Updated About and Brand pages
- #31254: Fix some hexa in colors docs.
- #31268: Fix docs sass importing example.
- #31277: v5: Versions cleanup
- #31278: Migration update
- #31300: docs: mention our bundle file clearly.
- #31339: Add view on GitHub links for easier content editing from the docs
- #31344: Add toasts to the components requiring JavaScript
- #31358: Docs: Add accessibility note about dismissible alerts and focus
- #31382: Update copy around breakpoint sizing
- #31387: Update migration guide
- #31424: Mention that Edge Legacy also supports 'filling' their track
- #31434: make breakpoints specifications consistent with layout/grid.md
- #31441: docs: Fix issue number typo in migration
- #31455: Update current_ruby_version to 5.0.0.alpha1
- #31471: Remove 'both' as its no longer just 2 breakpoints
- #31505: docs(typography): missing punctuation
- #31516: Update icons.yml
- #31556: docs: Fix typo on Customize -> Color page
- #31572: Fix docs incorrect green and cyan hex codes
- #31575: SVG placeholders accessibility
- #31576: Drop h4 color customization in callouts
- #31578: Scrollspy keyboard access in docs
- #31579: Ensure examples content sits in landmarks
- #31580: Wrap home content in & use
- #31590: Build tools: mention how to get the sources
- #31610: Docs layout: ensure content sits in main
- #31636: Add getInstance method in the docs for tooltip
- #31648: Typo in About / Overview
- #31668: Webpack page: add
postcssOptions
key - #31689: docs: fix a few redirects
- #31738: docs: link to the Asynchronous functions section
- #31750: brand: minor consistency changes
- #31752: v5 alpha 2 migration guide updates
- #31754: Tweak versions page columns
- #31767: Convert SVGs in navbar and subnav to pixels
- #31773: Add new Bootstrap Icons homepage images
- #31785: v5: Vertical pills fix on mobile
🌎 Accessibility
- #30897: Prevent skip links from overlapping header
- #30989: Ensure to increase contrasts on buttons & colored links hover/active states
- #31114: Docs: forms accessibility cleanup
- #31131: Darken dropdown divider
- #31276: v5: Tweak some colors
- #31575: SVG placeholders accessibility
- #31576: Drop h4 color customization in callouts
- #31578: Scrollspy keyboard access in docs
- #31579: Ensure examples content sits in landmarks
- #31580: Wrap home content in & use
- #31610: Docs layout: ensure content sits in main
🧰 Misc
- #31011: Update Babel config
- #31047: README: remove
.svg
from shields.io badges - #31062: Fix Stack Overflow tag
- #31063: Update bundlewatch.yml
- #31124: Update .browserslistrc
- #31259: README.md: show brotli size too
- #31588: Download link in README
- #31742: Fix bundlewatch size
📦 Dependencies
v4.5.2
This release addresses the following two issues:
- #31438 restores the
make-container-max-widths
mixin. We won't be using the mixin ourselves, but it will remain in the codebase for the rest of v4 with today's release. We've added a deprecation notice as well. - #31439 removes
flex: 1 0 100%
from.row
s. This was added to address shrinking rows inside the navbar component after our responsive containers were added in v4.4.0. Removing this rolls us back to the expected grid and flex behavior—your row will shrink unfortunately without further changes. We could add extra custom CSS to address this, but it seems shortsighted to rush into that. Instead, apply.flex-fill
to the.row
and your row will behave as usual.
v4.5.1
CSS
- #30808: Simplify
list-group
borders in cards - #30810: Add
z-index
to.custom-check
to fix their rendering in CSS columns - #30817: Add
border-radius
to.card-img-overlay
- #30830: Prevent conflicts with components with classes
- #30922: Fix color on disabled checked state for custom controls
- #30932: Restore
word-break: break-word;
on.text-break
utility. - #30940: Prevent
.row
from shrinking in flex containers - #30957: Nullify custom form states'
box-shadow
- #30959: Toasts in IE11
- #30960: Fix IE11 validation tooltip alignment in input groups
- #30965: Improve floating labels example in IE
- #30966: Improve floating labels with Edge and a general refactor
- #30969: Remove duplicated container breakpoints in compiled CSS
- #30999: Revert
min-width: 0
on.col
due to unforeseen side effects - #31148: Remove duplicate properties on custom controls
- #31165: Remove
backdrop-filter
from docs subnav and toasts - #31339: Add link to view docs pages on GitHub
- #31347: Turn off scroll anchoring for accordions
- #31381: Remove
overflow: hidden
from toasts
JavaScript
- #30326: Prevent overflowing static backdrop modal animation
- #30936: Add
role="dialog"
in modals via JavaScript - #30992: Avoid preventing input event onclick
- #31155: Clear timeout before showing the toast
Build
- #30797: Fix release script docs
- #31011: Updated Babel config
- #31296: Update to Ruby 2.7 and Bundler 2.x
Docs
- #30809: Update docs callout for responsive SVG images
- #30813: Mention Bootstrap Icons in
extend/icons.md
page - #30896: Improve wording on Downloads page
- #30897: Prevent skip links from overlapping header in docs
- #30973: Update some nav examples by removing
.nav-item
from.nav-link
to be more consistent - #31070: Fix some broken examples and typos
- #31135: Move color utility callouts to start of page
- #31234: Clean up docs forms for accessibility
- #31344: Mention toasts in the components requiring JavaScript page