diff --git a/.babelrc.js b/.babelrc.js
index 51399697f..b1b8d1573 100644
--- a/.babelrc.js
+++ b/.babelrc.js
@@ -4,9 +4,12 @@ module.exports = {
'@babel/preset-env',
{
loose: true,
- bugfixes: true,
- modules: false
+ modules: false,
+ exclude: ['transform-typeof-symbol']
}
]
+ ],
+ plugins: [
+ '@babel/plugin-proposal-object-rest-spread'
]
};
diff --git a/.browserslistrc b/.browserslistrc
index b8e384bc9..ab6f9ffa2 100644
--- a/.browserslistrc
+++ b/.browserslistrc
@@ -1,15 +1,13 @@
# https://github.com/browserslist/browserslist#readme
->= 0.5%
-last 2 major versions
+>= 1%
+last 1 major version
not dead
Chrome >= 60
Firefox >= 60
-# 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
+Edge >= 16.16299
iOS >= 10
Safari >= 10
Android >= 6
not Explorer <= 11
+not ExplorerMobile <= 11
diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json
index da47da480..075d82ef4 100644
--- a/.bundlewatch.config.json
+++ b/.bundlewatch.config.json
@@ -2,15 +2,15 @@
"files": [
{
"path": "./dist/css/bootstrap-grid.css",
- "maxSize": "7 kB"
+ "maxSize": "7.1 kB"
},
{
"path": "./dist/css/bootstrap-grid.min.css",
- "maxSize": "6 kB"
+ "maxSize": "6.4 kB"
},
{
"path": "./dist/css/bootstrap-reboot.css",
- "maxSize": "2.25 kB"
+ "maxSize": "2 kB"
},
{
"path": "./dist/css/bootstrap-reboot.min.css",
@@ -18,48 +18,48 @@
},
{
"path": "./dist/css/bootstrap-utilities.css",
- "maxSize": "7.5 kB"
+ "maxSize": "8 kB"
},
{
"path": "./dist/css/bootstrap-utilities.min.css",
- "maxSize": "6.75 kB"
+ "maxSize": "7 kB"
},
{
"path": "./dist/css/bootstrap.css",
- "maxSize": "24 kB"
+ "maxSize": "25 kB"
},
{
"path": "./dist/css/bootstrap.min.css",
- "maxSize": "22 kB"
+ "maxSize": "23 kB"
},
{
"path": "./dist/js/bootstrap.bundle.js",
- "maxSize": "41 kB"
+ "maxSize": "51 kB"
},
{
"path": "./dist/js/bootstrap.bundle.min.js",
- "maxSize": "21.5 kB"
+ "maxSize": "23 kB"
},
{
"path": "./dist/js/bootstrap.esm.js",
- "maxSize": "27 kB"
- },
- {
- "path": "./dist/js/bootstrap.esm.min.js",
- "maxSize": "18 kB"
- },
- {
- "path": "./dist/js/bootstrap.js",
"maxSize": "28 kB"
},
+ {
+ "path": "./dist/js/bootstrap.esm.min.js",
+ "maxSize": "19 kB"
+ },
+ {
+ "path": "./dist/js/bootstrap.js",
+ "maxSize": "29 kB"
+ },
{
"path": "./dist/js/bootstrap.min.js",
- "maxSize": "15.5 kB"
+ "maxSize": "16.5 kB"
}
],
"ci": {
"trackBranches": [
- "main",
+ "master",
"v4-dev"
]
}
diff --git a/.dependabot/config.yml b/.dependabot/config.yml
new file mode 100644
index 000000000..9c902d005
--- /dev/null
+++ b/.dependabot/config.yml
@@ -0,0 +1,16 @@
+# https://dependabot.com/docs/config-file/
+version: 1
+update_configs:
+ - package_manager: "javascript"
+ directory: "/"
+ update_schedule: "weekly"
+ default_reviewers:
+ - "XhmikosR"
+ default_labels:
+ - "dependencies"
+ - "v5"
+ version_requirement_updates: "increase_versions"
+ ignored_updates:
+ - match:
+ dependency_name: "karma-browserstack-launcher"
+ version_requirement: "1.5.1"
diff --git a/.eslintignore b/.eslintignore
index ae6baae7e..6d874bc36 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -4,3 +4,4 @@
/_gh_pages/
/js/coverage/
/site/static/sw.js
+/package.js
diff --git a/.eslintrc.json b/.eslintrc.json
index d5a54d46b..8c52318b4 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -25,12 +25,7 @@
"error",
"always-multiline"
],
- "new-cap": [
- "error",
- {
- "properties": false
- }
- ],
+ "new-cap": "off",
"no-console": "error",
"object-curly-spacing": [
"error",
@@ -43,16 +38,16 @@
],
"unicorn/consistent-function-scoping": "off",
"unicorn/explicit-length-check": "off",
- "unicorn/no-array-callback-reference": "off",
+ "unicorn/import-index": "off",
"unicorn/no-for-loop": "off",
- "unicorn/no-null": "off",
"unicorn/no-unused-properties": "error",
- "unicorn/no-useless-undefined": "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-dataset": "off",
+ "unicorn/prefer-includes": "off",
+ "unicorn/prefer-node-append": "off",
+ "unicorn/prefer-node-remove": "off",
+ "unicorn/prefer-number-properties": "off",
"unicorn/prefer-query-selector": "off",
+ "unicorn/prefer-set-has": "off",
"unicorn/prevent-abbreviations": "off"
}
}
diff --git a/.gitattributes b/.gitattributes
index 40b1c3742..db3ab0961 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,8 +1,18 @@
# Enforce Unix newlines
-* text=auto eol=lf
+*.css text eol=lf
+*.html text eol=lf
+*.js text eol=lf
+*.json text eol=lf
+*.md text eol=lf
+*.scss text eol=lf
+*.sh text eol=lf
+*.svg text eol=lf
+*.txt text eol=lf
+*.xml text eol=lf
+*.yml text eol=lf
# Don't diff or textually merge source maps
-*.map binary
+*.map binary
bootstrap.css linguist-vendored=false
bootstrap.js linguist-vendored=false
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 32b30cdb3..82a84350b 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -19,7 +19,7 @@ and [submitting pull requests](#pull-requests), but please respect the following
restrictions:
* Please **do not** use the issue tracker for personal support requests. Stack
- Overflow ([`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag),
+ Overflow ([`bootstrap-4`](https://stackoverflow.com/questions/tagged/bootstrap-4) tag),
[Slack](https://bootstrap-slack.herokuapp.com/) or [IRC](README.md#community) are better places to get help.
* Please **do not** derail or troll issues. Keep the discussion on topic and
@@ -58,14 +58,14 @@ Good bug reports are extremely helpful, so thanks!
Guidelines for bug reports:
-0. **[Validate your HTML](https://html5.validator.nu/)** to ensure your
+0. **[validate your HTML](https://html5.validator.nu/)** to ensure your
problem isn't caused by a simple error in your own code.
1. **Use the GitHub issue search** — check if the issue has already been
reported.
2. **Check if the issue has been fixed** — try to reproduce it using the
- latest `main` (or `v4-dev` branch if the issue is about v4) in the repository.
+ latest `master` or development branch in the repository.
3. **Isolate the problem** — ideally create a [reduced test
case](https://css-tricks.com/reduced-test-cases/) and a live example.
@@ -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 | 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 |
+| 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/ | |
## Feature requests
@@ -123,25 +123,23 @@ 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. For trivial
-things, or things that don't require a lot of your time, you can go ahead and
-make a PR.
+project's developers might not want to merge into the project.
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`, 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.
+**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/master/scss)
+and/or [`/bootstrap/js/src/`](https://github.com/twbs/bootstrap/tree/master/js/src) instead.
Similarly, when contributing to Bootstrap's documentation, you should edit the
documentation source files in
-[the `/bootstrap/site/content/docs/` directory of the `main` branch](https://github.com/twbs/bootstrap/tree/main/site/content/docs).
+[the `/bootstrap/site/content/docs/` directory of the `master` branch](https://github.com/twbs/bootstrap/tree/master/site/content/docs).
**Do not edit the `gh-pages` branch.** That branch is generated from the
documentation source files and is managed separately by the Bootstrap Core Team.
@@ -163,8 +161,8 @@ included in the project:
2. If you cloned a while ago, get the latest changes from upstream:
```bash
- git checkout main
- git pull upstream main
+ git checkout master
+ git pull upstream master
```
3. Create a new topic branch (off the main project development branch) to
@@ -183,7 +181,7 @@ included in the project:
5. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash
- git pull [--rebase] upstream main
+ git pull [--rebase] upstream master
```
6. Push your topic branch up to your fork:
@@ -193,7 +191,7 @@ included in the project:
```
7. [Open a Pull Request](https://help.github.com/articles/about-pull-requests/)
- with a clear title and description against the `main` branch.
+ with a clear title and description against the `master` branch.
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to
license your work under the terms of the [MIT License](../LICENSE) (if it
@@ -217,7 +215,7 @@ includes code changes) and under the terms of the
[Adhere to the Code Guide.](https://codeguide.co/#css)
- When feasible, default color palettes should comply with [WCAG color contrast guidelines](https://www.w3.org/TR/WCAG20/#visual-audio-contrast).
-- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://www.a11yproject.com/posts/2013-01-25-never-remove-css-outlines/) for more details.
+- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://a11yproject.com/posts/never-remove-css-outlines/) for more details.
### JS
diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
new file mode 100644
index 000000000..1f2a890b1
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.md
@@ -0,0 +1,11 @@
+Before opening:
+
+- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
+- [Validate](https://html5.validator.nu/) and [lint](https://github.com/twbs/bootlint#in-the-browser) any HTML to avoid common problems
+- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/.github/CONTRIBUTING.md)
+
+Bug reports must include:
+
+- Operating system and version (Windows, macOS, Android, iOS)
+- Browser and version (Chrome, Firefox, Safari, Microsoft Edge, Opera, Android Browser)
+- [Reduced test case](https://css-tricks.com/reduced-test-cases/) and suggested fix using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/)
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 70dcfd532..083fa137e 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,20 +1,17 @@
---
name: Bug report
about: Tell us about a bug you may have identified in Bootstrap.
-title: ''
-labels: ''
-assignees: ''
---
Before opening:
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
-- [Validate](https://html5.validator.nu/) any HTML to avoid common problems
-- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
+- [Validate](https://html5.validator.nu/) and [lint](https://github.com/twbs/bootlint#in-the-browser) any HTML to avoid common problems
+- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/.github/CONTRIBUTING.md)
Bug reports must include:
- Operating system and version (Windows, macOS, Android, iOS)
- Browser and version (Chrome, Firefox, Safari, Microsoft Edge, Opera, Android Browser)
-- A [reduced test case](https://css-tricks.com/reduced-test-cases/) or suggested fix using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/)
+- [Reduced test case](https://css-tricks.com/reduced-test-cases/) and suggested fix using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/)
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 2913b45f0..000000000
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-contact_links:
- - name: Ask a question
- url: https://github.com/twbs/bootstrap/discussions/new
- about: Ask and discuss questions with other Bootstrap community members
diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md
new file mode 100644
index 000000000..4c13c86a5
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature.md
@@ -0,0 +1,9 @@
+Before opening:
+
+- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
+- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/.github/CONTRIBUTING.md)
+
+Feature requests must include:
+
+- As much detail as possible for what we should add and why it's important to Bootstrap
+- Relevant links to prior art, screenshots, or live demos whenever possible
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index 422fa2bb4..ed71d397d 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,16 +1,13 @@
---
name: Feature request
about: Suggest an idea for a new feature in Bootstrap.
-title: ''
-labels: feature
-assignees: ''
---
Before opening:
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
-- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
+- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/.github/CONTRIBUTING.md)
Feature requests must include:
diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md
index c30bed3b4..de3c4b552 100644
--- a/.github/SUPPORT.md
+++ b/.github/SUPPORT.md
@@ -8,4 +8,4 @@ For general troubleshooting or help getting started:
- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
-- Ask and explore Stack Overflow with the [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag.
+- Ask and explore Stack Overflow with the [`bootstrap-4`](https://stackoverflow.com/questions/tagged/bootstrap-4) tag.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 29135b400..000000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-version: 2
-updates:
- - package-ecosystem: npm
- directory: "/"
- schedule:
- interval: weekly
- day: tuesday
- time: "12:00"
- timezone: Europe/Athens
- open-pull-requests-limit: 10
- reviewers:
- - XhmikosR
- labels:
- - dependencies
- - 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
deleted file mode 100644
index e2b70e03e..000000000
--- a/.github/release-drafter.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-name-template: 'v$NEXT_MAJOR_VERSION'
-tag-template: 'v$NEXT_MAJOR_VERSION'
-prerelease: true
-exclude-labels:
- - 'skip-changelog'
-categories:
- - title: '❗ Breaking Changes'
- labels:
- - 'breaking-change'
- - title: '🚀 Features'
- labels:
- - 'new-feature'
- - 'feature'
- - 'enhancement'
- - title: '🐛 Bug fixes'
- labels:
- - 'fix'
- - 'bugfix'
- - 'bug'
- - title: '⚡ Performance Improvements'
- labels:
- - 'performance'
- - title: '🎨 CSS'
- labels:
- - 'css'
- - title: '☕️ JavaScript'
- labels:
- - 'js'
- - title: '📖 Docs'
- labels:
- - 'docs'
- - 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'
-change-template: '- #$NUMBER: $TITLE'
-template: |
- ## Changes
- $CHANGES
diff --git a/.github/workflows/browserstack.yml b/.github/workflows/browserstack.yml
deleted file mode 100644
index a12bffcf7..000000000
--- a/.github/workflows/browserstack.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-name: BrowserStack
-
-on:
- push:
-
-env:
- FORCE_COLOR: 2
- NODE: 14
-
-jobs:
- browserstack:
- runs-on: ubuntu-latest
- 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 up Node.js
- uses: actions/setup-node@v2
- with:
- node-version: "${{ env.NODE }}"
-
- - name: Set up npm cache
- uses: actions/cache@v2
- with:
- 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 }}-
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: Run dist
- run: npm run dist
-
- - name: Run BrowserStack tests
- run: npm run js-test-cloud
- env:
- BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}"
- BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}"
diff --git a/.github/workflows/bundlewatch.yml b/.github/workflows/bundlewatch.yml
deleted file mode 100644
index b2bd5eed5..000000000
--- a/.github/workflows/bundlewatch.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-name: Bundlewatch
-
-on:
- push:
- branches-ignore:
- - "dependabot/**"
- pull_request:
-
-env:
- FORCE_COLOR: 2
- NODE: 14
-
-jobs:
- bundlewatch:
- 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: Set up npm cache
- uses: actions/cache@v2
- with:
- 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 }}-
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: Run dist
- run: npm run dist
-
- - name: Run bundlewatch
- run: npm run bundlewatch
- env:
- BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}"
- CI_BRANCH_BASE: main
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
deleted file mode 100644
index 469a5a4fc..000000000
--- a/.github/workflows/codeql.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-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 2 * * 5"
-
-jobs:
- 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"
-
- - name: Autobuild
- uses: github/codeql-action/autobuild@v1
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/css.yml b/.github/workflows/css.yml
deleted file mode 100644
index a28059d79..000000000
--- a/.github/workflows/css.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: CSS
-
-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: Set up npm cache
- uses: actions/cache@v2
- with:
- 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 }}-
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: Build CSS
- run: npm run css
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
deleted file mode 100644
index 150e4d16c..000000000
--- a/.github/workflows/docs.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: Docs
-
-on:
- push:
- branches-ignore:
- - "dependabot/**"
- pull_request:
-
-env:
- FORCE_COLOR: 2
- NODE: 14
-
-jobs:
- docs:
- 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 }}"
-
- - run: java -version
-
- - name: Set up npm cache
- uses: actions/cache@v2
- with:
- 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 }}-
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: Test docs
- run: npm run docs
diff --git a/.github/workflows/js.yml b/.github/workflows/js.yml
deleted file mode 100644
index c56a2dfdd..000000000
--- a/.github/workflows/js.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-name: JS Tests
-
-on:
- push:
- branches-ignore:
- - "dependabot/**"
- pull_request:
-
-env:
- FORCE_COLOR: 2
-
-jobs:
- run:
- name: Node ${{ matrix.node }}
- runs-on: ubuntu-latest
-
- strategy:
- fail-fast: false
- matrix:
- node: [10, 12, 14]
-
- steps:
- - name: Clone repository
- uses: actions/checkout@v2
-
- - name: Set up Node.js
- uses: actions/setup-node@v2
- with:
- node-version: ${{ matrix.node }}
-
- - name: Set up npm cache
- uses: actions/cache@v2
- with:
- 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 }}-
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: Run dist
- run: npm run js
-
- - name: Run JS tests
- run: npm run js-test
-
- - name: Run Coveralls
- uses: coverallsapp/github-action@master
- 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
deleted file mode 100644
index 369aaced3..000000000
--- a/.github/workflows/lint.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: Lint
-
-on:
- push:
- branches-ignore:
- - "dependabot/**"
- pull_request:
-
-env:
- FORCE_COLOR: 2
- NODE: 14
-
-jobs:
- lint:
- 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: Set up npm cache
- uses: actions/cache@v2
- with:
- 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 }}-
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: Lint
- run: npm run lint
diff --git a/.github/workflows/node-sass.yml b/.github/workflows/node-sass.yml
deleted file mode 100644
index ee64b2152..000000000
--- a/.github/workflows/node-sass.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-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/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml
deleted file mode 100644
index 1c4f4be9b..000000000
--- a/.github/workflows/release-notes.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: Release notes
-
-on:
- push:
- branches:
- - main
-
-jobs:
- update_release_draft:
- runs-on: ubuntu-latest
- steps:
- - uses: release-drafter/release-drafter@v5
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 000000000..fb2474811
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,62 @@
+name: Tests
+on: [push, pull_request]
+env:
+ CI: true
+
+jobs:
+ run:
+ name: Node ${{ matrix.node }}
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ matrix:
+ node: [10, 12]
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v2
+
+ - name: Set Node.js version
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node }}
+
+ - run: node --version
+ - run: npm --version
+ - run: java -version
+
+ - name: Set up npm cache
+ uses: actions/cache@v1
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/test.yml') }}
+ restore-keys: |
+ ${{ runner.OS }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/test.yml') }}
+ ${{ runner.OS }}-node-v${{ matrix.node }}-
+
+ - name: Install npm dependencies
+ run: npm ci
+
+ - name: Run tests
+ run: npm test
+
+ - name: Run bundlewatch
+ run: npm run bundlewatch
+ if: matrix.node == 10
+ env:
+ BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}"
+
+ - name: Run BrowserStack tests
+ run: npm run js-test-cloud
+ if: matrix.node == 10 && github.repository == 'twbs/bootstrap' && github.event_name == 'push'
+ env:
+ BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}"
+ BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}"
+
+ - name: Run Coveralls
+ uses: coverallsapp/github-action@master
+ if: matrix.node == 10
+ with:
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
+ path-to-lcov: "./js/coverage/lcov.info"
diff --git a/.gitignore b/.gitignore
index 0a0f88d15..4ac6ac325 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,19 @@
# 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
@@ -28,9 +39,6 @@
*.sublime-workspace
nbproject
Thumbs.db
-/.vscode/
-# Local Netlify folder
-.netlify
# Komodo
.komodotools
diff --git a/.stylelintrc b/.stylelintrc
index c068d30b5..669e28a42 100644
--- a/.stylelintrc
+++ b/.stylelintrc
@@ -3,16 +3,7 @@
"stylelint-config-twbs-bootstrap/scss"
],
"rules": {
- "declaration-property-value-disallowed-list": {
- "border": "none",
- "outline": "none"
- },
- "function-disallowed-list": [
- "calc",
- "lighten",
- "darken"
- ],
- "property-disallowed-list": [
+ "property-blacklist": [
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
@@ -20,12 +11,12 @@
"border-bottom-left-radius",
"transition"
],
+ "function-blacklist": ["calc"],
"scss/dollar-variable-default": [
true,
{
"ignore": "local"
}
- ],
- "scss/selector-no-union-class-name": true
+ ]
}
}
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 5c6a4e727..9d9922f25 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo
Examples of behavior that contributes to creating a positive environment include:
-- Using welcoming and inclusive language
-- Being respectful of differing viewpoints and experiences
-- Gracefully accepting constructive criticism
-- Focusing on what is best for the community
-- Showing empathy towards other community members
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
-- The use of sexualized language or imagery and unwelcome sexual attention or advances
-- Trolling, insulting/derogatory comments, and personal or political attacks
-- Public or private harassment
-- Publishing others' private information, such as a physical or electronic address, without explicit permission
-- Other conduct which could reasonably be considered inappropriate in a professional setting
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
@@ -40,4 +40,7 @@ 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](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
+ Report bug
·
- Request feature
+ Request feature
·
Themes
·
@@ -22,11 +22,6 @@