Releases: twbs/bootstrap
Releases · twbs/bootstrap
v5.1.2
Highlights
- Temporarily patched a postcss-values-parser issue by rearranging our
calc()
functions that use negative numbers. This should restore the ability to import and compile Bootstrap's Sass increate-react-app
. - Added
border-radius
sizes to small and large.form-select
s - Added
align-self: center
to buttons for improved rendering in flex containers - Fixed Collapse regression that prevented toggling between sibling children
- Updated JS Sanitizer to add
sms
in theSAFE_URL_PATTERN
- Improved docs around
.img-fluid
- Added
role="switch"
to our form switches in our docs - Implemented GitHub Issue forms to replace our previous issue templates.
Changes
🎨 CSS
- #34799: fix custom property values of row overrides individual cell
- #34834: Add
align-self: center
to buttons for improved rendering in flex containers - #34853: Add
border-radius
sizes to small and large.form-select
s - #34861: Separator for table direct children
- #35017: Use Sass variable instead of RGB components
- #35033: Add workaround for dart sass compile error
☕️ JavaScript
- #34951: Fix Collapse regression of handling toggling between sibling chilldren
- #34980: Minor refactoring
- #35074: sanitizer: add
sms
in theSAFE_URL_PATTERN
📖 Docs
- #34824: docs: Add
role="switch"
to switches - #34918: docs: Update RFS version & move "v" prefix to config.yml
- #34920: Fix Backdroped typo
- #34921: Fix JavaScript typo
- #34922: fix predefined typo
- #34923: fix utilities typo
- #34926: Improve description of
.img-fluid
in docs - #34935: Non-blocking typo fix
- #34936: replace dummy text with English for Text truncation page
- #34946: Changes some latin/dummy text to English
- #35013: Add offcanvas to the components requiring JavaScript
- #35111: Fix capitalization after period in
contents.md
🛠 Examples
- #35022: examples: Add
role="switch"
to switches
🧰 Misc
- #34626: Implement issue forms
- #34940: Add cSpell custom dictionary and docs-spellcheck script
- #35070: rollup: specify
generatedCode: 'es2015'
- #35086: README.md: fix capitalization after period
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F43
v5.1.1
Highlights
🎨 CSS
- #34679: Fix font size variable name
- #34699: Add check to
rgba-css-var
function for body or bg - #34773: Include root.scss in all dist builds
- #34779: Fix
$dropdown-link-hover-color
variable color value in _variable.scss file
☕️ JavaScript
- #34621: carousel: move common checks to a function
- #34701: Fix modal when is triggered by
bs-toggle
, to hide other open instances - #34835: Collapse on toggle, should not hide descendant tabpanels
- #34842: Fix tooltip
data-bs-original-title
issue
📖 Docs
- #32781: docs: shortcodes tweaks and consistency changes
- #34686: docs: Fix placeholders typo
- #34752: Fix typo in placeholder docs
- #34769: Enhance Alerts > Live Example section
- #34781: docs: fix typos in approach and placeholders
- #34787: Progress page: remove toggle animation button
- #34840: clarify importing all vs specific plugins
- #34842: Fix tooltip
data-bs-original-title
issue - #34877: docs: add
$enable-smooth-scroll
to Sass options page - #34886: Disabled link cleanup
- #34892: Fix a11y issues in
.hstack
example and placeholder 'How it works' example - #34910: Docs: Add Callout to Stacks Helper page about limited flexbox gap support
- #34913: docs: make use of the
.Site.Params.docs_version
variable - #34914: Typo/US locale fixes
🛠 Examples
- #34766: dashboard-rtl: use the same scripts as the dashboard example
🌎 Accessibility
- #34886: Disabled link cleanup
🏭 Tests
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F42
v5.1.0
Highlights
- Added experimental, opt-in CSS Grid support
- Added support for responsive offcanvas components in navbars
- Added new placeholders component for skeleton loading screens
- Added support for horizontal collapsing in the collapse component
- Added new stack and vertical rule helpers
- Added tons of new CSS variables for body styles, colors, RGB colors, and more
- Updated
.bg-*
and.text-*
utilities to use CSS variables and new RGB CSS variables for real-time customization - Added four new component examples for dropdowns, footers, list groups, and modals
- Updated modal and offcanvas backdrops to make them unique to each component
- Reverted ability for
.col-*
classes to override.row-cols-*
classes for now until we can fix some critical bugs
🚀 Features
- #31813: Add optional CSS grid
- #31859: Add a "skeletons" component
- #32319: Add maps for all colors, document how to extend color utilities
- #33403: modal: change
data-dismiss
so that it can be outside of a modal usingbs-target
- #33781: Add utility classes for opacity
- #33986: New helpers:
.hstack
,.vstack
, and.vr
- #34253: Add horizontal collapse support
- #34273: Offcanvas navbar
- #34333: Accept argument of different types in the
getInstance
method
🎨 CSS
- #31813: Add optional CSS grid
- #32319: Add maps for all colors, document how to extend color utilities
- #33781: Add utility classes for opacity
- #33986: New helpers:
.hstack
,.vstack
, and.vr
- #34100: Updated utility API (css-vars utils and new bg/color utils), plus new root CSS variables
- #34253: Add horizontal collapse support
- #34273: Offcanvas navbar
- #34432: More concise improvements for
add()
andsubtract()
- #34440: Add null
$card-box-shadow
variable - #34445: fix(forms): prevent color control from shrinking
- #34475: Make text decoration consistent with other anchors
- #34481: Make the
$accordion-icon-color
default value consistent with the$accordion-button-color
- #34572: Clean up a couple CSS Grid issues
- #34612: Revert "Allow individual grid classes to override
.row-cols
" - #34651: Update
$input-bg
to use$body-bg
☕️ JavaScript
- #33402: Changes to Alert component to match the others
- #33403: modal: change
data-dismiss
so that it can be outside of a modal usingbs-target
- #33603: Fix
Manipulator.offset()
- #33610: Toasts: Change showing timings and classes to keep toast
display:none
by default - #33865: Add shift-tab keyboard support for dialogs (modal & Offcanvas components)
- #33866: Add dynamic, live alerts example to docs
- #34170: Use a streamlined way to trigger component dismiss
- #34205: Cleanup tooltip & popover components
- #34207: Make proper use of the SelectorEngine in ScrollSpy
- #34215: Use the
switch
statement instead ofif
- #34220: Do a major cleanup in Collapse.js
- #34333: Accept argument of different types in the
getInstance
method - #34441: util.js: remove
Selector.findOne()
dependency - #34458: Dropdown cleanups
- #34543: Fix
Util.reflow
function and add documentation - #34619: tooltip: move repeated strings to constants
- #34620: Enable a few eslint-config-xo rules
- #34628: Regression on tooltip template creation process.
📖 Docs
- #32319: Add maps for all colors, document how to extend color utilities
- #33866: Add dynamic, live alerts example to docs
- #34100: Updated utility API (css-vars utils and new bg/color utils), plus new root CSS variables
- #34406: Fix site params variable on themes section
- #34472: Added new Offcanvas file to import example
- #34517: Update nav-tab.md
- #34526: Add: GitHub Octicons to the list
- #34557: docs: minor image compression improvements
- #34573: Update the custom Sass import docs
- #34574: Document change to
hr
in v5 - #34577: Make note of
_root.scss
being required - #34578: Rename Build Tools page to Contribute
- #34605: Collapse page: add a link to the accordion page
- #34637: Improved docs describing
media-breakpoint-down
breakpoints
🛠 Examples
- #33882: Add four new snippet examples
- #34273: Offcanvas navbar
- #34336: Remove unneeded
.text-white-50
CSS rule from Offcanvas Example
🌎 Accessibility
- #33865: Add shift-tab keyboard support for dialogs (modal & Offcanvas components)
🔧 Utility API
- #34100: Updated utility API (css-vars utils and new bg/color utils), plus new root CSS variables
🧰 Misc
- #32907: npm scripts: add
aggregate-output
- #34389: CONTRIBUTING.md: fix broken link to README.md
- #34453: CI: make use of the
actions/setup-node
'scache
option
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F31
v5.0.2
🚀 Features
- #34052: Automatically select an item in the dropdown when using arrow keys
🎨 CSS
- #33621: Allow individual grid classes to override
.row-cols
- #34008: Fix x-paddings for select (with floating label, and in Firefox)
- #34026: Set the correct color for popover header bottom border
- #34034: Add missing transition to
.form-select
- #34044: Fix wrong comment text for tooltip
- #34047: Handle complex expressions in
add()
&subtract()
- #34048: Decouple
--bs-table-bg
and--bs-table-accent-bg
- #34062: Document how to make utilities responsive using the API
- #34124: fix(dropdowns): RTL for
.dropdown-menu-*
- #34161: fix(forms): unitless
line-height
for floating labels - #34223: docs(style): fix display of nested
<ul><li>
- #34245: Replace
/
division with multiplication and customdivide()
function - #34255: Don't set auto margin on offcanvas close
- #34281: Fix lingering Sass math
- #34283: Update the
divide()
function and RFS - #34332: Fix another Sass division
☕️ JavaScript
- #33276: Add
getOrCreateInstance
method in base-component - #33371: Popover & Tooltip: Allow
dispose
/hide
methods usage throughjQueryIntreface
- #33608: Utils: add
getNextActiveElement
helper function - #33845: Fix handling of transitionend events dispatched by nested elements
- #33928: Reset inside a Dialog does not work if
data-dismiss="modal"
is set - #33947: Refactor scrollbar.js to be used as a Class
- #33948: Add tests for scrollbar.js & better handling if a style property doesn't exist
- #33960: fix
isVisible
false positives from deep nesting or alternate means - #33982: Don't add empty content holder when there is no content available
- #34014: Fix backdrop "Cannot read property 'removeChild' of null" when removed from body
- #34052: Automatically select an item in the dropdown when using arrow keys
- #34070: Fix test of #34014
- #34071: Change
element.parentNode.removeChild(element)
toelement.remove()
- #34085: Fix prevented show event disables modals with fade class from being displayed again
- #34092: Backdrop: Fix stale body by removing unnecessary default
- #34158: Register only one
DOMContentLoaded
event listener inonDOMContentLoaded
- #34266: Fix carousel buttons
- #34307: fix(carousel): arrow keys break animation if carousel sliding
📖 Docs
- #33724: Nav-tabs documentation example: Adjust example to
querySelectorAll
- #33749: add Bootstrap 5 Simplified Chinese translation
- #34009: Drop
BlinkMacSystemFont
in docs - #34018: Adjusted z-index to cover "copy" buttons
- #34040: Placeholder changes to input value in readonly input.
- #34044: Fix wrong comment text for tooltip
- #34050: Replace Freenode with Libera IRC server
- #34062: Document how to make utilities responsive using the API
- #34074: Update Hugo config and sitemap.xml
- #34090: Change HTTP to HTTPS
- #34143: Add positioned badges example to docs
- #34160: img in horizontal card
- #34175: Fix typo in sass.md ("theses"→ "these")
- #34179: Missed explanations for variables override
- #34180: docs: update dropdowns.md to reflect the correct version
- #34183: docs: update migration.md to fix a typo
- #34199: docs: update overview.md to fix typo
- #34223: docs(style): fix display of nested
<ul><li>
- #34239: fix(docs): update docs to match the newest modal-open removal
- #34251: Document the change to breakpoint mixins
- #34256: Add important to utilities, mention it's usage and global variable
- #34263: Fix error in JavaScript doc example
- #34280: Remove a leftover
sass:math
module call
🛠 Examples
- #34007: Dashboard example improvements
- #34011: Cheatsheet: fix JS errors in
setActiveItem()
- #34214: fix accessibility issue on sidebars example
🌎 Accessibility
- #34052: Automatically select an item in the dropdown when using arrow keys
- #34214: fix accessibility issue on sidebars example
🔧 Utility API
- #34062: Document how to make utilities responsive using the API
- #34256: Add important to utilities, mention it's usage and global variable
🏭 Tests
- #33948: Add tests for scrollbar.js & better handling if a style property doesn't exist
🧰 Misc
- #34075: Improve vnu-jar.js
- #34250: Replace Freenode with Libera.Chat in the remaining files
- #34279: build/vnu-jar.js: clean up ignores
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F41
v5.0.1
🎨 CSS
- #33551: Modals no longer use
.modal-open
to affect the<body>
scroll - #33644: Validated inputs in
.input-group
shouldn't be behind sibling element - #33825: Prevent
accent-bg
from leaking in nested table - #33870: Don't redefine
$list-group-color
in loop - #33961: Revert
:read-only
selector back to[readonly]
☕️ JavaScript
- #33221: Prevent toast autohiding if focusing or hovering
- #33288: Remove potential false positive assertions
- #33327: Move get element functionality to a helper
- #33381: Popover/Tooltip: streamline
config
property to start with underscore - #33609: Merge js-components
transitionend
listener callbacks into one method - #33635: Extract static
DATA_KEY
&EVENT_KEY
to base-component - #33740: Refactor: move disposing properties into the base class
- #33853: Fix backdrop
rootElement
not initialized in Modal - #33920: Fix: Click on input outside of dropdown-menu prevents dropdown from closing
- #33938: Fix dropdown test warning "without expectations"
📖 Docs
- #33709: Add Arabic translation
- #33837: update About text now that Bootstrap 5 is live
- #33841: Fix typo in scrollspy docs
- #33842: Fix browser support versions in migration doc
- #33843: Fix typo in migration.md
- #33855: Remove extra t in Close button heading in Migration guide
- #33868: Fix value
- #33879: Fix "no long require" to "no longer require" typo
- #33893: Add accessible names to SVG icons in alerts
- #33896: Fix accordion link
- #33901: docs: make tooltip anchor properly wrap the svg
- #33904: Add Fathom Analytics to v5 docs
- #33915: docs: fix rtlcss stringmap configuration
- #33916: Remove unneeded "Edge Legacy" mention in Range docs
- #33924: Fix "directoinal" typo in v5 migration docs
🛠 Examples
- #33850: Fix unnecessary classes
- #33859: Update Sidebars example to fix dividers and rendering on Chrome
- #33926: Fix offcanvas example, using a custom trigger selector
🌎 Accessibility
- #33893: Add accessible names to SVG icons in alerts
🏭 Tests
- #33288: Remove potential false positive assertions
- #33635: Extract static
DATA_KEY
&EVENT_KEY
to base-component - #33927: Fix offcanvas test to expect the initial body
overflow
value - #33938: Fix dropdown test warning "without expectations"
🧰 Misc
- #33923: CI: remove Node.js 10
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F38
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
- Updated numerous devDependencies https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F27
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
- Updated numerous devDependencies https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F26