-
Notifications
You must be signed in to change notification settings - Fork 118
Release notes for Bootstrap 5 upgrade
Note that this will have a significant impact on any scss and html customizations you may have made to your fork of this project.
The following links will be helpful:
Get started with Bootstrap v5.2.3
Migrating to v4
How to Migrate from Bootstrap Version 3 to 4
Migrating to v5
How to Migrate from Bootstrap Version 4 to 5
Use Bootstrap 5 with Ruby on Rails 6 and webpack
What happened to $grid-float-breakpoint in Bootstrap 4. And screen size breakpoint shift from 3 -> 4
What are media queries in Bootstrap 4?
- Node package changes:
- Changed version of
bootstrap "^3.4.1"-->"^5.2.3" - Added
@popperjs/core. - Removed
bootstrap-3-typeahead, bootstrap-sass & popper.js
- Changed version of
- Stylesheet changes
-
In
app/assets/stylesheets/application.scss:- removed
bootstrap-sassimport
and replaced with
@import "../../../node_modules/bootstrap/scss/bootstrap";
- removed
-
The order of the
importstatements have been changed to import theblocks/andutils/after the default bootstrap stylesheets -
In
app/assets/stylesheets/blocks/:- Replaced in relevant files:
-
@use "../../../../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap.scss" as * ;
with
@use "../../../../node_modules/bootstrap/scss/bootstrap" as *;
-
- Enclosed all division calculations using symbol
/withcalc()function,
e.g., replaced
padding-right: $grid-gutter-width / 2;
with
padding-right: calc($grid-gutter-width / 2);
- Replaced breaking media queries since Bootstrap 3:
-
@media (max-width: $grid-float-breakpoint-max) {}
with
@include media-breakpoint-down(md){} -
@media (max-width: $grid-float-breakpoint-max) {}
with
@include media-breakpoint-down(md) {}
-
- Replaced in relevant files:
-
Deleted
app/javascript/src/utils/popoverHelper.js.
-
- Mixins
- Media query mixins parameters have changed for a more logical approach.
-
media-breakpoint-down()uses the breakpoint itself instead of the next breakpoint (e.g.,media-breakpoint-down(lg)instead ofmedia-breakpoint-down(md)targets viewports smaller than lg).
-
- Media query mixins parameters have changed for a more logical approach.
- Color system
- All
lighten()anddarken()functions replaced. These functions will mix the color with either white or black instead of changing its lightness by a fixed amount.- Replaced
lighten()bytint-color(). - Replaced
darken()byshade-color().
- Replaced
- All
- Accordion & spinners
- Bespoke versions replaced by Bootstrap 5 accordion and spinner now.
- Accordion
- Changed the default Bootstrap arrow icon for the accordion to use the fontawesome icons plus and minus icons. Created a several accordion specific colour variables:
// Accordion colors
$color-accordion-button: $color-primary-text;
$color-accordion-button-icon: $color-primary-text;
$color-accordion-button-bg: $color-primary-background;
$color-accordion-button-active-bg: shade-color($color-accordion-button-bg, 30%);
(Seeapp/assets/stylesheets/blocks/_accordion.scssandapp/assets/stylesheets/variables/_colours.scssfor details.) - The drag icon in
app/views/org_admin/sections/_section.html.erbnow appears after the plus (or minus) icon.
- Changed the default Bootstrap arrow icon for the accordion to use the fontawesome icons plus and minus icons. Created a several accordion specific colour variables:
- The spinner block now uses class
d-noneinstead ofhiddento hide.
- Buttons
- Bootstrap dropped
btn-blockclass for utilities. So we removed any styling using it. - Close Buttons: Renamed
closetobtn-close. - Renamed
btn-defaulttobtn-secondaryand variable$btn-default-colorchanged to$btn-secondary-color.
- Bootstrap dropped
- Dropdowns
- Dropdown list items with class
dropdownhave classdropdown-itemadded usually withpx-3for positioning. - Added new
dropdown-menu-darkvariant and associated variables for on-demand dark dropdowns. - Data attributes changes required by Bootstrap 5 (as used by accordion and dropdown buttons):
-
data-display-->data-bs-display -
data-parent-->data-bs-parent -
data-target-->data-bs-target -
data-toggle-->data-bs-toggle
-
- Bootstrap 5 Popover added to some dropdown-menu items by adding attribute
data-bs-toggle="popover"
- Dropdown list items with class
- Form
-
form-groupclass replaced withform-control. - Form labels now require
form-labelorform-check-labelto go withform-controlandform-checkrespectively. So all obsoletecontrol-labelreplaced byform-labeland missing ones added. - Dropped form-specific layout classes for our grid system. Use Bootstrap grid and utilities instead of
form-group,form-row, orform-inline. -
form-textno longer sets display, allowing you to create inline or block help text as you wish just by changing the HTML element. - Input group addons are now specific to their placement relative to an input. So
input-group-addonand in our case we replaced withinput-group-addon. - Renamed
checkboxandradiointoform-check.
-
- Images
- Renamed
img-responsivetoimg-fluid.
- Renamed
- Labels and badges
- Class
labelhas been removed and replaced bybadgeto disambiguate from the<label>element.- Renamed
labelclass tobadge - Replaced
label-defaultbybg-secondary - Replaced
label-infobybg-info - Replaced
label-warningbybg-warning .text-dark - Replaced
label-dangerbybg-danger
- Renamed
- Class
- Links
- Links are underlined by default (not just on hover), unless they're part of specific components. So we had to add css to remove underline in many cases.
- Navs & navbars
- Bootstrap rewrote component with flexbox. Dropped nearly all > selectors for simpler styling via un-nested classes.
Instead of HTML-specific selectors like .nav > li > a, we use separate classes for .navs, .nav-items, and .nav-links.
This makes your HTML more flexible while bringing along increased extensibility. So we have dropped HTML-specific selectors and css in
_navs.scsse.g.,.nav-tabs > li > a:hover-->nav-tabs nav-link:hover,.nav-pills > li > a:hover-->nav-pills .nav-link:hover.- Pages with css classes
navandnavbarupdated to work with Bootstrap 5. Soapp/assets/stylesheets/blocks/_navbars.scssandapp/assets/stylesheets/blocks/_navs.scssupdated.- Replaced
nav navbar-navcombination -->navbar-nav - Replaced
navbar-toggle-->navbar-toggler - Replaced multiple spans in
navbar-togglebutton with classicon-bar
--> single span withtoggler-icon - Lists with
nav navbar-navhave classnav-itemadded to list elements.
- Replaced
- Pages with css classes
- Bootstrap rewrote component with flexbox. Dropped nearly all > selectors for simpler styling via un-nested classes.
Instead of HTML-specific selectors like .nav > li > a, we use separate classes for .navs, .nav-items, and .nav-links.
This makes your HTML more flexible while bringing along increased extensibility. So we have dropped HTML-specific selectors and css in
- Notifications
- Notifications now use classes
d-blockandd-noneto show and hide respectively.
- Notifications now use classes
- Panels, thumbnails & wells (replacements)
- Bootstrap 5 dropped panels, thumbnails and wells. So pages with them updated with Bootstrap 5 replacements.
- All views with css classes
panel, panel-body, panel-*Have panel replaced by card to givecard, card_body, card-*, etc. - As
panel-defaultand some otherpanel css classes don't have card equivalents with same suffixes we have added these classes temporarily in_cards.sccs, e.g.,.card-default, etc.
- All views with css classes
- Bootstrap 5 dropped panels, thumbnails and wells. So pages with them updated with Bootstrap 5 replacements.
- Utilities
- Bootstrap renamed several utilities to use logical property names instead of directional names with the addition of RTL support:
- Renamed
left-*andright-*tostart-*andend-*. - Renamed
float-leftandfloat-righttofloat-startandfloat-end. - Renamed
ml-*andmr-*toms-*andme-*. - Renamed
pl-*andpr-*tops-*andpe-*. - Renamed
text-leftandtext-righttotext-startandtext-end.
- Renamed
- The
hiddenandshowclasses have been removed because they conflicted with jQuery's.- Replaced
hiddenwithd-none.
- Replaced
- Text utilities
- As Bootstrap 5.2 dropped class
text-justifywe have created a custom version based on comment https://github.com/twbs/bootstrap/pull/29793#issuecomment-1814683346 -
text-*utilities do not add hover and focus states to links anymore.link-*helper classes can be used instead.
- As Bootstrap 5.2 dropped class
- Bootstrap renamed several utilities to use logical property names instead of directional names with the addition of RTL support:
- Home
- About
- Contributing
- Releases
- Themes
- Google Analytics
- Translations
- Developer guide
- Reporting Issues

