Compare commits

...

25 Commits

Author SHA1 Message Date
Julien Déramond 5aaa09d7c4 Merge branch 'main' into main-jd-stackblitz-for-examples 2022-12-19 19:03:27 +01:00
Louis-Maxime Piton 33dd82448c Docs: remove Webpack reference in Parcel guide (#37670) 2022-12-19 18:34:18 +01:00
XhmikosR e1315d11f2 docs: move color-mode script (#37658)
* docs: move color-mode script

* Move color-modes.js in static folder

* Async load color-modes.js

* Switch to DOMContentLoaded

* Revert async loading
2022-12-18 14:32:17 -07:00
Louis-Maxime Piton 6807008159 Docs: replace some --#{$prefix} by --bs in Sass files (#37617)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2022-12-18 08:19:33 +01:00
Vipin Mishra 9d64a983ee Fix grid and alignment of Features example (#37502)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2022-12-18 08:12:19 +01:00
Joyce 3e8c8868eb Enable OpenSSF Scorecard Github Action and Badge (#37402)
Signed-off-by: Joyce Brum <joycebrum@google.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-12-16 09:34:54 +02:00
XhmikosR 71e2acef44 Revert "CI: limit the on push triggers (#35574)" (#37657)
This reverts commit f0ae5cceac.
2022-12-16 09:32:50 +02:00
XhmikosR f0ae5cceac CI: limit the on push triggers (#35574)
Since now we have workflow_dispatch, we can trigger a workflow manually in case we don't have an open PR.

Also, remove the custom `ci skip` code; it's supported natively for some time now: https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/
2022-12-16 09:22:18 +02:00
Varun Sharma 471edac3d3 CI: Add GitHub token permissions for workflows (#36325)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-12-16 09:20:12 +02:00
XhmikosR af34b2b56a package.json: include index.{esm,umd}.js files too (#37565) 2022-12-16 09:12:46 +02:00
XhmikosR 4f2a0bbbe4 Regenerate package-lock.json and pin terser for now (#37640) 2022-12-15 23:38:02 +02:00
XhmikosR cffe07401d README.md: update CI badge (#37656) 2022-12-15 23:37:10 +02:00
dependabot[bot] b69661c1b2 Build(deps-dev): Bump postcss from 8.4.19 to 8.4.20 (#37634)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.19 to 8.4.20.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.19...8.4.20)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 18:11:10 +02:00
dependabot[bot] 6117bf6bf3 Build(deps-dev): Bump rollup from 3.5.0 to 3.7.4 (#37633)
Bumps [rollup](https://github.com/rollup/rollup) from 3.5.0 to 3.7.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v3.5.0...v3.7.4)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 18:07:15 +02:00
dependabot[bot] f7ec6bca72 Build(deps-dev): Bump jquery from 3.6.1 to 3.6.2 (#37638)
Bumps [jquery](https://github.com/jquery/jquery) from 3.6.1 to 3.6.2.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.6.1...3.6.2)

---
updated-dependencies:
- dependency-name: jquery
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-12-13 18:02:19 +02:00
dependabot[bot] b1f86f45ad Build(deps-dev): Bump eslint-plugin-unicorn from 44.0.2 to 45.0.2 (#37639)
* Build(deps-dev): Bump eslint-plugin-unicorn from 44.0.2 to 45.0.2

Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 44.0.2 to 45.0.2.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v44.0.2...v45.0.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-unicorn
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Ignore unicorn/no-typeof-undefined for now

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-12-13 18:01:31 +02:00
dependabot[bot] f2b8be5417 Build(deps-dev): Bump @rollup/plugin-commonjs from 23.0.3 to 23.0.4 (#37635)
Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins/tree/HEAD/packages/commonjs) from 23.0.3 to 23.0.4.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/commonjs/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/commonjs-v23.0.4/packages/commonjs)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-commonjs"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 17:47:53 +02:00
dependabot[bot] d77774da4d Build(deps-dev): Bump hugo-bin from 0.95.0 to 0.96.0 (#37636)
Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.95.0 to 0.96.0.
- [Release notes](https://github.com/fenneclab/hugo-bin/releases)
- [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.95.0...v0.96.0)

---
updated-dependencies:
- dependency-name: hugo-bin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-12-13 17:45:33 +02:00
dependabot[bot] 48fb1a4b1b Build(deps-dev): Bump sass from 1.56.1 to 1.56.2 (#37637)
Bumps [sass](https://github.com/sass/dart-sass) from 1.56.1 to 1.56.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.56.1...1.56.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 17:42:46 +02:00
dependabot[bot] bc8d2e28b8 Build(deps-dev): Bump stylelint from 14.15.0 to 14.16.0 (#37597)
Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.15.0 to 14.16.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/14.15.0...14.16.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 17:40:46 +02:00
dependabot[bot] 2f8e8c9b28 Build(deps-dev): Bump postcss-cli from 10.0.0 to 10.1.0 (#37596)
Bumps [postcss-cli](https://github.com/postcss/postcss-cli) from 10.0.0 to 10.1.0.
- [Release notes](https://github.com/postcss/postcss-cli/releases)
- [Changelog](https://github.com/postcss/postcss-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-cli/compare/10.0.0...10.1.0)

---
updated-dependencies:
- dependency-name: postcss-cli
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 17:38:49 +02:00
dependabot[bot] 67f4568889 Build(deps-dev): Bump eslint from 8.28.0 to 8.29.0 (#37595)
Bumps [eslint](https://github.com/eslint/eslint) from 8.28.0 to 8.29.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.28.0...v8.29.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 17:37:36 +02:00
Julien Déramond 10317a73be Fix a11y of 'Try it' buttons 2022-11-17 07:25:36 +01:00
Julien Déramond 318bbcbd21 Merge branch 'main' into main-jd-stackblitz-for-examples 2022-11-17 07:22:57 +01:00
Julien Déramond 5267ef5e08 Add StackBlitz edit button for examples 2022-10-13 00:47:22 +03:00
25 changed files with 735 additions and 408 deletions
+1
View File
@@ -55,6 +55,7 @@
"unicorn/no-array-callback-reference": "off",
"unicorn/no-array-method-this-argument": "off",
"unicorn/no-null": "off",
"unicorn/no-typeof-undefined": "off",
"unicorn/no-unused-properties": "error",
"unicorn/prefer-array-flat": "off",
"unicorn/prefer-dom-node-dataset": "off",
+3
View File
@@ -8,6 +8,9 @@ env:
FORCE_COLOR: 2
NODE: 18
permissions:
contents: read
jobs:
browserstack:
runs-on: ubuntu-latest
+3
View File
@@ -11,6 +11,9 @@ env:
FORCE_COLOR: 2
NODE: 18
permissions:
contents: read
jobs:
bundlewatch:
runs-on: ubuntu-latest
+7
View File
@@ -10,8 +10,15 @@ on:
env:
FORCE_COLOR: 2
permissions:
contents: read
jobs:
cspell:
permissions:
# allow streetsidesoftware/cspell-action to fetch files for commits and PRs
contents: read
pull-requests: read
runs-on: ubuntu-latest
steps:
+3
View File
@@ -11,6 +11,9 @@ env:
FORCE_COLOR: 2
NODE: 18
permissions:
contents: read
jobs:
css:
runs-on: ubuntu-latest
+3
View File
@@ -11,6 +11,9 @@ env:
FORCE_COLOR: 2
NODE: 18
permissions:
contents: read
jobs:
docs:
runs-on: ubuntu-latest
@@ -4,8 +4,15 @@ on:
schedule:
- cron: "0 0 * * *"
permissions:
contents: read
jobs:
issue-close-require:
permissions:
# allow actions-cool/issues-helper to update issues and PRs
issues: write
pull-requests: write
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
steps:
+7
View File
@@ -4,8 +4,15 @@ on:
issues:
types: [labeled]
permissions:
contents: read
jobs:
issue-labeled:
permissions:
# allow actions-cool/issues-helper to update issues and PRs
issues: write
pull-requests: write
if: github.repository == 'twbs/bootstrap'
runs-on: ubuntu-latest
steps:
+7
View File
@@ -11,8 +11,15 @@ env:
FORCE_COLOR: 2
NODE: 18
permissions:
contents: read
jobs:
run:
permissions:
# allow coverallsapp/github-action to create new checks issues and fetch code
checks: write
contents: read
name: JS Tests
runs-on: ubuntu-latest
+3
View File
@@ -11,6 +11,9 @@ env:
FORCE_COLOR: 2
NODE: 18
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
+3
View File
@@ -11,6 +11,9 @@ env:
FORCE_COLOR: 2
NODE: 18
permissions:
contents: read
jobs:
css:
runs-on: ubuntu-latest
+7
View File
@@ -6,8 +6,15 @@ on:
- main
workflow_dispatch:
permissions:
contents: read
jobs:
update_release_draft:
permissions:
# allow release-drafter/release-drafter to create GitHub releases and add labels to PRs
contents: write
pull-requests: write
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
steps:
+65
View File
@@ -0,0 +1,65 @@
name: Scorecards supply-chain security
on:
# Only the default branch is supported.
branch_protection_rule:
push:
branches:
- main
schedule:
- cron: "16 10 * * 6"
workflow_dispatch:
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecards analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Used to receive a badge.
id-token: write
# Needs for private repositories.
contents: read
actions: read
steps:
- name: Clone repository
uses: actions/checkout@v3
with:
persist-credentials: false
- name: Run analysis
uses: ossf/scorecard-action@v2.1.0
with:
results_file: results.sarif
results_format: sarif
# (Optional) Read-only PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecards on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
# repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
# Publish the results for public repositories to enable scorecard badges. For more details, see
# https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories, `publish_results` will automatically be set to `false`, regardless
# of the value entered here.
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard.
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: results.sarif
+2 -1
View File
@@ -58,7 +58,7 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.2/getting-starte
## Status
[![Build Status](https://img.shields.io/github/workflow/status/twbs/bootstrap/JS%20Tests/main?label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain)
[![Build Status](https://img.shields.io/github/actions/workflow/status/twbs/bootstrap/js.yml?branch=main&label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain)
[![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap)
[![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap)
[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap)
@@ -72,6 +72,7 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.2/getting-starte
[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)
[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap)](#backers)
[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap)](#sponsors)
![OpenSSF Scorecard](https://img.shields.io/ossf-scorecard/github.com/twbs/bootstrap)
## What's included
+451 -348
View File
File diff suppressed because it is too large Load Diff
+13 -12
View File
@@ -84,7 +84,7 @@
"docs-serve": "hugo server --port 9001 --disableFastRender",
"docs-serve-only": "npx sirv-cli _site --port 9001",
"lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json",
"update-deps": "ncu -u -x globby,karma-browserstack-launcher,karma-rollup-preprocessor && echo Manually update site/assets/js/vendor",
"update-deps": "ncu -u -x globby,karma-browserstack-launcher,karma-rollup-preprocessor,terser && echo Manually update site/assets/js/vendor",
"release": "npm-run-all dist release-sri docs-build release-zip*",
"release-sri": "node build/generate-sri.js",
"release-version": "node build/change-version.js",
@@ -109,25 +109,25 @@
"@babel/preset-env": "^7.20.2",
"@popperjs/core": "^2.11.6",
"@rollup/plugin-babel": "^6.0.3",
"@rollup/plugin-commonjs": "^23.0.3",
"@rollup/plugin-commonjs": "^23.0.4",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-replace": "^5.0.1",
"autoprefixer": "^10.4.13",
"bundlewatch": "^0.3.3",
"clean-css-cli": "^5.6.1",
"cross-env": "^7.0.3",
"eslint": "^8.28.0",
"eslint": "^8.29.0",
"eslint-config-xo": "^0.43.1",
"eslint-plugin-html": "^7.1.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-markdown": "^3.0.0",
"eslint-plugin-unicorn": "^44.0.2",
"eslint-plugin-unicorn": "^45.0.2",
"find-unused-sass-variables": "^4.0.5",
"globby": "^11.1.0",
"hammer-simulator": "0.0.1",
"hugo-bin": "^0.95.0",
"hugo-bin": "^0.96.0",
"ip": "^2.0.0",
"jquery": "^3.6.1",
"jquery": "^3.6.2",
"karma": "^6.4.1",
"karma-browserstack-launcher": "1.4.0",
"karma-chrome-launcher": "^3.1.1",
@@ -140,21 +140,22 @@
"lockfile-lint": "^4.9.6",
"nodemon": "^2.0.20",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.19",
"postcss-cli": "^10.0.0",
"rollup": "^3.5.0",
"postcss": "^8.4.20",
"postcss-cli": "^10.1.0",
"rollup": "^3.7.4",
"rollup-plugin-istanbul": "^4.0.0",
"rtlcss": "^4.0.0",
"sass": "^1.56.1",
"sass": "^1.56.2",
"shelljs": "^0.8.5",
"stylelint": "^14.15.0",
"stylelint": "^14.16.0",
"stylelint-config-twbs-bootstrap": "^7.0.0",
"terser": "^5.16.0",
"terser": "5.16.0",
"vnu-jar": "22.9.29"
},
"files": [
"dist/{css,js}/*.{css,js,map}",
"js/{src,dist}/**/*.{js,map}",
"js/index.{esm,umd}.js",
"scss/**/*.scss"
],
"hugo-bin": {
+2 -2
View File
@@ -15,13 +15,13 @@
// Individual items
.bd-brand-item {
+ .bd-brand-item {
border-top: 1px solid var(--#{$prefix}border-color);
border-top: 1px solid var(--bs-border-color);
}
@include media-breakpoint-up(md) {
+ .bd-brand-item {
border-top: 0;
border-left: 1px solid var(--#{$prefix}border-color);
border-left: 1px solid var(--bs-border-color);
}
}
}
+1 -1
View File
@@ -180,7 +180,7 @@
width: 10rem;
color: var(--bs-secondary-color);
background-color: var(--bs-tertiary-bg);
border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color);
border: var(--bs-border-width) solid var(--bs-border-color);
> div {
display: flex;
@@ -248,7 +248,7 @@ Here's a look at the JavaScript that powers it. Feel free to inspect our own doc
{{< example lang="js" show_preview="false" >}}
{{< js.inline >}}
{{- readFile (path.Join "site/assets/js/color-modes/index.js") -}}
{{- readFile (path.Join "site/static/docs" .Site.Params.docs_version "assets/js/color-modes.js") -}}
{{< /js.inline >}}
{{< /example >}}
+3
View File
@@ -35,6 +35,9 @@ aliases: "/examples/"
loading="lazy">
<h3 class="h5 mb-1">{{ $example.name }}</h3>
</a>
<button type="button" class="btn-edit text-nowrap float-end" title="Try it on StackBlitz" style="margin-top: -30px" data-sb-js-snippet="{{ $example.name | urlize }}">
<svg class="bi" aria-hidden="true"><use xlink:href="#lightning-charge-fill"/></svg>
</button>
<p class="text-muted">{{ $example.description }}</p>
</div>
{{ if (eq (add $i 1) $len) }}</div>{{ end }}
@@ -292,54 +292,53 @@ body_class: ""
<h2 class="pb-2 border-bottom">Features with title</h2>
<div class="row row-cols-1 row-cols-md-2 align-items-md-center g-5 py-5">
<div class="d-flex flex-column align-items-start gap-2">
<div class="col d-flex flex-column align-items-start gap-2">
<h3 class="fw-bold">Left-aligned title explaining these awesome features</h3>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.</p>
<a href="#" class="btn btn-primary btn-lg">Primary button</a>
</div>
<div class="row row-cols-1 row-cols-sm-2 g-4">
<div class="d-flex flex-column gap-2">
<div
class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#collection" />
</svg>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
<div class="d-flex flex-column gap-2">
<div
class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#gear-fill" />
</svg>
<div class="col">
<div class="row row-cols-1 row-cols-sm-2 g-4">
<div class="col d-flex flex-column gap-2">
<div class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#collection" />
</svg>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
<div class="d-flex flex-column gap-2">
<div
class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#speedometer" />
</svg>
<div class="col d-flex flex-column gap-2">
<div class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#gear-fill" />
</svg>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
<div class="d-flex flex-column gap-2">
<div
class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#table" />
</svg>
<div class="col d-flex flex-column gap-2">
<div class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#speedometer" />
</svg>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
<div class="col d-flex flex-column gap-2">
<div class="feature-icon-small d-inline-flex align-items-center justify-content-center text-bg-primary bg-gradient fs-4 rounded-3">
<svg class="bi" width="1em" height="1em">
<use xlink:href="#table" />
</svg>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
<h4 class="fw-semibold mb-0">Featured title</h4>
<p class="text-muted">Paragraph of text beneath the heading to explain the heading.</p>
</div>
</div>
</div>
@@ -88,7 +88,7 @@ With dependencies installed and our project folder ready for us to start coding,
</html>
```
We're including a little bit of Bootstrap styling here with the `div class="container"` and `<button>` so that we see when Bootstrap's CSS is loaded by Webpack.
We're including a little bit of Bootstrap styling here with the `div class="container"` and `<button>` so that we see when Bootstrap's CSS is loaded by Parcel.
Parcel will automatically detect we're using Sass and install the [Sass Parcel plugin](https://parceljs.org/languages/sass/) to support it. However, if you wish, you can also manually run `npm i --save-dev @parcel/transformer-sass`.
+3 -3
View File
@@ -1,6 +1,3 @@
{{- $colorModeJS := resources.Get "js/color-modes/index.js" }}
<script src="{{ $colorModeJS.Permalink | relURL }}"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ .Page.Params.description | default .Site.Params.description | markdownify }}">
@@ -22,6 +19,9 @@
<meta name="robots" content="{{ . }}">
{{- end }}
{{- $colorModeJS := printf "/docs/%s/assets/js/color-modes.js" $.Site.Params.docs_version -}}
<script src="{{ $colorModeJS | relURL }}"></script>
{{ partial "stylesheet" . }}
{{ partial "favicons" . }}
{{ partial "social" . }}
+101
View File
@@ -9,6 +9,10 @@
<script src="https://cdn.jsdelivr.net/npm/@stackblitz/sdk@1/bundles/sdk.umd.js"></script>
{{- end }}
{{ if eq .Page.Layout "single" -}}
<script src="https://cdn.jsdelivr.net/npm/@stackblitz/sdk@1/bundles/sdk.umd.js"></script>
{{- end }}
{{- $vendor := resources.Match "js/vendor/*.js" -}}
{{- $js := resources.Match "js/*.js" -}}
{{- $targetDocsJSPath := path.Join "/docs" .Site.Params.docs_version "assets/js/docs.js" -}}
@@ -70,3 +74,100 @@ ${htmlSnippet.replace(/^/gm, ' ')}
}
</script>
{{- end }}
{{ if eq .Page.Layout "single" -}}
<script>
// Open in StackBlitz logic
document.querySelectorAll('.btn-edit').forEach(btn => {
btn.addEventListener('click', event => {
const exampleRef = event.target.closest('.btn-edit').getAttribute('data-sb-js-snippet')
StackBlitzSDK.openBootstrapSnippet(exampleRef)
})
StackBlitzSDK.openBootstrapSnippet = async (exampleRef) => {
const isRTL = '-rtl' === exampleRef.substring(exampleRef.length - 4)
const exampleMarkup = "../examples/" + exampleRef + "/index.html"
let markup
let jsSnippet = 'import \'./style.css\';'
await fetch(exampleMarkup)
.then(response => response.text())
.then(text => markup = text)
let d = document.createElement('html')
d.innerHTML = markup
const exampleCSS = d.querySelector('style').innerHTML
// Get CSS file
const css = "../examples/"
+ (isRTL ? (exampleRef.substring(0, exampleRef.length - 4)) : exampleRef)
+ "/"
+ (isRTL ? (exampleRef.substring(0, exampleRef.length - 4) + '.rtl') : exampleRef)
+ ".css"
let cssContent = ''
const response = await fetch(css)
if (response.ok) {
cssContent = await response.text()
}
// Get JS file
// First try in the basic directory
const js = "../examples/" + (isRTL ? (exampleRef.substring(0, exampleRef.length - 4)) : exampleRef) + "/" + (isRTL ? (exampleRef.substring(0, exampleRef.length - 4)) : exampleRef) + ".js"
let jsContent = ''
const responseJS = await fetch(js)
if (responseJS.ok) {
jsContent = await responseJS.text()
}
// Second try for RTL in the basic-rtl directory
if (isRTL && !responseJS.ok) {
const jsRTL = "../examples/" + exampleRef + "/" + exampleRef.substring(0, exampleRef.length - 4) + ".js"
const responseJSRTL = await fetch(jsRTL)
if (responseJSRTL.ok) {
jsContent = await responseJSRTL.text()
}
}
// Get HTML content
let htmlContent = d.querySelector('body').outerHTML.replaceAll('"/docs/5.', '"https://getbootstrap.com/docs/5.')
// Special use case to handle images from Heroes example
htmlContent = htmlContent.replaceAll('src="bootstrap-', 'src="https://getbootstrap.com/docs/5.2/examples/' + exampleRef + '/bootstrap-')
// Special use case to handle images from Features example
htmlContent = htmlContent.replaceAll('background-image: url(\'', 'background-image: url(\'https://getbootstrap.com/docs/5.2/examples/' + exampleRef + '/')
const t = `<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ .Site.Params.cdn.css }}" rel="stylesheet">
<title>Bootstrap Example</title>
<${'script'} src="{{ .Site.Params.cdn.js_bundle }}"></${'script'}>
</head>
${htmlContent}
</html>`
const project = {
files: {
'index.html': t,
'index.js': jsSnippet + '\r\n\r\n' + jsContent,
'style.css': exampleCSS + cssContent,
},
title: 'Bootstrap Example',
description: `Official example from ${window.location.href}`,
template: 'javascript',
tags: ['bootstrap']
}
StackBlitzSDK.openProject(project, { openFile: 'index.html' })
}
})
</script>
{{- end }}
@@ -46,7 +46,7 @@
}
})
window.addEventListener('load', () => {
window.addEventListener('DOMContentLoaded', () => {
showActiveTheme(getPreferredTheme())
document.querySelectorAll('[data-bs-theme-value]')