diff --git a/.browserslistrc b/.browserslistrc
index c17ce9049..b8e384bc9 100644
--- a/.browserslistrc
+++ b/.browserslistrc
@@ -1,11 +1,14 @@
# https://github.com/browserslist/browserslist#readme
->= 1%
-last 1 major version
+>= 0.5%
+last 2 major versions
not dead
Chrome >= 60
Firefox >= 60
-Edge >= 16
+# needed since Legacy Edge still has usage; 79 was the first Chromium Edge version
+# should be removed in the future when its usage drops or when it's moved to dead browsers
+not Edge < 79
+Firefox ESR
iOS >= 10
Safari >= 10
Android >= 6
diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json
index b89e0207b..da47da480 100644
--- a/.bundlewatch.config.json
+++ b/.bundlewatch.config.json
@@ -10,7 +10,7 @@
},
{
"path": "./dist/css/bootstrap-reboot.css",
- "maxSize": "2 kB"
+ "maxSize": "2.25 kB"
},
{
"path": "./dist/css/bootstrap-reboot.min.css",
@@ -18,11 +18,11 @@
},
{
"path": "./dist/css/bootstrap-utilities.css",
- "maxSize": "7 kB"
+ "maxSize": "7.5 kB"
},
{
"path": "./dist/css/bootstrap-utilities.min.css",
- "maxSize": "6 kB"
+ "maxSize": "6.75 kB"
},
{
"path": "./dist/css/bootstrap.css",
@@ -30,31 +30,31 @@
},
{
"path": "./dist/css/bootstrap.min.css",
- "maxSize": "21.5 kB"
+ "maxSize": "22 kB"
},
{
"path": "./dist/js/bootstrap.bundle.js",
- "maxSize": "51 kB"
+ "maxSize": "41 kB"
},
{
"path": "./dist/js/bootstrap.bundle.min.js",
- "maxSize": "22.5 kB"
+ "maxSize": "21.5 kB"
},
{
"path": "./dist/js/bootstrap.esm.js",
- "maxSize": "28 kB"
+ "maxSize": "27 kB"
},
{
"path": "./dist/js/bootstrap.esm.min.js",
- "maxSize": "19 kB"
+ "maxSize": "18 kB"
},
{
"path": "./dist/js/bootstrap.js",
- "maxSize": "29 kB"
+ "maxSize": "28 kB"
},
{
"path": "./dist/js/bootstrap.min.js",
- "maxSize": "16 kB"
+ "maxSize": "15.5 kB"
}
],
"ci": {
diff --git a/.eslintignore b/.eslintignore
index 6d874bc36..ae6baae7e 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -4,4 +4,3 @@
/_gh_pages/
/js/coverage/
/site/static/sw.js
-/package.js
diff --git a/.eslintrc.json b/.eslintrc.json
index 59fe70f56..d5a54d46b 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -25,7 +25,12 @@
"error",
"always-multiline"
],
- "new-cap": "off",
+ "new-cap": [
+ "error",
+ {
+ "properties": false
+ }
+ ],
"no-console": "error",
"object-curly-spacing": [
"error",
@@ -38,21 +43,16 @@
],
"unicorn/consistent-function-scoping": "off",
"unicorn/explicit-length-check": "off",
- "unicorn/import-index": "off",
- "unicorn/no-fn-reference-in-iterator": "off",
+ "unicorn/no-array-callback-reference": "off",
"unicorn/no-for-loop": "off",
"unicorn/no-null": "off",
"unicorn/no-unused-properties": "error",
"unicorn/no-useless-undefined": "off",
- "unicorn/prefer-array-find": "off",
- "unicorn/prefer-dataset": "off",
- "unicorn/prefer-includes": "off",
- "unicorn/prefer-node-append": "off",
- "unicorn/prefer-node-remove": "off",
- "unicorn/prefer-number-properties": "off",
+ "unicorn/prefer-dom-node-append": "off",
+ "unicorn/prefer-dom-node-dataset": "off",
+ "unicorn/prefer-dom-node-remove": "off",
"unicorn/prefer-optional-catch-binding": "off",
"unicorn/prefer-query-selector": "off",
- "unicorn/prefer-set-has": "off",
"unicorn/prevent-abbreviations": "off"
}
}
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 34da5de09..32b30cdb3 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -101,12 +101,12 @@ Example:
Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se.
-| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes |
-| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------- |
-| Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. |
-| Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit
https://bugreport.apple.com/ | In Apple's bug reporter, choose "Safari" as the product. |
-| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://bugs.chromium.org/p/chromium/issues/list | Click the "New issue" button. |
-| Microsoft | Edge | EdgeHTML | https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/ | |
+| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes |
+| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------ | -------------------------------------------------------- |
+| Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. |
+| Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit | In Apple's bug reporter, choose "Safari" as the product. |
+| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://bugs.chromium.org/p/chromium/issues/list | Click the "New issue" button. |
+| Microsoft | Edge | Blink | https://developer.microsoft.com/en-us/microsoft-edge/ | Go to "Help > Send Feedback" from the browser |
## Feature requests
@@ -123,18 +123,20 @@ Good pull requests—patches, improvements, new features—are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits.
-**Please ask first** before embarking on any significant pull request (e.g.
+**Please ask first** before embarking on any **significant** pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
-project's developers might not want to merge into the project.
+project's developers might not want to merge into the project. For trivial
+things, or things that don't require a lot of your time, you can go ahead and
+make a PR.
Please adhere to the [coding guidelines](#code-guidelines) used throughout the
project (indentation, accurate comments, etc.) and any other requirements
(such as test coverage).
-**Do not edit `bootstrap.css`, or `bootstrap.js`
-directly!** Those files are automatically generated. You should edit the
-source files in [`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/main/scss)
+**Do not edit `bootstrap.css` or `bootstrap.js`, and do not commit
+any dist files (`dist/` or `js/dist`).** Those files are automatically generated by our build tools. You should
+edit the source files in [`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/main/scss)
and/or [`/bootstrap/js/src/`](https://github.com/twbs/bootstrap/tree/main/js/src) instead.
Similarly, when contributing to Bootstrap's documentation, you should edit the
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 31976021e..29135b400 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -15,3 +15,10 @@ updates:
- v5
versioning-strategy: increase
rebase-strategy: disabled
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: weekly
+ day: tuesday
+ time: "12:00"
+ timezone: Europe/Athens
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
index ae1367c89..e2b70e03e 100644
--- a/.github/release-drafter.yml
+++ b/.github/release-drafter.yml
@@ -4,6 +4,9 @@ prerelease: true
exclude-labels:
- 'skip-changelog'
categories:
+ - title: '❗ Breaking Changes'
+ labels:
+ - 'breaking-change'
- title: '🚀 Features'
labels:
- 'new-feature'
@@ -14,6 +17,9 @@ categories:
- 'fix'
- 'bugfix'
- 'bug'
+ - title: '⚡ Performance Improvements'
+ labels:
+ - 'performance'
- title: '🎨 CSS'
labels:
- 'css'
@@ -26,11 +32,19 @@ categories:
- title: '🌎 Accessibility'
labels:
- 'accessibility'
+ - title: '🔧 Utility API'
+ labels:
+ - 'utility API'
+ - 'utilities'
+ - title: '🏭 Tests'
+ labels:
+ - 'tests'
- title: '🧰 Misc'
labels:
- 'build'
- 'meta'
- 'chore'
+ - 'CI'
- title: '📦 Dependencies'
labels:
- 'dependencies'
diff --git a/.github/workflows/browserstack.yml b/.github/workflows/browserstack.yml
index f709b98da..a12bffcf7 100644
--- a/.github/workflows/browserstack.yml
+++ b/.github/workflows/browserstack.yml
@@ -1,20 +1,24 @@
name: BrowserStack
-on: [push]
+
+on:
+ push:
+
env:
- CI: true
- NODE: 12.x
+ FORCE_COLOR: 2
+ NODE: 14
jobs:
browserstack:
runs-on: ubuntu-latest
- if: github.repository == 'twbs/bootstrap'
+ if: github.repository == 'twbs/bootstrap' && (!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]'))
+ timeout-minutes: 30
steps:
- name: Clone repository
uses: actions/checkout@v2
- - name: Set Node.js version
- uses: actions/setup-node@v1
+ - name: Set up Node.js
+ uses: actions/setup-node@v2
with:
node-version: "${{ env.NODE }}"
@@ -24,8 +28,8 @@ jobs:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
restore-keys: |
- ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
- ${{ runner.OS }}-node-v${{ env.NODE }}-
+ ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
+ ${{ runner.os }}-node-v${{ env.NODE }}-
- name: Install npm dependencies
run: npm ci
diff --git a/.github/workflows/bundlewatch.yml b/.github/workflows/bundlewatch.yml
index f09cc9667..b2bd5eed5 100644
--- a/.github/workflows/bundlewatch.yml
+++ b/.github/workflows/bundlewatch.yml
@@ -1,8 +1,14 @@
name: Bundlewatch
-on: [push, pull_request]
+
+on:
+ push:
+ branches-ignore:
+ - "dependabot/**"
+ pull_request:
+
env:
- CI: true
- NODE: 12.x
+ FORCE_COLOR: 2
+ NODE: 14
jobs:
bundlewatch:
@@ -12,8 +18,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v2
- - name: Set Node.js version
- uses: actions/setup-node@v1
+ - name: Set up Node.js
+ uses: actions/setup-node@v2
with:
node-version: "${{ env.NODE }}"
@@ -23,8 +29,8 @@ jobs:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
restore-keys: |
- ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
- ${{ runner.OS }}-node-v${{ env.NODE }}-
+ ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
+ ${{ runner.os }}-node-v${{ env.NODE }}-
- name: Install npm dependencies
run: npm ci
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 777d812d6..469a5a4fc 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -1,22 +1,33 @@
-name: "Code Scanning - Action"
+name: "CodeQL"
on:
push:
+ branches:
+ - main
+ - v4-dev
+ - "!dependabot/**"
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches:
+ - main
+ - v4-dev
schedule:
- - cron: "0 0 * * 0"
+ - cron: "0 2 * * 5"
jobs:
- CodeQL-Build:
+ analyze:
+ name: Analyze
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
+ # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
- languages: javascript
+ languages: "javascript"
- name: Autobuild
uses: github/codeql-action/autobuild@v1
diff --git a/.github/workflows/css.yml b/.github/workflows/css.yml
index 390bffc96..a28059d79 100644
--- a/.github/workflows/css.yml
+++ b/.github/workflows/css.yml
@@ -1,8 +1,14 @@
name: CSS
-on: [push, pull_request]
+
+on:
+ push:
+ branches-ignore:
+ - "dependabot/**"
+ pull_request:
+
env:
- CI: true
- NODE: 12.x
+ FORCE_COLOR: 2
+ NODE: 14
jobs:
css:
@@ -12,8 +18,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v2
- - name: Set Node.js version
- uses: actions/setup-node@v1
+ - name: Set up Node.js
+ uses: actions/setup-node@v2
with:
node-version: "${{ env.NODE }}"
@@ -23,8 +29,8 @@ jobs:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
restore-keys: |
- ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
- ${{ runner.OS }}-node-v${{ env.NODE }}-
+ ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
+ ${{ runner.os }}-node-v${{ env.NODE }}-
- name: Install npm dependencies
run: npm ci
diff --git a/.github/workflows/dart-sass.yml b/.github/workflows/dart-sass.yml
deleted file mode 100644
index 8482a152e..000000000
--- a/.github/workflows/dart-sass.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: CSS (Dart Sass)
-on: [push, pull_request]
-env:
- CI: true
- NODE: 12.x
-
-jobs:
- css:
- runs-on: ubuntu-latest
-
- steps:
- - name: Clone repository
- uses: actions/checkout@v2
-
- - name: Set Node.js version
- uses: actions/setup-node@v1
- with:
- node-version: "${{ env.NODE }}"
-
- - name: Build CSS with Dart Sass
- run: |
- npx --package sass@latest sass --version
- npx --package sass@latest sass --style expanded --source-map --embed-sources --no-error-css scss/:dist-sass/css/
- ls -Al dist-sass/css
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 652e27a7d..150e4d16c 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -1,8 +1,14 @@
name: Docs
-on: [push, pull_request]
+
+on:
+ push:
+ branches-ignore:
+ - "dependabot/**"
+ pull_request:
+
env:
- CI: true
- NODE: 12.x
+ FORCE_COLOR: 2
+ NODE: 14
jobs:
docs:
@@ -12,8 +18,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v2
- - name: Set Node.js version
- uses: actions/setup-node@v1
+ - name: Set up Node.js
+ uses: actions/setup-node@v2
with:
node-version: "${{ env.NODE }}"
@@ -25,8 +31,8 @@ jobs:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
restore-keys: |
- ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
- ${{ runner.OS }}-node-v${{ env.NODE }}-
+ ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
+ ${{ runner.os }}-node-v${{ env.NODE }}-
- name: Install npm dependencies
run: npm ci
diff --git a/.github/workflows/js.yml b/.github/workflows/js.yml
index 543172ccb..c56a2dfdd 100644
--- a/.github/workflows/js.yml
+++ b/.github/workflows/js.yml
@@ -1,7 +1,13 @@
name: JS Tests
-on: [push, pull_request]
+
+on:
+ push:
+ branches-ignore:
+ - "dependabot/**"
+ pull_request:
+
env:
- CI: true
+ FORCE_COLOR: 2
jobs:
run:
@@ -11,14 +17,14 @@ jobs:
strategy:
fail-fast: false
matrix:
- node: [10, 12]
+ node: [10, 12, 14]
steps:
- name: Clone repository
uses: actions/checkout@v2
- - name: Set Node.js version
- uses: actions/setup-node@v1
+ - name: Set up Node.js
+ uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
@@ -28,8 +34,8 @@ jobs:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}}
restore-keys: |
- ${{ runner.OS }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
- ${{ runner.OS }}-node-v${{ matrix.node }}-
+ ${{ runner.os }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
+ ${{ runner.os }}-node-v${{ matrix.node }}-
- name: Install npm dependencies
run: npm ci
@@ -42,7 +48,7 @@ jobs:
- name: Run Coveralls
uses: coverallsapp/github-action@master
- if: matrix.node == 12
+ if: matrix.node == 14
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
path-to-lcov: "./js/coverage/lcov.info"
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index f3d00d69f..369aaced3 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -1,8 +1,14 @@
name: Lint
-on: [push, pull_request]
+
+on:
+ push:
+ branches-ignore:
+ - "dependabot/**"
+ pull_request:
+
env:
- CI: true
- NODE: 12.x
+ FORCE_COLOR: 2
+ NODE: 14
jobs:
lint:
@@ -12,8 +18,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v2
- - name: Set Node.js version
- uses: actions/setup-node@v1
+ - name: Set up Node.js
+ uses: actions/setup-node@v2
with:
node-version: "${{ env.NODE }}"
@@ -23,8 +29,8 @@ jobs:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
restore-keys: |
- ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
- ${{ runner.OS }}-node-v${{ env.NODE }}-
+ ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
+ ${{ runner.os }}-node-v${{ env.NODE }}-
- name: Install npm dependencies
run: npm ci
diff --git a/.github/workflows/node-sass.yml b/.github/workflows/node-sass.yml
new file mode 100644
index 000000000..ee64b2152
--- /dev/null
+++ b/.github/workflows/node-sass.yml
@@ -0,0 +1,30 @@
+name: CSS (node-sass)
+
+on:
+ push:
+ branches-ignore:
+ - "dependabot/**"
+ pull_request:
+
+env:
+ FORCE_COLOR: 2
+ NODE: 14
+
+jobs:
+ css:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v2
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: "${{ env.NODE }}"
+
+ - name: Build CSS with node-sass
+ run: |
+ npx --package node-sass@latest node-sass --version
+ npx --package node-sass@latest node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist-sass/css/
+ ls -Al dist-sass/css
diff --git a/.gitignore b/.gitignore
index 6208c57d7..0a0f88d15 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,19 +1,8 @@
# Ignore docs files
/_gh_pages/
-# This is the old Jekyll docs dist folder;
-# keeping it here so that when we switch branches it doesn't show up
-/site/docs/**/dist/
-# Jekyll's cache folder; keeping it for the same reason as above
-/site/.jekyll-cache/
# Hugo resources folder
/resources/
-# Ignore ruby/bundler files;
-# keeping them here so that when we switch branches they don't show up
-/.bundle/
-/vendor/
-/.ruby-version
-
# Numerous always-ignore extensions
*.diff
*.err
diff --git a/.stylelintrc b/.stylelintrc
index 15e5765ea..c068d30b5 100644
--- a/.stylelintrc
+++ b/.stylelintrc
@@ -3,8 +3,14 @@
"stylelint-config-twbs-bootstrap/scss"
],
"rules": {
+ "declaration-property-value-disallowed-list": {
+ "border": "none",
+ "outline": "none"
+ },
"function-disallowed-list": [
- "calc"
+ "calc",
+ "lighten",
+ "darken"
],
"property-disallowed-list": [
"border-radius",
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 963db62fe..5c6a4e727 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -40,7 +40,4 @@ Project maintainers who do not follow or enforce the Code of Conduct in good fai
## Attribution
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://www.contributor-covenant.org/version/1/4/code-of-conduct.html][version]
-
-[homepage]: https://www.contributor-covenant.org/
-[version]: https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 1.4, available at
Sleek, intuitive, and powerful front-end framework for faster and easier web development.
- Explore Bootstrap docs »
+ Explore Bootstrap docs »
Report bug
@@ -46,14 +46,14 @@ Our default branch is for development of our upcoming Bootstrap 5 release. Head
Several quick start options are available:
-- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.0.0-alpha2.zip)
+- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.0.0-beta1.zip)
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@next`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@next`
-- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.0.0-alpha2`
+- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.0.0-beta1`
- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass`
-Read the [Getting started page](https://v5.getbootstrap.com/docs/5.0/getting-started/introduction/) for information on the framework contents, templates and examples, and more.
+Read the [Getting started page](https://getbootstrap.com/docs/5.0/getting-started/introduction/) for information on the framework contents, templates and examples, and more.
## Status
@@ -83,37 +83,52 @@ Within the download you'll find the following directories and files, logically g
```text
bootstrap/
-└── dist/
- ├── css/
- │ ├── bootstrap-grid.css
- │ ├── bootstrap-grid.css.map
- │ ├── bootstrap-grid.min.css
- │ ├── bootstrap-grid.min.css.map
- │ ├── bootstrap-reboot.css
- │ ├── bootstrap-reboot.css.map
- │ ├── bootstrap-reboot.min.css
- │ ├── bootstrap-reboot.min.css.map
- │ ├── bootstrap-utilities.css
- │ ├── bootstrap-utilities.css.map
- │ ├── bootstrap-utilities.min.css
- │ ├── bootstrap-utilities.min.css.map
- │ ├── bootstrap.css
- │ ├── bootstrap.css.map
- │ ├── bootstrap.min.css
- │ └── bootstrap.min.css.map
- └── js/
- ├── bootstrap.bundle.js
- ├── bootstrap.bundle.js.map
- ├── bootstrap.bundle.min.js
- ├── bootstrap.bundle.min.js.map
- ├── bootstrap.esm.js
- ├── bootstrap.esm.js.map
- ├── bootstrap.esm.min.js
- ├── bootstrap.esm.min.js.map
- ├── bootstrap.js
- ├── bootstrap.js.map
- ├── bootstrap.min.js
- └── bootstrap.min.js.map
+├── css/
+│ ├── bootstrap-grid.css
+│ ├── bootstrap-grid.css.map
+│ ├── bootstrap-grid.min.css
+│ ├── bootstrap-grid.min.css.map
+│ ├── bootstrap-grid.rtl.css
+│ ├── bootstrap-grid.rtl.css.map
+│ ├── bootstrap-grid.rtl.min.css
+│ ├── bootstrap-grid.rtl.min.css.map
+│ ├── bootstrap-reboot.css
+│ ├── bootstrap-reboot.css.map
+│ ├── bootstrap-reboot.min.css
+│ ├── bootstrap-reboot.min.css.map
+│ ├── bootstrap-reboot.rtl.css
+│ ├── bootstrap-reboot.rtl.css.map
+│ ├── bootstrap-reboot.rtl.min.css
+│ ├── bootstrap-reboot.rtl.min.css.map
+│ ├── bootstrap-utilities.css
+│ ├── bootstrap-utilities.css.map
+│ ├── bootstrap-utilities.min.css
+│ ├── bootstrap-utilities.min.css.map
+│ ├── bootstrap-utilities.rtl.css
+│ ├── bootstrap-utilities.rtl.css.map
+│ ├── bootstrap-utilities.rtl.min.css
+│ ├── bootstrap-utilities.rtl.min.css.map
+│ ├── bootstrap.css
+│ ├── bootstrap.css.map
+│ ├── bootstrap.min.css
+│ ├── bootstrap.min.css.map
+│ ├── bootstrap.rtl.css
+│ ├── bootstrap.rtl.css.map
+│ ├── bootstrap.rtl.min.css
+│ └── bootstrap.rtl.min.css.map
+└── js/
+ ├── bootstrap.bundle.js
+ ├── bootstrap.bundle.js.map
+ ├── bootstrap.bundle.min.js
+ ├── bootstrap.bundle.min.js.map
+ ├── bootstrap.esm.js
+ ├── bootstrap.esm.js.map
+ ├── bootstrap.esm.min.js
+ ├── bootstrap.esm.min.js.map
+ ├── bootstrap.js
+ ├── bootstrap.js.map
+ ├── bootstrap.min.js
+ └── bootstrap.min.js.map
```
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/).
@@ -126,9 +141,9 @@ Have a bug or a feature request? Please first read the [issue guidelines](https:
## Documentation
-Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at
`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n// 4. Disable auto-hiding scrollbar in legacy Edge to avoid overlap,\n// making it impossible to interact with the content\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n -ms-overflow-style: scrollbar; // 4\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `