🚀 Highlights
- #36168: Manually set hover and active backgrounds and borders for dark and light buttons
- #36327: Truncate text to prevent multiline floating label
- #36382: Rewrite Webpack guide
- #36411: Rewrite Parcel guide
- #36412: Docs: Add a Vite Getting Started guide
- #36500: Generate local CSS variables on utilities when using state option
- #36528: Scrollspy: enable
smooth-scrollbehavior
🚀 Features
- #36352: Fix StackBlitz examples by embedding snippets.js when needed
- #36528: Scrollspy: enable
smooth-scrollbehavior - #36759: Support input groups in floating forms
🎨 CSS
- #36156: Update
.form-control-colorsizing and styles - #36168: Manually set hover and active backgrounds and borders for dark and light buttons
- #36178: Add a banner mixin, helping future releases and maintenance
- #36327: Truncate text to prevent multiline floating label
- #36353: Fix offcanvas not showing with
.showing - #36366: add back focus box shadow to
btn-link - #36406: CSS: few proposals
- #36423: Stylelint: Disable
custom-property-empty-line-before - #36446: Update Sass for computing
.table-group-dividerborder - #36447: Fix
.dropdown-itemborder-radiuswhen$dropdown-padding-yis0 - #36461: Fix alert border radius
- #36476: Docs: fix Reboot Horizontal rules using border utilities
- #36477: Docs: remove unused _algolia.scss
- #36499: Don't style
readonlyinputs asdisabled - #36500: Generate local CSS variables on utilities when using state option
- #36509: Remove
--bs-headings-colorCSS variable due to backward compatibility issues - #36535: Fix 'Remove from map' Sass description
- #36608: dashboard example: minor fix
- #36627: Fix search modal z-index to be on top of all docs showcased components
- #36646: Fix tooltip/badge border radius when rounded disabled
- #36680: Revert db61cf3 for
$text-muteddefault value - #36689: Add missing CSS vars for
.navbar-nav - #36704: Fix missing
--bs-btn-disabled-border-colorinbutton-outline-variantmixin - #36711: Add
$display-font-familyand$display-font-style - #36740: Fixing pagination compile issue
- #36747: Fix active/focused button link text color
- #36759: Support input groups in floating forms
☕️ JavaScript
- #35679: Force tooltip and popover to recreate content every time it opens
- #36171: Assorted Event handler patches
- #36386: Fix interoperability issue regarding Event properties
- #36398: JS: tests fixes & standardization of spies usage
- #36401: Change Modal dismiss handler, listening to key down, instead of click
- #36440: Re-ordering js default objects
- #36449: Fix StackBlitz Popovers and Tooltips examples
- #36528: Scrollspy: enable
smooth-scrollbehavior - #36561: Fix possible bug on event handler
- #36588: Handle non-empty whitespace textContent in Tooltip trigger
- #36622: Remove
.showfrom panels dependent-less on the existence of.fadeclass - #36668: Fix on #35679
- #36717: Offcanvas: activate focustrap when backdrop is enabled
- #36758: Docs: Fix typos in snippets.js
- #36772: Fix event handler test
📖 Docs
- #36345: docs: add the version in npm/yarn commands
- #36346: Docs: improve image compression
- #36352: Fix StackBlitz examples by embedding snippets.js when needed
- #36362: Update search box styling and position
- #36363: Add some details on "javascript" page
- #36367: Docs: Correct rounded sizes number
- #36376: Fix missing Swag Store URL
- #36382: Rewrite Webpack guide
- #36395: Docs: quick fixes for HTML
- #36406: CSS: few proposals
- #36410: Update introduction.md
- #36411: Rewrite Parcel guide
- #36412: Docs: Add a Vite Getting Started guide
- #36414: Add docs info for using JS w/ ESM shim
- #36417: Docs: Remove
.is-invalidfrom textarea validation example - #36425: CSS: doc fixes
- #36444: Update import order for utilities API docs
- #36449: Fix StackBlitz Popovers and Tooltips examples
- #36450: Docs: Use example shortcode for all Button groups
- #36476: Docs: fix Reboot Horizontal rules using border utilities
- #36477: Docs: remove unused _algolia.scss
- #36487: Remove confusing unnecessary id/aria-labelledby for dropdown menus
- #36488: Docs: fix some ARIA Authoring Practices Guides broken links
- #36489: Docs: Update some WCAG links, expand sass.md contrast explanation
- #36495: Improve accessible name of version dropdown in docs navbar
- #36503: [docs] Document BootstrapVue being outdated
- #36510: Add example of dark navbar and offcanvas to docs
- #36516: Add .active navbar breaking change to 5.0 docs
- #36535: Fix 'Remove from map' Sass description
- #36545: Carousel: Remove redundant reference to
interval=falsefrom docs & tests - #36553: Make table responsive on Grid page
- #36613: Fix popover live demo to use
data-bs-titleinstead oftitle - #36625: Add some details for non visible scrollspy elements
- #36627: Fix search modal z-index to be on top of all docs showcased components
- #36630: Docs: update clipboard.js to v2.0.11
- #36637: Fix StackBlitz examples needing docs CSS
- #36644: Added examples for Radios in List Group
- #36650: update Lighthouse URL
- #36658: Fix a typo in the documentation masthead
- #36669: Docs: alphabetical reorder of some events/methods in tables
- #36672: Docs: fix some ScrollSpy HTML copyable codes
- #36674: Docs: add indeterminate disabled checkbox example
- #36679: Remove dead link from translations
- #36696: add
type="button"to Bootstrap versions dropdown - #36706: Docs: Add 'Icons' link in footer
- #36712: Docs: fix description on how to alter display values
- #36717: Offcanvas: activate focustrap when backdrop is enabled
- #36732: Add accNames to all progress bar examples
- #36734: Docs: Capitalize Unicode
- #36741: Docs: same text for disabled ranges and disabled form controls
- #36757: Fix indentation in code sample
- #36760: Add links to Webpack, Parcel, and Vite guides on homepage
- #36762: Fix various small typos in documentation
- #36763: Fix typos in code
🛠 Examples
🌎 Accessibility
- #36487: Remove confusing unnecessary id/aria-labelledby for dropdown menus
- #36488: Docs: fix some ARIA Authoring Practices Guides broken links
- #36588: Handle non-empty whitespace textContent in Tooltip trigger
- #36696: add
type="button"to Bootstrap versions dropdown - #36717: Offcanvas: activate focustrap when backdrop is enabled
- #36732: Add accNames to all progress bar examples
🏭 Tests
- #36530: Fix typo in dropdown unit test
- #36667: Minor fix to use self-closing input HTML tag
- #36742: Standardization of
spyOnusage - #36772: Fix event handler test
🧰 Misc
- #36548: Update Code of Conduct with Contributor Covenant 2.1
- #36624: Use 'needs-example' label to trigger live demo bot message
- #36700: Replace JS Bin refs by CodePen or StackBlitz references
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F45
Highlights
- Added an example to our Collapse plugin docs to show how to use horizontal collapsing. This has long been possible via our JS, but we never had an official class to utilize it.
- We've replaced the deprecated
color-adjustwithprint-color-adjustin our Sass files as part of the Autoprefixer v10.4.6 issues. This should quiet the issues folks have seen from that dependency change. If you're using our distribution CSS files, likebootstrap.min.css, you may still see the warning. - Tweaked the size of
smalland.smallto compute to a whole pixel value (was12.8pxand now is14px). - Improved accessibility around our dropdowns, color contrast, and
roleattributes. - Fixed some broken links to supporting documentation.
- Updated dependencies across the board.
What's Changed
- Removed blurred background reference from the Toast Docs. by @pricop in #35190
- Update links to CCA, MQ5 prefers-reduced-motion, evergreen WCAG urls, more resources by @patrickhlauke in #35427
- v4-dev backports and updates by @XhmikosR in #35482
- Backport #35556 by @julien-deramond in #35558
- Tweak toast docs by @patrickhlauke in #35633
- v4-dev backports and updates by @XhmikosR in #35642
- Doc: Reorder alphabetically lists of components by @julien-deramond in #36128
- Updated the small-font-size to use a round value by @pricop in #36172
- v4 dev backports and updates by @XhmikosR in #35767
- _custom-forms.scss: fix order of attributes by @twin-elements in #36231
- Replace the deprecated
color-adjustwithprint-color-adjustby @AdrianCurtin in #36283 - [v4] Doc: remove
role="group"from some split drop* buttons by @julien-deramond in #36254 - Dynamic tabs: use buttons rather than links (backport to v4) by @patrickhlauke in #33163
- v4 dev updates by @XhmikosR in #36430
- Fix closing HTML tag in navs docs by @julien-deramond in #36466
- v4: Horizontal collapse by @mdo in #36434
- Fixing tabs' tests v4 by @louismaximepiton in #36485
- Docs: fix some ARIA Authoring Practices Guides broken links by @julien-deramond in #36490
- v4 - Remove confusing unnecessary id/aria-labelledby for dropdown menus by @patrickhlauke in #36491
- v4 Docs: outdated ARIA/PF link, expand contrast explanation in
accessibility.mdby @patrickhlauke in #36492 - v4: Improve accessible name of version dropdown in docs navbar by @patrickhlauke in #36504
- Update devDependencies by @XhmikosR in #36522
- Docs: update clipboard.js to v2.0.11 by @julien-deramond in #36631
- Update devDependencies by @XhmikosR in #36724
- v4: Add Fathom by @mdo in #36727
- Docs: Capitalize Unicode by @julien-deramond in #36735
- Release v4.6.2 by @XhmikosR in #36725
New Contributors
- @twin-elements made their first contribution in #36231
- @AdrianCurtin made their first contribution in #36283
Full Changelog: v4.6.1...v4.6.2
🚀 Highlights
- #33079: Revamp tabs & follow ARIA 1.1 practices
- #33354: Column Striping Feature for Tables
- #33421: Revamp Scrollspy using Intersection observer
- #33606: Add
.form-check-reversemodifier class - #34334:
make-col-ready(): remove the unused$guttervariable - #34443: Convert navbar to CSS variables
- #34487: Docs offcanvas navbar
- #34547: Prefer Linux-specific fonts over Arial
- #34600: Convert buttons to CSS variables
- #34622: Convert tooltips and popovers to CSS vars
- #34644: Always set the CSS variables for gutters in containers
- #34942: Move reassigned Sass maps for colors to another stylesheet
- #35055: Add
colorandborder-colorCSS variables to tables - #35077: Manipulator: Add JSON parse support
- #35153: Reset
z-indexon.navbar-expand .offcanvasand preventbox-shadowwhen collapsed - #35399: Convert pagination component to CSS variables
- #35401: Convert alerts to CSS variables
- #35402: Convert badges to CSS variables
- #35409: Convert dropdowns to CSS variables
- #35514: Popover.js: Accept empty content through
data-bs-content - #35518: Add sticky bottom utility
- #35736: v5.2.0 design refresh, plus responsive offcanvas classes
- #35893: Add centered dropdown and dropup options
- #35908: Remove thicker border on table thead elements
- #35979: Adjust border-radius values and add some new utilities
- #36242: Add new
.text-bg-{color}helpers
🚀 Features
- #33354: Column Striping Feature for Tables
- #33421: Revamp Scrollspy using Intersection observer
- #33606: Add
.form-check-reversemodifier class - #34519: Add a template factory helper to handle all template cases
- #35077: Manipulator: Add JSON parse support
- #35514: Popover.js: Accept empty content through
data-bs-content - #35518: Add sticky bottom utility
- #35893: Add centered dropdown and dropup options
- #36272: Toast: provide
isShownmethod
🎨 CSS
- #32840: Support floating labels on
.form-control-plaintext - #33606: Add
.form-check-reversemodifier class - #34334:
make-col-ready(): remove the unused$guttervariable - #34443: Convert navbar to CSS variables
- #34547: Prefer Linux-specific fonts over Arial
- #34600: Convert buttons to CSS variables
- #34622: Convert tooltips and popovers to CSS vars
- #34627: Remove tooltip and popover styling as it is handled by Popper
- #34644: Always set the CSS variables for gutters in containers
- #34863: Color input validation icon
- #34942: Move reassigned Sass maps for colors to another stylesheet
- #35055: Add
colorandborder-colorCSS variables to tables - #35082: Set
cursor: defaulton disabled.form-check-label - #35085: Fixes missing variable issue with
media-breakpoint-only - #35153: Reset
z-indexon.navbar-expand .offcanvasand preventbox-shadowwhen collapsed - #35230: Don't override CSS
directionin code elements - #35231: Ensure sufficient contrast in
accordion-item - #35232: Drop prefixed version of
::file-selector-button - #35326: Correctly implement RFS in
:rootCSS variable for$body-font-size - #35399: Convert pagination component to CSS variables
- #35401: Convert alerts to CSS variables
- #35402: Convert badges to CSS variables
- #35403: Convert breadcrumbs to CSS variables
- #35406: Bring back webkit calendar picker indicator for datalists
- #35409: Convert dropdowns to CSS variables
- #35428: Convert border utilities to CSS variables
- #35466: Fix typo in
$purples - #35467: Add missing
border-radiusforbtn-group - #35484: Reprocess inline SVGs with the latest SVGO
- #35491: Rely on
border-widthfor<hr>size - #35518: Add sticky bottom utility
- #35533: docs: Move
gaputility API from "Flex" to "Spacing" - #35554: Separate modal click functionality, utilizing backdrop callback
- #35571: Fix alerts color
- #35592: move theme-colors (vars+map) after color tints definitions
- #35676: Add black to colors map
- #35740: Add
!importantproperty to colored links - #35759: Fix position of
.list-group-item-action - #35804: Allow to set active and disabled class also to .page-link
- #35822: Apply list group numbering to all items
- #35825: Correct the horizontal padding on grid containers
- #35829: New CSS variable for Navbars
- #35844: Fixed border radius var name and .show target in buttons
- #35850: Rename dropdown-shadow to dropdown-box-shadow for consistency
- #35858: Add null modal-footer-bg variable
- #35859: Add z-index for .toast-container
- #35862: Convert list group to CSS variables
- #35886: Replace non-existent
--bs-btn-paddingby--bs-btn-padding-{x|y} - #35894: Base
.text-mutedon body color - #35907: Use all dropdowns CSS variables
- #35908: Remove thicker border on table thead elements
- #35914: Fix dropdowns
- #35917: Define Pagination font size CSS var
- #35918: RTL arrows for popovers and tooltips
- #35921: Split CSS vars for padding values
- #35932: v5.2 border-width is disabled
- #35943: Add missing root border opacity CSS var
- #35960: Convert spinners to CSS variables
- #35961: Convert toasts to CSS variables
- #35962: Convert progress bars to CSS variables
- #35973: Fix dropdowns
- #35976: Fix space between popover's arrow and triggering element
- #35979: Adjust border-radius values and add some new utilities
- #35981: Add additional root variables, rename
$variable-prefixto$prefix - #35984: Update docs syntax colors head of dark mode
- #35994: Update
$border-colorto usergba() - #35995: Ignore warning for
.navbar-lightdeprecation - #35996: Add some
calc()for manipulating new CSS variable version of border-width - #36003: Set opacity on dropdown-divider for now
- #36018: Some CSS fixes
- #36038: v5.2.0 migration updates
- #36058: Fix proposal for
.dropstart - #36070: Popover : New CSS var
- #36071: Train PR: CSS variables for accordion, cards, navs, and modals
- #36082: Fix duplicate border radius CSS var definition
- #36083: Reuse all breadcrumb CSS vars available
- #36093: Adding
@include font-sizewhen not - #36098: Use new CSS vars
- #36100: Adding CSS var to list-group-item-action
- #36105: Fix for missing CSS variables on
.navbar-nav - #36126: Use the
border-colorproperty instead of the CSS variable in border color utilities - #36145: Improve use of CSS vars in Toasts
- #36148: Add CSS vars for accordions
- #36149: Modal : Changing the CSS var management
- #36157: Add
$input-disabled-colorSass variable - #36179: CSS : Minor fixes
- #36202: Update _breakpoints.scss
- #36220: Clean up last
$variable-prefixusages - #36238: Revert
border-colorchange - #36239: Iterate on border utilities
- #36242: Add new
.text-bg-{color}helpers - #36277: Fix proposal for Tooltips
- #36296: Remove leftover abbr styles in Reboot for tooltips
☕️ JavaScript
- #31607: Use Babel and ES6 in docs JS files
- #32692: Clean tooltip component unneeded functionality
- #32999: Extract Carousel's swipe functionality to a separate Class
- #33079: Revamp tabs & follow ARIA 1.1 practices
- #33421: Revamp Scrollspy using Intersection observer
- #33872: Extract Component config functionality to a separate class
- #34509: build: read & dynamically resolve
importson plugins build - #34519: Add a template factory helper to handle all template cases
- #34945: Carousel cleanup & refactoring
- #35077: Manipulator: Add JSON parse support
- #35127: tooltip.js: use array.includes instead of for iteration
- #35141: Modal tweaks & cleanup
- #35156: Collapse: refactor active children handling
- #35157: Dropdown remove redundant code
- #35161: Swipe: add test to ensure that it ignores
pinchevents - #35183: JS: minor refactoring
- #35388: Scrollbar: remove margin/padding properties properly
- #35400: Tooltip: Some more changes
- #35410: BaseComponent: add a couple more tests
- #35419: Alert: add a couple more tests
- #35440: Tooltip: remove leftover method
- #35441: Fix popover arrow & tooltip template after the
setContentaddition - #35448: Dropdown tests: Use a function to improve readability
- #35456: Tooltip: remove title attribute before show & add tests
- #35492: ScrollBar.js. Minor refactoring and add test
- #35500: Dropdown: fix toggle focus after dropdown is hidden using the
ESCbutton - #35506: build/postcss.config.js: minor tweaks
- #35507: Toast: join multiple
classListcalls - #35510: util/index.js: minor refactoring
- #35511: Tab: minor refactoring
- #35512: Scrollspy: minor refactoring
- #35514: Popover.js: Accept empty content through
data-bs-content - #35527: Popover/Tooltip: Fix vertical alignment on arrow of tip elements
- #35540: Tooltip: remove extraneous call to
_getConfig() - #35546: More tooltip refactoring
- #35554: Separate modal click functionality, utilizing backdrop callback
- #35559: Event handler: replace deprecated function & merge
new Eventwithnew CustomEvent - #35589: Remove explicit use of aria-hidden for offcanvas when closed
- #35590: Assorted JS cleanup
- #35682: fix isVisible behavior with new chrome version
- #35684: Selector Engine: improve
parentsmethod to utilize newer JS native methods - #35689: Optimize jQueryInterface in Collapse
- #35734: src/tooltip.js Optimization
- #35748: Dropdown.js optimizations
- #35752: Dropdown cleanup and fixes
- #35753: Carousel tweaks
- #35754: Event Handler cleanup
- #35766: Dropdown: use a combined selector to filter not shown instances
- #35832: Add static backdrop to offcanvas
- #35856: Make event name helper and use it on tooltip & popover to reduce dist sizes
- #35866: Dropdown: use a better selector to avoid triggering click if button is disabled
- #35870: Dropdown: Simplify dataKeyApiHandler
- #35871: Carousel tweaks
- #35893: Add centered dropdown and dropup options
- #35902: Modal: refactor listeners to reduce some code noise
- #35930: Carousel patches
- #35973: Fix dropdowns
- #35983: Carousel tweaks
- #35990: Carousel patches
- #35991: Patch dropdown.js
- #36028: Dropdown test
- #36169: Handle disabled focused tabs with tab JavaScript plugin
- #36186: EventHandler: change check method for custom events, avoiding regex
- #36217: Document incompatibilities between Bootstrap JS and React/.etc
- #36272: Toast: provide
isShownmethod - #36273: Separate docs js assets
- #36324: Revert backdrop utilization, handling clicks over modal
📖 Docs
- #31337: JS docs formatting tweaks
- #31607: Use Babel and ES6 in docs JS files
- #32953: Replace AnchorJS with a Hugo render hook
- #34487: Docs offcanvas navbar
- #35124: Update NuGet docs to specify only .NET Framework projects are supported
- #35154: Add top placement info to offcanvas docs
- #35160: Update typography.md to remove an unnecessary
<abbr>tag - #35223: Add missing
role="search"andtype="search"in navbar doc and examples - #35234: images.md: remove zero-width space
- #35236: Fix typo in RTL Hello World! sentence
- #35264: fix(offcanvas): Add missing titles class
- #35320: Update import stacks required for modifying utilities
- #35327: floating-labels: remove
aria-labelin theselectexample - #35328: Fix spacing utility classes mentioned in navbar supported content documentation
- #35348: Fix typo in vertical alignment of table cells
- #35373: Add missing scss/maps imports
- #35414: Fix variable name in Sass customizing section
- #35434: Breadcrumb docs: drop confusing currentColor and add new callout
- #35446: Update edge-to-edge design instructions
- #35468: Fix variable name in form overview docs
- #35486: Update api.md
- #35497: docs: add Tabler Icons to list of icon packs
- #35532: docs: Add responsive variations for
align-content-between - #35556: docs: Use
paramto set Bootstrap version in Contents page - #35563: docs: A fix for CSS Variables and some proposal
- #35579: docs: add reference to
sticky-xxlutils - #35587: Add note to carousel crossfade docs about bg color
- #35588: Docs: Strengthen and expand note about dynamic tabs with dropdown menus
- #35644: docs: add a StackBlitz "Try It" button in code examples
- #35647: Update cspell config
- #35649: Docs: group together reusable CSS for examples in a single stylesheet
- #35696: Docs - Remove duplicate Octicons entry in icons list
- #35713: Remove incorrect statement about the disabled attribute on
<form> - #35730: Add Spanish translation
- #35735: Change X to Extra
- #35736: v5.2.0 design refresh, plus responsive offcanvas classes
- #35741: docs: remove moot
autocompleteattributes - #35775: Fix dropdown docs about autoclose and esc key.
- #35778: Fixed typo in documentation form validation section
- #35814: Remove remaining
.navbar-lightclasses - #35818: code indentation in readme
- #35827: Fixes #32082
- #35828: Fix typo in Badges CSS variables description
- #35837: Update reboot.md
- #35878: Improve modal component doc
- #35895: Mention form height change in migration guide
- #35903: Separate override for hr's in component examples
- #35905: Site assets:
.bd-bg-purple-bright→.bd-bg-violetand drop unused.bd-text-purple-bright - #35909: update ionicons link
- #35931: Remove unneeded classes from toasts docs
- #35942: update google material icons link
- #35948: docs: add missing
.dropupin dropup centered example - #35955: docs: Update Japanese translation
- #35980: Redesign the "Added in" badges in the docs
- #35984: Update docs syntax colors head of dark mode
- #36002: Fix docs error after #35644
- #36007: Convert added in badges to shortcode
- #36008: Add v5.1.0 to migration guide, update v5.2.0 additions
- #36013: Remove duplicate entry in migration.md
- #36030: Update parcel.md
- #36038: v5.2.0 migration updates
- #36040: Fix migration guide typos
- #36058: Fix proposal for
.dropstart - #36073: Fix typo for StackBlitz edit button's tooltip
- #36088: Fix StackBlitz edit feature by selecting the closest example
- #36092: Doc fixes
- #36099: Changing to btnTitle and btnEdit
- #36101: Move "Navbar" before "Navs & Tabs" in sidebar
- #36112: Fix CSpell by adding 'Analyser'
- #36123: Doc: Reorder alphabetically lists of components
- #36137: Change second example of dropdown form
- #36144: Doc: fix modals and navs CSS vars description
- #36151: Update offcanvas example to include .show class
- #36163: Doc: Uniformization of nav tabs content panes
- #36173: Fix Chroma line highlight style
- #36176: v5.2.0: Migrate to DocSearch 3
- #36182: Fix containers page in docs to re-order list so it matches sections b…
- #36188: example: change
.border-rightto.border-end - #36190: Fix spacing of code snippets
- #36191: Do some CSS and Migration guide cleanup
- #36192: One more code snippet fix
- #36194: Refactor some docs examples CSS
- #36195: Doc: minor modifications in Scrollspy
- #36196: Realign Cheatsheet nav tabs example rendering with the doc examples
- #36199: Minor fixes
- #36203: Docs: update documentation js examples, using es6
- #36204: Rewrite Getting Started > Introduction page to be more guide-like
- #36212: Doc: remove
role="group"from some split drop* buttons - #36217: Document incompatibilities between Bootstrap JS and React/.etc
- #36218: Doc: mention Popper instead of Popper.js
- #36219: Doc: fix offset content for examples page
- #36245: Update new docs version picker to work on home and examples pages
- #36252: Doc: update path to
@popperjs/corein parcel.md - #36260: Docs(Scrollspy): minor changes to be aligned with new version of javascript
- #36273: Separate docs js assets
- #36276: Add proper markup on modal's page tooltips and popovers
- #36307: Fix search with xs to md breakpoints
- #36322: Fix contents.md
- #36328: Remove unused
.border-rightrule from modal example CSS file - #36333: Doc: fix text overflow example
- #36335: Minor changes in 'Usage with JavaScript frameworks' description
- #36337: docs: drop Scratch usage
- #36340: Fix a11y keyboard access to docs navigation
- #36344: docs: link to the root page for the homepage
🛠 Examples
- #35223: Add missing
role="search"andtype="search"in navbar doc and examples - #35308: update grid example docs
- #35365: Make footer examples responsive to mobile screens
- #35483: Replace inline styles in example "Dropdowns"
- #35699: Docs: replace CSS by utilities in examples
- #35704: Fix spelling mistake in footer example
- #35733: examples: fix a couple typos found with codespell
- #35877: remove opacity utilities from example CSS
- #35898: Remove border of disabled calendar buttons in Dropdowns example
- #35919: RTL carousel example
- #35997: Add another list-group snippet example
- #36075: Fix duplicate
.rounded-*and.fw-semibolddefs in examples
🌎 Accessibility
- #33079: Revamp tabs & follow ARIA 1.1 practices
- #35223: Add missing
role="search"andtype="search"in navbar doc and examples - #35231: Ensure sufficient contrast in
accordion-item - #35588: Docs: Strengthen and expand note about dynamic tabs with dropdown menus
- #35589: Remove explicit use of aria-hidden for offcanvas when closed
🔧 Utility API
- #35428: Convert border utilities to CSS variables
🏭 Tests
- #35161: Swipe: add test to ensure that it ignores
pinchevents - #35184: tests: try to fix a few random failures
- #35410: BaseComponent: add a couple more tests
- #35419: Alert: add a couple more tests
- #35431: Tests: consistency changes
- #35448: Dropdown tests: Use a function to improve readability
- #35455: Tests: Minor fixes
- #35456: Tooltip: remove title attribute before show & add tests
- #35492: ScrollBar.js. Minor refactoring and add test
- #35501: Fix tests fixture type
- #35585: Fix visual tests
- #35659: tests: replace 'done' callback with 'Promise' to fix deprecation errors
- #35757: Fix Popover test that randomly fails on BrowserStack
- #35765: tests: revisit all tests using Promise.reject instead of throwing an error
- #36028: Dropdown test
🧰 Misc
- #31607: Use Babel and ES6 in docs JS files
- #34509: build: read & dynamically resolve
importson plugins build - #35178: Switch to Node.js 16 and npm 8.
- #35313: README.md remove broken "David DM" dependency badges
- #35395: build/change-version.js: fix wrong map usage
- #35447: Remove the now outdated build/svgo.yml
- #35451: package.json: add GitHub Sponsors and reorder properties
- #35452: README.md: wrap file contents in a
detailselement - #35454: CI: add
workflow_dispatch - #35481: JS tests: only test one Node.js version
- #35573: Move linkinator to GitHub Actions.
- #35586: build-plugins.js: use globby package
- #35593: Move cspell to Actions
- #35641: Update nuget/bootstrap.png
- #35647: Update cspell config
- #35680: Update cspell config
- #35846: CI: add issues-helper
- #35910: Release Drafter: add highlights
- #36185: Update CODE_OF_CONDUCT.md
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F32
What's changed
- Replace Sass division with multiplication and custom
divide()function by @mdo in #34571 - Update RFS to v8.1.0 by @XhmikosR in #34571
- fix(forms): input-group and validation icons by @ffoodd in #32968
- Fix minor visual bug in Firefox caused by
moz-focusringby @kremit in #32821 - Adjust
SAFE_URL_PATTERNregex for use with test method of regexes by @nikonthethird in #33153 - Add
smsin theSAFE_URL_PATTERNfor sanitizer by @XhmikosR in #35074 - Adjust feedback icon position and padding for
select.form-controlby @mdo in #33206 - Carousel: use buttons, not links, for prev/next controls by @patrickhlauke in #33165
- v4: Sass docs for default variables by @mdo in #33392
- Handle complex expressions in
add()&subtract()by @ffoodd in #34047 - More concise improvements for
add()andsubtract()by @ffoodd in #34432 - Remove
aria-haspopupfrom dropdowns by @patrickhlauke in #33624 - Dropdown: support
.dropdown-itemwrapped in<li>tags by @cpsievert in #33649 - Update Node versions in JS tests (drop Node 10, add Node 16), update docs JS assets and add variables for
vertical-alignin spinners by @XhmikosR in #33807 - Replace Freenode with Libera IRC server by @midzer #34050
- Fix repetition in the Navbar docs description by @coliff in #34208
- Enable
0.xwith negative margins in utilities by @k-utsumi in #33593 - Remove print
theadrule by @coliff in #34426 - Fix prevented
showevent disabling modals with fade class from being displayed again by @alpadev in #34087 - Input group validation with custom-file input by @ffoodd in #33239
- Add eslint-plugin-qunit and tighten JS tests by @XhmikosR in #32270
- Update our tests to Node 16 and npm 8 by @XhmikosR in #35142
- Disabled link cleanup by @patrickhlauke in #34924
- Updated our devDependencies including terser; also enabled two passes for terser by @XhmikosR
Full changelog
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-radiussizes to small and large.form-selects - Added
align-self: centerto buttons for improved rendering in flex containers - Fixed Collapse regression that prevented toggling between sibling children
- Updated JS Sanitizer to add
smsin 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: centerto buttons for improved rendering in flex containers - #34853: Add
border-radiussizes to small and large.form-selects - #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
smsin 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-fluidin 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
Highlights
🎨 CSS
- #34679: Fix font size variable name
- #34699: Add check to
rgba-css-varfunction for body or bg - #34773: Include root.scss in all dist builds
- #34779: Fix
$dropdown-link-hover-colorvariable 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-titleissue
📖 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-titleissue - #34877: docs: add
$enable-smooth-scrollto Sass options page - #34886: Disabled link cleanup
- #34892: Fix a11y issues in
.hstackexample 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_versionvariable - #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
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-dismissso 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
getInstancemethod
🎨 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-shadowvariable - #34445: fix(forms): prevent color control from shrinking
- #34475: Make text decoration consistent with other anchors
- #34481: Make the
$accordion-icon-colordefault 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-bgto use$body-bg
☕️ JavaScript
- #33402: Changes to Alert component to match the others
- #33403: modal: change
data-dismissso 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:noneby 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
switchstatement instead ofif - #34220: Do a major cleanup in Collapse.js
- #34333: Accept argument of different types in the
getInstancemethod - #34441: util.js: remove
Selector.findOne()dependency - #34458: Dropdown cleanups
- #34543: Fix
Util.reflowfunction 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
hrin v5 - #34577: Make note of
_root.scssbeing required - #34578: Rename Build Tools page to Contribute
- #34605: Collapse page: add a link to the accordion page
- #34637: Improved docs describing
media-breakpoint-downbreakpoints
🛠 Examples
- #33882: Add four new snippet examples
- #34273: Offcanvas navbar
- #34336: Remove unneeded
.text-white-50CSS 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'scacheoption
📦 Dependencies
- Updated numerous devDependencies: https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F31
🚀 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-bgand--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-heightfor 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
getOrCreateInstancemethod in base-component - #33371: Popover & Tooltip: Allow
dispose/hidemethods usage throughjQueryIntreface - #33608: Utils: add
getNextActiveElementhelper 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
isVisiblefalse 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
DOMContentLoadedevent 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
BlinkMacSystemFontin 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:mathmodule 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
🎨 CSS
- #33551: Modals no longer use
.modal-opento affect the<body>scroll - #33644: Validated inputs in
.input-groupshouldn't be behind sibling element - #33825: Prevent
accent-bgfrom leaking in nested table - #33870: Don't redefine
$list-group-colorin loop - #33961: Revert
:read-onlyselector 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
configproperty to start with underscore - #33609: Merge js-components
transitionendlistener callbacks into one method - #33635: Extract static
DATA_KEY&EVENT_KEYto base-component - #33740: Refactor: move disposing properties into the base class
- #33853: Fix backdrop
rootElementnot 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_KEYto base-component - #33927: Fix offcanvas test to expect the initial body
overflowvalue - #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